diff --git a/Cargo.lock b/Cargo.lock index df39134f5..01c095b78 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1657,6 +1657,7 @@ name = "stellar-asset-spec" version = "27.0.5" dependencies = [ "soroban-sdk", + "soroban-spec", "soroban-token-sdk", "soroban-token-spec", ] @@ -1685,7 +1686,7 @@ dependencies = [ [[package]] name = "stellar-xdr" version = "28.0.0" -source = "git+https://github.com/stellar/rs-stellar-xdr?rev=595950c5dfd2dab0333922ebb26fab27dac3188a#595950c5dfd2dab0333922ebb26fab27dac3188a" +source = "git+https://github.com/stellar/rs-stellar-xdr?rev=4144fbd8d1c6281f122f382989a5a788431e5e19#4144fbd8d1c6281f122f382989a5a788431e5e19" dependencies = [ "arbitrary", "base64", diff --git a/Cargo.toml b/Cargo.toml index 45815b515..67fbf8591 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -54,10 +54,12 @@ version = "=28.0.0" default-features = false [patch.crates-io] -# Pending https://github.com/stellar/rs-stellar-xdr/pull/562, which adds the -# borrowing `*View` types and their const XDR serializers that the contract spec +# Pending https://github.com/stellar/rs-stellar-xdr/pull/566, which widens the +# user-defined type name limit so a fully qualified name fits, and which carries +# https://github.com/stellar/rs-stellar-xdr/pull/562 adding the borrowing +# `*View` types and their const XDR serializers that the contract spec # generation in soroban-sdk-macros builds on. -stellar-xdr = { git = "https://github.com/stellar/rs-stellar-xdr", rev = "595950c5dfd2dab0333922ebb26fab27dac3188a" } +stellar-xdr = { git = "https://github.com/stellar/rs-stellar-xdr", rev = "4144fbd8d1c6281f122f382989a5a788431e5e19" } #soroban-env-common = { path = "../rs-soroban-env/soroban-env-common" } #soroban-env-guest = { path = "../rs-soroban-env/soroban-env-guest" } #soroban-env-host = { path = "../rs-soroban-env/soroban-env-host" } diff --git a/soroban-sdk-macros/src/derive_enum.rs b/soroban-sdk-macros/src/derive_enum.rs index eb244695c..233cba66e 100644 --- a/soroban-sdk-macros/src/derive_enum.rs +++ b/soroban-sdk-macros/src/derive_enum.rs @@ -13,7 +13,7 @@ use stellar_xdr::{ use crate::{ doc::docs_from_attrs, - map_type::{const_view_string, const_view_type_def, map_type}, + map_type::{const_view_string, const_view_type_def, map_type, spec_type_name_gen}, shaking, }; @@ -156,33 +156,47 @@ pub fn derive_type_enum( cases: spec_cases.try_into().unwrap(), }; + // The fully qualified name the spec knows this type by, emitted for every + // type so that a reference to it from anywhere can reach it. + let spec_type_name = spec_type_name_gen(enum_ident); + // Generated code spec. The spec entry is rendered as the equivalent const // ScSpecEntryView, which the contract crate encodes to XDR at compile time. let spec_gen = { let doc = const_view_string(path, &spec.doc); let lib = const_view_string(path, &spec.lib); - let name = const_view_string(path, &spec.name); - let cases = spec.cases.iter().map(|c| match c { - ScSpecUdtUnionCaseV0::VoidV0(c) => { - let doc = const_view_string(path, &c.doc); - let name = const_view_string(path, &c.name); - quote!(#path::xdr::ScSpecUdtUnionCaseV0View::VoidV0( - #path::xdr::ScSpecUdtUnionCaseVoidV0View { doc: #doc, name: #name } - )) - } - ScSpecUdtUnionCaseV0::TupleV0(c) => { - let doc = const_view_string(path, &c.doc); - let name = const_view_string(path, &c.name); - let type_ = c.type_.iter().map(|t| const_view_type_def(path, t)); - quote!(#path::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - #path::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: #doc, - name: #name, - type_: #path::xdr::VecMView::new(&[#(#type_),*]), - } - )) - } - }); + let name = quote!(#path::xdr::StringMView::new_str(#enum_ident::spec_type_name())); + // Each case's Rust field types, so a reference to a user-defined type in + // a case resolves to the name that type reports for itself. + let cases = spec + .cases + .iter() + .zip(&variant_field_types) + .map(|(c, field_types)| match c { + ScSpecUdtUnionCaseV0::VoidV0(c) => { + let doc = const_view_string(path, &c.doc); + let name = const_view_string(path, &c.name); + quote!(#path::xdr::ScSpecUdtUnionCaseV0View::VoidV0( + #path::xdr::ScSpecUdtUnionCaseVoidV0View { doc: #doc, name: #name } + )) + } + ScSpecUdtUnionCaseV0::TupleV0(c) => { + let doc = const_view_string(path, &c.doc); + let name = const_view_string(path, &c.name); + let type_ = c + .type_ + .iter() + .zip(field_types.iter().copied()) + .map(|(t, rust)| const_view_type_def(path, t, Some(rust))); + quote!(#path::xdr::ScSpecUdtUnionCaseV0View::TupleV0( + #path::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: #doc, + name: #name, + type_: #path::xdr::VecMView::new(&[#(#type_),*]), + } + )) + } + }); let spec_view = quote! { #path::xdr::ScSpecEntryView::UdtUnionV0(#path::xdr::ScSpecUdtUnionV0View { doc: #doc, @@ -230,6 +244,8 @@ pub fn derive_type_enum( // Output. let mut output = quote! { + #spec_type_name + #spec_gen #spec_shaking_impl diff --git a/soroban-sdk-macros/src/derive_enum_int.rs b/soroban-sdk-macros/src/derive_enum_int.rs index c72cd4bbe..7a4dfef05 100644 --- a/soroban-sdk-macros/src/derive_enum_int.rs +++ b/soroban-sdk-macros/src/derive_enum_int.rs @@ -9,7 +9,11 @@ use syn::{ use stellar_xdr::ScSpecUdtEnumCaseV0; -use crate::{doc::docs_from_attrs, map_type::const_view_string, shaking}; +use crate::{ + doc::docs_from_attrs, + map_type::{const_view_string, spec_type_name_gen}, + shaking, +}; // TODO: Add conversions to/from ScVal types. @@ -76,10 +80,14 @@ pub fn derive_type_enum_int( // Generated code spec. The spec entry is rendered as the equivalent const // ScSpecEntryView, which the contract crate encodes to XDR at compile time. + // The fully qualified name the spec knows this type by, emitted for every + // type so that a reference to it from anywhere can reach it. + let spec_type_name = spec_type_name_gen(enum_ident); + let spec_gen = { let doc = const_view_string(path, &spec.doc); let lib = const_view_string(path, &spec.lib); - let name = const_view_string(path, &spec.name); + let name = quote!(#path::xdr::StringMView::new_str(#enum_ident::spec_type_name())); let cases = spec.cases.iter().map(|c| { let doc = const_view_string(path, &c.doc); let name = const_view_string(path, &c.name); @@ -125,6 +133,8 @@ pub fn derive_type_enum_int( // Output. let mut output = quote! { + #spec_type_name + #spec_gen #spec_shaking_impl diff --git a/soroban-sdk-macros/src/derive_error_enum_int.rs b/soroban-sdk-macros/src/derive_error_enum_int.rs index bb8ec64e6..e9dc24ab8 100644 --- a/soroban-sdk-macros/src/derive_error_enum_int.rs +++ b/soroban-sdk-macros/src/derive_error_enum_int.rs @@ -6,7 +6,11 @@ use syn::{ ext::IdentExt as _, spanned::Spanned, Attribute, DataEnum, Error, ExprLit, Ident, Lit, Path, }; -use crate::{doc::docs_from_attrs, map_type::const_view_string, shaking}; +use crate::{ + doc::docs_from_attrs, + map_type::{const_view_string, spec_type_name_gen}, + shaking, +}; pub fn derive_type_error_enum_int( path: &Path, @@ -73,10 +77,14 @@ pub fn derive_type_error_enum_int( // Generated code spec. The spec entry is rendered as the equivalent const // ScSpecEntryView, which the contract crate encodes to XDR at compile time. + // The fully qualified name the spec knows this type by, emitted for every + // type so that a reference to it from anywhere can reach it. + let spec_type_name = spec_type_name_gen(enum_ident); + let spec_gen = { let doc = const_view_string(path, &spec.doc); let lib = const_view_string(path, &spec.lib); - let name = const_view_string(path, &spec.name); + let name = quote!(#path::xdr::StringMView::new_str(#enum_ident::spec_type_name())); let cases = spec.cases.iter().map(|c| { let doc = const_view_string(path, &c.doc); let name = const_view_string(path, &c.name); @@ -122,6 +130,8 @@ pub fn derive_type_error_enum_int( // Output. quote! { + #spec_type_name + #spec_gen #spec_shaking_impl diff --git a/soroban-sdk-macros/src/derive_event.rs b/soroban-sdk-macros/src/derive_event.rs index c46a4be6b..c75e46668 100644 --- a/soroban-sdk-macros/src/derive_event.rs +++ b/soroban-sdk-macros/src/derive_event.rs @@ -12,8 +12,7 @@ use proc_macro2::Span; use proc_macro2::TokenStream as TokenStream2; use quote::{format_ident, quote}; use stellar_xdr::{ - ScSpecEventDataFormat, ScSpecEventParamLocationV0, ScSpecEventParamV0, ScSpecEventV0, ScSymbol, - StringM, + ScSpecEventDataFormat, ScSpecEventParamLocationV0, ScSpecEventParamV0, ScSpecEventV0, StringM, }; use syn::{ext::IdentExt as _, parse2, spanned::Spanned, Data, DeriveInput, Fields, LitStr, Path}; @@ -94,7 +93,7 @@ fn derive_impls(args: &ContractEventArgs, input: &DeriveInput) -> Result = errors @@ -183,7 +182,7 @@ fn derive_impls(args: &ContractEventArgs, input: &DeriveInput) -> Result Result Result &'static str { + ::core::concat!(::core::module_path!(), "::", #spec_type_name_lit) + } + } + }; let output = quote! { + #spec_type_name + #spec_gen #spec_shaking_impl diff --git a/soroban-sdk-macros/src/derive_spec_fn.rs b/soroban-sdk-macros/src/derive_spec_fn.rs index 17b456a32..9ce7caddc 100644 --- a/soroban-sdk-macros/src/derive_spec_fn.rs +++ b/soroban-sdk-macros/src/derive_spec_fn.rs @@ -144,6 +144,23 @@ pub fn derive_fn_spec( ReturnType::Default => vec![], }; + // The Rust types the argument and return spec types were mapped from, so a + // reference to a user-defined type resolves to the name that type reports + // for itself. Kept element-for-element with `spec_args` above, including the + // unsupported receiver, so the two line up. + let arg_types: Vec> = inputs + .iter() + .skip(if env_input.is_some() { 1 } else { 0 }) + .map(|a| match a { + FnArg::Typed(pat_type) => Some(&*pat_type.ty), + FnArg::Receiver(_) => None, + }) + .collect(); + let output_type: Option<&Type> = match output { + ReturnType::Type(_, ty) => Some(ty), + ReturnType::Default => None, + }; + // Generated code spec. let name = &ident.unraw().to_string(); let spec_entry = ScSpecFunctionV0 { @@ -168,16 +185,20 @@ pub fn derive_fn_spec( let spec_view = { let doc = const_view_string(path, &spec_entry.doc); let name = const_view_symbol(path, &spec_entry.name); - let inputs = spec_entry.inputs.iter().map(|i| { - let doc = const_view_string(path, &i.doc); - let name = const_view_string(path, &i.name); - let type_ = const_view_type_def(path, &i.type_); - quote!(#path::xdr::ScSpecFunctionInputV0View { doc: #doc, name: #name, type_: #type_ }) - }); + let inputs = spec_entry + .inputs + .iter() + .zip(arg_types.iter().copied()) + .map(|(i, rust)| { + let doc = const_view_string(path, &i.doc); + let name = const_view_string(path, &i.name); + let type_ = const_view_type_def(path, &i.type_, rust); + quote!(#path::xdr::ScSpecFunctionInputV0View { doc: #doc, name: #name, type_: #type_ }) + }); let outputs = spec_entry .outputs .iter() - .map(|o| const_view_type_def(path, o)); + .map(|o| const_view_type_def(path, o, output_type)); quote! { #path::xdr::ScSpecEntryView::FunctionV0(#path::xdr::ScSpecFunctionV0View { doc: #doc, diff --git a/soroban-sdk-macros/src/derive_struct.rs b/soroban-sdk-macros/src/derive_struct.rs index d6882067c..a8895fbc5 100644 --- a/soroban-sdk-macros/src/derive_struct.rs +++ b/soroban-sdk-macros/src/derive_struct.rs @@ -7,7 +7,7 @@ use stellar_xdr::{ScSpecTypeDef, ScSpecUdtStructFieldV0, ScSpecUdtStructV0, Stri use crate::{ doc::docs_from_attrs, - map_type::{const_view_string, const_view_type_def, map_type}, + map_type::{const_view_string, const_view_type_def, map_type, spec_type_name_gen}, shaking, }; @@ -83,18 +83,28 @@ pub fn derive_type_struct( fields: spec_fields.try_into().unwrap(), }; + // The fully qualified name the spec knows this type by, emitted for every + // type so that a reference to it from anywhere can reach it. + let spec_type_name = spec_type_name_gen(ident); + // Generated code spec. The spec entry is rendered as the equivalent const // ScSpecEntryView, which the contract crate encodes to XDR at compile time. let spec_gen = { let doc = const_view_string(path, &spec.doc); let lib = const_view_string(path, &spec.lib); - let name = const_view_string(path, &spec.name); - let fields = spec.fields.iter().map(|f| { + let name = quote!(#path::xdr::StringMView::new_str(#ident::spec_type_name())); + // Each field's Rust type, so a reference to a user-defined type in a + // field resolves to the name that type reports for itself. + let fields = spec + .fields + .iter() + .zip(field_types.iter().copied()) + .map(|(f, rust)| { let doc = const_view_string(path, &f.doc); let name = const_view_string(path, &f.name); - let type_ = const_view_type_def(path, &f.type_); - quote!(#path::xdr::ScSpecUdtStructFieldV0View { doc: #doc, name: #name, type_: #type_ }) - }); + let type_ = const_view_type_def(path, &f.type_, Some(rust)); + quote!(#path::xdr::ScSpecUdtStructFieldV0View { doc: #doc, name: #name, type_: #type_ }) + }); let spec_view = quote! { #path::xdr::ScSpecEntryView::UdtStructV0(#path::xdr::ScSpecUdtStructV0View { doc: #doc, @@ -134,6 +144,8 @@ pub fn derive_type_struct( // Output. let mut output = quote! { + #spec_type_name + #spec_gen #spec_shaking_impl diff --git a/soroban-sdk-macros/src/derive_struct_tuple.rs b/soroban-sdk-macros/src/derive_struct_tuple.rs index f9954b064..0ac93b72b 100644 --- a/soroban-sdk-macros/src/derive_struct_tuple.rs +++ b/soroban-sdk-macros/src/derive_struct_tuple.rs @@ -7,7 +7,7 @@ use stellar_xdr::{ScSpecTypeDef, ScSpecUdtStructFieldV0, ScSpecUdtStructV0, Stri use crate::{ doc::docs_from_attrs, - map_type::{const_view_string, const_view_type_def, map_type}, + map_type::{const_view_string, const_view_type_def, map_type, spec_type_name_gen}, shaking, }; @@ -72,18 +72,28 @@ pub fn derive_type_struct_tuple( fields: field_specs.try_into().unwrap(), }; + // The fully qualified name the spec knows this type by, emitted for every + // type so that a reference to it from anywhere can reach it. + let spec_type_name = spec_type_name_gen(ident); + // Generated code spec. The spec entry is rendered as the equivalent const // ScSpecEntryView, which the contract crate encodes to XDR at compile time. let spec_gen = { let doc = const_view_string(path, &spec.doc); let lib = const_view_string(path, &spec.lib); - let name = const_view_string(path, &spec.name); - let fields = spec.fields.iter().map(|f| { - let doc = const_view_string(path, &f.doc); - let name = const_view_string(path, &f.name); - let type_ = const_view_type_def(path, &f.type_); - quote!(#path::xdr::ScSpecUdtStructFieldV0View { doc: #doc, name: #name, type_: #type_ }) - }); + let name = quote!(#path::xdr::StringMView::new_str(#ident::spec_type_name())); + // Each field's Rust type, so a reference to a user-defined type in a + // field resolves to the name that type reports for itself. + let fields = spec + .fields + .iter() + .zip(field_types.iter().copied()) + .map(|(f, rust)| { + let doc = const_view_string(path, &f.doc); + let name = const_view_string(path, &f.name); + let type_ = const_view_type_def(path, &f.type_, Some(rust)); + quote!(#path::xdr::ScSpecUdtStructFieldV0View { doc: #doc, name: #name, type_: #type_ }) + }); let spec_view = quote! { #path::xdr::ScSpecEntryView::UdtStructV0(#path::xdr::ScSpecUdtStructV0View { doc: #doc, @@ -123,6 +133,8 @@ pub fn derive_type_struct_tuple( // Output. let mut output = quote! { + #spec_type_name + #spec_gen #spec_shaking_impl diff --git a/soroban-sdk-macros/src/map_type.rs b/soroban-sdk-macros/src/map_type.rs index 412d602ca..52051c619 100644 --- a/soroban-sdk-macros/src/map_type.rs +++ b/soroban-sdk-macros/src/map_type.rs @@ -308,36 +308,48 @@ pub fn map_type(t: &Type, allow_ref: bool, allow_hash: bool) -> Result TokenStream2 { +/// +/// `rust` is the Rust type the spec type was mapped from. A reference to a +/// user-defined type needs it to name that type, because the name is the one the +/// type reports for itself and only the Rust type says which type that is. +pub fn const_view_type_def(path: &Path, t: &ScSpecTypeDef, rust: Option<&Type>) -> TokenStream2 { let xdr = quote!(#path::xdr); let variant = format_ident!("{}", t.name()); + // The Rust type arguments lining up with this spec type's arguments, so that + // a nested reference is paired with the Rust type it was mapped from. + let args = rust.map(type_args).unwrap_or_default(); + let arg = |i: usize| args.get(i).copied(); // Variants that hold a value. The recursive ones sit behind a reference in // the View type, matching the Box in the owned type. let value = match t { ScSpecTypeDef::Option(o) => { - let value_type = const_view_type_def(path, &o.value_type); + let value_type = const_view_type_def(path, &o.value_type, arg(0)); Some(quote!(( r::ScSpecTypeOptionView { value_type: &#value_type }))) } ScSpecTypeDef::Result(r) => { - let ok_type = const_view_type_def(path, &r.ok_type); - let error_type = const_view_type_def(path, &r.error_type); + let ok_type = const_view_type_def(path, &r.ok_type, arg(0)); + let error_type = const_view_type_def(path, &r.error_type, arg(1)); Some( quote!(( r::ScSpecTypeResultView { ok_type: &#ok_type, error_type: &#error_type })), ) } ScSpecTypeDef::Vec(v) => { - let element_type = const_view_type_def(path, &v.element_type); + let element_type = const_view_type_def(path, &v.element_type, arg(0)); Some(quote!(( r::ScSpecTypeVecView { element_type: &#element_type }))) } ScSpecTypeDef::Map(m) => { - let key_type = const_view_type_def(path, &m.key_type); - let value_type = const_view_type_def(path, &m.value_type); + let key_type = const_view_type_def(path, &m.key_type, arg(0)); + let value_type = const_view_type_def(path, &m.value_type, arg(1)); Some( quote!(( r::ScSpecTypeMapView { key_type: &#key_type, value_type: &#value_type })), ) } ScSpecTypeDef::Tuple(t) => { - let value_types = t.value_types.iter().map(|t| const_view_type_def(path, t)); + let value_types = t + .value_types + .iter() + .enumerate() + .map(|(i, t)| const_view_type_def(path, t, arg(i))); Some( quote!(( r::ScSpecTypeTupleView { value_types: #xdr::VecMView::new(&[#(#value_types),*]) })), ) @@ -346,16 +358,87 @@ pub fn const_view_type_def(path: &Path, t: &ScSpecTypeDef) -> TokenStream2 { let n = b.n; Some(quote!((#xdr::ScSpecTypeBytesN { n: #n }))) } - ScSpecTypeDef::Udt(u) => { - let name = const_view_string(path, &u.name); - Some(quote!((#xdr::ScSpecTypeUdtView { name: #name }))) - } + // A reference names the type by the fully qualified name that type + // reports for itself, which only the referenced type can give because + // only its own expansion sees the module it is defined in. The Rust type + // the reference was mapped from is how that type is reached. + ScSpecTypeDef::Udt(_) => Some(match rust.map(unref) { + Some(ty) => { + quote!((#xdr::ScSpecTypeUdtView { name: #xdr::StringMView::new_str(<#ty>::spec_type_name()) })) + } + None => quote!( + (compile_error!( + "user-defined type reference has no Rust type to take its name from" + )) + ), + }), // All remaining variants are void. _ => None, }; quote!(#xdr::ScSpecTypeDefView::#variant #value) } +/// The Rust type behind any number of references. +fn unref(t: &Type) -> &Type { + match t { + Type::Reference(TypeReference { elem, .. }) => unref(elem), + _ => t, + } +} + +/// The Rust type arguments that line up, in order, with the type arguments of +/// the spec type [map_type] produced for `t`: the arguments of a container +/// (`Option`, `Result`, `Vec`, `Map`) or the elements of a +/// tuple. Empty for anything else, including the parameterized types whose +/// arguments are not types in the spec (`BytesN`, `Hash`). +fn type_args(t: &Type) -> Vec<&Type> { + match unref(t) { + Type::Tuple(TypeTuple { elems, .. }) => elems.iter().collect(), + Type::Path(TypePath { + qself: None, + path: Path { segments, .. }, + }) => match segments.last() { + Some(PathSegment { + ident, + arguments: PathArguments::AngleBracketed(args), + }) if matches!( + &ident.unraw().to_string()[..], + "Option" | "Result" | "Vec" | "Map" + ) => + { + args.args + .iter() + .filter_map(|a| match a { + GenericArgument::Type(ty) => Some(ty), + _ => None, + }) + .collect() + } + _ => Vec::new(), + }, + _ => Vec::new(), + } +} + +/// Emits the `spec_type_name` const fn on a user-defined type: the name the +/// contract spec knows it by, which is its Rust path — the module it is defined +/// in, then its own name. +/// +/// The module path is only known where the type is defined, and a macro cannot +/// see it, so `module_path!` is emitted for the compiler to expand in place +/// rather than resolved here. +pub fn spec_type_name_gen(ident: &Ident) -> TokenStream2 { + let name = Literal::string(&ident.unraw().to_string()); + quote! { + impl #ident { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + ::core::concat!(::core::module_path!(), "::", #name) + } + } + } +} + /// Renders a [StringM] as a const expression of type `#path::xdr::StringMView`. /// The `MAX` of the `StringMView` is inferred from the field it is assigned to. pub fn const_view_string(path: &Path, s: &StringM) -> TokenStream2 { @@ -524,14 +607,15 @@ mod test { #[test] fn test_is_mapped_type_udt_unique_xdr_error() { let input: DeriveInput = parse_quote!( - struct MyTypeIsOverSixtyCharactersLongAndShouldFailToCompileDueToThat { + struct MyTypeIsOverTwoHundredAndFiftySixCharactersLongAndShouldFailToCompileDueToThatMyTypeIsOverTwoHundredAndFiftySixCharactersLongAndShouldFailToCompileDueToThatMyTypeIsOverTwoHundredAndFiftySixCharactersLongAndShouldFailToCompileDueToThatMyTypeIsOverTwoHundredAndFiftySixCharactersLongAndShouldFailToCompileDueToThat + { pub key: [u8; 32], } ); let err = is_mapped_type_udt(&input.ident, &input.generics).unwrap_err(); assert_eq!( err.to_string(), - "type `MyTypeIsOverSixtyCharactersLongAndShouldFailToCompileDueToThat` cannot be used in XDR spec: xdr value max length exceeded" + "type `MyTypeIsOverTwoHundredAndFiftySixCharactersLongAndShouldFailToCompileDueToThatMyTypeIsOverTwoHundredAndFiftySixCharactersLongAndShouldFailToCompileDueToThatMyTypeIsOverTwoHundredAndFiftySixCharactersLongAndShouldFailToCompileDueToThatMyTypeIsOverTwoHundredAndFiftySixCharactersLongAndShouldFailToCompileDueToThat` cannot be used in XDR spec: xdr value max length exceeded" ); } diff --git a/soroban-sdk/src/tests/contract_docs.rs b/soroban-sdk/src/tests/contract_docs.rs index acff3009e..15462376f 100644 --- a/soroban-sdk/src/tests/contract_docs.rs +++ b/soroban-sdk/src/tests/contract_docs.rs @@ -57,7 +57,9 @@ mod struct_ { let entry = ScSpecEntry::from_xdr(__SPEC_XDR_TYPE_S, Limits::none()).unwrap(); let expect = ScSpecEntry::UdtStructV0(ScSpecUdtStructV0 { doc: "S holds a and\nb.".try_into().unwrap(), - name: "S".try_into().unwrap(), + name: "soroban_sdk::tests::contract_docs::struct_::S" + .try_into() + .unwrap(), lib: "".try_into().unwrap(), fields: [ ScSpecUdtStructFieldV0 { @@ -98,7 +100,9 @@ mod struct_tuple { let entry = ScSpecEntry::from_xdr(__SPEC_XDR_TYPE_S, Limits::none()).unwrap(); let expect = ScSpecEntry::UdtStructV0(ScSpecUdtStructV0 { doc: "S holds two u64s.".try_into().unwrap(), - name: "S".try_into().unwrap(), + name: "soroban_sdk::tests::contract_docs::struct_tuple::S" + .try_into() + .unwrap(), lib: "".try_into().unwrap(), fields: [ ScSpecUdtStructFieldV0 { @@ -145,7 +149,9 @@ mod enum_ { let expect = ScSpecEntry::UdtUnionV0(ScSpecUdtUnionV0 { doc: "E has variants A and B.".try_into().unwrap(), lib: "".try_into().unwrap(), - name: "E".try_into().unwrap(), + name: "soroban_sdk::tests::contract_docs::enum_::E" + .try_into() + .unwrap(), cases: [ ScSpecUdtUnionCaseV0::VoidV0(ScSpecUdtUnionCaseVoidV0 { doc: "A is\na.".try_into().unwrap(), @@ -191,7 +197,9 @@ mod enum_int { let entry = ScSpecEntry::from_xdr(__SPEC_XDR_TYPE_E, Limits::none()).unwrap(); let expect = ScSpecEntry::UdtEnumV0(ScSpecUdtEnumV0 { doc: "E has variants A and B.".try_into().unwrap(), - name: "E".try_into().unwrap(), + name: "soroban_sdk::tests::contract_docs::enum_int::E" + .try_into() + .unwrap(), lib: "".try_into().unwrap(), cases: [ ScSpecUdtEnumCaseV0 { @@ -235,7 +243,9 @@ mod enum_error_int { let entry = ScSpecEntry::from_xdr(__SPEC_XDR_TYPE_E, Limits::none()).unwrap(); let expect = ScSpecEntry::UdtErrorEnumV0(ScSpecUdtErrorEnumV0 { doc: "E has variants A and B.".try_into().unwrap(), - name: "E".try_into().unwrap(), + name: "soroban_sdk::tests::contract_docs::enum_error_int::E" + .try_into() + .unwrap(), lib: "".try_into().unwrap(), cases: [ ScSpecUdtErrorEnumCaseV0 { diff --git a/soroban-sdk/src/tests/contract_udt_raw_identifier.rs b/soroban-sdk/src/tests/contract_udt_raw_identifier.rs index f2a116cfc..2ede8803f 100644 --- a/soroban-sdk/src/tests/contract_udt_raw_identifier.rs +++ b/soroban-sdk/src/tests/contract_udt_raw_identifier.rs @@ -126,17 +126,23 @@ fn test_spec_contract() { doc: "".try_into().unwrap(), name: "fn".try_into().unwrap(), type_: ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "TestEnum".try_into().unwrap(), + name: "soroban_sdk::tests::contract_udt_raw_identifier::TestEnum" + .try_into() + .unwrap(), }), }] .try_into() .unwrap(), outputs: [ScSpecTypeDef::Result(Box::new(ScSpecTypeResult { ok_type: Box::new(ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "TestType".try_into().unwrap(), + name: "soroban_sdk::tests::contract_udt_raw_identifier::TestType" + .try_into() + .unwrap(), })), error_type: Box::new(ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "TestError".try_into().unwrap(), + name: "soroban_sdk::tests::contract_udt_raw_identifier::TestError" + .try_into() + .unwrap(), })), }))] .try_into() @@ -179,7 +185,9 @@ fn test_spec_struct() { ScSpecEntry::UdtStructV0(ScSpecUdtStructV0 { doc: "".try_into().unwrap(), lib: "".try_into().unwrap(), - name: "TestType".try_into().unwrap(), + name: "soroban_sdk::tests::contract_udt_raw_identifier::TestType" + .try_into() + .unwrap(), fields: [ ScSpecUdtStructFieldV0 { doc: "".try_into().unwrap(), @@ -208,7 +216,9 @@ fn test_spec_struct() { ScSpecEntry::UdtStructV0(ScSpecUdtStructV0 { doc: "".try_into().unwrap(), lib: "".try_into().unwrap(), - name: "type".try_into().unwrap(), + name: "soroban_sdk::tests::contract_udt_raw_identifier::type" + .try_into() + .unwrap(), fields: [ScSpecUdtStructFieldV0 { doc: "".try_into().unwrap(), name: "value".try_into().unwrap(), @@ -226,7 +236,9 @@ fn test_spec_struct() { ScSpecEntry::UdtStructV0(ScSpecUdtStructV0 { doc: "".try_into().unwrap(), lib: "".try_into().unwrap(), - name: "TupleStruct".try_into().unwrap(), + name: "soroban_sdk::tests::contract_udt_raw_identifier::TupleStruct" + .try_into() + .unwrap(), fields: [ ScSpecUdtStructFieldV0 { doc: "".try_into().unwrap(), @@ -253,7 +265,9 @@ fn test_spec_enum() { ScSpecEntry::UdtEnumV0(ScSpecUdtEnumV0 { doc: "".try_into().unwrap(), lib: "".try_into().unwrap(), - name: "TestEnum".try_into().unwrap(), + name: "soroban_sdk::tests::contract_udt_raw_identifier::TestEnum" + .try_into() + .unwrap(), cases: [ ScSpecUdtEnumCaseV0 { doc: "".try_into().unwrap(), @@ -277,7 +291,9 @@ fn test_spec_enum() { ScSpecEntry::UdtErrorEnumV0(ScSpecUdtErrorEnumV0 { doc: "".try_into().unwrap(), lib: "".try_into().unwrap(), - name: "TestError".try_into().unwrap(), + name: "soroban_sdk::tests::contract_udt_raw_identifier::TestError" + .try_into() + .unwrap(), cases: [ScSpecUdtErrorEnumCaseV0 { doc: "".try_into().unwrap(), name: "Error".try_into().unwrap(), @@ -295,7 +311,9 @@ fn test_spec_enum() { ScSpecEntry::UdtUnionV0(ScSpecUdtUnionV0 { doc: "".try_into().unwrap(), lib: "".try_into().unwrap(), - name: "TestTupleEnum".try_into().unwrap(), + name: "soroban_sdk::tests::contract_udt_raw_identifier::TestTupleEnum" + .try_into() + .unwrap(), cases: [ ScSpecUdtUnionCaseV0::TupleV0(ScSpecUdtUnionCaseTupleV0 { doc: "".try_into().unwrap(), @@ -325,7 +343,9 @@ fn test_spec_event() { ScSpecEntry::EventV0(ScSpecEventV0 { doc: "".try_into().unwrap(), lib: "".try_into().unwrap(), - name: ScSymbol("TestEvent".try_into().unwrap()), + name: "soroban_sdk::tests::contract_udt_raw_identifier::TestEvent" + .try_into() + .unwrap(), prefix_topics: [ScSymbol("test_event".try_into().unwrap())] .try_into() .unwrap(), diff --git a/soroban-sdk/src/tests/contract_udt_struct.rs b/soroban-sdk/src/tests/contract_udt_struct.rs index b4f1085b0..ba4e7174c 100644 --- a/soroban-sdk/src/tests/contract_udt_struct.rs +++ b/soroban-sdk/src/tests/contract_udt_struct.rs @@ -135,14 +135,18 @@ fn test_spec() { doc: "".try_into().unwrap(), name: "a".try_into().unwrap(), type_: ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "Udt".try_into().unwrap(), + name: "soroban_sdk::tests::contract_udt_struct::Udt" + .try_into() + .unwrap(), }), }, ScSpecFunctionInputV0 { doc: "".try_into().unwrap(), name: "b".try_into().unwrap(), type_: ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "Udt".try_into().unwrap(), + name: "soroban_sdk::tests::contract_udt_struct::Udt" + .try_into() + .unwrap(), }), }, ] @@ -151,10 +155,14 @@ fn test_spec() { outputs: vec![ScSpecTypeDef::Tuple(Box::new(ScSpecTypeTuple { value_types: vec![ ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "Udt".try_into().unwrap(), + name: "soroban_sdk::tests::contract_udt_struct::Udt" + .try_into() + .unwrap(), }), ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "Udt".try_into().unwrap(), + name: "soroban_sdk::tests::contract_udt_struct::Udt" + .try_into() + .unwrap(), }), ] .try_into() @@ -178,14 +186,18 @@ fn test_spec_with_long_names() { doc: "".try_into().unwrap(), name: "a".try_into().unwrap(), type_: ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "UdtWithLongName".try_into().unwrap(), + name: "soroban_sdk::tests::contract_udt_struct::UdtWithLongName" + .try_into() + .unwrap(), }), }, ScSpecFunctionInputV0 { doc: "".try_into().unwrap(), name: "b".try_into().unwrap(), type_: ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "UdtWithLongName".try_into().unwrap(), + name: "soroban_sdk::tests::contract_udt_struct::UdtWithLongName" + .try_into() + .unwrap(), }), }, ] diff --git a/soroban-sdk/src/tests/contract_udt_struct_aliased_import.rs b/soroban-sdk/src/tests/contract_udt_struct_aliased_import.rs index a4722626f..a2ab8a4c5 100644 --- a/soroban-sdk/src/tests/contract_udt_struct_aliased_import.rs +++ b/soroban-sdk/src/tests/contract_udt_struct_aliased_import.rs @@ -98,7 +98,9 @@ fn test_spec() { let expect = ScSpecEntry::UdtStructV0(ScSpecUdtStructV0 { doc: "".try_into().unwrap(), lib: "".try_into().unwrap(), - name: "Outer".try_into().unwrap(), + name: "soroban_sdk::tests::contract_udt_struct_aliased_import::Outer" + .try_into() + .unwrap(), fields: vec![ ScSpecUdtStructFieldV0 { doc: "".try_into().unwrap(), @@ -111,7 +113,9 @@ fn test_spec() { type_: ScSpecTypeDef::Udt(ScSpecTypeUdt { // See module doc comment: named after the aliased // import, not the type's own spec'd name (below). - name: "Renamed".try_into().unwrap(), + name: "soroban_sdk::tests::contract_udt_struct_aliased_import::inner::Inner" + .try_into() + .unwrap(), }), }, ] @@ -126,7 +130,9 @@ fn test_spec() { let expect = ScSpecEntry::UdtStructV0(ScSpecUdtStructV0 { doc: "".try_into().unwrap(), lib: "".try_into().unwrap(), - name: "Inner".try_into().unwrap(), + name: "soroban_sdk::tests::contract_udt_struct_aliased_import::inner::Inner" + .try_into() + .unwrap(), fields: vec![ ScSpecUdtStructFieldV0 { doc: "".try_into().unwrap(), diff --git a/soroban-sdk/src/tests/contract_udt_struct_tuple.rs b/soroban-sdk/src/tests/contract_udt_struct_tuple.rs index 207926e96..8a9ccaace 100644 --- a/soroban-sdk/src/tests/contract_udt_struct_tuple.rs +++ b/soroban-sdk/src/tests/contract_udt_struct_tuple.rs @@ -81,14 +81,18 @@ fn test_spec() { doc: "".try_into().unwrap(), name: "a".try_into().unwrap(), type_: ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "Udt".try_into().unwrap(), + name: "soroban_sdk::tests::contract_udt_struct_tuple::Udt" + .try_into() + .unwrap(), }), }, ScSpecFunctionInputV0 { doc: "".try_into().unwrap(), name: "b".try_into().unwrap(), type_: ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "Udt".try_into().unwrap(), + name: "soroban_sdk::tests::contract_udt_struct_tuple::Udt" + .try_into() + .unwrap(), }), }, ] @@ -97,10 +101,14 @@ fn test_spec() { outputs: std::vec![ScSpecTypeDef::Tuple(Box::new(ScSpecTypeTuple { value_types: std::vec![ ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "Udt".try_into().unwrap(), + name: "soroban_sdk::tests::contract_udt_struct_tuple::Udt" + .try_into() + .unwrap(), }), ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "Udt".try_into().unwrap(), + name: "soroban_sdk::tests::contract_udt_struct_tuple::Udt" + .try_into() + .unwrap(), }), ] .try_into() diff --git a/soroban-sdk/test_snapshots/tests/address/test_get_existing_contract_address_executable_wasm.1.json b/soroban-sdk/test_snapshots/tests/address/test_get_existing_contract_address_executable_wasm.1.json index 487015e25..70c63bebd 100644 --- a/soroban-sdk/test_snapshots/tests/address/test_get_existing_contract_address_executable_wasm.1.json +++ b/soroban-sdk/test_snapshots/tests/address/test_get_existing_contract_address_executable_wasm.1.json @@ -18,7 +18,7 @@ } }, "executable": { - "wasm": "89a0503a4ef3132c6779d0ca9438d736401c2b3dc7691695c8378205ea625948" + "wasm": "3693efd566a8e0a63612817cfd89e6175f669a0aca6db2ba845bfa701bf96ab7" }, "constructor_args": [] } @@ -70,7 +70,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "89a0503a4ef3132c6779d0ca9438d736401c2b3dc7691695c8378205ea625948" + "wasm": "3693efd566a8e0a63612817cfd89e6175f669a0aca6db2ba845bfa701bf96ab7" }, "storage": null } @@ -104,8 +104,8 @@ } } }, - "hash": "89a0503a4ef3132c6779d0ca9438d736401c2b3dc7691695c8378205ea625948", - "code": "0061736d01000000014e0d60017e017e60037e7e7e017e60027e7e017e60047e7e7e7e017e60027f7f0060000060037e7f7f017e60027f7f017f60057e7f7f7f7f0060027f7e0060017f017e60037f7f7f0060027f7f017e024f0d017601330000017601680001016901320000017601310002016901310000017601380000016d01340002016d013100020176016700020162016a0002016d01390001016d016100030162016d00010315140405040607080909090505040205000a020b0c050405017001040405030100110621047f01418080c0000b7f0041e881c0000b7f0041e881c0000b7f0041f081c0000b074c07066d656d6f7279020003616464001909726563757273697665001b0e7265637572736976655f656e756d001d015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030909010041010b030e16170af11d14850704017f027e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a41002d00aa80c080001a41002d008e80c080001a200241818080800036021820022802181a41002d009c80c080001a41002d008080c080001a024002402001290300220342ff018342cb00510d00200041043a00000c010b200310808080800021042002410036021020022003370308200220044220883e0214200241186a200241086a108f808080000240024002400240200229031822034202510d002003a74101710d00024020022903202203a741ff0171220141ca00460d002001410e470d010b0240024002400240200341f480c080004104109080808000422088a70e0400010203050b200228021020022802141091808080000d04410021050c050b2002280210200228021410918080800041014b0d03200241186a200241086a108f80808000200229031822034202510d032003a74101710d0320022903202103410021010240034020014118460d01200241186a20016a4202370300200141086a21010c000b0b200342ff018342cc00520d032003419881c080004103200241186a4103109280808000200241306a200229031810938080800020022802300d0320022903382104200241306a200229032010938080800020022802300d032002290328220642ff018342cb00520d0320022903382103410121050c040b2002280210200228021410918080800041014b0d02200241186a200241086a108f80808000200229031822034202510d022003a74101710d022002290320220342ff01834204520d02410a410f41092003422088a72201410f461b2001410a461b22014109460d02410221050c040b2002280210200228021410918080800041014b0d01200241186a200241086a108f80808000200229031822034202510d012003a74101710d012002290320220342ff018342cb00520d01410021010240034020014110460d01200241306a20016a4202370300200141086a21010c000b0b2003200241306aad4220864204844284808080201081808080001a200241186a200229033010938080800020022802184101460d012002290338220342ff018342cb00520d0120022903202104410321050c020b200041043a00000c030b200041043a00000c020b0b200020063703182000200337031020002004370308200020013a0001200020053a00000b200241c0006a2480808080000b02000b4a02017e017f42022102024020012802082203200128020c4f0d00200020012903002003ad4220864204841083808080003703082001200341016a360208420021020b200020023703000b1c0020002001ad4220864204842002ad422086420484108c808080000b1900024020012000490d00200120006b0f0b109a80808000000b3100024020022004460d00000b20002001ad4220864204842003ad4220864204842002ad422086420484108b808080001a0b5d02017f017e024002402001a741ff0171220241c100460d00024020024107460d00420121034283908080800121010c020b20014208872101420021030c010b42002103200110828080800021010b20002003370300200020013703080bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cb00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cc00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000b2801017f23808080800041106b220041828080800036020c200028020c1a41002d00b880c080001a0b4301017f23808080800041106b220041818080800036020c200028020c1a200041838080800036020820002802081a41002d00d480c080001a41002d00c680c080001a0b7803017f017e017f23808080800041106b220224808080800042022103024020012802082204200128020c4f0d00200220012903002004ad42208642048410838080800010938080800020022903002103200020022903083703082001200441016a3602080b20002003370300200241106a2480808080000bd60404027f017e017f057e23808080800041c0006b22022480808080002002200137030820022000370300200241106a2002108d8080800002400240024020022d001022034104460d00200229032021012002290318210420023100112100200241106a200241086a108d8080800020022d001022054104460d00200229032021062002290318210720023100112108420021094200210a024002400240024020030e0405020100050b200110808080800021002002410036023820022001370330200220004220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0620022903182200420053200120007c2200200153470d06200021010c000b0b2000210a0c030b2001420053200420017c220a20045373450d020c030b2001420053200420017c220a20045373450d010c020b000b0240024002400240024020050e0404020100040b200610808080800021012002410036023820022006370330200220014220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0520022903182200420053200120007c2200200153470d05200021010c000b0b200821090c020b2006420053200720067c2209200753730d020c010b2001420053200720017c2209200753730d010b2009420053200a20097c2201200a53730d000240024020014280808080808080c0007c42ffffffffffffffff00560d00200142088642078421010c010b200110848080800021010b200241c0006a24808080800020010f0b109a80808000000b090010a080808000000bf90102017f017e23808080800041206b2201248080808000200141828080800036020820012802081a41002d00b880c080001a200141086a2000109480808000024020012802084101460d00024002402001290318220010808080800042ffffffff0f560d00200141828080800036020820012802081a41002d00b880c080001a420221000c010b200141086a200010858080800010948080800020012802084101460d012001290310210020012903182102200141828080800036020820012802081a41002d00b880c080001a2001200237031020012000370308200141086a109c8080800021000b200141206a24808080800020000f0b000b240041b081c08000ad4220864204842000ad422086420484428480808020108a808080000b850704017f017e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a0240200042ff018342cb00520d00200010808080800021032002410036021020022000370308200220034220883e0214200241186a200241086a108f80808000200229031822004202510d002000a74101710d00024020022903202200a741ff0171220441ca00460d002004410e470d010b024002400240024002400240200041d881c080004102109080808000422088a70e020100060b2002280210200228021410918080800041014b0d05200241306a200241086a108f80808000200229033022004202510d052000a74101710d05200241186a200229033810958080800020022802184101460d05200142ff01834204520d052002290328220020014284808080708322011086808080004201520d0120002001108780808000220042ff018342cb00520d05200010808080800021012002410036021020022000370308200220014220883e0214200241186a200241086a108f80808000200229031822004202510d052000a74101710d05024020022903202200a741ff0171220441ca00460d002004410e470d060b200041d881c080004102109080808000422088a70e020203050b200228021020022802141091808080000d04200142ff01834204520d040b420221000c020b200228021020022802141091808080000d02420021000c010b2002280210200228021410918080800041014b0d01200241306a200241086a108f80808000200229033022004202510d012000a74101710d01200241186a200229033810958080800020022802180d012002290328210520022903202103420121000b200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a42022101024020004202510d0002402000a7410171450d00200241186a41cc81c080004109109e8080800020022802180d022002290320210020022005370320200220033703182002200241186a109c8080800037032020022000370318200241186a4102109f8080800021010c010b200241186a41c081c08000410c109e8080800020022802180d0120022002290320370318200241186a4101109f8080800021010b200241c0006a24808080800020010f0b000bd60102017e037f02400240200241094b0d0042002103410021040340024020044109470d002003420886420e8421030c030b410121050240200120046a2d0000220641df00460d0002400240200641506a41ff0171410a490d00200641bf7f6a41ff0171411a490d012006419f7f6a41ff0171411a4f0d04200641456a21050c020b200641526a21050c010b2006414b6a21050b20034206862005ad42ff0183842103200441016a21040c000b0b2001ad4220864204842002ad42208642048410898080800021030b20004200370300200020033703080b1a002000ad4220864204842001ad4220864204841088808080000b0300000b0bf2010100418080c0000be801537045635631f3b0ab40690d48b4537045635631aff793ba9e4dde9a537045635631eb9f12269a76282a53704563563116276438ffc9b1f8537045635631c81291fed713f59c537045635631ff7b5620ab0ddc64537045635631e16f55dbd4379814556474415564744255647443556474440000620010000400000066001000040000006a001000040000006e0010000400000061626300940010000100000095001000010000009600100001000000940010000100000095001000010000004e6f74526563757273697665526563757273697665000000c00010000c000000cc0010000900000000db1c0e636f6e74726163747370656376300000000000000000000000036164640000000002000000000000000161000000000007d000000007556474456e756d00000000000000000162000000000007d000000007556474456e756d00000000010000000700000002000000000000000000000007556474456e756d0000000004000000000000000000000004556474410000000100000000000000045564744200000001000007d0000000095564745374727563740000000000000100000000000000045564744300000001000007d000000008556474456e756d320000000100000000000000045564744400000001000007d0000000085564745475706c6500000003000000000000000000000008556474456e756d32000000020000000000000001410000000000000a0000000000000001420000000000000f000000010000000000000000000000085564745475706c650000000200000000000000013000000000000007000000000000000131000000000003ea0000000700000001000000000000000000000009556474537472756374000000000000030000000000000001610000000000000700000000000000016200000000000007000000000000000163000000000003ea0000000700000000000000000000000972656375727369766500000000000001000000000000000161000000000007d00000000c55647452656375727369766500000001000003e8000007d00000000c5564745265637572736976650000000100000000000000000000000c5564745265637572736976650000000200000000000000016100000000000011000000000000000162000000000003ea000007d00000000c5564745265637572736976650000000200000000000000000000000d526563757273697665456e756d0000000000000200000000000000000000000c4e6f7452656375727369766500000001000000000000000952656375727369766500000000000001000007d00000000f526563757273697665546f456e756d000000000100000000000000000000000f526563757273697665546f456e756d000000000200000000000000016100000000000011000000000000000162000000000003ec00000004000007d00000000d526563757273697665456e756d00000000000000000000000000000e7265637572736976655f656e756d000000000002000000000000000161000000000007d00000000d526563757273697665456e756d00000000000000000000036b6579000000000400000001000003e9000003e8000007d00000000d526563757273697665456e756d0000000000000300000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d00000000f436f6e7472616374436f6e7465787400000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e74657874000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d00000000f436f6e7472616374436f6e7465787400000000000000000f7375625f696e766f636174696f6e7300000003ea000007d000000018496e766f6b6572436f6e747261637441757468456e747279000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000015537562436f6e7472616374496e766f636174696f6e0000000000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e7465787400000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001c00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + "hash": "3693efd566a8e0a63612817cfd89e6175f669a0aca6db2ba845bfa701bf96ab7", + "code": "0061736d01000000014e0d60017e017e60037e7e7e017e60027e7e017e60047e7e7e7e017e60027f7f0060000060037e7f7f017e60027f7f017f60057e7f7f7f7f0060027f7e0060017f017e60037f7f7f0060027f7f017e024f0d017601330000017601680001016901320000017601310002016901310000017601380000016d01340002016d013100020176016700020162016a0002016d01390001016d016100030162016d00010315140405040607080909090505040205000a020b0c050405017001040405030100110621047f01418080c0000b7f0041e881c0000b7f0041e881c0000b7f0041f081c0000b074c07066d656d6f7279020003616464001909726563757273697665001b0e7265637572736976655f656e756d001d015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030909010041010b030e16170af11d14850704017f027e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a41002d00aa80c080001a41002d008e80c080001a200241818080800036021820022802181a41002d009c80c080001a41002d008080c080001a024002402001290300220342ff018342cb00510d00200041043a00000c010b200310808080800021042002410036021020022003370308200220044220883e0214200241186a200241086a108f808080000240024002400240200229031822034202510d002003a74101710d00024020022903202203a741ff0171220141ca00460d002001410e470d010b0240024002400240200341f480c080004104109080808000422088a70e0400010203050b200228021020022802141091808080000d04410021050c050b2002280210200228021410918080800041014b0d03200241186a200241086a108f80808000200229031822034202510d032003a74101710d0320022903202103410021010240034020014118460d01200241186a20016a4202370300200141086a21010c000b0b200342ff018342cc00520d032003419881c080004103200241186a4103109280808000200241306a200229031810938080800020022802300d0320022903382104200241306a200229032010938080800020022802300d032002290328220642ff018342cb00520d0320022903382103410121050c040b2002280210200228021410918080800041014b0d02200241186a200241086a108f80808000200229031822034202510d022003a74101710d022002290320220342ff01834204520d02410a410f41092003422088a72201410f461b2001410a461b22014109460d02410221050c040b2002280210200228021410918080800041014b0d01200241186a200241086a108f80808000200229031822034202510d012003a74101710d012002290320220342ff018342cb00520d01410021010240034020014110460d01200241306a20016a4202370300200141086a21010c000b0b2003200241306aad4220864204844284808080201081808080001a200241186a200229033010938080800020022802184101460d012002290338220342ff018342cb00520d0120022903202104410321050c020b200041043a00000c030b200041043a00000c020b0b200020063703182000200337031020002004370308200020013a0001200020053a00000b200241c0006a2480808080000b02000b4a02017e017f42022102024020012802082203200128020c4f0d00200020012903002003ad4220864204841083808080003703082001200341016a360208420021020b200020023703000b1c0020002001ad4220864204842002ad422086420484108c808080000b1900024020012000490d00200120006b0f0b109a80808000000b3100024020022004460d00000b20002001ad4220864204842003ad4220864204842002ad422086420484108b808080001a0b5d02017f017e024002402001a741ff0171220241c100460d00024020024107460d00420121034283908080800121010c020b20014208872101420021030c010b42002103200110828080800021010b20002003370300200020013703080bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cb00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cc00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000b2801017f23808080800041106b220041828080800036020c200028020c1a41002d00b880c080001a0b4301017f23808080800041106b220041818080800036020c200028020c1a200041838080800036020820002802081a41002d00d480c080001a41002d00c680c080001a0b7803017f017e017f23808080800041106b220224808080800042022103024020012802082204200128020c4f0d00200220012903002004ad42208642048410838080800010938080800020022903002103200020022903083703082001200441016a3602080b20002003370300200241106a2480808080000bd60404027f017e017f057e23808080800041c0006b22022480808080002002200137030820022000370300200241106a2002108d8080800002400240024020022d001022034104460d00200229032021012002290318210420023100112100200241106a200241086a108d8080800020022d001022054104460d00200229032021062002290318210720023100112108420021094200210a024002400240024020030e0405020100050b200110808080800021002002410036023820022001370330200220004220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0620022903182200420053200120007c2200200153470d06200021010c000b0b2000210a0c030b2001420053200420017c220a20045373450d020c030b2001420053200420017c220a20045373450d010c020b000b0240024002400240024020050e0404020100040b200610808080800021012002410036023820022006370330200220014220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0520022903182200420053200120007c2200200153470d05200021010c000b0b200821090c020b2006420053200720067c2209200753730d020c010b2001420053200720017c2209200753730d010b2009420053200a20097c2201200a53730d000240024020014280808080808080c0007c42ffffffffffffffff00560d00200142088642078421010c010b200110848080800021010b200241c0006a24808080800020010f0b109a80808000000b090010a080808000000bf90102017f017e23808080800041206b2201248080808000200141828080800036020820012802081a41002d00b880c080001a200141086a2000109480808000024020012802084101460d00024002402001290318220010808080800042ffffffff0f560d00200141828080800036020820012802081a41002d00b880c080001a420221000c010b200141086a200010858080800010948080800020012802084101460d012001290310210020012903182102200141828080800036020820012802081a41002d00b880c080001a2001200237031020012000370308200141086a109c8080800021000b200141206a24808080800020000f0b000b240041b081c08000ad4220864204842000ad422086420484428480808020108a808080000b850704017f017e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a0240200042ff018342cb00520d00200010808080800021032002410036021020022000370308200220034220883e0214200241186a200241086a108f80808000200229031822004202510d002000a74101710d00024020022903202200a741ff0171220441ca00460d002004410e470d010b024002400240024002400240200041d881c080004102109080808000422088a70e020100060b2002280210200228021410918080800041014b0d05200241306a200241086a108f80808000200229033022004202510d052000a74101710d05200241186a200229033810958080800020022802184101460d05200142ff01834204520d052002290328220020014284808080708322011086808080004201520d0120002001108780808000220042ff018342cb00520d05200010808080800021012002410036021020022000370308200220014220883e0214200241186a200241086a108f80808000200229031822004202510d052000a74101710d05024020022903202200a741ff0171220441ca00460d002004410e470d060b200041d881c080004102109080808000422088a70e020203050b200228021020022802141091808080000d04200142ff01834204520d040b420221000c020b200228021020022802141091808080000d02420021000c010b2002280210200228021410918080800041014b0d01200241306a200241086a108f80808000200229033022004202510d012000a74101710d01200241186a200229033810958080800020022802180d012002290328210520022903202103420121000b200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a42022101024020004202510d0002402000a7410171450d00200241186a41cc81c080004109109e8080800020022802180d022002290320210020022005370320200220033703182002200241186a109c8080800037032020022000370318200241186a4102109f8080800021010c010b200241186a41c081c08000410c109e8080800020022802180d0120022002290320370318200241186a4101109f8080800021010b200241c0006a24808080800020010f0b000bd60102017e037f02400240200241094b0d0042002103410021040340024020044109470d002003420886420e8421030c030b410121050240200120046a2d0000220641df00460d0002400240200641506a41ff0171410a490d00200641bf7f6a41ff0171411a490d012006419f7f6a41ff0171411a4f0d04200641456a21050c020b200641526a21050c010b2006414b6a21050b20034206862005ad42ff0183842103200441016a21040c000b0b2001ad4220864204842002ad42208642048410898080800021030b20004200370300200020033703080b1a002000ad4220864204842001ad4220864204841088808080000b0300000b0bf2010100418080c0000be8015370456356311c8f201ad0d286b4537045635631dd0c966136ac0d25537045635631fb28a13fa92d6f1c537045635631241adaa8135d1e1c537045635631131c19bea57cff26537045635631ba36a478487b3dee5370456356314140810c80812d7e556474415564744255647443556474440000620010000400000066001000040000006a001000040000006e0010000400000061626300940010000100000095001000010000009600100001000000940010000100000095001000010000004e6f74526563757273697665526563757273697665000000c00010000c000000cc001000090000000087210e636f6e74726163747370656376300000000000000000000000036164640000000002000000000000000161000000000007d000000011746573745f7564743a3a556474456e756d000000000000000000000162000000000007d000000011746573745f7564743a3a556474456e756d000000000000010000000700000002000000000000000000000011746573745f7564743a3a556474456e756d00000000000004000000000000000000000004556474410000000100000000000000045564744200000001000007d000000013746573745f7564743a3a556474537472756374000000000100000000000000045564744300000001000007d000000012746573745f7564743a3a556474456e756d3200000000000100000000000000045564744400000001000007d000000012746573745f7564743a3a5564745475706c65000000000003000000000000000000000012746573745f7564743a3a556474456e756d320000000000020000000000000001410000000000000a0000000000000001420000000000000f00000001000000000000000000000012746573745f7564743a3a5564745475706c6500000000000200000000000000013000000000000007000000000000000131000000000003ea0000000700000001000000000000000000000013746573745f7564743a3a55647453747275637400000000030000000000000001610000000000000700000000000000016200000000000007000000000000000163000000000003ea0000000700000000000000000000000972656375727369766500000000000001000000000000000161000000000007d000000016746573745f7564743a3a556474526563757273697665000000000001000003e8000007d000000016746573745f7564743a3a556474526563757273697665000000000001000000000000000000000016746573745f7564743a3a55647452656375727369766500000000000200000000000000016100000000000011000000000000000162000000000003ea000007d000000016746573745f7564743a3a556474526563757273697665000000000002000000000000000000000017746573745f7564743a3a526563757273697665456e756d000000000200000000000000000000000c4e6f7452656375727369766500000001000000000000000952656375727369766500000000000001000007d000000019746573745f7564743a3a526563757273697665546f456e756d00000000000001000000000000000000000019746573745f7564743a3a526563757273697665546f456e756d0000000000000200000000000000016100000000000011000000000000000162000000000003ec00000004000007d000000017746573745f7564743a3a526563757273697665456e756d0000000000000000000000000e7265637572736976655f656e756d000000000002000000000000000161000000000007d000000017746573745f7564743a3a526563757273697665456e756d0000000000000000036b6579000000000400000001000003e9000003e8000007d000000017746573745f7564743a3a526563757273697665456e756d000000000300000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e00000000000000001a736f726f62616e5f73646b3a3a617574683a3a436f6e746578740000000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e746578740000000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e7465787400000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e0000000000000000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e74657874000000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000028736f726f62616e5f73646b3a3a617574683a3a537562436f6e7472616374496e766f636174696f6e000000020000000000000007636f6e7465787400000007d000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e746578740000000000000000000f7375625f696e766f636174696f6e7300000003ea000007d00000002b736f726f62616e5f73646b3a3a617574683a3a496e766f6b6572436f6e747261637441757468456e74727900000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e00000000000000002b736f726f62616e5f73646b3a3a617574683a3a496e766f6b6572436f6e747261637441757468456e74727900000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000028736f726f62616e5f73646b3a3a617574683a3a537562436f6e7472616374496e766f636174696f6e0000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e746578740000000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e74657874000000000002000000000000000a65786563757461626c650000000007d000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000000000000473616c74000003ee0000002000000002000000000000000000000020736f726f62616e5f73646b3a3a616464726573733a3a45786563757461626c65000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001c00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" } }, "ext": "v0" diff --git a/soroban-sdk/test_snapshots/tests/auth/auth_05_register_at_constructor/test.1.json b/soroban-sdk/test_snapshots/tests/auth/auth_05_register_at_constructor/test.1.json index e703b2c34..85cd5b94a 100644 --- a/soroban-sdk/test_snapshots/tests/auth/auth_05_register_at_constructor/test.1.json +++ b/soroban-sdk/test_snapshots/tests/auth/auth_05_register_at_constructor/test.1.json @@ -67,7 +67,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "372845afc0162e60d93c88cf89316b2e7c2835832a1459360a5d13939d34a63f" + "wasm": "3302fead76044fbe8f17dfa9e7d894eaf1d360a7eb338cf3d5fd45bffb7a3fd7" }, "storage": [ { @@ -110,8 +110,8 @@ } } }, - "hash": "372845afc0162e60d93c88cf89316b2e7c2835832a1459360a5d13939d34a63f", - "code": "0061736d0100000001130360017e017e60027e7e017e60037e7e7e017e021303016101300000016201690001016c015f00020302010005030100110621047f01418080c0000b7f00418580c0000b7f00418580c0000b7f00419080c0000b073905066d656d6f727902000d5f5f636f6e7374727563746f720003015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030a440142000240200042ff018342cd00510d00000b20001080808080001a418080c08000ad4220864204844284808080d000108180808000200042021082808080001a42020b0b0e0100418080c0000b0561646d696e00db150e636f6e747261637473706563763000000000000000000000000d5f5f636f6e7374727563746f7200000000000001000000000000000561646d696e000000000000130000000000000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d00000000f436f6e7472616374436f6e7465787400000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e74657874000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d00000000f436f6e7472616374436f6e7465787400000000000000000f7375625f696e766f636174696f6e7300000003ea000007d000000018496e766f6b6572436f6e747261637441757468456e747279000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000015537562436f6e7472616374496e766f636174696f6e0000000000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e7465787400000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001c00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + "hash": "3302fead76044fbe8f17dfa9e7d894eaf1d360a7eb338cf3d5fd45bffb7a3fd7", + "code": "0061736d0100000001130360017e017e60027e7e017e60037e7e7e017e021303016101300000016201690001016c015f00020302010005030100110621047f01418080c0000b7f00418580c0000b7f00418580c0000b7f00419080c0000b073905066d656d6f727902000d5f5f636f6e7374727563746f720003015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030a440142000240200042ff018342cd00510d00000b20001080808080001a418080c08000ad4220864204844284808080d000108180808000200042021082808080001a42020b0b0e0100418080c0000b0561646d696e00bb180e636f6e747261637473706563763000000000000000000000000d5f5f636f6e7374727563746f7200000000000001000000000000000561646d696e000000000000130000000000000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e00000000000000001a736f726f62616e5f73646b3a3a617574683a3a436f6e746578740000000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e746578740000000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e7465787400000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e0000000000000000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e74657874000000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000028736f726f62616e5f73646b3a3a617574683a3a537562436f6e7472616374496e766f636174696f6e000000020000000000000007636f6e7465787400000007d000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e746578740000000000000000000f7375625f696e766f636174696f6e7300000003ea000007d00000002b736f726f62616e5f73646b3a3a617574683a3a496e766f6b6572436f6e747261637441757468456e74727900000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e00000000000000002b736f726f62616e5f73646b3a3a617574683a3a496e766f6b6572436f6e747261637441757468456e74727900000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000028736f726f62616e5f73646b3a3a617574683a3a537562436f6e7472616374496e766f636174696f6e0000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e746578740000000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e74657874000000000002000000000000000a65786563757461626c650000000007d000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000000000000473616c74000003ee0000002000000002000000000000000000000020736f726f62616e5f73646b3a3a616464726573733a3a45786563757461626c65000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001c00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" } }, "ext": "v0" diff --git a/soroban-sdk/test_snapshots/tests/crypto_bls12_381/test_invoke_contract.1.json b/soroban-sdk/test_snapshots/tests/crypto_bls12_381/test_invoke_contract.1.json index 26a0b3e76..29caac5a4 100644 --- a/soroban-sdk/test_snapshots/tests/crypto_bls12_381/test_invoke_contract.1.json +++ b/soroban-sdk/test_snapshots/tests/crypto_bls12_381/test_invoke_contract.1.json @@ -18,7 +18,7 @@ } }, "executable": { - "wasm": "fd343758845eb29fbe3e0e1d6e27b1b79eed5d17573386913b8de7a5b74cb6d2" + "wasm": "1c8b2727f67b812c0112ec080d302f10b4225b41fd306611bdac9a7efb9fbd76" }, "constructor_args": [] } @@ -96,7 +96,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "fd343758845eb29fbe3e0e1d6e27b1b79eed5d17573386913b8de7a5b74cb6d2" + "wasm": "1c8b2727f67b812c0112ec080d302f10b4225b41fd306611bdac9a7efb9fbd76" }, "storage": null } @@ -107,20 +107,6 @@ }, "live_until": 4095 }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_code": { - "ext": "v0", - "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "code": "" - } - }, - "ext": "v0" - }, - "live_until": 4095 - }, { "entry": { "last_modified_ledger_seq": 0, @@ -144,8 +130,22 @@ } } }, - "hash": "fd343758845eb29fbe3e0e1d6e27b1b79eed5d17573386913b8de7a5b74cb6d2", - "code": "0061736d0100000001320960047e7e7e7e017e60017e017e60027e7e017e60000060037e7f7f0060017f0060027f7e0060017f017e60037f7f7f017f026711016d01610000016201380001016301380001016301340001016301650001016301610001016301360002016301630002016301670002017601330001017601310002016201310000016201330002016901610001017801300002016901720002017601670002031413030104050606060607020302020305080808080405017001020205030100110621047f01418080c0000b7f0041c480c0000b7f00419481c0000b7f0041a081c0000b075708066d656d6f727902000c64756d6d795f76657269667900120a66725f7665635f676574001a0667315f6d756c001c0667325f6d756c001d015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030907010041010b01110aa7171302000b870503027f047e017f23808080800041f0016b22012480808080004100210241002d008080c080001a0240034020024128460d01200141086a20026a4202370300200241086a21020c000b0b0240200042ff018342cc00520d002000419c80c08000ad422086420484200141086aad4220864204844284808080d0001080808080001a2001290308220042ff018342c800520d0020001081808080004280808080708342808080808006520d0020014190016a4100413010a1808080001a200020014190016a4130109380808000200141306a20014190016a413010a3808080001a200141306a10948080800020014190016a20012903101095808080002001280290010d00200129039801210320014190016a410041e00010a1808080001a200320014190016a41e000109380808000200141306a20014190016a41e00010a3808080001a200141306a109480808000200141306a41306a10948080800020014190016a20012903181096808080002001280290010d00200129039801210420014190016a20012903201097808080002001280290010d00200129039801210520014190016a20012903281098808080002001280290014101460d00200129039801210620001082808080001083808080001a20031084808080001085808080001a200520041086808080002103200620041087808080002104420221004101210203402000210520024101712107410021022003210020070d000b200120053703900120014190016a1099808080002105420221004101210203402000210320024101712107410021022004210020070d000b2001200337039001200520014190016a1099808080001088808080002100200141f0016a2480808080002000420151ad0f0b000b1f00200042042001ad4220864204842002ad422086420484108b808080001a0b24000240200041e480c08000413010a080808000417f4a0d000f0b410e109f80808000000b4201017e420121020240200142ff018342c800520d002001108180808000428080808070834280808080800c520d0020002001370308420021020b200020023703000ba60102017f017e024002402001a741ff0171220241c600460d00420121032002410c470d010b41c480c08000ad42208642048442848080808004108c80808000108d8080800021030240024002400240200142ce0083420c520d00200342ff0183420c510d010b20012003108e80808000427f550d010c020b20014208882003420888540d010b20012003108f8080800021010b20002001370308420021030b200020033703000b4d01017f23808080800041106b22022480808080002002200110958080800042012101024020022802000d0020002002290308370308420021010b20002001370300200241106a2480808080000b4201017e420121020240200142ff018342c800520d0020011081808080004280808080708342808080808018520d0020002001370308420021020b200020023703000b17002000ad4220864204844284808080101090808080000b980101017f23808080800041106b2202248080808000200241818080800036020020022802001a024002400240200042ff018342cb00520d00200142ff01834204520d0020001089808080004220882001422088580d0120022000200142848080807083108a8080800010968080800020022802004101470d020b000b109b80808000000b20022903082100200241106a24808080800020000b0b00412b109f80808000000b6501017f23808080800041106b220224808080800020022000109780808000024020022802004101460d00200229030821002002200110968080800020022802004101460d00200020022903081086808080002100200241106a24808080800020000f0b000b6501017f23808080800041106b220224808080800020022000109880808000024020022802004101460d00200229030821002002200110968080800020022802004101460d00200020022903081087808080002100200241106a24808080800020000f0b000b0300000b0900109e80808000000b4a01037f4100210302402002450d000240034020002d0000220420012d00002205470d01200041016a2100200141016a21012002417f6a2202450d020c000b0b200420056b21030b20030baa0301057f02400240200241104f0d00200021030c010b024020002000410020006b41037122046a22054f0d002004417f6a21062000210302402004450d0020042107200021030340200320013a0000200341016a21032007417f6a22070d000b0b20064107490d000340200320013a0000200341076a20013a0000200341066a20013a0000200341056a20013a0000200341046a20013a0000200341036a20013a0000200341026a20013a0000200341016a20013a0000200341086a22032005470d000b0b024020052005200220046b2202417c716a22034f0d00200141ff017141818284086c2107034020052007360200200541046a22052003490d000b0b200241037121020b02402003200320026a22074f0d002002417f6a2104024020024107712205450d000340200320013a0000200341016a21032005417f6a22050d000b0b20044107490d000340200320013a0000200341076a20013a0000200341066a20013a0000200341056a20013a0000200341046a20013a0000200341036a20013a0000200341026a20013a0000200341016a20013a0000200341086a22032007470d000b0b20000bb907010c7f23808080800041106b210302400240200241104f0d00200021040c010b024020002000410020006b41037122056a22064f0d002005417f6a2107200021042001210802402005450d002005210920002104200121080340200420082d00003a0000200841016a2108200441016a21042009417f6a22090d000b0b20074107490d000340200420082d00003a0000200441016a200841016a2d00003a0000200441026a200841026a2d00003a0000200441036a200841036a2d00003a0000200441046a200841046a2d00003a0000200441056a200841056a2d00003a0000200441066a200841066a2d00003a0000200441076a200841076a2d00003a0000200841086a2108200441086a22042006470d000b0b2006200220056b2209417c7122076a210402400240200120056a220841037122010d00200620044f0d0120082101034020062001280200360200200141046a2101200641046a22062004490d000c020b0b410021022003410036020c2003410c6a20017221050240410420016b220a410171450d00200520082d00003a0000410121020b0240200a410271450d00200520026a200820026a2f01003b01000b200820016b21022001410374210b200328020c210502400240200641046a2004490d002006210c0c010b4100200b6b411871210d034020062005200b76200241046a22022802002205200d7472360200200641086a210a200641046a220c2106200a2004490d000b0b41002106200341003a0008200341003a00060240024020014101470d00200341086a210d410021014100210a4100210e0c010b200241056a2d0000210a2003200241046a2d000022013a0008200a410874210a4102210e200341066a210d0b02402008410171450d00200d200241046a200e6a2d00003a000020032d0006411074210620032d000821010b200c200a200672200141ff0171724100200b6b411871742005200b76723602000b20094103712102200820076a21010b02402004200420026a22064f0d002002417f6a2109024020024107712208450d000340200420012d00003a0000200141016a2101200441016a21042008417f6a22080d000b0b20094107490d000340200420012d00003a0000200441016a200141016a2d00003a0000200441026a200141026a2d00003a0000200441036a200141036a2d00003a0000200441046a200141046a2d00003a0000200441056a200141056a2d00003a0000200441066a200141066a2d00003a0000200441076a200141076a2d00003a0000200141086a2101200441086a22042006470d000b0b20000b0e0020002001200210a2808080000b0b9e010100418080c0000b940153704563563185570041dc7eb72266706670326672673167320000000e00100002000000100010000300000013001000020000001500100002000000170010000200000073eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff000000011a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab00cb180e636f6e747261637473706563763000000000000000000000000667315f6d756c000000000002000000000000000170000000000003ee000000600000000000000001730000000000000c00000001000003ee0000006000000000000000000000000667325f6d756c000000000002000000000000000170000000000003ee000000c00000000000000001730000000000000c00000001000003ee000000c00000000100000000000000000000000a44756d6d7950726f6f66000000000005000000000000000266700000000003ee00000030000000000000000366703200000003ee000000600000000000000002667200000000000c000000000000000267310000000003ee00000060000000000000000267320000000003ee000000c000000000000000000000000a66725f7665635f676574000000000002000000000000000676616c7565730000000003ea0000000c0000000000000005696e64657800000000000004000000010000000c00000000000000000000000c64756d6d795f76657269667900000001000000000000000570726f6f66000000000007d00000000a44756d6d7950726f6f660000000000010000000100000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d00000000f436f6e7472616374436f6e7465787400000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e74657874000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d00000000f436f6e7472616374436f6e7465787400000000000000000f7375625f696e766f636174696f6e7300000003ea000007d000000018496e766f6b6572436f6e747261637441757468456e747279000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000015537562436f6e7472616374496e766f636174696f6e0000000000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e7465787400000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001c00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + "hash": "1c8b2727f67b812c0112ec080d302f10b4225b41fd306611bdac9a7efb9fbd76", + "code": "0061736d0100000001320960047e7e7e7e017e60017e017e60027e7e017e60000060037e7f7f0060017f0060027f7e0060017f017e60037f7f7f017f026711016d01610000016201380001016301380001016301340001016301650001016301610001016301360002016301630002016301670002017601330001017601310002016201310000016201330002016901610001017801300002016901720002017601670002031413030104050606060607020302020305080808080405017001020205030100110621047f01418080c0000b7f0041c480c0000b7f00419481c0000b7f0041a081c0000b075708066d656d6f727902000c64756d6d795f76657269667900120a66725f7665635f676574001a0667315f6d756c001c0667325f6d756c001d015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030907010041010b01110aa7171302000b870503027f047e017f23808080800041f0016b22012480808080004100210241002d008080c080001a0240034020024128460d01200141086a20026a4202370300200241086a21020c000b0b0240200042ff018342cc00520d002000419c80c08000ad422086420484200141086aad4220864204844284808080d0001080808080001a2001290308220042ff018342c800520d0020001081808080004280808080708342808080808006520d0020014190016a4100413010a1808080001a200020014190016a4130109380808000200141306a20014190016a413010a3808080001a200141306a10948080800020014190016a20012903101095808080002001280290010d00200129039801210320014190016a410041e00010a1808080001a200320014190016a41e000109380808000200141306a20014190016a41e00010a3808080001a200141306a109480808000200141306a41306a10948080800020014190016a20012903181096808080002001280290010d00200129039801210420014190016a20012903201097808080002001280290010d00200129039801210520014190016a20012903281098808080002001280290014101460d00200129039801210620001082808080001083808080001a20031084808080001085808080001a200520041086808080002103200620041087808080002104420221004101210203402000210520024101712107410021022003210020070d000b200120053703900120014190016a1099808080002105420221004101210203402000210320024101712107410021022004210020070d000b2001200337039001200520014190016a1099808080001088808080002100200141f0016a2480808080002000420151ad0f0b000b1f00200042042001ad4220864204842002ad422086420484108b808080001a0b24000240200041e480c08000413010a080808000417f4a0d000f0b410e109f80808000000b4201017e420121020240200142ff018342c800520d002001108180808000428080808070834280808080800c520d0020002001370308420021020b200020023703000ba60102017f017e024002402001a741ff0171220241c600460d00420121032002410c470d010b41c480c08000ad42208642048442848080808004108c80808000108d8080800021030240024002400240200142ce0083420c520d00200342ff0183420c510d010b20012003108e80808000427f550d010c020b20014208882003420888540d010b20012003108f8080800021010b20002001370308420021030b200020033703000b4d01017f23808080800041106b22022480808080002002200110958080800042012101024020022802000d0020002002290308370308420021010b20002001370300200241106a2480808080000b4201017e420121020240200142ff018342c800520d0020011081808080004280808080708342808080808018520d0020002001370308420021020b200020023703000b17002000ad4220864204844284808080101090808080000b980101017f23808080800041106b2202248080808000200241818080800036020020022802001a024002400240200042ff018342cb00520d00200142ff01834204520d0020001089808080004220882001422088580d0120022000200142848080807083108a8080800010968080800020022802004101470d020b000b109b80808000000b20022903082100200241106a24808080800020000b0b00412b109f80808000000b6501017f23808080800041106b220224808080800020022000109780808000024020022802004101460d00200229030821002002200110968080800020022802004101460d00200020022903081086808080002100200241106a24808080800020000f0b000b6501017f23808080800041106b220224808080800020022000109880808000024020022802004101460d00200229030821002002200110968080800020022802004101460d00200020022903081087808080002100200241106a24808080800020000f0b000b0300000b0900109e80808000000b4a01037f4100210302402002450d000240034020002d0000220420012d00002205470d01200041016a2100200141016a21012002417f6a2202450d020c000b0b200420056b21030b20030baa0301057f02400240200241104f0d00200021030c010b024020002000410020006b41037122046a22054f0d002004417f6a21062000210302402004450d0020042107200021030340200320013a0000200341016a21032007417f6a22070d000b0b20064107490d000340200320013a0000200341076a20013a0000200341066a20013a0000200341056a20013a0000200341046a20013a0000200341036a20013a0000200341026a20013a0000200341016a20013a0000200341086a22032005470d000b0b024020052005200220046b2202417c716a22034f0d00200141ff017141818284086c2107034020052007360200200541046a22052003490d000b0b200241037121020b02402003200320026a22074f0d002002417f6a2104024020024107712205450d000340200320013a0000200341016a21032005417f6a22050d000b0b20044107490d000340200320013a0000200341076a20013a0000200341066a20013a0000200341056a20013a0000200341046a20013a0000200341036a20013a0000200341026a20013a0000200341016a20013a0000200341086a22032007470d000b0b20000bb907010c7f23808080800041106b210302400240200241104f0d00200021040c010b024020002000410020006b41037122056a22064f0d002005417f6a2107200021042001210802402005450d002005210920002104200121080340200420082d00003a0000200841016a2108200441016a21042009417f6a22090d000b0b20074107490d000340200420082d00003a0000200441016a200841016a2d00003a0000200441026a200841026a2d00003a0000200441036a200841036a2d00003a0000200441046a200841046a2d00003a0000200441056a200841056a2d00003a0000200441066a200841066a2d00003a0000200441076a200841076a2d00003a0000200841086a2108200441086a22042006470d000b0b2006200220056b2209417c7122076a210402400240200120056a220841037122010d00200620044f0d0120082101034020062001280200360200200141046a2101200641046a22062004490d000c020b0b410021022003410036020c2003410c6a20017221050240410420016b220a410171450d00200520082d00003a0000410121020b0240200a410271450d00200520026a200820026a2f01003b01000b200820016b21022001410374210b200328020c210502400240200641046a2004490d002006210c0c010b4100200b6b411871210d034020062005200b76200241046a22022802002205200d7472360200200641086a210a200641046a220c2106200a2004490d000b0b41002106200341003a0008200341003a00060240024020014101470d00200341086a210d410021014100210a4100210e0c010b200241056a2d0000210a2003200241046a2d000022013a0008200a410874210a4102210e200341066a210d0b02402008410171450d00200d200241046a200e6a2d00003a000020032d0006411074210620032d000821010b200c200a200672200141ff0171724100200b6b411871742005200b76723602000b20094103712102200820076a21010b02402004200420026a22064f0d002002417f6a2109024020024107712208450d000340200420012d00003a0000200141016a2101200441016a21042008417f6a22080d000b0b20094107490d000340200420012d00003a0000200441016a200141016a2d00003a0000200441026a200141026a2d00003a0000200441036a200141036a2d00003a0000200441046a200141046a2d00003a0000200441056a200141056a2d00003a0000200441066a200141066a2d00003a0000200441076a200141076a2d00003a0000200141086a2101200441086a22042006470d000b0b20000b0e0020002001200210a2808080000b0b9e010100418080c0000b94015370456356310e18eaf1972e690d66706670326672673167320000000e00100002000000100010000300000013001000020000001500100002000000170010000200000073eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff000000011a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab00bb1b0e636f6e747261637473706563763000000000000000000000000667315f6d756c000000000002000000000000000170000000000003ee000000600000000000000001730000000000000c00000001000003ee0000006000000000000000000000000667325f6d756c000000000002000000000000000170000000000003ee000000c00000000000000001730000000000000c00000001000003ee000000c000000001000000000000000000000014746573745f626c733a3a44756d6d7950726f6f6600000005000000000000000266700000000003ee00000030000000000000000366703200000003ee000000600000000000000002667200000000000c000000000000000267310000000003ee00000060000000000000000267320000000003ee000000c000000000000000000000000a66725f7665635f676574000000000002000000000000000676616c7565730000000003ea0000000c0000000000000005696e64657800000000000004000000010000000c00000000000000000000000c64756d6d795f76657269667900000001000000000000000570726f6f66000000000007d000000014746573745f626c733a3a44756d6d7950726f6f66000000010000000100000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e00000000000000001a736f726f62616e5f73646b3a3a617574683a3a436f6e746578740000000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e746578740000000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e7465787400000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e0000000000000000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e74657874000000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000028736f726f62616e5f73646b3a3a617574683a3a537562436f6e7472616374496e766f636174696f6e000000020000000000000007636f6e7465787400000007d000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e746578740000000000000000000f7375625f696e766f636174696f6e7300000003ea000007d00000002b736f726f62616e5f73646b3a3a617574683a3a496e766f6b6572436f6e747261637441757468456e74727900000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e00000000000000002b736f726f62616e5f73646b3a3a617574683a3a496e766f6b6572436f6e747261637441757468456e74727900000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000028736f726f62616e5f73646b3a3a617574683a3a537562436f6e7472616374496e766f636174696f6e0000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e746578740000000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e74657874000000000002000000000000000a65786563757461626c650000000007d000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000000000000473616c74000003ee0000002000000002000000000000000000000020736f726f62616e5f73646b3a3a616464726573733a3a45786563757461626c65000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001c00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" } }, "ext": "v0" diff --git a/soroban-spec-rust/src/lib.rs b/soroban-spec-rust/src/lib.rs index dcf59e3b3..4dc5ebf38 100644 --- a/soroban-spec-rust/src/lib.rs +++ b/soroban-spec-rust/src/lib.rs @@ -107,7 +107,14 @@ pub fn generate_without_file_with_options( specs: &[ScSpecEntry], opts: &GenerateOptions, ) -> Result { - let specs = apply_error_udt_override(specs); + // The spec names each user-defined type by its fully qualified name + // (`mycrate::mymod::MyType`), while the generated code names it by a bare + // identifier, so the names are reduced to simple names before generation, + // rewriting references to keep them matched up with the types they refer + // to. Simplifying an already-simple spec changes nothing, so a caller that + // simplified first (to report on the renames) generates the same code. + let specs = soroban_spec::simplify::simplify(specs).spec; + let specs = apply_error_udt_override(&specs); let specs: &[ScSpecEntry] = &specs; let mut spec_fns = Vec::new(); @@ -563,7 +570,7 @@ pub enum MyError { }; assert_eq!( u.name.to_utf8_string().unwrap(), - "MyError", + "test_add_u64::MyError", "error_type should be MyError UDT" ); } @@ -721,4 +728,75 @@ pub enum Error { "#, ); } + + /// Two user-defined error enums sharing the simple name `Error` + /// (`a::Error`, `b::Error`), taken end-to-end through name + /// simplification, the error-udt override, and code generation. + #[test] + fn test_two_error_enums_sharing_a_simple_name() { + use stellar_xdr::{ + ScSpecEntry, ScSpecFunctionV0, ScSpecTypeDef, ScSpecTypeResult, ScSpecTypeUdt, + ScSpecUdtErrorEnumCaseV0, ScSpecUdtErrorEnumV0, + }; + + let error_enum = |name: &str| { + ScSpecEntry::UdtErrorEnumV0(ScSpecUdtErrorEnumV0 { + doc: "".try_into().unwrap(), + lib: "".try_into().unwrap(), + name: name.try_into().unwrap(), + cases: [ScSpecUdtErrorEnumCaseV0 { + doc: "".try_into().unwrap(), + name: "Failed".try_into().unwrap(), + value: 1, + }] + .try_into() + .unwrap(), + }) + }; + let func = |name: &str, error: ScSpecTypeDef| { + ScSpecEntry::FunctionV0(ScSpecFunctionV0 { + doc: "".try_into().unwrap(), + name: name.try_into().unwrap(), + inputs: [].try_into().unwrap(), + outputs: [ScSpecTypeDef::Result(Box::new(ScSpecTypeResult { + ok_type: Box::new(ScSpecTypeDef::U32), + error_type: Box::new(error), + }))] + .try_into() + .unwrap(), + }) + }; + let entries = [ + error_enum("mycrate::a::Error"), + error_enum("mycrate::b::Error"), + func( + "use_a", + ScSpecTypeDef::Udt(ScSpecTypeUdt { + name: "mycrate::a::Error".try_into().unwrap(), + }), + ), + func( + "use_b", + ScSpecTypeDef::Udt(ScSpecTypeUdt { + name: "mycrate::b::Error".try_into().unwrap(), + }), + ), + func("use_builtin", ScSpecTypeDef::Error), + ]; + + let code = super::generate_without_file(&entries) + .unwrap() + .to_formatted_string() + .unwrap(); + + // The first enum claims the simple name; the second is numbered. + assert!(code.contains("pub enum Error {"), "{code}"); + assert!(code.contains("pub enum Error2 {"), "{code}"); + // References follow their type: `use_a` resolves to `Error`, `use_b` + // to `Error2`, and the built-in error resolves through the error-udt + // override to the enum that claimed `Error`. + assert!(code.contains("Result"), "{code}"); + assert!(code.contains("Result"), "{code}"); + assert_eq!(code.matches("Result").count(), 2, "{code}"); + } } diff --git a/soroban-spec/src/lib.rs b/soroban-spec/src/lib.rs index 9f454f1f2..3a56b4e9b 100644 --- a/soroban-spec/src/lib.rs +++ b/soroban-spec/src/lib.rs @@ -1,2 +1,3 @@ pub mod read; pub mod shaking; +pub mod simplify; diff --git a/soroban-spec/src/simplify.rs b/soroban-spec/src/simplify.rs new file mode 100644 index 000000000..ffe2911d9 --- /dev/null +++ b/soroban-spec/src/simplify.rs @@ -0,0 +1,375 @@ +use stellar_xdr::{ScSpecEntry, ScSpecTypeDef, ScSpecUdtUnionCaseV0}; + +/// The most bytes a spec type name can hold (`SC_SPEC_TYPE_NAME_LIMIT`), which +/// bounds the names the numbering below may produce. +const TYPE_NAME_LIMIT: usize = 256; + +/// The most bytes an event name can hold (`SC_SPEC_TYPE_NAME_LIMIT`). +const EVENT_NAME_LIMIT: usize = 256; + +/// A spec with its user-defined type names reduced to simple names, along +/// with how each type's name was resolved. +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct Simplified { + /// The spec entries with every user-defined type name reduced. + pub spec: Vec, + /// How each type the spec defines resolved to its simple name, in the + /// order the types are defined. + pub renames: Vec, +} + +/// How one user-defined type's name resolved during simplification. +/// +/// Spec names are byte strings that are not guaranteed to be valid UTF-8, so +/// the names are byte strings here too, preserved exactly as they appear in +/// the spec. Decode lossily only for display. +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct Rename { + /// The name as it appears in the input spec. + pub from: Vec, + /// The name the type has in the simplified spec. + pub to: Vec, +} + +impl Rename { + /// Whether the type's name changed at all. + pub fn renamed(&self) -> bool { + self.from != self.to + } + + /// Whether the type could not keep the last segment of its name because + /// another type claimed it first. + pub fn collision(&self) -> bool { + self.to != last_segment(&self.from) + } +} + +/// The last `::`-separated segment of a fully qualified type name. +fn last_segment(name: &[u8]) -> &[u8] { + name.windows(2) + .rposition(|w| w == b"::") + .map_or(name, |i| &name[i + 2..]) +} + +/// Reduces every user-defined type name in the spec from its fully qualified +/// form (`mycrate::mymod::MyType`) to its simple name (`MyType`), rewriting +/// every reference to a type to follow the type to its new name. +/// +/// The first type to claim a simple name keeps it, so two types whose names +/// share a last segment stay distinct: the rest are numbered (`MyType2`, +/// `MyType3`, …), stepping over names claimed by other types. A spec whose +/// type names are already simple comes back unchanged. +/// +/// A reference to a type the spec does not define is reduced to its last +/// segment, without claiming a name. +/// +/// Names are treated as byte strings throughout and preserved exactly; the +/// spec does not guarantee valid UTF-8. A type whose numbered name cannot fit +/// the spec's name limit keeps its original name. +pub fn simplify(spec: &[ScSpecEntry]) -> Simplified { + // The names the spec defines, in definition order, each with the most + // bytes its entry's name field can hold. Events define a name too: the + // generated bindings declare a type for each event, so an event and a + // type sharing a simple name are a collision like any other. + let defined: Vec<(Vec, usize)> = spec + .iter() + .filter_map(|entry| match entry { + ScSpecEntry::UdtStructV0(s) => Some((s.name.to_vec(), TYPE_NAME_LIMIT)), + ScSpecEntry::UdtUnionV0(u) => Some((u.name.to_vec(), TYPE_NAME_LIMIT)), + ScSpecEntry::UdtEnumV0(e) => Some((e.name.to_vec(), TYPE_NAME_LIMIT)), + ScSpecEntry::UdtErrorEnumV0(e) => Some((e.name.to_vec(), TYPE_NAME_LIMIT)), + ScSpecEntry::EventV0(e) => Some((e.name.to_vec(), EVENT_NAME_LIMIT)), + _ => None, + }) + .collect(); + + // The first type to claim a last segment keeps it, so a type only ever + // loses its own name to one defined before it, never to a number handed + // to a type that collided with something else. + let mut taken = std::collections::HashSet::new(); + let colliding: Vec<&(Vec, usize)> = defined + .iter() + .filter(|(name, _)| !taken.insert(last_segment(name).to_vec())) + .collect(); + + let mut numbered = std::collections::HashMap::new(); + for (name, limit) in colliding { + let base = last_segment(name); + let mut n = 1u32; + let simple = loop { + n += 1; + let mut simple = base.to_vec(); + simple.extend_from_slice(n.to_string().as_bytes()); + if simple.len() > *limit { + // No numbered name fits, so the type keeps its original name. + break name.clone(); + } + if taken.insert(simple.clone()) { + break simple; + } + }; + numbered.insert(name.clone(), simple); + } + + let renames: Vec = defined + .iter() + .map(|(name, _)| Rename { + from: name.clone(), + to: numbered + .get(name) + .cloned() + .unwrap_or_else(|| last_segment(name).to_vec()), + }) + .collect(); + + let to: std::collections::HashMap<&[u8], &[u8]> = renames + .iter() + .map(|r| (r.from.as_slice(), r.to.as_slice())) + .collect(); + let resolve = |name: &[u8]| -> Vec { + to.get(name) + .map_or_else(|| last_segment(name).to_vec(), |t| t.to_vec()) + }; + + // Every resolved name is a fragment of a name that fit the spec, or was + // length-checked when numbered, so conversion back cannot fail. + let mut spec = spec.to_vec(); + for entry in spec.iter_mut() { + match entry { + ScSpecEntry::FunctionV0(f) => { + for input in f.inputs.iter_mut() { + rewrite_ty(&mut input.type_, &resolve); + } + for output in f.outputs.iter_mut() { + rewrite_ty(output, &resolve); + } + } + ScSpecEntry::UdtStructV0(s) => { + s.name = resolve(&s.name).try_into().unwrap(); + for field in s.fields.iter_mut() { + rewrite_ty(&mut field.type_, &resolve); + } + } + ScSpecEntry::UdtUnionV0(u) => { + u.name = resolve(&u.name).try_into().unwrap(); + for case in u.cases.iter_mut() { + if let ScSpecUdtUnionCaseV0::TupleV0(t) = case { + for ty in t.type_.iter_mut() { + rewrite_ty(ty, &resolve); + } + } + } + } + ScSpecEntry::UdtEnumV0(e) => { + e.name = resolve(&e.name).try_into().unwrap(); + } + ScSpecEntry::UdtErrorEnumV0(e) => { + e.name = resolve(&e.name).try_into().unwrap(); + } + ScSpecEntry::EventV0(e) => { + e.name = resolve(&e.name).try_into().unwrap(); + for p in e.params.iter_mut() { + rewrite_ty(&mut p.type_, &resolve); + } + } + } + } + + Simplified { spec, renames } +} + +/// Rewrites the name of every user-defined type reference in the type. +fn rewrite_ty(t: &mut ScSpecTypeDef, resolve: &dyn Fn(&[u8]) -> Vec) { + match t { + ScSpecTypeDef::Udt(u) => { + u.name = resolve(&u.name).try_into().unwrap(); + } + ScSpecTypeDef::Option(o) => rewrite_ty(&mut o.value_type, resolve), + ScSpecTypeDef::Result(r) => { + rewrite_ty(&mut r.ok_type, resolve); + rewrite_ty(&mut r.error_type, resolve); + } + ScSpecTypeDef::Vec(v) => rewrite_ty(&mut v.element_type, resolve), + ScSpecTypeDef::Map(m) => { + rewrite_ty(&mut m.key_type, resolve); + rewrite_ty(&mut m.value_type, resolve); + } + ScSpecTypeDef::Tuple(tu) => { + for vt in tu.value_types.iter_mut() { + rewrite_ty(vt, resolve); + } + } + _ => {} + } +} + +#[cfg(test)] +mod test { + use super::{simplify, Rename}; + use stellar_xdr::{ + ScSpecEntry, ScSpecTypeDef, ScSpecTypeUdt, ScSpecUdtStructFieldV0, ScSpecUdtStructV0, + }; + + fn struct_entry_bytes(name: &[u8], field_type_names: &[&[u8]]) -> ScSpecEntry { + ScSpecEntry::UdtStructV0(ScSpecUdtStructV0 { + doc: "".try_into().unwrap(), + lib: "".try_into().unwrap(), + name: name.try_into().unwrap(), + fields: field_type_names + .iter() + .map(|n| ScSpecUdtStructFieldV0 { + doc: "".try_into().unwrap(), + name: "f".try_into().unwrap(), + type_: ScSpecTypeDef::Udt(ScSpecTypeUdt { + name: (*n).try_into().unwrap(), + }), + }) + .collect::>() + .try_into() + .unwrap(), + }) + } + + fn struct_entry(name: &str, field_type_names: &[&str]) -> ScSpecEntry { + struct_entry_bytes( + name.as_bytes(), + &field_type_names + .iter() + .map(|n| n.as_bytes()) + .collect::>(), + ) + } + + fn names(spec: &[ScSpecEntry]) -> Vec<(Vec, Vec>)> { + spec.iter() + .map(|e| match e { + ScSpecEntry::UdtStructV0(s) => ( + s.name.to_vec(), + s.fields + .iter() + .map(|f| match &f.type_ { + ScSpecTypeDef::Udt(u) => u.name.to_vec(), + _ => unreachable!(), + }) + .collect(), + ), + _ => unreachable!(), + }) + .collect() + } + + #[test] + fn reduces_a_qualified_name_to_its_last_segment() { + let spec = [struct_entry("mycrate::mymod::MyType", &[])]; + let simplified = simplify(&spec); + assert_eq!(names(&simplified.spec), [(b"MyType".to_vec(), vec![])]); + assert_eq!( + simplified.renames, + [Rename { + from: b"mycrate::mymod::MyType".to_vec(), + to: b"MyType".to_vec(), + }] + ); + assert!(simplified.renames[0].renamed()); + assert!(!simplified.renames[0].collision()); + } + + #[test] + fn numbers_a_simple_name_already_claimed_and_matches_up_references() { + let spec = [ + struct_entry("mycrate::mymod::MyType", &["mycrate::myothermod::MyType"]), + struct_entry("mycrate::myothermod::MyType", &["mycrate::mymod::MyType"]), + ]; + let simplified = simplify(&spec); + assert_eq!( + names(&simplified.spec), + [ + (b"MyType".to_vec(), vec![b"MyType2".to_vec()]), + (b"MyType2".to_vec(), vec![b"MyType".to_vec()]), + ] + ); + assert!(!simplified.renames[0].collision()); + assert!(simplified.renames[1].collision()); + } + + #[test] + fn steps_over_a_name_claimed_by_a_type_of_that_name() { + // `MyType2` is a type in its own right, so the numbering steps over it + // rather than colliding with it in turn. + let spec = [ + struct_entry("a::MyType", &[]), + struct_entry("b::MyType2", &[]), + struct_entry("c::MyType", &[]), + ]; + let simplified = simplify(&spec); + assert_eq!( + simplified + .renames + .iter() + .map(|r| r.to.as_slice()) + .collect::>(), + [b"MyType".as_slice(), b"MyType2", b"MyType3"], + ); + } + + #[test] + fn a_spec_with_simple_names_comes_back_unchanged() { + let spec = [ + struct_entry("MyType", &["MyOther"]), + struct_entry("MyOther", &[]), + ]; + let simplified = simplify(&spec); + assert_eq!(simplified.spec, spec); + assert!(simplified.renames.iter().all(|r| !r.renamed())); + } + + #[test] + fn a_simple_name_keeps_its_claim_over_a_later_qualified_one() { + let spec = [struct_entry("MyType", &[]), struct_entry("a::MyType", &[])]; + let simplified = simplify(&spec); + assert_eq!( + simplified + .renames + .iter() + .map(|r| r.to.as_slice()) + .collect::>(), + [b"MyType".as_slice(), b"MyType2"], + ); + } + + #[test] + fn a_reference_to_an_undefined_type_reduces_without_claiming() { + let spec = [struct_entry("a::MyType", &["elsewhere::Other"])]; + let simplified = simplify(&spec); + assert_eq!( + names(&simplified.spec), + [(b"MyType".to_vec(), vec![b"Other".to_vec()])] + ); + assert_eq!(simplified.renames.len(), 1); + } + + #[test] + fn a_name_that_is_not_utf8_is_preserved_byte_for_byte() { + // Spec names are byte strings with no UTF-8 guarantee. A lossy decode + // would swap each invalid byte for a multi-byte replacement character, + // changing the name and potentially overflowing the name limit. + let name = b"mycrate::\xff\xfeType"; + let spec = [struct_entry_bytes(name, &[name])]; + let simplified = simplify(&spec); + assert_eq!( + names(&simplified.spec), + [(b"\xff\xfeType".to_vec(), vec![b"\xff\xfeType".to_vec()])] + ); + } + + #[test] + fn a_name_whose_numbered_form_cannot_fit_keeps_its_original_name() { + let long = "x".repeat(256); + let spec = [ + struct_entry(&long, &[]), + struct_entry_bytes(long.as_bytes(), &[]), + ]; + let simplified = simplify(&spec); + assert_eq!(simplified.renames[1].to.as_slice(), long.as_bytes()); + } +} diff --git a/stellar-asset-spec/Cargo.toml b/stellar-asset-spec/Cargo.toml index a4597be98..437606e4b 100644 --- a/stellar-asset-spec/Cargo.toml +++ b/stellar-asset-spec/Cargo.toml @@ -20,3 +20,4 @@ soroban-token-spec = { workspace = true } [dev-dependencies] soroban-sdk = { workspace = true, features = ["testutils"] } +soroban-spec = { workspace = true } diff --git a/stellar-asset-spec/src/tests/spec.rs b/stellar-asset-spec/src/tests/spec.rs index 28ba50b1e..0e4ec1bd3 100644 --- a/stellar-asset-spec/src/tests/spec.rs +++ b/stellar-asset-spec/src/tests/spec.rs @@ -6,6 +6,7 @@ use soroban_sdk::xdr::{ ScSpecTypeDef, StringM, }; use std::collections::HashSet; +use std::vec::Vec; #[test] fn test_stellar_asset_spec_xdr_len() { @@ -58,7 +59,10 @@ fn test_stellar_asset_spec_includes_token_spec() -> Result<(), Error> { // Read token spec entries, strip docs, and add sep0011_asset to event topics. let token_xdr = soroban_token_spec::xdr(); let token_cursor = std::io::Cursor::new(token_xdr); - let token_entries: HashSet = + // Each spec defines its entries in its own crate, so their fully + // qualified type and event names differ even where the entries otherwise + // match; names are reduced to simple names before comparing. + let token_entries: Vec = ScSpecEntry::read_xdr_iter(&mut Limited::new(token_cursor, Limits::none())) .map(|e| { e.map(|mut e| { @@ -69,12 +73,16 @@ fn test_stellar_asset_spec_includes_token_spec() -> Result<(), Error> { e }) }) - .collect::, _>>()?; + .collect::, _>>()?; + let token_entries: HashSet = soroban_spec::simplify::simplify(&token_entries) + .spec + .into_iter() + .collect(); // Read stellar asset spec entries and strip docs. let stellar_asset_xdr = crate::xdr(); let stellar_asset_cursor = std::io::Cursor::new(stellar_asset_xdr); - let stellar_asset_entries: HashSet = + let stellar_asset_entries: Vec = ScSpecEntry::read_xdr_iter(&mut Limited::new(stellar_asset_cursor, Limits::none())) .map(|e| { e.map(|mut e| { @@ -82,7 +90,12 @@ fn test_stellar_asset_spec_includes_token_spec() -> Result<(), Error> { e }) }) - .collect::, _>>()?; + .collect::, _>>()?; + let stellar_asset_entries: HashSet = + soroban_spec::simplify::simplify(&stellar_asset_entries) + .spec + .into_iter() + .collect(); // Check that all token entries (with sep0011_asset added to events) are // present in the stellar asset spec (which uses SAC-specific event types diff --git a/tests-expanded/test_account_tests.rs b/tests-expanded/test_account_tests.rs index 41bd7f7fa..b382ff2b3 100644 --- a/tests-expanded/test_account_tests.rs +++ b/tests-expanded/test_account_tests.rs @@ -50,6 +50,12 @@ impl ::core::cmp::Ord for Error { ::core::cmp::Ordering::Equal } } +impl Error { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_account::Error" + } +} pub static __SPEC_XDR_TYPE_ERROR: [u8; Error::__SPEC_XDR_VIEW.const_xdr_len()] = Error::spec_xdr(); impl Error { const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = @@ -57,7 +63,7 @@ impl Error { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Error"), + name: soroban_sdk::xdr::StringMView::new_str(Error::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -363,7 +369,9 @@ impl Contract { &soroban_sdk::xdr::ScSpecTypeVecView { element_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"Context"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, diff --git a/tests-expanded/test_account_wasm32v1-none.rs b/tests-expanded/test_account_wasm32v1-none.rs index b316cc08b..b10ad5d33 100644 --- a/tests-expanded/test_account_wasm32v1-none.rs +++ b/tests-expanded/test_account_wasm32v1-none.rs @@ -50,6 +50,12 @@ impl ::core::cmp::Ord for Error { ::core::cmp::Ordering::Equal } } +impl Error { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_account::Error" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_ERROR: [u8; Error::__SPEC_XDR_VIEW.const_xdr_len()] = Error::spec_xdr(); impl Error { @@ -58,7 +64,7 @@ impl Error { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Error"), + name: soroban_sdk::xdr::StringMView::new_str(Error::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -258,7 +264,9 @@ impl Contract { &soroban_sdk::xdr::ScSpecTypeVecView { element_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"Context"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, diff --git a/tests-expanded/test_add_u64_tests.rs b/tests-expanded/test_add_u64_tests.rs index 7bd34b9bd..a26e84cb8 100644 --- a/tests-expanded/test_add_u64_tests.rs +++ b/tests-expanded/test_add_u64_tests.rs @@ -155,6 +155,12 @@ impl ::core::cmp::PartialEq for Error { true } } +impl Error { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_add_u64::Error" + } +} pub static __SPEC_XDR_TYPE_ERROR: [u8; Error::__SPEC_XDR_VIEW.const_xdr_len()] = Error::spec_xdr(); impl Error { const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = @@ -162,7 +168,7 @@ impl Error { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Error"), + name: soroban_sdk::xdr::StringMView::new_str(Error::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -303,6 +309,12 @@ impl ::core::cmp::PartialEq for MyError { true } } +impl MyError { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_add_u64::MyError" + } +} pub static __SPEC_XDR_TYPE_MYERROR: [u8; MyError::__SPEC_XDR_VIEW.const_xdr_len()] = MyError::spec_xdr(); impl MyError { @@ -311,7 +323,7 @@ impl MyError { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"MyError"), + name: soroban_sdk::xdr::StringMView::new_str(MyError::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -554,7 +566,9 @@ impl Contract { ok_type: &soroban_sdk::xdr::ScSpecTypeDefView::U64, error_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyError"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, diff --git a/tests-expanded/test_add_u64_wasm32v1-none.rs b/tests-expanded/test_add_u64_wasm32v1-none.rs index 7b3cc38c7..f4294b0c8 100644 --- a/tests-expanded/test_add_u64_wasm32v1-none.rs +++ b/tests-expanded/test_add_u64_wasm32v1-none.rs @@ -43,6 +43,12 @@ impl ::core::cmp::PartialEq for Error { true } } +impl Error { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_add_u64::Error" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_ERROR: [u8; Error::__SPEC_XDR_VIEW.const_xdr_len()] = Error::spec_xdr(); impl Error { @@ -51,7 +57,7 @@ impl Error { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Error"), + name: soroban_sdk::xdr::StringMView::new_str(Error::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -197,6 +203,12 @@ impl ::core::cmp::PartialEq for MyError { true } } +impl MyError { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_add_u64::MyError" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_MYERROR: [u8; MyError::__SPEC_XDR_VIEW.const_xdr_len()] = MyError::spec_xdr(); @@ -206,7 +218,7 @@ impl MyError { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"MyError"), + name: soroban_sdk::xdr::StringMView::new_str(MyError::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -457,7 +469,9 @@ impl Contract { ok_type: &soroban_sdk::xdr::ScSpecTypeDefView::U64, error_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyError"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, diff --git a/tests-expanded/test_associated_types_contracttrait_tests.rs b/tests-expanded/test_associated_types_contracttrait_tests.rs index e040eb986..c445d42bc 100644 --- a/tests-expanded/test_associated_types_contracttrait_tests.rs +++ b/tests-expanded/test_associated_types_contracttrait_tests.rs @@ -827,7 +827,7 @@ mod test { mod test_with_wasm { use soroban_sdk::{Env, String}; mod contract { - pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01\x11\x03`\x02~~\x01~`\x00\x01~`\x02\x7f\x7f\x01~\x02\x07\x01\x01b\x01i\x00\x00\x03\x04\x03\x01\x02\x01\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x8f\x80\xc0\x00\x0b\x7f\x00A\x8f\x80\xc0\x00\x0b\x7f\x00A\x90\x80\xc0\x00\x0b\x078\x06\x06memory\x02\x00\x04exec\x00\x01\x05exec2\x00\x03\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n>\x03\x10\x00A\x80\x80\xc0\x80\x00A\x07\x10\x82\x80\x80\x80\x00\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x80\x80\x80\x80\x00\x0b\x10\x00A\x87\x80\xc0\x80\x00A\x08\x10\x82\x80\x80\x80\x00\x0b\x0b\x18\x01\x00A\x80\x80\xc0\x00\x0b\x0fdefaultdefault2\x00\xdf\x15\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04exec\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05exec2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x07Context\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; + pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01\x11\x03`\x02~~\x01~`\x00\x01~`\x02\x7f\x7f\x01~\x02\x07\x01\x01b\x01i\x00\x00\x03\x04\x03\x01\x02\x01\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x8f\x80\xc0\x00\x0b\x7f\x00A\x8f\x80\xc0\x00\x0b\x7f\x00A\x90\x80\xc0\x00\x0b\x078\x06\x06memory\x02\x00\x04exec\x00\x01\x05exec2\x00\x03\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n>\x03\x10\x00A\x80\x80\xc0\x80\x00A\x07\x10\x82\x80\x80\x80\x00\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x80\x80\x80\x80\x00\x0b\x10\x00A\x87\x80\xc0\x80\x00A\x08\x10\x82\x80\x80\x80\x00\x0b\x0b\x18\x01\x00A\x80\x80\xc0\x00\x0b\x0fdefaultdefault2\x00\xbf\x18\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04exec\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05exec2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x1asoroban_sdk::auth::Context\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00(soroban_sdk::auth::SubContractInvocation\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00+soroban_sdk::auth::InvokerContractAuthEntry\x00\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00+soroban_sdk::auth::InvokerContractAuthEntry\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00(soroban_sdk::auth::SubContractInvocation\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 soroban_sdk::address::Executable\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; pub trait Contract { fn exec(env: soroban_sdk::Env) -> soroban_sdk::String; fn exec2(env: soroban_sdk::Env) -> soroban_sdk::String; @@ -1209,6 +1209,12 @@ mod test_with_wasm { } } } + impl ContractContext { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_associated_types_contracttrait::test_with_wasm::contract::ContractContext" + } + } pub static __SPEC_XDR_TYPE_CONTRACTCONTEXT: [u8; ContractContext::__SPEC_XDR_VIEW .const_xdr_len()] = ContractContext::spec_xdr(); impl ContractContext { @@ -1217,7 +1223,9 @@ mod test_with_wasm { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"ContractContext"), + name: soroban_sdk::xdr::StringMView::new_str( + ContractContext::spec_type_name(), + ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -1777,6 +1785,12 @@ mod test_with_wasm { } } } + impl SubContractInvocation { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_associated_types_contracttrait::test_with_wasm::contract::SubContractInvocation" + } + } pub static __SPEC_XDR_TYPE_SUBCONTRACTINVOCATION: [u8; SubContractInvocation::__SPEC_XDR_VIEW.const_xdr_len()] = SubContractInvocation::spec_xdr(); @@ -1786,15 +1800,17 @@ mod test_with_wasm { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"SubContractInvocation"), + name: soroban_sdk::xdr::StringMView::new_str( + SubContractInvocation::spec_type_name(), + ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), name: soroban_sdk::xdr::StringMView::new(b"context"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"ContractContext", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -1806,8 +1822,8 @@ mod test_with_wasm { &soroban_sdk::xdr::ScSpecTypeVecView { element_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"InvokerContractAuthEntry", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -2292,6 +2308,12 @@ mod test_with_wasm { } } } + impl CreateContractHostFnContext { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_associated_types_contracttrait::test_with_wasm::contract::CreateContractHostFnContext" + } + } pub static __SPEC_XDR_TYPE_CREATECONTRACTHOSTFNCONTEXT: [u8; CreateContractHostFnContext::__SPEC_XDR_VIEW.const_xdr_len()] = CreateContractHostFnContext::spec_xdr(); @@ -2301,15 +2323,17 @@ mod test_with_wasm { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"CreateContractHostFnContext"), + name: soroban_sdk::xdr::StringMView::new_str( + CreateContractHostFnContext::spec_type_name(), + ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), name: soroban_sdk::xdr::StringMView::new(b"executable"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"ContractExecutable", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -2831,6 +2855,12 @@ mod test_with_wasm { } } } + impl CreateContractWithConstructorHostFnContext { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_associated_types_contracttrait::test_with_wasm::contract::CreateContractWithConstructorHostFnContext" + } + } pub static __SPEC_XDR_TYPE_CREATECONTRACTWITHCONSTRUCTORHOSTFNCONTEXT: [u8; CreateContractWithConstructorHostFnContext::__SPEC_XDR_VIEW.const_xdr_len()] = CreateContractWithConstructorHostFnContext::spec_xdr(); @@ -2840,8 +2870,8 @@ mod test_with_wasm { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithConstructorHostFnContext", + name: soroban_sdk::xdr::StringMView::new_str( + CreateContractWithConstructorHostFnContext::spec_type_name(), ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { @@ -2858,8 +2888,8 @@ mod test_with_wasm { name: soroban_sdk::xdr::StringMView::new(b"executable"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"ContractExecutable", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -3508,68 +3538,67 @@ mod test_with_wasm { } } } + impl Context { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_associated_types_contracttrait::test_with_wasm::contract::Context" + } + } pub static __SPEC_XDR_TYPE_CONTEXT: [u8; Context::__SPEC_XDR_VIEW.const_xdr_len()] = Context::spec_xdr(); impl Context { - const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = - soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0( - soroban_sdk::xdr::ScSpecUdtUnionV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Context"), - cases: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Contract"), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"ContractContext", - ), - }, + const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + lib: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new_str(Context::spec_type_name()), + cases: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new(b"Contract"), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), - ]), - }, + }), + ], ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractHostFn", - ), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractHostFnContext", - ), - }, + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), - ]), - }, + }), + ], ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithCtorHostFn", - ), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithConstructorHostFnContext", - ), - }, + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractWithCtorHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), - ]), - }, + }), + ], ), - ]), - }, - ); + }), + ], + ), + }); pub const fn spec_xdr() -> [u8; Context::__SPEC_XDR_VIEW.const_xdr_len()] { Context::__SPEC_XDR_VIEW.const_to_xdr() } @@ -4239,6 +4268,12 @@ mod test_with_wasm { } } } + impl ContractExecutable { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_associated_types_contracttrait::test_with_wasm::contract::ContractExecutable" + } + } pub static __SPEC_XDR_TYPE_CONTRACTEXECUTABLE: [u8; ContractExecutable::__SPEC_XDR_VIEW .const_xdr_len()] = ContractExecutable::spec_xdr(); impl ContractExecutable { @@ -4247,7 +4282,9 @@ mod test_with_wasm { soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"ContractExecutable"), + name: soroban_sdk::xdr::StringMView::new_str( + ContractExecutable::spec_type_name(), + ), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { @@ -4804,69 +4841,70 @@ mod test_with_wasm { } } } + impl InvokerContractAuthEntry { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_associated_types_contracttrait::test_with_wasm::contract::InvokerContractAuthEntry" + } + } pub static __SPEC_XDR_TYPE_INVOKERCONTRACTAUTHENTRY: [u8; InvokerContractAuthEntry::__SPEC_XDR_VIEW.const_xdr_len()] = InvokerContractAuthEntry::spec_xdr(); impl InvokerContractAuthEntry { - const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = - soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0( - soroban_sdk::xdr::ScSpecUdtUnionV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"InvokerContractAuthEntry"), - cases: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Contract"), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"SubContractInvocation", - ), - }, + const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + lib: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new_str( + InvokerContractAuthEntry::spec_type_name(), + ), + cases: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new(b"Contract"), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), - ]), - }, + }), + ], ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractHostFn", - ), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractHostFnContext", - ), - }, + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), - ]), - }, + }), + ], ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithCtorHostFn", - ), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithConstructorHostFnContext", - ), - }, + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractWithCtorHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), - ]), - }, + }), + ], ), - ]), - }, - ); + }), + ], + ), + }); pub const fn spec_xdr( ) -> [u8; InvokerContractAuthEntry::__SPEC_XDR_VIEW.const_xdr_len()] { InvokerContractAuthEntry::__SPEC_XDR_VIEW.const_to_xdr() @@ -5599,6 +5637,12 @@ mod test_with_wasm { } } } + impl Executable { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_associated_types_contracttrait::test_with_wasm::contract::Executable" + } + } pub static __SPEC_XDR_TYPE_EXECUTABLE: [u8; Executable::__SPEC_XDR_VIEW.const_xdr_len()] = Executable::spec_xdr(); impl Executable { @@ -5607,7 +5651,7 @@ mod test_with_wasm { soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Executable"), + name: soroban_sdk::xdr::StringMView::new_str(Executable::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { diff --git a/tests-expanded/test_attributes_tests.rs b/tests-expanded/test_attributes_tests.rs index e039ca774..d5c6c9e93 100644 --- a/tests-expanded/test_attributes_tests.rs +++ b/tests-expanded/test_attributes_tests.rs @@ -47,6 +47,12 @@ impl ::core::cmp::PartialEq for AttributeType { self.value == other.value } } +impl AttributeType { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_attributes::AttributeType" + } +} pub static __SPEC_XDR_TYPE_ATTRIBUTETYPE: [u8; AttributeType::__SPEC_XDR_VIEW.const_xdr_len()] = AttributeType::spec_xdr(); impl AttributeType { @@ -54,7 +60,7 @@ impl AttributeType { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"AttributeType"), + name: soroban_sdk::xdr::StringMView::new_str(AttributeType::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -392,6 +398,12 @@ pub struct AttributeEvent { topic: u32, value: u32, } +impl AttributeEvent { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_attributes::AttributeEvent" + } +} pub static __SPEC_XDR_EVENT_ATTRIBUTEEVENT: [u8; AttributeEvent::__SPEC_XDR_VIEW.const_xdr_len()] = AttributeEvent::spec_xdr(); impl AttributeEvent { @@ -399,9 +411,7 @@ impl AttributeEvent { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new( - b"AttributeEvent", - )), + name: soroban_sdk::xdr::StringMView::new_str(AttributeEvent::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"attribute_event"), )]), @@ -1396,7 +1406,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"value"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"AttributeType"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -3408,7 +3420,7 @@ mod test { } } }; - let wasm = b"\x00asm\x01\x00\x00\x00\x01\x1f\x05`\x04~~~~\x01~`\x02~~\x01~`\x03~~~\x01~`\x01~\x01~`\x00\x01~\x02\x1f\x05\x01m\x01a\x00\x00\x01b\x01j\x00\x01\x01v\x01g\x00\x01\x01m\x019\x00\x02\x01x\x011\x00\x01\x03\x0b\n\x03\x03\x01\x04\x04\x04\x04\x04\x04\x04\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\xbb\x80\xc0\x00\x0b\x7f\x00A\xbb\x80\xc0\x00\x0b\x7f\x00A\xc0\x80\xc0\x00\x0b\x07\xf5\x01\x0e\x06memory\x02\x00\x06always\x00\x05\x0ccfg_included\x00\x06\x07publish\x00\x07\rtrait_default\x00\x08\x16trait_default_dual_cfg\x00\t\x19trait_default_stacked_cfg\x00\n\x0etrait_override\x00\x0b\x17trait_override_dual_cfg\x00\x0c\x1atrait_override_negated_cfg\x00\r\x1atrait_override_stacked_cfg\x00\x0e\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\x85\x04\n\x85\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00-\x00\x80\x80\xc0\x80\x00\x1a \x01B\x027\x03\x08\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xa4\x80\xc0\x80\x00\xadB \x86B\x04\x84 \x01A\x08j\xadB \x86B\x04\x84B\x84\x80\x80\x80\x10\x10\x80\x80\x80\x80\x00\x1a \x01)\x03\x08\"\x00B\xff\x01\x83B\x04Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00 \x00B\x84\x80\x80\x80p\x83\x0b\x1a\x00\x02@ \x00B\xff\x01\x83B\x04Q\r\x00\x00\x0b \x00B\x84\x80\x80\x80p\x83\x0b\x9c\x02\x02\x02\x7f\x01~#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\x04R\r\x00 \x01B\xff\x01\x83B\x04R\r\x00A\x00!\x03A\x00-\x00\x8e\x80\xc0\x80\x00\x1aA\xac\x80\xc0\x80\x00\xadB \x86B\x04\x84B\x84\x80\x80\x80\xf0\x01\x10\x81\x80\x80\x80\x00!\x04 \x02 \x00B\x84\x80\x80\x80p\x837\x03\x08 \x02 \x047\x03\x00\x03@\x02@ \x03A\x10G\r\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x10j \x03j \x02 \x03j)\x03\x007\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x02A\x10j\xadB \x86B\x04\x84\"\x00B\x84\x80\x80\x80 \x10\x82\x80\x80\x80\x00!\x04 \x02 \x01B\x84\x80\x80\x80p\x837\x03\x10 \x04A\xa4\x80\xc0\x80\x00\xadB \x86B\x04\x84 \x00B\x84\x80\x80\x80\x10\x10\x83\x80\x80\x80\x00\x10\x84\x80\x80\x80\x00\x1a \x02A j$\x80\x80\x80\x80\x00B\x02\x0f\x0b \x02A\x10j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b\x00\x0b\x08\x00B\x84\x80\x80\x80 \x0b\t\x00B\x84\x80\x80\x80\xe0\x01\x0b\t\x00B\x84\x80\x80\x80\xd0\x00\x0b\x08\x00B\x84\x80\x80\x800\x0b\t\x00B\x84\x80\x80\x80\xc0\x01\x0b\t\x00B\x84\x80\x80\x80\xa0\x01\x0b\t\x00B\x84\x80\x80\x80\x80\x01\x0b\x0bD\x01\x00A\x80\x80\xc0\x00\x0b;SpEcV1i\t\xb7\x06*\x88\xd7\xf8SpEcV1\xbfO\xc3P\xd4\x14\xb5Vvalue\x00\x00\x00\x1c\x00\x10\x00\x05\x00\x00\x00attribute_event\x00\xdb\x1a\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06always\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05value\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\rAttributeType\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07publish\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x05topic\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x05value\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rAttributeType\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05value\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0ccfg_included\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05value\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rtrait_default\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0eAttributeEvent\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0fattribute_event\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x05topic\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05value\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0etrait_override\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16trait_default_dual_cfg\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17trait_override_dual_cfg\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19trait_default_stacked_cfg\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1atrait_override_negated_cfg\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1atrait_override_stacked_cfg\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x07Context\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; + let wasm = b"\x00asm\x01\x00\x00\x00\x01\x1f\x05`\x04~~~~\x01~`\x02~~\x01~`\x03~~~\x01~`\x01~\x01~`\x00\x01~\x02\x1f\x05\x01m\x01a\x00\x00\x01b\x01j\x00\x01\x01v\x01g\x00\x01\x01m\x019\x00\x02\x01x\x011\x00\x01\x03\x0b\n\x03\x03\x01\x04\x04\x04\x04\x04\x04\x04\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\xbb\x80\xc0\x00\x0b\x7f\x00A\xbb\x80\xc0\x00\x0b\x7f\x00A\xc0\x80\xc0\x00\x0b\x07\xf5\x01\x0e\x06memory\x02\x00\x06always\x00\x05\x0ccfg_included\x00\x06\x07publish\x00\x07\rtrait_default\x00\x08\x16trait_default_dual_cfg\x00\t\x19trait_default_stacked_cfg\x00\n\x0etrait_override\x00\x0b\x17trait_override_dual_cfg\x00\x0c\x1atrait_override_negated_cfg\x00\r\x1atrait_override_stacked_cfg\x00\x0e\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\x85\x04\n\x85\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00-\x00\x80\x80\xc0\x80\x00\x1a \x01B\x027\x03\x08\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xa4\x80\xc0\x80\x00\xadB \x86B\x04\x84 \x01A\x08j\xadB \x86B\x04\x84B\x84\x80\x80\x80\x10\x10\x80\x80\x80\x80\x00\x1a \x01)\x03\x08\"\x00B\xff\x01\x83B\x04Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00 \x00B\x84\x80\x80\x80p\x83\x0b\x1a\x00\x02@ \x00B\xff\x01\x83B\x04Q\r\x00\x00\x0b \x00B\x84\x80\x80\x80p\x83\x0b\x9c\x02\x02\x02\x7f\x01~#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\x04R\r\x00 \x01B\xff\x01\x83B\x04R\r\x00A\x00!\x03A\x00-\x00\x8e\x80\xc0\x80\x00\x1aA\xac\x80\xc0\x80\x00\xadB \x86B\x04\x84B\x84\x80\x80\x80\xf0\x01\x10\x81\x80\x80\x80\x00!\x04 \x02 \x00B\x84\x80\x80\x80p\x837\x03\x08 \x02 \x047\x03\x00\x03@\x02@ \x03A\x10G\r\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x10j \x03j \x02 \x03j)\x03\x007\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x02A\x10j\xadB \x86B\x04\x84\"\x00B\x84\x80\x80\x80 \x10\x82\x80\x80\x80\x00!\x04 \x02 \x01B\x84\x80\x80\x80p\x837\x03\x10 \x04A\xa4\x80\xc0\x80\x00\xadB \x86B\x04\x84 \x00B\x84\x80\x80\x80\x10\x10\x83\x80\x80\x80\x00\x10\x84\x80\x80\x80\x00\x1a \x02A j$\x80\x80\x80\x80\x00B\x02\x0f\x0b \x02A\x10j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b\x00\x0b\x08\x00B\x84\x80\x80\x80 \x0b\t\x00B\x84\x80\x80\x80\xe0\x01\x0b\t\x00B\x84\x80\x80\x80\xd0\x00\x0b\x08\x00B\x84\x80\x80\x800\x0b\t\x00B\x84\x80\x80\x80\xc0\x01\x0b\t\x00B\x84\x80\x80\x80\xa0\x01\x0b\t\x00B\x84\x80\x80\x80\x80\x01\x0b\x0bD\x01\x00A\x80\x80\xc0\x00\x0b;SpEcV1L\x0f\xecG\xb1\x13$mSpEcV1R\xa4;\xb3\xef\x9b\x9e\xadvalue\x00\x00\x00\x1c\x00\x10\x00\x05\x00\x00\x00attribute_event\x00\xeb\x1d\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06always\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05value\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x1etest_attributes::AttributeType\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07publish\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x05topic\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x05value\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1etest_attributes::AttributeType\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05value\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0ccfg_included\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05value\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rtrait_default\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1ftest_attributes::AttributeEvent\x00\x00\x00\x00\x01\x00\x00\x00\x0fattribute_event\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x05topic\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05value\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0etrait_override\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16trait_default_dual_cfg\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17trait_override_dual_cfg\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19trait_default_stacked_cfg\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1atrait_override_negated_cfg\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1atrait_override_stacked_cfg\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x1asoroban_sdk::auth::Context\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00(soroban_sdk::auth::SubContractInvocation\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00+soroban_sdk::auth::InvokerContractAuthEntry\x00\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00+soroban_sdk::auth::InvokerContractAuthEntry\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00(soroban_sdk::auth::SubContractInvocation\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 soroban_sdk::address::Executable\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; let fn_names: HashSet = soroban_spec::read::from_wasm(wasm) .unwrap() .iter() diff --git a/tests-expanded/test_attributes_wasm32v1-none.rs b/tests-expanded/test_attributes_wasm32v1-none.rs index c60ce3fd1..65b2f03c6 100644 --- a/tests-expanded/test_attributes_wasm32v1-none.rs +++ b/tests-expanded/test_attributes_wasm32v1-none.rs @@ -47,6 +47,12 @@ impl ::core::cmp::PartialEq for AttributeType { self.value == other.value } } +impl AttributeType { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_attributes::AttributeType" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_ATTRIBUTETYPE: [u8; AttributeType::__SPEC_XDR_VIEW.const_xdr_len()] = AttributeType::spec_xdr(); @@ -55,7 +61,7 @@ impl AttributeType { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"AttributeType"), + name: soroban_sdk::xdr::StringMView::new_str(AttributeType::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -129,6 +135,12 @@ pub struct AttributeEvent { topic: u32, value: u32, } +impl AttributeEvent { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_attributes::AttributeEvent" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_EVENT_ATTRIBUTEEVENT: [u8; AttributeEvent::__SPEC_XDR_VIEW.const_xdr_len()] = AttributeEvent::spec_xdr(); @@ -137,9 +149,7 @@ impl AttributeEvent { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new( - b"AttributeEvent", - )), + name: soroban_sdk::xdr::StringMView::new_str(AttributeEvent::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"attribute_event"), )]), @@ -621,7 +631,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"value"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"AttributeType"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, diff --git a/tests-expanded/test_auth_tests.rs b/tests-expanded/test_auth_tests.rs index 51c1dcf30..184aaa702 100644 --- a/tests-expanded/test_auth_tests.rs +++ b/tests-expanded/test_auth_tests.rs @@ -1165,6 +1165,12 @@ mod test_a { ::core::cmp::Ordering::Equal } } + impl Error { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_auth::test_a::auth_decline::Error" + } + } pub static __SPEC_XDR_TYPE_ERROR: [u8; Error::__SPEC_XDR_VIEW.const_xdr_len()] = Error::spec_xdr(); impl Error { @@ -1173,7 +1179,7 @@ mod test_a { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Error"), + name: soroban_sdk::xdr::StringMView::new_str(Error::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -2754,6 +2760,12 @@ mod test_b { ::core::cmp::Ordering::Equal } } + impl Error { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_auth::test_b::auth_decline::Error" + } + } pub static __SPEC_XDR_TYPE_ERROR: [u8; Error::__SPEC_XDR_VIEW.const_xdr_len()] = Error::spec_xdr(); impl Error { @@ -2762,7 +2774,7 @@ mod test_b { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Error"), + name: soroban_sdk::xdr::StringMView::new_str(Error::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), diff --git a/tests-expanded/test_bls_tests.rs b/tests-expanded/test_bls_tests.rs index 0e1a41f26..a3dd75548 100644 --- a/tests-expanded/test_bls_tests.rs +++ b/tests-expanded/test_bls_tests.rs @@ -16,6 +16,12 @@ pub struct DummyProof { pub g2: Bls12381G2Affine, pub fr: Bls12381Fr, } +impl DummyProof { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_bls::DummyProof" + } +} pub static __SPEC_XDR_TYPE_DUMMYPROOF: [u8; DummyProof::__SPEC_XDR_VIEW.const_xdr_len()] = DummyProof::spec_xdr(); impl DummyProof { @@ -23,7 +29,7 @@ impl DummyProof { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"DummyProof"), + name: soroban_sdk::xdr::StringMView::new_str(DummyProof::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -883,7 +889,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"proof"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"DummyProof"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, diff --git a/tests-expanded/test_bls_wasm32v1-none.rs b/tests-expanded/test_bls_wasm32v1-none.rs index 679c3e038..31ceb7d03 100644 --- a/tests-expanded/test_bls_wasm32v1-none.rs +++ b/tests-expanded/test_bls_wasm32v1-none.rs @@ -16,6 +16,12 @@ pub struct DummyProof { pub g2: Bls12381G2Affine, pub fr: Bls12381Fr, } +impl DummyProof { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_bls::DummyProof" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_DUMMYPROOF: [u8; DummyProof::__SPEC_XDR_VIEW.const_xdr_len()] = DummyProof::spec_xdr(); @@ -24,7 +30,7 @@ impl DummyProof { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"DummyProof"), + name: soroban_sdk::xdr::StringMView::new_str(DummyProof::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -314,7 +320,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"proof"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"DummyProof"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, diff --git a/tests-expanded/test_bn254_tests.rs b/tests-expanded/test_bn254_tests.rs index 948e367f0..87a999736 100644 --- a/tests-expanded/test_bn254_tests.rs +++ b/tests-expanded/test_bn254_tests.rs @@ -13,6 +13,12 @@ pub struct MockProof { pub g1: Vec, pub g2: Vec, } +impl MockProof { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_bn254::MockProof" + } +} pub static __SPEC_XDR_TYPE_MOCKPROOF: [u8; MockProof::__SPEC_XDR_VIEW.const_xdr_len()] = MockProof::spec_xdr(); impl MockProof { @@ -20,7 +26,7 @@ impl MockProof { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"MockProof"), + name: soroban_sdk::xdr::StringMView::new_str(MockProof::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -604,7 +610,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"proof"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MockProof"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, diff --git a/tests-expanded/test_bn254_wasm32v1-none.rs b/tests-expanded/test_bn254_wasm32v1-none.rs index c79b740b9..d50240e67 100644 --- a/tests-expanded/test_bn254_wasm32v1-none.rs +++ b/tests-expanded/test_bn254_wasm32v1-none.rs @@ -13,6 +13,12 @@ pub struct MockProof { pub g1: Vec, pub g2: Vec, } +impl MockProof { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_bn254::MockProof" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_MOCKPROOF: [u8; MockProof::__SPEC_XDR_VIEW.const_xdr_len()] = MockProof::spec_xdr(); @@ -21,7 +27,7 @@ impl MockProof { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"MockProof"), + name: soroban_sdk::xdr::StringMView::new_str(MockProof::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -180,7 +186,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"proof"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MockProof"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, diff --git a/tests-expanded/test_constructor_tests.rs b/tests-expanded/test_constructor_tests.rs index f72ba4533..e46d01ff6 100644 --- a/tests-expanded/test_constructor_tests.rs +++ b/tests-expanded/test_constructor_tests.rs @@ -141,6 +141,12 @@ pub enum DataKey { Temp(u32), Instance(u32), } +impl DataKey { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_constructor::DataKey" + } +} pub static __SPEC_XDR_TYPE_DATAKEY: [u8; DataKey::__SPEC_XDR_VIEW.const_xdr_len()] = DataKey::spec_xdr(); impl DataKey { @@ -148,7 +154,7 @@ impl DataKey { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"DataKey"), + name: soroban_sdk::xdr::StringMView::new_str(DataKey::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { @@ -803,7 +809,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"key"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"DataKey"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, diff --git a/tests-expanded/test_constructor_wasm32v1-none.rs b/tests-expanded/test_constructor_wasm32v1-none.rs index cf0d43edd..4d3c2e934 100644 --- a/tests-expanded/test_constructor_wasm32v1-none.rs +++ b/tests-expanded/test_constructor_wasm32v1-none.rs @@ -29,6 +29,12 @@ pub enum DataKey { Temp(u32), Instance(u32), } +impl DataKey { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_constructor::DataKey" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_DATAKEY: [u8; DataKey::__SPEC_XDR_VIEW.const_xdr_len()] = DataKey::spec_xdr(); @@ -37,7 +43,7 @@ impl DataKey { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"DataKey"), + name: soroban_sdk::xdr::StringMView::new_str(DataKey::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { @@ -260,7 +266,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"key"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"DataKey"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, diff --git a/tests-expanded/test_contracttrait_impl_full_tests.rs b/tests-expanded/test_contracttrait_impl_full_tests.rs index 9fd36f401..87fdac85e 100644 --- a/tests-expanded/test_contracttrait_impl_full_tests.rs +++ b/tests-expanded/test_contracttrait_impl_full_tests.rs @@ -1834,14 +1834,16 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyStruct"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyStruct"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -1874,14 +1876,16 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumUnit"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumUnit"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -1915,14 +1919,16 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumVariants"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumVariants"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); diff --git a/tests-expanded/test_contracttrait_impl_full_wasm32v1-none.rs b/tests-expanded/test_contracttrait_impl_full_wasm32v1-none.rs index 094a98804..4b9ca8777 100644 --- a/tests-expanded/test_contracttrait_impl_full_wasm32v1-none.rs +++ b/tests-expanded/test_contracttrait_impl_full_wasm32v1-none.rs @@ -1343,14 +1343,16 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyStruct"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyStruct"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -1384,14 +1386,16 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumUnit"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumUnit"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -1426,14 +1430,16 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumVariants"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumVariants"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); diff --git a/tests-expanded/test_contracttrait_impl_partial_tests.rs b/tests-expanded/test_contracttrait_impl_partial_tests.rs index ddf1cef1a..eff97a658 100644 --- a/tests-expanded/test_contracttrait_impl_partial_tests.rs +++ b/tests-expanded/test_contracttrait_impl_partial_tests.rs @@ -269,14 +269,16 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyStruct"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyStruct"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -2197,14 +2199,16 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumUnit"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumUnit"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -2238,14 +2242,16 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumVariants"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumVariants"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); diff --git a/tests-expanded/test_contracttrait_impl_partial_wasm32v1-none.rs b/tests-expanded/test_contracttrait_impl_partial_wasm32v1-none.rs index ef94ce230..0d503790c 100644 --- a/tests-expanded/test_contracttrait_impl_partial_wasm32v1-none.rs +++ b/tests-expanded/test_contracttrait_impl_partial_wasm32v1-none.rs @@ -161,14 +161,16 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyStruct"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyStruct"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -1521,14 +1523,16 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumUnit"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumUnit"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -1563,14 +1567,16 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumVariants"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumVariants"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); diff --git a/tests-expanded/test_contracttrait_path_global_tests.rs b/tests-expanded/test_contracttrait_path_global_tests.rs index f8b65e918..e56df1e54 100644 --- a/tests-expanded/test_contracttrait_path_global_tests.rs +++ b/tests-expanded/test_contracttrait_path_global_tests.rs @@ -1884,14 +1884,16 @@ impl ContractGlobalPath { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyStruct"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyStruct"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -1925,14 +1927,16 @@ impl ContractGlobalPath { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumUnit"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumUnit"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -1966,14 +1970,16 @@ impl ContractGlobalPath { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumVariants"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumVariants"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); diff --git a/tests-expanded/test_contracttrait_path_global_wasm32v1-none.rs b/tests-expanded/test_contracttrait_path_global_wasm32v1-none.rs index daad3eb90..e25ecec48 100644 --- a/tests-expanded/test_contracttrait_path_global_wasm32v1-none.rs +++ b/tests-expanded/test_contracttrait_path_global_wasm32v1-none.rs @@ -1383,14 +1383,16 @@ impl ContractGlobalPath { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyStruct"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyStruct"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -1425,14 +1427,16 @@ impl ContractGlobalPath { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumUnit"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumUnit"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -1467,14 +1471,16 @@ impl ContractGlobalPath { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumVariants"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumVariants"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); diff --git a/tests-expanded/test_contracttrait_trait_tests.rs b/tests-expanded/test_contracttrait_trait_tests.rs index 2ac85e99d..8d9823593 100644 --- a/tests-expanded/test_contracttrait_trait_tests.rs +++ b/tests-expanded/test_contracttrait_trait_tests.rs @@ -49,6 +49,12 @@ impl ::core::cmp::PartialEq for MyStruct { self.a == other.a && self.b == other.b } } +impl MyStruct { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_contracttrait_trait::MyStruct" + } +} pub static __SPEC_XDR_TYPE_MYSTRUCT: [u8; MyStruct::__SPEC_XDR_VIEW.const_xdr_len()] = MyStruct::spec_xdr(); impl MyStruct { @@ -56,7 +62,7 @@ impl MyStruct { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"MyStruct"), + name: soroban_sdk::xdr::StringMView::new_str(MyStruct::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -486,6 +492,12 @@ impl ::core::cmp::PartialEq for MyEnumUnit { __self_discr == __arg1_discr } } +impl MyEnumUnit { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_contracttrait_trait::MyEnumUnit" + } +} pub static __SPEC_XDR_TYPE_MYENUMUNIT: [u8; MyEnumUnit::__SPEC_XDR_VIEW.const_xdr_len()] = MyEnumUnit::spec_xdr(); impl MyEnumUnit { @@ -493,7 +505,7 @@ impl MyEnumUnit { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"MyEnumUnit"), + name: soroban_sdk::xdr::StringMView::new_str(MyEnumUnit::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -855,6 +867,12 @@ impl ::core::cmp::PartialEq for MyEnumVariants { } } } +impl MyEnumVariants { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_contracttrait_trait::MyEnumVariants" + } +} pub static __SPEC_XDR_TYPE_MYENUMVARIANTS: [u8; MyEnumVariants::__SPEC_XDR_VIEW.const_xdr_len()] = MyEnumVariants::spec_xdr(); impl MyEnumVariants { @@ -862,7 +880,7 @@ impl MyEnumVariants { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"MyEnumVariants"), + name: soroban_sdk::xdr::StringMView::new_str(MyEnumVariants::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::VoidV0( soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0View { @@ -877,7 +895,9 @@ impl MyEnumVariants { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyStruct"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), ]), @@ -890,7 +910,9 @@ impl MyEnumVariants { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumUnit"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), ]), @@ -3874,14 +3896,16 @@ impl AllTypesSpec { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyStruct"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyStruct"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -3905,14 +3929,16 @@ impl AllTypesSpec { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumUnit"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumUnit"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -3936,14 +3962,16 @@ impl AllTypesSpec { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumVariants"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumVariants"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -5847,14 +5875,16 @@ mod test { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyStruct"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyStruct"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }), ]), }); @@ -5888,14 +5918,16 @@ mod test { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumUnit"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumUnit"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }), ]), }); @@ -5929,14 +5961,18 @@ mod test { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumVariants"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumVariants"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }), ]), }); diff --git a/tests-expanded/test_contracttrait_trait_wasm32v1-none.rs b/tests-expanded/test_contracttrait_trait_wasm32v1-none.rs index 62450e730..1794951a5 100644 --- a/tests-expanded/test_contracttrait_trait_wasm32v1-none.rs +++ b/tests-expanded/test_contracttrait_trait_wasm32v1-none.rs @@ -49,6 +49,12 @@ impl ::core::cmp::PartialEq for MyStruct { self.a == other.a && self.b == other.b } } +impl MyStruct { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_contracttrait_trait::MyStruct" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_MYSTRUCT: [u8; MyStruct::__SPEC_XDR_VIEW.const_xdr_len()] = MyStruct::spec_xdr(); @@ -57,7 +63,7 @@ impl MyStruct { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"MyStruct"), + name: soroban_sdk::xdr::StringMView::new_str(MyStruct::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -181,6 +187,12 @@ impl ::core::cmp::PartialEq for MyEnumUnit { __self_discr == __arg1_discr } } +impl MyEnumUnit { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_contracttrait_trait::MyEnumUnit" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_MYENUMUNIT: [u8; MyEnumUnit::__SPEC_XDR_VIEW.const_xdr_len()] = MyEnumUnit::spec_xdr(); @@ -189,7 +201,7 @@ impl MyEnumUnit { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"MyEnumUnit"), + name: soroban_sdk::xdr::StringMView::new_str(MyEnumUnit::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -321,6 +333,12 @@ impl ::core::cmp::PartialEq for MyEnumVariants { } } } +impl MyEnumVariants { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_contracttrait_trait::MyEnumVariants" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_MYENUMVARIANTS: [u8; MyEnumVariants::__SPEC_XDR_VIEW.const_xdr_len()] = MyEnumVariants::spec_xdr(); @@ -329,7 +347,7 @@ impl MyEnumVariants { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"MyEnumVariants"), + name: soroban_sdk::xdr::StringMView::new_str(MyEnumVariants::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::VoidV0( soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0View { @@ -344,7 +362,9 @@ impl MyEnumVariants { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyStruct"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), ]), @@ -357,7 +377,9 @@ impl MyEnumVariants { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumUnit"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), ]), @@ -1824,14 +1846,16 @@ impl AllTypesSpec { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyStruct"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyStruct"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -1855,14 +1879,16 @@ impl AllTypesSpec { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumUnit"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumUnit"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -1886,14 +1912,16 @@ impl AllTypesSpec { name: soroban_sdk::xdr::StringMView::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumVariants"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"MyEnumVariants"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); diff --git a/tests-expanded/test_errors_tests.rs b/tests-expanded/test_errors_tests.rs index a0b8a13b9..d2e55e8c0 100644 --- a/tests-expanded/test_errors_tests.rs +++ b/tests-expanded/test_errors_tests.rs @@ -157,13 +157,19 @@ impl ::core::cmp::PartialEq for Flag { __self_discr == __arg1_discr } } +impl Flag { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_errors::Flag" + } +} pub static __SPEC_XDR_TYPE_FLAG: [u8; Flag::__SPEC_XDR_VIEW.const_xdr_len()] = Flag::spec_xdr(); impl Flag { const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Flag"), + name: soroban_sdk::xdr::StringMView::new_str(Flag::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -537,6 +543,12 @@ impl ::core::cmp::PartialEq for Error { true } } +impl Error { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_errors::Error" + } +} pub static __SPEC_XDR_TYPE_ERROR: [u8; Error::__SPEC_XDR_VIEW.const_xdr_len()] = Error::spec_xdr(); impl Error { const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = @@ -544,7 +556,7 @@ impl Error { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Error"), + name: soroban_sdk::xdr::StringMView::new_str(Error::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -732,7 +744,7 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"flag"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"Flag"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, ), }, diff --git a/tests-expanded/test_errors_wasm32v1-none.rs b/tests-expanded/test_errors_wasm32v1-none.rs index 847b55bb3..92f1da2ff 100644 --- a/tests-expanded/test_errors_wasm32v1-none.rs +++ b/tests-expanded/test_errors_wasm32v1-none.rs @@ -45,6 +45,12 @@ impl ::core::cmp::PartialEq for Flag { __self_discr == __arg1_discr } } +impl Flag { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_errors::Flag" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_FLAG: [u8; Flag::__SPEC_XDR_VIEW.const_xdr_len()] = Flag::spec_xdr(); impl Flag { @@ -52,7 +58,7 @@ impl Flag { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Flag"), + name: soroban_sdk::xdr::StringMView::new_str(Flag::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -166,6 +172,12 @@ impl ::core::cmp::PartialEq for Error { true } } +impl Error { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_errors::Error" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_ERROR: [u8; Error::__SPEC_XDR_VIEW.const_xdr_len()] = Error::spec_xdr(); impl Error { @@ -174,7 +186,7 @@ impl Error { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Error"), + name: soroban_sdk::xdr::StringMView::new_str(Error::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -358,7 +370,7 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"flag"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"Flag"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, ), }, diff --git a/tests-expanded/test_events_ref_tests.rs b/tests-expanded/test_events_ref_tests.rs index ffe8a326b..63c10b4ce 100644 --- a/tests-expanded/test_events_ref_tests.rs +++ b/tests-expanded/test_events_ref_tests.rs @@ -142,6 +142,12 @@ pub struct Transfer<'a> { amount: &'a i128, to_muxed_id: Option<&'a u64>, } +impl<'a> Transfer<'a> { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_events_ref::Transfer" + } +} pub static __SPEC_XDR_EVENT_TRANSFER: [u8; Transfer::__SPEC_XDR_VIEW.const_xdr_len()] = Transfer::spec_xdr(); impl<'a> Transfer<'a> { @@ -149,7 +155,7 @@ impl<'a> Transfer<'a> { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new(b"Transfer")), + name: soroban_sdk::xdr::StringMView::new_str(Transfer::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"transfer"), )]), diff --git a/tests-expanded/test_events_ref_wasm32v1-none.rs b/tests-expanded/test_events_ref_wasm32v1-none.rs index 81badcb1a..aa78edef4 100644 --- a/tests-expanded/test_events_ref_wasm32v1-none.rs +++ b/tests-expanded/test_events_ref_wasm32v1-none.rs @@ -30,6 +30,12 @@ pub struct Transfer<'a> { amount: &'a i128, to_muxed_id: Option<&'a u64>, } +impl<'a> Transfer<'a> { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_events_ref::Transfer" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_EVENT_TRANSFER: [u8; Transfer::__SPEC_XDR_VIEW.const_xdr_len()] = Transfer::spec_xdr(); @@ -38,7 +44,7 @@ impl<'a> Transfer<'a> { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new(b"Transfer")), + name: soroban_sdk::xdr::StringMView::new_str(Transfer::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"transfer"), )]), diff --git a/tests-expanded/test_events_tests.rs b/tests-expanded/test_events_tests.rs index 85ff4b3da..20103cafd 100644 --- a/tests-expanded/test_events_tests.rs +++ b/tests-expanded/test_events_tests.rs @@ -142,6 +142,12 @@ pub struct Transfer { amount: i128, to_muxed_id: Option, } +impl Transfer { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_events::Transfer" + } +} pub static __SPEC_XDR_EVENT_TRANSFER: [u8; Transfer::__SPEC_XDR_VIEW.const_xdr_len()] = Transfer::spec_xdr(); impl Transfer { @@ -149,7 +155,7 @@ impl Transfer { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new(b"Transfer")), + name: soroban_sdk::xdr::StringMView::new_str(Transfer::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"transfer"), )]), diff --git a/tests-expanded/test_events_wasm32v1-none.rs b/tests-expanded/test_events_wasm32v1-none.rs index bce402829..a94ea0832 100644 --- a/tests-expanded/test_events_wasm32v1-none.rs +++ b/tests-expanded/test_events_wasm32v1-none.rs @@ -30,6 +30,12 @@ pub struct Transfer { amount: i128, to_muxed_id: Option, } +impl Transfer { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_events::Transfer" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_EVENT_TRANSFER: [u8; Transfer::__SPEC_XDR_VIEW.const_xdr_len()] = Transfer::spec_xdr(); @@ -38,7 +44,7 @@ impl Transfer { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new(b"Transfer")), + name: soroban_sdk::xdr::StringMView::new_str(Transfer::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"transfer"), )]), diff --git a/tests-expanded/test_import_contract_tests.rs b/tests-expanded/test_import_contract_tests.rs index cc659ede4..2b409636f 100644 --- a/tests-expanded/test_import_contract_tests.rs +++ b/tests-expanded/test_import_contract_tests.rs @@ -6,7 +6,7 @@ extern crate core; use core::prelude::rust_2021::*; use soroban_sdk::{contract, contracterror, contractimpl, Address, Env}; mod addcontract { - pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01\x14\x04`\x01~\x01~`\x02\x7f~\x00`\x02~~\x01~`\x00\x00\x02\r\x02\x01i\x010\x00\x00\x01i\x01_\x00\x00\x03\x08\x07\x01\x01\x02\x03\x02\x02\x03\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x9c\x80\xc0\x00\x0b\x7f\x00A\x9c\x80\xc0\x00\x0b\x7f\x00A\xa0\x80\xc0\x00\x0b\x07I\x07\x06memory\x02\x00\x03add\x00\x04\x08safe_add\x00\x06\x0csafe_add_two\x00\x07\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xf3\x04\x07]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc0\x00F\r\x00\x02@ \x02A\x06F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x88!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x80\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0b;\x00\x02@\x02@ \x01B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x01B\x08\x86B\x06\x84!\x01\x0c\x01\x0b \x01\x10\x81\x80\x80\x80\x00!\x01\x0b \x00B\x007\x03\x00 \x00 \x017\x03\x08\x0b\x8e\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@\x02@\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08\"\x01 \x00|\"\x00 \x01T\r\x01 \x02 \x00\x10\x83\x80\x80\x80\x00 \x02(\x02\x00A\x01G\r\x02\x0b\x00\x0b\x10\x85\x80\x80\x80\x00\x00\x0b \x02)\x03\x08!\x00 \x02A\x10j$\x80\x80\x80\x80\x00 \x00\x0b\t\x00\x10\x88\x80\x80\x80\x00\x00\x0b\x9b\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x03 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00A\x00-\x00\x80\x80\xc0\x80\x00\x1aB\x83\x80\x80\x80\x10!\x01\x02@ \x00 \x03|\"\x03 \x00T\r\x00 \x02 \x03\x10\x83\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x01 \x02)\x03\x08!\x01\x0b \x02A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b\x00\x0b\x9b\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x03 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00A\x00-\x00\x8e\x80\xc0\x80\x00\x1aB\x83\x80\x80\x80\x10!\x01\x02@ \x00 \x03|\"\x03 \x00T\r\x00 \x02 \x03\x10\x83\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x01 \x02)\x03\x08!\x01\x0b \x02A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b\x00\x0b\x03\x00\x00\x0b\x0b%\x01\x00A\x80\x80\xc0\x00\x0b\x1cSpEcV1\xd6\xb8`\x15\xac\x9ei\x1aSpEcV1\x95\xd0j*\x1d\xfam\xa3\x00\xdf\x17\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03add\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05Error\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x08Overflow\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07MyError\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x08Overflow\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08safe_add\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x06\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0csafe_add_two\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x06\x00\x00\x07\xd0\x00\x00\x00\x07MyError\x00\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x07Context\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; + pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01\x14\x04`\x01~\x01~`\x02\x7f~\x00`\x02~~\x01~`\x00\x00\x02\r\x02\x01i\x010\x00\x00\x01i\x01_\x00\x00\x03\x08\x07\x01\x01\x02\x03\x02\x02\x03\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x9c\x80\xc0\x00\x0b\x7f\x00A\x9c\x80\xc0\x00\x0b\x7f\x00A\xa0\x80\xc0\x00\x0b\x07I\x07\x06memory\x02\x00\x03add\x00\x04\x08safe_add\x00\x06\x0csafe_add_two\x00\x07\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xf3\x04\x07]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc0\x00F\r\x00\x02@ \x02A\x06F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x88!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x80\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0b;\x00\x02@\x02@ \x01B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x01B\x08\x86B\x06\x84!\x01\x0c\x01\x0b \x01\x10\x81\x80\x80\x80\x00!\x01\x0b \x00B\x007\x03\x00 \x00 \x017\x03\x08\x0b\x8e\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@\x02@\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08\"\x01 \x00|\"\x00 \x01T\r\x01 \x02 \x00\x10\x83\x80\x80\x80\x00 \x02(\x02\x00A\x01G\r\x02\x0b\x00\x0b\x10\x85\x80\x80\x80\x00\x00\x0b \x02)\x03\x08!\x00 \x02A\x10j$\x80\x80\x80\x80\x00 \x00\x0b\t\x00\x10\x88\x80\x80\x80\x00\x00\x0b\x9b\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x03 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00A\x00-\x00\x80\x80\xc0\x80\x00\x1aB\x83\x80\x80\x80\x10!\x01\x02@ \x00 \x03|\"\x03 \x00T\r\x00 \x02 \x03\x10\x83\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x01 \x02)\x03\x08!\x01\x0b \x02A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b\x00\x0b\x9b\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x03 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00A\x00-\x00\x8e\x80\xc0\x80\x00\x1aB\x83\x80\x80\x80\x10!\x01\x02@ \x00 \x03|\"\x03 \x00T\r\x00 \x02 \x03\x10\x83\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x01 \x02)\x03\x08!\x01\x0b \x02A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b\x00\x0b\x03\x00\x00\x0b\x0b%\x01\x00A\x80\x80\xc0\x00\x0b\x1cSpEcV1\xd22/\\\x8c\x82\xb2GSpEcV1\xa3z\xb5\xbfR\xaeOu\x00\xeb\x1a\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03add\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13test_add_u64::Error\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x08Overflow\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15test_add_u64::MyError\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x08Overflow\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08safe_add\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x06\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0csafe_add_two\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x06\x00\x00\x07\xd0\x00\x00\x00\x15test_add_u64::MyError\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x1asoroban_sdk::auth::Context\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00(soroban_sdk::auth::SubContractInvocation\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00+soroban_sdk::auth::InvokerContractAuthEntry\x00\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00+soroban_sdk::auth::InvokerContractAuthEntry\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00(soroban_sdk::auth::SubContractInvocation\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 soroban_sdk::address::Executable\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; pub trait Contract { fn add(env: soroban_sdk::Env, a: u64, b: u64) -> u64; fn safe_add(env: soroban_sdk::Env, a: u64, b: u64) -> Result; @@ -479,6 +479,12 @@ mod addcontract { } } } + impl ContractContext { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_import_contract::addcontract::ContractContext" + } + } pub static __SPEC_XDR_TYPE_CONTRACTCONTEXT: [u8; ContractContext::__SPEC_XDR_VIEW .const_xdr_len()] = ContractContext::spec_xdr(); impl ContractContext { @@ -487,7 +493,7 @@ mod addcontract { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"ContractContext"), + name: soroban_sdk::xdr::StringMView::new_str(ContractContext::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -1042,6 +1048,12 @@ mod addcontract { } } } + impl SubContractInvocation { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_import_contract::addcontract::SubContractInvocation" + } + } pub static __SPEC_XDR_TYPE_SUBCONTRACTINVOCATION: [u8; SubContractInvocation::__SPEC_XDR_VIEW .const_xdr_len()] = SubContractInvocation::spec_xdr(); impl SubContractInvocation { @@ -1050,14 +1062,18 @@ mod addcontract { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"SubContractInvocation"), + name: soroban_sdk::xdr::StringMView::new_str( + SubContractInvocation::spec_type_name(), + ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), name: soroban_sdk::xdr::StringMView::new(b"context"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"ContractContext"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -1068,8 +1084,8 @@ mod addcontract { &soroban_sdk::xdr::ScSpecTypeVecView { element_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"InvokerContractAuthEntry", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -1552,6 +1568,12 @@ mod addcontract { } } } + impl CreateContractHostFnContext { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_import_contract::addcontract::CreateContractHostFnContext" + } + } pub static __SPEC_XDR_TYPE_CREATECONTRACTHOSTFNCONTEXT: [u8; CreateContractHostFnContext::__SPEC_XDR_VIEW.const_xdr_len()] = CreateContractHostFnContext::spec_xdr(); @@ -1561,14 +1583,18 @@ mod addcontract { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"CreateContractHostFnContext"), + name: soroban_sdk::xdr::StringMView::new_str( + CreateContractHostFnContext::spec_type_name(), + ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), name: soroban_sdk::xdr::StringMView::new(b"executable"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"ContractExecutable"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -2075,6 +2101,12 @@ mod addcontract { } } } + impl CreateContractWithConstructorHostFnContext { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_import_contract::addcontract::CreateContractWithConstructorHostFnContext" + } + } pub static __SPEC_XDR_TYPE_CREATECONTRACTWITHCONSTRUCTORHOSTFNCONTEXT: [u8; CreateContractWithConstructorHostFnContext::__SPEC_XDR_VIEW.const_xdr_len()] = CreateContractWithConstructorHostFnContext::spec_xdr(); @@ -2084,8 +2116,8 @@ mod addcontract { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithConstructorHostFnContext", + name: soroban_sdk::xdr::StringMView::new_str( + CreateContractWithConstructorHostFnContext::spec_type_name(), ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { @@ -2102,7 +2134,9 @@ mod addcontract { name: soroban_sdk::xdr::StringMView::new(b"executable"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"ContractExecutable"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -2751,64 +2785,67 @@ mod addcontract { } } } + impl Context { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_import_contract::addcontract::Context" + } + } pub static __SPEC_XDR_TYPE_CONTEXT: [u8; Context::__SPEC_XDR_VIEW.const_xdr_len()] = Context::spec_xdr(); impl Context { - const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = - soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Context"), - cases: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Contract"), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"ContractContext", - ), - }, - ), - ]), - }, - ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"CreateContractHostFn"), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractHostFnContext", - ), - }, - ), - ]), - }, - ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithCtorHostFn", - ), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithConstructorHostFnContext", - ), - }, - ), - ]), - }, - ), - ]), - }); + const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + lib: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new_str(Context::spec_type_name()), + cases: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new(b"Contract"), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractWithCtorHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), + }), + ], + ), + }), + ], + ), + }); pub const fn spec_xdr() -> [u8; Context::__SPEC_XDR_VIEW.const_xdr_len()] { Context::__SPEC_XDR_VIEW.const_to_xdr() } @@ -3467,6 +3504,12 @@ mod addcontract { } } } + impl ContractExecutable { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_import_contract::addcontract::ContractExecutable" + } + } pub static __SPEC_XDR_TYPE_CONTRACTEXECUTABLE: [u8; ContractExecutable::__SPEC_XDR_VIEW .const_xdr_len()] = ContractExecutable::spec_xdr(); impl ContractExecutable { @@ -3474,7 +3517,7 @@ mod addcontract { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"ContractExecutable"), + name: soroban_sdk::xdr::StringMView::new_str(ContractExecutable::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { @@ -4029,65 +4072,70 @@ mod addcontract { } } } + impl InvokerContractAuthEntry { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_import_contract::addcontract::InvokerContractAuthEntry" + } + } pub static __SPEC_XDR_TYPE_INVOKERCONTRACTAUTHENTRY: [u8; InvokerContractAuthEntry::__SPEC_XDR_VIEW.const_xdr_len()] = InvokerContractAuthEntry::spec_xdr(); impl InvokerContractAuthEntry { - const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = - soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"InvokerContractAuthEntry"), - cases: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Contract"), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"SubContractInvocation", - ), - }, - ), - ]), - }, - ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"CreateContractHostFn"), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractHostFnContext", - ), - }, - ), - ]), - }, - ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithCtorHostFn", - ), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithConstructorHostFnContext", - ), - }, - ), - ]), - }, - ), - ]), - }); + const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + lib: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new_str( + InvokerContractAuthEntry::spec_type_name(), + ), + cases: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new(b"Contract"), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractWithCtorHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), + }), + ], + ), + }), + ], + ), + }); pub const fn spec_xdr() -> [u8; InvokerContractAuthEntry::__SPEC_XDR_VIEW.const_xdr_len()] { InvokerContractAuthEntry::__SPEC_XDR_VIEW.const_to_xdr() } @@ -4790,6 +4838,12 @@ mod addcontract { } } } + impl Executable { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_import_contract::addcontract::Executable" + } + } pub static __SPEC_XDR_TYPE_EXECUTABLE: [u8; Executable::__SPEC_XDR_VIEW.const_xdr_len()] = Executable::spec_xdr(); impl Executable { @@ -4797,7 +4851,7 @@ mod addcontract { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Executable"), + name: soroban_sdk::xdr::StringMView::new_str(Executable::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { @@ -5355,6 +5409,12 @@ mod addcontract { ::core::option::Option::Some(::core::cmp::Ordering::Equal) } } + impl Error { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_import_contract::addcontract::Error" + } + } pub static __SPEC_XDR_TYPE_ERROR: [u8; Error::__SPEC_XDR_VIEW.const_xdr_len()] = Error::spec_xdr(); impl Error { @@ -5363,7 +5423,7 @@ mod addcontract { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Error"), + name: soroban_sdk::xdr::StringMView::new_str(Error::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -5534,6 +5594,12 @@ mod addcontract { ::core::option::Option::Some(::core::cmp::Ordering::Equal) } } + impl MyError { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_import_contract::addcontract::MyError" + } + } pub static __SPEC_XDR_TYPE_MYERROR: [u8; MyError::__SPEC_XDR_VIEW.const_xdr_len()] = MyError::spec_xdr(); impl MyError { @@ -5542,7 +5608,7 @@ mod addcontract { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"MyError"), + name: soroban_sdk::xdr::StringMView::new_str(MyError::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -5693,6 +5759,12 @@ impl ::core::cmp::PartialEq for Error { __self_discr == __arg1_discr } } +impl Error { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_import_contract::Error" + } +} pub static __SPEC_XDR_TYPE_ERROR: [u8; Error::__SPEC_XDR_VIEW.const_xdr_len()] = Error::spec_xdr(); impl Error { const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = @@ -5700,7 +5772,7 @@ impl Error { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Error"), + name: soroban_sdk::xdr::StringMView::new_str(Error::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), diff --git a/tests-expanded/test_import_contract_wasm32v1-none.rs b/tests-expanded/test_import_contract_wasm32v1-none.rs index 4fd4fab4a..7e7b6c1e5 100644 --- a/tests-expanded/test_import_contract_wasm32v1-none.rs +++ b/tests-expanded/test_import_contract_wasm32v1-none.rs @@ -6,7 +6,7 @@ extern crate core; use core::prelude::rust_2021::*; use soroban_sdk::{contract, contracterror, contractimpl, Address, Env}; mod addcontract { - pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01\x14\x04`\x01~\x01~`\x02\x7f~\x00`\x02~~\x01~`\x00\x00\x02\r\x02\x01i\x010\x00\x00\x01i\x01_\x00\x00\x03\x08\x07\x01\x01\x02\x03\x02\x02\x03\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x9c\x80\xc0\x00\x0b\x7f\x00A\x9c\x80\xc0\x00\x0b\x7f\x00A\xa0\x80\xc0\x00\x0b\x07I\x07\x06memory\x02\x00\x03add\x00\x04\x08safe_add\x00\x06\x0csafe_add_two\x00\x07\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xf3\x04\x07]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc0\x00F\r\x00\x02@ \x02A\x06F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x88!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x80\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0b;\x00\x02@\x02@ \x01B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x01B\x08\x86B\x06\x84!\x01\x0c\x01\x0b \x01\x10\x81\x80\x80\x80\x00!\x01\x0b \x00B\x007\x03\x00 \x00 \x017\x03\x08\x0b\x8e\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@\x02@\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08\"\x01 \x00|\"\x00 \x01T\r\x01 \x02 \x00\x10\x83\x80\x80\x80\x00 \x02(\x02\x00A\x01G\r\x02\x0b\x00\x0b\x10\x85\x80\x80\x80\x00\x00\x0b \x02)\x03\x08!\x00 \x02A\x10j$\x80\x80\x80\x80\x00 \x00\x0b\t\x00\x10\x88\x80\x80\x80\x00\x00\x0b\x9b\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x03 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00A\x00-\x00\x80\x80\xc0\x80\x00\x1aB\x83\x80\x80\x80\x10!\x01\x02@ \x00 \x03|\"\x03 \x00T\r\x00 \x02 \x03\x10\x83\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x01 \x02)\x03\x08!\x01\x0b \x02A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b\x00\x0b\x9b\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x03 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00A\x00-\x00\x8e\x80\xc0\x80\x00\x1aB\x83\x80\x80\x80\x10!\x01\x02@ \x00 \x03|\"\x03 \x00T\r\x00 \x02 \x03\x10\x83\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x01 \x02)\x03\x08!\x01\x0b \x02A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b\x00\x0b\x03\x00\x00\x0b\x0b%\x01\x00A\x80\x80\xc0\x00\x0b\x1cSpEcV1\xd6\xb8`\x15\xac\x9ei\x1aSpEcV1\x95\xd0j*\x1d\xfam\xa3\x00\xdf\x17\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03add\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05Error\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x08Overflow\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07MyError\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x08Overflow\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08safe_add\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x06\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0csafe_add_two\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x06\x00\x00\x07\xd0\x00\x00\x00\x07MyError\x00\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x07Context\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; + pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01\x14\x04`\x01~\x01~`\x02\x7f~\x00`\x02~~\x01~`\x00\x00\x02\r\x02\x01i\x010\x00\x00\x01i\x01_\x00\x00\x03\x08\x07\x01\x01\x02\x03\x02\x02\x03\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x9c\x80\xc0\x00\x0b\x7f\x00A\x9c\x80\xc0\x00\x0b\x7f\x00A\xa0\x80\xc0\x00\x0b\x07I\x07\x06memory\x02\x00\x03add\x00\x04\x08safe_add\x00\x06\x0csafe_add_two\x00\x07\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xf3\x04\x07]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc0\x00F\r\x00\x02@ \x02A\x06F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x88!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x80\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0b;\x00\x02@\x02@ \x01B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x01B\x08\x86B\x06\x84!\x01\x0c\x01\x0b \x01\x10\x81\x80\x80\x80\x00!\x01\x0b \x00B\x007\x03\x00 \x00 \x017\x03\x08\x0b\x8e\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@\x02@\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08\"\x01 \x00|\"\x00 \x01T\r\x01 \x02 \x00\x10\x83\x80\x80\x80\x00 \x02(\x02\x00A\x01G\r\x02\x0b\x00\x0b\x10\x85\x80\x80\x80\x00\x00\x0b \x02)\x03\x08!\x00 \x02A\x10j$\x80\x80\x80\x80\x00 \x00\x0b\t\x00\x10\x88\x80\x80\x80\x00\x00\x0b\x9b\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x03 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00A\x00-\x00\x80\x80\xc0\x80\x00\x1aB\x83\x80\x80\x80\x10!\x01\x02@ \x00 \x03|\"\x03 \x00T\r\x00 \x02 \x03\x10\x83\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x01 \x02)\x03\x08!\x01\x0b \x02A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b\x00\x0b\x9b\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x03 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00A\x00-\x00\x8e\x80\xc0\x80\x00\x1aB\x83\x80\x80\x80\x10!\x01\x02@ \x00 \x03|\"\x03 \x00T\r\x00 \x02 \x03\x10\x83\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x01 \x02)\x03\x08!\x01\x0b \x02A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b\x00\x0b\x03\x00\x00\x0b\x0b%\x01\x00A\x80\x80\xc0\x00\x0b\x1cSpEcV1\xd22/\\\x8c\x82\xb2GSpEcV1\xa3z\xb5\xbfR\xaeOu\x00\xeb\x1a\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03add\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13test_add_u64::Error\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x08Overflow\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15test_add_u64::MyError\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x08Overflow\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08safe_add\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x06\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0csafe_add_two\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x06\x00\x00\x07\xd0\x00\x00\x00\x15test_add_u64::MyError\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x1asoroban_sdk::auth::Context\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00(soroban_sdk::auth::SubContractInvocation\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00+soroban_sdk::auth::InvokerContractAuthEntry\x00\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00+soroban_sdk::auth::InvokerContractAuthEntry\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00(soroban_sdk::auth::SubContractInvocation\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 soroban_sdk::address::Executable\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; pub trait Contract { fn add(env: soroban_sdk::Env, a: u64, b: u64) -> u64; fn safe_add(env: soroban_sdk::Env, a: u64, b: u64) -> Result; @@ -261,6 +261,12 @@ mod addcontract { } } } + impl ContractContext { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_import_contract::addcontract::ContractContext" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_CONTRACTCONTEXT: [u8; ContractContext::__SPEC_XDR_VIEW .const_xdr_len()] = ContractContext::spec_xdr(); @@ -270,7 +276,7 @@ mod addcontract { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"ContractContext"), + name: soroban_sdk::xdr::StringMView::new_str(ContractContext::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -450,6 +456,12 @@ mod addcontract { } } } + impl SubContractInvocation { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_import_contract::addcontract::SubContractInvocation" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_SUBCONTRACTINVOCATION: [u8; SubContractInvocation::__SPEC_XDR_VIEW .const_xdr_len()] = SubContractInvocation::spec_xdr(); @@ -459,14 +471,18 @@ mod addcontract { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"SubContractInvocation"), + name: soroban_sdk::xdr::StringMView::new_str( + SubContractInvocation::spec_type_name(), + ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), name: soroban_sdk::xdr::StringMView::new(b"context"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"ContractContext"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -477,8 +493,8 @@ mod addcontract { &soroban_sdk::xdr::ScSpecTypeVecView { element_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"InvokerContractAuthEntry", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -635,6 +651,12 @@ mod addcontract { } } } + impl CreateContractHostFnContext { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_import_contract::addcontract::CreateContractHostFnContext" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_CREATECONTRACTHOSTFNCONTEXT: [u8; CreateContractHostFnContext::__SPEC_XDR_VIEW.const_xdr_len()] = @@ -645,14 +667,18 @@ mod addcontract { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"CreateContractHostFnContext"), + name: soroban_sdk::xdr::StringMView::new_str( + CreateContractHostFnContext::spec_type_name(), + ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), name: soroban_sdk::xdr::StringMView::new(b"executable"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"ContractExecutable"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -834,6 +860,12 @@ mod addcontract { } } } + impl CreateContractWithConstructorHostFnContext { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_import_contract::addcontract::CreateContractWithConstructorHostFnContext" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_CREATECONTRACTWITHCONSTRUCTORHOSTFNCONTEXT: [u8; CreateContractWithConstructorHostFnContext::__SPEC_XDR_VIEW.const_xdr_len()] = @@ -844,8 +876,8 @@ mod addcontract { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithConstructorHostFnContext", + name: soroban_sdk::xdr::StringMView::new_str( + CreateContractWithConstructorHostFnContext::spec_type_name(), ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { @@ -862,7 +894,9 @@ mod addcontract { name: soroban_sdk::xdr::StringMView::new(b"executable"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"ContractExecutable"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -1096,65 +1130,68 @@ mod addcontract { } } } + impl Context { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_import_contract::addcontract::Context" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_CONTEXT: [u8; Context::__SPEC_XDR_VIEW.const_xdr_len()] = Context::spec_xdr(); impl Context { - const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = - soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Context"), - cases: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Contract"), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"ContractContext", - ), - }, - ), - ]), - }, - ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"CreateContractHostFn"), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractHostFnContext", - ), - }, - ), - ]), - }, - ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithCtorHostFn", - ), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithConstructorHostFnContext", - ), - }, - ), - ]), - }, - ), - ]), - }); + const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + lib: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new_str(Context::spec_type_name()), + cases: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new(b"Contract"), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractWithCtorHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), + }), + ], + ), + }), + ], + ), + }); pub const fn spec_xdr() -> [u8; Context::__SPEC_XDR_VIEW.const_xdr_len()] { Context::__SPEC_XDR_VIEW.const_to_xdr() } @@ -1347,6 +1384,12 @@ mod addcontract { } } } + impl ContractExecutable { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_import_contract::addcontract::ContractExecutable" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_CONTRACTEXECUTABLE: [u8; ContractExecutable::__SPEC_XDR_VIEW .const_xdr_len()] = ContractExecutable::spec_xdr(); @@ -1355,7 +1398,7 @@ mod addcontract { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"ContractExecutable"), + name: soroban_sdk::xdr::StringMView::new_str(ContractExecutable::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { @@ -1591,66 +1634,71 @@ mod addcontract { } } } + impl InvokerContractAuthEntry { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_import_contract::addcontract::InvokerContractAuthEntry" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_INVOKERCONTRACTAUTHENTRY: [u8; InvokerContractAuthEntry::__SPEC_XDR_VIEW.const_xdr_len()] = InvokerContractAuthEntry::spec_xdr(); impl InvokerContractAuthEntry { - const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = - soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"InvokerContractAuthEntry"), - cases: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Contract"), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"SubContractInvocation", - ), - }, - ), - ]), - }, - ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"CreateContractHostFn"), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractHostFnContext", - ), - }, - ), - ]), - }, - ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithCtorHostFn", - ), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithConstructorHostFnContext", - ), - }, - ), - ]), - }, - ), - ]), - }); + const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + lib: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new_str( + InvokerContractAuthEntry::spec_type_name(), + ), + cases: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new(b"Contract"), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractWithCtorHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), + }), + ], + ), + }), + ], + ), + }); pub const fn spec_xdr() -> [u8; InvokerContractAuthEntry::__SPEC_XDR_VIEW.const_xdr_len()] { InvokerContractAuthEntry::__SPEC_XDR_VIEW.const_to_xdr() } @@ -1862,6 +1910,12 @@ mod addcontract { } } } + impl Executable { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_import_contract::addcontract::Executable" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_EXECUTABLE: [u8; Executable::__SPEC_XDR_VIEW.const_xdr_len()] = Executable::spec_xdr(); @@ -1870,7 +1924,7 @@ mod addcontract { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Executable"), + name: soroban_sdk::xdr::StringMView::new_str(Executable::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { @@ -2047,6 +2101,12 @@ mod addcontract { ::core::option::Option::Some(::core::cmp::Ordering::Equal) } } + impl Error { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_import_contract::addcontract::Error" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_ERROR: [u8; Error::__SPEC_XDR_VIEW.const_xdr_len()] = Error::spec_xdr(); @@ -2056,7 +2116,7 @@ mod addcontract { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Error"), + name: soroban_sdk::xdr::StringMView::new_str(Error::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -2232,6 +2292,12 @@ mod addcontract { ::core::option::Option::Some(::core::cmp::Ordering::Equal) } } + impl MyError { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_import_contract::addcontract::MyError" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_MYERROR: [u8; MyError::__SPEC_XDR_VIEW.const_xdr_len()] = MyError::spec_xdr(); @@ -2241,7 +2307,7 @@ mod addcontract { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"MyError"), + name: soroban_sdk::xdr::StringMView::new_str(MyError::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -2397,6 +2463,12 @@ impl ::core::cmp::PartialEq for Error { __self_discr == __arg1_discr } } +impl Error { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_import_contract::Error" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_ERROR: [u8; Error::__SPEC_XDR_VIEW.const_xdr_len()] = Error::spec_xdr(); impl Error { @@ -2405,7 +2477,7 @@ impl Error { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Error"), + name: soroban_sdk::xdr::StringMView::new_str(Error::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), diff --git a/tests-expanded/test_spec_import_tests.rs b/tests-expanded/test_spec_import_tests.rs index a7565d9e6..17efc8ee9 100644 --- a/tests-expanded/test_spec_import_tests.rs +++ b/tests-expanded/test_spec_import_tests.rs @@ -83,7 +83,7 @@ impl Contract { ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"StructA"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -125,7 +125,7 @@ impl Contract { ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"StructTupleA"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -153,7 +153,7 @@ impl Contract { inputs: soroban_sdk::xdr::VecMView::new(&[]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"EnumA"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -182,7 +182,7 @@ impl Contract { inputs: soroban_sdk::xdr::VecMView::new(&[]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"EnumIntA"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -220,7 +220,9 @@ impl Contract { ok_type: &soroban_sdk::xdr::ScSpecTypeDefView::U32, error_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"ErrorA"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, diff --git a/tests-expanded/test_spec_import_wasm32v1-none.rs b/tests-expanded/test_spec_import_wasm32v1-none.rs index 228c7c5a6..80fb8e51c 100644 --- a/tests-expanded/test_spec_import_wasm32v1-none.rs +++ b/tests-expanded/test_spec_import_wasm32v1-none.rs @@ -84,7 +84,7 @@ impl Contract { ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"StructA"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -127,7 +127,7 @@ impl Contract { ]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"StructTupleA"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -156,7 +156,7 @@ impl Contract { inputs: soroban_sdk::xdr::VecMView::new(&[]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"EnumA"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -186,7 +186,7 @@ impl Contract { inputs: soroban_sdk::xdr::VecMView::new(&[]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"EnumIntA"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -225,7 +225,9 @@ impl Contract { ok_type: &soroban_sdk::xdr::ScSpecTypeDefView::U32, error_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"ErrorA"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, diff --git a/tests-expanded/test_spec_lib_tests.rs b/tests-expanded/test_spec_lib_tests.rs index 5d91e5cde..0127f951c 100644 --- a/tests-expanded/test_spec_lib_tests.rs +++ b/tests-expanded/test_spec_lib_tests.rs @@ -47,6 +47,12 @@ impl ::core::cmp::PartialEq for StructA { self.f1 == other.f1 && self.f2 == other.f2 } } +impl StructA { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::StructA" + } +} pub static __SPEC_XDR_TYPE_STRUCTA: [u8; StructA::__SPEC_XDR_VIEW.const_xdr_len()] = StructA::spec_xdr(); impl StructA { @@ -54,7 +60,7 @@ impl StructA { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"StructA"), + name: soroban_sdk::xdr::StringMView::new_str(StructA::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -482,6 +488,12 @@ impl ::core::cmp::PartialEq for StructB { self.f1 == other.f1 && self.f2 == other.f2 } } +impl StructB { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::StructB" + } +} pub static __SPEC_XDR_TYPE_STRUCTB: [u8; StructB::__SPEC_XDR_VIEW.const_xdr_len()] = StructB::spec_xdr(); impl StructB { @@ -489,7 +501,7 @@ impl StructB { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"StructB"), + name: soroban_sdk::xdr::StringMView::new_str(StructB::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -917,6 +929,12 @@ impl ::core::cmp::PartialEq for StructC { self.f1 == other.f1 && self.f2 == other.f2 } } +impl StructC { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::StructC" + } +} pub static __SPEC_XDR_TYPE_STRUCTC: [u8; StructC::__SPEC_XDR_VIEW.const_xdr_len()] = StructC::spec_xdr(); impl StructC { @@ -924,7 +942,7 @@ impl StructC { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"StructC"), + name: soroban_sdk::xdr::StringMView::new_str(StructC::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -1352,6 +1370,12 @@ impl ::core::cmp::PartialEq for StructTupleA { self.0 == other.0 && self.1 == other.1 } } +impl StructTupleA { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::StructTupleA" + } +} pub static __SPEC_XDR_TYPE_STRUCTTUPLEA: [u8; StructTupleA::__SPEC_XDR_VIEW.const_xdr_len()] = StructTupleA::spec_xdr(); impl StructTupleA { @@ -1359,7 +1383,7 @@ impl StructTupleA { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"StructTupleA"), + name: soroban_sdk::xdr::StringMView::new_str(StructTupleA::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -1747,6 +1771,12 @@ impl ::core::cmp::PartialEq for StructTupleB { self.0 == other.0 && self.1 == other.1 } } +impl StructTupleB { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::StructTupleB" + } +} pub static __SPEC_XDR_TYPE_STRUCTTUPLEB: [u8; StructTupleB::__SPEC_XDR_VIEW.const_xdr_len()] = StructTupleB::spec_xdr(); impl StructTupleB { @@ -1754,7 +1784,7 @@ impl StructTupleB { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"StructTupleB"), + name: soroban_sdk::xdr::StringMView::new_str(StructTupleB::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -2143,6 +2173,12 @@ impl ::core::cmp::PartialEq for StructTupleC { self.1 == other.1 && self.0 == other.0 } } +impl StructTupleC { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::StructTupleC" + } +} pub static __SPEC_XDR_TYPE_STRUCTTUPLEC: [u8; StructTupleC::__SPEC_XDR_VIEW.const_xdr_len()] = StructTupleC::spec_xdr(); impl StructTupleC { @@ -2150,7 +2186,7 @@ impl StructTupleC { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"StructTupleC"), + name: soroban_sdk::xdr::StringMView::new_str(StructTupleC::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -2550,13 +2586,19 @@ impl ::core::cmp::PartialEq for EnumA { __self_discr == __arg1_discr } } +impl EnumA { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::EnumA" + } +} pub static __SPEC_XDR_TYPE_ENUMA: [u8; EnumA::__SPEC_XDR_VIEW.const_xdr_len()] = EnumA::spec_xdr(); impl EnumA { const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"EnumA"), + name: soroban_sdk::xdr::StringMView::new_str(EnumA::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::VoidV0( soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0View { @@ -3046,13 +3088,19 @@ impl ::core::cmp::PartialEq for EnumB { } } } +impl EnumB { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::EnumB" + } +} pub static __SPEC_XDR_TYPE_ENUMB: [u8; EnumB::__SPEC_XDR_VIEW.const_xdr_len()] = EnumB::spec_xdr(); impl EnumB { const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"EnumB"), + name: soroban_sdk::xdr::StringMView::new_str(EnumB::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::VoidV0( soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0View { @@ -3673,13 +3721,19 @@ impl ::core::cmp::PartialEq for EnumC { } } } +impl EnumC { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::EnumC" + } +} pub static __SPEC_XDR_TYPE_ENUMC: [u8; EnumC::__SPEC_XDR_VIEW.const_xdr_len()] = EnumC::spec_xdr(); impl EnumC { const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"EnumC"), + name: soroban_sdk::xdr::StringMView::new_str(EnumC::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::VoidV0( soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0View { @@ -3694,7 +3748,9 @@ impl EnumC { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"StructA"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), ]), @@ -3707,7 +3763,9 @@ impl EnumC { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"StructTupleA"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), ]), @@ -4259,6 +4317,12 @@ impl ::core::cmp::PartialEq for EnumIntA { __self_discr == __arg1_discr } } +impl EnumIntA { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::EnumIntA" + } +} pub static __SPEC_XDR_TYPE_ENUMINTA: [u8; EnumIntA::__SPEC_XDR_VIEW.const_xdr_len()] = EnumIntA::spec_xdr(); impl EnumIntA { @@ -4266,7 +4330,7 @@ impl EnumIntA { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"EnumIntA"), + name: soroban_sdk::xdr::StringMView::new_str(EnumIntA::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -4626,6 +4690,12 @@ impl ::core::cmp::PartialEq for EnumIntB { __self_discr == __arg1_discr } } +impl EnumIntB { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::EnumIntB" + } +} pub static __SPEC_XDR_TYPE_ENUMINTB: [u8; EnumIntB::__SPEC_XDR_VIEW.const_xdr_len()] = EnumIntB::spec_xdr(); impl EnumIntB { @@ -4633,7 +4703,7 @@ impl EnumIntB { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"EnumIntB"), + name: soroban_sdk::xdr::StringMView::new_str(EnumIntB::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -4993,6 +5063,12 @@ impl ::core::cmp::PartialEq for EnumIntC { __self_discr == __arg1_discr } } +impl EnumIntC { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::EnumIntC" + } +} pub static __SPEC_XDR_TYPE_ENUMINTC: [u8; EnumIntC::__SPEC_XDR_VIEW.const_xdr_len()] = EnumIntC::spec_xdr(); impl EnumIntC { @@ -5000,7 +5076,7 @@ impl EnumIntC { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"EnumIntC"), + name: soroban_sdk::xdr::StringMView::new_str(EnumIntC::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -5360,6 +5436,12 @@ impl ::core::cmp::PartialEq for ErrorA { __self_discr == __arg1_discr } } +impl ErrorA { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::ErrorA" + } +} pub static __SPEC_XDR_TYPE_ERRORA: [u8; ErrorA::__SPEC_XDR_VIEW.const_xdr_len()] = ErrorA::spec_xdr(); impl ErrorA { @@ -5368,7 +5450,7 @@ impl ErrorA { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"ErrorA"), + name: soroban_sdk::xdr::StringMView::new_str(ErrorA::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -5554,6 +5636,12 @@ impl ::core::cmp::PartialEq for ErrorB { __self_discr == __arg1_discr } } +impl ErrorB { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::ErrorB" + } +} pub static __SPEC_XDR_TYPE_ERRORB: [u8; ErrorB::__SPEC_XDR_VIEW.const_xdr_len()] = ErrorB::spec_xdr(); impl ErrorB { @@ -5562,7 +5650,7 @@ impl ErrorB { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"ErrorB"), + name: soroban_sdk::xdr::StringMView::new_str(ErrorB::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -5748,6 +5836,12 @@ impl ::core::cmp::PartialEq for ErrorC { __self_discr == __arg1_discr } } +impl ErrorC { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::ErrorC" + } +} pub static __SPEC_XDR_TYPE_ERRORC: [u8; ErrorC::__SPEC_XDR_VIEW.const_xdr_len()] = ErrorC::spec_xdr(); impl ErrorC { @@ -5756,7 +5850,7 @@ impl ErrorC { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"ErrorC"), + name: soroban_sdk::xdr::StringMView::new_str(ErrorC::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -5938,6 +6032,12 @@ impl ::core::cmp::PartialEq for EventA { self.f1 == other.f1 && self.f2 == other.f2 } } +impl EventA { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::EventA" + } +} pub static __SPEC_XDR_EVENT_EVENTA: [u8; EventA::__SPEC_XDR_VIEW.const_xdr_len()] = EventA::spec_xdr(); impl EventA { @@ -5945,7 +6045,7 @@ impl EventA { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new(b"EventA")), + name: soroban_sdk::xdr::StringMView::new_str(EventA::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"event_a"), )]), @@ -6052,6 +6152,12 @@ impl ::core::cmp::PartialEq for EventB { self.f3 == other.f3 && self.f1 == other.f1 && self.f2 == other.f2 } } +impl EventB { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::EventB" + } +} pub static __SPEC_XDR_EVENT_EVENTB: [u8; EventB::__SPEC_XDR_VIEW.const_xdr_len()] = EventB::spec_xdr(); impl EventB { @@ -6059,7 +6165,7 @@ impl EventB { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new(b"EventB")), + name: soroban_sdk::xdr::StringMView::new_str(EventB::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"event_b"), )]), @@ -6177,6 +6283,12 @@ impl ::core::cmp::PartialEq for EventC { self.f2 == other.f2 && self.f3 == other.f3 && self.f1 == other.f1 } } +impl EventC { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::EventC" + } +} pub static __SPEC_XDR_EVENT_EVENTC: [u8; EventC::__SPEC_XDR_VIEW.const_xdr_len()] = EventC::spec_xdr(); impl EventC { @@ -6184,7 +6296,7 @@ impl EventC { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new(b"EventC")), + name: soroban_sdk::xdr::StringMView::new_str(EventC::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"event_c"), )]), @@ -6285,6 +6397,12 @@ impl ::core::cmp::PartialEq for EventD { true } } +impl EventD { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::EventD" + } +} pub static __SPEC_XDR_EVENT_EVENTD: [u8; EventD::__SPEC_XDR_VIEW.const_xdr_len()] = EventD::spec_xdr(); impl EventD { @@ -6292,7 +6410,7 @@ impl EventD { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new(b"EventD")), + name: soroban_sdk::xdr::StringMView::new_str(EventD::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"event_d"), )]), diff --git a/tests-expanded/test_spec_lib_wasm32v1-none.rs b/tests-expanded/test_spec_lib_wasm32v1-none.rs index ccdb111ae..52372ae7b 100644 --- a/tests-expanded/test_spec_lib_wasm32v1-none.rs +++ b/tests-expanded/test_spec_lib_wasm32v1-none.rs @@ -47,6 +47,12 @@ impl ::core::cmp::PartialEq for StructA { self.f1 == other.f1 && self.f2 == other.f2 } } +impl StructA { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::StructA" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_STRUCTA: [u8; StructA::__SPEC_XDR_VIEW.const_xdr_len()] = StructA::spec_xdr(); @@ -55,7 +61,7 @@ impl StructA { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"StructA"), + name: soroban_sdk::xdr::StringMView::new_str(StructA::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -177,6 +183,12 @@ impl ::core::cmp::PartialEq for StructB { self.f1 == other.f1 && self.f2 == other.f2 } } +impl StructB { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::StructB" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_STRUCTB: [u8; StructB::__SPEC_XDR_VIEW.const_xdr_len()] = StructB::spec_xdr(); @@ -185,7 +197,7 @@ impl StructB { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"StructB"), + name: soroban_sdk::xdr::StringMView::new_str(StructB::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -307,6 +319,12 @@ impl ::core::cmp::PartialEq for StructC { self.f1 == other.f1 && self.f2 == other.f2 } } +impl StructC { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::StructC" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_STRUCTC: [u8; StructC::__SPEC_XDR_VIEW.const_xdr_len()] = StructC::spec_xdr(); @@ -315,7 +333,7 @@ impl StructC { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"StructC"), + name: soroban_sdk::xdr::StringMView::new_str(StructC::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -435,6 +453,12 @@ impl ::core::cmp::PartialEq for StructTupleA { self.0 == other.0 && self.1 == other.1 } } +impl StructTupleA { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::StructTupleA" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_STRUCTTUPLEA: [u8; StructTupleA::__SPEC_XDR_VIEW.const_xdr_len()] = StructTupleA::spec_xdr(); @@ -443,7 +467,7 @@ impl StructTupleA { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"StructTupleA"), + name: soroban_sdk::xdr::StringMView::new_str(StructTupleA::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -555,6 +579,12 @@ impl ::core::cmp::PartialEq for StructTupleB { self.0 == other.0 && self.1 == other.1 } } +impl StructTupleB { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::StructTupleB" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_STRUCTTUPLEB: [u8; StructTupleB::__SPEC_XDR_VIEW.const_xdr_len()] = StructTupleB::spec_xdr(); @@ -563,7 +593,7 @@ impl StructTupleB { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"StructTupleB"), + name: soroban_sdk::xdr::StringMView::new_str(StructTupleB::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -676,6 +706,12 @@ impl ::core::cmp::PartialEq for StructTupleC { self.1 == other.1 && self.0 == other.0 } } +impl StructTupleC { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::StructTupleC" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_STRUCTTUPLEC: [u8; StructTupleC::__SPEC_XDR_VIEW.const_xdr_len()] = StructTupleC::spec_xdr(); @@ -684,7 +720,7 @@ impl StructTupleC { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"StructTupleC"), + name: soroban_sdk::xdr::StringMView::new_str(StructTupleC::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -808,6 +844,12 @@ impl ::core::cmp::PartialEq for EnumA { __self_discr == __arg1_discr } } +impl EnumA { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::EnumA" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_ENUMA: [u8; EnumA::__SPEC_XDR_VIEW.const_xdr_len()] = EnumA::spec_xdr(); impl EnumA { @@ -815,7 +857,7 @@ impl EnumA { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"EnumA"), + name: soroban_sdk::xdr::StringMView::new_str(EnumA::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::VoidV0( soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0View { @@ -991,6 +1033,12 @@ impl ::core::cmp::PartialEq for EnumB { } } } +impl EnumB { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::EnumB" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_ENUMB: [u8; EnumB::__SPEC_XDR_VIEW.const_xdr_len()] = EnumB::spec_xdr(); impl EnumB { @@ -998,7 +1046,7 @@ impl EnumB { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"EnumB"), + name: soroban_sdk::xdr::StringMView::new_str(EnumB::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::VoidV0( soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0View { @@ -1194,6 +1242,12 @@ impl ::core::cmp::PartialEq for EnumC { } } } +impl EnumC { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::EnumC" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_ENUMC: [u8; EnumC::__SPEC_XDR_VIEW.const_xdr_len()] = EnumC::spec_xdr(); impl EnumC { @@ -1201,7 +1255,7 @@ impl EnumC { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"EnumC"), + name: soroban_sdk::xdr::StringMView::new_str(EnumC::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::VoidV0( soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0View { @@ -1216,7 +1270,9 @@ impl EnumC { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"StructA"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), ]), @@ -1229,7 +1285,9 @@ impl EnumC { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"StructTupleA"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), ]), @@ -1390,6 +1448,12 @@ impl ::core::cmp::PartialEq for EnumIntA { __self_discr == __arg1_discr } } +impl EnumIntA { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::EnumIntA" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_ENUMINTA: [u8; EnumIntA::__SPEC_XDR_VIEW.const_xdr_len()] = EnumIntA::spec_xdr(); @@ -1398,7 +1462,7 @@ impl EnumIntA { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"EnumIntA"), + name: soroban_sdk::xdr::StringMView::new_str(EnumIntA::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -1518,6 +1582,12 @@ impl ::core::cmp::PartialEq for EnumIntB { __self_discr == __arg1_discr } } +impl EnumIntB { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::EnumIntB" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_ENUMINTB: [u8; EnumIntB::__SPEC_XDR_VIEW.const_xdr_len()] = EnumIntB::spec_xdr(); @@ -1526,7 +1596,7 @@ impl EnumIntB { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"EnumIntB"), + name: soroban_sdk::xdr::StringMView::new_str(EnumIntB::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -1646,6 +1716,12 @@ impl ::core::cmp::PartialEq for EnumIntC { __self_discr == __arg1_discr } } +impl EnumIntC { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::EnumIntC" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_ENUMINTC: [u8; EnumIntC::__SPEC_XDR_VIEW.const_xdr_len()] = EnumIntC::spec_xdr(); @@ -1654,7 +1730,7 @@ impl EnumIntC { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"EnumIntC"), + name: soroban_sdk::xdr::StringMView::new_str(EnumIntC::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -1774,6 +1850,12 @@ impl ::core::cmp::PartialEq for ErrorA { __self_discr == __arg1_discr } } +impl ErrorA { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::ErrorA" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_ERRORA: [u8; ErrorA::__SPEC_XDR_VIEW.const_xdr_len()] = ErrorA::spec_xdr(); @@ -1783,7 +1865,7 @@ impl ErrorA { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"ErrorA"), + name: soroban_sdk::xdr::StringMView::new_str(ErrorA::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -1974,6 +2056,12 @@ impl ::core::cmp::PartialEq for ErrorB { __self_discr == __arg1_discr } } +impl ErrorB { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::ErrorB" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_ERRORB: [u8; ErrorB::__SPEC_XDR_VIEW.const_xdr_len()] = ErrorB::spec_xdr(); @@ -1983,7 +2071,7 @@ impl ErrorB { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"ErrorB"), + name: soroban_sdk::xdr::StringMView::new_str(ErrorB::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -2174,6 +2262,12 @@ impl ::core::cmp::PartialEq for ErrorC { __self_discr == __arg1_discr } } +impl ErrorC { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::ErrorC" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_ERRORC: [u8; ErrorC::__SPEC_XDR_VIEW.const_xdr_len()] = ErrorC::spec_xdr(); @@ -2183,7 +2277,7 @@ impl ErrorC { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"ErrorC"), + name: soroban_sdk::xdr::StringMView::new_str(ErrorC::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -2370,6 +2464,12 @@ impl ::core::cmp::PartialEq for EventA { self.f1 == other.f1 && self.f2 == other.f2 } } +impl EventA { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::EventA" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_EVENT_EVENTA: [u8; EventA::__SPEC_XDR_VIEW.const_xdr_len()] = EventA::spec_xdr(); @@ -2378,7 +2478,7 @@ impl EventA { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new(b"EventA")), + name: soroban_sdk::xdr::StringMView::new_str(EventA::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"event_a"), )]), @@ -2489,6 +2589,12 @@ impl ::core::cmp::PartialEq for EventB { self.f3 == other.f3 && self.f1 == other.f1 && self.f2 == other.f2 } } +impl EventB { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::EventB" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_EVENT_EVENTB: [u8; EventB::__SPEC_XDR_VIEW.const_xdr_len()] = EventB::spec_xdr(); @@ -2497,7 +2603,7 @@ impl EventB { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new(b"EventB")), + name: soroban_sdk::xdr::StringMView::new_str(EventB::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"event_b"), )]), @@ -2619,6 +2725,12 @@ impl ::core::cmp::PartialEq for EventC { self.f2 == other.f2 && self.f3 == other.f3 && self.f1 == other.f1 } } +impl EventC { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::EventC" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_EVENT_EVENTC: [u8; EventC::__SPEC_XDR_VIEW.const_xdr_len()] = EventC::spec_xdr(); @@ -2627,7 +2739,7 @@ impl EventC { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new(b"EventC")), + name: soroban_sdk::xdr::StringMView::new_str(EventC::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"event_c"), )]), @@ -2732,6 +2844,12 @@ impl ::core::cmp::PartialEq for EventD { true } } +impl EventD { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_lib::EventD" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_EVENT_EVENTD: [u8; EventD::__SPEC_XDR_VIEW.const_xdr_len()] = EventD::spec_xdr(); @@ -2740,7 +2858,7 @@ impl EventD { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new(b"EventD")), + name: soroban_sdk::xdr::StringMView::new_str(EventD::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"event_d"), )]), diff --git a/tests-expanded/test_spec_shaking_v2_tests.rs b/tests-expanded/test_spec_shaking_v2_tests.rs index b82dbd204..d629a3968 100644 --- a/tests-expanded/test_spec_shaking_v2_tests.rs +++ b/tests-expanded/test_spec_shaking_v2_tests.rs @@ -186,6 +186,12 @@ impl ::core::cmp::PartialEq for UsedParamStruct { self.a == other.a && self.nested == other.nested } } +impl UsedParamStruct { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedParamStruct" + } +} pub static __SPEC_XDR_TYPE_USEDPARAMSTRUCT: [u8; UsedParamStruct::__SPEC_XDR_VIEW.const_xdr_len()] = UsedParamStruct::spec_xdr(); impl UsedParamStruct { @@ -193,7 +199,7 @@ impl UsedParamStruct { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedParamStruct"), + name: soroban_sdk::xdr::StringMView::new_str(UsedParamStruct::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -205,7 +211,9 @@ impl UsedParamStruct { name: soroban_sdk::xdr::StringMView::new(b"nested"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedNestedInStruct"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -644,6 +652,12 @@ impl ::core::cmp::PartialEq for UsedReturnEnum { } } } +impl UsedReturnEnum { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedReturnEnum" + } +} pub static __SPEC_XDR_TYPE_USEDRETURNENUM: [u8; UsedReturnEnum::__SPEC_XDR_VIEW.const_xdr_len()] = UsedReturnEnum::spec_xdr(); impl UsedReturnEnum { @@ -651,7 +665,7 @@ impl UsedReturnEnum { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedReturnEnum"), + name: soroban_sdk::xdr::StringMView::new_str(UsedReturnEnum::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { @@ -1187,6 +1201,12 @@ impl ::core::cmp::PartialEq for UsedParamIntEnum { __self_discr == __arg1_discr } } +impl UsedParamIntEnum { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedParamIntEnum" + } +} pub static __SPEC_XDR_TYPE_USEDPARAMINTENUM: [u8; UsedParamIntEnum::__SPEC_XDR_VIEW .const_xdr_len()] = UsedParamIntEnum::spec_xdr(); impl UsedParamIntEnum { @@ -1194,7 +1214,7 @@ impl UsedParamIntEnum { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedParamIntEnum"), + name: soroban_sdk::xdr::StringMView::new_str(UsedParamIntEnum::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -1537,6 +1557,12 @@ impl ::core::cmp::PartialEq for UsedErrorEnum { __self_discr == __arg1_discr } } +impl UsedErrorEnum { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedErrorEnum" + } +} pub static __SPEC_XDR_TYPE_USEDERRORENUM: [u8; UsedErrorEnum::__SPEC_XDR_VIEW.const_xdr_len()] = UsedErrorEnum::spec_xdr(); impl UsedErrorEnum { @@ -1545,7 +1571,7 @@ impl UsedErrorEnum { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedErrorEnum"), + name: soroban_sdk::xdr::StringMView::new_str(UsedErrorEnum::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -1711,6 +1737,12 @@ impl ::core::cmp::PartialEq for UsedPanicErrorEnum { true } } +impl UsedPanicErrorEnum { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedPanicErrorEnum" + } +} pub static __SPEC_XDR_TYPE_USEDPANICERRORENUM: [u8; UsedPanicErrorEnum::__SPEC_XDR_VIEW .const_xdr_len()] = UsedPanicErrorEnum::spec_xdr(); impl UsedPanicErrorEnum { @@ -1719,7 +1751,7 @@ impl UsedPanicErrorEnum { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedPanicErrorEnum"), + name: soroban_sdk::xdr::StringMView::new_str(UsedPanicErrorEnum::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -1878,6 +1910,12 @@ impl ::core::cmp::PartialEq for UsedAssertErrorEnum { true } } +impl UsedAssertErrorEnum { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedAssertErrorEnum" + } +} pub static __SPEC_XDR_TYPE_USEDASSERTERRORENUM: [u8; UsedAssertErrorEnum::__SPEC_XDR_VIEW .const_xdr_len()] = UsedAssertErrorEnum::spec_xdr(); impl UsedAssertErrorEnum { @@ -1886,7 +1924,7 @@ impl UsedAssertErrorEnum { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedAssertErrorEnum"), + name: soroban_sdk::xdr::StringMView::new_str(UsedAssertErrorEnum::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -2052,6 +2090,12 @@ impl ::core::cmp::PartialEq for UsedNestedInStruct { self.val == other.val } } +impl UsedNestedInStruct { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedNestedInStruct" + } +} pub static __SPEC_XDR_TYPE_USEDNESTEDINSTRUCT: [u8; UsedNestedInStruct::__SPEC_XDR_VIEW .const_xdr_len()] = UsedNestedInStruct::spec_xdr(); impl UsedNestedInStruct { @@ -2059,7 +2103,7 @@ impl UsedNestedInStruct { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedNestedInStruct"), + name: soroban_sdk::xdr::StringMView::new_str(UsedNestedInStruct::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -2430,6 +2474,12 @@ impl ::core::cmp::PartialEq for UsedVecElement { self.data == other.data } } +impl UsedVecElement { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedVecElement" + } +} pub static __SPEC_XDR_TYPE_USEDVECELEMENT: [u8; UsedVecElement::__SPEC_XDR_VIEW.const_xdr_len()] = UsedVecElement::spec_xdr(); impl UsedVecElement { @@ -2437,7 +2487,7 @@ impl UsedVecElement { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedVecElement"), + name: soroban_sdk::xdr::StringMView::new_str(UsedVecElement::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -2813,6 +2863,12 @@ impl ::core::cmp::PartialEq for UsedMapKey { __self_discr == __arg1_discr } } +impl UsedMapKey { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedMapKey" + } +} pub static __SPEC_XDR_TYPE_USEDMAPKEY: [u8; UsedMapKey::__SPEC_XDR_VIEW.const_xdr_len()] = UsedMapKey::spec_xdr(); impl UsedMapKey { @@ -2820,7 +2876,7 @@ impl UsedMapKey { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedMapKey"), + name: soroban_sdk::xdr::StringMView::new_str(UsedMapKey::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -3154,6 +3210,12 @@ impl ::core::cmp::PartialEq for UsedMapVal { self.v == other.v } } +impl UsedMapVal { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedMapVal" + } +} pub static __SPEC_XDR_TYPE_USEDMAPVAL: [u8; UsedMapVal::__SPEC_XDR_VIEW.const_xdr_len()] = UsedMapVal::spec_xdr(); impl UsedMapVal { @@ -3161,7 +3223,7 @@ impl UsedMapVal { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedMapVal"), + name: soroban_sdk::xdr::StringMView::new_str(UsedMapVal::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -3531,6 +3593,12 @@ impl ::core::cmp::PartialEq for UsedOptionElement { self.data == other.data } } +impl UsedOptionElement { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedOptionElement" + } +} pub static __SPEC_XDR_TYPE_USEDOPTIONELEMENT: [u8; UsedOptionElement::__SPEC_XDR_VIEW .const_xdr_len()] = UsedOptionElement::spec_xdr(); impl UsedOptionElement { @@ -3538,7 +3606,7 @@ impl UsedOptionElement { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedOptionElement"), + name: soroban_sdk::xdr::StringMView::new_str(UsedOptionElement::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -3907,6 +3975,12 @@ impl ::core::cmp::PartialEq for UsedResultOk { self.data == other.data } } +impl UsedResultOk { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedResultOk" + } +} pub static __SPEC_XDR_TYPE_USEDRESULTOK: [u8; UsedResultOk::__SPEC_XDR_VIEW.const_xdr_len()] = UsedResultOk::spec_xdr(); impl UsedResultOk { @@ -3914,7 +3988,7 @@ impl UsedResultOk { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedResultOk"), + name: soroban_sdk::xdr::StringMView::new_str(UsedResultOk::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -4291,6 +4365,12 @@ impl ::core::cmp::PartialEq for UsedEventSimple { self.amount == other.amount && self.kind == other.kind } } +impl UsedEventSimple { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedEventSimple" + } +} pub static __SPEC_XDR_EVENT_USEDEVENTSIMPLE: [u8; UsedEventSimple::__SPEC_XDR_VIEW .const_xdr_len()] = UsedEventSimple::spec_xdr(); impl UsedEventSimple { @@ -4298,9 +4378,7 @@ impl UsedEventSimple { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new( - b"UsedEventSimple", - )), + name: soroban_sdk::xdr::StringMView::new_str(UsedEventSimple::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"used_event_simple"), )]), @@ -4400,6 +4478,12 @@ impl ::core::cmp::PartialEq for UsedEventTopicType { __self_discr == __arg1_discr } } +impl UsedEventTopicType { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedEventTopicType" + } +} pub static __SPEC_XDR_TYPE_USEDEVENTTOPICTYPE: [u8; UsedEventTopicType::__SPEC_XDR_VIEW .const_xdr_len()] = UsedEventTopicType::spec_xdr(); impl UsedEventTopicType { @@ -4407,7 +4491,7 @@ impl UsedEventTopicType { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedEventTopicType"), + name: soroban_sdk::xdr::StringMView::new_str(UsedEventTopicType::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -4755,6 +4839,12 @@ impl ::core::cmp::PartialEq for UsedEventWithTopicType { self.amount == other.amount && self.kind == other.kind } } +impl UsedEventWithTopicType { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedEventWithTopicType" + } +} pub static __SPEC_XDR_EVENT_USEDEVENTWITHTOPICTYPE: [u8; UsedEventWithTopicType::__SPEC_XDR_VIEW .const_xdr_len()] = UsedEventWithTopicType::spec_xdr(); impl UsedEventWithTopicType { @@ -4762,9 +4852,7 @@ impl UsedEventWithTopicType { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new( - b"UsedEventWithTopicType", - )), + name: soroban_sdk::xdr::StringMView::new_str(UsedEventWithTopicType::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"used_event_with_topic_type"), )]), @@ -4774,7 +4862,9 @@ impl UsedEventWithTopicType { name: soroban_sdk::xdr::StringMView::new(b"kind"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedEventTopicType"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::TopicList, @@ -4873,6 +4963,12 @@ impl ::core::cmp::PartialEq for UsedEventDataType { self.x == other.x && self.y == other.y } } +impl UsedEventDataType { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedEventDataType" + } +} pub static __SPEC_XDR_TYPE_USEDEVENTDATATYPE: [u8; UsedEventDataType::__SPEC_XDR_VIEW .const_xdr_len()] = UsedEventDataType::spec_xdr(); impl UsedEventDataType { @@ -4880,7 +4976,7 @@ impl UsedEventDataType { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedEventDataType"), + name: soroban_sdk::xdr::StringMView::new_str(UsedEventDataType::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -5315,6 +5411,12 @@ impl ::core::cmp::PartialEq for UsedEventWithDataType { self.kind == other.kind && self.payload == other.payload } } +impl UsedEventWithDataType { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedEventWithDataType" + } +} pub static __SPEC_XDR_EVENT_USEDEVENTWITHDATATYPE: [u8; UsedEventWithDataType::__SPEC_XDR_VIEW .const_xdr_len()] = UsedEventWithDataType::spec_xdr(); impl UsedEventWithDataType { @@ -5322,9 +5424,7 @@ impl UsedEventWithDataType { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new( - b"UsedEventWithDataType", - )), + name: soroban_sdk::xdr::StringMView::new_str(UsedEventWithDataType::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"used_event_with_data_type"), )]), @@ -5340,7 +5440,9 @@ impl UsedEventWithDataType { name: soroban_sdk::xdr::StringMView::new(b"payload"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedEventDataType"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::Data, @@ -5429,6 +5531,12 @@ impl ::core::cmp::PartialEq for UsedEventTopicOuter { self.inner == other.inner } } +impl UsedEventTopicOuter { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedEventTopicOuter" + } +} pub static __SPEC_XDR_TYPE_USEDEVENTTOPICOUTER: [u8; UsedEventTopicOuter::__SPEC_XDR_VIEW .const_xdr_len()] = UsedEventTopicOuter::spec_xdr(); impl UsedEventTopicOuter { @@ -5436,14 +5544,16 @@ impl UsedEventTopicOuter { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedEventTopicOuter"), + name: soroban_sdk::xdr::StringMView::new_str(UsedEventTopicOuter::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), name: soroban_sdk::xdr::StringMView::new(b"inner"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedEventTopicInner"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -5821,6 +5931,12 @@ impl ::core::cmp::PartialEq for UsedEventTopicInner { self.val == other.val } } +impl UsedEventTopicInner { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedEventTopicInner" + } +} pub static __SPEC_XDR_TYPE_USEDEVENTTOPICINNER: [u8; UsedEventTopicInner::__SPEC_XDR_VIEW .const_xdr_len()] = UsedEventTopicInner::spec_xdr(); impl UsedEventTopicInner { @@ -5828,7 +5944,7 @@ impl UsedEventTopicInner { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedEventTopicInner"), + name: soroban_sdk::xdr::StringMView::new_str(UsedEventTopicInner::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -6211,6 +6327,12 @@ impl ::core::cmp::PartialEq for UsedEventWithNestedTopic { self.amount == other.amount && self.info == other.info } } +impl UsedEventWithNestedTopic { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedEventWithNestedTopic" + } +} pub static __SPEC_XDR_EVENT_USEDEVENTWITHNESTEDTOPIC: [u8; UsedEventWithNestedTopic::__SPEC_XDR_VIEW.const_xdr_len()] = UsedEventWithNestedTopic::spec_xdr(); @@ -6219,9 +6341,7 @@ impl UsedEventWithNestedTopic { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new( - b"UsedEventWithNestedTopic", - )), + name: soroban_sdk::xdr::StringMView::new_str(UsedEventWithNestedTopic::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"used_event_with_nested_topic"), )]), @@ -6231,7 +6351,9 @@ impl UsedEventWithNestedTopic { name: soroban_sdk::xdr::StringMView::new(b"info"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedEventTopicOuter"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::TopicList, @@ -6326,6 +6448,12 @@ impl ::core::cmp::PartialEq for UsedEventDataOuter { self.inner == other.inner } } +impl UsedEventDataOuter { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedEventDataOuter" + } +} pub static __SPEC_XDR_TYPE_USEDEVENTDATAOUTER: [u8; UsedEventDataOuter::__SPEC_XDR_VIEW .const_xdr_len()] = UsedEventDataOuter::spec_xdr(); impl UsedEventDataOuter { @@ -6333,14 +6461,16 @@ impl UsedEventDataOuter { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedEventDataOuter"), + name: soroban_sdk::xdr::StringMView::new_str(UsedEventDataOuter::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), name: soroban_sdk::xdr::StringMView::new(b"inner"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedEventDataInner"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -6716,6 +6846,12 @@ impl ::core::cmp::PartialEq for UsedEventDataInner { self.val == other.val } } +impl UsedEventDataInner { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedEventDataInner" + } +} pub static __SPEC_XDR_TYPE_USEDEVENTDATAINNER: [u8; UsedEventDataInner::__SPEC_XDR_VIEW .const_xdr_len()] = UsedEventDataInner::spec_xdr(); impl UsedEventDataInner { @@ -6723,7 +6859,7 @@ impl UsedEventDataInner { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedEventDataInner"), + name: soroban_sdk::xdr::StringMView::new_str(UsedEventDataInner::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -7104,6 +7240,12 @@ impl ::core::cmp::PartialEq for UsedEventWithNestedData { self.kind == other.kind && self.payload == other.payload } } +impl UsedEventWithNestedData { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedEventWithNestedData" + } +} pub static __SPEC_XDR_EVENT_USEDEVENTWITHNESTEDDATA: [u8; UsedEventWithNestedData::__SPEC_XDR_VIEW.const_xdr_len()] = UsedEventWithNestedData::spec_xdr(); impl UsedEventWithNestedData { @@ -7111,9 +7253,7 @@ impl UsedEventWithNestedData { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new( - b"UsedEventWithNestedData", - )), + name: soroban_sdk::xdr::StringMView::new_str(UsedEventWithNestedData::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"used_event_with_nested_data"), )]), @@ -7129,7 +7269,9 @@ impl UsedEventWithNestedData { name: soroban_sdk::xdr::StringMView::new(b"payload"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedEventDataOuter"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::Data, @@ -7220,6 +7362,12 @@ impl ::core::cmp::PartialEq for UsedRefTopicType { __self_discr == __arg1_discr } } +impl UsedRefTopicType { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedRefTopicType" + } +} pub static __SPEC_XDR_TYPE_USEDREFTOPICTYPE: [u8; UsedRefTopicType::__SPEC_XDR_VIEW .const_xdr_len()] = UsedRefTopicType::spec_xdr(); impl UsedRefTopicType { @@ -7227,7 +7375,7 @@ impl UsedRefTopicType { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedRefTopicType"), + name: soroban_sdk::xdr::StringMView::new_str(UsedRefTopicType::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -7568,6 +7716,12 @@ impl ::core::cmp::PartialEq for UsedRefDataType { self.nested == other.nested } } +impl UsedRefDataType { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedRefDataType" + } +} pub static __SPEC_XDR_TYPE_USEDREFDATATYPE: [u8; UsedRefDataType::__SPEC_XDR_VIEW.const_xdr_len()] = UsedRefDataType::spec_xdr(); impl UsedRefDataType { @@ -7575,14 +7729,16 @@ impl UsedRefDataType { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedRefDataType"), + name: soroban_sdk::xdr::StringMView::new_str(UsedRefDataType::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), name: soroban_sdk::xdr::StringMView::new(b"nested"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedRefDataInner"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -7951,6 +8107,12 @@ impl ::core::cmp::PartialEq for UsedRefDataInner { self.val == other.val } } +impl UsedRefDataInner { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedRefDataInner" + } +} pub static __SPEC_XDR_TYPE_USEDREFDATAINNER: [u8; UsedRefDataInner::__SPEC_XDR_VIEW .const_xdr_len()] = UsedRefDataInner::spec_xdr(); impl UsedRefDataInner { @@ -7958,7 +8120,7 @@ impl UsedRefDataInner { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedRefDataInner"), + name: soroban_sdk::xdr::StringMView::new_str(UsedRefDataInner::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -8337,6 +8499,12 @@ impl<'a> ::core::cmp::PartialEq for UsedEventWithRefs<'a> { self.kind == other.kind && self.payload == other.payload } } +impl<'a> UsedEventWithRefs<'a> { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedEventWithRefs" + } +} pub static __SPEC_XDR_EVENT_USEDEVENTWITHREFS: [u8; UsedEventWithRefs::__SPEC_XDR_VIEW .const_xdr_len()] = UsedEventWithRefs::spec_xdr(); impl<'a> UsedEventWithRefs<'a> { @@ -8344,9 +8512,7 @@ impl<'a> UsedEventWithRefs<'a> { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new( - b"UsedEventWithRefs", - )), + name: soroban_sdk::xdr::StringMView::new_str(UsedEventWithRefs::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"used_event_with_refs"), )]), @@ -8356,7 +8522,9 @@ impl<'a> UsedEventWithRefs<'a> { name: soroban_sdk::xdr::StringMView::new(b"kind"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedRefTopicType"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::TopicList, @@ -8366,7 +8534,9 @@ impl<'a> UsedEventWithRefs<'a> { name: soroban_sdk::xdr::StringMView::new(b"payload"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedRefDataType"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::Data, @@ -8450,6 +8620,12 @@ impl ::core::cmp::PartialEq for UsedTupleElement { self.val == other.val } } +impl UsedTupleElement { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedTupleElement" + } +} pub static __SPEC_XDR_TYPE_USEDTUPLEELEMENT: [u8; UsedTupleElement::__SPEC_XDR_VIEW .const_xdr_len()] = UsedTupleElement::spec_xdr(); impl UsedTupleElement { @@ -8457,7 +8633,7 @@ impl UsedTupleElement { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedTupleElement"), + name: soroban_sdk::xdr::StringMView::new_str(UsedTupleElement::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -8831,6 +9007,12 @@ impl ::core::cmp::PartialEq for UsedTupleReturnElement { self.val == other.val } } +impl UsedTupleReturnElement { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedTupleReturnElement" + } +} pub static __SPEC_XDR_TYPE_USEDTUPLERETURNELEMENT: [u8; UsedTupleReturnElement::__SPEC_XDR_VIEW .const_xdr_len()] = UsedTupleReturnElement::spec_xdr(); impl UsedTupleReturnElement { @@ -8838,7 +9020,7 @@ impl UsedTupleReturnElement { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedTupleReturnElement"), + name: soroban_sdk::xdr::StringMView::new_str(UsedTupleReturnElement::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -9216,6 +9398,12 @@ impl ::core::cmp::PartialEq for UsedVecInnerVecElement { self.val == other.val } } +impl UsedVecInnerVecElement { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedVecInnerVecElement" + } +} pub static __SPEC_XDR_TYPE_USEDVECINNERVECELEMENT: [u8; UsedVecInnerVecElement::__SPEC_XDR_VIEW .const_xdr_len()] = UsedVecInnerVecElement::spec_xdr(); impl UsedVecInnerVecElement { @@ -9223,7 +9411,7 @@ impl UsedVecInnerVecElement { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedVecInnerVecElement"), + name: soroban_sdk::xdr::StringMView::new_str(UsedVecInnerVecElement::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -9601,6 +9789,12 @@ impl ::core::cmp::PartialEq for UsedVecInnerElement { self.val == other.val } } +impl UsedVecInnerElement { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedVecInnerElement" + } +} pub static __SPEC_XDR_TYPE_USEDVECINNERELEMENT: [u8; UsedVecInnerElement::__SPEC_XDR_VIEW .const_xdr_len()] = UsedVecInnerElement::spec_xdr(); impl UsedVecInnerElement { @@ -9608,7 +9802,7 @@ impl UsedVecInnerElement { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedVecInnerElement"), + name: soroban_sdk::xdr::StringMView::new_str(UsedVecInnerElement::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -9996,6 +10190,12 @@ impl ::core::cmp::PartialEq for UsedVecElementNested { self.val == other.val && self.inner == other.inner && self.vec_inner == other.vec_inner } } +impl UsedVecElementNested { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedVecElementNested" + } +} pub static __SPEC_XDR_TYPE_USEDVECELEMENTNESTED: [u8; UsedVecElementNested::__SPEC_XDR_VIEW .const_xdr_len()] = UsedVecElementNested::spec_xdr(); impl UsedVecElementNested { @@ -10003,14 +10203,16 @@ impl UsedVecElementNested { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedVecElementNested"), + name: soroban_sdk::xdr::StringMView::new_str(UsedVecElementNested::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), name: soroban_sdk::xdr::StringMView::new(b"inner"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedVecInnerElement"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -10026,8 +10228,8 @@ impl UsedVecElementNested { &soroban_sdk::xdr::ScSpecTypeVecView { element_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"UsedVecInnerVecElement", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -10522,6 +10724,12 @@ impl ::core::cmp::PartialEq for UsedNonPubStruct { self.val == other.val } } +impl UsedNonPubStruct { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedNonPubStruct" + } +} pub static __SPEC_XDR_TYPE_USEDNONPUBSTRUCT: [u8; UsedNonPubStruct::__SPEC_XDR_VIEW .const_xdr_len()] = UsedNonPubStruct::spec_xdr(); impl UsedNonPubStruct { @@ -10529,7 +10737,7 @@ impl UsedNonPubStruct { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedNonPubStruct"), + name: soroban_sdk::xdr::StringMView::new_str(UsedNonPubStruct::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -10896,6 +11104,12 @@ impl ::core::cmp::PartialEq for UsedNonPubError { true } } +impl UsedNonPubError { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedNonPubError" + } +} pub static __SPEC_XDR_TYPE_USEDNONPUBERROR: [u8; UsedNonPubError::__SPEC_XDR_VIEW.const_xdr_len()] = UsedNonPubError::spec_xdr(); impl UsedNonPubError { @@ -10904,7 +11118,7 @@ impl UsedNonPubError { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedNonPubError"), + name: soroban_sdk::xdr::StringMView::new_str(UsedNonPubError::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -11068,6 +11282,12 @@ impl ::core::cmp::PartialEq for UsedRecursiveRoot { self.val == other.val } } +impl UsedRecursiveRoot { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedRecursiveRoot" + } +} pub static __SPEC_XDR_TYPE_USEDRECURSIVEROOT: [u8; UsedRecursiveRoot::__SPEC_XDR_VIEW .const_xdr_len()] = UsedRecursiveRoot::spec_xdr(); impl UsedRecursiveRoot { @@ -11075,14 +11295,16 @@ impl UsedRecursiveRoot { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedRecursiveRoot"), + name: soroban_sdk::xdr::StringMView::new_str(UsedRecursiveRoot::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), name: soroban_sdk::xdr::StringMView::new(b"val"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedRecursiveNode"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -11475,6 +11697,12 @@ impl ::core::cmp::PartialEq for UsedRecursiveNode { } } } +impl UsedRecursiveNode { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedRecursiveNode" + } +} pub static __SPEC_XDR_TYPE_USEDRECURSIVENODE: [u8; UsedRecursiveNode::__SPEC_XDR_VIEW .const_xdr_len()] = UsedRecursiveNode::spec_xdr(); impl UsedRecursiveNode { @@ -11482,7 +11710,7 @@ impl UsedRecursiveNode { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedRecursiveNode"), + name: soroban_sdk::xdr::StringMView::new_str(UsedRecursiveNode::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { @@ -11491,7 +11719,9 @@ impl UsedRecursiveNode { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedLeaf"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), ]), @@ -11504,7 +11734,9 @@ impl UsedRecursiveNode { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedRecursiveLeaf"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), ]), @@ -12034,6 +12266,12 @@ impl ::core::cmp::PartialEq for UsedRecursiveLeaf { self.val == other.val } } +impl UsedRecursiveLeaf { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedRecursiveLeaf" + } +} pub static __SPEC_XDR_TYPE_USEDRECURSIVELEAF: [u8; UsedRecursiveLeaf::__SPEC_XDR_VIEW .const_xdr_len()] = UsedRecursiveLeaf::spec_xdr(); impl UsedRecursiveLeaf { @@ -12041,7 +12279,7 @@ impl UsedRecursiveLeaf { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedRecursiveLeaf"), + name: soroban_sdk::xdr::StringMView::new_str(UsedRecursiveLeaf::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -12050,7 +12288,9 @@ impl UsedRecursiveLeaf { &soroban_sdk::xdr::ScSpecTypeVecView { element_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedRecursiveRoot"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -12424,6 +12664,12 @@ impl ::core::cmp::PartialEq for UsedLeaf { self.val == other.val } } +impl UsedLeaf { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedLeaf" + } +} pub static __SPEC_XDR_TYPE_USEDLEAF: [u8; UsedLeaf::__SPEC_XDR_VIEW.const_xdr_len()] = UsedLeaf::spec_xdr(); impl UsedLeaf { @@ -12431,7 +12677,7 @@ impl UsedLeaf { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedLeaf"), + name: soroban_sdk::xdr::StringMView::new_str(UsedLeaf::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -12762,7 +13008,7 @@ const _: () = { } }; mod wasm_imported { - pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01*\x07`\x02~~\x01~`\x03~~~\x01~`\x01~\x01~`\x00\x01~`\x02\x7f\x7f\x01~`\x04\x7f\x7f\x7f\x7f\x01~`\x02\x7f~\x00\x02%\x06\x01b\x01j\x00\x00\x01x\x011\x00\x00\x01v\x01g\x00\x00\x01m\x019\x00\x01\x01i\x012\x00\x02\x01i\x011\x00\x02\x03\x0c\x0b\x03\x04\x03\x02\x00\x05\x03\x00\x00\x06\x06\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x82\x80\xc0\x00\x0b\x7f\x00A\x80\x81\xc0\x00\x0b\x7f\x00A\x80\x81\xc0\x00\x0b\x07\x8e\x01\x0b\x06memory\x02\x00\tfn_enum_a\x00\x06\rfn_enum_int_a\x00\x08\nfn_error_a\x00\t\nfn_event_a\x00\n\nfn_event_d\x00\x0c\x0bfn_struct_a\x00\r\x11fn_struct_tuple_a\x00\x0e\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\x8d\n\x0b\x95\x02\x03\x01\x7f\x01~\x03\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\x82\x80\xc0\x80\x00\x1aB\x00!\x01A~!\x02\x03~\x02@\x02@\x02@\x02@\x02@ \x02E\r\x00A\x01!\x03 \x02A\x82\x80\xc0\x80\x00j-\x00\x00\"\x04A\xdf\x00F\r\x04 \x04APjA\xff\x01qA\nI\r\x02 \x04A\xbf\x7fjA\xff\x01qA\x1aI\r\x03\x02@ \x04A\x9f\x7fjA\xff\x01qA\x1aO\r\x00 \x04AEj!\x03\x0c\x05\x0b \x00 \x04\xadB\x08\x86B\x01\x847\x03\x00A\x80\x80\xc0\x80\x00\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x80\x80\x80\x80\x00!\x01\x0c\x01\x0b \x00 \x01B\x08\x86B\x0e\x84\"\x017\x02\x04\x0b \x00 \x017\x03\x00 \x00A\x01\x10\x87\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b \x04ARj!\x03\x0c\x01\x0b \x04AKj!\x03\x0b \x01B\x06\x86 \x03\xadB\xff\x01\x83\x84!\x01 \x02A\x01j!\x02\x0c\x00\x0b\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x82\x80\x80\x80\x00\x0b\x12\x00A\x00-\x00\xc8\x80\xc0\x80\x00\x1aB\x84\x80\x80\x800\x0b4\x00\x02@ \x00B\xff\x01\x83B\x04Q\r\x00\x00\x0bA\x00-\x00\x90\x80\xc0\x80\x00\x1aB\x83\x80\x80\x80 \x00B\x84\x80\x80\x80p\x83 \x00B\x80\x80\x80\x80\x10T\x1b\x0b\xe6\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\xcd\x00R\r\x00 \x01B\xff\x01\x83B\xc9\x00R\r\x00A\x00!\x03A\x00-\x00\x9e\x80\xc0\x80\x00\x1a \x02 \x007\x03\x08 \x02B\x8e\xcc\xc1\xfc\xac\xdd\xab\x017\x03\x00\x03@\x02@ \x03A\x10G\r\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x10j \x03j \x02 \x03j)\x03\x007\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x02A\x10jA\x02\x10\x87\x80\x80\x80\x00!\x00 \x02 \x017\x03\x10 \x00A\xf8\x80\xc0\x80\x00A\x01 \x02A\x10jA\x01\x10\x8b\x80\x80\x80\x00\x10\x81\x80\x80\x80\x00\x1a \x02A j$\x80\x80\x80\x80\x00B\x02\x0f\x0b \x02A\x10j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b\x00\x0b.\x00\x02@ \x01 \x03F\r\x00\x00\x0b \x00\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x83\x80\x80\x80\x00\x0b\x91\x01\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\xac\x80\xc0\x80\x00\x1a \x00B\x8e\xd2\xc1\xfc\xac\xdd\xab\x017\x03\x00B\x02!\x01A\x01!\x02\x02@\x03@ \x02E\r\x01 \x02A\x7fj!\x02B\x8e\xd2\xc1\xfc\xac\xdd\xab\x01!\x01\x0c\x00\x0b\x0b \x00 \x017\x03\x08 \x00A\x08jA\x01\x10\x87\x80\x80\x80\x00A\x04A\x00 \x00A\x08jA\x00\x10\x8b\x80\x80\x80\x00\x10\x81\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x83\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\x04R\r\x00A\x01A\x02A\x00 \x01\xa7A\xff\x01q\"\x03\x1b \x03A\x01F\x1b\"\x03A\x02F\r\x00A\x00-\x00\xba\x80\xc0\x80\x00\x1a \x02 \x03\xad7\x03\x08 \x02 \x00B\x84\x80\x80\x80p\x837\x03\x00A\xe8\x80\xc0\x80\x00A\x02 \x02A\x02\x10\x8b\x80\x80\x80\x00!\x00 \x02A\x10j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b\xbc\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00 \x02A\x10j \x00\x10\x8f\x80\x80\x80\x00\x02@ \x02(\x02\x10A\x01F\r\x00 \x02)\x03\x18!\x00 \x02A\x10j \x01\x10\x8f\x80\x80\x80\x00 \x02(\x02\x10A\x01F\r\x00 \x02)\x03\x18!\x01A\x00-\x00\xd6\x80\xc0\x80\x00\x1a \x02A\x10j \x00\x10\x90\x80\x80\x80\x00 \x02(\x02\x10\r\x00 \x02)\x03\x18!\x00 \x02A\x10j \x01\x10\x90\x80\x80\x80\x00 \x02(\x02\x10A\x01F\r\x00 \x02 \x02)\x03\x187\x03\x08 \x02 \x007\x03\x00 \x02A\x02\x10\x87\x80\x80\x80\x00!\x00 \x02A j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc1\x00F\r\x00\x02@ \x02A\x07F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x87!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x84\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0bF\x00\x02@\x02@ \x01B\x80\x80\x80\x80\x80\x80\x80\xc0\x00|B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x01B\x08\x86B\x07\x84!\x01\x0c\x01\x0b \x01\x10\x85\x80\x80\x80\x00!\x01\x0b \x00B\x007\x03\x00 \x00 \x017\x03\x08\x0b\x0b\x8a\x01\x01\x00A\x80\x80\xc0\x00\x0b\x80\x01V2SpEcV1\xa2=N\xc1p\x95\x90\xb2SpEcV1\xe9R\xa7\xe8b\x99\xa2\xc3SpEcV1K\xe6\x8ej\x19\x9en\xbdSpEcV1\x15\xf0Wx\x15\x83\xc0:SpEcV1\xb6\x1c\xfd\xdfhY-dSpEcV1V]\x80\\~\x1a\x08/SpEcV1\xcf)\x97]S\xb2\xfd)f1f2d\x00\x10\x00\x02\x00\x00\x00f\x00\x10\x00\x02\x00\x00\x00f\x00\x10\x00\x02\x00\x00\x00\x00\xa3$\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\tfn_enum_a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_error_a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05input\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd0\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_event_a\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_event_d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bfn_struct_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x07StructA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rfn_enum_int_a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x08EnumIntA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11fn_struct_tuple_a\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x07Context\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumB\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumC\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x07StructA\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorB\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorC\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00f\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventA\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventB\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_b\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventC\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_c\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventD\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_d\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructA\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructB\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructC\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x03\xea\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntA\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntB\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntC\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x01,\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleB\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleC\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x0b\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; + pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01*\x07`\x02~~\x01~`\x03~~~\x01~`\x01~\x01~`\x00\x01~`\x02\x7f\x7f\x01~`\x04\x7f\x7f\x7f\x7f\x01~`\x02\x7f~\x00\x02%\x06\x01b\x01j\x00\x00\x01x\x011\x00\x00\x01v\x01g\x00\x00\x01m\x019\x00\x01\x01i\x012\x00\x02\x01i\x011\x00\x02\x03\x0c\x0b\x03\x04\x03\x02\x00\x05\x03\x00\x00\x06\x06\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x82\x80\xc0\x00\x0b\x7f\x00A\x80\x81\xc0\x00\x0b\x7f\x00A\x80\x81\xc0\x00\x0b\x07\x8e\x01\x0b\x06memory\x02\x00\tfn_enum_a\x00\x06\rfn_enum_int_a\x00\x08\nfn_error_a\x00\t\nfn_event_a\x00\n\nfn_event_d\x00\x0c\x0bfn_struct_a\x00\r\x11fn_struct_tuple_a\x00\x0e\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\x8d\n\x0b\x95\x02\x03\x01\x7f\x01~\x03\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\x82\x80\xc0\x80\x00\x1aB\x00!\x01A~!\x02\x03~\x02@\x02@\x02@\x02@\x02@ \x02E\r\x00A\x01!\x03 \x02A\x82\x80\xc0\x80\x00j-\x00\x00\"\x04A\xdf\x00F\r\x04 \x04APjA\xff\x01qA\nI\r\x02 \x04A\xbf\x7fjA\xff\x01qA\x1aI\r\x03\x02@ \x04A\x9f\x7fjA\xff\x01qA\x1aO\r\x00 \x04AEj!\x03\x0c\x05\x0b \x00 \x04\xadB\x08\x86B\x01\x847\x03\x00A\x80\x80\xc0\x80\x00\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x80\x80\x80\x80\x00!\x01\x0c\x01\x0b \x00 \x01B\x08\x86B\x0e\x84\"\x017\x02\x04\x0b \x00 \x017\x03\x00 \x00A\x01\x10\x87\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b \x04ARj!\x03\x0c\x01\x0b \x04AKj!\x03\x0b \x01B\x06\x86 \x03\xadB\xff\x01\x83\x84!\x01 \x02A\x01j!\x02\x0c\x00\x0b\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x82\x80\x80\x80\x00\x0b\x12\x00A\x00-\x00\xc8\x80\xc0\x80\x00\x1aB\x84\x80\x80\x800\x0b4\x00\x02@ \x00B\xff\x01\x83B\x04Q\r\x00\x00\x0bA\x00-\x00\x90\x80\xc0\x80\x00\x1aB\x83\x80\x80\x80 \x00B\x84\x80\x80\x80p\x83 \x00B\x80\x80\x80\x80\x10T\x1b\x0b\xe6\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\xcd\x00R\r\x00 \x01B\xff\x01\x83B\xc9\x00R\r\x00A\x00!\x03A\x00-\x00\x9e\x80\xc0\x80\x00\x1a \x02 \x007\x03\x08 \x02B\x8e\xcc\xc1\xfc\xac\xdd\xab\x017\x03\x00\x03@\x02@ \x03A\x10G\r\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x10j \x03j \x02 \x03j)\x03\x007\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x02A\x10jA\x02\x10\x87\x80\x80\x80\x00!\x00 \x02 \x017\x03\x10 \x00A\xf8\x80\xc0\x80\x00A\x01 \x02A\x10jA\x01\x10\x8b\x80\x80\x80\x00\x10\x81\x80\x80\x80\x00\x1a \x02A j$\x80\x80\x80\x80\x00B\x02\x0f\x0b \x02A\x10j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b\x00\x0b.\x00\x02@ \x01 \x03F\r\x00\x00\x0b \x00\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x83\x80\x80\x80\x00\x0b\x91\x01\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\xac\x80\xc0\x80\x00\x1a \x00B\x8e\xd2\xc1\xfc\xac\xdd\xab\x017\x03\x00B\x02!\x01A\x01!\x02\x02@\x03@ \x02E\r\x01 \x02A\x7fj!\x02B\x8e\xd2\xc1\xfc\xac\xdd\xab\x01!\x01\x0c\x00\x0b\x0b \x00 \x017\x03\x08 \x00A\x08jA\x01\x10\x87\x80\x80\x80\x00A\x04A\x00 \x00A\x08jA\x00\x10\x8b\x80\x80\x80\x00\x10\x81\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x83\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\x04R\r\x00A\x01A\x02A\x00 \x01\xa7A\xff\x01q\"\x03\x1b \x03A\x01F\x1b\"\x03A\x02F\r\x00A\x00-\x00\xba\x80\xc0\x80\x00\x1a \x02 \x03\xad7\x03\x08 \x02 \x00B\x84\x80\x80\x80p\x837\x03\x00A\xe8\x80\xc0\x80\x00A\x02 \x02A\x02\x10\x8b\x80\x80\x80\x00!\x00 \x02A\x10j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b\xbc\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00 \x02A\x10j \x00\x10\x8f\x80\x80\x80\x00\x02@ \x02(\x02\x10A\x01F\r\x00 \x02)\x03\x18!\x00 \x02A\x10j \x01\x10\x8f\x80\x80\x80\x00 \x02(\x02\x10A\x01F\r\x00 \x02)\x03\x18!\x01A\x00-\x00\xd6\x80\xc0\x80\x00\x1a \x02A\x10j \x00\x10\x90\x80\x80\x80\x00 \x02(\x02\x10\r\x00 \x02)\x03\x18!\x00 \x02A\x10j \x01\x10\x90\x80\x80\x80\x00 \x02(\x02\x10A\x01F\r\x00 \x02 \x02)\x03\x187\x03\x08 \x02 \x007\x03\x00 \x02A\x02\x10\x87\x80\x80\x80\x00!\x00 \x02A j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc1\x00F\r\x00\x02@ \x02A\x07F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x87!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x84\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0bF\x00\x02@\x02@ \x01B\x80\x80\x80\x80\x80\x80\x80\xc0\x00|B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x01B\x08\x86B\x07\x84!\x01\x0c\x01\x0b \x01\x10\x85\x80\x80\x80\x00!\x01\x0b \x00B\x007\x03\x00 \x00 \x017\x03\x08\x0b\x0b\x8a\x01\x01\x00A\x80\x80\xc0\x00\x0b\x80\x01V2SpEcV1\x0eJ\x07\xc3\x8bG\x9d\x91SpEcV1\x9a\xac\n*\xd8z\xf1rSpEcV1\xa4\xbaQ6!\xf4\xd2\x87SpEcV1\xa5\x85L\x0b6\x80\x01\'SpEcV1\x14\xc8R\x91\x9a.T\x17SpEcV1)\xf5 \xed\x8b.\x0fuSpEcV1\xed\xbfE\xe8/\xbf\x90\x8cf1f2d\x00\x10\x00\x02\x00\x00\x00f\x00\x10\x00\x02\x00\x00\x00f\x00\x10\x00\x02\x00\x00\x00\x00\x93*\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\tfn_enum_a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x14test_spec_lib::EnumA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_error_a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05input\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd0\x00\x00\x00\x15test_spec_lib::ErrorA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_event_a\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_event_d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bfn_struct_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x16test_spec_lib::StructA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rfn_enum_int_a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x17test_spec_lib::EnumIntA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11fn_struct_tuple_a\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1btest_spec_lib::StructTupleA\x00\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x1asoroban_sdk::auth::Context\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00(soroban_sdk::auth::SubContractInvocation\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00+soroban_sdk::auth::InvokerContractAuthEntry\x00\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00+soroban_sdk::auth::InvokerContractAuthEntry\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00(soroban_sdk::auth::SubContractInvocation\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 soroban_sdk::address::Executable\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14test_spec_lib::EnumA\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14test_spec_lib::EnumB\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14test_spec_lib::EnumC\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x16test_spec_lib::StructA\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1btest_spec_lib::StructTupleA\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15test_spec_lib::ErrorA\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15test_spec_lib::ErrorB\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15test_spec_lib::ErrorC\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00f\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15test_spec_lib::EventA\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15test_spec_lib::EventB\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_b\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15test_spec_lib::EventC\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_c\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15test_spec_lib::EventD\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_d\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16test_spec_lib::StructA\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16test_spec_lib::StructB\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16test_spec_lib::StructC\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x03\xea\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17test_spec_lib::EnumIntA\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17test_spec_lib::EnumIntB\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17test_spec_lib::EnumIntC\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x01,\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1btest_spec_lib::StructTupleA\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1btest_spec_lib::StructTupleB\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1btest_spec_lib::StructTupleC\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x0b\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; pub trait Contract { fn fn_enum_a(env: soroban_sdk::Env) -> EnumA; fn fn_error_a(env: soroban_sdk::Env, input: u32) -> Result; @@ -13548,6 +13794,12 @@ mod wasm_imported { } } } + impl ContractContext { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::ContractContext" + } + } pub static __SPEC_XDR_TYPE_CONTRACTCONTEXT: [u8; ContractContext::__SPEC_XDR_VIEW .const_xdr_len()] = ContractContext::spec_xdr(); impl ContractContext { @@ -13556,7 +13808,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"ContractContext"), + name: soroban_sdk::xdr::StringMView::new_str(ContractContext::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -14111,6 +14363,12 @@ mod wasm_imported { } } } + impl SubContractInvocation { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::SubContractInvocation" + } + } pub static __SPEC_XDR_TYPE_SUBCONTRACTINVOCATION: [u8; SubContractInvocation::__SPEC_XDR_VIEW .const_xdr_len()] = SubContractInvocation::spec_xdr(); impl SubContractInvocation { @@ -14119,14 +14377,18 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"SubContractInvocation"), + name: soroban_sdk::xdr::StringMView::new_str( + SubContractInvocation::spec_type_name(), + ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), name: soroban_sdk::xdr::StringMView::new(b"context"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"ContractContext"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -14137,8 +14399,8 @@ mod wasm_imported { &soroban_sdk::xdr::ScSpecTypeVecView { element_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"InvokerContractAuthEntry", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -14621,6 +14883,12 @@ mod wasm_imported { } } } + impl CreateContractHostFnContext { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::CreateContractHostFnContext" + } + } pub static __SPEC_XDR_TYPE_CREATECONTRACTHOSTFNCONTEXT: [u8; CreateContractHostFnContext::__SPEC_XDR_VIEW.const_xdr_len()] = CreateContractHostFnContext::spec_xdr(); @@ -14630,14 +14898,18 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"CreateContractHostFnContext"), + name: soroban_sdk::xdr::StringMView::new_str( + CreateContractHostFnContext::spec_type_name(), + ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), name: soroban_sdk::xdr::StringMView::new(b"executable"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"ContractExecutable"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -15144,6 +15416,12 @@ mod wasm_imported { } } } + impl CreateContractWithConstructorHostFnContext { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::CreateContractWithConstructorHostFnContext" + } + } pub static __SPEC_XDR_TYPE_CREATECONTRACTWITHCONSTRUCTORHOSTFNCONTEXT: [u8; CreateContractWithConstructorHostFnContext::__SPEC_XDR_VIEW.const_xdr_len()] = CreateContractWithConstructorHostFnContext::spec_xdr(); @@ -15153,8 +15431,8 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithConstructorHostFnContext", + name: soroban_sdk::xdr::StringMView::new_str( + CreateContractWithConstructorHostFnContext::spec_type_name(), ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { @@ -15171,7 +15449,9 @@ mod wasm_imported { name: soroban_sdk::xdr::StringMView::new(b"executable"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"ContractExecutable"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -15754,6 +16034,12 @@ mod wasm_imported { } } } + impl StructA { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::StructA" + } + } pub static __SPEC_XDR_TYPE_STRUCTA: [u8; StructA::__SPEC_XDR_VIEW.const_xdr_len()] = StructA::spec_xdr(); impl StructA { @@ -15762,7 +16048,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"StructA"), + name: soroban_sdk::xdr::StringMView::new_str(StructA::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -16215,6 +16501,12 @@ mod wasm_imported { } } } + impl StructB { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::StructB" + } + } pub static __SPEC_XDR_TYPE_STRUCTB: [u8; StructB::__SPEC_XDR_VIEW.const_xdr_len()] = StructB::spec_xdr(); impl StructB { @@ -16223,7 +16515,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"StructB"), + name: soroban_sdk::xdr::StringMView::new_str(StructB::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -16676,6 +16968,12 @@ mod wasm_imported { } } } + impl StructC { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::StructC" + } + } pub static __SPEC_XDR_TYPE_STRUCTC: [u8; StructC::__SPEC_XDR_VIEW.const_xdr_len()] = StructC::spec_xdr(); impl StructC { @@ -16684,7 +16982,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"StructC"), + name: soroban_sdk::xdr::StringMView::new_str(StructC::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -17144,6 +17442,12 @@ mod wasm_imported { } } } + impl StructTupleA { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::StructTupleA" + } + } pub static __SPEC_XDR_TYPE_STRUCTTUPLEA: [u8; StructTupleA::__SPEC_XDR_VIEW.const_xdr_len()] = StructTupleA::spec_xdr(); impl StructTupleA { @@ -17152,7 +17456,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"StructTupleA"), + name: soroban_sdk::xdr::StringMView::new_str(StructTupleA::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -17570,6 +17874,12 @@ mod wasm_imported { } } } + impl StructTupleB { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::StructTupleB" + } + } pub static __SPEC_XDR_TYPE_STRUCTTUPLEB: [u8; StructTupleB::__SPEC_XDR_VIEW.const_xdr_len()] = StructTupleB::spec_xdr(); impl StructTupleB { @@ -17578,7 +17888,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"StructTupleB"), + name: soroban_sdk::xdr::StringMView::new_str(StructTupleB::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -17997,6 +18307,12 @@ mod wasm_imported { } } } + impl StructTupleC { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::StructTupleC" + } + } pub static __SPEC_XDR_TYPE_STRUCTTUPLEC: [u8; StructTupleC::__SPEC_XDR_VIEW.const_xdr_len()] = StructTupleC::spec_xdr(); impl StructTupleC { @@ -18005,7 +18321,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"StructTupleC"), + name: soroban_sdk::xdr::StringMView::new_str(StructTupleC::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -18492,64 +18808,67 @@ mod wasm_imported { } } } + impl Context { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::Context" + } + } pub static __SPEC_XDR_TYPE_CONTEXT: [u8; Context::__SPEC_XDR_VIEW.const_xdr_len()] = Context::spec_xdr(); impl Context { - const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = - soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Context"), - cases: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Contract"), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"ContractContext", - ), - }, - ), - ]), - }, - ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"CreateContractHostFn"), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractHostFnContext", - ), - }, - ), - ]), - }, - ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithCtorHostFn", - ), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithConstructorHostFnContext", - ), - }, - ), - ]), - }, - ), - ]), - }); + const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + lib: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new_str(Context::spec_type_name()), + cases: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new(b"Contract"), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractWithCtorHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), + }), + ], + ), + }), + ], + ), + }); pub const fn spec_xdr() -> [u8; Context::__SPEC_XDR_VIEW.const_xdr_len()] { Context::__SPEC_XDR_VIEW.const_to_xdr() } @@ -19208,6 +19527,12 @@ mod wasm_imported { } } } + impl ContractExecutable { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::ContractExecutable" + } + } pub static __SPEC_XDR_TYPE_CONTRACTEXECUTABLE: [u8; ContractExecutable::__SPEC_XDR_VIEW .const_xdr_len()] = ContractExecutable::spec_xdr(); impl ContractExecutable { @@ -19215,7 +19540,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"ContractExecutable"), + name: soroban_sdk::xdr::StringMView::new_str(ContractExecutable::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { @@ -19770,65 +20095,70 @@ mod wasm_imported { } } } + impl InvokerContractAuthEntry { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::InvokerContractAuthEntry" + } + } pub static __SPEC_XDR_TYPE_INVOKERCONTRACTAUTHENTRY: [u8; InvokerContractAuthEntry::__SPEC_XDR_VIEW.const_xdr_len()] = InvokerContractAuthEntry::spec_xdr(); impl InvokerContractAuthEntry { - const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = - soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"InvokerContractAuthEntry"), - cases: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Contract"), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"SubContractInvocation", - ), - }, - ), - ]), - }, - ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"CreateContractHostFn"), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractHostFnContext", - ), - }, - ), - ]), - }, - ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithCtorHostFn", - ), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithConstructorHostFnContext", - ), - }, - ), - ]), - }, - ), - ]), - }); + const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + lib: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new_str( + InvokerContractAuthEntry::spec_type_name(), + ), + cases: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new(b"Contract"), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractWithCtorHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), + }), + ], + ), + }), + ], + ), + }); pub const fn spec_xdr() -> [u8; InvokerContractAuthEntry::__SPEC_XDR_VIEW.const_xdr_len()] { InvokerContractAuthEntry::__SPEC_XDR_VIEW.const_to_xdr() } @@ -20531,6 +20861,12 @@ mod wasm_imported { } } } + impl Executable { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::Executable" + } + } pub static __SPEC_XDR_TYPE_EXECUTABLE: [u8; Executable::__SPEC_XDR_VIEW.const_xdr_len()] = Executable::spec_xdr(); impl Executable { @@ -20538,7 +20874,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Executable"), + name: soroban_sdk::xdr::StringMView::new_str(Executable::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { @@ -21113,6 +21449,12 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl EnumA { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::EnumA" + } + } pub static __SPEC_XDR_TYPE_ENUMA: [u8; EnumA::__SPEC_XDR_VIEW.const_xdr_len()] = EnumA::spec_xdr(); impl EnumA { @@ -21120,7 +21462,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"EnumA"), + name: soroban_sdk::xdr::StringMView::new_str(EnumA::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::VoidV0( soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0View { @@ -21662,6 +22004,12 @@ mod wasm_imported { } } } + impl EnumB { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::EnumB" + } + } pub static __SPEC_XDR_TYPE_ENUMB: [u8; EnumB::__SPEC_XDR_VIEW.const_xdr_len()] = EnumB::spec_xdr(); impl EnumB { @@ -21669,7 +22017,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"EnumB"), + name: soroban_sdk::xdr::StringMView::new_str(EnumB::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::VoidV0( soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0View { @@ -22336,6 +22684,12 @@ mod wasm_imported { } } } + impl EnumC { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::EnumC" + } + } pub static __SPEC_XDR_TYPE_ENUMC: [u8; EnumC::__SPEC_XDR_VIEW.const_xdr_len()] = EnumC::spec_xdr(); impl EnumC { @@ -22343,7 +22697,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"EnumC"), + name: soroban_sdk::xdr::StringMView::new_str(EnumC::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::VoidV0( soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0View { @@ -22358,7 +22712,9 @@ mod wasm_imported { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"StructA"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), ]), @@ -22371,7 +22727,9 @@ mod wasm_imported { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"StructTupleA"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), ]), @@ -22946,6 +23304,12 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl EnumIntA { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::EnumIntA" + } + } pub static __SPEC_XDR_TYPE_ENUMINTA: [u8; EnumIntA::__SPEC_XDR_VIEW.const_xdr_len()] = EnumIntA::spec_xdr(); impl EnumIntA { @@ -22953,7 +23317,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"EnumIntA"), + name: soroban_sdk::xdr::StringMView::new_str(EnumIntA::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -23335,6 +23699,12 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl EnumIntB { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::EnumIntB" + } + } pub static __SPEC_XDR_TYPE_ENUMINTB: [u8; EnumIntB::__SPEC_XDR_VIEW.const_xdr_len()] = EnumIntB::spec_xdr(); impl EnumIntB { @@ -23342,7 +23712,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"EnumIntB"), + name: soroban_sdk::xdr::StringMView::new_str(EnumIntB::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -23724,6 +24094,12 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl EnumIntC { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::EnumIntC" + } + } pub static __SPEC_XDR_TYPE_ENUMINTC: [u8; EnumIntC::__SPEC_XDR_VIEW.const_xdr_len()] = EnumIntC::spec_xdr(); impl EnumIntC { @@ -23731,7 +24107,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"EnumIntC"), + name: soroban_sdk::xdr::StringMView::new_str(EnumIntC::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -24113,6 +24489,12 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl ErrorA { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::ErrorA" + } + } pub static __SPEC_XDR_TYPE_ERRORA: [u8; ErrorA::__SPEC_XDR_VIEW.const_xdr_len()] = ErrorA::spec_xdr(); impl ErrorA { @@ -24121,7 +24503,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"ErrorA"), + name: soroban_sdk::xdr::StringMView::new_str(ErrorA::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -24325,6 +24707,12 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl ErrorB { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::ErrorB" + } + } pub static __SPEC_XDR_TYPE_ERRORB: [u8; ErrorB::__SPEC_XDR_VIEW.const_xdr_len()] = ErrorB::spec_xdr(); impl ErrorB { @@ -24333,7 +24721,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"ErrorB"), + name: soroban_sdk::xdr::StringMView::new_str(ErrorB::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -24537,6 +24925,12 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl ErrorC { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::ErrorC" + } + } pub static __SPEC_XDR_TYPE_ERRORC: [u8; ErrorC::__SPEC_XDR_VIEW.const_xdr_len()] = ErrorC::spec_xdr(); impl ErrorC { @@ -24545,7 +24939,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"ErrorC"), + name: soroban_sdk::xdr::StringMView::new_str(ErrorC::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -24749,6 +25143,12 @@ mod wasm_imported { } } } + impl EventA { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::EventA" + } + } pub static __SPEC_XDR_EVENT_EVENTA: [u8; EventA::__SPEC_XDR_VIEW.const_xdr_len()] = EventA::spec_xdr(); impl EventA { @@ -24756,7 +25156,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new(b"EventA")), + name: soroban_sdk::xdr::StringMView::new_str(EventA::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"event_a"), )]), @@ -24894,6 +25294,12 @@ mod wasm_imported { } } } + impl EventB { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::EventB" + } + } pub static __SPEC_XDR_EVENT_EVENTB: [u8; EventB::__SPEC_XDR_VIEW.const_xdr_len()] = EventB::spec_xdr(); impl EventB { @@ -24901,7 +25307,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new(b"EventB")), + name: soroban_sdk::xdr::StringMView::new_str(EventB::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"event_b"), )]), @@ -25049,6 +25455,12 @@ mod wasm_imported { } } } + impl EventC { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::EventC" + } + } pub static __SPEC_XDR_EVENT_EVENTC: [u8; EventC::__SPEC_XDR_VIEW.const_xdr_len()] = EventC::spec_xdr(); impl EventC { @@ -25056,7 +25468,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new(b"EventC")), + name: soroban_sdk::xdr::StringMView::new_str(EventC::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"event_c"), )]), @@ -25171,6 +25583,12 @@ mod wasm_imported { ::core::option::Option::Some(::core::cmp::Ordering::Equal) } } + impl EventD { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::EventD" + } + } pub static __SPEC_XDR_EVENT_EVENTD: [u8; EventD::__SPEC_XDR_VIEW.const_xdr_len()] = EventD::spec_xdr(); impl EventD { @@ -25178,7 +25596,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new(b"EventD")), + name: soroban_sdk::xdr::StringMView::new_str(EventD::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"event_d"), )]), @@ -25257,6 +25675,12 @@ impl ::core::cmp::PartialEq for UnusedStruct { self.x == other.x } } +impl UnusedStruct { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UnusedStruct" + } +} pub static __SPEC_XDR_TYPE_UNUSEDSTRUCT: [u8; UnusedStruct::__SPEC_XDR_VIEW.const_xdr_len()] = UnusedStruct::spec_xdr(); impl UnusedStruct { @@ -25264,7 +25688,7 @@ impl UnusedStruct { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UnusedStruct"), + name: soroban_sdk::xdr::StringMView::new_str(UnusedStruct::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -25642,6 +26066,12 @@ impl ::core::cmp::PartialEq for UnusedEnum { } } } +impl UnusedEnum { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UnusedEnum" + } +} pub static __SPEC_XDR_TYPE_UNUSEDENUM: [u8; UnusedEnum::__SPEC_XDR_VIEW.const_xdr_len()] = UnusedEnum::spec_xdr(); impl UnusedEnum { @@ -25649,7 +26079,7 @@ impl UnusedEnum { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UnusedEnum"), + name: soroban_sdk::xdr::StringMView::new_str(UnusedEnum::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::VoidV0( soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0View { @@ -26136,6 +26566,12 @@ impl ::core::cmp::PartialEq for UnusedIntEnum { __self_discr == __arg1_discr } } +impl UnusedIntEnum { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UnusedIntEnum" + } +} pub static __SPEC_XDR_TYPE_UNUSEDINTENUM: [u8; UnusedIntEnum::__SPEC_XDR_VIEW.const_xdr_len()] = UnusedIntEnum::spec_xdr(); impl UnusedIntEnum { @@ -26143,7 +26579,7 @@ impl UnusedIntEnum { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UnusedIntEnum"), + name: soroban_sdk::xdr::StringMView::new_str(UnusedIntEnum::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -26489,6 +26925,12 @@ impl ::core::cmp::PartialEq for UnusedEvent { self.data == other.data && self.kind == other.kind } } +impl UnusedEvent { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UnusedEvent" + } +} pub static __SPEC_XDR_EVENT_UNUSEDEVENT: [u8; UnusedEvent::__SPEC_XDR_VIEW.const_xdr_len()] = UnusedEvent::spec_xdr(); impl UnusedEvent { @@ -26496,9 +26938,7 @@ impl UnusedEvent { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new( - b"UnusedEvent", - )), + name: soroban_sdk::xdr::StringMView::new_str(UnusedEvent::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"unused_event"), )]), @@ -26589,6 +27029,12 @@ impl ::core::cmp::PartialEq for UnusedPubError { true } } +impl UnusedPubError { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UnusedPubError" + } +} pub static __SPEC_XDR_TYPE_UNUSEDPUBERROR: [u8; UnusedPubError::__SPEC_XDR_VIEW.const_xdr_len()] = UnusedPubError::spec_xdr(); impl UnusedPubError { @@ -26597,7 +27043,7 @@ impl UnusedPubError { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UnusedPubError"), + name: soroban_sdk::xdr::StringMView::new_str(UnusedPubError::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -26761,6 +27207,12 @@ impl ::core::cmp::PartialEq for UnusedNonContractFnParam { self.x == other.x } } +impl UnusedNonContractFnParam { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UnusedNonContractFnParam" + } +} pub static __SPEC_XDR_TYPE_UNUSEDNONCONTRACTFNPARAM: [u8; UnusedNonContractFnParam::__SPEC_XDR_VIEW.const_xdr_len()] = UnusedNonContractFnParam::spec_xdr(); @@ -26769,7 +27221,7 @@ impl UnusedNonContractFnParam { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UnusedNonContractFnParam"), + name: soroban_sdk::xdr::StringMView::new_str(UnusedNonContractFnParam::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -27149,6 +27601,12 @@ impl ::core::cmp::PartialEq for UnusedNonContractFnReturn { self.x == other.x } } +impl UnusedNonContractFnReturn { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UnusedNonContractFnReturn" + } +} pub static __SPEC_XDR_TYPE_UNUSEDNONCONTRACTFNRETURN: [u8; UnusedNonContractFnReturn::__SPEC_XDR_VIEW.const_xdr_len()] = UnusedNonContractFnReturn::spec_xdr(); @@ -27157,7 +27615,9 @@ impl UnusedNonContractFnReturn { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UnusedNonContractFnReturn"), + name: soroban_sdk::xdr::StringMView::new_str( + UnusedNonContractFnReturn::spec_type_name(), + ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -27532,6 +27992,12 @@ impl ::core::cmp::PartialEq for UnusedNonPubStruct { self.x == other.x } } +impl UnusedNonPubStruct { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UnusedNonPubStruct" + } +} pub static __SPEC_XDR_TYPE_UNUSEDNONPUBSTRUCT: [u8; UnusedNonPubStruct::__SPEC_XDR_VIEW .const_xdr_len()] = UnusedNonPubStruct::spec_xdr(); impl UnusedNonPubStruct { @@ -27539,7 +28005,7 @@ impl UnusedNonPubStruct { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UnusedNonPubStruct"), + name: soroban_sdk::xdr::StringMView::new_str(UnusedNonPubStruct::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -27906,6 +28372,12 @@ impl ::core::cmp::PartialEq for UnusedNonPubError { true } } +impl UnusedNonPubError { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UnusedNonPubError" + } +} pub static __SPEC_XDR_TYPE_UNUSEDNONPUBERROR: [u8; UnusedNonPubError::__SPEC_XDR_VIEW .const_xdr_len()] = UnusedNonPubError::spec_xdr(); impl UnusedNonPubError { @@ -27914,7 +28386,7 @@ impl UnusedNonPubError { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UnusedNonPubError"), + name: soroban_sdk::xdr::StringMView::new_str(UnusedNonPubError::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -28161,7 +28633,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"s"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedParamStruct"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -28170,7 +28644,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"ie"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedParamIntEnum"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -28203,7 +28679,7 @@ impl Contract { inputs: soroban_sdk::xdr::VecMView::new(&[]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedReturnEnum"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -28235,7 +28711,9 @@ impl Contract { ok_type: &soroban_sdk::xdr::ScSpecTypeDefView::U32, error_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedErrorEnum"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -28370,7 +28848,9 @@ impl Contract { &soroban_sdk::xdr::ScSpecTypeVecView { element_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedVecElement"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -28410,8 +28890,8 @@ impl Contract { &soroban_sdk::xdr::ScSpecTypeVecView { element_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"UsedVecElementNested", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -28450,12 +28930,16 @@ impl Contract { &soroban_sdk::xdr::ScSpecTypeMapView { key_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedMapKey"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), value_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedMapVal"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -28494,7 +28978,9 @@ impl Contract { &soroban_sdk::xdr::ScSpecTypeOptionView { value_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedOptionElement"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -28532,12 +29018,16 @@ impl Contract { &soroban_sdk::xdr::ScSpecTypeResultView { ok_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedResultOk"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), error_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedErrorEnum"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -28573,7 +29063,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"r"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedRecursiveRoot"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -28612,7 +29104,9 @@ impl Contract { &soroban_sdk::xdr::ScSpecTypeVecView { element_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"Context"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -28651,7 +29145,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"i"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"InvokerContractAuthEntry"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -28688,7 +29184,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"e"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"Executable"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -28859,7 +29357,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"s"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"StructC"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -28896,7 +29396,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"s"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"StructA"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -28932,7 +29434,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"s"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedNonPubStruct"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -28970,7 +29474,9 @@ impl Contract { ok_type: &soroban_sdk::xdr::ScSpecTypeDefView::U32, error_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedNonPubError"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -29007,8 +29513,8 @@ impl Contract { value_types: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"UsedTupleElement", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -29051,8 +29557,8 @@ impl Contract { value_types: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"UsedTupleReturnElement", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -32568,7 +33074,7 @@ mod test { use soroban_sdk::xdr::ScSpecEntry; use std::collections::HashSet; use std::vec::Vec; - const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01^\x10`\x02~~\x01~`\x01~\x01~`\x03~~~\x01~`\x04~~~~\x01~`\x00\x00`\x00\x01~`\x02\x7f\x7f\x01~`\x04\x7f\x7f\x7f\x7f\x01~`\x01~\x00`\x02\x7f\x7f\x00`\x03~\x7f\x7f\x01~`\x02\x7f\x7f\x01\x7f`\x02\x7f~\x00`\x05~\x7f\x7f\x7f\x7f\x00`\x03\x7f\x7f\x7f\x00`\x01\x7f\x01~\x02I\x0c\x01x\x011\x00\x00\x01v\x013\x00\x01\x01i\x012\x00\x01\x01v\x01h\x00\x02\x01v\x01g\x00\x00\x01m\x01a\x00\x03\x01b\x01m\x00\x02\x01b\x01j\x00\x00\x01v\x011\x00\x00\x01b\x018\x00\x01\x01x\x015\x00\x01\x01m\x019\x00\x02\x0365\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x05\x06\x00\x07\x05\x05\x05\x05\x05\x05\x01\x08\x01\x05\x01\t\n\x0b\x0c\x01\r\x0c\x01\x01\x01\x05\x01\x01\x01\x00\x01\x05\x05\x0e\x0f\x01\x05\x01\x01\x01\x04\x04\x04\x05\x01p\x01\x0c\x0c\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\xd2\x88\xc0\x00\x0b\x7f\x00A\xa0\x8a\xc0\x00\x0b\x7f\x00A\xa0\x8a\xc0\x00\x0b\x07\x86\x04\x1f\x06memory\x02\x00\x11publish_data_type\x00\x17\x13publish_nested_data\x00\x1b\x14publish_nested_topic\x00\x1c\x11publish_ref_event\x00\x1e\x0epublish_simple\x00\x1f\x12publish_topic_type\x00 \x11with_assert_error\x00!\x12with_auth_contexts\x00#\nwith_error\x00$\x0fwith_executable\x00%\x11with_invoker_auth\x00*\x0fwith_lib_struct\x00-\x08with_map\x00.\x0cwith_non_pub\x00/\x12with_non_pub_error\x000\x0bwith_option\x001\x10with_panic_error\x002\x14with_panic_raw_error\x003\nwith_param\x004\x0ewith_recursion\x005\x0bwith_result\x006\x0bwith_return\x007\nwith_tuple\x00:\x11with_tuple_return\x00;\x08with_vec\x00<\x0fwith_vec_nested\x00=\x12with_wasm_imported\x00>\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\t\x11\x01\x00A\x01\x0b\x0b\x0f\x11\x13\x12\x0e\r\x14\x15\x16\x0c\x10\n\xac05\x0c\x00A\x00-\x00\x9c\x80\xc0\x80\x00\x1a\x0b\x16\x00A\x00-\x00\xfe\x80\xc0\x80\x00\x1aA\x00-\x00\xd4\x80\xc0\x80\x00\x1a\x0b\x0c\x00A\x00-\x00\x8c\x81\xc0\x80\x00\x1a\x0bJ\x01\x01\x7f#\x80\x80\x80\x80\x00!\x00A\x00-\x00\xea\x83\xc0\x80\x00\x1a \x00A\x10k\"\x00A\x81\x80\x80\x80\x006\x02\x0c \x00(\x02\x0c\x1aA\x00-\x00\xd2\x81\xc0\x80\x00\x1aA\x00-\x00\xe0\x81\xc0\x80\x00\x1aA\x00-\x00\xee\x81\xc0\x80\x00\x1a\x0b6\x01\x01\x7f#\x80\x80\x80\x80\x00!\x00A\x00-\x00\xec\x82\xc0\x80\x00\x1a \x00A\x10k\"\x00A\x82\x80\x80\x80\x006\x02\x0c \x00(\x02\x0c\x1aA\x00-\x00\xfa\x82\xc0\x80\x00\x1a\x0b\x0c\x00A\x00-\x00\xb2\x83\xc0\x80\x00\x1a\x0b\x86\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00A\x83\x80\x80\x80\x006\x02\x0c \x00(\x02\x0c\x1aA\x00-\x00\xc4\x88\xc0\x80\x00\x1a \x00A\x84\x80\x80\x80\x006\x02\x04 \x00(\x02\x04\x1aA\x00-\x00\xf0\x87\xc0\x80\x00\x1aA\x00-\x00\xe2\x87\xc0\x80\x00\x1aA\x00-\x00\x8c\x88\xc0\x80\x00\x1a \x00A\x83\x80\x80\x80\x006\x02\x08 \x00(\x02\x08\x1aA\x00-\x00\xe2\x87\xc0\x80\x00\x1aA\x00-\x00\x9a\x88\xc0\x80\x00\x1aA\x00-\x00\xfe\x87\xc0\x80\x00\x1a\x0b\x02\x00\x0bk\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00A\x83\x80\x80\x80\x006\x02\x0c \x00(\x02\x0c\x1aA\x00-\x00\xc4\x88\xc0\x80\x00\x1aA\x00-\x00\xe2\x87\xc0\x80\x00\x1aA\x00-\x00\x8c\x88\xc0\x80\x00\x1a \x00A\x83\x80\x80\x80\x006\x02\x08 \x00(\x02\x08\x1aA\x00-\x00\xe2\x87\xc0\x80\x00\x1aA\x00-\x00\x9a\x88\xc0\x80\x00\x1aA\x00-\x00\xa8\x88\xc0\x80\x00\x1a\x0b\x0c\x00A\x00-\x00\xf8\x83\xc0\x80\x00\x1a\x0b\x0c\x00A\x00-\x00\x86\x84\xc0\x80\x00\x1a\x0b\xae\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A k\"\x00$\x80\x80\x80\x80\x00A\xb0\x86\xc0\x80\x00A\x06\x10\x98\x80\x80\x80\x00!\x01A\x00-\x00\xa8\x81\xc0\x80\x00\x1aA\x00-\x00\x88\x83\xc0\x80\x00\x1aA\xf8\x86\xc0\x80\x00A\x19\x10\x98\x80\x80\x80\x00 \x01\x10\x99\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80 7\x03\x18 \x00B\x84\x80\x80\x80\x107\x03\x10 \x00A\x88\x86\xc0\x80\x00A\x02 \x00A\x10jA\x02\x10\x9a\x80\x80\x80\x007\x03\x08 \x01A\xdc\x86\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A j$\x80\x80\x80\x80\x00B\x02\x0bE\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00 \x01\x10\xb8\x80\x80\x80\x00\x02@ \x02(\x02\x00A\x01G\r\x00\x00\x0b \x02)\x03\x08!\x03 \x02A\x10j$\x80\x80\x80\x80\x00 \x03\x0b\x92\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00 \x02 \x017\x03\x08 \x02 \x007\x03\x00A\x00!\x03\x03~\x02@ \x03A\x10G\r\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x10j \x03j \x02 \x03j)\x03\x007\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x02A\x10j\x10\xb9\x80\x80\x80\x00!\x01 \x02A j$\x80\x80\x80\x80\x00 \x01\x0f\x0b \x02A\x10j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b.\x00\x02@ \x01 \x03F\r\x00\x00\x0b \x00\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x8b\x80\x80\x80\x00\x0b\xc5\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\xdd\x84\xc0\x80\x00A\x06\x10\x98\x80\x80\x80\x00!\x01A\x00-\x00\xfc\x81\xc0\x80\x00\x1aA\x00-\x00\x8a\x82\xc0\x80\x00\x1aA\x00-\x00\xce\x83\xc0\x80\x00\x1aA\xab\x87\xc0\x80\x00A\x1b\x10\x98\x80\x80\x80\x00 \x01\x10\x99\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80\xa0\x057\x03\x08 \x00A\xa8\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x007\x03\x00 \x00A\xa0\x86\xc0\x80\x00A\x01 \x00A\x01\x10\x9a\x80\x80\x80\x007\x03\x08 \x01A\xdc\x86\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\xbd\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\xd0\x82\xc0\x80\x00\x1aA\x00-\x00\xde\x82\xc0\x80\x00\x1aA\x00-\x00\xdc\x83\xc0\x80\x00\x1aA\xc6\x87\xc0\x80\x00A\x1c\x10\x98\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80\xa0\x057\x03\x08 \x00A\xa8\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x007\x03\x00 \x01A\xa0\x86\xc0\x80\x00A\x01 \x00A\x01\x10\x9a\x80\x80\x80\x00\x10\x99\x80\x80\x80\x00!\x01 \x00\x10\x9d\x80\x80\x80\x007\x03\x08 \x01A\xbc\x86\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x06\x00B\x8b\xc8\x01\x0b\xc7\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00 \x00A\x85\x80\x80\x80\x006\x02\x08 \x00(\x02\x08\x1a \x00A\x86\x80\x80\x80\x006\x02\x08 \x00(\x02\x08\x1aA\x00-\x00\xb6\x81\xc0\x80\x00\x1aA\xe4\x86\xc0\x80\x00A\x14\x10\x98\x80\x80\x80\x00B\x84\x80\x80\x80\x10\x10\x99\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80\xb0\x0c7\x03\x08 \x00A\xa8\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x007\x03\x00 \x00A\xfc\x85\xc0\x80\x00A\x01 \x00A\x01\x10\x9a\x80\x80\x80\x007\x03\x08 \x01A\xdc\x86\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x7f\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\xa8\x86\xc0\x80\x00A\x08\x10\x98\x80\x80\x80\x00!\x01A\x00-\x00\xaa\x80\xc0\x80\x00\x1aA\xc4\x86\xc0\x80\x00A\x11\x10\x98\x80\x80\x80\x00 \x01\x10\x99\x80\x80\x80\x00!\x01 \x00\x10\x9d\x80\x80\x80\x007\x03\x08 \x01A\xbc\x86\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b}\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\x98\x82\xc0\x80\x00\x1aA\x00-\x00\x96\x83\xc0\x80\x00\x1aA\x91\x87\xc0\x80\x00A\x1a\x10\x98\x80\x80\x80\x00B\x84\x80\x80\x80\x10\x10\x99\x80\x80\x80\x00!\x01 \x00\x10\x9d\x80\x80\x80\x007\x03\x08 \x01A\xbc\x86\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0bJ\x01\x01\x7f\x02@\x02@A\x01A\x02A\x00 \x00\xa7A\xff\x01q\"\x01\x1b \x01A\x01F\x1b\"\x01A\x02F\r\x00 \x01A\x01qE\r\x01B\x02\x0f\x0b\x00\x0bA\x00-\x00\xc2\x82\xc0\x80\x00\x1aB\x83\x80\x80\x80\x10\x10\xa2\x80\x80\x80\x00\x00\x0b\x0b\x00 \x00\x10\x8a\x80\x80\x80\x00\x1a\x0b0\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01A\x87\x80\x80\x80\x006\x02\x0c \x01(\x02\x0c\x1a\x02@ \x00B\xff\x01\x83B\xcb\x00Q\r\x00\x00\x0bB\x02\x0b\x13\x00A\x00-\x00\x80\x80\xc0\x80\x00\x1aB\x84\x80\x80\x80\xa0\x05\x0b\xc0\x02\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A k\"\x01$\x80\x80\x80\x80\x00A\x00-\x00\xb6\x88\xc0\x80\x00\x1a\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00 \x00\x10\x81\x80\x80\x80\x00!\x02 \x01A\x006\x02\x08 \x01 \x007\x03\x00 \x01 \x02B \x88>\x02\x0c \x01A\x10j \x01\x10\xa6\x80\x80\x80\x00 \x01)\x03\x10\"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00\x02@ \x01)\x03\x18\"\x00\xa7A\xff\x01q\"\x03A\xca\x00F\r\x00 \x03A\x0eG\r\x01\x0b\x02@\x02@\x02@\x02@ \x00A\xc4\x84\xc0\x80\x00A\x03\x10\xa7\x80\x80\x80\x00B \x88\xa7\x0e\x03\x01\x02\x00\x04\x0b \x01(\x02\x08 \x01(\x02\x0c\x10\xa8\x80\x80\x80\x00\r\x03\x0c\x02\x0b \x01(\x02\x08 \x01(\x02\x0c\x10\xa8\x80\x80\x80\x00A\x01K\r\x02 \x01A\x10j \x01\x10\xa6\x80\x80\x80\x00 \x01)\x03\x10\"\x00B\x02Q\r\x02 \x00\xa7A\x01q\r\x02 \x01A\x10j \x01)\x03\x18\x10\xa9\x80\x80\x80\x00 \x01(\x02\x10A\x01G\r\x01\x0c\x02\x0b \x01(\x02\x08 \x01(\x02\x0c\x10\xa8\x80\x80\x80\x00\r\x01\x0b \x01A j$\x80\x80\x80\x80\x00B\x02\x0f\x0b\x00\x0bJ\x02\x01~\x01\x7fB\x02!\x02\x02@ \x01(\x02\x08\"\x03 \x01(\x02\x0cO\r\x00 \x00 \x01)\x03\x00 \x03\xadB \x86B\x04\x84\x10\x88\x80\x80\x80\x007\x03\x08 \x01 \x03A\x01j6\x02\x08B\x00!\x02\x0b \x00 \x027\x03\x00\x0b\x1c\x00 \x00 \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x86\x80\x80\x80\x00\x0b\x19\x00\x02@ \x01 \x00I\r\x00 \x01 \x00k\x0f\x0b\x10\xc0\x80\x80\x80\x00\x00\x0bB\x01\x01~B\x01!\x02\x02@ \x01B\xff\x01\x83B\xc8\x00R\r\x00 \x01\x10\x89\x80\x80\x80\x00B\x80\x80\x80\x80p\x83B\x80\x80\x80\x80\x80\x04R\r\x00 \x00 \x017\x03\x08B\x00!\x02\x0b \x00 \x027\x03\x00\x0b\xd3\x07\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A\xc0\x00k\"\x01$\x80\x80\x80\x80\x00 \x01A\x83\x80\x80\x80\x006\x02\x18 \x01(\x02\x18\x1aA\x00-\x00\xc4\x88\xc0\x80\x00\x1a \x01A\x84\x80\x80\x80\x006\x02\x18 \x01(\x02\x18\x1aA\x00-\x00\xf0\x87\xc0\x80\x00\x1aA\x00-\x00\xe2\x87\xc0\x80\x00\x1aA\x00-\x00\x8c\x88\xc0\x80\x00\x1a \x01A\x83\x80\x80\x80\x006\x02\x18 \x01(\x02\x18\x1aA\x00-\x00\xe2\x87\xc0\x80\x00\x1aA\x00-\x00\x9a\x88\xc0\x80\x00\x1aA\x00-\x00\xfe\x87\xc0\x80\x00\x1a\x02@\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00 \x00\x10\x81\x80\x80\x80\x00!\x02 \x01A\x006\x02\x10 \x01 \x007\x03\x08 \x01 \x02B \x88>\x02\x14 \x01A\x18j \x01A\x08j\x10\xa6\x80\x80\x80\x00 \x01)\x03\x18\"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00\x02@ \x01)\x03 \"\x00\xa7A\xff\x01q\"\x03A\xca\x00F\r\x00 \x03A\x0eG\r\x01\x0b\x02@\x02@\x02@ \x00A\xe0\x85\xc0\x80\x00A\x03\x10\xa7\x80\x80\x80\x00B \x88\xa7\x0e\x03\x00\x01\x02\x03\x0b \x01(\x02\x10 \x01(\x02\x14\x10\xa8\x80\x80\x80\x00A\x01K\r\x02 \x01A\x18j \x01A\x08j\x10\xa6\x80\x80\x80\x00 \x01)\x03\x18\"\x00B\x02Q\r\x02 \x00\xa7A\x01q\r\x02 \x01)\x03 !\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x01A0j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x00B\xff\x01\x83B\xcc\x00R\r\x02 \x00A\xa4\x89\xc0\x80\x00A\x02 \x01A0jA\x02\x10\xab\x80\x80\x80\x00 \x01)\x030!\x00A\x00!\x03\x02@\x03@ \x03A\x18F\r\x01 \x01A\x18j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x00B\xff\x01\x83B\xcc\x00R\r\x02 \x00A\xe8\x88\xc0\x80\x00A\x03 \x01A\x18jA\x03\x10\xab\x80\x80\x80\x00 \x011\x00\x18B\xcb\x00R\r\x02 \x011\x00 B\xcd\x00R\r\x02\x02@ \x01-\x00(\"\x03A\x0eF\r\x00 \x03A\xca\x00G\r\x03\x0b \x011\x008B\xcb\x00R\r\x02\x0c\x03\x0b \x01(\x02\x10 \x01(\x02\x14\x10\xa8\x80\x80\x80\x00A\x01K\r\x01 \x01A\x18j \x01A\x08j\x10\xa6\x80\x80\x80\x00 \x01)\x03\x18\"\x00B\x02Q\r\x01 \x00\xa7A\x01q\r\x01 \x01)\x03 !\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x01A0j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x00B\xff\x01\x83B\xcc\x00R\r\x01 \x00A\xc4\x89\xc0\x80\x00A\x02 \x01A0jA\x02\x10\xab\x80\x80\x80\x00 \x01A\x18j \x01)\x030\x10\xac\x80\x80\x80\x00 \x01(\x02\x18\r\x01 \x01A\x18j \x01)\x038\x10\xa9\x80\x80\x80\x00 \x01(\x02\x18A\x01G\r\x02\x0c\x01\x0b \x01(\x02\x10 \x01(\x02\x14\x10\xa8\x80\x80\x80\x00A\x01K\r\x00 \x01A\x18j \x01A\x08j\x10\xa6\x80\x80\x80\x00 \x01)\x03\x18\"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00 \x01)\x03 !\x00A\x00!\x03\x02@\x03@ \x03A\x18F\r\x01 \x01A\x18j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xe4\x89\xc0\x80\x00A\x03 \x01A\x18jA\x03\x10\xab\x80\x80\x80\x00 \x011\x00\x18B\xcb\x00R\r\x00 \x01A0j \x01)\x03 \x10\xac\x80\x80\x80\x00 \x01(\x020\r\x00 \x01A0j \x01)\x03(\x10\xa9\x80\x80\x80\x00 \x01(\x020A\x01G\r\x01\x0b\x00\x0b \x01A\xc0\x00j$\x80\x80\x80\x80\x00B\x02\x0b1\x00\x02@ \x02 \x04F\r\x00\x00\x0b \x00 \x01\xadB \x86B\x04\x84 \x03\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x85\x80\x80\x80\x00\x1a\x0b\xb3\x02\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00\x02@\x02@ \x01B\xff\x01\x83B\xcb\x00Q\r\x00 \x00B\x017\x03\x00\x0c\x01\x0b \x01\x10\x81\x80\x80\x80\x00!\x03 \x02A\x006\x02\x08 \x02 \x017\x03\x00 \x02 \x03B \x88>\x02\x0c \x02A\x10j \x02\x10\xa6\x80\x80\x80\x00\x02@ \x02)\x03\x10\"\x01B\x02Q\r\x00 \x01\xa7A\x01q\r\x00\x02@ \x02)\x03\x18\"\x01\xa7A\xff\x01q\"\x04A\xca\x00F\r\x00 \x04A\x0eG\r\x01\x0b\x02@ \x01A\x84\x89\xc0\x80\x00A\x01\x10\xa7\x80\x80\x80\x00B\xff\xff\xff\xff\x0fV\r\x00 \x02(\x02\x08 \x02(\x02\x0c\x10\xa8\x80\x80\x80\x00A\x01K\r\x00 \x02A\x10j \x02\x10\xa6\x80\x80\x80\x00 \x02)\x03\x10\"\x01B\x02Q\r\x00 \x01\xa7A\x01q\r\x00 \x02A\x10j \x02)\x03\x18\x10\xa9\x80\x80\x80\x00 \x02(\x02\x10\r\x00 \x02)\x03\x18!\x01 \x00B\x007\x03\x00 \x00 \x017\x03\x08\x0c\x02\x0b \x00B\x017\x03\x00\x0c\x01\x0b \x00B\x017\x03\x00\x0b \x02A j$\x80\x80\x80\x80\x00\x0b\x9e\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00 \x01A\x83\x80\x80\x80\x006\x02\x00 \x01(\x02\x00\x1aA\x00!\x02A\x00-\x00\xfc\x89\xc0\x80\x00\x1a\x02@\x03@ \x02A\x10F\r\x01 \x01 \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\x90\x8a\xc0\x80\x00A\x02 \x01A\x02\x10\xab\x80\x80\x80\x00 \x011\x00\x00B\xcb\x00R\r\x00 \x011\x00\x08B\xcd\x00Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0bA\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01A\x88\x80\x80\x80\x006\x02\x0c \x01(\x02\x0c\x1a \x01A\x89\x80\x80\x80\x006\x02\x08 \x01(\x02\x08\x1a\x02@ \x00B\xff\x01\x83B\xcc\x00Q\r\x00\x00\x0bB\x02\x0bg\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00-\x00\xe2\x80\xc0\x80\x00\x1a \x01B\x027\x03\x08\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xa8\x84\xc0\x80\x00A\x01 \x01A\x08jA\x01\x10\xab\x80\x80\x80\x00 \x011\x00\x08B\x04Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x12\x00A\x00-\x00\xb8\x80\xc0\x80\x00\x1aB\x84\x80\x80\x80\x10\x0br\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00-\x00\xc4\x81\xc0\x80\x00\x1a\x02@ \x00B\x02Q\r\x00 \x01B\x027\x03\x08\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xf8\x84\xc0\x80\x00A\x01 \x01A\x08jA\x01\x10\xab\x80\x80\x80\x00 \x01)\x03\x08B\xff\x01\x83B\x04Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0bI\x01\x01\x7f\x02@\x02@A\x01A\x02A\x00 \x00\xa7A\xff\x01q\"\x01\x1b \x01A\x01F\x1b\"\x01A\x02F\r\x00 \x01A\x01q\r\x01B\x02\x0f\x0b\x00\x0bA\x00-\x00\xb4\x82\xc0\x80\x00\x1aB\x83\x80\x80\x80\x10\x10\xa2\x80\x80\x80\x00\x00\x0b@\x01\x01\x7f\x02@\x02@A\x01A\x02A\x00 \x00\xa7A\xff\x01q\"\x01\x1b \x01A\x01F\x1b\"\x01A\x02F\r\x00 \x01A\x01q\r\x01B\x02\x0f\x0b\x00\x0bB\x83\x80\x80\x80\xf0\x00\x10\xa2\x80\x80\x80\x00\x00\x0b\x8a\x02\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00A\x00!\x03A\x00-\x00\xa6\x82\xc0\x80\x00\x1aA\x00-\x00\xc6\x80\xc0\x80\x00\x1a\x02@\x03@ \x03A\x10F\r\x01 \x02A\x08j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xe4\x84\xc0\x80\x00A\x02 \x02A\x08jA\x02\x10\xab\x80\x80\x80\x00 \x021\x00\x08B\x04R\r\x00 \x02B\x027\x03\x18 \x02)\x03\x10\"\x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xa8\x84\xc0\x80\x00A\x01 \x02A\x18jA\x01\x10\xab\x80\x80\x80\x00\x02@ \x02)\x03\x18\"\x00\xa7A\xff\x01q\"\x03A\x07F\r\x00 \x03A\xc1\x00G\r\x01 \x00\x10\x82\x80\x80\x80\x00\x1a\x0bA\x00-\x00\xf0\x80\xc0\x80\x00\x1a \x01B\xff\x01\x83B\x04R\r\x00 \x01B \x88\xa7A}jA}K\r\x01\x0b\x00\x0b \x02A j$\x80\x80\x80\x80\x00B\x02\x0b\x90\x04\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A0k\"\x01$\x80\x80\x80\x80\x00A\x00-\x00\xea\x83\xc0\x80\x00\x1a \x01A\x81\x80\x80\x80\x006\x02 \x01(\x02 \x1aA\x00-\x00\xd2\x81\xc0\x80\x00\x1aA\x00-\x00\xe0\x81\xc0\x80\x00\x1aA\x00-\x00\xee\x81\xc0\x80\x00\x1a \x01B\x027\x03\x08\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xa8\x84\xc0\x80\x00A\x01 \x01A\x08jA\x01\x10\xab\x80\x80\x80\x00 \x01)\x03\x08\"\x00B\xff\x01\x83B\xcb\x00R\r\x00 \x00\x10\x81\x80\x80\x80\x00!\x02 \x01A\x006\x02\x18 \x01 \x007\x03\x10 \x01 \x02B \x88>\x02\x1c \x01A j \x01A\x10j\x10\xa6\x80\x80\x80\x00 \x01)\x03 \"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00\x02@ \x01)\x03(\"\x00\xa7A\xff\x01q\"\x03A\xca\x00F\r\x00 \x03A\x0eG\r\x01\x0b\x02@\x02@\x02@ \x00A\x98\x85\xc0\x80\x00A\x02\x10\xa7\x80\x80\x80\x00B \x88\xa7\x0e\x02\x01\x00\x03\x0b \x01(\x02\x18 \x01(\x02\x1c\x10\xa8\x80\x80\x80\x00A\x01K\r\x02 \x01A j \x01A\x10j\x10\xa6\x80\x80\x80\x00 \x01)\x03 \"\x00B\x02Q\r\x02 \x00\xa7A\x01q\r\x02 \x01)\x03(!\x00 \x01B\x027\x03 \x00B\xff\x01\x83B\xcc\x00R\r\x02 \x00A\xa8\x84\xc0\x80\x00A\x01 \x01A jA\x01\x10\xab\x80\x80\x80\x00 \x011\x00 B\xcb\x00Q\r\x01\x0c\x02\x0b \x01(\x02\x18 \x01(\x02\x1c\x10\xa8\x80\x80\x80\x00A\x01K\r\x01 \x01A j \x01A\x10j\x10\xa6\x80\x80\x80\x00 \x01)\x03 \"\x00B\x02Q\r\x01 \x00\xa7A\x01q\r\x01 \x01)\x03(!\x00 \x01B\x027\x03 \x00B\xff\x01\x83B\xcc\x00R\r\x01 \x00A\xa8\x84\xc0\x80\x00A\x01 \x01A jA\x01\x10\xab\x80\x80\x80\x00 \x011\x00 B\x04R\r\x01\x0b \x01A0j$\x80\x80\x80\x80\x00B\x02\x0f\x0b\x00\x0bZ\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\x94\x84\xc0\x80\x00\x1aA\x00-\x00\x80\x80\xc0\x80\x00\x1a \x00B\x84\x80\x80\x80\x107\x03\x08A\xf8\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0bo\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\x8e\x80\xc0\x80\x00\x1a \x00A\xf8\x85\xc0\x80\x00A\x01\x10\xb8\x80\x80\x80\x00\x02@ \x00(\x02\x00A\x01G\r\x00\x00\x0b \x00)\x03\x08!\x01 \x00B\x84\x80\x80\x80\x107\x03\x08 \x00 \x017\x03\x00 \x00\x10\xb9\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0b\xdb\x01\x02\x01~\x04\x7f\x02@\x02@ \x02A\tK\r\x00B\x00!\x03 \x02!\x04 \x01!\x05\x03@\x02@ \x04\r\x00 \x03B\x08\x86B\x0e\x84!\x03\x0c\x03\x0bA\x01!\x06\x02@ \x05-\x00\x00\"\x07A\xdf\x00F\r\x00\x02@\x02@ \x07APjA\xff\x01qA\nI\r\x00 \x07A\xbf\x7fjA\xff\x01qA\x1aI\r\x01 \x07A\x9f\x7fjA\xff\x01qA\x1aO\r\x04 \x07AEj!\x06\x0c\x02\x0b \x07ARj!\x06\x0c\x01\x0b \x07AKj!\x06\x0b \x03B\x06\x86 \x06\xadB\xff\x01\x83\x84!\x03 \x04A\x7fj!\x04 \x05A\x01j!\x05\x0c\x00\x0b\x0b \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x87\x80\x80\x80\x00!\x03\x0b \x00B\x007\x03\x00 \x00 \x037\x03\x08\x0b\x17\x00 \x00\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x84\x80\x80\x80\x00\x0b\xc4\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x01$\x80\x80\x80\x80\x00A\x00!\x02A\x00-\x00\x9a\x81\xc0\x80\x00\x1a\x02@\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00\x02@\x03@ \x02A\x10F\r\x01 \x01A\x08j \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b \x00 \x01A\x08j\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x83\x80\x80\x80\x00\x1a \x01B\x027\x03\x18 \x01)\x03\x08\"\x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xa8\x84\xc0\x80\x00A\x01 \x01A\x18jA\x01\x10\xab\x80\x80\x80\x00 \x011\x00\x18B\x04R\r\x00 \x011\x00\x10B\x04Q\r\x01\x0b\x00\x0b \x01A j$\x80\x80\x80\x80\x00B\x02\x0bo\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\xa4\x83\xc0\x80\x00\x1a \x00B\x84\x80\x80\x80\x107\x03\x18A\xa8\x84\xc0\x80\x00A\x01 \x00A\x18jA\x01\x10\x9a\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80 7\x03\x10 \x00 \x017\x03\x08 \x00A\x08j\x10\xb9\x80\x80\x80\x00!\x01 \x00A j$\x80\x80\x80\x80\x00 \x01\x0b0\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01A\x8a\x80\x80\x80\x006\x02\x0c \x01(\x02\x0c\x1a\x02@ \x00B\xff\x01\x83B\xcb\x00Q\r\x00\x00\x0bB\x02\x0b0\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01A\x8b\x80\x80\x80\x006\x02\x0c \x01(\x02\x0c\x1a\x02@ \x00B\xff\x01\x83B\xcb\x00Q\r\x00\x00\x0bB\x02\x0b\x8d\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00!\x02A\x00-\x00\xc0\x83\xc0\x80\x00\x1a\x02@\x03@ \x02A\x10F\r\x01 \x01 \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\x90\x8a\xc0\x80\x00A\x02 \x01A\x02\x10\xab\x80\x80\x80\x00 \x011\x00\x00B\x04R\r\x00 \x01)\x03\x08B\xfe\x01\x83P\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x03\x00\x00\x0b\t\x00\x10\xbf\x80\x80\x80\x00\x00\x0b\x0b\xaa\n\x01\x00A\x80\x80\xc0\x00\x0b\xa0\nSpEcV1Hh\xdc\xaaa\x8d\xf7\rSpEcV1\xe7\xcf\x9b1n\x15\x13\xfeSpEcV1\xe2\x01y\xc9\x9a\xf8\xedtSpEcV1v1\x0eP\xa9C\xc7*SpEcV1\xa9<\xd8+\xb7\xa7\r\x17SpEcV1X\x03\xf6t\xc7\xd0\x01\"SpEcV1\'\xbd_A\r\x9a\x89\x02SpEcV1p\x8c\x0fN!\x082\xd8SpEcV1\xc2\xf4N\xbf\xebqvpSpEcV1K\xdf\'8m/\xe8\x1dSpEcV1@\xb9LO\xf9\xd1\xe8\xe2SpEcV1\xde\x1dMa\x01\xec\xb0ASpEcV1\xc2 \x1b\xdc\xc8gxZSpEcV1[Q+\xe9\xde\xd5\xf2>SpEcV1\xb3/\x97\xd5\x06\xbd3BSpEcV1?\xd9\xb3q\xdep>\xf3SpEcV1*\\\x9c\xf4e\xaa\x1e]SpEcV1u2\x0b\x97\xae\xcd\x86\xbfSpEcV1\x0c\xf0\xf6w\xfd\x1a\x1b\x94SpEcV1\'\xf2\xa2\xb9\xd0)\xc0uSpEcV1\xf5\xd4\x9b\xa3\xccI\x13\xf7SpEcV1\x84\x08Y\xae\xa0\xf128SpEcV1\r\xb76\xae\x93D\xef\x1aSpEcV1\x8b\x89\x1f#\xbd\x157\xf4SpEcV16\x83?\xf0\xcdW\xb1/SpEcV1\x94\xc7w/_\xebXcSpEcV1\xb4\xabN]\xe3\xeaA\xd6SpEcV1\x13?J\x12d\xden|SpEcV1q\xa3z;6\xa6R\x01SpEcV1q^\xe2&\x9di\x9d\x0eSpEcV1Y\xa66\xb3\xecxE\x13SpEcV1\xcf@%X\xde+J@SpEcV1\xb6\x1c\xfd\xdfhY-dSpEcV1 \xfbl\x04B\x82\xc0\xb4SpEcV1\xe3\xf2\x9b5%a\xfb\xd6SpEcV1\xe6Q\xd5T\x13\x8a\xb7lSpEcV1[\xf4R\xdf\xdd\xb4\xb0\xbcSpEcV1\xaaX8\xde\xef\xbb6%SpEcV1k\xe4zxB\xd1+\x02val\x00\x00\x00\"\x02\x10\x00\x03\x00\x00\x00StellarAssetAccount\x00\x80\x04\x10\x00\x04\x00\x00\x000\x02\x10\x00\x0c\x00\x00\x00<\x02\x10\x00\x07\x00\x00\x00anested\x00\\\x02\x10\x00\x01\x00\x00\x00]\x02\x10\x00\x06\x00\x00\x00datat\x02\x10\x00\x04\x00\x00\x00NotRecursiveRecursive\x00\x00\x00\x80\x02\x10\x00\x0c\x00\x00\x00\x8c\x02\x10\x00\t\x00\x00\x00ContractCreateContractHostFnCreateContractWithCtorHostFn\xa8\x02\x10\x00\x08\x00\x00\x00\xb0\x02\x10\x00\x14\x00\x00\x00\xc4\x02\x10\x00\x1c\x00\x00\x00A\x00\x00\x00]\x02\x10\x00\x06\x00\x00\x00xy\x00\x00\x04\x03\x10\x00\x01\x00\x00\x00\x05\x03\x10\x00\x01\x00\x00\x00inner\x00\x00\x00\x18\x03\x10\x00\x05\x00\x00\x00transfercoordsamount6\x03\x10\x00\x06\x00\x00\x00used_event_simplepayloadU\x03\x10\x00\x07\x00\x00\x00used_event_with_refsused_event_with_data_typeused_event_with_topic_typeused_event_with_nested_dataused_event_with_nested_topicSpEcV1\xb6\xb1Hy\xda\xca\xaf\xccSpEcV1\x9e)H\x8e\xf0\x01{{SpEcV1ULqD\xd3\xfa:\x1fSpEcV1\x15\xe5\x1a,\xc0\xc7\xef\xd4SpEcV1s\x94\x0c\x1926\x1d\x90SpEcV1\xa3J\xcf\xf7D\x93\x0bBSpEcV1L|{\r\xf4\xf2\x1a\xa8SpEcV1\xf1\xf9\x90\x07E*e\xfdargscontractfn_name\x00\x00\x00R\x04\x10\x00\x04\x00\x00\x00V\x04\x10\x00\x08\x00\x00\x00^\x04\x10\x00\x07\x00\x00\x00Wasm\x80\x04\x10\x00\x04\x00\x00\x00contextsub_invocations\x00\x00\x8c\x04\x10\x00\x07\x00\x00\x00\x93\x04\x10\x00\x0f\x00\x00\x00executablesalt\x00\x00\xb4\x04\x10\x00\n\x00\x00\x00\xbe\x04\x10\x00\x04\x00\x00\x00constructor_args\xd4\x04\x10\x00\x10\x00\x00\x00\xb4\x04\x10\x00\n\x00\x00\x00\xbe\x04\x10\x00\x04\x00\x00\x00SpEcV1\xa3\x16\n\x8f\xc9\x92\xd2\x11f1f2\x00\x00\n\x05\x10\x00\x02\x00\x00\x00\x0c\x05\x10\x00\x02\x00\x00\x00\x00\x87`\x0econtractspecv0\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumB\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumC\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x07StructA\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorB\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorC\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00f\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventA\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventB\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_b\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventC\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_c\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventD\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_d\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Context\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructA\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructB\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructC\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x03\xea\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntA\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntB\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntC\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x01,\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleB\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleC\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08UsedLeaf\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08with_map\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01m\x00\x00\x00\x00\x00\x03\xec\x00\x00\x07\xd0\x00\x00\x00\nUsedMapKey\x00\x00\x00\x00\x07\xd0\x00\x00\x00\nUsedMapVal\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08with_vec\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01v\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x0eUsedVecElement\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nUnusedEnum\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01A\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01B\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nUsedMapKey\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02K1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02K2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nUsedMapVal\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01v\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nwith_error\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd0\x00\x00\x00\rUsedErrorEnum\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nwith_param\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x0fUsedParamStruct\x00\x00\x00\x00\x00\x00\x00\x00\x02ie\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x10UsedParamIntEnum\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nwith_tuple\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01t\x00\x00\x00\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x07\xd0\x00\x00\x00\x10UsedTupleElement\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bUnusedEvent\x00\x00\x00\x00\x01\x00\x00\x00\x0cunused_event\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cUnusedStruct\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cUsedResultOk\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bwith_option\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01o\x00\x00\x00\x00\x00\x03\xe8\x00\x00\x07\xd0\x00\x00\x00\x11UsedOptionElement\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bwith_result\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x07\xd0\x00\x00\x00\x0cUsedResultOk\x00\x00\x07\xd0\x00\x00\x00\rUsedErrorEnum\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bwith_return\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0eUsedReturnEnum\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rUnusedIntEnum\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02U1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02U2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rUsedErrorEnum\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x08NotFound\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07Invalid\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cwith_non_pub\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x10UsedNonPubStruct\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0eUnusedPubError\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Nope\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0eUsedReturnEnum\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01A\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01B\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0eUsedVecElement\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fUsedNonPubError\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Fail\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fUsedParamStruct\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x06nested\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12UsedNestedInStruct\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fUsedRefDataType\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06nested\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x10UsedRefDataInner\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0epublish_simple\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0ewith_recursion\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01r\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x11UsedRecursiveRoot\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fUsedEventSimple\x00\x00\x00\x00\x01\x00\x00\x00\x11used_event_simple\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06amount\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedNonPubStruct\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedParamIntEnum\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01X\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01Y\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedRefDataInner\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedRefTopicType\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04Send\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Recv\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedTupleElement\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fwith_executable\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01e\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fwith_lib_struct\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x07StructC\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fwith_vec_nested\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01v\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x14UsedVecElementNested\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UnusedNonPubError\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03Bad\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedEventDataType\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x01y\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedOptionElement\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedRecursiveLeaf\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x11UsedRecursiveRoot\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedRecursiveNode\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x0cNotRecursive\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x08UsedLeaf\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\tRecursive\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x11UsedRecursiveLeaf\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedRecursiveRoot\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x07\xd0\x00\x00\x00\x11UsedRecursiveNode\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10with_panic_error\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04fail\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedEventWithRefs\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x14used_event_with_refs\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x07\xd0\x00\x00\x00\x10UsedRefTopicType\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07payload\x00\x00\x00\x07\xd0\x00\x00\x00\x0fUsedRefDataType\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UnusedNonPubStruct\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedEventDataInner\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedEventDataOuter\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05inner\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12UsedEventDataInner\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedEventTopicType\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x08Transfer\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Mint\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedNestedInStruct\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x07\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedPanicErrorEnum\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Boom\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11publish_data_type\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11publish_ref_event\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11with_assert_error\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02ok\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11with_invoker_auth\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01i\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11with_tuple_return\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x07\xd0\x00\x00\x00\x16UsedTupleReturnElement\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13UsedAssertErrorEnum\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03Bad\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13UsedEventTopicInner\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13UsedEventTopicOuter\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05inner\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x13UsedEventTopicInner\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13UsedVecInnerElement\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12publish_topic_type\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12with_auth_contexts\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01c\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x07Context\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12with_non_pub_error\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd0\x00\x00\x00\x0fUsedNonPubError\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12with_wasm_imported\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x07StructA\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14UsedVecElementNested\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x05inner\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x13UsedVecInnerElement\x00\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\tvec_inner\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x16UsedVecInnerVecElement\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13publish_nested_data\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14publish_nested_topic\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14with_panic_raw_error\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04fail\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15UsedEventWithDataType\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x19used_event_with_data_type\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07payload\x00\x00\x00\x07\xd0\x00\x00\x00\x11UsedEventDataType\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16UsedTupleReturnElement\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16UsedVecInnerVecElement\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16UsedEventWithTopicType\x00\x00\x00\x00\x00\x01\x00\x00\x00\x1aused_event_with_topic_type\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x07\xd0\x00\x00\x00\x12UsedEventTopicType\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06amount\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17UsedEventWithNestedData\x00\x00\x00\x00\x01\x00\x00\x00\x1bused_event_with_nested_data\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07payload\x00\x00\x00\x07\xd0\x00\x00\x00\x12UsedEventDataOuter\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18UnusedNonContractFnParam\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18UsedEventWithNestedTopic\x00\x00\x00\x01\x00\x00\x00\x1cused_event_with_nested_topic\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04info\x00\x00\x07\xd0\x00\x00\x00\x13UsedEventTopicOuter\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06amount\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19UnusedNonContractFnReturn\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x07Context\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumB\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumC\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x07StructA\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorB\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorC\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00f\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventA\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventB\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_b\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventC\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_c\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventD\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_d\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructA\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructB\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructC\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x03\xea\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntA\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntB\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntC\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x01,\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleB\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleC\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x0b\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; + const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01^\x10`\x02~~\x01~`\x01~\x01~`\x03~~~\x01~`\x04~~~~\x01~`\x00\x00`\x00\x01~`\x02\x7f\x7f\x01~`\x04\x7f\x7f\x7f\x7f\x01~`\x01~\x00`\x02\x7f\x7f\x00`\x03~\x7f\x7f\x01~`\x02\x7f\x7f\x01\x7f`\x02\x7f~\x00`\x05~\x7f\x7f\x7f\x7f\x00`\x03\x7f\x7f\x7f\x00`\x01\x7f\x01~\x02I\x0c\x01x\x011\x00\x00\x01v\x013\x00\x01\x01i\x012\x00\x01\x01v\x01h\x00\x02\x01v\x01g\x00\x00\x01m\x01a\x00\x03\x01b\x01m\x00\x02\x01b\x01j\x00\x00\x01v\x011\x00\x00\x01b\x018\x00\x01\x01x\x015\x00\x01\x01m\x019\x00\x02\x0365\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x05\x06\x00\x07\x05\x05\x05\x05\x05\x05\x01\x08\x01\x05\x01\t\n\x0b\x0c\x01\r\x0c\x01\x01\x01\x05\x01\x01\x01\x00\x01\x05\x05\x0e\x0f\x01\x05\x01\x01\x01\x04\x04\x04\x05\x01p\x01\x0c\x0c\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\xd2\x88\xc0\x00\x0b\x7f\x00A\xa0\x8a\xc0\x00\x0b\x7f\x00A\xa0\x8a\xc0\x00\x0b\x07\x86\x04\x1f\x06memory\x02\x00\x11publish_data_type\x00\x17\x13publish_nested_data\x00\x1b\x14publish_nested_topic\x00\x1c\x11publish_ref_event\x00\x1e\x0epublish_simple\x00\x1f\x12publish_topic_type\x00 \x11with_assert_error\x00!\x12with_auth_contexts\x00#\nwith_error\x00$\x0fwith_executable\x00%\x11with_invoker_auth\x00*\x0fwith_lib_struct\x00-\x08with_map\x00.\x0cwith_non_pub\x00/\x12with_non_pub_error\x000\x0bwith_option\x001\x10with_panic_error\x002\x14with_panic_raw_error\x003\nwith_param\x004\x0ewith_recursion\x005\x0bwith_result\x006\x0bwith_return\x007\nwith_tuple\x00:\x11with_tuple_return\x00;\x08with_vec\x00<\x0fwith_vec_nested\x00=\x12with_wasm_imported\x00>\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\t\x11\x01\x00A\x01\x0b\x0b\x0f\x11\x13\x12\x0e\r\x14\x15\x16\x0c\x10\n\xac05\x0c\x00A\x00-\x00\x9c\x80\xc0\x80\x00\x1a\x0b\x16\x00A\x00-\x00\xfe\x80\xc0\x80\x00\x1aA\x00-\x00\xd4\x80\xc0\x80\x00\x1a\x0b\x0c\x00A\x00-\x00\x8c\x81\xc0\x80\x00\x1a\x0bJ\x01\x01\x7f#\x80\x80\x80\x80\x00!\x00A\x00-\x00\xea\x83\xc0\x80\x00\x1a \x00A\x10k\"\x00A\x81\x80\x80\x80\x006\x02\x0c \x00(\x02\x0c\x1aA\x00-\x00\xd2\x81\xc0\x80\x00\x1aA\x00-\x00\xe0\x81\xc0\x80\x00\x1aA\x00-\x00\xee\x81\xc0\x80\x00\x1a\x0b6\x01\x01\x7f#\x80\x80\x80\x80\x00!\x00A\x00-\x00\xec\x82\xc0\x80\x00\x1a \x00A\x10k\"\x00A\x82\x80\x80\x80\x006\x02\x0c \x00(\x02\x0c\x1aA\x00-\x00\xfa\x82\xc0\x80\x00\x1a\x0b\x0c\x00A\x00-\x00\xb2\x83\xc0\x80\x00\x1a\x0b\x86\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00A\x83\x80\x80\x80\x006\x02\x0c \x00(\x02\x0c\x1aA\x00-\x00\xc4\x88\xc0\x80\x00\x1a \x00A\x84\x80\x80\x80\x006\x02\x04 \x00(\x02\x04\x1aA\x00-\x00\xf0\x87\xc0\x80\x00\x1aA\x00-\x00\xe2\x87\xc0\x80\x00\x1aA\x00-\x00\x8c\x88\xc0\x80\x00\x1a \x00A\x83\x80\x80\x80\x006\x02\x08 \x00(\x02\x08\x1aA\x00-\x00\xe2\x87\xc0\x80\x00\x1aA\x00-\x00\x9a\x88\xc0\x80\x00\x1aA\x00-\x00\xfe\x87\xc0\x80\x00\x1a\x0b\x02\x00\x0bk\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00A\x83\x80\x80\x80\x006\x02\x0c \x00(\x02\x0c\x1aA\x00-\x00\xc4\x88\xc0\x80\x00\x1aA\x00-\x00\xe2\x87\xc0\x80\x00\x1aA\x00-\x00\x8c\x88\xc0\x80\x00\x1a \x00A\x83\x80\x80\x80\x006\x02\x08 \x00(\x02\x08\x1aA\x00-\x00\xe2\x87\xc0\x80\x00\x1aA\x00-\x00\x9a\x88\xc0\x80\x00\x1aA\x00-\x00\xa8\x88\xc0\x80\x00\x1a\x0b\x0c\x00A\x00-\x00\xf8\x83\xc0\x80\x00\x1a\x0b\x0c\x00A\x00-\x00\x86\x84\xc0\x80\x00\x1a\x0b\xae\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A k\"\x00$\x80\x80\x80\x80\x00A\xb0\x86\xc0\x80\x00A\x06\x10\x98\x80\x80\x80\x00!\x01A\x00-\x00\xa8\x81\xc0\x80\x00\x1aA\x00-\x00\x88\x83\xc0\x80\x00\x1aA\xf8\x86\xc0\x80\x00A\x19\x10\x98\x80\x80\x80\x00 \x01\x10\x99\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80 7\x03\x18 \x00B\x84\x80\x80\x80\x107\x03\x10 \x00A\x88\x86\xc0\x80\x00A\x02 \x00A\x10jA\x02\x10\x9a\x80\x80\x80\x007\x03\x08 \x01A\xdc\x86\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A j$\x80\x80\x80\x80\x00B\x02\x0bE\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00 \x01\x10\xb8\x80\x80\x80\x00\x02@ \x02(\x02\x00A\x01G\r\x00\x00\x0b \x02)\x03\x08!\x03 \x02A\x10j$\x80\x80\x80\x80\x00 \x03\x0b\x92\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00 \x02 \x017\x03\x08 \x02 \x007\x03\x00A\x00!\x03\x03~\x02@ \x03A\x10G\r\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x10j \x03j \x02 \x03j)\x03\x007\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x02A\x10j\x10\xb9\x80\x80\x80\x00!\x01 \x02A j$\x80\x80\x80\x80\x00 \x01\x0f\x0b \x02A\x10j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b.\x00\x02@ \x01 \x03F\r\x00\x00\x0b \x00\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x8b\x80\x80\x80\x00\x0b\xc5\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\xdd\x84\xc0\x80\x00A\x06\x10\x98\x80\x80\x80\x00!\x01A\x00-\x00\xfc\x81\xc0\x80\x00\x1aA\x00-\x00\x8a\x82\xc0\x80\x00\x1aA\x00-\x00\xce\x83\xc0\x80\x00\x1aA\xab\x87\xc0\x80\x00A\x1b\x10\x98\x80\x80\x80\x00 \x01\x10\x99\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80\xa0\x057\x03\x08 \x00A\xa8\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x007\x03\x00 \x00A\xa0\x86\xc0\x80\x00A\x01 \x00A\x01\x10\x9a\x80\x80\x80\x007\x03\x08 \x01A\xdc\x86\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\xbd\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\xd0\x82\xc0\x80\x00\x1aA\x00-\x00\xde\x82\xc0\x80\x00\x1aA\x00-\x00\xdc\x83\xc0\x80\x00\x1aA\xc6\x87\xc0\x80\x00A\x1c\x10\x98\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80\xa0\x057\x03\x08 \x00A\xa8\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x007\x03\x00 \x01A\xa0\x86\xc0\x80\x00A\x01 \x00A\x01\x10\x9a\x80\x80\x80\x00\x10\x99\x80\x80\x80\x00!\x01 \x00\x10\x9d\x80\x80\x80\x007\x03\x08 \x01A\xbc\x86\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x06\x00B\x8b\xc8\x01\x0b\xc7\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00 \x00A\x85\x80\x80\x80\x006\x02\x08 \x00(\x02\x08\x1a \x00A\x86\x80\x80\x80\x006\x02\x08 \x00(\x02\x08\x1aA\x00-\x00\xb6\x81\xc0\x80\x00\x1aA\xe4\x86\xc0\x80\x00A\x14\x10\x98\x80\x80\x80\x00B\x84\x80\x80\x80\x10\x10\x99\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80\xb0\x0c7\x03\x08 \x00A\xa8\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x007\x03\x00 \x00A\xfc\x85\xc0\x80\x00A\x01 \x00A\x01\x10\x9a\x80\x80\x80\x007\x03\x08 \x01A\xdc\x86\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x7f\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\xa8\x86\xc0\x80\x00A\x08\x10\x98\x80\x80\x80\x00!\x01A\x00-\x00\xaa\x80\xc0\x80\x00\x1aA\xc4\x86\xc0\x80\x00A\x11\x10\x98\x80\x80\x80\x00 \x01\x10\x99\x80\x80\x80\x00!\x01 \x00\x10\x9d\x80\x80\x80\x007\x03\x08 \x01A\xbc\x86\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b}\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\x98\x82\xc0\x80\x00\x1aA\x00-\x00\x96\x83\xc0\x80\x00\x1aA\x91\x87\xc0\x80\x00A\x1a\x10\x98\x80\x80\x80\x00B\x84\x80\x80\x80\x10\x10\x99\x80\x80\x80\x00!\x01 \x00\x10\x9d\x80\x80\x80\x007\x03\x08 \x01A\xbc\x86\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0bJ\x01\x01\x7f\x02@\x02@A\x01A\x02A\x00 \x00\xa7A\xff\x01q\"\x01\x1b \x01A\x01F\x1b\"\x01A\x02F\r\x00 \x01A\x01qE\r\x01B\x02\x0f\x0b\x00\x0bA\x00-\x00\xc2\x82\xc0\x80\x00\x1aB\x83\x80\x80\x80\x10\x10\xa2\x80\x80\x80\x00\x00\x0b\x0b\x00 \x00\x10\x8a\x80\x80\x80\x00\x1a\x0b0\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01A\x87\x80\x80\x80\x006\x02\x0c \x01(\x02\x0c\x1a\x02@ \x00B\xff\x01\x83B\xcb\x00Q\r\x00\x00\x0bB\x02\x0b\x13\x00A\x00-\x00\x80\x80\xc0\x80\x00\x1aB\x84\x80\x80\x80\xa0\x05\x0b\xc0\x02\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A k\"\x01$\x80\x80\x80\x80\x00A\x00-\x00\xb6\x88\xc0\x80\x00\x1a\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00 \x00\x10\x81\x80\x80\x80\x00!\x02 \x01A\x006\x02\x08 \x01 \x007\x03\x00 \x01 \x02B \x88>\x02\x0c \x01A\x10j \x01\x10\xa6\x80\x80\x80\x00 \x01)\x03\x10\"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00\x02@ \x01)\x03\x18\"\x00\xa7A\xff\x01q\"\x03A\xca\x00F\r\x00 \x03A\x0eG\r\x01\x0b\x02@\x02@\x02@\x02@ \x00A\xc4\x84\xc0\x80\x00A\x03\x10\xa7\x80\x80\x80\x00B \x88\xa7\x0e\x03\x01\x02\x00\x04\x0b \x01(\x02\x08 \x01(\x02\x0c\x10\xa8\x80\x80\x80\x00\r\x03\x0c\x02\x0b \x01(\x02\x08 \x01(\x02\x0c\x10\xa8\x80\x80\x80\x00A\x01K\r\x02 \x01A\x10j \x01\x10\xa6\x80\x80\x80\x00 \x01)\x03\x10\"\x00B\x02Q\r\x02 \x00\xa7A\x01q\r\x02 \x01A\x10j \x01)\x03\x18\x10\xa9\x80\x80\x80\x00 \x01(\x02\x10A\x01G\r\x01\x0c\x02\x0b \x01(\x02\x08 \x01(\x02\x0c\x10\xa8\x80\x80\x80\x00\r\x01\x0b \x01A j$\x80\x80\x80\x80\x00B\x02\x0f\x0b\x00\x0bJ\x02\x01~\x01\x7fB\x02!\x02\x02@ \x01(\x02\x08\"\x03 \x01(\x02\x0cO\r\x00 \x00 \x01)\x03\x00 \x03\xadB \x86B\x04\x84\x10\x88\x80\x80\x80\x007\x03\x08 \x01 \x03A\x01j6\x02\x08B\x00!\x02\x0b \x00 \x027\x03\x00\x0b\x1c\x00 \x00 \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x86\x80\x80\x80\x00\x0b\x19\x00\x02@ \x01 \x00I\r\x00 \x01 \x00k\x0f\x0b\x10\xc0\x80\x80\x80\x00\x00\x0bB\x01\x01~B\x01!\x02\x02@ \x01B\xff\x01\x83B\xc8\x00R\r\x00 \x01\x10\x89\x80\x80\x80\x00B\x80\x80\x80\x80p\x83B\x80\x80\x80\x80\x80\x04R\r\x00 \x00 \x017\x03\x08B\x00!\x02\x0b \x00 \x027\x03\x00\x0b\xd3\x07\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A\xc0\x00k\"\x01$\x80\x80\x80\x80\x00 \x01A\x83\x80\x80\x80\x006\x02\x18 \x01(\x02\x18\x1aA\x00-\x00\xc4\x88\xc0\x80\x00\x1a \x01A\x84\x80\x80\x80\x006\x02\x18 \x01(\x02\x18\x1aA\x00-\x00\xf0\x87\xc0\x80\x00\x1aA\x00-\x00\xe2\x87\xc0\x80\x00\x1aA\x00-\x00\x8c\x88\xc0\x80\x00\x1a \x01A\x83\x80\x80\x80\x006\x02\x18 \x01(\x02\x18\x1aA\x00-\x00\xe2\x87\xc0\x80\x00\x1aA\x00-\x00\x9a\x88\xc0\x80\x00\x1aA\x00-\x00\xfe\x87\xc0\x80\x00\x1a\x02@\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00 \x00\x10\x81\x80\x80\x80\x00!\x02 \x01A\x006\x02\x10 \x01 \x007\x03\x08 \x01 \x02B \x88>\x02\x14 \x01A\x18j \x01A\x08j\x10\xa6\x80\x80\x80\x00 \x01)\x03\x18\"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00\x02@ \x01)\x03 \"\x00\xa7A\xff\x01q\"\x03A\xca\x00F\r\x00 \x03A\x0eG\r\x01\x0b\x02@\x02@\x02@ \x00A\xe0\x85\xc0\x80\x00A\x03\x10\xa7\x80\x80\x80\x00B \x88\xa7\x0e\x03\x00\x01\x02\x03\x0b \x01(\x02\x10 \x01(\x02\x14\x10\xa8\x80\x80\x80\x00A\x01K\r\x02 \x01A\x18j \x01A\x08j\x10\xa6\x80\x80\x80\x00 \x01)\x03\x18\"\x00B\x02Q\r\x02 \x00\xa7A\x01q\r\x02 \x01)\x03 !\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x01A0j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x00B\xff\x01\x83B\xcc\x00R\r\x02 \x00A\xa4\x89\xc0\x80\x00A\x02 \x01A0jA\x02\x10\xab\x80\x80\x80\x00 \x01)\x030!\x00A\x00!\x03\x02@\x03@ \x03A\x18F\r\x01 \x01A\x18j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x00B\xff\x01\x83B\xcc\x00R\r\x02 \x00A\xe8\x88\xc0\x80\x00A\x03 \x01A\x18jA\x03\x10\xab\x80\x80\x80\x00 \x011\x00\x18B\xcb\x00R\r\x02 \x011\x00 B\xcd\x00R\r\x02\x02@ \x01-\x00(\"\x03A\x0eF\r\x00 \x03A\xca\x00G\r\x03\x0b \x011\x008B\xcb\x00R\r\x02\x0c\x03\x0b \x01(\x02\x10 \x01(\x02\x14\x10\xa8\x80\x80\x80\x00A\x01K\r\x01 \x01A\x18j \x01A\x08j\x10\xa6\x80\x80\x80\x00 \x01)\x03\x18\"\x00B\x02Q\r\x01 \x00\xa7A\x01q\r\x01 \x01)\x03 !\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x01A0j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x00B\xff\x01\x83B\xcc\x00R\r\x01 \x00A\xc4\x89\xc0\x80\x00A\x02 \x01A0jA\x02\x10\xab\x80\x80\x80\x00 \x01A\x18j \x01)\x030\x10\xac\x80\x80\x80\x00 \x01(\x02\x18\r\x01 \x01A\x18j \x01)\x038\x10\xa9\x80\x80\x80\x00 \x01(\x02\x18A\x01G\r\x02\x0c\x01\x0b \x01(\x02\x10 \x01(\x02\x14\x10\xa8\x80\x80\x80\x00A\x01K\r\x00 \x01A\x18j \x01A\x08j\x10\xa6\x80\x80\x80\x00 \x01)\x03\x18\"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00 \x01)\x03 !\x00A\x00!\x03\x02@\x03@ \x03A\x18F\r\x01 \x01A\x18j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xe4\x89\xc0\x80\x00A\x03 \x01A\x18jA\x03\x10\xab\x80\x80\x80\x00 \x011\x00\x18B\xcb\x00R\r\x00 \x01A0j \x01)\x03 \x10\xac\x80\x80\x80\x00 \x01(\x020\r\x00 \x01A0j \x01)\x03(\x10\xa9\x80\x80\x80\x00 \x01(\x020A\x01G\r\x01\x0b\x00\x0b \x01A\xc0\x00j$\x80\x80\x80\x80\x00B\x02\x0b1\x00\x02@ \x02 \x04F\r\x00\x00\x0b \x00 \x01\xadB \x86B\x04\x84 \x03\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x85\x80\x80\x80\x00\x1a\x0b\xb3\x02\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00\x02@\x02@ \x01B\xff\x01\x83B\xcb\x00Q\r\x00 \x00B\x017\x03\x00\x0c\x01\x0b \x01\x10\x81\x80\x80\x80\x00!\x03 \x02A\x006\x02\x08 \x02 \x017\x03\x00 \x02 \x03B \x88>\x02\x0c \x02A\x10j \x02\x10\xa6\x80\x80\x80\x00\x02@ \x02)\x03\x10\"\x01B\x02Q\r\x00 \x01\xa7A\x01q\r\x00\x02@ \x02)\x03\x18\"\x01\xa7A\xff\x01q\"\x04A\xca\x00F\r\x00 \x04A\x0eG\r\x01\x0b\x02@ \x01A\x84\x89\xc0\x80\x00A\x01\x10\xa7\x80\x80\x80\x00B\xff\xff\xff\xff\x0fV\r\x00 \x02(\x02\x08 \x02(\x02\x0c\x10\xa8\x80\x80\x80\x00A\x01K\r\x00 \x02A\x10j \x02\x10\xa6\x80\x80\x80\x00 \x02)\x03\x10\"\x01B\x02Q\r\x00 \x01\xa7A\x01q\r\x00 \x02A\x10j \x02)\x03\x18\x10\xa9\x80\x80\x80\x00 \x02(\x02\x10\r\x00 \x02)\x03\x18!\x01 \x00B\x007\x03\x00 \x00 \x017\x03\x08\x0c\x02\x0b \x00B\x017\x03\x00\x0c\x01\x0b \x00B\x017\x03\x00\x0b \x02A j$\x80\x80\x80\x80\x00\x0b\x9e\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00 \x01A\x83\x80\x80\x80\x006\x02\x00 \x01(\x02\x00\x1aA\x00!\x02A\x00-\x00\xfc\x89\xc0\x80\x00\x1a\x02@\x03@ \x02A\x10F\r\x01 \x01 \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\x90\x8a\xc0\x80\x00A\x02 \x01A\x02\x10\xab\x80\x80\x80\x00 \x011\x00\x00B\xcb\x00R\r\x00 \x011\x00\x08B\xcd\x00Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0bA\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01A\x88\x80\x80\x80\x006\x02\x0c \x01(\x02\x0c\x1a \x01A\x89\x80\x80\x80\x006\x02\x08 \x01(\x02\x08\x1a\x02@ \x00B\xff\x01\x83B\xcc\x00Q\r\x00\x00\x0bB\x02\x0bg\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00-\x00\xe2\x80\xc0\x80\x00\x1a \x01B\x027\x03\x08\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xa8\x84\xc0\x80\x00A\x01 \x01A\x08jA\x01\x10\xab\x80\x80\x80\x00 \x011\x00\x08B\x04Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x12\x00A\x00-\x00\xb8\x80\xc0\x80\x00\x1aB\x84\x80\x80\x80\x10\x0br\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00-\x00\xc4\x81\xc0\x80\x00\x1a\x02@ \x00B\x02Q\r\x00 \x01B\x027\x03\x08\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xf8\x84\xc0\x80\x00A\x01 \x01A\x08jA\x01\x10\xab\x80\x80\x80\x00 \x01)\x03\x08B\xff\x01\x83B\x04Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0bI\x01\x01\x7f\x02@\x02@A\x01A\x02A\x00 \x00\xa7A\xff\x01q\"\x01\x1b \x01A\x01F\x1b\"\x01A\x02F\r\x00 \x01A\x01q\r\x01B\x02\x0f\x0b\x00\x0bA\x00-\x00\xb4\x82\xc0\x80\x00\x1aB\x83\x80\x80\x80\x10\x10\xa2\x80\x80\x80\x00\x00\x0b@\x01\x01\x7f\x02@\x02@A\x01A\x02A\x00 \x00\xa7A\xff\x01q\"\x01\x1b \x01A\x01F\x1b\"\x01A\x02F\r\x00 \x01A\x01q\r\x01B\x02\x0f\x0b\x00\x0bB\x83\x80\x80\x80\xf0\x00\x10\xa2\x80\x80\x80\x00\x00\x0b\x8a\x02\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00A\x00!\x03A\x00-\x00\xa6\x82\xc0\x80\x00\x1aA\x00-\x00\xc6\x80\xc0\x80\x00\x1a\x02@\x03@ \x03A\x10F\r\x01 \x02A\x08j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xe4\x84\xc0\x80\x00A\x02 \x02A\x08jA\x02\x10\xab\x80\x80\x80\x00 \x021\x00\x08B\x04R\r\x00 \x02B\x027\x03\x18 \x02)\x03\x10\"\x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xa8\x84\xc0\x80\x00A\x01 \x02A\x18jA\x01\x10\xab\x80\x80\x80\x00\x02@ \x02)\x03\x18\"\x00\xa7A\xff\x01q\"\x03A\x07F\r\x00 \x03A\xc1\x00G\r\x01 \x00\x10\x82\x80\x80\x80\x00\x1a\x0bA\x00-\x00\xf0\x80\xc0\x80\x00\x1a \x01B\xff\x01\x83B\x04R\r\x00 \x01B \x88\xa7A}jA}K\r\x01\x0b\x00\x0b \x02A j$\x80\x80\x80\x80\x00B\x02\x0b\x90\x04\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A0k\"\x01$\x80\x80\x80\x80\x00A\x00-\x00\xea\x83\xc0\x80\x00\x1a \x01A\x81\x80\x80\x80\x006\x02 \x01(\x02 \x1aA\x00-\x00\xd2\x81\xc0\x80\x00\x1aA\x00-\x00\xe0\x81\xc0\x80\x00\x1aA\x00-\x00\xee\x81\xc0\x80\x00\x1a \x01B\x027\x03\x08\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xa8\x84\xc0\x80\x00A\x01 \x01A\x08jA\x01\x10\xab\x80\x80\x80\x00 \x01)\x03\x08\"\x00B\xff\x01\x83B\xcb\x00R\r\x00 \x00\x10\x81\x80\x80\x80\x00!\x02 \x01A\x006\x02\x18 \x01 \x007\x03\x10 \x01 \x02B \x88>\x02\x1c \x01A j \x01A\x10j\x10\xa6\x80\x80\x80\x00 \x01)\x03 \"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00\x02@ \x01)\x03(\"\x00\xa7A\xff\x01q\"\x03A\xca\x00F\r\x00 \x03A\x0eG\r\x01\x0b\x02@\x02@\x02@ \x00A\x98\x85\xc0\x80\x00A\x02\x10\xa7\x80\x80\x80\x00B \x88\xa7\x0e\x02\x01\x00\x03\x0b \x01(\x02\x18 \x01(\x02\x1c\x10\xa8\x80\x80\x80\x00A\x01K\r\x02 \x01A j \x01A\x10j\x10\xa6\x80\x80\x80\x00 \x01)\x03 \"\x00B\x02Q\r\x02 \x00\xa7A\x01q\r\x02 \x01)\x03(!\x00 \x01B\x027\x03 \x00B\xff\x01\x83B\xcc\x00R\r\x02 \x00A\xa8\x84\xc0\x80\x00A\x01 \x01A jA\x01\x10\xab\x80\x80\x80\x00 \x011\x00 B\xcb\x00Q\r\x01\x0c\x02\x0b \x01(\x02\x18 \x01(\x02\x1c\x10\xa8\x80\x80\x80\x00A\x01K\r\x01 \x01A j \x01A\x10j\x10\xa6\x80\x80\x80\x00 \x01)\x03 \"\x00B\x02Q\r\x01 \x00\xa7A\x01q\r\x01 \x01)\x03(!\x00 \x01B\x027\x03 \x00B\xff\x01\x83B\xcc\x00R\r\x01 \x00A\xa8\x84\xc0\x80\x00A\x01 \x01A jA\x01\x10\xab\x80\x80\x80\x00 \x011\x00 B\x04R\r\x01\x0b \x01A0j$\x80\x80\x80\x80\x00B\x02\x0f\x0b\x00\x0bZ\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\x94\x84\xc0\x80\x00\x1aA\x00-\x00\x80\x80\xc0\x80\x00\x1a \x00B\x84\x80\x80\x80\x107\x03\x08A\xf8\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0bo\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\x8e\x80\xc0\x80\x00\x1a \x00A\xf8\x85\xc0\x80\x00A\x01\x10\xb8\x80\x80\x80\x00\x02@ \x00(\x02\x00A\x01G\r\x00\x00\x0b \x00)\x03\x08!\x01 \x00B\x84\x80\x80\x80\x107\x03\x08 \x00 \x017\x03\x00 \x00\x10\xb9\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0b\xdb\x01\x02\x01~\x04\x7f\x02@\x02@ \x02A\tK\r\x00B\x00!\x03 \x02!\x04 \x01!\x05\x03@\x02@ \x04\r\x00 \x03B\x08\x86B\x0e\x84!\x03\x0c\x03\x0bA\x01!\x06\x02@ \x05-\x00\x00\"\x07A\xdf\x00F\r\x00\x02@\x02@ \x07APjA\xff\x01qA\nI\r\x00 \x07A\xbf\x7fjA\xff\x01qA\x1aI\r\x01 \x07A\x9f\x7fjA\xff\x01qA\x1aO\r\x04 \x07AEj!\x06\x0c\x02\x0b \x07ARj!\x06\x0c\x01\x0b \x07AKj!\x06\x0b \x03B\x06\x86 \x06\xadB\xff\x01\x83\x84!\x03 \x04A\x7fj!\x04 \x05A\x01j!\x05\x0c\x00\x0b\x0b \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x87\x80\x80\x80\x00!\x03\x0b \x00B\x007\x03\x00 \x00 \x037\x03\x08\x0b\x17\x00 \x00\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x84\x80\x80\x80\x00\x0b\xc4\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x01$\x80\x80\x80\x80\x00A\x00!\x02A\x00-\x00\x9a\x81\xc0\x80\x00\x1a\x02@\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00\x02@\x03@ \x02A\x10F\r\x01 \x01A\x08j \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b \x00 \x01A\x08j\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x83\x80\x80\x80\x00\x1a \x01B\x027\x03\x18 \x01)\x03\x08\"\x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xa8\x84\xc0\x80\x00A\x01 \x01A\x18jA\x01\x10\xab\x80\x80\x80\x00 \x011\x00\x18B\x04R\r\x00 \x011\x00\x10B\x04Q\r\x01\x0b\x00\x0b \x01A j$\x80\x80\x80\x80\x00B\x02\x0bo\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\xa4\x83\xc0\x80\x00\x1a \x00B\x84\x80\x80\x80\x107\x03\x18A\xa8\x84\xc0\x80\x00A\x01 \x00A\x18jA\x01\x10\x9a\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80 7\x03\x10 \x00 \x017\x03\x08 \x00A\x08j\x10\xb9\x80\x80\x80\x00!\x01 \x00A j$\x80\x80\x80\x80\x00 \x01\x0b0\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01A\x8a\x80\x80\x80\x006\x02\x0c \x01(\x02\x0c\x1a\x02@ \x00B\xff\x01\x83B\xcb\x00Q\r\x00\x00\x0bB\x02\x0b0\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01A\x8b\x80\x80\x80\x006\x02\x0c \x01(\x02\x0c\x1a\x02@ \x00B\xff\x01\x83B\xcb\x00Q\r\x00\x00\x0bB\x02\x0b\x8d\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00!\x02A\x00-\x00\xc0\x83\xc0\x80\x00\x1a\x02@\x03@ \x02A\x10F\r\x01 \x01 \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\x90\x8a\xc0\x80\x00A\x02 \x01A\x02\x10\xab\x80\x80\x80\x00 \x011\x00\x00B\x04R\r\x00 \x01)\x03\x08B\xfe\x01\x83P\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x03\x00\x00\x0b\t\x00\x10\xbf\x80\x80\x80\x00\x00\x0b\x0b\xaa\n\x01\x00A\x80\x80\xc0\x00\x0b\xa0\nSpEcV1\x08\xdeZ3[\x9d$\xdaSpEcV1\xbb\x90\xa2x\x83\x81k\"SpEcV1[\x06L\x8cz\xee\x02\x1fSpEcV1\xc8#\x9d\xb4S\xa8.\xafSpEcV1\x8a\xe5=\x1a\xf0\x17R!SpEcV11\xf9t\"\x98\xdfi\xdcSpEcV1\x97-l\xe7_x1\x18SpEcV15\xf3\xd0\x07e\x80\x0e\xd4SpEcV1\xe5\xdaj\x10\x14HE\x1eSpEcV1vU\xa32=\x17d\x95SpEcV1\x89\x03\xee?E\xf2p5SpEcV1#\xc3\xe8\xe8\xcf\xc4$SSpEcV1/u\xfac0C(\x1fhSpEcV1\x88\x99\xe9\xe74\xab$eSpEcV1\xdeU7\xf7\xd73\xb5\x15SpEcV10\xeb\xf0Q\xb2i\xb3\xa5SpEcV1[X\xfa\x18\xb1\x91x\x12SpEcV1\x8e\xb1\x07\xfed\xf4+PSpEcV1\xd5\xf2\xe2\x83\x8c\xfeI\xa4SpEcV1\xfa\x9f0\x00\xa0\xbaseSpEcV1\xb1@\x99nm\x99\x8cJSpEcV14/\x98E\x87\x1eK\xacSpEcV1\xb2\x96M\xce\xaec\xaeFSpEcV1\xc5\xb5\xa0\xe3\x82\xd5\xc2CSpEcV1)An=\x13\xf6W\\SpEcV1\x0e\x1f>\xdeiM\xf3ZSpEcV1?\x01B1_\x1f>\x8fSpEcV1\xad5\xeb\x93\xd5\xb0\xc3\x10SpEcV1\xa6zl\n>\x14\x95\xbdSpEcV1Xf\xf1s\xa7HE\xe6SpEcV1\"j{\xe23\xf9WzSpEcV1z\xben\xeb\x97\x13\x94\xa6SpEcV1\xed]\x0eg\xfb\xae\x02VSpEcV1\xb2\xab\x81\x84\n\x0f\x95VSpEcV1\xd2L\xf6u\xd2h\x99\xe1SpEcV1?xz\xe4G\xd0\x83\xd9val\x00\x00\x00\"\x02\x10\x00\x03\x00\x00\x00StellarAssetAccount\x00\x80\x04\x10\x00\x04\x00\x00\x000\x02\x10\x00\x0c\x00\x00\x00<\x02\x10\x00\x07\x00\x00\x00anested\x00\\\x02\x10\x00\x01\x00\x00\x00]\x02\x10\x00\x06\x00\x00\x00datat\x02\x10\x00\x04\x00\x00\x00NotRecursiveRecursive\x00\x00\x00\x80\x02\x10\x00\x0c\x00\x00\x00\x8c\x02\x10\x00\t\x00\x00\x00ContractCreateContractHostFnCreateContractWithCtorHostFn\xa8\x02\x10\x00\x08\x00\x00\x00\xb0\x02\x10\x00\x14\x00\x00\x00\xc4\x02\x10\x00\x1c\x00\x00\x00A\x00\x00\x00]\x02\x10\x00\x06\x00\x00\x00xy\x00\x00\x04\x03\x10\x00\x01\x00\x00\x00\x05\x03\x10\x00\x01\x00\x00\x00inner\x00\x00\x00\x18\x03\x10\x00\x05\x00\x00\x00transfercoordsamount6\x03\x10\x00\x06\x00\x00\x00used_event_simplepayloadU\x03\x10\x00\x07\x00\x00\x00used_event_with_refsused_event_with_data_typeused_event_with_topic_typeused_event_with_nested_dataused_event_with_nested_topicSpEcV1hwB\x0cv\x90\xa1_SpEcV1\xfe\x08\x1f\xe4M\x06t\xa0SpEcV1\x80\xb3\xa8\x94\xfc\"siSpEcV1\x90\xc2Z\xf3\xebO\xa9\xb6SpEcV1\xb17b\x11\x07\xb1\xe5\xf5SpEcV1QI\x9d\xb1v\xc3\xabbSpEcV1\xcd\xb2E{\xf6l\xd0eSpEcV1\x81C\xc9\x0b\xa9\x96\x0b\x06argscontractfn_name\x00\x00\x00R\x04\x10\x00\x04\x00\x00\x00V\x04\x10\x00\x08\x00\x00\x00^\x04\x10\x00\x07\x00\x00\x00Wasm\x80\x04\x10\x00\x04\x00\x00\x00contextsub_invocations\x00\x00\x8c\x04\x10\x00\x07\x00\x00\x00\x93\x04\x10\x00\x0f\x00\x00\x00executablesalt\x00\x00\xb4\x04\x10\x00\n\x00\x00\x00\xbe\x04\x10\x00\x04\x00\x00\x00constructor_args\xd4\x04\x10\x00\x10\x00\x00\x00\xb4\x04\x10\x00\n\x00\x00\x00\xbe\x04\x10\x00\x04\x00\x00\x00SpEcV1\x1dY\xce\\\xd0\x9e\x18\xe3f1f2\x00\x00\n\x05\x10\x00\x02\x00\x00\x00\x0c\x05\x10\x00\x02\x00\x00\x00\x00\xf3~\x0econtractspecv0\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00*test_spec_shaking_v2::wasm_imported::EnumA\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00*test_spec_shaking_v2::wasm_imported::EnumB\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00*test_spec_shaking_v2::wasm_imported::EnumC\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00,test_spec_shaking_v2::wasm_imported::StructA\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x001test_spec_shaking_v2::wasm_imported::StructTupleA\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00+test_spec_shaking_v2::wasm_imported::ErrorA\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00+test_spec_shaking_v2::wasm_imported::ErrorB\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00+test_spec_shaking_v2::wasm_imported::ErrorC\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00f\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00+test_spec_shaking_v2::wasm_imported::EventA\x00\x00\x00\x00\x01\x00\x00\x00\x07event_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00+test_spec_shaking_v2::wasm_imported::EventB\x00\x00\x00\x00\x01\x00\x00\x00\x07event_b\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00+test_spec_shaking_v2::wasm_imported::EventC\x00\x00\x00\x00\x01\x00\x00\x00\x07event_c\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00+test_spec_shaking_v2::wasm_imported::EventD\x00\x00\x00\x00\x01\x00\x00\x00\x07event_d\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00,test_spec_shaking_v2::wasm_imported::Context\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x004test_spec_shaking_v2::wasm_imported::ContractContext\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00@test_spec_shaking_v2::wasm_imported::CreateContractHostFnContext\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00Otest_spec_shaking_v2::wasm_imported::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00,test_spec_shaking_v2::wasm_imported::StructA\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00,test_spec_shaking_v2::wasm_imported::StructB\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00,test_spec_shaking_v2::wasm_imported::StructC\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x03\xea\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-test_spec_shaking_v2::wasm_imported::EnumIntA\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-test_spec_shaking_v2::wasm_imported::EnumIntB\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-test_spec_shaking_v2::wasm_imported::EnumIntC\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x01,\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00/test_spec_shaking_v2::wasm_imported::Executable\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x001test_spec_shaking_v2::wasm_imported::StructTupleA\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x001test_spec_shaking_v2::wasm_imported::StructTupleB\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x001test_spec_shaking_v2::wasm_imported::StructTupleC\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x004test_spec_shaking_v2::wasm_imported::ContractContext\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x007test_spec_shaking_v2::wasm_imported::ContractExecutable\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00:test_spec_shaking_v2::wasm_imported::SubContractInvocation\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x004test_spec_shaking_v2::wasm_imported::ContractContext\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00=test_spec_shaking_v2::wasm_imported::InvokerContractAuthEntry\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00=test_spec_shaking_v2::wasm_imported::InvokerContractAuthEntry\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00:test_spec_shaking_v2::wasm_imported::SubContractInvocation\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00@test_spec_shaking_v2::wasm_imported::CreateContractHostFnContext\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00Otest_spec_shaking_v2::wasm_imported::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@test_spec_shaking_v2::wasm_imported::CreateContractHostFnContext\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x007test_spec_shaking_v2::wasm_imported::ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00Otest_spec_shaking_v2::wasm_imported::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x007test_spec_shaking_v2::wasm_imported::ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1etest_spec_shaking_v2::UsedLeaf\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08with_map\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01m\x00\x00\x00\x00\x00\x03\xec\x00\x00\x07\xd0\x00\x00\x00 test_spec_shaking_v2::UsedMapKey\x00\x00\x07\xd0\x00\x00\x00 test_spec_shaking_v2::UsedMapVal\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08with_vec\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01v\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00$test_spec_shaking_v2::UsedVecElement\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 test_spec_shaking_v2::UnusedEnum\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01A\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01B\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 test_spec_shaking_v2::UsedMapKey\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02K1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02K2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 test_spec_shaking_v2::UsedMapVal\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01v\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nwith_error\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd0\x00\x00\x00#test_spec_shaking_v2::UsedErrorEnum\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nwith_param\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00%test_spec_shaking_v2::UsedParamStruct\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02ie\x00\x00\x00\x00\x07\xd0\x00\x00\x00&test_spec_shaking_v2::UsedParamIntEnum\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nwith_tuple\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01t\x00\x00\x00\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x07\xd0\x00\x00\x00&test_spec_shaking_v2::UsedTupleElement\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00!test_spec_shaking_v2::UnusedEvent\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0cunused_event\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\"test_spec_shaking_v2::UnusedStruct\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\"test_spec_shaking_v2::UsedResultOk\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bwith_option\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01o\x00\x00\x00\x00\x00\x03\xe8\x00\x00\x07\xd0\x00\x00\x00\'test_spec_shaking_v2::UsedOptionElement\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bwith_result\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x07\xd0\x00\x00\x00\"test_spec_shaking_v2::UsedResultOk\x00\x00\x00\x00\x07\xd0\x00\x00\x00#test_spec_shaking_v2::UsedErrorEnum\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bwith_return\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00$test_spec_shaking_v2::UsedReturnEnum\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00#test_spec_shaking_v2::UnusedIntEnum\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02U1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02U2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00#test_spec_shaking_v2::UsedErrorEnum\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x08NotFound\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07Invalid\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cwith_non_pub\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00&test_spec_shaking_v2::UsedNonPubStruct\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$test_spec_shaking_v2::UnusedPubError\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Nope\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$test_spec_shaking_v2::UsedReturnEnum\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01A\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01B\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$test_spec_shaking_v2::UsedVecElement\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00%test_spec_shaking_v2::UsedNonPubError\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Fail\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00%test_spec_shaking_v2::UsedParamStruct\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x06nested\x00\x00\x00\x00\x07\xd0\x00\x00\x00(test_spec_shaking_v2::UsedNestedInStruct\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00%test_spec_shaking_v2::UsedRefDataType\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06nested\x00\x00\x00\x00\x07\xd0\x00\x00\x00&test_spec_shaking_v2::UsedRefDataInner\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0epublish_simple\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0ewith_recursion\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01r\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\'test_spec_shaking_v2::UsedRecursiveRoot\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00%test_spec_shaking_v2::UsedEventSimple\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x11used_event_simple\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06amount\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00&test_spec_shaking_v2::UsedNonPubStruct\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00&test_spec_shaking_v2::UsedParamIntEnum\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01X\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01Y\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00&test_spec_shaking_v2::UsedRefDataInner\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00&test_spec_shaking_v2::UsedRefTopicType\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04Send\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Recv\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00&test_spec_shaking_v2::UsedTupleElement\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fwith_executable\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01e\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00 soroban_sdk::address::Executable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fwith_lib_struct\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x16test_spec_lib::StructC\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fwith_vec_nested\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01v\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00*test_spec_shaking_v2::UsedVecElementNested\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\'test_spec_shaking_v2::UnusedNonPubError\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03Bad\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\'test_spec_shaking_v2::UsedEventDataType\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x01y\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\'test_spec_shaking_v2::UsedOptionElement\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\'test_spec_shaking_v2::UsedRecursiveLeaf\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\'test_spec_shaking_v2::UsedRecursiveRoot\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\'test_spec_shaking_v2::UsedRecursiveNode\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x0cNotRecursive\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1etest_spec_shaking_v2::UsedLeaf\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\tRecursive\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\'test_spec_shaking_v2::UsedRecursiveLeaf\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\'test_spec_shaking_v2::UsedRecursiveRoot\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x07\xd0\x00\x00\x00\'test_spec_shaking_v2::UsedRecursiveNode\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10with_panic_error\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04fail\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\'test_spec_shaking_v2::UsedEventWithRefs\x00\x00\x00\x00\x01\x00\x00\x00\x14used_event_with_refs\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x07\xd0\x00\x00\x00&test_spec_shaking_v2::UsedRefTopicType\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07payload\x00\x00\x00\x07\xd0\x00\x00\x00%test_spec_shaking_v2::UsedRefDataType\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00(test_spec_shaking_v2::UnusedNonPubStruct\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00(test_spec_shaking_v2::UsedEventDataInner\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00(test_spec_shaking_v2::UsedEventDataOuter\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05inner\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00(test_spec_shaking_v2::UsedEventDataInner\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00(test_spec_shaking_v2::UsedEventTopicType\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x08Transfer\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Mint\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00(test_spec_shaking_v2::UsedNestedInStruct\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x07\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00(test_spec_shaking_v2::UsedPanicErrorEnum\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Boom\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11publish_data_type\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11publish_ref_event\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11with_assert_error\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02ok\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11with_invoker_auth\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01i\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00+soroban_sdk::auth::InvokerContractAuthEntry\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11with_tuple_return\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x07\xd0\x00\x00\x00,test_spec_shaking_v2::UsedTupleReturnElement\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00)test_spec_shaking_v2::UsedAssertErrorEnum\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03Bad\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00)test_spec_shaking_v2::UsedEventTopicInner\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00)test_spec_shaking_v2::UsedEventTopicOuter\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05inner\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00)test_spec_shaking_v2::UsedEventTopicInner\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00)test_spec_shaking_v2::UsedVecInnerElement\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12publish_topic_type\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12with_auth_contexts\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01c\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x1asoroban_sdk::auth::Context\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12with_non_pub_error\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd0\x00\x00\x00%test_spec_shaking_v2::UsedNonPubError\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12with_wasm_imported\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00,test_spec_shaking_v2::wasm_imported::StructA\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00*test_spec_shaking_v2::UsedVecElementNested\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x05inner\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00)test_spec_shaking_v2::UsedVecInnerElement\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\tvec_inner\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00,test_spec_shaking_v2::UsedVecInnerVecElement\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13publish_nested_data\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14publish_nested_topic\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14with_panic_raw_error\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04fail\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00+test_spec_shaking_v2::UsedEventWithDataType\x00\x00\x00\x00\x01\x00\x00\x00\x19used_event_with_data_type\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07payload\x00\x00\x00\x07\xd0\x00\x00\x00\'test_spec_shaking_v2::UsedEventDataType\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00,test_spec_shaking_v2::UsedTupleReturnElement\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00,test_spec_shaking_v2::UsedVecInnerVecElement\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00,test_spec_shaking_v2::UsedEventWithTopicType\x00\x00\x00\x01\x00\x00\x00\x1aused_event_with_topic_type\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x07\xd0\x00\x00\x00(test_spec_shaking_v2::UsedEventTopicType\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06amount\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-test_spec_shaking_v2::UsedEventWithNestedData\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x1bused_event_with_nested_data\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07payload\x00\x00\x00\x07\xd0\x00\x00\x00(test_spec_shaking_v2::UsedEventDataOuter\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00.test_spec_shaking_v2::UnusedNonContractFnParam\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00.test_spec_shaking_v2::UsedEventWithNestedTopic\x00\x00\x00\x00\x00\x01\x00\x00\x00\x1cused_event_with_nested_topic\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04info\x00\x00\x07\xd0\x00\x00\x00)test_spec_shaking_v2::UsedEventTopicOuter\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06amount\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00/test_spec_shaking_v2::UnusedNonContractFnReturn\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x1asoroban_sdk::auth::Context\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00(soroban_sdk::auth::SubContractInvocation\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00+soroban_sdk::auth::InvokerContractAuthEntry\x00\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00+soroban_sdk::auth::InvokerContractAuthEntry\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00(soroban_sdk::auth::SubContractInvocation\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 soroban_sdk::address::Executable\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14test_spec_lib::EnumA\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14test_spec_lib::EnumB\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14test_spec_lib::EnumC\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x16test_spec_lib::StructA\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1btest_spec_lib::StructTupleA\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15test_spec_lib::ErrorA\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15test_spec_lib::ErrorB\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15test_spec_lib::ErrorC\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00f\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15test_spec_lib::EventA\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15test_spec_lib::EventB\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_b\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15test_spec_lib::EventC\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_c\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15test_spec_lib::EventD\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_d\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16test_spec_lib::StructA\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16test_spec_lib::StructB\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16test_spec_lib::StructC\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x03\xea\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17test_spec_lib::EnumIntA\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17test_spec_lib::EnumIntB\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17test_spec_lib::EnumIntC\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x01,\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1btest_spec_lib::StructTupleA\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1btest_spec_lib::StructTupleB\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1btest_spec_lib::StructTupleC\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x0b\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; extern crate test; #[rustc_test_marker = "test::test_spec_shaking_v2"] #[doc(hidden)] @@ -32786,14 +33292,22 @@ mod test { }; } /// Extract the name from a non-function spec entry. + /// The simple name of the type or event the entry defines. + /// + /// A user-defined type is named in the spec by its fully qualified name + /// (`mycrate::mymod::MyType`); this test asserts which types survive shaking, + /// so it names each entry by the last segment. fn entry_name(entry: &ScSpecEntry) -> Option { + let last_segment = |name: std::string::String| -> std::string::String { + name.rsplit("::").next().unwrap_or(&name).into() + }; match entry { ScSpecEntry::FunctionV0(_) => None, - ScSpecEntry::UdtStructV0(s) => Some(s.name.to_utf8_string_lossy()), - ScSpecEntry::UdtUnionV0(u) => Some(u.name.to_utf8_string_lossy()), - ScSpecEntry::UdtEnumV0(e) => Some(e.name.to_utf8_string_lossy()), - ScSpecEntry::UdtErrorEnumV0(e) => Some(e.name.to_utf8_string_lossy()), - ScSpecEntry::EventV0(e) => Some(e.name.to_utf8_string_lossy()), + ScSpecEntry::UdtStructV0(s) => Some(last_segment(s.name.to_utf8_string_lossy())), + ScSpecEntry::UdtUnionV0(u) => Some(last_segment(u.name.to_utf8_string_lossy())), + ScSpecEntry::UdtEnumV0(e) => Some(last_segment(e.name.to_utf8_string_lossy())), + ScSpecEntry::UdtErrorEnumV0(e) => Some(last_segment(e.name.to_utf8_string_lossy())), + ScSpecEntry::EventV0(e) => Some(last_segment(e.name.to_utf8_string_lossy())), } } } diff --git a/tests-expanded/test_spec_shaking_v2_wasm32v1-none.rs b/tests-expanded/test_spec_shaking_v2_wasm32v1-none.rs index 7e925fc50..45f14ea58 100644 --- a/tests-expanded/test_spec_shaking_v2_wasm32v1-none.rs +++ b/tests-expanded/test_spec_shaking_v2_wasm32v1-none.rs @@ -74,6 +74,12 @@ impl ::core::cmp::PartialEq for UsedParamStruct { self.a == other.a && self.nested == other.nested } } +impl UsedParamStruct { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedParamStruct" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDPARAMSTRUCT: [u8; UsedParamStruct::__SPEC_XDR_VIEW.const_xdr_len()] = UsedParamStruct::spec_xdr(); @@ -82,7 +88,7 @@ impl UsedParamStruct { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedParamStruct"), + name: soroban_sdk::xdr::StringMView::new_str(UsedParamStruct::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -94,7 +100,9 @@ impl UsedParamStruct { name: soroban_sdk::xdr::StringMView::new(b"nested"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedNestedInStruct"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -222,6 +230,12 @@ impl ::core::cmp::PartialEq for UsedReturnEnum { } } } +impl UsedReturnEnum { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedReturnEnum" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDRETURNENUM: [u8; UsedReturnEnum::__SPEC_XDR_VIEW.const_xdr_len()] = UsedReturnEnum::spec_xdr(); @@ -230,7 +244,7 @@ impl UsedReturnEnum { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedReturnEnum"), + name: soroban_sdk::xdr::StringMView::new_str(UsedReturnEnum::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { @@ -392,6 +406,12 @@ impl ::core::cmp::PartialEq for UsedParamIntEnum { __self_discr == __arg1_discr } } +impl UsedParamIntEnum { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedParamIntEnum" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDPARAMINTENUM: [u8; UsedParamIntEnum::__SPEC_XDR_VIEW .const_xdr_len()] = UsedParamIntEnum::spec_xdr(); @@ -400,7 +420,7 @@ impl UsedParamIntEnum { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedParamIntEnum"), + name: soroban_sdk::xdr::StringMView::new_str(UsedParamIntEnum::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -511,6 +531,12 @@ impl ::core::cmp::PartialEq for UsedErrorEnum { __self_discr == __arg1_discr } } +impl UsedErrorEnum { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedErrorEnum" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDERRORENUM: [u8; UsedErrorEnum::__SPEC_XDR_VIEW.const_xdr_len()] = UsedErrorEnum::spec_xdr(); @@ -520,7 +546,7 @@ impl UsedErrorEnum { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedErrorEnum"), + name: soroban_sdk::xdr::StringMView::new_str(UsedErrorEnum::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -691,6 +717,12 @@ impl ::core::cmp::PartialEq for UsedPanicErrorEnum { true } } +impl UsedPanicErrorEnum { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedPanicErrorEnum" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDPANICERRORENUM: [u8; UsedPanicErrorEnum::__SPEC_XDR_VIEW .const_xdr_len()] = UsedPanicErrorEnum::spec_xdr(); @@ -700,7 +732,7 @@ impl UsedPanicErrorEnum { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedPanicErrorEnum"), + name: soroban_sdk::xdr::StringMView::new_str(UsedPanicErrorEnum::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -864,6 +896,12 @@ impl ::core::cmp::PartialEq for UsedAssertErrorEnum { true } } +impl UsedAssertErrorEnum { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedAssertErrorEnum" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDASSERTERRORENUM: [u8; UsedAssertErrorEnum::__SPEC_XDR_VIEW .const_xdr_len()] = UsedAssertErrorEnum::spec_xdr(); @@ -873,7 +911,7 @@ impl UsedAssertErrorEnum { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedAssertErrorEnum"), + name: soroban_sdk::xdr::StringMView::new_str(UsedAssertErrorEnum::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -1044,6 +1082,12 @@ impl ::core::cmp::PartialEq for UsedNestedInStruct { self.val == other.val } } +impl UsedNestedInStruct { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedNestedInStruct" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDNESTEDINSTRUCT: [u8; UsedNestedInStruct::__SPEC_XDR_VIEW .const_xdr_len()] = UsedNestedInStruct::spec_xdr(); @@ -1052,7 +1096,7 @@ impl UsedNestedInStruct { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedNestedInStruct"), + name: soroban_sdk::xdr::StringMView::new_str(UsedNestedInStruct::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -1159,6 +1203,12 @@ impl ::core::cmp::PartialEq for UsedVecElement { self.data == other.data } } +impl UsedVecElement { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedVecElement" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDVECELEMENT: [u8; UsedVecElement::__SPEC_XDR_VIEW.const_xdr_len()] = UsedVecElement::spec_xdr(); @@ -1167,7 +1217,7 @@ impl UsedVecElement { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedVecElement"), + name: soroban_sdk::xdr::StringMView::new_str(UsedVecElement::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -1279,6 +1329,12 @@ impl ::core::cmp::PartialEq for UsedMapKey { __self_discr == __arg1_discr } } +impl UsedMapKey { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedMapKey" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDMAPKEY: [u8; UsedMapKey::__SPEC_XDR_VIEW.const_xdr_len()] = UsedMapKey::spec_xdr(); @@ -1287,7 +1343,7 @@ impl UsedMapKey { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedMapKey"), + name: soroban_sdk::xdr::StringMView::new_str(UsedMapKey::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -1391,6 +1447,12 @@ impl ::core::cmp::PartialEq for UsedMapVal { self.v == other.v } } +impl UsedMapVal { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedMapVal" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDMAPVAL: [u8; UsedMapVal::__SPEC_XDR_VIEW.const_xdr_len()] = UsedMapVal::spec_xdr(); @@ -1399,7 +1461,7 @@ impl UsedMapVal { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedMapVal"), + name: soroban_sdk::xdr::StringMView::new_str(UsedMapVal::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -1509,6 +1571,12 @@ impl ::core::cmp::PartialEq for UsedOptionElement { self.data == other.data } } +impl UsedOptionElement { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedOptionElement" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDOPTIONELEMENT: [u8; UsedOptionElement::__SPEC_XDR_VIEW .const_xdr_len()] = UsedOptionElement::spec_xdr(); @@ -1517,7 +1585,7 @@ impl UsedOptionElement { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedOptionElement"), + name: soroban_sdk::xdr::StringMView::new_str(UsedOptionElement::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -1622,6 +1690,12 @@ impl ::core::cmp::PartialEq for UsedResultOk { self.data == other.data } } +impl UsedResultOk { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedResultOk" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDRESULTOK: [u8; UsedResultOk::__SPEC_XDR_VIEW.const_xdr_len()] = UsedResultOk::spec_xdr(); @@ -1630,7 +1704,7 @@ impl UsedResultOk { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedResultOk"), + name: soroban_sdk::xdr::StringMView::new_str(UsedResultOk::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -1745,6 +1819,12 @@ impl ::core::cmp::PartialEq for UsedEventSimple { self.amount == other.amount && self.kind == other.kind } } +impl UsedEventSimple { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedEventSimple" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_EVENT_USEDEVENTSIMPLE: [u8; UsedEventSimple::__SPEC_XDR_VIEW .const_xdr_len()] = UsedEventSimple::spec_xdr(); @@ -1753,9 +1833,7 @@ impl UsedEventSimple { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new( - b"UsedEventSimple", - )), + name: soroban_sdk::xdr::StringMView::new_str(UsedEventSimple::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"used_event_simple"), )]), @@ -1859,6 +1937,12 @@ impl ::core::cmp::PartialEq for UsedEventTopicType { __self_discr == __arg1_discr } } +impl UsedEventTopicType { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedEventTopicType" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDEVENTTOPICTYPE: [u8; UsedEventTopicType::__SPEC_XDR_VIEW .const_xdr_len()] = UsedEventTopicType::spec_xdr(); @@ -1867,7 +1951,7 @@ impl UsedEventTopicType { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedEventTopicType"), + name: soroban_sdk::xdr::StringMView::new_str(UsedEventTopicType::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -1983,6 +2067,12 @@ impl ::core::cmp::PartialEq for UsedEventWithTopicType { self.amount == other.amount && self.kind == other.kind } } +impl UsedEventWithTopicType { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedEventWithTopicType" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_EVENT_USEDEVENTWITHTOPICTYPE: [u8; UsedEventWithTopicType::__SPEC_XDR_VIEW .const_xdr_len()] = UsedEventWithTopicType::spec_xdr(); @@ -1991,9 +2081,7 @@ impl UsedEventWithTopicType { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new( - b"UsedEventWithTopicType", - )), + name: soroban_sdk::xdr::StringMView::new_str(UsedEventWithTopicType::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"used_event_with_topic_type"), )]), @@ -2003,7 +2091,9 @@ impl UsedEventWithTopicType { name: soroban_sdk::xdr::StringMView::new(b"kind"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedEventTopicType"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::TopicList, @@ -2106,6 +2196,12 @@ impl ::core::cmp::PartialEq for UsedEventDataType { self.x == other.x && self.y == other.y } } +impl UsedEventDataType { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedEventDataType" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDEVENTDATATYPE: [u8; UsedEventDataType::__SPEC_XDR_VIEW .const_xdr_len()] = UsedEventDataType::spec_xdr(); @@ -2114,7 +2210,7 @@ impl UsedEventDataType { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedEventDataType"), + name: soroban_sdk::xdr::StringMView::new_str(UsedEventDataType::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -2241,6 +2337,12 @@ impl ::core::cmp::PartialEq for UsedEventWithDataType { self.kind == other.kind && self.payload == other.payload } } +impl UsedEventWithDataType { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedEventWithDataType" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_EVENT_USEDEVENTWITHDATATYPE: [u8; UsedEventWithDataType::__SPEC_XDR_VIEW .const_xdr_len()] = UsedEventWithDataType::spec_xdr(); @@ -2249,9 +2351,7 @@ impl UsedEventWithDataType { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new( - b"UsedEventWithDataType", - )), + name: soroban_sdk::xdr::StringMView::new_str(UsedEventWithDataType::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"used_event_with_data_type"), )]), @@ -2267,7 +2367,9 @@ impl UsedEventWithDataType { name: soroban_sdk::xdr::StringMView::new(b"payload"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedEventDataType"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::Data, @@ -2360,6 +2462,12 @@ impl ::core::cmp::PartialEq for UsedEventTopicOuter { self.inner == other.inner } } +impl UsedEventTopicOuter { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedEventTopicOuter" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDEVENTTOPICOUTER: [u8; UsedEventTopicOuter::__SPEC_XDR_VIEW .const_xdr_len()] = UsedEventTopicOuter::spec_xdr(); @@ -2368,14 +2476,16 @@ impl UsedEventTopicOuter { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedEventTopicOuter"), + name: soroban_sdk::xdr::StringMView::new_str(UsedEventTopicOuter::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), name: soroban_sdk::xdr::StringMView::new(b"inner"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedEventTopicInner"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -2486,6 +2596,12 @@ impl ::core::cmp::PartialEq for UsedEventTopicInner { self.val == other.val } } +impl UsedEventTopicInner { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedEventTopicInner" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDEVENTTOPICINNER: [u8; UsedEventTopicInner::__SPEC_XDR_VIEW .const_xdr_len()] = UsedEventTopicInner::spec_xdr(); @@ -2494,7 +2610,7 @@ impl UsedEventTopicInner { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedEventTopicInner"), + name: soroban_sdk::xdr::StringMView::new_str(UsedEventTopicInner::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -2611,6 +2727,12 @@ impl ::core::cmp::PartialEq for UsedEventWithNestedTopic { self.amount == other.amount && self.info == other.info } } +impl UsedEventWithNestedTopic { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedEventWithNestedTopic" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_EVENT_USEDEVENTWITHNESTEDTOPIC: [u8; UsedEventWithNestedTopic::__SPEC_XDR_VIEW.const_xdr_len()] = @@ -2620,9 +2742,7 @@ impl UsedEventWithNestedTopic { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new( - b"UsedEventWithNestedTopic", - )), + name: soroban_sdk::xdr::StringMView::new_str(UsedEventWithNestedTopic::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"used_event_with_nested_topic"), )]), @@ -2632,7 +2752,9 @@ impl UsedEventWithNestedTopic { name: soroban_sdk::xdr::StringMView::new(b"info"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedEventTopicOuter"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::TopicList, @@ -2732,6 +2854,12 @@ impl ::core::cmp::PartialEq for UsedEventDataOuter { self.inner == other.inner } } +impl UsedEventDataOuter { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedEventDataOuter" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDEVENTDATAOUTER: [u8; UsedEventDataOuter::__SPEC_XDR_VIEW .const_xdr_len()] = UsedEventDataOuter::spec_xdr(); @@ -2740,14 +2868,16 @@ impl UsedEventDataOuter { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedEventDataOuter"), + name: soroban_sdk::xdr::StringMView::new_str(UsedEventDataOuter::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), name: soroban_sdk::xdr::StringMView::new(b"inner"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedEventDataInner"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -2858,6 +2988,12 @@ impl ::core::cmp::PartialEq for UsedEventDataInner { self.val == other.val } } +impl UsedEventDataInner { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedEventDataInner" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDEVENTDATAINNER: [u8; UsedEventDataInner::__SPEC_XDR_VIEW .const_xdr_len()] = UsedEventDataInner::spec_xdr(); @@ -2866,7 +3002,7 @@ impl UsedEventDataInner { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedEventDataInner"), + name: soroban_sdk::xdr::StringMView::new_str(UsedEventDataInner::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -2983,6 +3119,12 @@ impl ::core::cmp::PartialEq for UsedEventWithNestedData { self.kind == other.kind && self.payload == other.payload } } +impl UsedEventWithNestedData { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedEventWithNestedData" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_EVENT_USEDEVENTWITHNESTEDDATA: [u8; UsedEventWithNestedData::__SPEC_XDR_VIEW.const_xdr_len()] = UsedEventWithNestedData::spec_xdr(); @@ -2991,9 +3133,7 @@ impl UsedEventWithNestedData { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new( - b"UsedEventWithNestedData", - )), + name: soroban_sdk::xdr::StringMView::new_str(UsedEventWithNestedData::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"used_event_with_nested_data"), )]), @@ -3009,7 +3149,9 @@ impl UsedEventWithNestedData { name: soroban_sdk::xdr::StringMView::new(b"payload"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedEventDataOuter"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::Data, @@ -3105,6 +3247,12 @@ impl ::core::cmp::PartialEq for UsedRefTopicType { __self_discr == __arg1_discr } } +impl UsedRefTopicType { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedRefTopicType" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDREFTOPICTYPE: [u8; UsedRefTopicType::__SPEC_XDR_VIEW .const_xdr_len()] = UsedRefTopicType::spec_xdr(); @@ -3113,7 +3261,7 @@ impl UsedRefTopicType { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedRefTopicType"), + name: soroban_sdk::xdr::StringMView::new_str(UsedRefTopicType::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -3222,6 +3370,12 @@ impl ::core::cmp::PartialEq for UsedRefDataType { self.nested == other.nested } } +impl UsedRefDataType { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedRefDataType" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDREFDATATYPE: [u8; UsedRefDataType::__SPEC_XDR_VIEW.const_xdr_len()] = UsedRefDataType::spec_xdr(); @@ -3230,14 +3384,16 @@ impl UsedRefDataType { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedRefDataType"), + name: soroban_sdk::xdr::StringMView::new_str(UsedRefDataType::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), name: soroban_sdk::xdr::StringMView::new(b"nested"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedRefDataInner"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -3341,6 +3497,12 @@ impl ::core::cmp::PartialEq for UsedRefDataInner { self.val == other.val } } +impl UsedRefDataInner { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedRefDataInner" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDREFDATAINNER: [u8; UsedRefDataInner::__SPEC_XDR_VIEW .const_xdr_len()] = UsedRefDataInner::spec_xdr(); @@ -3349,7 +3511,7 @@ impl UsedRefDataInner { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedRefDataInner"), + name: soroban_sdk::xdr::StringMView::new_str(UsedRefDataInner::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -3464,6 +3626,12 @@ impl<'a> ::core::cmp::PartialEq for UsedEventWithRefs<'a> { self.kind == other.kind && self.payload == other.payload } } +impl<'a> UsedEventWithRefs<'a> { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedEventWithRefs" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_EVENT_USEDEVENTWITHREFS: [u8; UsedEventWithRefs::__SPEC_XDR_VIEW .const_xdr_len()] = UsedEventWithRefs::spec_xdr(); @@ -3472,9 +3640,7 @@ impl<'a> UsedEventWithRefs<'a> { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new( - b"UsedEventWithRefs", - )), + name: soroban_sdk::xdr::StringMView::new_str(UsedEventWithRefs::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"used_event_with_refs"), )]), @@ -3484,7 +3650,9 @@ impl<'a> UsedEventWithRefs<'a> { name: soroban_sdk::xdr::StringMView::new(b"kind"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedRefTopicType"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::TopicList, @@ -3494,7 +3662,9 @@ impl<'a> UsedEventWithRefs<'a> { name: soroban_sdk::xdr::StringMView::new(b"payload"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedRefDataType"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::Data, @@ -3582,6 +3752,12 @@ impl ::core::cmp::PartialEq for UsedTupleElement { self.val == other.val } } +impl UsedTupleElement { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedTupleElement" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDTUPLEELEMENT: [u8; UsedTupleElement::__SPEC_XDR_VIEW .const_xdr_len()] = UsedTupleElement::spec_xdr(); @@ -3590,7 +3766,7 @@ impl UsedTupleElement { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedTupleElement"), + name: soroban_sdk::xdr::StringMView::new_str(UsedTupleElement::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -3700,6 +3876,12 @@ impl ::core::cmp::PartialEq for UsedTupleReturnElement { self.val == other.val } } +impl UsedTupleReturnElement { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedTupleReturnElement" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDTUPLERETURNELEMENT: [u8; UsedTupleReturnElement::__SPEC_XDR_VIEW .const_xdr_len()] = UsedTupleReturnElement::spec_xdr(); @@ -3708,7 +3890,7 @@ impl UsedTupleReturnElement { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedTupleReturnElement"), + name: soroban_sdk::xdr::StringMView::new_str(UsedTupleReturnElement::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -3820,6 +4002,12 @@ impl ::core::cmp::PartialEq for UsedVecInnerVecElement { self.val == other.val } } +impl UsedVecInnerVecElement { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedVecInnerVecElement" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDVECINNERVECELEMENT: [u8; UsedVecInnerVecElement::__SPEC_XDR_VIEW .const_xdr_len()] = UsedVecInnerVecElement::spec_xdr(); @@ -3828,7 +4016,7 @@ impl UsedVecInnerVecElement { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedVecInnerVecElement"), + name: soroban_sdk::xdr::StringMView::new_str(UsedVecInnerVecElement::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -3940,6 +4128,12 @@ impl ::core::cmp::PartialEq for UsedVecInnerElement { self.val == other.val } } +impl UsedVecInnerElement { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedVecInnerElement" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDVECINNERELEMENT: [u8; UsedVecInnerElement::__SPEC_XDR_VIEW .const_xdr_len()] = UsedVecInnerElement::spec_xdr(); @@ -3948,7 +4142,7 @@ impl UsedVecInnerElement { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedVecInnerElement"), + name: soroban_sdk::xdr::StringMView::new_str(UsedVecInnerElement::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -4070,6 +4264,12 @@ impl ::core::cmp::PartialEq for UsedVecElementNested { self.val == other.val && self.inner == other.inner && self.vec_inner == other.vec_inner } } +impl UsedVecElementNested { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedVecElementNested" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDVECELEMENTNESTED: [u8; UsedVecElementNested::__SPEC_XDR_VIEW .const_xdr_len()] = UsedVecElementNested::spec_xdr(); @@ -4078,14 +4278,16 @@ impl UsedVecElementNested { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedVecElementNested"), + name: soroban_sdk::xdr::StringMView::new_str(UsedVecElementNested::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), name: soroban_sdk::xdr::StringMView::new(b"inner"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedVecInnerElement"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -4101,8 +4303,8 @@ impl UsedVecElementNested { &soroban_sdk::xdr::ScSpecTypeVecView { element_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"UsedVecInnerVecElement", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -4225,6 +4427,12 @@ impl ::core::cmp::PartialEq for UsedNonPubStruct { self.val == other.val } } +impl UsedNonPubStruct { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedNonPubStruct" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDNONPUBSTRUCT: [u8; UsedNonPubStruct::__SPEC_XDR_VIEW .const_xdr_len()] = UsedNonPubStruct::spec_xdr(); @@ -4233,7 +4441,7 @@ impl UsedNonPubStruct { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedNonPubStruct"), + name: soroban_sdk::xdr::StringMView::new_str(UsedNonPubStruct::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -4336,6 +4544,12 @@ impl ::core::cmp::PartialEq for UsedNonPubError { true } } +impl UsedNonPubError { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedNonPubError" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDNONPUBERROR: [u8; UsedNonPubError::__SPEC_XDR_VIEW.const_xdr_len()] = UsedNonPubError::spec_xdr(); @@ -4345,7 +4559,7 @@ impl UsedNonPubError { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedNonPubError"), + name: soroban_sdk::xdr::StringMView::new_str(UsedNonPubError::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -4514,6 +4728,12 @@ impl ::core::cmp::PartialEq for UsedRecursiveRoot { self.val == other.val } } +impl UsedRecursiveRoot { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedRecursiveRoot" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDRECURSIVEROOT: [u8; UsedRecursiveRoot::__SPEC_XDR_VIEW .const_xdr_len()] = UsedRecursiveRoot::spec_xdr(); @@ -4522,14 +4742,16 @@ impl UsedRecursiveRoot { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedRecursiveRoot"), + name: soroban_sdk::xdr::StringMView::new_str(UsedRecursiveRoot::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), name: soroban_sdk::xdr::StringMView::new(b"val"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedRecursiveNode"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -4658,6 +4880,12 @@ impl ::core::cmp::PartialEq for UsedRecursiveNode { } } } +impl UsedRecursiveNode { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedRecursiveNode" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDRECURSIVENODE: [u8; UsedRecursiveNode::__SPEC_XDR_VIEW .const_xdr_len()] = UsedRecursiveNode::spec_xdr(); @@ -4666,7 +4894,7 @@ impl UsedRecursiveNode { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedRecursiveNode"), + name: soroban_sdk::xdr::StringMView::new_str(UsedRecursiveNode::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { @@ -4675,7 +4903,9 @@ impl UsedRecursiveNode { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedLeaf"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), ]), @@ -4688,7 +4918,9 @@ impl UsedRecursiveNode { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedRecursiveLeaf"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), ]), @@ -4834,6 +5066,12 @@ impl ::core::cmp::PartialEq for UsedRecursiveLeaf { self.val == other.val } } +impl UsedRecursiveLeaf { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedRecursiveLeaf" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDRECURSIVELEAF: [u8; UsedRecursiveLeaf::__SPEC_XDR_VIEW .const_xdr_len()] = UsedRecursiveLeaf::spec_xdr(); @@ -4842,7 +5080,7 @@ impl UsedRecursiveLeaf { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedRecursiveLeaf"), + name: soroban_sdk::xdr::StringMView::new_str(UsedRecursiveLeaf::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -4851,7 +5089,9 @@ impl UsedRecursiveLeaf { &soroban_sdk::xdr::ScSpecTypeVecView { element_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedRecursiveRoot"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -4955,6 +5195,12 @@ impl ::core::cmp::PartialEq for UsedLeaf { self.val == other.val } } +impl UsedLeaf { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UsedLeaf" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_USEDLEAF: [u8; UsedLeaf::__SPEC_XDR_VIEW.const_xdr_len()] = UsedLeaf::spec_xdr(); @@ -4963,7 +5209,7 @@ impl UsedLeaf { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UsedLeaf"), + name: soroban_sdk::xdr::StringMView::new_str(UsedLeaf::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -5032,7 +5278,7 @@ impl soroban_sdk::TryFromVal for soroban_sdk::Val { } } mod wasm_imported { - pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01*\x07`\x02~~\x01~`\x03~~~\x01~`\x01~\x01~`\x00\x01~`\x02\x7f\x7f\x01~`\x04\x7f\x7f\x7f\x7f\x01~`\x02\x7f~\x00\x02%\x06\x01b\x01j\x00\x00\x01x\x011\x00\x00\x01v\x01g\x00\x00\x01m\x019\x00\x01\x01i\x012\x00\x02\x01i\x011\x00\x02\x03\x0c\x0b\x03\x04\x03\x02\x00\x05\x03\x00\x00\x06\x06\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x82\x80\xc0\x00\x0b\x7f\x00A\x80\x81\xc0\x00\x0b\x7f\x00A\x80\x81\xc0\x00\x0b\x07\x8e\x01\x0b\x06memory\x02\x00\tfn_enum_a\x00\x06\rfn_enum_int_a\x00\x08\nfn_error_a\x00\t\nfn_event_a\x00\n\nfn_event_d\x00\x0c\x0bfn_struct_a\x00\r\x11fn_struct_tuple_a\x00\x0e\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\x8d\n\x0b\x95\x02\x03\x01\x7f\x01~\x03\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\x82\x80\xc0\x80\x00\x1aB\x00!\x01A~!\x02\x03~\x02@\x02@\x02@\x02@\x02@ \x02E\r\x00A\x01!\x03 \x02A\x82\x80\xc0\x80\x00j-\x00\x00\"\x04A\xdf\x00F\r\x04 \x04APjA\xff\x01qA\nI\r\x02 \x04A\xbf\x7fjA\xff\x01qA\x1aI\r\x03\x02@ \x04A\x9f\x7fjA\xff\x01qA\x1aO\r\x00 \x04AEj!\x03\x0c\x05\x0b \x00 \x04\xadB\x08\x86B\x01\x847\x03\x00A\x80\x80\xc0\x80\x00\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x80\x80\x80\x80\x00!\x01\x0c\x01\x0b \x00 \x01B\x08\x86B\x0e\x84\"\x017\x02\x04\x0b \x00 \x017\x03\x00 \x00A\x01\x10\x87\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b \x04ARj!\x03\x0c\x01\x0b \x04AKj!\x03\x0b \x01B\x06\x86 \x03\xadB\xff\x01\x83\x84!\x01 \x02A\x01j!\x02\x0c\x00\x0b\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x82\x80\x80\x80\x00\x0b\x12\x00A\x00-\x00\xc8\x80\xc0\x80\x00\x1aB\x84\x80\x80\x800\x0b4\x00\x02@ \x00B\xff\x01\x83B\x04Q\r\x00\x00\x0bA\x00-\x00\x90\x80\xc0\x80\x00\x1aB\x83\x80\x80\x80 \x00B\x84\x80\x80\x80p\x83 \x00B\x80\x80\x80\x80\x10T\x1b\x0b\xe6\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\xcd\x00R\r\x00 \x01B\xff\x01\x83B\xc9\x00R\r\x00A\x00!\x03A\x00-\x00\x9e\x80\xc0\x80\x00\x1a \x02 \x007\x03\x08 \x02B\x8e\xcc\xc1\xfc\xac\xdd\xab\x017\x03\x00\x03@\x02@ \x03A\x10G\r\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x10j \x03j \x02 \x03j)\x03\x007\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x02A\x10jA\x02\x10\x87\x80\x80\x80\x00!\x00 \x02 \x017\x03\x10 \x00A\xf8\x80\xc0\x80\x00A\x01 \x02A\x10jA\x01\x10\x8b\x80\x80\x80\x00\x10\x81\x80\x80\x80\x00\x1a \x02A j$\x80\x80\x80\x80\x00B\x02\x0f\x0b \x02A\x10j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b\x00\x0b.\x00\x02@ \x01 \x03F\r\x00\x00\x0b \x00\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x83\x80\x80\x80\x00\x0b\x91\x01\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\xac\x80\xc0\x80\x00\x1a \x00B\x8e\xd2\xc1\xfc\xac\xdd\xab\x017\x03\x00B\x02!\x01A\x01!\x02\x02@\x03@ \x02E\r\x01 \x02A\x7fj!\x02B\x8e\xd2\xc1\xfc\xac\xdd\xab\x01!\x01\x0c\x00\x0b\x0b \x00 \x017\x03\x08 \x00A\x08jA\x01\x10\x87\x80\x80\x80\x00A\x04A\x00 \x00A\x08jA\x00\x10\x8b\x80\x80\x80\x00\x10\x81\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x83\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\x04R\r\x00A\x01A\x02A\x00 \x01\xa7A\xff\x01q\"\x03\x1b \x03A\x01F\x1b\"\x03A\x02F\r\x00A\x00-\x00\xba\x80\xc0\x80\x00\x1a \x02 \x03\xad7\x03\x08 \x02 \x00B\x84\x80\x80\x80p\x837\x03\x00A\xe8\x80\xc0\x80\x00A\x02 \x02A\x02\x10\x8b\x80\x80\x80\x00!\x00 \x02A\x10j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b\xbc\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00 \x02A\x10j \x00\x10\x8f\x80\x80\x80\x00\x02@ \x02(\x02\x10A\x01F\r\x00 \x02)\x03\x18!\x00 \x02A\x10j \x01\x10\x8f\x80\x80\x80\x00 \x02(\x02\x10A\x01F\r\x00 \x02)\x03\x18!\x01A\x00-\x00\xd6\x80\xc0\x80\x00\x1a \x02A\x10j \x00\x10\x90\x80\x80\x80\x00 \x02(\x02\x10\r\x00 \x02)\x03\x18!\x00 \x02A\x10j \x01\x10\x90\x80\x80\x80\x00 \x02(\x02\x10A\x01F\r\x00 \x02 \x02)\x03\x187\x03\x08 \x02 \x007\x03\x00 \x02A\x02\x10\x87\x80\x80\x80\x00!\x00 \x02A j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc1\x00F\r\x00\x02@ \x02A\x07F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x87!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x84\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0bF\x00\x02@\x02@ \x01B\x80\x80\x80\x80\x80\x80\x80\xc0\x00|B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x01B\x08\x86B\x07\x84!\x01\x0c\x01\x0b \x01\x10\x85\x80\x80\x80\x00!\x01\x0b \x00B\x007\x03\x00 \x00 \x017\x03\x08\x0b\x0b\x8a\x01\x01\x00A\x80\x80\xc0\x00\x0b\x80\x01V2SpEcV1\xa2=N\xc1p\x95\x90\xb2SpEcV1\xe9R\xa7\xe8b\x99\xa2\xc3SpEcV1K\xe6\x8ej\x19\x9en\xbdSpEcV1\x15\xf0Wx\x15\x83\xc0:SpEcV1\xb6\x1c\xfd\xdfhY-dSpEcV1V]\x80\\~\x1a\x08/SpEcV1\xcf)\x97]S\xb2\xfd)f1f2d\x00\x10\x00\x02\x00\x00\x00f\x00\x10\x00\x02\x00\x00\x00f\x00\x10\x00\x02\x00\x00\x00\x00\xa3$\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\tfn_enum_a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_error_a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05input\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd0\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_event_a\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_event_d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bfn_struct_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x07StructA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rfn_enum_int_a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x08EnumIntA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11fn_struct_tuple_a\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x07Context\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumB\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumC\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x07StructA\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorB\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorC\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00f\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventA\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventB\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_b\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventC\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_c\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventD\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_d\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructA\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructB\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructC\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x03\xea\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntA\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntB\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntC\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x01,\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleB\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleC\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x0b\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; + pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01*\x07`\x02~~\x01~`\x03~~~\x01~`\x01~\x01~`\x00\x01~`\x02\x7f\x7f\x01~`\x04\x7f\x7f\x7f\x7f\x01~`\x02\x7f~\x00\x02%\x06\x01b\x01j\x00\x00\x01x\x011\x00\x00\x01v\x01g\x00\x00\x01m\x019\x00\x01\x01i\x012\x00\x02\x01i\x011\x00\x02\x03\x0c\x0b\x03\x04\x03\x02\x00\x05\x03\x00\x00\x06\x06\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x82\x80\xc0\x00\x0b\x7f\x00A\x80\x81\xc0\x00\x0b\x7f\x00A\x80\x81\xc0\x00\x0b\x07\x8e\x01\x0b\x06memory\x02\x00\tfn_enum_a\x00\x06\rfn_enum_int_a\x00\x08\nfn_error_a\x00\t\nfn_event_a\x00\n\nfn_event_d\x00\x0c\x0bfn_struct_a\x00\r\x11fn_struct_tuple_a\x00\x0e\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\x8d\n\x0b\x95\x02\x03\x01\x7f\x01~\x03\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\x82\x80\xc0\x80\x00\x1aB\x00!\x01A~!\x02\x03~\x02@\x02@\x02@\x02@\x02@ \x02E\r\x00A\x01!\x03 \x02A\x82\x80\xc0\x80\x00j-\x00\x00\"\x04A\xdf\x00F\r\x04 \x04APjA\xff\x01qA\nI\r\x02 \x04A\xbf\x7fjA\xff\x01qA\x1aI\r\x03\x02@ \x04A\x9f\x7fjA\xff\x01qA\x1aO\r\x00 \x04AEj!\x03\x0c\x05\x0b \x00 \x04\xadB\x08\x86B\x01\x847\x03\x00A\x80\x80\xc0\x80\x00\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x80\x80\x80\x80\x00!\x01\x0c\x01\x0b \x00 \x01B\x08\x86B\x0e\x84\"\x017\x02\x04\x0b \x00 \x017\x03\x00 \x00A\x01\x10\x87\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b \x04ARj!\x03\x0c\x01\x0b \x04AKj!\x03\x0b \x01B\x06\x86 \x03\xadB\xff\x01\x83\x84!\x01 \x02A\x01j!\x02\x0c\x00\x0b\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x82\x80\x80\x80\x00\x0b\x12\x00A\x00-\x00\xc8\x80\xc0\x80\x00\x1aB\x84\x80\x80\x800\x0b4\x00\x02@ \x00B\xff\x01\x83B\x04Q\r\x00\x00\x0bA\x00-\x00\x90\x80\xc0\x80\x00\x1aB\x83\x80\x80\x80 \x00B\x84\x80\x80\x80p\x83 \x00B\x80\x80\x80\x80\x10T\x1b\x0b\xe6\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\xcd\x00R\r\x00 \x01B\xff\x01\x83B\xc9\x00R\r\x00A\x00!\x03A\x00-\x00\x9e\x80\xc0\x80\x00\x1a \x02 \x007\x03\x08 \x02B\x8e\xcc\xc1\xfc\xac\xdd\xab\x017\x03\x00\x03@\x02@ \x03A\x10G\r\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x10j \x03j \x02 \x03j)\x03\x007\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x02A\x10jA\x02\x10\x87\x80\x80\x80\x00!\x00 \x02 \x017\x03\x10 \x00A\xf8\x80\xc0\x80\x00A\x01 \x02A\x10jA\x01\x10\x8b\x80\x80\x80\x00\x10\x81\x80\x80\x80\x00\x1a \x02A j$\x80\x80\x80\x80\x00B\x02\x0f\x0b \x02A\x10j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b\x00\x0b.\x00\x02@ \x01 \x03F\r\x00\x00\x0b \x00\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x83\x80\x80\x80\x00\x0b\x91\x01\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\xac\x80\xc0\x80\x00\x1a \x00B\x8e\xd2\xc1\xfc\xac\xdd\xab\x017\x03\x00B\x02!\x01A\x01!\x02\x02@\x03@ \x02E\r\x01 \x02A\x7fj!\x02B\x8e\xd2\xc1\xfc\xac\xdd\xab\x01!\x01\x0c\x00\x0b\x0b \x00 \x017\x03\x08 \x00A\x08jA\x01\x10\x87\x80\x80\x80\x00A\x04A\x00 \x00A\x08jA\x00\x10\x8b\x80\x80\x80\x00\x10\x81\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x83\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\x04R\r\x00A\x01A\x02A\x00 \x01\xa7A\xff\x01q\"\x03\x1b \x03A\x01F\x1b\"\x03A\x02F\r\x00A\x00-\x00\xba\x80\xc0\x80\x00\x1a \x02 \x03\xad7\x03\x08 \x02 \x00B\x84\x80\x80\x80p\x837\x03\x00A\xe8\x80\xc0\x80\x00A\x02 \x02A\x02\x10\x8b\x80\x80\x80\x00!\x00 \x02A\x10j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b\xbc\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00 \x02A\x10j \x00\x10\x8f\x80\x80\x80\x00\x02@ \x02(\x02\x10A\x01F\r\x00 \x02)\x03\x18!\x00 \x02A\x10j \x01\x10\x8f\x80\x80\x80\x00 \x02(\x02\x10A\x01F\r\x00 \x02)\x03\x18!\x01A\x00-\x00\xd6\x80\xc0\x80\x00\x1a \x02A\x10j \x00\x10\x90\x80\x80\x80\x00 \x02(\x02\x10\r\x00 \x02)\x03\x18!\x00 \x02A\x10j \x01\x10\x90\x80\x80\x80\x00 \x02(\x02\x10A\x01F\r\x00 \x02 \x02)\x03\x187\x03\x08 \x02 \x007\x03\x00 \x02A\x02\x10\x87\x80\x80\x80\x00!\x00 \x02A j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc1\x00F\r\x00\x02@ \x02A\x07F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x87!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x84\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0bF\x00\x02@\x02@ \x01B\x80\x80\x80\x80\x80\x80\x80\xc0\x00|B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x01B\x08\x86B\x07\x84!\x01\x0c\x01\x0b \x01\x10\x85\x80\x80\x80\x00!\x01\x0b \x00B\x007\x03\x00 \x00 \x017\x03\x08\x0b\x0b\x8a\x01\x01\x00A\x80\x80\xc0\x00\x0b\x80\x01V2SpEcV1\x0eJ\x07\xc3\x8bG\x9d\x91SpEcV1\x9a\xac\n*\xd8z\xf1rSpEcV1\xa4\xbaQ6!\xf4\xd2\x87SpEcV1\xa5\x85L\x0b6\x80\x01\'SpEcV1\x14\xc8R\x91\x9a.T\x17SpEcV1)\xf5 \xed\x8b.\x0fuSpEcV1\xed\xbfE\xe8/\xbf\x90\x8cf1f2d\x00\x10\x00\x02\x00\x00\x00f\x00\x10\x00\x02\x00\x00\x00f\x00\x10\x00\x02\x00\x00\x00\x00\x93*\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\tfn_enum_a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x14test_spec_lib::EnumA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_error_a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05input\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd0\x00\x00\x00\x15test_spec_lib::ErrorA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_event_a\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_event_d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bfn_struct_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x16test_spec_lib::StructA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rfn_enum_int_a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x17test_spec_lib::EnumIntA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11fn_struct_tuple_a\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1btest_spec_lib::StructTupleA\x00\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x1asoroban_sdk::auth::Context\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00(soroban_sdk::auth::SubContractInvocation\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00+soroban_sdk::auth::InvokerContractAuthEntry\x00\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00+soroban_sdk::auth::InvokerContractAuthEntry\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00(soroban_sdk::auth::SubContractInvocation\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 soroban_sdk::address::Executable\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14test_spec_lib::EnumA\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14test_spec_lib::EnumB\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14test_spec_lib::EnumC\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x16test_spec_lib::StructA\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1btest_spec_lib::StructTupleA\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15test_spec_lib::ErrorA\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15test_spec_lib::ErrorB\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15test_spec_lib::ErrorC\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00f\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15test_spec_lib::EventA\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15test_spec_lib::EventB\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_b\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15test_spec_lib::EventC\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_c\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15test_spec_lib::EventD\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_d\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16test_spec_lib::StructA\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16test_spec_lib::StructB\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16test_spec_lib::StructC\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x03\xea\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17test_spec_lib::EnumIntA\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17test_spec_lib::EnumIntB\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17test_spec_lib::EnumIntC\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x01,\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1btest_spec_lib::StructTupleA\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1btest_spec_lib::StructTupleB\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1btest_spec_lib::StructTupleC\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x0b\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; pub trait Contract { fn fn_enum_a(env: soroban_sdk::Env) -> EnumA; fn fn_error_a(env: soroban_sdk::Env, input: u32) -> Result; @@ -5412,6 +5658,12 @@ mod wasm_imported { } } } + impl ContractContext { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::ContractContext" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_CONTRACTCONTEXT: [u8; ContractContext::__SPEC_XDR_VIEW .const_xdr_len()] = ContractContext::spec_xdr(); @@ -5421,7 +5673,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"ContractContext"), + name: soroban_sdk::xdr::StringMView::new_str(ContractContext::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -5601,6 +5853,12 @@ mod wasm_imported { } } } + impl SubContractInvocation { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::SubContractInvocation" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_SUBCONTRACTINVOCATION: [u8; SubContractInvocation::__SPEC_XDR_VIEW .const_xdr_len()] = SubContractInvocation::spec_xdr(); @@ -5610,14 +5868,18 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"SubContractInvocation"), + name: soroban_sdk::xdr::StringMView::new_str( + SubContractInvocation::spec_type_name(), + ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), name: soroban_sdk::xdr::StringMView::new(b"context"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"ContractContext"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -5628,8 +5890,8 @@ mod wasm_imported { &soroban_sdk::xdr::ScSpecTypeVecView { element_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"InvokerContractAuthEntry", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -5786,6 +6048,12 @@ mod wasm_imported { } } } + impl CreateContractHostFnContext { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::CreateContractHostFnContext" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_CREATECONTRACTHOSTFNCONTEXT: [u8; CreateContractHostFnContext::__SPEC_XDR_VIEW.const_xdr_len()] = @@ -5796,14 +6064,18 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"CreateContractHostFnContext"), + name: soroban_sdk::xdr::StringMView::new_str( + CreateContractHostFnContext::spec_type_name(), + ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), name: soroban_sdk::xdr::StringMView::new(b"executable"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"ContractExecutable"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -5985,6 +6257,12 @@ mod wasm_imported { } } } + impl CreateContractWithConstructorHostFnContext { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::CreateContractWithConstructorHostFnContext" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_CREATECONTRACTWITHCONSTRUCTORHOSTFNCONTEXT: [u8; CreateContractWithConstructorHostFnContext::__SPEC_XDR_VIEW.const_xdr_len()] = @@ -5995,8 +6273,8 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithConstructorHostFnContext", + name: soroban_sdk::xdr::StringMView::new_str( + CreateContractWithConstructorHostFnContext::spec_type_name(), ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { @@ -6013,7 +6291,9 @@ mod wasm_imported { name: soroban_sdk::xdr::StringMView::new(b"executable"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"ContractExecutable"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -6181,6 +6461,12 @@ mod wasm_imported { } } } + impl StructA { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::StructA" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_STRUCTA: [u8; StructA::__SPEC_XDR_VIEW.const_xdr_len()] = StructA::spec_xdr(); @@ -6190,7 +6476,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"StructA"), + name: soroban_sdk::xdr::StringMView::new_str(StructA::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -6335,6 +6621,12 @@ mod wasm_imported { } } } + impl StructB { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::StructB" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_STRUCTB: [u8; StructB::__SPEC_XDR_VIEW.const_xdr_len()] = StructB::spec_xdr(); @@ -6344,7 +6636,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"StructB"), + name: soroban_sdk::xdr::StringMView::new_str(StructB::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -6489,6 +6781,12 @@ mod wasm_imported { } } } + impl StructC { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::StructC" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_STRUCTC: [u8; StructC::__SPEC_XDR_VIEW.const_xdr_len()] = StructC::spec_xdr(); @@ -6498,7 +6796,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"StructC"), + name: soroban_sdk::xdr::StringMView::new_str(StructC::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -6644,6 +6942,12 @@ mod wasm_imported { } } } + impl StructTupleA { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::StructTupleA" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_STRUCTTUPLEA: [u8; StructTupleA::__SPEC_XDR_VIEW.const_xdr_len()] = StructTupleA::spec_xdr(); @@ -6653,7 +6957,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"StructTupleA"), + name: soroban_sdk::xdr::StringMView::new_str(StructTupleA::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -6791,6 +7095,12 @@ mod wasm_imported { } } } + impl StructTupleB { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::StructTupleB" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_STRUCTTUPLEB: [u8; StructTupleB::__SPEC_XDR_VIEW.const_xdr_len()] = StructTupleB::spec_xdr(); @@ -6800,7 +7110,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"StructTupleB"), + name: soroban_sdk::xdr::StringMView::new_str(StructTupleB::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -6939,6 +7249,12 @@ mod wasm_imported { } } } + impl StructTupleC { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::StructTupleC" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_STRUCTTUPLEC: [u8; StructTupleC::__SPEC_XDR_VIEW.const_xdr_len()] = StructTupleC::spec_xdr(); @@ -6948,7 +7264,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"StructTupleC"), + name: soroban_sdk::xdr::StringMView::new_str(StructTupleC::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -7155,65 +7471,68 @@ mod wasm_imported { } } } + impl Context { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::Context" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_CONTEXT: [u8; Context::__SPEC_XDR_VIEW.const_xdr_len()] = Context::spec_xdr(); impl Context { - const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = - soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Context"), - cases: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Contract"), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"ContractContext", - ), - }, - ), - ]), - }, - ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"CreateContractHostFn"), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractHostFnContext", - ), - }, - ), - ]), - }, - ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithCtorHostFn", - ), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithConstructorHostFnContext", - ), - }, - ), - ]), - }, - ), - ]), - }); + const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + lib: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new_str(Context::spec_type_name()), + cases: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new(b"Contract"), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractWithCtorHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), + }), + ], + ), + }), + ], + ), + }); pub const fn spec_xdr() -> [u8; Context::__SPEC_XDR_VIEW.const_xdr_len()] { Context::__SPEC_XDR_VIEW.const_to_xdr() } @@ -7406,6 +7725,12 @@ mod wasm_imported { } } } + impl ContractExecutable { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::ContractExecutable" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_CONTRACTEXECUTABLE: [u8; ContractExecutable::__SPEC_XDR_VIEW .const_xdr_len()] = ContractExecutable::spec_xdr(); @@ -7414,7 +7739,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"ContractExecutable"), + name: soroban_sdk::xdr::StringMView::new_str(ContractExecutable::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { @@ -7650,66 +7975,71 @@ mod wasm_imported { } } } + impl InvokerContractAuthEntry { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::InvokerContractAuthEntry" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_INVOKERCONTRACTAUTHENTRY: [u8; InvokerContractAuthEntry::__SPEC_XDR_VIEW.const_xdr_len()] = InvokerContractAuthEntry::spec_xdr(); impl InvokerContractAuthEntry { - const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = - soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"InvokerContractAuthEntry"), - cases: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Contract"), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"SubContractInvocation", - ), - }, - ), - ]), - }, - ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"CreateContractHostFn"), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractHostFnContext", - ), - }, - ), - ]), - }, - ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithCtorHostFn", - ), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithConstructorHostFnContext", - ), - }, - ), - ]), - }, - ), - ]), - }); + const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + lib: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new_str( + InvokerContractAuthEntry::spec_type_name(), + ), + cases: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new(b"Contract"), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractWithCtorHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), + }), + ], + ), + }), + ], + ), + }); pub const fn spec_xdr() -> [u8; InvokerContractAuthEntry::__SPEC_XDR_VIEW.const_xdr_len()] { InvokerContractAuthEntry::__SPEC_XDR_VIEW.const_to_xdr() } @@ -7921,6 +8251,12 @@ mod wasm_imported { } } } + impl Executable { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::Executable" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_EXECUTABLE: [u8; Executable::__SPEC_XDR_VIEW.const_xdr_len()] = Executable::spec_xdr(); @@ -7929,7 +8265,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Executable"), + name: soroban_sdk::xdr::StringMView::new_str(Executable::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { @@ -8123,6 +8459,12 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl EnumA { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::EnumA" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_ENUMA: [u8; EnumA::__SPEC_XDR_VIEW.const_xdr_len()] = EnumA::spec_xdr(); @@ -8131,7 +8473,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"EnumA"), + name: soroban_sdk::xdr::StringMView::new_str(EnumA::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::VoidV0( soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0View { @@ -8355,6 +8697,12 @@ mod wasm_imported { } } } + impl EnumB { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::EnumB" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_ENUMB: [u8; EnumB::__SPEC_XDR_VIEW.const_xdr_len()] = EnumB::spec_xdr(); @@ -8363,7 +8711,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"EnumB"), + name: soroban_sdk::xdr::StringMView::new_str(EnumB::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::VoidV0( soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0View { @@ -8597,6 +8945,12 @@ mod wasm_imported { } } } + impl EnumC { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::EnumC" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_ENUMC: [u8; EnumC::__SPEC_XDR_VIEW.const_xdr_len()] = EnumC::spec_xdr(); @@ -8605,7 +8959,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"EnumC"), + name: soroban_sdk::xdr::StringMView::new_str(EnumC::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::VoidV0( soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0View { @@ -8620,7 +8974,9 @@ mod wasm_imported { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"StructA"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), ]), @@ -8633,7 +8989,9 @@ mod wasm_imported { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"StructTupleA"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), ]), @@ -8813,6 +9171,12 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl EnumIntA { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::EnumIntA" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_ENUMINTA: [u8; EnumIntA::__SPEC_XDR_VIEW.const_xdr_len()] = EnumIntA::spec_xdr(); @@ -8821,7 +9185,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"EnumIntA"), + name: soroban_sdk::xdr::StringMView::new_str(EnumIntA::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -8959,6 +9323,12 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl EnumIntB { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::EnumIntB" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_ENUMINTB: [u8; EnumIntB::__SPEC_XDR_VIEW.const_xdr_len()] = EnumIntB::spec_xdr(); @@ -8967,7 +9337,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"EnumIntB"), + name: soroban_sdk::xdr::StringMView::new_str(EnumIntB::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -9105,6 +9475,12 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl EnumIntC { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::EnumIntC" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_ENUMINTC: [u8; EnumIntC::__SPEC_XDR_VIEW.const_xdr_len()] = EnumIntC::spec_xdr(); @@ -9113,7 +9489,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"EnumIntC"), + name: soroban_sdk::xdr::StringMView::new_str(EnumIntC::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -9251,6 +9627,12 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl ErrorA { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::ErrorA" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_ERRORA: [u8; ErrorA::__SPEC_XDR_VIEW.const_xdr_len()] = ErrorA::spec_xdr(); @@ -9260,7 +9642,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"ErrorA"), + name: soroban_sdk::xdr::StringMView::new_str(ErrorA::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -9469,6 +9851,12 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl ErrorB { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::ErrorB" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_ERRORB: [u8; ErrorB::__SPEC_XDR_VIEW.const_xdr_len()] = ErrorB::spec_xdr(); @@ -9478,7 +9866,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"ErrorB"), + name: soroban_sdk::xdr::StringMView::new_str(ErrorB::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -9687,6 +10075,12 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl ErrorC { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::ErrorC" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_ERRORC: [u8; ErrorC::__SPEC_XDR_VIEW.const_xdr_len()] = ErrorC::spec_xdr(); @@ -9696,7 +10090,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"ErrorC"), + name: soroban_sdk::xdr::StringMView::new_str(ErrorC::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -9905,6 +10299,12 @@ mod wasm_imported { } } } + impl EventA { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::EventA" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_EVENT_EVENTA: [u8; EventA::__SPEC_XDR_VIEW.const_xdr_len()] = EventA::spec_xdr(); @@ -9913,7 +10313,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new(b"EventA")), + name: soroban_sdk::xdr::StringMView::new_str(EventA::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"event_a"), )]), @@ -10055,6 +10455,12 @@ mod wasm_imported { } } } + impl EventB { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::EventB" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_EVENT_EVENTB: [u8; EventB::__SPEC_XDR_VIEW.const_xdr_len()] = EventB::spec_xdr(); @@ -10063,7 +10469,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new(b"EventB")), + name: soroban_sdk::xdr::StringMView::new_str(EventB::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"event_b"), )]), @@ -10215,6 +10621,12 @@ mod wasm_imported { } } } + impl EventC { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::EventC" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_EVENT_EVENTC: [u8; EventC::__SPEC_XDR_VIEW.const_xdr_len()] = EventC::spec_xdr(); @@ -10223,7 +10635,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new(b"EventC")), + name: soroban_sdk::xdr::StringMView::new_str(EventC::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"event_c"), )]), @@ -10342,6 +10754,12 @@ mod wasm_imported { ::core::option::Option::Some(::core::cmp::Ordering::Equal) } } + impl EventD { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::wasm_imported::EventD" + } + } #[link_section = "contractspecv0"] pub static __SPEC_XDR_EVENT_EVENTD: [u8; EventD::__SPEC_XDR_VIEW.const_xdr_len()] = EventD::spec_xdr(); @@ -10350,7 +10768,7 @@ mod wasm_imported { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new(b"EventD")), + name: soroban_sdk::xdr::StringMView::new_str(EventD::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"event_d"), )]), @@ -10434,6 +10852,12 @@ impl ::core::cmp::PartialEq for UnusedStruct { self.x == other.x } } +impl UnusedStruct { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UnusedStruct" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_UNUSEDSTRUCT: [u8; UnusedStruct::__SPEC_XDR_VIEW.const_xdr_len()] = UnusedStruct::spec_xdr(); @@ -10442,7 +10866,7 @@ impl UnusedStruct { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UnusedStruct"), + name: soroban_sdk::xdr::StringMView::new_str(UnusedStruct::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -10560,6 +10984,12 @@ impl ::core::cmp::PartialEq for UnusedEnum { } } } +impl UnusedEnum { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UnusedEnum" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_UNUSEDENUM: [u8; UnusedEnum::__SPEC_XDR_VIEW.const_xdr_len()] = UnusedEnum::spec_xdr(); @@ -10568,7 +10998,7 @@ impl UnusedEnum { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UnusedEnum"), + name: soroban_sdk::xdr::StringMView::new_str(UnusedEnum::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::VoidV0( soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0View { @@ -10720,6 +11150,12 @@ impl ::core::cmp::PartialEq for UnusedIntEnum { __self_discr == __arg1_discr } } +impl UnusedIntEnum { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UnusedIntEnum" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_UNUSEDINTENUM: [u8; UnusedIntEnum::__SPEC_XDR_VIEW.const_xdr_len()] = UnusedIntEnum::spec_xdr(); @@ -10728,7 +11164,7 @@ impl UnusedIntEnum { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UnusedIntEnum"), + name: soroban_sdk::xdr::StringMView::new_str(UnusedIntEnum::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -10842,6 +11278,12 @@ impl ::core::cmp::PartialEq for UnusedEvent { self.data == other.data && self.kind == other.kind } } +impl UnusedEvent { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UnusedEvent" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_EVENT_UNUSEDEVENT: [u8; UnusedEvent::__SPEC_XDR_VIEW.const_xdr_len()] = UnusedEvent::spec_xdr(); @@ -10850,9 +11292,7 @@ impl UnusedEvent { soroban_sdk::xdr::ScSpecEntryView::EventV0(soroban_sdk::xdr::ScSpecEventV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::ScSymbolView(soroban_sdk::xdr::StringMView::new( - b"UnusedEvent", - )), + name: soroban_sdk::xdr::StringMView::new_str(UnusedEvent::spec_type_name()), prefix_topics: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSymbolView( soroban_sdk::xdr::StringMView::new(b"unused_event"), )]), @@ -10947,6 +11387,12 @@ impl ::core::cmp::PartialEq for UnusedPubError { true } } +impl UnusedPubError { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UnusedPubError" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_UNUSEDPUBERROR: [u8; UnusedPubError::__SPEC_XDR_VIEW.const_xdr_len()] = UnusedPubError::spec_xdr(); @@ -10956,7 +11402,7 @@ impl UnusedPubError { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UnusedPubError"), + name: soroban_sdk::xdr::StringMView::new_str(UnusedPubError::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -11125,6 +11571,12 @@ impl ::core::cmp::PartialEq for UnusedNonContractFnParam { self.x == other.x } } +impl UnusedNonContractFnParam { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UnusedNonContractFnParam" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_UNUSEDNONCONTRACTFNPARAM: [u8; UnusedNonContractFnParam::__SPEC_XDR_VIEW.const_xdr_len()] = @@ -11134,7 +11586,7 @@ impl UnusedNonContractFnParam { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UnusedNonContractFnParam"), + name: soroban_sdk::xdr::StringMView::new_str(UnusedNonContractFnParam::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -11247,6 +11699,12 @@ impl ::core::cmp::PartialEq for UnusedNonContractFnReturn { self.x == other.x } } +impl UnusedNonContractFnReturn { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UnusedNonContractFnReturn" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_UNUSEDNONCONTRACTFNRETURN: [u8; UnusedNonContractFnReturn::__SPEC_XDR_VIEW.const_xdr_len()] = @@ -11256,7 +11714,9 @@ impl UnusedNonContractFnReturn { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UnusedNonContractFnReturn"), + name: soroban_sdk::xdr::StringMView::new_str( + UnusedNonContractFnReturn::spec_type_name(), + ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -11364,6 +11824,12 @@ impl ::core::cmp::PartialEq for UnusedNonPubStruct { self.x == other.x } } +impl UnusedNonPubStruct { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UnusedNonPubStruct" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_UNUSEDNONPUBSTRUCT: [u8; UnusedNonPubStruct::__SPEC_XDR_VIEW .const_xdr_len()] = UnusedNonPubStruct::spec_xdr(); @@ -11372,7 +11838,7 @@ impl UnusedNonPubStruct { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UnusedNonPubStruct"), + name: soroban_sdk::xdr::StringMView::new_str(UnusedNonPubStruct::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -11477,6 +11943,12 @@ impl ::core::cmp::PartialEq for UnusedNonPubError { true } } +impl UnusedNonPubError { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_spec_shaking_v2::UnusedNonPubError" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_UNUSEDNONPUBERROR: [u8; UnusedNonPubError::__SPEC_XDR_VIEW .const_xdr_len()] = UnusedNonPubError::spec_xdr(); @@ -11486,7 +11958,7 @@ impl UnusedNonPubError { soroban_sdk::xdr::ScSpecUdtErrorEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UnusedNonPubError"), + name: soroban_sdk::xdr::StringMView::new_str(UnusedNonPubError::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -11739,7 +12211,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"s"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedParamStruct"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -11748,7 +12222,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"ie"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedParamIntEnum"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -11782,7 +12258,7 @@ impl Contract { inputs: soroban_sdk::xdr::VecMView::new(&[]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedReturnEnum"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); @@ -11815,7 +12291,9 @@ impl Contract { ok_type: &soroban_sdk::xdr::ScSpecTypeDefView::U32, error_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedErrorEnum"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -11954,7 +12432,9 @@ impl Contract { &soroban_sdk::xdr::ScSpecTypeVecView { element_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedVecElement"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -11995,8 +12475,8 @@ impl Contract { &soroban_sdk::xdr::ScSpecTypeVecView { element_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"UsedVecElementNested", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -12036,12 +12516,16 @@ impl Contract { &soroban_sdk::xdr::ScSpecTypeMapView { key_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedMapKey"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), value_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedMapVal"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -12081,7 +12565,9 @@ impl Contract { &soroban_sdk::xdr::ScSpecTypeOptionView { value_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedOptionElement"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -12120,12 +12606,16 @@ impl Contract { &soroban_sdk::xdr::ScSpecTypeResultView { ok_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedResultOk"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), error_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedErrorEnum"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -12162,7 +12652,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"r"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedRecursiveRoot"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -12202,7 +12694,9 @@ impl Contract { &soroban_sdk::xdr::ScSpecTypeVecView { element_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"Context"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -12242,7 +12736,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"i"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"InvokerContractAuthEntry"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -12280,7 +12776,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"e"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"Executable"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -12457,7 +12955,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"s"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"StructC"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -12495,7 +12995,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"s"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"StructA"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -12532,7 +13034,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"s"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedNonPubStruct"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -12571,7 +13075,9 @@ impl Contract { ok_type: &soroban_sdk::xdr::ScSpecTypeDefView::U32, error_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UsedNonPubError"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -12609,8 +13115,8 @@ impl Contract { value_types: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"UsedTupleElement", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -12654,8 +13160,8 @@ impl Contract { value_types: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"UsedTupleReturnElement", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), diff --git a/tests-expanded/test_tuples_tests.rs b/tests-expanded/test_tuples_tests.rs index 9f6089be6..649471cc4 100644 --- a/tests-expanded/test_tuples_tests.rs +++ b/tests-expanded/test_tuples_tests.rs @@ -715,7 +715,7 @@ mod test { use crate::{Contract, ContractClient}; use soroban_sdk::Env; mod wasm { - pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01\x1f\x05`\x01~\x01~`\x02~~\x01~`\x03~~~\x01~`\x03~\x7f\x7f\x00`\x02\x7f\x7f\x01~\x02\x19\x04\x01i\x012\x00\x00\x01i\x011\x00\x00\x01v\x01g\x00\x01\x01v\x01h\x00\x02\x03\x06\x05\x00\x03\x04\x00\x00\x05\x03\x01\x00\x10\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x07E\x07\x06memory\x02\x00\x06tuple1\x00\x04\x06tuple2\x00\x07\x07void_fn\x00\x08\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xc8\x03\x05x\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00\x02@\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00 \x01B\x027\x03\x08 \x00 \x01A\x08jA\x01\x10\x85\x80\x80\x80\x00 \x01)\x03\x08\"\x00B\xff\x01\x83B\x04Q\r\x01\x0b\x00\x0b \x01 \x00B\x84\x80\x80\x80p\x837\x03\x08 \x01A\x08jA\x01\x10\x86\x80\x80\x80\x00!\x00 \x01A\x10j$\x80\x80\x80\x80\x00 \x00\x0b\x1d\x00 \x00 \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x83\x80\x80\x80\x00\x1a\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x82\x80\x80\x80\x00\x0b\xff\x01\x02\x02\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00\x02@\x02@\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00A\x00!\x02\x02@\x03@ \x02A\x10F\r\x01 \x01 \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b \x00 \x01A\x02\x10\x85\x80\x80\x80\x00 \x01)\x03\x00\"\x03B\xff\x01\x83B\x04R\r\x00 \x01)\x03\x08\"\x00\xa7A\xff\x01q\"\x02A\xc1\x00F\r\x01 \x02A\x07G\r\x00 \x00B\x08\x87!\x00\x0c\x02\x0b\x00\x0b \x00\x10\x80\x80\x80\x80\x00!\x00\x0b\x02@\x02@ \x00B\x80\x80\x80\x80\x80\x80\x80\xc0\x00|B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x00B\x08\x86B\x07\x84!\x00\x0c\x01\x0b \x00\x10\x81\x80\x80\x80\x00!\x00\x0b \x01 \x007\x03\x08 \x01 \x03B\x84\x80\x80\x80p\x837\x03\x00 \x01A\x02\x10\x86\x80\x80\x80\x00!\x00 \x01A\x10j$\x80\x80\x80\x80\x00 \x00\x0b\x13\x00\x02@ \x00B\xff\x01\x83B\x02Q\r\x00\x00\x0bB\x02\x0b\x0b\t\x01\x00A\x80\x80\xc0\x00\x0b\x00\x00\xdf\x16\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06tuple1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03arg\x00\x00\x00\x03\xed\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x03\xed\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06tuple2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03arg\x00\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07void_fn\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x08void_arg\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x07Context\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; + pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01\x1f\x05`\x01~\x01~`\x02~~\x01~`\x03~~~\x01~`\x03~\x7f\x7f\x00`\x02\x7f\x7f\x01~\x02\x19\x04\x01i\x012\x00\x00\x01i\x011\x00\x00\x01v\x01g\x00\x01\x01v\x01h\x00\x02\x03\x06\x05\x00\x03\x04\x00\x00\x05\x03\x01\x00\x10\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x07E\x07\x06memory\x02\x00\x06tuple1\x00\x04\x06tuple2\x00\x07\x07void_fn\x00\x08\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xc8\x03\x05x\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00\x02@\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00 \x01B\x027\x03\x08 \x00 \x01A\x08jA\x01\x10\x85\x80\x80\x80\x00 \x01)\x03\x08\"\x00B\xff\x01\x83B\x04Q\r\x01\x0b\x00\x0b \x01 \x00B\x84\x80\x80\x80p\x837\x03\x08 \x01A\x08jA\x01\x10\x86\x80\x80\x80\x00!\x00 \x01A\x10j$\x80\x80\x80\x80\x00 \x00\x0b\x1d\x00 \x00 \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x83\x80\x80\x80\x00\x1a\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x82\x80\x80\x80\x00\x0b\xff\x01\x02\x02\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00\x02@\x02@\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00A\x00!\x02\x02@\x03@ \x02A\x10F\r\x01 \x01 \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b \x00 \x01A\x02\x10\x85\x80\x80\x80\x00 \x01)\x03\x00\"\x03B\xff\x01\x83B\x04R\r\x00 \x01)\x03\x08\"\x00\xa7A\xff\x01q\"\x02A\xc1\x00F\r\x01 \x02A\x07G\r\x00 \x00B\x08\x87!\x00\x0c\x02\x0b\x00\x0b \x00\x10\x80\x80\x80\x80\x00!\x00\x0b\x02@\x02@ \x00B\x80\x80\x80\x80\x80\x80\x80\xc0\x00|B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x00B\x08\x86B\x07\x84!\x00\x0c\x01\x0b \x00\x10\x81\x80\x80\x80\x00!\x00\x0b \x01 \x007\x03\x08 \x01 \x03B\x84\x80\x80\x80p\x837\x03\x00 \x01A\x02\x10\x86\x80\x80\x80\x00!\x00 \x01A\x10j$\x80\x80\x80\x80\x00 \x00\x0b\x13\x00\x02@ \x00B\xff\x01\x83B\x02Q\r\x00\x00\x0bB\x02\x0b\x0b\t\x01\x00A\x80\x80\xc0\x00\x0b\x00\x00\xbf\x19\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06tuple1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03arg\x00\x00\x00\x03\xed\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x03\xed\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06tuple2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03arg\x00\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07void_fn\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x08void_arg\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x1asoroban_sdk::auth::Context\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00(soroban_sdk::auth::SubContractInvocation\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00+soroban_sdk::auth::InvokerContractAuthEntry\x00\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00+soroban_sdk::auth::InvokerContractAuthEntry\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00(soroban_sdk::auth::SubContractInvocation\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 soroban_sdk::address::Executable\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; pub trait Contract { fn tuple1(env: soroban_sdk::Env, arg: (u32,)) -> (u32,); fn tuple2(env: soroban_sdk::Env, arg: (u32, i64)) -> (u32, i64); @@ -1188,6 +1188,12 @@ mod test { } } } + impl ContractContext { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_tuples::test::wasm::ContractContext" + } + } pub static __SPEC_XDR_TYPE_CONTRACTCONTEXT: [u8; ContractContext::__SPEC_XDR_VIEW .const_xdr_len()] = ContractContext::spec_xdr(); impl ContractContext { @@ -1196,7 +1202,9 @@ mod test { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"ContractContext"), + name: soroban_sdk::xdr::StringMView::new_str( + ContractContext::spec_type_name(), + ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -1756,6 +1764,12 @@ mod test { } } } + impl SubContractInvocation { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_tuples::test::wasm::SubContractInvocation" + } + } pub static __SPEC_XDR_TYPE_SUBCONTRACTINVOCATION: [u8; SubContractInvocation::__SPEC_XDR_VIEW.const_xdr_len()] = SubContractInvocation::spec_xdr(); @@ -1765,15 +1779,17 @@ mod test { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"SubContractInvocation"), + name: soroban_sdk::xdr::StringMView::new_str( + SubContractInvocation::spec_type_name(), + ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), name: soroban_sdk::xdr::StringMView::new(b"context"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"ContractContext", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -1785,8 +1801,8 @@ mod test { &soroban_sdk::xdr::ScSpecTypeVecView { element_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"InvokerContractAuthEntry", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -2271,6 +2287,12 @@ mod test { } } } + impl CreateContractHostFnContext { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_tuples::test::wasm::CreateContractHostFnContext" + } + } pub static __SPEC_XDR_TYPE_CREATECONTRACTHOSTFNCONTEXT: [u8; CreateContractHostFnContext::__SPEC_XDR_VIEW.const_xdr_len()] = CreateContractHostFnContext::spec_xdr(); @@ -2280,15 +2302,17 @@ mod test { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"CreateContractHostFnContext"), + name: soroban_sdk::xdr::StringMView::new_str( + CreateContractHostFnContext::spec_type_name(), + ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), name: soroban_sdk::xdr::StringMView::new(b"executable"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"ContractExecutable", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -2810,6 +2834,12 @@ mod test { } } } + impl CreateContractWithConstructorHostFnContext { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_tuples::test::wasm::CreateContractWithConstructorHostFnContext" + } + } pub static __SPEC_XDR_TYPE_CREATECONTRACTWITHCONSTRUCTORHOSTFNCONTEXT: [u8; CreateContractWithConstructorHostFnContext::__SPEC_XDR_VIEW.const_xdr_len()] = CreateContractWithConstructorHostFnContext::spec_xdr(); @@ -2819,8 +2849,8 @@ mod test { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithConstructorHostFnContext", + name: soroban_sdk::xdr::StringMView::new_str( + CreateContractWithConstructorHostFnContext::spec_type_name(), ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { @@ -2837,8 +2867,8 @@ mod test { name: soroban_sdk::xdr::StringMView::new(b"executable"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"ContractExecutable", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -3487,68 +3517,67 @@ mod test { } } } + impl Context { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_tuples::test::wasm::Context" + } + } pub static __SPEC_XDR_TYPE_CONTEXT: [u8; Context::__SPEC_XDR_VIEW.const_xdr_len()] = Context::spec_xdr(); impl Context { - const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = - soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0( - soroban_sdk::xdr::ScSpecUdtUnionV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Context"), - cases: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Contract"), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"ContractContext", - ), - }, + const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + lib: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new_str(Context::spec_type_name()), + cases: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new(b"Contract"), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), - ]), - }, + }), + ], ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractHostFn", - ), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractHostFnContext", - ), - }, + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), - ]), - }, + }), + ], ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithCtorHostFn", - ), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithConstructorHostFnContext", - ), - }, + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractWithCtorHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), - ]), - }, + }), + ], ), - ]), - }, - ); + }), + ], + ), + }); pub const fn spec_xdr() -> [u8; Context::__SPEC_XDR_VIEW.const_xdr_len()] { Context::__SPEC_XDR_VIEW.const_to_xdr() } @@ -4218,6 +4247,12 @@ mod test { } } } + impl ContractExecutable { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_tuples::test::wasm::ContractExecutable" + } + } pub static __SPEC_XDR_TYPE_CONTRACTEXECUTABLE: [u8; ContractExecutable::__SPEC_XDR_VIEW .const_xdr_len()] = ContractExecutable::spec_xdr(); impl ContractExecutable { @@ -4226,7 +4261,9 @@ mod test { soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"ContractExecutable"), + name: soroban_sdk::xdr::StringMView::new_str( + ContractExecutable::spec_type_name(), + ), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { @@ -4783,69 +4820,70 @@ mod test { } } } + impl InvokerContractAuthEntry { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_tuples::test::wasm::InvokerContractAuthEntry" + } + } pub static __SPEC_XDR_TYPE_INVOKERCONTRACTAUTHENTRY: [u8; InvokerContractAuthEntry::__SPEC_XDR_VIEW.const_xdr_len()] = InvokerContractAuthEntry::spec_xdr(); impl InvokerContractAuthEntry { - const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = - soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0( - soroban_sdk::xdr::ScSpecUdtUnionV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"InvokerContractAuthEntry"), - cases: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Contract"), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"SubContractInvocation", - ), - }, + const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + lib: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new_str( + InvokerContractAuthEntry::spec_type_name(), + ), + cases: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new(b"Contract"), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), - ]), - }, + }), + ], ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractHostFn", - ), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractHostFnContext", - ), - }, + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), - ]), - }, + }), + ], ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithCtorHostFn", - ), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithConstructorHostFnContext", - ), - }, + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractWithCtorHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), - ]), - }, + }), + ], ), - ]), - }, - ); + }), + ], + ), + }); pub const fn spec_xdr( ) -> [u8; InvokerContractAuthEntry::__SPEC_XDR_VIEW.const_xdr_len()] { InvokerContractAuthEntry::__SPEC_XDR_VIEW.const_to_xdr() @@ -5578,6 +5616,12 @@ mod test { } } } + impl Executable { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_tuples::test::wasm::Executable" + } + } pub static __SPEC_XDR_TYPE_EXECUTABLE: [u8; Executable::__SPEC_XDR_VIEW.const_xdr_len()] = Executable::spec_xdr(); impl Executable { @@ -5586,7 +5630,7 @@ mod test { soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Executable"), + name: soroban_sdk::xdr::StringMView::new_str(Executable::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { diff --git a/tests-expanded/test_udt_tests.rs b/tests-expanded/test_udt_tests.rs index f8a3aeff3..77b0925a6 100644 --- a/tests-expanded/test_udt_tests.rs +++ b/tests-expanded/test_udt_tests.rs @@ -49,6 +49,12 @@ impl ::core::cmp::PartialEq for UdtEnum2 { __self_discr == __arg1_discr } } +impl UdtEnum2 { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::UdtEnum2" + } +} pub static __SPEC_XDR_TYPE_UDTENUM2: [u8; UdtEnum2::__SPEC_XDR_VIEW.const_xdr_len()] = UdtEnum2::spec_xdr(); impl UdtEnum2 { @@ -56,7 +62,7 @@ impl UdtEnum2 { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UdtEnum2"), + name: soroban_sdk::xdr::StringMView::new_str(UdtEnum2::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -417,6 +423,12 @@ impl ::core::cmp::PartialEq for UdtEnum { } } } +impl UdtEnum { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::UdtEnum" + } +} pub static __SPEC_XDR_TYPE_UDTENUM: [u8; UdtEnum::__SPEC_XDR_VIEW.const_xdr_len()] = UdtEnum::spec_xdr(); impl UdtEnum { @@ -424,7 +436,7 @@ impl UdtEnum { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UdtEnum"), + name: soroban_sdk::xdr::StringMView::new_str(UdtEnum::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::VoidV0( soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0View { @@ -439,7 +451,9 @@ impl UdtEnum { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UdtStruct"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), ]), @@ -452,7 +466,9 @@ impl UdtEnum { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UdtEnum2"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), ]), @@ -465,7 +481,9 @@ impl UdtEnum { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UdtTuple"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), ]), @@ -1086,6 +1104,12 @@ impl ::core::cmp::PartialEq for UdtTuple { self.0 == other.0 && self.1 == other.1 } } +impl UdtTuple { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::UdtTuple" + } +} pub static __SPEC_XDR_TYPE_UDTTUPLE: [u8; UdtTuple::__SPEC_XDR_VIEW.const_xdr_len()] = UdtTuple::spec_xdr(); impl UdtTuple { @@ -1093,7 +1117,7 @@ impl UdtTuple { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UdtTuple"), + name: soroban_sdk::xdr::StringMView::new_str(UdtTuple::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -1502,6 +1526,12 @@ impl ::core::cmp::PartialEq for UdtStruct { self.a == other.a && self.b == other.b && self.c == other.c } } +impl UdtStruct { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::UdtStruct" + } +} pub static __SPEC_XDR_TYPE_UDTSTRUCT: [u8; UdtStruct::__SPEC_XDR_VIEW.const_xdr_len()] = UdtStruct::spec_xdr(); impl UdtStruct { @@ -1509,7 +1539,7 @@ impl UdtStruct { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UdtStruct"), + name: soroban_sdk::xdr::StringMView::new_str(UdtStruct::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -2004,6 +2034,12 @@ impl ::core::cmp::PartialEq for UdtRecursive { self.a == other.a && self.b == other.b } } +impl UdtRecursive { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::UdtRecursive" + } +} pub static __SPEC_XDR_TYPE_UDTRECURSIVE: [u8; UdtRecursive::__SPEC_XDR_VIEW.const_xdr_len()] = UdtRecursive::spec_xdr(); impl UdtRecursive { @@ -2011,7 +2047,7 @@ impl UdtRecursive { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UdtRecursive"), + name: soroban_sdk::xdr::StringMView::new_str(UdtRecursive::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -2025,7 +2061,9 @@ impl UdtRecursive { &soroban_sdk::xdr::ScSpecTypeVecView { element_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UdtRecursive"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -2456,6 +2494,12 @@ impl ::core::cmp::PartialEq for RecursiveToEnum { self.a == other.a && self.b == other.b } } +impl RecursiveToEnum { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::RecursiveToEnum" + } +} pub static __SPEC_XDR_TYPE_RECURSIVETOENUM: [u8; RecursiveToEnum::__SPEC_XDR_VIEW.const_xdr_len()] = RecursiveToEnum::spec_xdr(); impl RecursiveToEnum { @@ -2463,7 +2507,7 @@ impl RecursiveToEnum { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"RecursiveToEnum"), + name: soroban_sdk::xdr::StringMView::new_str(RecursiveToEnum::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -2478,7 +2522,9 @@ impl RecursiveToEnum { key_type: &soroban_sdk::xdr::ScSpecTypeDefView::U32, value_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"RecursiveEnum"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -2923,6 +2969,12 @@ impl ::core::cmp::PartialEq for RecursiveEnum { } } } +impl RecursiveEnum { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::RecursiveEnum" + } +} pub static __SPEC_XDR_TYPE_RECURSIVEENUM: [u8; RecursiveEnum::__SPEC_XDR_VIEW.const_xdr_len()] = RecursiveEnum::spec_xdr(); impl RecursiveEnum { @@ -2930,7 +2982,7 @@ impl RecursiveEnum { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"RecursiveEnum"), + name: soroban_sdk::xdr::StringMView::new_str(RecursiveEnum::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::VoidV0( soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0View { @@ -2945,7 +2997,9 @@ impl RecursiveEnum { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"RecursiveToEnum"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), ]), @@ -3572,7 +3626,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"a"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UdtEnum"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -3581,7 +3637,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"b"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UdtEnum"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -3614,7 +3672,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"a"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UdtRecursive"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -3624,7 +3684,9 @@ impl Contract { &soroban_sdk::xdr::ScSpecTypeOptionView { value_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UdtRecursive"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -3659,7 +3721,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"a"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"RecursiveEnum"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -3676,7 +3740,9 @@ impl Contract { &soroban_sdk::xdr::ScSpecTypeOptionView { value_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"RecursiveEnum"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -4495,7 +4561,7 @@ mod test { mod test_with_wasm { use soroban_sdk::{symbol_short, vec, Env, Map}; mod contract { - pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01N\r`\x01~\x01~`\x03~~~\x01~`\x02~~\x01~`\x04~~~~\x01~`\x02\x7f\x7f\x00`\x00\x00`\x03~\x7f\x7f\x01~`\x02\x7f\x7f\x01\x7f`\x05~\x7f\x7f\x7f\x7f\x00`\x02\x7f~\x00`\x01\x7f\x01~`\x03\x7f\x7f\x7f\x00`\x02\x7f\x7f\x01~\x02O\r\x01v\x013\x00\x00\x01v\x01h\x00\x01\x01i\x012\x00\x00\x01v\x011\x00\x02\x01i\x011\x00\x00\x01v\x018\x00\x00\x01m\x014\x00\x02\x01m\x011\x00\x02\x01v\x01g\x00\x02\x01b\x01j\x00\x02\x01m\x019\x00\x01\x01m\x01a\x00\x03\x01b\x01m\x00\x01\x03\x15\x14\x04\x05\x04\x06\x07\x08\t\t\t\x05\x05\x04\x02\x05\x00\n\x02\x0b\x0c\x05\x04\x05\x01p\x01\x04\x04\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\xe8\x81\xc0\x00\x0b\x7f\x00A\xe8\x81\xc0\x00\x0b\x7f\x00A\xf0\x81\xc0\x00\x0b\x07L\x07\x06memory\x02\x00\x03add\x00\x19\trecursive\x00\x1b\x0erecursive_enum\x00\x1d\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\t\t\x01\x00A\x01\x0b\x03\x0e\x16\x17\n\xf1\x1d\x14\x85\x07\x04\x01\x7f\x02~\x01\x7f\x01~#\x80\x80\x80\x80\x00A\xc0\x00k\"\x02$\x80\x80\x80\x80\x00 \x02A\x81\x80\x80\x80\x006\x02\x18 \x02(\x02\x18\x1aA\x00-\x00\xaa\x80\xc0\x80\x00\x1aA\x00-\x00\x8e\x80\xc0\x80\x00\x1a \x02A\x81\x80\x80\x80\x006\x02\x18 \x02(\x02\x18\x1aA\x00-\x00\x9c\x80\xc0\x80\x00\x1aA\x00-\x00\x80\x80\xc0\x80\x00\x1a\x02@\x02@ \x01)\x03\x00\"\x03B\xff\x01\x83B\xcb\x00Q\r\x00 \x00A\x04:\x00\x00\x0c\x01\x0b \x03\x10\x80\x80\x80\x80\x00!\x04 \x02A\x006\x02\x10 \x02 \x037\x03\x08 \x02 \x04B \x88>\x02\x14 \x02A\x18j \x02A\x08j\x10\x8f\x80\x80\x80\x00\x02@\x02@\x02@\x02@ \x02)\x03\x18\"\x03B\x02Q\r\x00 \x03\xa7A\x01q\r\x00\x02@ \x02)\x03 \"\x03\xa7A\xff\x01q\"\x01A\xca\x00F\r\x00 \x01A\x0eG\r\x01\x0b\x02@\x02@\x02@\x02@ \x03A\xf4\x80\xc0\x80\x00A\x04\x10\x90\x80\x80\x80\x00B \x88\xa7\x0e\x04\x00\x01\x02\x03\x05\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00\r\x04A\x00!\x05\x0c\x05\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00A\x01K\r\x03 \x02A\x18j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x03\x18\"\x03B\x02Q\r\x03 \x03\xa7A\x01q\r\x03 \x02)\x03 !\x03A\x00!\x01\x02@\x03@ \x01A\x18F\r\x01 \x02A\x18j \x01jB\x027\x03\x00 \x01A\x08j!\x01\x0c\x00\x0b\x0b \x03B\xff\x01\x83B\xcc\x00R\r\x03 \x03A\x98\x81\xc0\x80\x00A\x03 \x02A\x18jA\x03\x10\x92\x80\x80\x80\x00 \x02A0j \x02)\x03\x18\x10\x93\x80\x80\x80\x00 \x02(\x020\r\x03 \x02)\x038!\x04 \x02A0j \x02)\x03 \x10\x93\x80\x80\x80\x00 \x02(\x020\r\x03 \x02)\x03(\"\x06B\xff\x01\x83B\xcb\x00R\r\x03 \x02)\x038!\x03A\x01!\x05\x0c\x04\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00A\x01K\r\x02 \x02A\x18j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x03\x18\"\x03B\x02Q\r\x02 \x03\xa7A\x01q\r\x02 \x02)\x03 \"\x03B\xff\x01\x83B\x04R\r\x02A\nA\x0fA\t \x03B \x88\xa7\"\x01A\x0fF\x1b \x01A\nF\x1b\"\x01A\tF\r\x02A\x02!\x05\x0c\x04\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00A\x01K\r\x01 \x02A\x18j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x03\x18\"\x03B\x02Q\r\x01 \x03\xa7A\x01q\r\x01 \x02)\x03 \"\x03B\xff\x01\x83B\xcb\x00R\r\x01A\x00!\x01\x02@\x03@ \x01A\x10F\r\x01 \x02A0j \x01jB\x027\x03\x00 \x01A\x08j!\x01\x0c\x00\x0b\x0b \x03 \x02A0j\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x81\x80\x80\x80\x00\x1a \x02A\x18j \x02)\x030\x10\x93\x80\x80\x80\x00 \x02(\x02\x18A\x01F\r\x01 \x02)\x038\"\x03B\xff\x01\x83B\xcb\x00R\r\x01 \x02)\x03 !\x04A\x03!\x05\x0c\x02\x0b \x00A\x04:\x00\x00\x0c\x03\x0b \x00A\x04:\x00\x00\x0c\x02\x0b\x0b \x00 \x067\x03\x18 \x00 \x037\x03\x10 \x00 \x047\x03\x08 \x00 \x01:\x00\x01 \x00 \x05:\x00\x00\x0b \x02A\xc0\x00j$\x80\x80\x80\x80\x00\x0b\x02\x00\x0bJ\x02\x01~\x01\x7fB\x02!\x02\x02@ \x01(\x02\x08\"\x03 \x01(\x02\x0cO\r\x00 \x00 \x01)\x03\x00 \x03\xadB \x86B\x04\x84\x10\x83\x80\x80\x80\x007\x03\x08 \x01 \x03A\x01j6\x02\x08B\x00!\x02\x0b \x00 \x027\x03\x00\x0b\x1c\x00 \x00 \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x8c\x80\x80\x80\x00\x0b\x19\x00\x02@ \x01 \x00I\r\x00 \x01 \x00k\x0f\x0b\x10\x9a\x80\x80\x80\x00\x00\x0b1\x00\x02@ \x02 \x04F\r\x00\x00\x0b \x00 \x01\xadB \x86B\x04\x84 \x03\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x8b\x80\x80\x80\x00\x1a\x0b]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc1\x00F\r\x00\x02@ \x02A\x07F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x87!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x82\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0b\xb5\x01\x02\x02\x7f\x02~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02 \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0bB\x01!\x04\x02@ \x01B\xff\x01\x83B\xcc\x00R\r\x00 \x01A\xb0\x81\xc0\x80\x00A\x02 \x02A\x02\x10\x92\x80\x80\x80\x00\x02@ \x02)\x03\x00\"\x01\xa7A\xff\x01q\"\x03A\xca\x00F\r\x00 \x03A\x0eG\r\x01\x0b \x02)\x03\x08\"\x05B\xff\x01\x83B\xcb\x00R\r\x00 \x00 \x057\x03\x10 \x00 \x017\x03\x08B\x00!\x04\x0b \x00 \x047\x03\x00 \x02A\x10j$\x80\x80\x80\x80\x00\x0b\xb5\x01\x02\x02\x7f\x02~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02 \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0bB\x01!\x04\x02@ \x01B\xff\x01\x83B\xcc\x00R\r\x00 \x01A\xb0\x81\xc0\x80\x00A\x02 \x02A\x02\x10\x92\x80\x80\x80\x00\x02@ \x02)\x03\x00\"\x01\xa7A\xff\x01q\"\x03A\xca\x00F\r\x00 \x03A\x0eG\r\x01\x0b \x02)\x03\x08\"\x05B\xff\x01\x83B\xcc\x00R\r\x00 \x00 \x057\x03\x10 \x00 \x017\x03\x08B\x00!\x04\x0b \x00 \x047\x03\x00 \x02A\x10j$\x80\x80\x80\x80\x00\x0b(\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00A\x82\x80\x80\x80\x006\x02\x0c \x00(\x02\x0c\x1aA\x00-\x00\xb8\x80\xc0\x80\x00\x1a\x0bC\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00A\x81\x80\x80\x80\x006\x02\x0c \x00(\x02\x0c\x1a \x00A\x83\x80\x80\x80\x006\x02\x08 \x00(\x02\x08\x1aA\x00-\x00\xd4\x80\xc0\x80\x00\x1aA\x00-\x00\xc6\x80\xc0\x80\x00\x1a\x0bx\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00B\x02!\x03\x02@ \x01(\x02\x08\"\x04 \x01(\x02\x0cO\r\x00 \x02 \x01)\x03\x00 \x04\xadB \x86B\x04\x84\x10\x83\x80\x80\x80\x00\x10\x93\x80\x80\x80\x00 \x02)\x03\x00!\x03 \x00 \x02)\x03\x087\x03\x08 \x01 \x04A\x01j6\x02\x08\x0b \x00 \x037\x03\x00 \x02A\x10j$\x80\x80\x80\x80\x00\x0b\xd6\x04\x04\x02\x7f\x01~\x01\x7f\x05~#\x80\x80\x80\x80\x00A\xc0\x00k\"\x02$\x80\x80\x80\x80\x00 \x02 \x017\x03\x08 \x02 \x007\x03\x00 \x02A\x10j \x02\x10\x8d\x80\x80\x80\x00\x02@\x02@\x02@ \x02-\x00\x10\"\x03A\x04F\r\x00 \x02)\x03 !\x01 \x02)\x03\x18!\x04 \x021\x00\x11!\x00 \x02A\x10j \x02A\x08j\x10\x8d\x80\x80\x80\x00 \x02-\x00\x10\"\x05A\x04F\r\x00 \x02)\x03 !\x06 \x02)\x03\x18!\x07 \x021\x00\x11!\x08B\x00!\tB\x00!\n\x02@\x02@\x02@\x02@ \x03\x0e\x04\x05\x02\x01\x00\x05\x0b \x01\x10\x80\x80\x80\x80\x00!\x00 \x02A\x006\x028 \x02 \x017\x030 \x02 \x00B \x88>\x02\x02\x02\x14 \x02A\x18j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x03\x18\"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00\x02@ \x02)\x03 \"\x00\xa7A\xff\x01q\"\x04A\xca\x00F\r\x00 \x04A\x0eG\r\x01\x0b\x02@\x02@\x02@\x02@\x02@\x02@ \x00A\xd8\x81\xc0\x80\x00A\x02\x10\x90\x80\x80\x80\x00B \x88\xa7\x0e\x02\x01\x00\x06\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00A\x01K\r\x05 \x02A0j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x030\"\x00B\x02Q\r\x05 \x00\xa7A\x01q\r\x05 \x02A\x18j \x02)\x038\x10\x95\x80\x80\x80\x00 \x02(\x02\x18A\x01F\r\x05 \x01B\xff\x01\x83B\x04R\r\x05 \x02)\x03(\"\x00 \x01B\x84\x80\x80\x80p\x83\"\x01\x10\x86\x80\x80\x80\x00B\x01R\r\x01 \x00 \x01\x10\x87\x80\x80\x80\x00\"\x00B\xff\x01\x83B\xcb\x00R\r\x05 \x00\x10\x80\x80\x80\x80\x00!\x01 \x02A\x006\x02\x10 \x02 \x007\x03\x08 \x02 \x01B \x88>\x02\x14 \x02A\x18j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x03\x18\"\x00B\x02Q\r\x05 \x00\xa7A\x01q\r\x05\x02@ \x02)\x03 \"\x00\xa7A\xff\x01q\"\x04A\xca\x00F\r\x00 \x04A\x0eG\r\x06\x0b \x00A\xd8\x81\xc0\x80\x00A\x02\x10\x90\x80\x80\x80\x00B \x88\xa7\x0e\x02\x02\x03\x05\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00\r\x04 \x01B\xff\x01\x83B\x04R\r\x04\x0bB\x02!\x00\x0c\x02\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00\r\x02B\x00!\x00\x0c\x01\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00A\x01K\r\x01 \x02A0j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x030\"\x00B\x02Q\r\x01 \x00\xa7A\x01q\r\x01 \x02A\x18j \x02)\x038\x10\x95\x80\x80\x80\x00 \x02(\x02\x18\r\x01 \x02)\x03(!\x05 \x02)\x03 !\x03B\x01!\x00\x0b \x02A\x81\x80\x80\x80\x006\x02\x18 \x02(\x02\x18\x1a \x02A\x83\x80\x80\x80\x006\x02\x18 \x02(\x02\x18\x1aA\x00-\x00\xd4\x80\xc0\x80\x00\x1aA\x00-\x00\xc6\x80\xc0\x80\x00\x1aB\x02!\x01\x02@ \x00B\x02Q\r\x00\x02@ \x00\xa7A\x01qE\r\x00 \x02A\x18jA\xcc\x81\xc0\x80\x00A\t\x10\x9e\x80\x80\x80\x00 \x02(\x02\x18\r\x02 \x02)\x03 !\x00 \x02 \x057\x03 \x02 \x037\x03\x18 \x02 \x02A\x18j\x10\x9c\x80\x80\x80\x007\x03 \x02 \x007\x03\x18 \x02A\x18jA\x02\x10\x9f\x80\x80\x80\x00!\x01\x0c\x01\x0b \x02A\x18jA\xc0\x81\xc0\x80\x00A\x0c\x10\x9e\x80\x80\x80\x00 \x02(\x02\x18\r\x01 \x02 \x02)\x03 7\x03\x18 \x02A\x18jA\x01\x10\x9f\x80\x80\x80\x00!\x01\x0b \x02A\xc0\x00j$\x80\x80\x80\x80\x00 \x01\x0f\x0b\x00\x0b\xd6\x01\x02\x01~\x03\x7f\x02@\x02@ \x02A\tK\r\x00B\x00!\x03A\x00!\x04\x03@\x02@ \x04A\tG\r\x00 \x03B\x08\x86B\x0e\x84!\x03\x0c\x03\x0bA\x01!\x05\x02@ \x01 \x04j-\x00\x00\"\x06A\xdf\x00F\r\x00\x02@\x02@ \x06APjA\xff\x01qA\nI\r\x00 \x06A\xbf\x7fjA\xff\x01qA\x1aI\r\x01 \x06A\x9f\x7fjA\xff\x01qA\x1aO\r\x04 \x06AEj!\x05\x0c\x02\x0b \x06ARj!\x05\x0c\x01\x0b \x06AKj!\x05\x0b \x03B\x06\x86 \x05\xadB\xff\x01\x83\x84!\x03 \x04A\x01j!\x04\x0c\x00\x0b\x0b \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x89\x80\x80\x80\x00!\x03\x0b \x00B\x007\x03\x00 \x00 \x037\x03\x08\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x88\x80\x80\x80\x00\x0b\x03\x00\x00\x0b\x0b\xf2\x01\x01\x00A\x80\x80\xc0\x00\x0b\xe8\x01SpEcV1\xf3\xb0\xab@i\rH\xb4SpEcV1\xaf\xf7\x93\xba\x9eM\xde\x9aSpEcV1\xeb\x9f\x12&\x9av(*SpEcV1\x16\'d8\xff\xc9\xb1\xf8SpEcV1\xc8\x12\x91\xfe\xd7\x13\xf5\x9cSpEcV1\xff{V \xab\r\xdcdSpEcV1\xe1oU\xdb\xd47\x98\x14UdtAUdtBUdtCUdtD\x00\x00b\x00\x10\x00\x04\x00\x00\x00f\x00\x10\x00\x04\x00\x00\x00j\x00\x10\x00\x04\x00\x00\x00n\x00\x10\x00\x04\x00\x00\x00abc\x00\x94\x00\x10\x00\x01\x00\x00\x00\x95\x00\x10\x00\x01\x00\x00\x00\x96\x00\x10\x00\x01\x00\x00\x00\x94\x00\x10\x00\x01\x00\x00\x00\x95\x00\x10\x00\x01\x00\x00\x00NotRecursiveRecursive\x00\x00\x00\xc0\x00\x10\x00\x0c\x00\x00\x00\xcc\x00\x10\x00\t\x00\x00\x00\x00\xdb\x1c\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03add\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x07UdtEnum\x00\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x07UdtEnum\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07UdtEnum\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04UdtA\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04UdtB\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\tUdtStruct\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04UdtC\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x08UdtEnum2\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04UdtD\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x08UdtTuple\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08UdtEnum2\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01A\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x01B\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08UdtTuple\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x03\xea\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\tUdtStruct\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01c\x00\x00\x00\x00\x00\x03\xea\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\trecursive\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x0cUdtRecursive\x00\x00\x00\x01\x00\x00\x03\xe8\x00\x00\x07\xd0\x00\x00\x00\x0cUdtRecursive\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cUdtRecursive\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x0cUdtRecursive\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rRecursiveEnum\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cNotRecursive\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\tRecursive\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0fRecursiveToEnum\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fRecursiveToEnum\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x03\xec\x00\x00\x00\x04\x00\x00\x07\xd0\x00\x00\x00\rRecursiveEnum\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0erecursive_enum\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\rRecursiveEnum\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03key\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x03\xe8\x00\x00\x07\xd0\x00\x00\x00\rRecursiveEnum\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x07Context\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; + pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01N\r`\x01~\x01~`\x03~~~\x01~`\x02~~\x01~`\x04~~~~\x01~`\x02\x7f\x7f\x00`\x00\x00`\x03~\x7f\x7f\x01~`\x02\x7f\x7f\x01\x7f`\x05~\x7f\x7f\x7f\x7f\x00`\x02\x7f~\x00`\x01\x7f\x01~`\x03\x7f\x7f\x7f\x00`\x02\x7f\x7f\x01~\x02O\r\x01v\x013\x00\x00\x01v\x01h\x00\x01\x01i\x012\x00\x00\x01v\x011\x00\x02\x01i\x011\x00\x00\x01v\x018\x00\x00\x01m\x014\x00\x02\x01m\x011\x00\x02\x01v\x01g\x00\x02\x01b\x01j\x00\x02\x01m\x019\x00\x01\x01m\x01a\x00\x03\x01b\x01m\x00\x01\x03\x15\x14\x04\x05\x04\x06\x07\x08\t\t\t\x05\x05\x04\x02\x05\x00\n\x02\x0b\x0c\x05\x04\x05\x01p\x01\x04\x04\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\xe8\x81\xc0\x00\x0b\x7f\x00A\xe8\x81\xc0\x00\x0b\x7f\x00A\xf0\x81\xc0\x00\x0b\x07L\x07\x06memory\x02\x00\x03add\x00\x19\trecursive\x00\x1b\x0erecursive_enum\x00\x1d\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\t\t\x01\x00A\x01\x0b\x03\x0e\x16\x17\n\xf1\x1d\x14\x85\x07\x04\x01\x7f\x02~\x01\x7f\x01~#\x80\x80\x80\x80\x00A\xc0\x00k\"\x02$\x80\x80\x80\x80\x00 \x02A\x81\x80\x80\x80\x006\x02\x18 \x02(\x02\x18\x1aA\x00-\x00\xaa\x80\xc0\x80\x00\x1aA\x00-\x00\x8e\x80\xc0\x80\x00\x1a \x02A\x81\x80\x80\x80\x006\x02\x18 \x02(\x02\x18\x1aA\x00-\x00\x9c\x80\xc0\x80\x00\x1aA\x00-\x00\x80\x80\xc0\x80\x00\x1a\x02@\x02@ \x01)\x03\x00\"\x03B\xff\x01\x83B\xcb\x00Q\r\x00 \x00A\x04:\x00\x00\x0c\x01\x0b \x03\x10\x80\x80\x80\x80\x00!\x04 \x02A\x006\x02\x10 \x02 \x037\x03\x08 \x02 \x04B \x88>\x02\x14 \x02A\x18j \x02A\x08j\x10\x8f\x80\x80\x80\x00\x02@\x02@\x02@\x02@ \x02)\x03\x18\"\x03B\x02Q\r\x00 \x03\xa7A\x01q\r\x00\x02@ \x02)\x03 \"\x03\xa7A\xff\x01q\"\x01A\xca\x00F\r\x00 \x01A\x0eG\r\x01\x0b\x02@\x02@\x02@\x02@ \x03A\xf4\x80\xc0\x80\x00A\x04\x10\x90\x80\x80\x80\x00B \x88\xa7\x0e\x04\x00\x01\x02\x03\x05\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00\r\x04A\x00!\x05\x0c\x05\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00A\x01K\r\x03 \x02A\x18j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x03\x18\"\x03B\x02Q\r\x03 \x03\xa7A\x01q\r\x03 \x02)\x03 !\x03A\x00!\x01\x02@\x03@ \x01A\x18F\r\x01 \x02A\x18j \x01jB\x027\x03\x00 \x01A\x08j!\x01\x0c\x00\x0b\x0b \x03B\xff\x01\x83B\xcc\x00R\r\x03 \x03A\x98\x81\xc0\x80\x00A\x03 \x02A\x18jA\x03\x10\x92\x80\x80\x80\x00 \x02A0j \x02)\x03\x18\x10\x93\x80\x80\x80\x00 \x02(\x020\r\x03 \x02)\x038!\x04 \x02A0j \x02)\x03 \x10\x93\x80\x80\x80\x00 \x02(\x020\r\x03 \x02)\x03(\"\x06B\xff\x01\x83B\xcb\x00R\r\x03 \x02)\x038!\x03A\x01!\x05\x0c\x04\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00A\x01K\r\x02 \x02A\x18j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x03\x18\"\x03B\x02Q\r\x02 \x03\xa7A\x01q\r\x02 \x02)\x03 \"\x03B\xff\x01\x83B\x04R\r\x02A\nA\x0fA\t \x03B \x88\xa7\"\x01A\x0fF\x1b \x01A\nF\x1b\"\x01A\tF\r\x02A\x02!\x05\x0c\x04\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00A\x01K\r\x01 \x02A\x18j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x03\x18\"\x03B\x02Q\r\x01 \x03\xa7A\x01q\r\x01 \x02)\x03 \"\x03B\xff\x01\x83B\xcb\x00R\r\x01A\x00!\x01\x02@\x03@ \x01A\x10F\r\x01 \x02A0j \x01jB\x027\x03\x00 \x01A\x08j!\x01\x0c\x00\x0b\x0b \x03 \x02A0j\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x81\x80\x80\x80\x00\x1a \x02A\x18j \x02)\x030\x10\x93\x80\x80\x80\x00 \x02(\x02\x18A\x01F\r\x01 \x02)\x038\"\x03B\xff\x01\x83B\xcb\x00R\r\x01 \x02)\x03 !\x04A\x03!\x05\x0c\x02\x0b \x00A\x04:\x00\x00\x0c\x03\x0b \x00A\x04:\x00\x00\x0c\x02\x0b\x0b \x00 \x067\x03\x18 \x00 \x037\x03\x10 \x00 \x047\x03\x08 \x00 \x01:\x00\x01 \x00 \x05:\x00\x00\x0b \x02A\xc0\x00j$\x80\x80\x80\x80\x00\x0b\x02\x00\x0bJ\x02\x01~\x01\x7fB\x02!\x02\x02@ \x01(\x02\x08\"\x03 \x01(\x02\x0cO\r\x00 \x00 \x01)\x03\x00 \x03\xadB \x86B\x04\x84\x10\x83\x80\x80\x80\x007\x03\x08 \x01 \x03A\x01j6\x02\x08B\x00!\x02\x0b \x00 \x027\x03\x00\x0b\x1c\x00 \x00 \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x8c\x80\x80\x80\x00\x0b\x19\x00\x02@ \x01 \x00I\r\x00 \x01 \x00k\x0f\x0b\x10\x9a\x80\x80\x80\x00\x00\x0b1\x00\x02@ \x02 \x04F\r\x00\x00\x0b \x00 \x01\xadB \x86B\x04\x84 \x03\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x8b\x80\x80\x80\x00\x1a\x0b]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc1\x00F\r\x00\x02@ \x02A\x07F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x87!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x82\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0b\xb5\x01\x02\x02\x7f\x02~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02 \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0bB\x01!\x04\x02@ \x01B\xff\x01\x83B\xcc\x00R\r\x00 \x01A\xb0\x81\xc0\x80\x00A\x02 \x02A\x02\x10\x92\x80\x80\x80\x00\x02@ \x02)\x03\x00\"\x01\xa7A\xff\x01q\"\x03A\xca\x00F\r\x00 \x03A\x0eG\r\x01\x0b \x02)\x03\x08\"\x05B\xff\x01\x83B\xcb\x00R\r\x00 \x00 \x057\x03\x10 \x00 \x017\x03\x08B\x00!\x04\x0b \x00 \x047\x03\x00 \x02A\x10j$\x80\x80\x80\x80\x00\x0b\xb5\x01\x02\x02\x7f\x02~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02 \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0bB\x01!\x04\x02@ \x01B\xff\x01\x83B\xcc\x00R\r\x00 \x01A\xb0\x81\xc0\x80\x00A\x02 \x02A\x02\x10\x92\x80\x80\x80\x00\x02@ \x02)\x03\x00\"\x01\xa7A\xff\x01q\"\x03A\xca\x00F\r\x00 \x03A\x0eG\r\x01\x0b \x02)\x03\x08\"\x05B\xff\x01\x83B\xcc\x00R\r\x00 \x00 \x057\x03\x10 \x00 \x017\x03\x08B\x00!\x04\x0b \x00 \x047\x03\x00 \x02A\x10j$\x80\x80\x80\x80\x00\x0b(\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00A\x82\x80\x80\x80\x006\x02\x0c \x00(\x02\x0c\x1aA\x00-\x00\xb8\x80\xc0\x80\x00\x1a\x0bC\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00A\x81\x80\x80\x80\x006\x02\x0c \x00(\x02\x0c\x1a \x00A\x83\x80\x80\x80\x006\x02\x08 \x00(\x02\x08\x1aA\x00-\x00\xd4\x80\xc0\x80\x00\x1aA\x00-\x00\xc6\x80\xc0\x80\x00\x1a\x0bx\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00B\x02!\x03\x02@ \x01(\x02\x08\"\x04 \x01(\x02\x0cO\r\x00 \x02 \x01)\x03\x00 \x04\xadB \x86B\x04\x84\x10\x83\x80\x80\x80\x00\x10\x93\x80\x80\x80\x00 \x02)\x03\x00!\x03 \x00 \x02)\x03\x087\x03\x08 \x01 \x04A\x01j6\x02\x08\x0b \x00 \x037\x03\x00 \x02A\x10j$\x80\x80\x80\x80\x00\x0b\xd6\x04\x04\x02\x7f\x01~\x01\x7f\x05~#\x80\x80\x80\x80\x00A\xc0\x00k\"\x02$\x80\x80\x80\x80\x00 \x02 \x017\x03\x08 \x02 \x007\x03\x00 \x02A\x10j \x02\x10\x8d\x80\x80\x80\x00\x02@\x02@\x02@ \x02-\x00\x10\"\x03A\x04F\r\x00 \x02)\x03 !\x01 \x02)\x03\x18!\x04 \x021\x00\x11!\x00 \x02A\x10j \x02A\x08j\x10\x8d\x80\x80\x80\x00 \x02-\x00\x10\"\x05A\x04F\r\x00 \x02)\x03 !\x06 \x02)\x03\x18!\x07 \x021\x00\x11!\x08B\x00!\tB\x00!\n\x02@\x02@\x02@\x02@ \x03\x0e\x04\x05\x02\x01\x00\x05\x0b \x01\x10\x80\x80\x80\x80\x00!\x00 \x02A\x006\x028 \x02 \x017\x030 \x02 \x00B \x88>\x02\x02\x02\x14 \x02A\x18j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x03\x18\"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00\x02@ \x02)\x03 \"\x00\xa7A\xff\x01q\"\x04A\xca\x00F\r\x00 \x04A\x0eG\r\x01\x0b\x02@\x02@\x02@\x02@\x02@\x02@ \x00A\xd8\x81\xc0\x80\x00A\x02\x10\x90\x80\x80\x80\x00B \x88\xa7\x0e\x02\x01\x00\x06\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00A\x01K\r\x05 \x02A0j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x030\"\x00B\x02Q\r\x05 \x00\xa7A\x01q\r\x05 \x02A\x18j \x02)\x038\x10\x95\x80\x80\x80\x00 \x02(\x02\x18A\x01F\r\x05 \x01B\xff\x01\x83B\x04R\r\x05 \x02)\x03(\"\x00 \x01B\x84\x80\x80\x80p\x83\"\x01\x10\x86\x80\x80\x80\x00B\x01R\r\x01 \x00 \x01\x10\x87\x80\x80\x80\x00\"\x00B\xff\x01\x83B\xcb\x00R\r\x05 \x00\x10\x80\x80\x80\x80\x00!\x01 \x02A\x006\x02\x10 \x02 \x007\x03\x08 \x02 \x01B \x88>\x02\x14 \x02A\x18j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x03\x18\"\x00B\x02Q\r\x05 \x00\xa7A\x01q\r\x05\x02@ \x02)\x03 \"\x00\xa7A\xff\x01q\"\x04A\xca\x00F\r\x00 \x04A\x0eG\r\x06\x0b \x00A\xd8\x81\xc0\x80\x00A\x02\x10\x90\x80\x80\x80\x00B \x88\xa7\x0e\x02\x02\x03\x05\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00\r\x04 \x01B\xff\x01\x83B\x04R\r\x04\x0bB\x02!\x00\x0c\x02\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00\r\x02B\x00!\x00\x0c\x01\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00A\x01K\r\x01 \x02A0j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x030\"\x00B\x02Q\r\x01 \x00\xa7A\x01q\r\x01 \x02A\x18j \x02)\x038\x10\x95\x80\x80\x80\x00 \x02(\x02\x18\r\x01 \x02)\x03(!\x05 \x02)\x03 !\x03B\x01!\x00\x0b \x02A\x81\x80\x80\x80\x006\x02\x18 \x02(\x02\x18\x1a \x02A\x83\x80\x80\x80\x006\x02\x18 \x02(\x02\x18\x1aA\x00-\x00\xd4\x80\xc0\x80\x00\x1aA\x00-\x00\xc6\x80\xc0\x80\x00\x1aB\x02!\x01\x02@ \x00B\x02Q\r\x00\x02@ \x00\xa7A\x01qE\r\x00 \x02A\x18jA\xcc\x81\xc0\x80\x00A\t\x10\x9e\x80\x80\x80\x00 \x02(\x02\x18\r\x02 \x02)\x03 !\x00 \x02 \x057\x03 \x02 \x037\x03\x18 \x02 \x02A\x18j\x10\x9c\x80\x80\x80\x007\x03 \x02 \x007\x03\x18 \x02A\x18jA\x02\x10\x9f\x80\x80\x80\x00!\x01\x0c\x01\x0b \x02A\x18jA\xc0\x81\xc0\x80\x00A\x0c\x10\x9e\x80\x80\x80\x00 \x02(\x02\x18\r\x01 \x02 \x02)\x03 7\x03\x18 \x02A\x18jA\x01\x10\x9f\x80\x80\x80\x00!\x01\x0b \x02A\xc0\x00j$\x80\x80\x80\x80\x00 \x01\x0f\x0b\x00\x0b\xd6\x01\x02\x01~\x03\x7f\x02@\x02@ \x02A\tK\r\x00B\x00!\x03A\x00!\x04\x03@\x02@ \x04A\tG\r\x00 \x03B\x08\x86B\x0e\x84!\x03\x0c\x03\x0bA\x01!\x05\x02@ \x01 \x04j-\x00\x00\"\x06A\xdf\x00F\r\x00\x02@\x02@ \x06APjA\xff\x01qA\nI\r\x00 \x06A\xbf\x7fjA\xff\x01qA\x1aI\r\x01 \x06A\x9f\x7fjA\xff\x01qA\x1aO\r\x04 \x06AEj!\x05\x0c\x02\x0b \x06ARj!\x05\x0c\x01\x0b \x06AKj!\x05\x0b \x03B\x06\x86 \x05\xadB\xff\x01\x83\x84!\x03 \x04A\x01j!\x04\x0c\x00\x0b\x0b \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x89\x80\x80\x80\x00!\x03\x0b \x00B\x007\x03\x00 \x00 \x037\x03\x08\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x88\x80\x80\x80\x00\x0b\x03\x00\x00\x0b\x0b\xf2\x01\x01\x00A\x80\x80\xc0\x00\x0b\xe8\x01SpEcV1\x1c\x8f \x1a\xd0\xd2\x86\xb4SpEcV1\xdd\x0c\x96a6\xac\r%SpEcV1\xfb(\xa1?\xa9-o\x1cSpEcV1$\x1a\xda\xa8\x13]\x1e\x1cSpEcV1\x13\x1c\x19\xbe\xa5|\xff&SpEcV1\xba6\xa4xH{=\xeeSpEcV1A@\x81\x0c\x80\x81-~UdtAUdtBUdtCUdtD\x00\x00b\x00\x10\x00\x04\x00\x00\x00f\x00\x10\x00\x04\x00\x00\x00j\x00\x10\x00\x04\x00\x00\x00n\x00\x10\x00\x04\x00\x00\x00abc\x00\x94\x00\x10\x00\x01\x00\x00\x00\x95\x00\x10\x00\x01\x00\x00\x00\x96\x00\x10\x00\x01\x00\x00\x00\x94\x00\x10\x00\x01\x00\x00\x00\x95\x00\x10\x00\x01\x00\x00\x00NotRecursiveRecursive\x00\x00\x00\xc0\x00\x10\x00\x0c\x00\x00\x00\xcc\x00\x10\x00\t\x00\x00\x00\x00\x87!\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03add\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x11test_udt::UdtEnum\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x11test_udt::UdtEnum\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11test_udt::UdtEnum\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04UdtA\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04UdtB\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x13test_udt::UdtStruct\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04UdtC\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x12test_udt::UdtEnum2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04UdtD\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x12test_udt::UdtTuple\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12test_udt::UdtEnum2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01A\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x01B\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12test_udt::UdtTuple\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x03\xea\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13test_udt::UdtStruct\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01c\x00\x00\x00\x00\x00\x03\xea\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\trecursive\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x16test_udt::UdtRecursive\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe8\x00\x00\x07\xd0\x00\x00\x00\x16test_udt::UdtRecursive\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16test_udt::UdtRecursive\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x16test_udt::UdtRecursive\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17test_udt::RecursiveEnum\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cNotRecursive\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\tRecursive\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x19test_udt::RecursiveToEnum\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19test_udt::RecursiveToEnum\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x03\xec\x00\x00\x00\x04\x00\x00\x07\xd0\x00\x00\x00\x17test_udt::RecursiveEnum\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0erecursive_enum\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x17test_udt::RecursiveEnum\x00\x00\x00\x00\x00\x00\x00\x00\x03key\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x03\xe8\x00\x00\x07\xd0\x00\x00\x00\x17test_udt::RecursiveEnum\x00\x00\x00\x00\x03\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x1asoroban_sdk::auth::Context\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00(soroban_sdk::auth::SubContractInvocation\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x00\"soroban_sdk::auth::ContractContext\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00+soroban_sdk::auth::InvokerContractAuthEntry\x00\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00+soroban_sdk::auth::InvokerContractAuthEntry\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00(soroban_sdk::auth::SubContractInvocation\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00.soroban_sdk::auth::CreateContractHostFnContext\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00=soroban_sdk::auth::CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00%soroban_sdk::auth::ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 soroban_sdk::address::Executable\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; pub trait Contract { fn add(env: soroban_sdk::Env, a: UdtEnum, b: UdtEnum) -> i64; fn recursive(env: soroban_sdk::Env, a: UdtRecursive) -> Option; @@ -4951,6 +5017,12 @@ mod test_with_wasm { } } } + impl UdtTuple { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::test_with_wasm::contract::UdtTuple" + } + } pub static __SPEC_XDR_TYPE_UDTTUPLE: [u8; UdtTuple::__SPEC_XDR_VIEW.const_xdr_len()] = UdtTuple::spec_xdr(); impl UdtTuple { @@ -4959,7 +5031,7 @@ mod test_with_wasm { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UdtTuple"), + name: soroban_sdk::xdr::StringMView::new_str(UdtTuple::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -5414,6 +5486,12 @@ mod test_with_wasm { } } } + impl UdtStruct { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::test_with_wasm::contract::UdtStruct" + } + } pub static __SPEC_XDR_TYPE_UDTSTRUCT: [u8; UdtStruct::__SPEC_XDR_VIEW.const_xdr_len()] = UdtStruct::spec_xdr(); impl UdtStruct { @@ -5422,7 +5500,7 @@ mod test_with_wasm { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UdtStruct"), + name: soroban_sdk::xdr::StringMView::new_str(UdtStruct::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -5955,6 +6033,12 @@ mod test_with_wasm { } } } + impl UdtRecursive { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::test_with_wasm::contract::UdtRecursive" + } + } pub static __SPEC_XDR_TYPE_UDTRECURSIVE: [u8; UdtRecursive::__SPEC_XDR_VIEW .const_xdr_len()] = UdtRecursive::spec_xdr(); impl UdtRecursive { @@ -5963,7 +6047,7 @@ mod test_with_wasm { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UdtRecursive"), + name: soroban_sdk::xdr::StringMView::new_str(UdtRecursive::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -5977,8 +6061,8 @@ mod test_with_wasm { &soroban_sdk::xdr::ScSpecTypeVecView { element_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"UdtRecursive", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -6446,6 +6530,12 @@ mod test_with_wasm { } } } + impl RecursiveToEnum { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::test_with_wasm::contract::RecursiveToEnum" + } + } pub static __SPEC_XDR_TYPE_RECURSIVETOENUM: [u8; RecursiveToEnum::__SPEC_XDR_VIEW .const_xdr_len()] = RecursiveToEnum::spec_xdr(); impl RecursiveToEnum { @@ -6454,7 +6544,9 @@ mod test_with_wasm { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"RecursiveToEnum"), + name: soroban_sdk::xdr::StringMView::new_str( + RecursiveToEnum::spec_type_name(), + ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -6469,8 +6561,8 @@ mod test_with_wasm { key_type: &soroban_sdk::xdr::ScSpecTypeDefView::U32, value_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"RecursiveEnum", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -6962,6 +7054,12 @@ mod test_with_wasm { } } } + impl ContractContext { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::test_with_wasm::contract::ContractContext" + } + } pub static __SPEC_XDR_TYPE_CONTRACTCONTEXT: [u8; ContractContext::__SPEC_XDR_VIEW .const_xdr_len()] = ContractContext::spec_xdr(); impl ContractContext { @@ -6970,7 +7068,9 @@ mod test_with_wasm { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"ContractContext"), + name: soroban_sdk::xdr::StringMView::new_str( + ContractContext::spec_type_name(), + ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -7530,6 +7630,12 @@ mod test_with_wasm { } } } + impl SubContractInvocation { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::test_with_wasm::contract::SubContractInvocation" + } + } pub static __SPEC_XDR_TYPE_SUBCONTRACTINVOCATION: [u8; SubContractInvocation::__SPEC_XDR_VIEW.const_xdr_len()] = SubContractInvocation::spec_xdr(); @@ -7539,15 +7645,17 @@ mod test_with_wasm { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"SubContractInvocation"), + name: soroban_sdk::xdr::StringMView::new_str( + SubContractInvocation::spec_type_name(), + ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), name: soroban_sdk::xdr::StringMView::new(b"context"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"ContractContext", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -7559,8 +7667,8 @@ mod test_with_wasm { &soroban_sdk::xdr::ScSpecTypeVecView { element_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"InvokerContractAuthEntry", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -8045,6 +8153,12 @@ mod test_with_wasm { } } } + impl CreateContractHostFnContext { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::test_with_wasm::contract::CreateContractHostFnContext" + } + } pub static __SPEC_XDR_TYPE_CREATECONTRACTHOSTFNCONTEXT: [u8; CreateContractHostFnContext::__SPEC_XDR_VIEW.const_xdr_len()] = CreateContractHostFnContext::spec_xdr(); @@ -8054,15 +8168,17 @@ mod test_with_wasm { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"CreateContractHostFnContext"), + name: soroban_sdk::xdr::StringMView::new_str( + CreateContractHostFnContext::spec_type_name(), + ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), name: soroban_sdk::xdr::StringMView::new(b"executable"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"ContractExecutable", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -8584,6 +8700,12 @@ mod test_with_wasm { } } } + impl CreateContractWithConstructorHostFnContext { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::test_with_wasm::contract::CreateContractWithConstructorHostFnContext" + } + } pub static __SPEC_XDR_TYPE_CREATECONTRACTWITHCONSTRUCTORHOSTFNCONTEXT: [u8; CreateContractWithConstructorHostFnContext::__SPEC_XDR_VIEW.const_xdr_len()] = CreateContractWithConstructorHostFnContext::spec_xdr(); @@ -8593,8 +8715,8 @@ mod test_with_wasm { soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithConstructorHostFnContext", + name: soroban_sdk::xdr::StringMView::new_str( + CreateContractWithConstructorHostFnContext::spec_type_name(), ), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { @@ -8611,8 +8733,8 @@ mod test_with_wasm { name: soroban_sdk::xdr::StringMView::new(b"executable"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"ContractExecutable", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -9238,6 +9360,12 @@ mod test_with_wasm { } } } + impl UdtEnum { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::test_with_wasm::contract::UdtEnum" + } + } pub static __SPEC_XDR_TYPE_UDTENUM: [u8; UdtEnum::__SPEC_XDR_VIEW.const_xdr_len()] = UdtEnum::spec_xdr(); impl UdtEnum { @@ -9246,7 +9374,7 @@ mod test_with_wasm { soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UdtEnum"), + name: soroban_sdk::xdr::StringMView::new_str(UdtEnum::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::VoidV0( soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0View { @@ -9261,8 +9389,8 @@ mod test_with_wasm { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"UdtStruct", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -9276,8 +9404,8 @@ mod test_with_wasm { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"UdtEnum2", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -9291,8 +9419,8 @@ mod test_with_wasm { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"UdtTuple", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -9990,6 +10118,12 @@ mod test_with_wasm { } } } + impl RecursiveEnum { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::test_with_wasm::contract::RecursiveEnum" + } + } pub static __SPEC_XDR_TYPE_RECURSIVEENUM: [u8; RecursiveEnum::__SPEC_XDR_VIEW .const_xdr_len()] = RecursiveEnum::spec_xdr(); impl RecursiveEnum { @@ -9998,7 +10132,9 @@ mod test_with_wasm { soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"RecursiveEnum"), + name: soroban_sdk::xdr::StringMView::new_str( + RecursiveEnum::spec_type_name(), + ), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::VoidV0( soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0View { @@ -10013,8 +10149,8 @@ mod test_with_wasm { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"RecursiveToEnum", + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), }, ), @@ -10608,68 +10744,67 @@ mod test_with_wasm { } } } + impl Context { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::test_with_wasm::contract::Context" + } + } pub static __SPEC_XDR_TYPE_CONTEXT: [u8; Context::__SPEC_XDR_VIEW.const_xdr_len()] = Context::spec_xdr(); impl Context { - const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = - soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0( - soroban_sdk::xdr::ScSpecUdtUnionV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Context"), - cases: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Contract"), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"ContractContext", - ), - }, + const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + lib: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new_str(Context::spec_type_name()), + cases: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new(b"Contract"), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), - ]), - }, + }), + ], ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractHostFn", - ), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractHostFnContext", - ), - }, + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), - ]), - }, + }), + ], ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithCtorHostFn", - ), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithConstructorHostFnContext", - ), - }, + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractWithCtorHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), - ]), - }, + }), + ], ), - ]), - }, - ); + }), + ], + ), + }); pub const fn spec_xdr() -> [u8; Context::__SPEC_XDR_VIEW.const_xdr_len()] { Context::__SPEC_XDR_VIEW.const_to_xdr() } @@ -11339,6 +11474,12 @@ mod test_with_wasm { } } } + impl ContractExecutable { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::test_with_wasm::contract::ContractExecutable" + } + } pub static __SPEC_XDR_TYPE_CONTRACTEXECUTABLE: [u8; ContractExecutable::__SPEC_XDR_VIEW .const_xdr_len()] = ContractExecutable::spec_xdr(); impl ContractExecutable { @@ -11347,7 +11488,9 @@ mod test_with_wasm { soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"ContractExecutable"), + name: soroban_sdk::xdr::StringMView::new_str( + ContractExecutable::spec_type_name(), + ), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { @@ -11904,69 +12047,70 @@ mod test_with_wasm { } } } + impl InvokerContractAuthEntry { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::test_with_wasm::contract::InvokerContractAuthEntry" + } + } pub static __SPEC_XDR_TYPE_INVOKERCONTRACTAUTHENTRY: [u8; InvokerContractAuthEntry::__SPEC_XDR_VIEW.const_xdr_len()] = InvokerContractAuthEntry::spec_xdr(); impl InvokerContractAuthEntry { - const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = - soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0( - soroban_sdk::xdr::ScSpecUdtUnionV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"InvokerContractAuthEntry"), - cases: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Contract"), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"SubContractInvocation", - ), - }, + const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + lib: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new_str( + InvokerContractAuthEntry::spec_type_name(), + ), + cases: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new(b"Contract"), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), - ]), - }, + }), + ], ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractHostFn", - ), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractHostFnContext", - ), - }, + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), - ]), - }, + }), + ], ), - soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( - soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { - doc: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithCtorHostFn", - ), - type_: soroban_sdk::xdr::VecMView::new(&[ - soroban_sdk::xdr::ScSpecTypeDefView::Udt( - soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new( - b"CreateContractWithConstructorHostFnContext", - ), - }, + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { + doc: soroban_sdk::xdr::StringMView::new(b""), + name: soroban_sdk::xdr::StringMView::new( + b"CreateContractWithCtorHostFn", + ), + type_: soroban_sdk::xdr::VecMView::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefView::Udt(soroban_sdk::xdr::ScSpecTypeUdtView { + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), ), - ]), - }, + }), + ], ), - ]), - }, - ); + }), + ], + ), + }); pub const fn spec_xdr( ) -> [u8; InvokerContractAuthEntry::__SPEC_XDR_VIEW.const_xdr_len()] { InvokerContractAuthEntry::__SPEC_XDR_VIEW.const_to_xdr() @@ -12699,6 +12843,12 @@ mod test_with_wasm { } } } + impl Executable { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::test_with_wasm::contract::Executable" + } + } pub static __SPEC_XDR_TYPE_EXECUTABLE: [u8; Executable::__SPEC_XDR_VIEW.const_xdr_len()] = Executable::spec_xdr(); impl Executable { @@ -12707,7 +12857,7 @@ mod test_with_wasm { soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Executable"), + name: soroban_sdk::xdr::StringMView::new_str(Executable::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::TupleV0( soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0View { @@ -13288,6 +13438,12 @@ mod test_with_wasm { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl UdtEnum2 { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::test_with_wasm::contract::UdtEnum2" + } + } pub static __SPEC_XDR_TYPE_UDTENUM2: [u8; UdtEnum2::__SPEC_XDR_VIEW.const_xdr_len()] = UdtEnum2::spec_xdr(); impl UdtEnum2 { @@ -13296,7 +13452,7 @@ mod test_with_wasm { soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UdtEnum2"), + name: soroban_sdk::xdr::StringMView::new_str(UdtEnum2::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), diff --git a/tests-expanded/test_udt_wasm32v1-none.rs b/tests-expanded/test_udt_wasm32v1-none.rs index 93314821d..d3f78e4b9 100644 --- a/tests-expanded/test_udt_wasm32v1-none.rs +++ b/tests-expanded/test_udt_wasm32v1-none.rs @@ -49,6 +49,12 @@ impl ::core::cmp::PartialEq for UdtEnum2 { __self_discr == __arg1_discr } } +impl UdtEnum2 { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::UdtEnum2" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_UDTENUM2: [u8; UdtEnum2::__SPEC_XDR_VIEW.const_xdr_len()] = UdtEnum2::spec_xdr(); @@ -57,7 +63,7 @@ impl UdtEnum2 { soroban_sdk::xdr::ScSpecEntryView::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UdtEnum2"), + name: soroban_sdk::xdr::StringMView::new_str(UdtEnum2::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtEnumCaseV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -188,6 +194,12 @@ impl ::core::cmp::PartialEq for UdtEnum { } } } +impl UdtEnum { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::UdtEnum" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_UDTENUM: [u8; UdtEnum::__SPEC_XDR_VIEW.const_xdr_len()] = UdtEnum::spec_xdr(); @@ -196,7 +208,7 @@ impl UdtEnum { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UdtEnum"), + name: soroban_sdk::xdr::StringMView::new_str(UdtEnum::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::VoidV0( soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0View { @@ -211,7 +223,9 @@ impl UdtEnum { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UdtStruct"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), ]), @@ -224,7 +238,9 @@ impl UdtEnum { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UdtEnum2"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), ]), @@ -237,7 +253,9 @@ impl UdtEnum { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UdtTuple"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), ]), @@ -407,6 +425,12 @@ impl ::core::cmp::PartialEq for UdtTuple { self.0 == other.0 && self.1 == other.1 } } +impl UdtTuple { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::UdtTuple" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_UDTTUPLE: [u8; UdtTuple::__SPEC_XDR_VIEW.const_xdr_len()] = UdtTuple::spec_xdr(); @@ -415,7 +439,7 @@ impl UdtTuple { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UdtTuple"), + name: soroban_sdk::xdr::StringMView::new_str(UdtTuple::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -546,6 +570,12 @@ impl ::core::cmp::PartialEq for UdtStruct { self.a == other.a && self.b == other.b && self.c == other.c } } +impl UdtStruct { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::UdtStruct" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_UDTSTRUCT: [u8; UdtStruct::__SPEC_XDR_VIEW.const_xdr_len()] = UdtStruct::spec_xdr(); @@ -554,7 +584,7 @@ impl UdtStruct { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UdtStruct"), + name: soroban_sdk::xdr::StringMView::new_str(UdtStruct::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -695,6 +725,12 @@ impl ::core::cmp::PartialEq for UdtRecursive { self.a == other.a && self.b == other.b } } +impl UdtRecursive { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::UdtRecursive" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_UDTRECURSIVE: [u8; UdtRecursive::__SPEC_XDR_VIEW.const_xdr_len()] = UdtRecursive::spec_xdr(); @@ -703,7 +739,7 @@ impl UdtRecursive { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"UdtRecursive"), + name: soroban_sdk::xdr::StringMView::new_str(UdtRecursive::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -717,7 +753,9 @@ impl UdtRecursive { &soroban_sdk::xdr::ScSpecTypeVecView { element_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UdtRecursive"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -838,6 +876,12 @@ impl ::core::cmp::PartialEq for RecursiveToEnum { self.a == other.a && self.b == other.b } } +impl RecursiveToEnum { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::RecursiveToEnum" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_RECURSIVETOENUM: [u8; RecursiveToEnum::__SPEC_XDR_VIEW.const_xdr_len()] = RecursiveToEnum::spec_xdr(); @@ -846,7 +890,7 @@ impl RecursiveToEnum { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"RecursiveToEnum"), + name: soroban_sdk::xdr::StringMView::new_str(RecursiveToEnum::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), @@ -861,7 +905,9 @@ impl RecursiveToEnum { key_type: &soroban_sdk::xdr::ScSpecTypeDefView::U32, value_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"RecursiveEnum"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -989,6 +1035,12 @@ impl ::core::cmp::PartialEq for RecursiveEnum { } } } +impl RecursiveEnum { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_udt::RecursiveEnum" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_RECURSIVEENUM: [u8; RecursiveEnum::__SPEC_XDR_VIEW.const_xdr_len()] = RecursiveEnum::spec_xdr(); @@ -997,7 +1049,7 @@ impl RecursiveEnum { soroban_sdk::xdr::ScSpecEntryView::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"RecursiveEnum"), + name: soroban_sdk::xdr::StringMView::new_str(RecursiveEnum::spec_type_name()), cases: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtUnionCaseV0View::VoidV0( soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0View { @@ -1012,7 +1064,9 @@ impl RecursiveEnum { type_: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"RecursiveToEnum"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), ]), @@ -1180,7 +1234,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"a"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UdtEnum"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -1189,7 +1245,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"b"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UdtEnum"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -1223,7 +1281,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"a"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UdtRecursive"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -1233,7 +1293,9 @@ impl Contract { &soroban_sdk::xdr::ScSpecTypeOptionView { value_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"UdtRecursive"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -1269,7 +1331,9 @@ impl Contract { name: soroban_sdk::xdr::StringMView::new(b"a"), type_: soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"RecursiveEnum"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, @@ -1286,7 +1350,9 @@ impl Contract { &soroban_sdk::xdr::ScSpecTypeOptionView { value_type: &soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"RecursiveEnum"), + name: soroban_sdk::xdr::StringMView::new_str( + ::spec_type_name(), + ), }, ), }, diff --git a/tests-expanded/test_workspace_contract_tests.rs b/tests-expanded/test_workspace_contract_tests.rs index ae0008891..54da69ee4 100644 --- a/tests-expanded/test_workspace_contract_tests.rs +++ b/tests-expanded/test_workspace_contract_tests.rs @@ -160,7 +160,7 @@ impl Contract { inputs: soroban_sdk::xdr::VecMView::new(&[]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"Value"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); diff --git a/tests-expanded/test_workspace_contract_wasm32v1-none.rs b/tests-expanded/test_workspace_contract_wasm32v1-none.rs index 62d1bbf28..d7130e0aa 100644 --- a/tests-expanded/test_workspace_contract_wasm32v1-none.rs +++ b/tests-expanded/test_workspace_contract_wasm32v1-none.rs @@ -49,7 +49,7 @@ impl Contract { inputs: soroban_sdk::xdr::VecMView::new(&[]), outputs: soroban_sdk::xdr::VecMView::new(&[soroban_sdk::xdr::ScSpecTypeDefView::Udt( soroban_sdk::xdr::ScSpecTypeUdtView { - name: soroban_sdk::xdr::StringMView::new(b"Value"), + name: soroban_sdk::xdr::StringMView::new_str(::spec_type_name()), }, )]), }); diff --git a/tests-expanded/test_workspace_lib_tests.rs b/tests-expanded/test_workspace_lib_tests.rs index 1d8a878dd..757f09314 100644 --- a/tests-expanded/test_workspace_lib_tests.rs +++ b/tests-expanded/test_workspace_lib_tests.rs @@ -33,13 +33,19 @@ impl ::core::cmp::PartialEq for Value { self.value == other.value } } +impl Value { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_workspace_lib::Value" + } +} pub static __SPEC_XDR_TYPE_VALUE: [u8; Value::__SPEC_XDR_VIEW.const_xdr_len()] = Value::spec_xdr(); impl Value { const __SPEC_XDR_VIEW: soroban_sdk::xdr::ScSpecEntryView<'static> = soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Value"), + name: soroban_sdk::xdr::StringMView::new_str(Value::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), diff --git a/tests-expanded/test_workspace_lib_wasm32v1-none.rs b/tests-expanded/test_workspace_lib_wasm32v1-none.rs index e4336695b..8902e089f 100644 --- a/tests-expanded/test_workspace_lib_wasm32v1-none.rs +++ b/tests-expanded/test_workspace_lib_wasm32v1-none.rs @@ -33,6 +33,12 @@ impl ::core::cmp::PartialEq for Value { self.value == other.value } } +impl Value { + #[doc(hidden)] + pub const fn spec_type_name() -> &'static str { + "test_workspace_lib::Value" + } +} #[link_section = "contractspecv0"] pub static __SPEC_XDR_TYPE_VALUE: [u8; Value::__SPEC_XDR_VIEW.const_xdr_len()] = Value::spec_xdr(); impl Value { @@ -40,7 +46,7 @@ impl Value { soroban_sdk::xdr::ScSpecEntryView::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0View { doc: soroban_sdk::xdr::StringMView::new(b""), lib: soroban_sdk::xdr::StringMView::new(b""), - name: soroban_sdk::xdr::StringMView::new(b"Value"), + name: soroban_sdk::xdr::StringMView::new_str(Value::spec_type_name()), fields: soroban_sdk::xdr::VecMView::new(&[ soroban_sdk::xdr::ScSpecUdtStructFieldV0View { doc: soroban_sdk::xdr::StringMView::new(b""), diff --git a/tests/associated_type_contracttrait/test_snapshots/test_with_wasm/test_exec.1.json b/tests/associated_type_contracttrait/test_snapshots/test_with_wasm/test_exec.1.json index 645134937..024e80f5c 100644 --- a/tests/associated_type_contracttrait/test_snapshots/test_with_wasm/test_exec.1.json +++ b/tests/associated_type_contracttrait/test_snapshots/test_with_wasm/test_exec.1.json @@ -18,7 +18,7 @@ } }, "executable": { - "wasm": "a75ac3b01481367449e27069683938c155d5194a242149d76eca2e3a349bb13d" + "wasm": "252d2aa8bbe279e48eb7bc3bef078770c21534a9f9a51f8308f3e7d0e9ca44de" }, "constructor_args": [] } @@ -72,7 +72,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "a75ac3b01481367449e27069683938c155d5194a242149d76eca2e3a349bb13d" + "wasm": "252d2aa8bbe279e48eb7bc3bef078770c21534a9f9a51f8308f3e7d0e9ca44de" }, "storage": null } @@ -106,8 +106,8 @@ } } }, - "hash": "a75ac3b01481367449e27069683938c155d5194a242149d76eca2e3a349bb13d", - "code": "0061736d0100000001110360027e7e017e6000017e60027f7f017e02070101620169000003040301020105030100110621047f01418080c0000b7f00418f80c0000b7f00418f80c0000b7f00419080c0000b073806066d656d6f72790200046578656300010565786563320003015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030a3e031000418080c0800041071082808080000b1a002000ad4220864204842001ad4220864204841080808080000b1000418780c0800041081082808080000b0b180100418080c0000b0f64656661756c7464656661756c743200df150e636f6e747261637473706563763000000000000000000000000465786563000000000000000100000010000000000000000000000005657865633200000000000000000000010000001000000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d00000000f436f6e7472616374436f6e7465787400000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e74657874000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d00000000f436f6e7472616374436f6e7465787400000000000000000f7375625f696e766f636174696f6e7300000003ea000007d000000018496e766f6b6572436f6e747261637441757468456e747279000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000015537562436f6e7472616374496e766f636174696f6e0000000000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e7465787400000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001c00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + "hash": "252d2aa8bbe279e48eb7bc3bef078770c21534a9f9a51f8308f3e7d0e9ca44de", + "code": "0061736d0100000001110360027e7e017e6000017e60027f7f017e02070101620169000003040301020105030100110621047f01418080c0000b7f00418f80c0000b7f00418f80c0000b7f00419080c0000b073806066d656d6f72790200046578656300010565786563320003015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030a3e031000418080c0800041071082808080000b1a002000ad4220864204842001ad4220864204841080808080000b1000418780c0800041081082808080000b0b180100418080c0000b0f64656661756c7464656661756c743200bf180e636f6e747261637473706563763000000000000000000000000465786563000000000000000100000010000000000000000000000005657865633200000000000000000000010000001000000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e00000000000000001a736f726f62616e5f73646b3a3a617574683a3a436f6e746578740000000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e746578740000000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e7465787400000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e0000000000000000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e74657874000000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000028736f726f62616e5f73646b3a3a617574683a3a537562436f6e7472616374496e766f636174696f6e000000020000000000000007636f6e7465787400000007d000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e746578740000000000000000000f7375625f696e766f636174696f6e7300000003ea000007d00000002b736f726f62616e5f73646b3a3a617574683a3a496e766f6b6572436f6e747261637441757468456e74727900000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e00000000000000002b736f726f62616e5f73646b3a3a617574683a3a496e766f6b6572436f6e747261637441757468456e74727900000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000028736f726f62616e5f73646b3a3a617574683a3a537562436f6e7472616374496e766f636174696f6e0000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e746578740000000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e74657874000000000002000000000000000a65786563757461626c650000000007d000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000000000000473616c74000003ee0000002000000002000000000000000000000020736f726f62616e5f73646b3a3a616464726573733a3a45786563757461626c65000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001c00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" } }, "ext": "v0" diff --git a/tests/spec_shaking_v2/src/test.rs b/tests/spec_shaking_v2/src/test.rs index 0892c22cd..239737e9c 100644 --- a/tests/spec_shaking_v2/src/test.rs +++ b/tests/spec_shaking_v2/src/test.rs @@ -199,13 +199,21 @@ fn test_spec_shaking_v2() { } /// Extract the name from a non-function spec entry. +/// The simple name of the type or event the entry defines. +/// +/// A user-defined type is named in the spec by its fully qualified name +/// (`mycrate::mymod::MyType`); this test asserts which types survive shaking, +/// so it names each entry by the last segment. fn entry_name(entry: &ScSpecEntry) -> Option { + let last_segment = |name: std::string::String| -> std::string::String { + name.rsplit("::").next().unwrap_or(&name).into() + }; match entry { ScSpecEntry::FunctionV0(_) => None, - ScSpecEntry::UdtStructV0(s) => Some(s.name.to_utf8_string_lossy()), - ScSpecEntry::UdtUnionV0(u) => Some(u.name.to_utf8_string_lossy()), - ScSpecEntry::UdtEnumV0(e) => Some(e.name.to_utf8_string_lossy()), - ScSpecEntry::UdtErrorEnumV0(e) => Some(e.name.to_utf8_string_lossy()), - ScSpecEntry::EventV0(e) => Some(e.name.to_utf8_string_lossy()), + ScSpecEntry::UdtStructV0(s) => Some(last_segment(s.name.to_utf8_string_lossy())), + ScSpecEntry::UdtUnionV0(u) => Some(last_segment(u.name.to_utf8_string_lossy())), + ScSpecEntry::UdtEnumV0(e) => Some(last_segment(e.name.to_utf8_string_lossy())), + ScSpecEntry::UdtErrorEnumV0(e) => Some(last_segment(e.name.to_utf8_string_lossy())), + ScSpecEntry::EventV0(e) => Some(last_segment(e.name.to_utf8_string_lossy())), } } diff --git a/tests/tuples/test_snapshots/test/test_wasm_tuple1.1.json b/tests/tuples/test_snapshots/test/test_wasm_tuple1.1.json index b4ec55943..813296e10 100644 --- a/tests/tuples/test_snapshots/test/test_wasm_tuple1.1.json +++ b/tests/tuples/test_snapshots/test/test_wasm_tuple1.1.json @@ -18,7 +18,7 @@ } }, "executable": { - "wasm": "cfdb45c1ae815eefc3688b2ec047d40092559aa99fb3c2ade540dc06952837de" + "wasm": "6ff664e1acc52c3b4cba604dacd77a628b920e0f86f62fc869bac114d2a786b4" }, "constructor_args": [] } @@ -71,7 +71,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "cfdb45c1ae815eefc3688b2ec047d40092559aa99fb3c2ade540dc06952837de" + "wasm": "6ff664e1acc52c3b4cba604dacd77a628b920e0f86f62fc869bac114d2a786b4" }, "storage": null } @@ -105,8 +105,8 @@ } } }, - "hash": "cfdb45c1ae815eefc3688b2ec047d40092559aa99fb3c2ade540dc06952837de", - "code": "0061736d01000000011f0560017e017e60027e7e017e60037e7e7e017e60037e7f7f0060027f7f017e021904016901320000016901310000017601670001017601680002030605000304000005030100100621047f01418080c0000b7f00418080c0000b7f00418080c0000b7f00418080c0000b074507066d656d6f72790200067475706c65310004067475706c6532000707766f69645f666e0008015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030ac803057801017f23808080800041106b220124808080800002400240200042ff018342cb00520d00200142023703082000200141086a41011085808080002001290308220042ff01834204510d010b000b2001200042848080807083370308200141086a41011086808080002100200141106a24808080800020000b1d0020002001ad4220864204842002ad4220864204841083808080001a0b1a002000ad4220864204842001ad4220864204841082808080000bff0102027f017e23808080800041106b2201248080808000024002400240200042ff018342cb00520d00410021020240034020024110460d01200120026a4202370300200241086a21020c000b0b2000200141021085808080002001290300220342ff01834204520d0020012903082200a741ff0171220241c100460d0120024107470d00200042088721000c020b000b200010808080800021000b0240024020004280808080808080c0007c42ffffffffffffffff00560d00200042088642078421000c010b200010818080800021000b200120003703082001200342848080807083370300200141021086808080002100200141106a24808080800020000b13000240200042ff01834202510d00000b42020b0b090100418080c0000b0000df160e636f6e74726163747370656376300000000000000000000000067475706c6531000000000001000000000000000361726700000003ed000000010000000400000001000003ed00000001000000040000000000000000000000067475706c6532000000000001000000000000000361726700000003ed00000002000000040000000700000001000003ed000000020000000400000007000000000000000000000007766f69645f666e00000000010000000000000008766f69645f61726700000002000000010000000200000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d00000000f436f6e7472616374436f6e7465787400000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e74657874000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d00000000f436f6e7472616374436f6e7465787400000000000000000f7375625f696e766f636174696f6e7300000003ea000007d000000018496e766f6b6572436f6e747261637441757468456e747279000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000015537562436f6e7472616374496e766f636174696f6e0000000000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e7465787400000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001c00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + "hash": "6ff664e1acc52c3b4cba604dacd77a628b920e0f86f62fc869bac114d2a786b4", + "code": "0061736d01000000011f0560017e017e60027e7e017e60037e7e7e017e60037e7f7f0060027f7f017e021904016901320000016901310000017601670001017601680002030605000304000005030100100621047f01418080c0000b7f00418080c0000b7f00418080c0000b7f00418080c0000b074507066d656d6f72790200067475706c65310004067475706c6532000707766f69645f666e0008015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030ac803057801017f23808080800041106b220124808080800002400240200042ff018342cb00520d00200142023703082000200141086a41011085808080002001290308220042ff01834204510d010b000b2001200042848080807083370308200141086a41011086808080002100200141106a24808080800020000b1d0020002001ad4220864204842002ad4220864204841083808080001a0b1a002000ad4220864204842001ad4220864204841082808080000bff0102027f017e23808080800041106b2201248080808000024002400240200042ff018342cb00520d00410021020240034020024110460d01200120026a4202370300200241086a21020c000b0b2000200141021085808080002001290300220342ff01834204520d0020012903082200a741ff0171220241c100460d0120024107470d00200042088721000c020b000b200010808080800021000b0240024020004280808080808080c0007c42ffffffffffffffff00560d00200042088642078421000c010b200010818080800021000b200120003703082001200342848080807083370300200141021086808080002100200141106a24808080800020000b13000240200042ff01834202510d00000b42020b0b090100418080c0000b0000bf190e636f6e74726163747370656376300000000000000000000000067475706c6531000000000001000000000000000361726700000003ed000000010000000400000001000003ed00000001000000040000000000000000000000067475706c6532000000000001000000000000000361726700000003ed00000002000000040000000700000001000003ed000000020000000400000007000000000000000000000007766f69645f666e00000000010000000000000008766f69645f61726700000002000000010000000200000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e00000000000000001a736f726f62616e5f73646b3a3a617574683a3a436f6e746578740000000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e746578740000000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e7465787400000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e0000000000000000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e74657874000000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000028736f726f62616e5f73646b3a3a617574683a3a537562436f6e7472616374496e766f636174696f6e000000020000000000000007636f6e7465787400000007d000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e746578740000000000000000000f7375625f696e766f636174696f6e7300000003ea000007d00000002b736f726f62616e5f73646b3a3a617574683a3a496e766f6b6572436f6e747261637441757468456e74727900000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e00000000000000002b736f726f62616e5f73646b3a3a617574683a3a496e766f6b6572436f6e747261637441757468456e74727900000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000028736f726f62616e5f73646b3a3a617574683a3a537562436f6e7472616374496e766f636174696f6e0000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e746578740000000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e74657874000000000002000000000000000a65786563757461626c650000000007d000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000000000000473616c74000003ee0000002000000002000000000000000000000020736f726f62616e5f73646b3a3a616464726573733a3a45786563757461626c65000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001c00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" } }, "ext": "v0" diff --git a/tests/tuples/test_snapshots/test/test_wasm_tuple2.1.json b/tests/tuples/test_snapshots/test/test_wasm_tuple2.1.json index b4ec55943..813296e10 100644 --- a/tests/tuples/test_snapshots/test/test_wasm_tuple2.1.json +++ b/tests/tuples/test_snapshots/test/test_wasm_tuple2.1.json @@ -18,7 +18,7 @@ } }, "executable": { - "wasm": "cfdb45c1ae815eefc3688b2ec047d40092559aa99fb3c2ade540dc06952837de" + "wasm": "6ff664e1acc52c3b4cba604dacd77a628b920e0f86f62fc869bac114d2a786b4" }, "constructor_args": [] } @@ -71,7 +71,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "cfdb45c1ae815eefc3688b2ec047d40092559aa99fb3c2ade540dc06952837de" + "wasm": "6ff664e1acc52c3b4cba604dacd77a628b920e0f86f62fc869bac114d2a786b4" }, "storage": null } @@ -105,8 +105,8 @@ } } }, - "hash": "cfdb45c1ae815eefc3688b2ec047d40092559aa99fb3c2ade540dc06952837de", - "code": "0061736d01000000011f0560017e017e60027e7e017e60037e7e7e017e60037e7f7f0060027f7f017e021904016901320000016901310000017601670001017601680002030605000304000005030100100621047f01418080c0000b7f00418080c0000b7f00418080c0000b7f00418080c0000b074507066d656d6f72790200067475706c65310004067475706c6532000707766f69645f666e0008015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030ac803057801017f23808080800041106b220124808080800002400240200042ff018342cb00520d00200142023703082000200141086a41011085808080002001290308220042ff01834204510d010b000b2001200042848080807083370308200141086a41011086808080002100200141106a24808080800020000b1d0020002001ad4220864204842002ad4220864204841083808080001a0b1a002000ad4220864204842001ad4220864204841082808080000bff0102027f017e23808080800041106b2201248080808000024002400240200042ff018342cb00520d00410021020240034020024110460d01200120026a4202370300200241086a21020c000b0b2000200141021085808080002001290300220342ff01834204520d0020012903082200a741ff0171220241c100460d0120024107470d00200042088721000c020b000b200010808080800021000b0240024020004280808080808080c0007c42ffffffffffffffff00560d00200042088642078421000c010b200010818080800021000b200120003703082001200342848080807083370300200141021086808080002100200141106a24808080800020000b13000240200042ff01834202510d00000b42020b0b090100418080c0000b0000df160e636f6e74726163747370656376300000000000000000000000067475706c6531000000000001000000000000000361726700000003ed000000010000000400000001000003ed00000001000000040000000000000000000000067475706c6532000000000001000000000000000361726700000003ed00000002000000040000000700000001000003ed000000020000000400000007000000000000000000000007766f69645f666e00000000010000000000000008766f69645f61726700000002000000010000000200000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d00000000f436f6e7472616374436f6e7465787400000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e74657874000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d00000000f436f6e7472616374436f6e7465787400000000000000000f7375625f696e766f636174696f6e7300000003ea000007d000000018496e766f6b6572436f6e747261637441757468456e747279000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000015537562436f6e7472616374496e766f636174696f6e0000000000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e7465787400000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001c00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + "hash": "6ff664e1acc52c3b4cba604dacd77a628b920e0f86f62fc869bac114d2a786b4", + "code": "0061736d01000000011f0560017e017e60027e7e017e60037e7e7e017e60037e7f7f0060027f7f017e021904016901320000016901310000017601670001017601680002030605000304000005030100100621047f01418080c0000b7f00418080c0000b7f00418080c0000b7f00418080c0000b074507066d656d6f72790200067475706c65310004067475706c6532000707766f69645f666e0008015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030ac803057801017f23808080800041106b220124808080800002400240200042ff018342cb00520d00200142023703082000200141086a41011085808080002001290308220042ff01834204510d010b000b2001200042848080807083370308200141086a41011086808080002100200141106a24808080800020000b1d0020002001ad4220864204842002ad4220864204841083808080001a0b1a002000ad4220864204842001ad4220864204841082808080000bff0102027f017e23808080800041106b2201248080808000024002400240200042ff018342cb00520d00410021020240034020024110460d01200120026a4202370300200241086a21020c000b0b2000200141021085808080002001290300220342ff01834204520d0020012903082200a741ff0171220241c100460d0120024107470d00200042088721000c020b000b200010808080800021000b0240024020004280808080808080c0007c42ffffffffffffffff00560d00200042088642078421000c010b200010818080800021000b200120003703082001200342848080807083370300200141021086808080002100200141106a24808080800020000b13000240200042ff01834202510d00000b42020b0b090100418080c0000b0000bf190e636f6e74726163747370656376300000000000000000000000067475706c6531000000000001000000000000000361726700000003ed000000010000000400000001000003ed00000001000000040000000000000000000000067475706c6532000000000001000000000000000361726700000003ed00000002000000040000000700000001000003ed000000020000000400000007000000000000000000000007766f69645f666e00000000010000000000000008766f69645f61726700000002000000010000000200000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e00000000000000001a736f726f62616e5f73646b3a3a617574683a3a436f6e746578740000000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e746578740000000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e7465787400000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e0000000000000000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e74657874000000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000028736f726f62616e5f73646b3a3a617574683a3a537562436f6e7472616374496e766f636174696f6e000000020000000000000007636f6e7465787400000007d000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e746578740000000000000000000f7375625f696e766f636174696f6e7300000003ea000007d00000002b736f726f62616e5f73646b3a3a617574683a3a496e766f6b6572436f6e747261637441757468456e74727900000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e00000000000000002b736f726f62616e5f73646b3a3a617574683a3a496e766f6b6572436f6e747261637441757468456e74727900000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000028736f726f62616e5f73646b3a3a617574683a3a537562436f6e7472616374496e766f636174696f6e0000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e746578740000000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e74657874000000000002000000000000000a65786563757461626c650000000007d000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000000000000473616c74000003ee0000002000000002000000000000000000000020736f726f62616e5f73646b3a3a616464726573733a3a45786563757461626c65000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001c00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" } }, "ext": "v0" diff --git a/tests/tuples/test_snapshots/test/test_wasm_void.1.json b/tests/tuples/test_snapshots/test/test_wasm_void.1.json index b4ec55943..813296e10 100644 --- a/tests/tuples/test_snapshots/test/test_wasm_void.1.json +++ b/tests/tuples/test_snapshots/test/test_wasm_void.1.json @@ -18,7 +18,7 @@ } }, "executable": { - "wasm": "cfdb45c1ae815eefc3688b2ec047d40092559aa99fb3c2ade540dc06952837de" + "wasm": "6ff664e1acc52c3b4cba604dacd77a628b920e0f86f62fc869bac114d2a786b4" }, "constructor_args": [] } @@ -71,7 +71,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "cfdb45c1ae815eefc3688b2ec047d40092559aa99fb3c2ade540dc06952837de" + "wasm": "6ff664e1acc52c3b4cba604dacd77a628b920e0f86f62fc869bac114d2a786b4" }, "storage": null } @@ -105,8 +105,8 @@ } } }, - "hash": "cfdb45c1ae815eefc3688b2ec047d40092559aa99fb3c2ade540dc06952837de", - "code": "0061736d01000000011f0560017e017e60027e7e017e60037e7e7e017e60037e7f7f0060027f7f017e021904016901320000016901310000017601670001017601680002030605000304000005030100100621047f01418080c0000b7f00418080c0000b7f00418080c0000b7f00418080c0000b074507066d656d6f72790200067475706c65310004067475706c6532000707766f69645f666e0008015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030ac803057801017f23808080800041106b220124808080800002400240200042ff018342cb00520d00200142023703082000200141086a41011085808080002001290308220042ff01834204510d010b000b2001200042848080807083370308200141086a41011086808080002100200141106a24808080800020000b1d0020002001ad4220864204842002ad4220864204841083808080001a0b1a002000ad4220864204842001ad4220864204841082808080000bff0102027f017e23808080800041106b2201248080808000024002400240200042ff018342cb00520d00410021020240034020024110460d01200120026a4202370300200241086a21020c000b0b2000200141021085808080002001290300220342ff01834204520d0020012903082200a741ff0171220241c100460d0120024107470d00200042088721000c020b000b200010808080800021000b0240024020004280808080808080c0007c42ffffffffffffffff00560d00200042088642078421000c010b200010818080800021000b200120003703082001200342848080807083370300200141021086808080002100200141106a24808080800020000b13000240200042ff01834202510d00000b42020b0b090100418080c0000b0000df160e636f6e74726163747370656376300000000000000000000000067475706c6531000000000001000000000000000361726700000003ed000000010000000400000001000003ed00000001000000040000000000000000000000067475706c6532000000000001000000000000000361726700000003ed00000002000000040000000700000001000003ed000000020000000400000007000000000000000000000007766f69645f666e00000000010000000000000008766f69645f61726700000002000000010000000200000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d00000000f436f6e7472616374436f6e7465787400000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e74657874000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d00000000f436f6e7472616374436f6e7465787400000000000000000f7375625f696e766f636174696f6e7300000003ea000007d000000018496e766f6b6572436f6e747261637441757468456e747279000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000015537562436f6e7472616374496e766f636174696f6e0000000000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e7465787400000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001c00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + "hash": "6ff664e1acc52c3b4cba604dacd77a628b920e0f86f62fc869bac114d2a786b4", + "code": "0061736d01000000011f0560017e017e60027e7e017e60037e7e7e017e60037e7f7f0060027f7f017e021904016901320000016901310000017601670001017601680002030605000304000005030100100621047f01418080c0000b7f00418080c0000b7f00418080c0000b7f00418080c0000b074507066d656d6f72790200067475706c65310004067475706c6532000707766f69645f666e0008015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030ac803057801017f23808080800041106b220124808080800002400240200042ff018342cb00520d00200142023703082000200141086a41011085808080002001290308220042ff01834204510d010b000b2001200042848080807083370308200141086a41011086808080002100200141106a24808080800020000b1d0020002001ad4220864204842002ad4220864204841083808080001a0b1a002000ad4220864204842001ad4220864204841082808080000bff0102027f017e23808080800041106b2201248080808000024002400240200042ff018342cb00520d00410021020240034020024110460d01200120026a4202370300200241086a21020c000b0b2000200141021085808080002001290300220342ff01834204520d0020012903082200a741ff0171220241c100460d0120024107470d00200042088721000c020b000b200010808080800021000b0240024020004280808080808080c0007c42ffffffffffffffff00560d00200042088642078421000c010b200010818080800021000b200120003703082001200342848080807083370300200141021086808080002100200141106a24808080800020000b13000240200042ff01834202510d00000b42020b0b090100418080c0000b0000bf190e636f6e74726163747370656376300000000000000000000000067475706c6531000000000001000000000000000361726700000003ed000000010000000400000001000003ed00000001000000040000000000000000000000067475706c6532000000000001000000000000000361726700000003ed00000002000000040000000700000001000003ed000000020000000400000007000000000000000000000007766f69645f666e00000000010000000000000008766f69645f61726700000002000000010000000200000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e00000000000000001a736f726f62616e5f73646b3a3a617574683a3a436f6e746578740000000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e746578740000000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e7465787400000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e0000000000000000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e74657874000000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000028736f726f62616e5f73646b3a3a617574683a3a537562436f6e7472616374496e766f636174696f6e000000020000000000000007636f6e7465787400000007d000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e746578740000000000000000000f7375625f696e766f636174696f6e7300000003ea000007d00000002b736f726f62616e5f73646b3a3a617574683a3a496e766f6b6572436f6e747261637441757468456e74727900000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e00000000000000002b736f726f62616e5f73646b3a3a617574683a3a496e766f6b6572436f6e747261637441757468456e74727900000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000028736f726f62616e5f73646b3a3a617574683a3a537562436f6e7472616374496e766f636174696f6e0000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e746578740000000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e74657874000000000002000000000000000a65786563757461626c650000000007d000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000000000000473616c74000003ee0000002000000002000000000000000000000020736f726f62616e5f73646b3a3a616464726573733a3a45786563757461626c65000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001c00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" } }, "ext": "v0" diff --git a/tests/udt/test_snapshots/test_with_wasm/test_add.1.json b/tests/udt/test_snapshots/test_with_wasm/test_add.1.json index be568971e..9c8424b89 100644 --- a/tests/udt/test_snapshots/test_with_wasm/test_add.1.json +++ b/tests/udt/test_snapshots/test_with_wasm/test_add.1.json @@ -18,7 +18,7 @@ } }, "executable": { - "wasm": "89a0503a4ef3132c6779d0ca9438d736401c2b3dc7691695c8378205ea625948" + "wasm": "3693efd566a8e0a63612817cfd89e6175f669a0aca6db2ba845bfa701bf96ab7" }, "constructor_args": [] } @@ -72,7 +72,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "89a0503a4ef3132c6779d0ca9438d736401c2b3dc7691695c8378205ea625948" + "wasm": "3693efd566a8e0a63612817cfd89e6175f669a0aca6db2ba845bfa701bf96ab7" }, "storage": null } @@ -106,8 +106,8 @@ } } }, - "hash": "89a0503a4ef3132c6779d0ca9438d736401c2b3dc7691695c8378205ea625948", - "code": "0061736d01000000014e0d60017e017e60037e7e7e017e60027e7e017e60047e7e7e7e017e60027f7f0060000060037e7f7f017e60027f7f017f60057e7f7f7f7f0060027f7e0060017f017e60037f7f7f0060027f7f017e024f0d017601330000017601680001016901320000017601310002016901310000017601380000016d01340002016d013100020176016700020162016a0002016d01390001016d016100030162016d00010315140405040607080909090505040205000a020b0c050405017001040405030100110621047f01418080c0000b7f0041e881c0000b7f0041e881c0000b7f0041f081c0000b074c07066d656d6f7279020003616464001909726563757273697665001b0e7265637572736976655f656e756d001d015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030909010041010b030e16170af11d14850704017f027e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a41002d00aa80c080001a41002d008e80c080001a200241818080800036021820022802181a41002d009c80c080001a41002d008080c080001a024002402001290300220342ff018342cb00510d00200041043a00000c010b200310808080800021042002410036021020022003370308200220044220883e0214200241186a200241086a108f808080000240024002400240200229031822034202510d002003a74101710d00024020022903202203a741ff0171220141ca00460d002001410e470d010b0240024002400240200341f480c080004104109080808000422088a70e0400010203050b200228021020022802141091808080000d04410021050c050b2002280210200228021410918080800041014b0d03200241186a200241086a108f80808000200229031822034202510d032003a74101710d0320022903202103410021010240034020014118460d01200241186a20016a4202370300200141086a21010c000b0b200342ff018342cc00520d032003419881c080004103200241186a4103109280808000200241306a200229031810938080800020022802300d0320022903382104200241306a200229032010938080800020022802300d032002290328220642ff018342cb00520d0320022903382103410121050c040b2002280210200228021410918080800041014b0d02200241186a200241086a108f80808000200229031822034202510d022003a74101710d022002290320220342ff01834204520d02410a410f41092003422088a72201410f461b2001410a461b22014109460d02410221050c040b2002280210200228021410918080800041014b0d01200241186a200241086a108f80808000200229031822034202510d012003a74101710d012002290320220342ff018342cb00520d01410021010240034020014110460d01200241306a20016a4202370300200141086a21010c000b0b2003200241306aad4220864204844284808080201081808080001a200241186a200229033010938080800020022802184101460d012002290338220342ff018342cb00520d0120022903202104410321050c020b200041043a00000c030b200041043a00000c020b0b200020063703182000200337031020002004370308200020013a0001200020053a00000b200241c0006a2480808080000b02000b4a02017e017f42022102024020012802082203200128020c4f0d00200020012903002003ad4220864204841083808080003703082001200341016a360208420021020b200020023703000b1c0020002001ad4220864204842002ad422086420484108c808080000b1900024020012000490d00200120006b0f0b109a80808000000b3100024020022004460d00000b20002001ad4220864204842003ad4220864204842002ad422086420484108b808080001a0b5d02017f017e024002402001a741ff0171220241c100460d00024020024107460d00420121034283908080800121010c020b20014208872101420021030c010b42002103200110828080800021010b20002003370300200020013703080bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cb00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cc00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000b2801017f23808080800041106b220041828080800036020c200028020c1a41002d00b880c080001a0b4301017f23808080800041106b220041818080800036020c200028020c1a200041838080800036020820002802081a41002d00d480c080001a41002d00c680c080001a0b7803017f017e017f23808080800041106b220224808080800042022103024020012802082204200128020c4f0d00200220012903002004ad42208642048410838080800010938080800020022903002103200020022903083703082001200441016a3602080b20002003370300200241106a2480808080000bd60404027f017e017f057e23808080800041c0006b22022480808080002002200137030820022000370300200241106a2002108d8080800002400240024020022d001022034104460d00200229032021012002290318210420023100112100200241106a200241086a108d8080800020022d001022054104460d00200229032021062002290318210720023100112108420021094200210a024002400240024020030e0405020100050b200110808080800021002002410036023820022001370330200220004220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0620022903182200420053200120007c2200200153470d06200021010c000b0b2000210a0c030b2001420053200420017c220a20045373450d020c030b2001420053200420017c220a20045373450d010c020b000b0240024002400240024020050e0404020100040b200610808080800021012002410036023820022006370330200220014220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0520022903182200420053200120007c2200200153470d05200021010c000b0b200821090c020b2006420053200720067c2209200753730d020c010b2001420053200720017c2209200753730d010b2009420053200a20097c2201200a53730d000240024020014280808080808080c0007c42ffffffffffffffff00560d00200142088642078421010c010b200110848080800021010b200241c0006a24808080800020010f0b109a80808000000b090010a080808000000bf90102017f017e23808080800041206b2201248080808000200141828080800036020820012802081a41002d00b880c080001a200141086a2000109480808000024020012802084101460d00024002402001290318220010808080800042ffffffff0f560d00200141828080800036020820012802081a41002d00b880c080001a420221000c010b200141086a200010858080800010948080800020012802084101460d012001290310210020012903182102200141828080800036020820012802081a41002d00b880c080001a2001200237031020012000370308200141086a109c8080800021000b200141206a24808080800020000f0b000b240041b081c08000ad4220864204842000ad422086420484428480808020108a808080000b850704017f017e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a0240200042ff018342cb00520d00200010808080800021032002410036021020022000370308200220034220883e0214200241186a200241086a108f80808000200229031822004202510d002000a74101710d00024020022903202200a741ff0171220441ca00460d002004410e470d010b024002400240024002400240200041d881c080004102109080808000422088a70e020100060b2002280210200228021410918080800041014b0d05200241306a200241086a108f80808000200229033022004202510d052000a74101710d05200241186a200229033810958080800020022802184101460d05200142ff01834204520d052002290328220020014284808080708322011086808080004201520d0120002001108780808000220042ff018342cb00520d05200010808080800021012002410036021020022000370308200220014220883e0214200241186a200241086a108f80808000200229031822004202510d052000a74101710d05024020022903202200a741ff0171220441ca00460d002004410e470d060b200041d881c080004102109080808000422088a70e020203050b200228021020022802141091808080000d04200142ff01834204520d040b420221000c020b200228021020022802141091808080000d02420021000c010b2002280210200228021410918080800041014b0d01200241306a200241086a108f80808000200229033022004202510d012000a74101710d01200241186a200229033810958080800020022802180d012002290328210520022903202103420121000b200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a42022101024020004202510d0002402000a7410171450d00200241186a41cc81c080004109109e8080800020022802180d022002290320210020022005370320200220033703182002200241186a109c8080800037032020022000370318200241186a4102109f8080800021010c010b200241186a41c081c08000410c109e8080800020022802180d0120022002290320370318200241186a4101109f8080800021010b200241c0006a24808080800020010f0b000bd60102017e037f02400240200241094b0d0042002103410021040340024020044109470d002003420886420e8421030c030b410121050240200120046a2d0000220641df00460d0002400240200641506a41ff0171410a490d00200641bf7f6a41ff0171411a490d012006419f7f6a41ff0171411a4f0d04200641456a21050c020b200641526a21050c010b2006414b6a21050b20034206862005ad42ff0183842103200441016a21040c000b0b2001ad4220864204842002ad42208642048410898080800021030b20004200370300200020033703080b1a002000ad4220864204842001ad4220864204841088808080000b0300000b0bf2010100418080c0000be801537045635631f3b0ab40690d48b4537045635631aff793ba9e4dde9a537045635631eb9f12269a76282a53704563563116276438ffc9b1f8537045635631c81291fed713f59c537045635631ff7b5620ab0ddc64537045635631e16f55dbd4379814556474415564744255647443556474440000620010000400000066001000040000006a001000040000006e0010000400000061626300940010000100000095001000010000009600100001000000940010000100000095001000010000004e6f74526563757273697665526563757273697665000000c00010000c000000cc0010000900000000db1c0e636f6e74726163747370656376300000000000000000000000036164640000000002000000000000000161000000000007d000000007556474456e756d00000000000000000162000000000007d000000007556474456e756d00000000010000000700000002000000000000000000000007556474456e756d0000000004000000000000000000000004556474410000000100000000000000045564744200000001000007d0000000095564745374727563740000000000000100000000000000045564744300000001000007d000000008556474456e756d320000000100000000000000045564744400000001000007d0000000085564745475706c6500000003000000000000000000000008556474456e756d32000000020000000000000001410000000000000a0000000000000001420000000000000f000000010000000000000000000000085564745475706c650000000200000000000000013000000000000007000000000000000131000000000003ea0000000700000001000000000000000000000009556474537472756374000000000000030000000000000001610000000000000700000000000000016200000000000007000000000000000163000000000003ea0000000700000000000000000000000972656375727369766500000000000001000000000000000161000000000007d00000000c55647452656375727369766500000001000003e8000007d00000000c5564745265637572736976650000000100000000000000000000000c5564745265637572736976650000000200000000000000016100000000000011000000000000000162000000000003ea000007d00000000c5564745265637572736976650000000200000000000000000000000d526563757273697665456e756d0000000000000200000000000000000000000c4e6f7452656375727369766500000001000000000000000952656375727369766500000000000001000007d00000000f526563757273697665546f456e756d000000000100000000000000000000000f526563757273697665546f456e756d000000000200000000000000016100000000000011000000000000000162000000000003ec00000004000007d00000000d526563757273697665456e756d00000000000000000000000000000e7265637572736976655f656e756d000000000002000000000000000161000000000007d00000000d526563757273697665456e756d00000000000000000000036b6579000000000400000001000003e9000003e8000007d00000000d526563757273697665456e756d0000000000000300000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d00000000f436f6e7472616374436f6e7465787400000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e74657874000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d00000000f436f6e7472616374436f6e7465787400000000000000000f7375625f696e766f636174696f6e7300000003ea000007d000000018496e766f6b6572436f6e747261637441757468456e747279000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000015537562436f6e7472616374496e766f636174696f6e0000000000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e7465787400000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001c00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + "hash": "3693efd566a8e0a63612817cfd89e6175f669a0aca6db2ba845bfa701bf96ab7", + "code": "0061736d01000000014e0d60017e017e60037e7e7e017e60027e7e017e60047e7e7e7e017e60027f7f0060000060037e7f7f017e60027f7f017f60057e7f7f7f7f0060027f7e0060017f017e60037f7f7f0060027f7f017e024f0d017601330000017601680001016901320000017601310002016901310000017601380000016d01340002016d013100020176016700020162016a0002016d01390001016d016100030162016d00010315140405040607080909090505040205000a020b0c050405017001040405030100110621047f01418080c0000b7f0041e881c0000b7f0041e881c0000b7f0041f081c0000b074c07066d656d6f7279020003616464001909726563757273697665001b0e7265637572736976655f656e756d001d015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030909010041010b030e16170af11d14850704017f027e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a41002d00aa80c080001a41002d008e80c080001a200241818080800036021820022802181a41002d009c80c080001a41002d008080c080001a024002402001290300220342ff018342cb00510d00200041043a00000c010b200310808080800021042002410036021020022003370308200220044220883e0214200241186a200241086a108f808080000240024002400240200229031822034202510d002003a74101710d00024020022903202203a741ff0171220141ca00460d002001410e470d010b0240024002400240200341f480c080004104109080808000422088a70e0400010203050b200228021020022802141091808080000d04410021050c050b2002280210200228021410918080800041014b0d03200241186a200241086a108f80808000200229031822034202510d032003a74101710d0320022903202103410021010240034020014118460d01200241186a20016a4202370300200141086a21010c000b0b200342ff018342cc00520d032003419881c080004103200241186a4103109280808000200241306a200229031810938080800020022802300d0320022903382104200241306a200229032010938080800020022802300d032002290328220642ff018342cb00520d0320022903382103410121050c040b2002280210200228021410918080800041014b0d02200241186a200241086a108f80808000200229031822034202510d022003a74101710d022002290320220342ff01834204520d02410a410f41092003422088a72201410f461b2001410a461b22014109460d02410221050c040b2002280210200228021410918080800041014b0d01200241186a200241086a108f80808000200229031822034202510d012003a74101710d012002290320220342ff018342cb00520d01410021010240034020014110460d01200241306a20016a4202370300200141086a21010c000b0b2003200241306aad4220864204844284808080201081808080001a200241186a200229033010938080800020022802184101460d012002290338220342ff018342cb00520d0120022903202104410321050c020b200041043a00000c030b200041043a00000c020b0b200020063703182000200337031020002004370308200020013a0001200020053a00000b200241c0006a2480808080000b02000b4a02017e017f42022102024020012802082203200128020c4f0d00200020012903002003ad4220864204841083808080003703082001200341016a360208420021020b200020023703000b1c0020002001ad4220864204842002ad422086420484108c808080000b1900024020012000490d00200120006b0f0b109a80808000000b3100024020022004460d00000b20002001ad4220864204842003ad4220864204842002ad422086420484108b808080001a0b5d02017f017e024002402001a741ff0171220241c100460d00024020024107460d00420121034283908080800121010c020b20014208872101420021030c010b42002103200110828080800021010b20002003370300200020013703080bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cb00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cc00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000b2801017f23808080800041106b220041828080800036020c200028020c1a41002d00b880c080001a0b4301017f23808080800041106b220041818080800036020c200028020c1a200041838080800036020820002802081a41002d00d480c080001a41002d00c680c080001a0b7803017f017e017f23808080800041106b220224808080800042022103024020012802082204200128020c4f0d00200220012903002004ad42208642048410838080800010938080800020022903002103200020022903083703082001200441016a3602080b20002003370300200241106a2480808080000bd60404027f017e017f057e23808080800041c0006b22022480808080002002200137030820022000370300200241106a2002108d8080800002400240024020022d001022034104460d00200229032021012002290318210420023100112100200241106a200241086a108d8080800020022d001022054104460d00200229032021062002290318210720023100112108420021094200210a024002400240024020030e0405020100050b200110808080800021002002410036023820022001370330200220004220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0620022903182200420053200120007c2200200153470d06200021010c000b0b2000210a0c030b2001420053200420017c220a20045373450d020c030b2001420053200420017c220a20045373450d010c020b000b0240024002400240024020050e0404020100040b200610808080800021012002410036023820022006370330200220014220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0520022903182200420053200120007c2200200153470d05200021010c000b0b200821090c020b2006420053200720067c2209200753730d020c010b2001420053200720017c2209200753730d010b2009420053200a20097c2201200a53730d000240024020014280808080808080c0007c42ffffffffffffffff00560d00200142088642078421010c010b200110848080800021010b200241c0006a24808080800020010f0b109a80808000000b090010a080808000000bf90102017f017e23808080800041206b2201248080808000200141828080800036020820012802081a41002d00b880c080001a200141086a2000109480808000024020012802084101460d00024002402001290318220010808080800042ffffffff0f560d00200141828080800036020820012802081a41002d00b880c080001a420221000c010b200141086a200010858080800010948080800020012802084101460d012001290310210020012903182102200141828080800036020820012802081a41002d00b880c080001a2001200237031020012000370308200141086a109c8080800021000b200141206a24808080800020000f0b000b240041b081c08000ad4220864204842000ad422086420484428480808020108a808080000b850704017f017e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a0240200042ff018342cb00520d00200010808080800021032002410036021020022000370308200220034220883e0214200241186a200241086a108f80808000200229031822004202510d002000a74101710d00024020022903202200a741ff0171220441ca00460d002004410e470d010b024002400240024002400240200041d881c080004102109080808000422088a70e020100060b2002280210200228021410918080800041014b0d05200241306a200241086a108f80808000200229033022004202510d052000a74101710d05200241186a200229033810958080800020022802184101460d05200142ff01834204520d052002290328220020014284808080708322011086808080004201520d0120002001108780808000220042ff018342cb00520d05200010808080800021012002410036021020022000370308200220014220883e0214200241186a200241086a108f80808000200229031822004202510d052000a74101710d05024020022903202200a741ff0171220441ca00460d002004410e470d060b200041d881c080004102109080808000422088a70e020203050b200228021020022802141091808080000d04200142ff01834204520d040b420221000c020b200228021020022802141091808080000d02420021000c010b2002280210200228021410918080800041014b0d01200241306a200241086a108f80808000200229033022004202510d012000a74101710d01200241186a200229033810958080800020022802180d012002290328210520022903202103420121000b200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a42022101024020004202510d0002402000a7410171450d00200241186a41cc81c080004109109e8080800020022802180d022002290320210020022005370320200220033703182002200241186a109c8080800037032020022000370318200241186a4102109f8080800021010c010b200241186a41c081c08000410c109e8080800020022802180d0120022002290320370318200241186a4101109f8080800021010b200241c0006a24808080800020010f0b000bd60102017e037f02400240200241094b0d0042002103410021040340024020044109470d002003420886420e8421030c030b410121050240200120046a2d0000220641df00460d0002400240200641506a41ff0171410a490d00200641bf7f6a41ff0171411a490d012006419f7f6a41ff0171411a4f0d04200641456a21050c020b200641526a21050c010b2006414b6a21050b20034206862005ad42ff0183842103200441016a21040c000b0b2001ad4220864204842002ad42208642048410898080800021030b20004200370300200020033703080b1a002000ad4220864204842001ad4220864204841088808080000b0300000b0bf2010100418080c0000be8015370456356311c8f201ad0d286b4537045635631dd0c966136ac0d25537045635631fb28a13fa92d6f1c537045635631241adaa8135d1e1c537045635631131c19bea57cff26537045635631ba36a478487b3dee5370456356314140810c80812d7e556474415564744255647443556474440000620010000400000066001000040000006a001000040000006e0010000400000061626300940010000100000095001000010000009600100001000000940010000100000095001000010000004e6f74526563757273697665526563757273697665000000c00010000c000000cc001000090000000087210e636f6e74726163747370656376300000000000000000000000036164640000000002000000000000000161000000000007d000000011746573745f7564743a3a556474456e756d000000000000000000000162000000000007d000000011746573745f7564743a3a556474456e756d000000000000010000000700000002000000000000000000000011746573745f7564743a3a556474456e756d00000000000004000000000000000000000004556474410000000100000000000000045564744200000001000007d000000013746573745f7564743a3a556474537472756374000000000100000000000000045564744300000001000007d000000012746573745f7564743a3a556474456e756d3200000000000100000000000000045564744400000001000007d000000012746573745f7564743a3a5564745475706c65000000000003000000000000000000000012746573745f7564743a3a556474456e756d320000000000020000000000000001410000000000000a0000000000000001420000000000000f00000001000000000000000000000012746573745f7564743a3a5564745475706c6500000000000200000000000000013000000000000007000000000000000131000000000003ea0000000700000001000000000000000000000013746573745f7564743a3a55647453747275637400000000030000000000000001610000000000000700000000000000016200000000000007000000000000000163000000000003ea0000000700000000000000000000000972656375727369766500000000000001000000000000000161000000000007d000000016746573745f7564743a3a556474526563757273697665000000000001000003e8000007d000000016746573745f7564743a3a556474526563757273697665000000000001000000000000000000000016746573745f7564743a3a55647452656375727369766500000000000200000000000000016100000000000011000000000000000162000000000003ea000007d000000016746573745f7564743a3a556474526563757273697665000000000002000000000000000000000017746573745f7564743a3a526563757273697665456e756d000000000200000000000000000000000c4e6f7452656375727369766500000001000000000000000952656375727369766500000000000001000007d000000019746573745f7564743a3a526563757273697665546f456e756d00000000000001000000000000000000000019746573745f7564743a3a526563757273697665546f456e756d0000000000000200000000000000016100000000000011000000000000000162000000000003ec00000004000007d000000017746573745f7564743a3a526563757273697665456e756d0000000000000000000000000e7265637572736976655f656e756d000000000002000000000000000161000000000007d000000017746573745f7564743a3a526563757273697665456e756d0000000000000000036b6579000000000400000001000003e9000003e8000007d000000017746573745f7564743a3a526563757273697665456e756d000000000300000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e00000000000000001a736f726f62616e5f73646b3a3a617574683a3a436f6e746578740000000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e746578740000000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e7465787400000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e0000000000000000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e74657874000000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000028736f726f62616e5f73646b3a3a617574683a3a537562436f6e7472616374496e766f636174696f6e000000020000000000000007636f6e7465787400000007d000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e746578740000000000000000000f7375625f696e766f636174696f6e7300000003ea000007d00000002b736f726f62616e5f73646b3a3a617574683a3a496e766f6b6572436f6e747261637441757468456e74727900000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e00000000000000002b736f726f62616e5f73646b3a3a617574683a3a496e766f6b6572436f6e747261637441757468456e74727900000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000028736f726f62616e5f73646b3a3a617574683a3a537562436f6e7472616374496e766f636174696f6e0000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e746578740000000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e74657874000000000002000000000000000a65786563757461626c650000000007d000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000000000000473616c74000003ee0000002000000002000000000000000000000020736f726f62616e5f73646b3a3a616464726573733a3a45786563757461626c65000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001c00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" } }, "ext": "v0" diff --git a/tests/udt/test_snapshots/test_with_wasm/test_recursive.1.json b/tests/udt/test_snapshots/test_with_wasm/test_recursive.1.json index 6ad1a2777..c898cd6ee 100644 --- a/tests/udt/test_snapshots/test_with_wasm/test_recursive.1.json +++ b/tests/udt/test_snapshots/test_with_wasm/test_recursive.1.json @@ -18,7 +18,7 @@ } }, "executable": { - "wasm": "89a0503a4ef3132c6779d0ca9438d736401c2b3dc7691695c8378205ea625948" + "wasm": "3693efd566a8e0a63612817cfd89e6175f669a0aca6db2ba845bfa701bf96ab7" }, "constructor_args": [] } @@ -73,7 +73,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "89a0503a4ef3132c6779d0ca9438d736401c2b3dc7691695c8378205ea625948" + "wasm": "3693efd566a8e0a63612817cfd89e6175f669a0aca6db2ba845bfa701bf96ab7" }, "storage": null } @@ -107,8 +107,8 @@ } } }, - "hash": "89a0503a4ef3132c6779d0ca9438d736401c2b3dc7691695c8378205ea625948", - "code": "0061736d01000000014e0d60017e017e60037e7e7e017e60027e7e017e60047e7e7e7e017e60027f7f0060000060037e7f7f017e60027f7f017f60057e7f7f7f7f0060027f7e0060017f017e60037f7f7f0060027f7f017e024f0d017601330000017601680001016901320000017601310002016901310000017601380000016d01340002016d013100020176016700020162016a0002016d01390001016d016100030162016d00010315140405040607080909090505040205000a020b0c050405017001040405030100110621047f01418080c0000b7f0041e881c0000b7f0041e881c0000b7f0041f081c0000b074c07066d656d6f7279020003616464001909726563757273697665001b0e7265637572736976655f656e756d001d015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030909010041010b030e16170af11d14850704017f027e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a41002d00aa80c080001a41002d008e80c080001a200241818080800036021820022802181a41002d009c80c080001a41002d008080c080001a024002402001290300220342ff018342cb00510d00200041043a00000c010b200310808080800021042002410036021020022003370308200220044220883e0214200241186a200241086a108f808080000240024002400240200229031822034202510d002003a74101710d00024020022903202203a741ff0171220141ca00460d002001410e470d010b0240024002400240200341f480c080004104109080808000422088a70e0400010203050b200228021020022802141091808080000d04410021050c050b2002280210200228021410918080800041014b0d03200241186a200241086a108f80808000200229031822034202510d032003a74101710d0320022903202103410021010240034020014118460d01200241186a20016a4202370300200141086a21010c000b0b200342ff018342cc00520d032003419881c080004103200241186a4103109280808000200241306a200229031810938080800020022802300d0320022903382104200241306a200229032010938080800020022802300d032002290328220642ff018342cb00520d0320022903382103410121050c040b2002280210200228021410918080800041014b0d02200241186a200241086a108f80808000200229031822034202510d022003a74101710d022002290320220342ff01834204520d02410a410f41092003422088a72201410f461b2001410a461b22014109460d02410221050c040b2002280210200228021410918080800041014b0d01200241186a200241086a108f80808000200229031822034202510d012003a74101710d012002290320220342ff018342cb00520d01410021010240034020014110460d01200241306a20016a4202370300200141086a21010c000b0b2003200241306aad4220864204844284808080201081808080001a200241186a200229033010938080800020022802184101460d012002290338220342ff018342cb00520d0120022903202104410321050c020b200041043a00000c030b200041043a00000c020b0b200020063703182000200337031020002004370308200020013a0001200020053a00000b200241c0006a2480808080000b02000b4a02017e017f42022102024020012802082203200128020c4f0d00200020012903002003ad4220864204841083808080003703082001200341016a360208420021020b200020023703000b1c0020002001ad4220864204842002ad422086420484108c808080000b1900024020012000490d00200120006b0f0b109a80808000000b3100024020022004460d00000b20002001ad4220864204842003ad4220864204842002ad422086420484108b808080001a0b5d02017f017e024002402001a741ff0171220241c100460d00024020024107460d00420121034283908080800121010c020b20014208872101420021030c010b42002103200110828080800021010b20002003370300200020013703080bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cb00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cc00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000b2801017f23808080800041106b220041828080800036020c200028020c1a41002d00b880c080001a0b4301017f23808080800041106b220041818080800036020c200028020c1a200041838080800036020820002802081a41002d00d480c080001a41002d00c680c080001a0b7803017f017e017f23808080800041106b220224808080800042022103024020012802082204200128020c4f0d00200220012903002004ad42208642048410838080800010938080800020022903002103200020022903083703082001200441016a3602080b20002003370300200241106a2480808080000bd60404027f017e017f057e23808080800041c0006b22022480808080002002200137030820022000370300200241106a2002108d8080800002400240024020022d001022034104460d00200229032021012002290318210420023100112100200241106a200241086a108d8080800020022d001022054104460d00200229032021062002290318210720023100112108420021094200210a024002400240024020030e0405020100050b200110808080800021002002410036023820022001370330200220004220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0620022903182200420053200120007c2200200153470d06200021010c000b0b2000210a0c030b2001420053200420017c220a20045373450d020c030b2001420053200420017c220a20045373450d010c020b000b0240024002400240024020050e0404020100040b200610808080800021012002410036023820022006370330200220014220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0520022903182200420053200120007c2200200153470d05200021010c000b0b200821090c020b2006420053200720067c2209200753730d020c010b2001420053200720017c2209200753730d010b2009420053200a20097c2201200a53730d000240024020014280808080808080c0007c42ffffffffffffffff00560d00200142088642078421010c010b200110848080800021010b200241c0006a24808080800020010f0b109a80808000000b090010a080808000000bf90102017f017e23808080800041206b2201248080808000200141828080800036020820012802081a41002d00b880c080001a200141086a2000109480808000024020012802084101460d00024002402001290318220010808080800042ffffffff0f560d00200141828080800036020820012802081a41002d00b880c080001a420221000c010b200141086a200010858080800010948080800020012802084101460d012001290310210020012903182102200141828080800036020820012802081a41002d00b880c080001a2001200237031020012000370308200141086a109c8080800021000b200141206a24808080800020000f0b000b240041b081c08000ad4220864204842000ad422086420484428480808020108a808080000b850704017f017e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a0240200042ff018342cb00520d00200010808080800021032002410036021020022000370308200220034220883e0214200241186a200241086a108f80808000200229031822004202510d002000a74101710d00024020022903202200a741ff0171220441ca00460d002004410e470d010b024002400240024002400240200041d881c080004102109080808000422088a70e020100060b2002280210200228021410918080800041014b0d05200241306a200241086a108f80808000200229033022004202510d052000a74101710d05200241186a200229033810958080800020022802184101460d05200142ff01834204520d052002290328220020014284808080708322011086808080004201520d0120002001108780808000220042ff018342cb00520d05200010808080800021012002410036021020022000370308200220014220883e0214200241186a200241086a108f80808000200229031822004202510d052000a74101710d05024020022903202200a741ff0171220441ca00460d002004410e470d060b200041d881c080004102109080808000422088a70e020203050b200228021020022802141091808080000d04200142ff01834204520d040b420221000c020b200228021020022802141091808080000d02420021000c010b2002280210200228021410918080800041014b0d01200241306a200241086a108f80808000200229033022004202510d012000a74101710d01200241186a200229033810958080800020022802180d012002290328210520022903202103420121000b200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a42022101024020004202510d0002402000a7410171450d00200241186a41cc81c080004109109e8080800020022802180d022002290320210020022005370320200220033703182002200241186a109c8080800037032020022000370318200241186a4102109f8080800021010c010b200241186a41c081c08000410c109e8080800020022802180d0120022002290320370318200241186a4101109f8080800021010b200241c0006a24808080800020010f0b000bd60102017e037f02400240200241094b0d0042002103410021040340024020044109470d002003420886420e8421030c030b410121050240200120046a2d0000220641df00460d0002400240200641506a41ff0171410a490d00200641bf7f6a41ff0171411a490d012006419f7f6a41ff0171411a4f0d04200641456a21050c020b200641526a21050c010b2006414b6a21050b20034206862005ad42ff0183842103200441016a21040c000b0b2001ad4220864204842002ad42208642048410898080800021030b20004200370300200020033703080b1a002000ad4220864204842001ad4220864204841088808080000b0300000b0bf2010100418080c0000be801537045635631f3b0ab40690d48b4537045635631aff793ba9e4dde9a537045635631eb9f12269a76282a53704563563116276438ffc9b1f8537045635631c81291fed713f59c537045635631ff7b5620ab0ddc64537045635631e16f55dbd4379814556474415564744255647443556474440000620010000400000066001000040000006a001000040000006e0010000400000061626300940010000100000095001000010000009600100001000000940010000100000095001000010000004e6f74526563757273697665526563757273697665000000c00010000c000000cc0010000900000000db1c0e636f6e74726163747370656376300000000000000000000000036164640000000002000000000000000161000000000007d000000007556474456e756d00000000000000000162000000000007d000000007556474456e756d00000000010000000700000002000000000000000000000007556474456e756d0000000004000000000000000000000004556474410000000100000000000000045564744200000001000007d0000000095564745374727563740000000000000100000000000000045564744300000001000007d000000008556474456e756d320000000100000000000000045564744400000001000007d0000000085564745475706c6500000003000000000000000000000008556474456e756d32000000020000000000000001410000000000000a0000000000000001420000000000000f000000010000000000000000000000085564745475706c650000000200000000000000013000000000000007000000000000000131000000000003ea0000000700000001000000000000000000000009556474537472756374000000000000030000000000000001610000000000000700000000000000016200000000000007000000000000000163000000000003ea0000000700000000000000000000000972656375727369766500000000000001000000000000000161000000000007d00000000c55647452656375727369766500000001000003e8000007d00000000c5564745265637572736976650000000100000000000000000000000c5564745265637572736976650000000200000000000000016100000000000011000000000000000162000000000003ea000007d00000000c5564745265637572736976650000000200000000000000000000000d526563757273697665456e756d0000000000000200000000000000000000000c4e6f7452656375727369766500000001000000000000000952656375727369766500000000000001000007d00000000f526563757273697665546f456e756d000000000100000000000000000000000f526563757273697665546f456e756d000000000200000000000000016100000000000011000000000000000162000000000003ec00000004000007d00000000d526563757273697665456e756d00000000000000000000000000000e7265637572736976655f656e756d000000000002000000000000000161000000000007d00000000d526563757273697665456e756d00000000000000000000036b6579000000000400000001000003e9000003e8000007d00000000d526563757273697665456e756d0000000000000300000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d00000000f436f6e7472616374436f6e7465787400000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e74657874000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d00000000f436f6e7472616374436f6e7465787400000000000000000f7375625f696e766f636174696f6e7300000003ea000007d000000018496e766f6b6572436f6e747261637441757468456e747279000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000015537562436f6e7472616374496e766f636174696f6e0000000000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e7465787400000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001c00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + "hash": "3693efd566a8e0a63612817cfd89e6175f669a0aca6db2ba845bfa701bf96ab7", + "code": "0061736d01000000014e0d60017e017e60037e7e7e017e60027e7e017e60047e7e7e7e017e60027f7f0060000060037e7f7f017e60027f7f017f60057e7f7f7f7f0060027f7e0060017f017e60037f7f7f0060027f7f017e024f0d017601330000017601680001016901320000017601310002016901310000017601380000016d01340002016d013100020176016700020162016a0002016d01390001016d016100030162016d00010315140405040607080909090505040205000a020b0c050405017001040405030100110621047f01418080c0000b7f0041e881c0000b7f0041e881c0000b7f0041f081c0000b074c07066d656d6f7279020003616464001909726563757273697665001b0e7265637572736976655f656e756d001d015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030909010041010b030e16170af11d14850704017f027e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a41002d00aa80c080001a41002d008e80c080001a200241818080800036021820022802181a41002d009c80c080001a41002d008080c080001a024002402001290300220342ff018342cb00510d00200041043a00000c010b200310808080800021042002410036021020022003370308200220044220883e0214200241186a200241086a108f808080000240024002400240200229031822034202510d002003a74101710d00024020022903202203a741ff0171220141ca00460d002001410e470d010b0240024002400240200341f480c080004104109080808000422088a70e0400010203050b200228021020022802141091808080000d04410021050c050b2002280210200228021410918080800041014b0d03200241186a200241086a108f80808000200229031822034202510d032003a74101710d0320022903202103410021010240034020014118460d01200241186a20016a4202370300200141086a21010c000b0b200342ff018342cc00520d032003419881c080004103200241186a4103109280808000200241306a200229031810938080800020022802300d0320022903382104200241306a200229032010938080800020022802300d032002290328220642ff018342cb00520d0320022903382103410121050c040b2002280210200228021410918080800041014b0d02200241186a200241086a108f80808000200229031822034202510d022003a74101710d022002290320220342ff01834204520d02410a410f41092003422088a72201410f461b2001410a461b22014109460d02410221050c040b2002280210200228021410918080800041014b0d01200241186a200241086a108f80808000200229031822034202510d012003a74101710d012002290320220342ff018342cb00520d01410021010240034020014110460d01200241306a20016a4202370300200141086a21010c000b0b2003200241306aad4220864204844284808080201081808080001a200241186a200229033010938080800020022802184101460d012002290338220342ff018342cb00520d0120022903202104410321050c020b200041043a00000c030b200041043a00000c020b0b200020063703182000200337031020002004370308200020013a0001200020053a00000b200241c0006a2480808080000b02000b4a02017e017f42022102024020012802082203200128020c4f0d00200020012903002003ad4220864204841083808080003703082001200341016a360208420021020b200020023703000b1c0020002001ad4220864204842002ad422086420484108c808080000b1900024020012000490d00200120006b0f0b109a80808000000b3100024020022004460d00000b20002001ad4220864204842003ad4220864204842002ad422086420484108b808080001a0b5d02017f017e024002402001a741ff0171220241c100460d00024020024107460d00420121034283908080800121010c020b20014208872101420021030c010b42002103200110828080800021010b20002003370300200020013703080bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cb00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cc00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000b2801017f23808080800041106b220041828080800036020c200028020c1a41002d00b880c080001a0b4301017f23808080800041106b220041818080800036020c200028020c1a200041838080800036020820002802081a41002d00d480c080001a41002d00c680c080001a0b7803017f017e017f23808080800041106b220224808080800042022103024020012802082204200128020c4f0d00200220012903002004ad42208642048410838080800010938080800020022903002103200020022903083703082001200441016a3602080b20002003370300200241106a2480808080000bd60404027f017e017f057e23808080800041c0006b22022480808080002002200137030820022000370300200241106a2002108d8080800002400240024020022d001022034104460d00200229032021012002290318210420023100112100200241106a200241086a108d8080800020022d001022054104460d00200229032021062002290318210720023100112108420021094200210a024002400240024020030e0405020100050b200110808080800021002002410036023820022001370330200220004220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0620022903182200420053200120007c2200200153470d06200021010c000b0b2000210a0c030b2001420053200420017c220a20045373450d020c030b2001420053200420017c220a20045373450d010c020b000b0240024002400240024020050e0404020100040b200610808080800021012002410036023820022006370330200220014220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0520022903182200420053200120007c2200200153470d05200021010c000b0b200821090c020b2006420053200720067c2209200753730d020c010b2001420053200720017c2209200753730d010b2009420053200a20097c2201200a53730d000240024020014280808080808080c0007c42ffffffffffffffff00560d00200142088642078421010c010b200110848080800021010b200241c0006a24808080800020010f0b109a80808000000b090010a080808000000bf90102017f017e23808080800041206b2201248080808000200141828080800036020820012802081a41002d00b880c080001a200141086a2000109480808000024020012802084101460d00024002402001290318220010808080800042ffffffff0f560d00200141828080800036020820012802081a41002d00b880c080001a420221000c010b200141086a200010858080800010948080800020012802084101460d012001290310210020012903182102200141828080800036020820012802081a41002d00b880c080001a2001200237031020012000370308200141086a109c8080800021000b200141206a24808080800020000f0b000b240041b081c08000ad4220864204842000ad422086420484428480808020108a808080000b850704017f017e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a0240200042ff018342cb00520d00200010808080800021032002410036021020022000370308200220034220883e0214200241186a200241086a108f80808000200229031822004202510d002000a74101710d00024020022903202200a741ff0171220441ca00460d002004410e470d010b024002400240024002400240200041d881c080004102109080808000422088a70e020100060b2002280210200228021410918080800041014b0d05200241306a200241086a108f80808000200229033022004202510d052000a74101710d05200241186a200229033810958080800020022802184101460d05200142ff01834204520d052002290328220020014284808080708322011086808080004201520d0120002001108780808000220042ff018342cb00520d05200010808080800021012002410036021020022000370308200220014220883e0214200241186a200241086a108f80808000200229031822004202510d052000a74101710d05024020022903202200a741ff0171220441ca00460d002004410e470d060b200041d881c080004102109080808000422088a70e020203050b200228021020022802141091808080000d04200142ff01834204520d040b420221000c020b200228021020022802141091808080000d02420021000c010b2002280210200228021410918080800041014b0d01200241306a200241086a108f80808000200229033022004202510d012000a74101710d01200241186a200229033810958080800020022802180d012002290328210520022903202103420121000b200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a42022101024020004202510d0002402000a7410171450d00200241186a41cc81c080004109109e8080800020022802180d022002290320210020022005370320200220033703182002200241186a109c8080800037032020022000370318200241186a4102109f8080800021010c010b200241186a41c081c08000410c109e8080800020022802180d0120022002290320370318200241186a4101109f8080800021010b200241c0006a24808080800020010f0b000bd60102017e037f02400240200241094b0d0042002103410021040340024020044109470d002003420886420e8421030c030b410121050240200120046a2d0000220641df00460d0002400240200641506a41ff0171410a490d00200641bf7f6a41ff0171411a490d012006419f7f6a41ff0171411a4f0d04200641456a21050c020b200641526a21050c010b2006414b6a21050b20034206862005ad42ff0183842103200441016a21040c000b0b2001ad4220864204842002ad42208642048410898080800021030b20004200370300200020033703080b1a002000ad4220864204842001ad4220864204841088808080000b0300000b0bf2010100418080c0000be8015370456356311c8f201ad0d286b4537045635631dd0c966136ac0d25537045635631fb28a13fa92d6f1c537045635631241adaa8135d1e1c537045635631131c19bea57cff26537045635631ba36a478487b3dee5370456356314140810c80812d7e556474415564744255647443556474440000620010000400000066001000040000006a001000040000006e0010000400000061626300940010000100000095001000010000009600100001000000940010000100000095001000010000004e6f74526563757273697665526563757273697665000000c00010000c000000cc001000090000000087210e636f6e74726163747370656376300000000000000000000000036164640000000002000000000000000161000000000007d000000011746573745f7564743a3a556474456e756d000000000000000000000162000000000007d000000011746573745f7564743a3a556474456e756d000000000000010000000700000002000000000000000000000011746573745f7564743a3a556474456e756d00000000000004000000000000000000000004556474410000000100000000000000045564744200000001000007d000000013746573745f7564743a3a556474537472756374000000000100000000000000045564744300000001000007d000000012746573745f7564743a3a556474456e756d3200000000000100000000000000045564744400000001000007d000000012746573745f7564743a3a5564745475706c65000000000003000000000000000000000012746573745f7564743a3a556474456e756d320000000000020000000000000001410000000000000a0000000000000001420000000000000f00000001000000000000000000000012746573745f7564743a3a5564745475706c6500000000000200000000000000013000000000000007000000000000000131000000000003ea0000000700000001000000000000000000000013746573745f7564743a3a55647453747275637400000000030000000000000001610000000000000700000000000000016200000000000007000000000000000163000000000003ea0000000700000000000000000000000972656375727369766500000000000001000000000000000161000000000007d000000016746573745f7564743a3a556474526563757273697665000000000001000003e8000007d000000016746573745f7564743a3a556474526563757273697665000000000001000000000000000000000016746573745f7564743a3a55647452656375727369766500000000000200000000000000016100000000000011000000000000000162000000000003ea000007d000000016746573745f7564743a3a556474526563757273697665000000000002000000000000000000000017746573745f7564743a3a526563757273697665456e756d000000000200000000000000000000000c4e6f7452656375727369766500000001000000000000000952656375727369766500000000000001000007d000000019746573745f7564743a3a526563757273697665546f456e756d00000000000001000000000000000000000019746573745f7564743a3a526563757273697665546f456e756d0000000000000200000000000000016100000000000011000000000000000162000000000003ec00000004000007d000000017746573745f7564743a3a526563757273697665456e756d0000000000000000000000000e7265637572736976655f656e756d000000000002000000000000000161000000000007d000000017746573745f7564743a3a526563757273697665456e756d0000000000000000036b6579000000000400000001000003e9000003e8000007d000000017746573745f7564743a3a526563757273697665456e756d000000000300000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e00000000000000001a736f726f62616e5f73646b3a3a617574683a3a436f6e746578740000000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e746578740000000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e7465787400000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e0000000000000000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e74657874000000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000028736f726f62616e5f73646b3a3a617574683a3a537562436f6e7472616374496e766f636174696f6e000000020000000000000007636f6e7465787400000007d000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e746578740000000000000000000f7375625f696e766f636174696f6e7300000003ea000007d00000002b736f726f62616e5f73646b3a3a617574683a3a496e766f6b6572436f6e747261637441757468456e74727900000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e00000000000000002b736f726f62616e5f73646b3a3a617574683a3a496e766f6b6572436f6e747261637441757468456e74727900000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000028736f726f62616e5f73646b3a3a617574683a3a537562436f6e7472616374496e766f636174696f6e0000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e746578740000000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e74657874000000000002000000000000000a65786563757461626c650000000007d000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000000000000473616c74000003ee0000002000000002000000000000000000000020736f726f62616e5f73646b3a3a616464726573733a3a45786563757461626c65000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001c00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" } }, "ext": "v0" diff --git a/tests/udt/test_snapshots/test_with_wasm/test_recursive_enum.1.json b/tests/udt/test_snapshots/test_with_wasm/test_recursive_enum.1.json index be568971e..9c8424b89 100644 --- a/tests/udt/test_snapshots/test_with_wasm/test_recursive_enum.1.json +++ b/tests/udt/test_snapshots/test_with_wasm/test_recursive_enum.1.json @@ -18,7 +18,7 @@ } }, "executable": { - "wasm": "89a0503a4ef3132c6779d0ca9438d736401c2b3dc7691695c8378205ea625948" + "wasm": "3693efd566a8e0a63612817cfd89e6175f669a0aca6db2ba845bfa701bf96ab7" }, "constructor_args": [] } @@ -72,7 +72,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "89a0503a4ef3132c6779d0ca9438d736401c2b3dc7691695c8378205ea625948" + "wasm": "3693efd566a8e0a63612817cfd89e6175f669a0aca6db2ba845bfa701bf96ab7" }, "storage": null } @@ -106,8 +106,8 @@ } } }, - "hash": "89a0503a4ef3132c6779d0ca9438d736401c2b3dc7691695c8378205ea625948", - "code": "0061736d01000000014e0d60017e017e60037e7e7e017e60027e7e017e60047e7e7e7e017e60027f7f0060000060037e7f7f017e60027f7f017f60057e7f7f7f7f0060027f7e0060017f017e60037f7f7f0060027f7f017e024f0d017601330000017601680001016901320000017601310002016901310000017601380000016d01340002016d013100020176016700020162016a0002016d01390001016d016100030162016d00010315140405040607080909090505040205000a020b0c050405017001040405030100110621047f01418080c0000b7f0041e881c0000b7f0041e881c0000b7f0041f081c0000b074c07066d656d6f7279020003616464001909726563757273697665001b0e7265637572736976655f656e756d001d015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030909010041010b030e16170af11d14850704017f027e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a41002d00aa80c080001a41002d008e80c080001a200241818080800036021820022802181a41002d009c80c080001a41002d008080c080001a024002402001290300220342ff018342cb00510d00200041043a00000c010b200310808080800021042002410036021020022003370308200220044220883e0214200241186a200241086a108f808080000240024002400240200229031822034202510d002003a74101710d00024020022903202203a741ff0171220141ca00460d002001410e470d010b0240024002400240200341f480c080004104109080808000422088a70e0400010203050b200228021020022802141091808080000d04410021050c050b2002280210200228021410918080800041014b0d03200241186a200241086a108f80808000200229031822034202510d032003a74101710d0320022903202103410021010240034020014118460d01200241186a20016a4202370300200141086a21010c000b0b200342ff018342cc00520d032003419881c080004103200241186a4103109280808000200241306a200229031810938080800020022802300d0320022903382104200241306a200229032010938080800020022802300d032002290328220642ff018342cb00520d0320022903382103410121050c040b2002280210200228021410918080800041014b0d02200241186a200241086a108f80808000200229031822034202510d022003a74101710d022002290320220342ff01834204520d02410a410f41092003422088a72201410f461b2001410a461b22014109460d02410221050c040b2002280210200228021410918080800041014b0d01200241186a200241086a108f80808000200229031822034202510d012003a74101710d012002290320220342ff018342cb00520d01410021010240034020014110460d01200241306a20016a4202370300200141086a21010c000b0b2003200241306aad4220864204844284808080201081808080001a200241186a200229033010938080800020022802184101460d012002290338220342ff018342cb00520d0120022903202104410321050c020b200041043a00000c030b200041043a00000c020b0b200020063703182000200337031020002004370308200020013a0001200020053a00000b200241c0006a2480808080000b02000b4a02017e017f42022102024020012802082203200128020c4f0d00200020012903002003ad4220864204841083808080003703082001200341016a360208420021020b200020023703000b1c0020002001ad4220864204842002ad422086420484108c808080000b1900024020012000490d00200120006b0f0b109a80808000000b3100024020022004460d00000b20002001ad4220864204842003ad4220864204842002ad422086420484108b808080001a0b5d02017f017e024002402001a741ff0171220241c100460d00024020024107460d00420121034283908080800121010c020b20014208872101420021030c010b42002103200110828080800021010b20002003370300200020013703080bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cb00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cc00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000b2801017f23808080800041106b220041828080800036020c200028020c1a41002d00b880c080001a0b4301017f23808080800041106b220041818080800036020c200028020c1a200041838080800036020820002802081a41002d00d480c080001a41002d00c680c080001a0b7803017f017e017f23808080800041106b220224808080800042022103024020012802082204200128020c4f0d00200220012903002004ad42208642048410838080800010938080800020022903002103200020022903083703082001200441016a3602080b20002003370300200241106a2480808080000bd60404027f017e017f057e23808080800041c0006b22022480808080002002200137030820022000370300200241106a2002108d8080800002400240024020022d001022034104460d00200229032021012002290318210420023100112100200241106a200241086a108d8080800020022d001022054104460d00200229032021062002290318210720023100112108420021094200210a024002400240024020030e0405020100050b200110808080800021002002410036023820022001370330200220004220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0620022903182200420053200120007c2200200153470d06200021010c000b0b2000210a0c030b2001420053200420017c220a20045373450d020c030b2001420053200420017c220a20045373450d010c020b000b0240024002400240024020050e0404020100040b200610808080800021012002410036023820022006370330200220014220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0520022903182200420053200120007c2200200153470d05200021010c000b0b200821090c020b2006420053200720067c2209200753730d020c010b2001420053200720017c2209200753730d010b2009420053200a20097c2201200a53730d000240024020014280808080808080c0007c42ffffffffffffffff00560d00200142088642078421010c010b200110848080800021010b200241c0006a24808080800020010f0b109a80808000000b090010a080808000000bf90102017f017e23808080800041206b2201248080808000200141828080800036020820012802081a41002d00b880c080001a200141086a2000109480808000024020012802084101460d00024002402001290318220010808080800042ffffffff0f560d00200141828080800036020820012802081a41002d00b880c080001a420221000c010b200141086a200010858080800010948080800020012802084101460d012001290310210020012903182102200141828080800036020820012802081a41002d00b880c080001a2001200237031020012000370308200141086a109c8080800021000b200141206a24808080800020000f0b000b240041b081c08000ad4220864204842000ad422086420484428480808020108a808080000b850704017f017e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a0240200042ff018342cb00520d00200010808080800021032002410036021020022000370308200220034220883e0214200241186a200241086a108f80808000200229031822004202510d002000a74101710d00024020022903202200a741ff0171220441ca00460d002004410e470d010b024002400240024002400240200041d881c080004102109080808000422088a70e020100060b2002280210200228021410918080800041014b0d05200241306a200241086a108f80808000200229033022004202510d052000a74101710d05200241186a200229033810958080800020022802184101460d05200142ff01834204520d052002290328220020014284808080708322011086808080004201520d0120002001108780808000220042ff018342cb00520d05200010808080800021012002410036021020022000370308200220014220883e0214200241186a200241086a108f80808000200229031822004202510d052000a74101710d05024020022903202200a741ff0171220441ca00460d002004410e470d060b200041d881c080004102109080808000422088a70e020203050b200228021020022802141091808080000d04200142ff01834204520d040b420221000c020b200228021020022802141091808080000d02420021000c010b2002280210200228021410918080800041014b0d01200241306a200241086a108f80808000200229033022004202510d012000a74101710d01200241186a200229033810958080800020022802180d012002290328210520022903202103420121000b200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a42022101024020004202510d0002402000a7410171450d00200241186a41cc81c080004109109e8080800020022802180d022002290320210020022005370320200220033703182002200241186a109c8080800037032020022000370318200241186a4102109f8080800021010c010b200241186a41c081c08000410c109e8080800020022802180d0120022002290320370318200241186a4101109f8080800021010b200241c0006a24808080800020010f0b000bd60102017e037f02400240200241094b0d0042002103410021040340024020044109470d002003420886420e8421030c030b410121050240200120046a2d0000220641df00460d0002400240200641506a41ff0171410a490d00200641bf7f6a41ff0171411a490d012006419f7f6a41ff0171411a4f0d04200641456a21050c020b200641526a21050c010b2006414b6a21050b20034206862005ad42ff0183842103200441016a21040c000b0b2001ad4220864204842002ad42208642048410898080800021030b20004200370300200020033703080b1a002000ad4220864204842001ad4220864204841088808080000b0300000b0bf2010100418080c0000be801537045635631f3b0ab40690d48b4537045635631aff793ba9e4dde9a537045635631eb9f12269a76282a53704563563116276438ffc9b1f8537045635631c81291fed713f59c537045635631ff7b5620ab0ddc64537045635631e16f55dbd4379814556474415564744255647443556474440000620010000400000066001000040000006a001000040000006e0010000400000061626300940010000100000095001000010000009600100001000000940010000100000095001000010000004e6f74526563757273697665526563757273697665000000c00010000c000000cc0010000900000000db1c0e636f6e74726163747370656376300000000000000000000000036164640000000002000000000000000161000000000007d000000007556474456e756d00000000000000000162000000000007d000000007556474456e756d00000000010000000700000002000000000000000000000007556474456e756d0000000004000000000000000000000004556474410000000100000000000000045564744200000001000007d0000000095564745374727563740000000000000100000000000000045564744300000001000007d000000008556474456e756d320000000100000000000000045564744400000001000007d0000000085564745475706c6500000003000000000000000000000008556474456e756d32000000020000000000000001410000000000000a0000000000000001420000000000000f000000010000000000000000000000085564745475706c650000000200000000000000013000000000000007000000000000000131000000000003ea0000000700000001000000000000000000000009556474537472756374000000000000030000000000000001610000000000000700000000000000016200000000000007000000000000000163000000000003ea0000000700000000000000000000000972656375727369766500000000000001000000000000000161000000000007d00000000c55647452656375727369766500000001000003e8000007d00000000c5564745265637572736976650000000100000000000000000000000c5564745265637572736976650000000200000000000000016100000000000011000000000000000162000000000003ea000007d00000000c5564745265637572736976650000000200000000000000000000000d526563757273697665456e756d0000000000000200000000000000000000000c4e6f7452656375727369766500000001000000000000000952656375727369766500000000000001000007d00000000f526563757273697665546f456e756d000000000100000000000000000000000f526563757273697665546f456e756d000000000200000000000000016100000000000011000000000000000162000000000003ec00000004000007d00000000d526563757273697665456e756d00000000000000000000000000000e7265637572736976655f656e756d000000000002000000000000000161000000000007d00000000d526563757273697665456e756d00000000000000000000036b6579000000000400000001000003e9000003e8000007d00000000d526563757273697665456e756d0000000000000300000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d00000000f436f6e7472616374436f6e7465787400000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e74657874000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d00000000f436f6e7472616374436f6e7465787400000000000000000f7375625f696e766f636174696f6e7300000003ea000007d000000018496e766f6b6572436f6e747261637441757468456e747279000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000015537562436f6e7472616374496e766f636174696f6e0000000000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e7465787400000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001c00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + "hash": "3693efd566a8e0a63612817cfd89e6175f669a0aca6db2ba845bfa701bf96ab7", + "code": "0061736d01000000014e0d60017e017e60037e7e7e017e60027e7e017e60047e7e7e7e017e60027f7f0060000060037e7f7f017e60027f7f017f60057e7f7f7f7f0060027f7e0060017f017e60037f7f7f0060027f7f017e024f0d017601330000017601680001016901320000017601310002016901310000017601380000016d01340002016d013100020176016700020162016a0002016d01390001016d016100030162016d00010315140405040607080909090505040205000a020b0c050405017001040405030100110621047f01418080c0000b7f0041e881c0000b7f0041e881c0000b7f0041f081c0000b074c07066d656d6f7279020003616464001909726563757273697665001b0e7265637572736976655f656e756d001d015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030909010041010b030e16170af11d14850704017f027e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a41002d00aa80c080001a41002d008e80c080001a200241818080800036021820022802181a41002d009c80c080001a41002d008080c080001a024002402001290300220342ff018342cb00510d00200041043a00000c010b200310808080800021042002410036021020022003370308200220044220883e0214200241186a200241086a108f808080000240024002400240200229031822034202510d002003a74101710d00024020022903202203a741ff0171220141ca00460d002001410e470d010b0240024002400240200341f480c080004104109080808000422088a70e0400010203050b200228021020022802141091808080000d04410021050c050b2002280210200228021410918080800041014b0d03200241186a200241086a108f80808000200229031822034202510d032003a74101710d0320022903202103410021010240034020014118460d01200241186a20016a4202370300200141086a21010c000b0b200342ff018342cc00520d032003419881c080004103200241186a4103109280808000200241306a200229031810938080800020022802300d0320022903382104200241306a200229032010938080800020022802300d032002290328220642ff018342cb00520d0320022903382103410121050c040b2002280210200228021410918080800041014b0d02200241186a200241086a108f80808000200229031822034202510d022003a74101710d022002290320220342ff01834204520d02410a410f41092003422088a72201410f461b2001410a461b22014109460d02410221050c040b2002280210200228021410918080800041014b0d01200241186a200241086a108f80808000200229031822034202510d012003a74101710d012002290320220342ff018342cb00520d01410021010240034020014110460d01200241306a20016a4202370300200141086a21010c000b0b2003200241306aad4220864204844284808080201081808080001a200241186a200229033010938080800020022802184101460d012002290338220342ff018342cb00520d0120022903202104410321050c020b200041043a00000c030b200041043a00000c020b0b200020063703182000200337031020002004370308200020013a0001200020053a00000b200241c0006a2480808080000b02000b4a02017e017f42022102024020012802082203200128020c4f0d00200020012903002003ad4220864204841083808080003703082001200341016a360208420021020b200020023703000b1c0020002001ad4220864204842002ad422086420484108c808080000b1900024020012000490d00200120006b0f0b109a80808000000b3100024020022004460d00000b20002001ad4220864204842003ad4220864204842002ad422086420484108b808080001a0b5d02017f017e024002402001a741ff0171220241c100460d00024020024107460d00420121034283908080800121010c020b20014208872101420021030c010b42002103200110828080800021010b20002003370300200020013703080bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cb00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cc00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000b2801017f23808080800041106b220041828080800036020c200028020c1a41002d00b880c080001a0b4301017f23808080800041106b220041818080800036020c200028020c1a200041838080800036020820002802081a41002d00d480c080001a41002d00c680c080001a0b7803017f017e017f23808080800041106b220224808080800042022103024020012802082204200128020c4f0d00200220012903002004ad42208642048410838080800010938080800020022903002103200020022903083703082001200441016a3602080b20002003370300200241106a2480808080000bd60404027f017e017f057e23808080800041c0006b22022480808080002002200137030820022000370300200241106a2002108d8080800002400240024020022d001022034104460d00200229032021012002290318210420023100112100200241106a200241086a108d8080800020022d001022054104460d00200229032021062002290318210720023100112108420021094200210a024002400240024020030e0405020100050b200110808080800021002002410036023820022001370330200220004220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0620022903182200420053200120007c2200200153470d06200021010c000b0b2000210a0c030b2001420053200420017c220a20045373450d020c030b2001420053200420017c220a20045373450d010c020b000b0240024002400240024020050e0404020100040b200610808080800021012002410036023820022006370330200220014220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0520022903182200420053200120007c2200200153470d05200021010c000b0b200821090c020b2006420053200720067c2209200753730d020c010b2001420053200720017c2209200753730d010b2009420053200a20097c2201200a53730d000240024020014280808080808080c0007c42ffffffffffffffff00560d00200142088642078421010c010b200110848080800021010b200241c0006a24808080800020010f0b109a80808000000b090010a080808000000bf90102017f017e23808080800041206b2201248080808000200141828080800036020820012802081a41002d00b880c080001a200141086a2000109480808000024020012802084101460d00024002402001290318220010808080800042ffffffff0f560d00200141828080800036020820012802081a41002d00b880c080001a420221000c010b200141086a200010858080800010948080800020012802084101460d012001290310210020012903182102200141828080800036020820012802081a41002d00b880c080001a2001200237031020012000370308200141086a109c8080800021000b200141206a24808080800020000f0b000b240041b081c08000ad4220864204842000ad422086420484428480808020108a808080000b850704017f017e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a0240200042ff018342cb00520d00200010808080800021032002410036021020022000370308200220034220883e0214200241186a200241086a108f80808000200229031822004202510d002000a74101710d00024020022903202200a741ff0171220441ca00460d002004410e470d010b024002400240024002400240200041d881c080004102109080808000422088a70e020100060b2002280210200228021410918080800041014b0d05200241306a200241086a108f80808000200229033022004202510d052000a74101710d05200241186a200229033810958080800020022802184101460d05200142ff01834204520d052002290328220020014284808080708322011086808080004201520d0120002001108780808000220042ff018342cb00520d05200010808080800021012002410036021020022000370308200220014220883e0214200241186a200241086a108f80808000200229031822004202510d052000a74101710d05024020022903202200a741ff0171220441ca00460d002004410e470d060b200041d881c080004102109080808000422088a70e020203050b200228021020022802141091808080000d04200142ff01834204520d040b420221000c020b200228021020022802141091808080000d02420021000c010b2002280210200228021410918080800041014b0d01200241306a200241086a108f80808000200229033022004202510d012000a74101710d01200241186a200229033810958080800020022802180d012002290328210520022903202103420121000b200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a42022101024020004202510d0002402000a7410171450d00200241186a41cc81c080004109109e8080800020022802180d022002290320210020022005370320200220033703182002200241186a109c8080800037032020022000370318200241186a4102109f8080800021010c010b200241186a41c081c08000410c109e8080800020022802180d0120022002290320370318200241186a4101109f8080800021010b200241c0006a24808080800020010f0b000bd60102017e037f02400240200241094b0d0042002103410021040340024020044109470d002003420886420e8421030c030b410121050240200120046a2d0000220641df00460d0002400240200641506a41ff0171410a490d00200641bf7f6a41ff0171411a490d012006419f7f6a41ff0171411a4f0d04200641456a21050c020b200641526a21050c010b2006414b6a21050b20034206862005ad42ff0183842103200441016a21040c000b0b2001ad4220864204842002ad42208642048410898080800021030b20004200370300200020033703080b1a002000ad4220864204842001ad4220864204841088808080000b0300000b0bf2010100418080c0000be8015370456356311c8f201ad0d286b4537045635631dd0c966136ac0d25537045635631fb28a13fa92d6f1c537045635631241adaa8135d1e1c537045635631131c19bea57cff26537045635631ba36a478487b3dee5370456356314140810c80812d7e556474415564744255647443556474440000620010000400000066001000040000006a001000040000006e0010000400000061626300940010000100000095001000010000009600100001000000940010000100000095001000010000004e6f74526563757273697665526563757273697665000000c00010000c000000cc001000090000000087210e636f6e74726163747370656376300000000000000000000000036164640000000002000000000000000161000000000007d000000011746573745f7564743a3a556474456e756d000000000000000000000162000000000007d000000011746573745f7564743a3a556474456e756d000000000000010000000700000002000000000000000000000011746573745f7564743a3a556474456e756d00000000000004000000000000000000000004556474410000000100000000000000045564744200000001000007d000000013746573745f7564743a3a556474537472756374000000000100000000000000045564744300000001000007d000000012746573745f7564743a3a556474456e756d3200000000000100000000000000045564744400000001000007d000000012746573745f7564743a3a5564745475706c65000000000003000000000000000000000012746573745f7564743a3a556474456e756d320000000000020000000000000001410000000000000a0000000000000001420000000000000f00000001000000000000000000000012746573745f7564743a3a5564745475706c6500000000000200000000000000013000000000000007000000000000000131000000000003ea0000000700000001000000000000000000000013746573745f7564743a3a55647453747275637400000000030000000000000001610000000000000700000000000000016200000000000007000000000000000163000000000003ea0000000700000000000000000000000972656375727369766500000000000001000000000000000161000000000007d000000016746573745f7564743a3a556474526563757273697665000000000001000003e8000007d000000016746573745f7564743a3a556474526563757273697665000000000001000000000000000000000016746573745f7564743a3a55647452656375727369766500000000000200000000000000016100000000000011000000000000000162000000000003ea000007d000000016746573745f7564743a3a556474526563757273697665000000000002000000000000000000000017746573745f7564743a3a526563757273697665456e756d000000000200000000000000000000000c4e6f7452656375727369766500000001000000000000000952656375727369766500000000000001000007d000000019746573745f7564743a3a526563757273697665546f456e756d00000000000001000000000000000000000019746573745f7564743a3a526563757273697665546f456e756d0000000000000200000000000000016100000000000011000000000000000162000000000003ec00000004000007d000000017746573745f7564743a3a526563757273697665456e756d0000000000000000000000000e7265637572736976655f656e756d000000000002000000000000000161000000000007d000000017746573745f7564743a3a526563757273697665456e756d0000000000000000036b6579000000000400000001000003e9000003e8000007d000000017746573745f7564743a3a526563757273697665456e756d000000000300000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e00000000000000001a736f726f62616e5f73646b3a3a617574683a3a436f6e746578740000000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e746578740000000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e7465787400000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e0000000000000000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e74657874000000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000028736f726f62616e5f73646b3a3a617574683a3a537562436f6e7472616374496e766f636174696f6e000000020000000000000007636f6e7465787400000007d000000022736f726f62616e5f73646b3a3a617574683a3a436f6e7472616374436f6e746578740000000000000000000f7375625f696e766f636174696f6e7300000003ea000007d00000002b736f726f62616e5f73646b3a3a617574683a3a496e766f6b6572436f6e747261637441757468456e74727900000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e00000000000000002b736f726f62616e5f73646b3a3a617574683a3a496e766f6b6572436f6e747261637441757468456e74727900000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000028736f726f62616e5f73646b3a3a617574683a3a537562436f6e7472616374496e766f636174696f6e0000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e746578740000000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000002e736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e7472616374486f7374466e436f6e74657874000000000002000000000000000a65786563757461626c650000000007d000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000003d736f726f62616e5f73646b3a3a617574683a3a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000025736f726f62616e5f73646b3a3a617574683a3a436f6e747261637445786563757461626c65000000000000000000000473616c74000003ee0000002000000002000000000000000000000020736f726f62616e5f73646b3a3a616464726573733a3a45786563757461626c65000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001c00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" } }, "ext": "v0"