diff --git a/search-index.json b/search-index.json index 04a8ade..02a62dc 100644 --- a/search-index.json +++ b/search-index.json @@ -1 +1 @@ -[{"documents":[{"i":1,"t":"cddl-codegen","u":"/cddl-codegen/","b":[]},{"i":5,"t":"Command line flags","u":"/cddl-codegen/command_line_flags","b":[]},{"i":7,"t":"Current capacities","u":"/cddl-codegen/current_capacities","b":[]},{"i":14,"t":"Comment DSL","u":"/cddl-codegen/comment_dsl","b":[]},{"i":24,"t":"Examples","u":"/cddl-codegen/examples","b":[]},{"i":39,"t":"Installation & Getting Started","u":"/cddl-codegen/getting_started","b":[]},{"i":46,"t":"Output format","u":"/cddl-codegen/output_format","b":[]},{"i":48,"t":"Wasm Differences","u":"/cddl-codegen/wasm_differences","b":[]}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/1",[0,1.877,1,1.877]],["t/5",[2,1.577,3,1.577,4,1.577]],["t/7",[5,1.877,6,1.877]],["t/14",[7,1.877,8,1.877]],["t/24",[9,2.319]],["t/39",[10,1.359,11,1.359,12,1.359,13,1.359]],["t/46",[14,1.877,15,1.877]],["t/48",[16,1.877,17,1.877]]],"invertedIndex":[["",{"_index":11,"t":{"39":{"position":[[13,1]]}}}],["capac",{"_index":6,"t":{"7":{"position":[[8,10]]}}}],["cddl",{"_index":0,"t":{"1":{"position":[[0,4]]}}}],["codegen",{"_index":1,"t":{"1":{"position":[[5,7]]}}}],["command",{"_index":2,"t":{"5":{"position":[[0,7]]}}}],["comment",{"_index":7,"t":{"14":{"position":[[0,7]]}}}],["current",{"_index":5,"t":{"7":{"position":[[0,7]]}}}],["differ",{"_index":17,"t":{"48":{"position":[[5,11]]}}}],["dsl",{"_index":8,"t":{"14":{"position":[[8,3]]}}}],["exampl",{"_index":9,"t":{"24":{"position":[[0,8]]}}}],["flag",{"_index":4,"t":{"5":{"position":[[13,5]]}}}],["format",{"_index":15,"t":{"46":{"position":[[7,6]]}}}],["get",{"_index":12,"t":{"39":{"position":[[15,7]]}}}],["instal",{"_index":10,"t":{"39":{"position":[[0,12]]}}}],["line",{"_index":3,"t":{"5":{"position":[[8,4]]}}}],["output",{"_index":14,"t":{"46":{"position":[[0,6]]}}}],["start",{"_index":13,"t":{"39":{"position":[[23,7]]}}}],["wasm",{"_index":16,"t":{"48":{"position":[[0,4]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":3,"t":"Purpose","u":"/cddl-codegen/","h":"#purpose","p":1},{"i":8,"t":"Types","u":"/cddl-codegen/current_capacities","h":"#types","p":7},{"i":10,"t":"Group choices","u":"/cddl-codegen/current_capacities","h":"#group-choices","p":7},{"i":12,"t":"Type choices","u":"/cddl-codegen/current_capacities","h":"#type-choices","p":7},{"i":16,"t":"@name","u":"/cddl-codegen/comment_dsl","h":"#name","p":14},{"i":18,"t":"@newtype","u":"/cddl-codegen/comment_dsl","h":"#newtype","p":14},{"i":20,"t":"@no_alias","u":"/cddl-codegen/comment_dsl","h":"#no_alias","p":14},{"i":22,"t":"CDDL_CODEGEN_EXTERN_TYPE","u":"/cddl-codegen/comment_dsl","h":"#cddl_codegen_extern_type","p":14},{"i":25,"t":"Aliases","u":"/cddl-codegen/examples","h":"#aliases","p":24},{"i":27,"t":"Size/length requirements on primitives","u":"/cddl-codegen/examples","h":"#sizelength-requirements-on-primitives","p":24},{"i":29,"t":"Array struct","u":"/cddl-codegen/examples","h":"#array-struct","p":24},{"i":31,"t":"Mark as externally defined.","u":"/cddl-codegen/examples","h":"#mark-as-externally-defined","p":24},{"i":33,"t":"Map struct","u":"/cddl-codegen/examples","h":"#map-struct","p":24},{"i":35,"t":"Basic groups","u":"/cddl-codegen/examples","h":"#basic-groups","p":24},{"i":37,"t":"Type Choices","u":"/cddl-codegen/examples","h":"#type-choices","p":24},{"i":40,"t":"Install","u":"/cddl-codegen/getting_started","h":"#install","p":39},{"i":42,"t":"Run Example","u":"/cddl-codegen/getting_started","h":"#run-example","p":39},{"i":44,"t":"Build","u":"/cddl-codegen/getting_started","h":"#build","p":39},{"i":50,"t":"Heterogeneous Arrays","u":"/cddl-codegen/wasm_differences","h":"#heterogeneous-arrays","p":48},{"i":52,"t":"Tables","u":"/cddl-codegen/wasm_differences","h":"#tables","p":48},{"i":54,"t":"Enums","u":"/cddl-codegen/wasm_differences","h":"#enums","p":48}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/3",[0,3.155]],["t/8",[1,2.16]],["t/10",[2,1.956,3,1.654]],["t/12",[1,1.654,3,1.654]],["t/16",[4,3.155]],["t/18",[5,3.155]],["t/20",[6,3.155]],["t/22",[7,3.155]],["t/25",[8,3.155]],["t/27",[9,1.958,10,1.958,11,1.958]],["t/29",[12,1.956,13,1.956]],["t/31",[14,1.958,15,1.958,16,1.958]],["t/33",[13,1.956,17,2.416]],["t/35",[2,1.956,18,2.416]],["t/37",[1,1.654,3,1.654]],["t/40",[19,3.155]],["t/42",[20,2.416,21,2.416]],["t/44",[22,3.155]],["t/50",[12,1.956,23,2.416]],["t/52",[24,3.155]],["t/54",[25,3.155]]],"invertedIndex":[["alias",{"_index":8,"t":{"25":{"position":[[0,7]]}}}],["array",{"_index":12,"t":{"29":{"position":[[0,5]]},"50":{"position":[[14,6]]}}}],["basic",{"_index":18,"t":{"35":{"position":[[0,5]]}}}],["build",{"_index":22,"t":{"44":{"position":[[0,5]]}}}],["cddl_codegen_extern_typ",{"_index":7,"t":{"22":{"position":[[0,24]]}}}],["choic",{"_index":3,"t":{"10":{"position":[[6,7]]},"12":{"position":[[5,7]]},"37":{"position":[[5,7]]}}}],["defin",{"_index":16,"t":{"31":{"position":[[19,8]]}}}],["enum",{"_index":25,"t":{"54":{"position":[[0,5]]}}}],["exampl",{"_index":21,"t":{"42":{"position":[[4,7]]}}}],["extern",{"_index":15,"t":{"31":{"position":[[8,10]]}}}],["group",{"_index":2,"t":{"10":{"position":[[0,5]]},"35":{"position":[[6,6]]}}}],["heterogen",{"_index":23,"t":{"50":{"position":[[0,13]]}}}],["instal",{"_index":19,"t":{"40":{"position":[[0,7]]}}}],["map",{"_index":17,"t":{"33":{"position":[[0,3]]}}}],["mark",{"_index":14,"t":{"31":{"position":[[0,4]]}}}],["name",{"_index":4,"t":{"16":{"position":[[0,5]]}}}],["newtyp",{"_index":5,"t":{"18":{"position":[[0,8]]}}}],["no_alia",{"_index":6,"t":{"20":{"position":[[0,9]]}}}],["primit",{"_index":11,"t":{"27":{"position":[[28,10]]}}}],["purpos",{"_index":0,"t":{"3":{"position":[[0,7]]}}}],["requir",{"_index":10,"t":{"27":{"position":[[12,12]]}}}],["run",{"_index":20,"t":{"42":{"position":[[0,3]]}}}],["size/length",{"_index":9,"t":{"27":{"position":[[0,11]]}}}],["struct",{"_index":13,"t":{"29":{"position":[[6,6]]},"33":{"position":[[4,6]]}}}],["tabl",{"_index":24,"t":{"52":{"position":[[0,6]]}}}],["type",{"_index":1,"t":{"8":{"position":[[0,5]]},"12":{"position":[[0,4]]},"37":{"position":[[0,4]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":2,"t":"Experimental library for generating rust code for CBOR (de) serialization from CDDL specs.","s":"cddl-codegen","u":"/cddl-codegen/","h":"","p":1},{"i":4,"t":"Instead of hand-writing code for CBOR parsing and writing tests to make sure it matches your CDDL spec, it's much faster to just generate the code from the spec! It will save time and make it easier to keep all your code in sync with any changes to your specification. You can learn more about CDDL here","s":"Purpose","u":"/cddl-codegen/","h":"#purpose","p":1},{"i":6,"t":"--input Specifies the input CDDL file(s). For a single file: cddl-codegen --input examples/test.cddl --output export If a directory is specified e.g. --input=some_dir then it will read all files in this directory (non-recursively). The output format changes here. If there's a lib.cddl the types contained there are the standard output , and any other file e.g. foo.cddl will have its own module foo/mod.rs with its own foo/serialization.rs, etc. cddl-codegen --input examples --output export --output Specifies the output directory. cddl-codegen --input examples --output export --lib-name Specify the rust crate name for the output library. The wasm crate will have -wasm appended. cddl-codegen --input=example --output=export --lib-name some-crate-name --to-from-bytes-methods Generates to_cbor_bytes() / from_cbor_bytes() methods on all WASM objects. On by default. (The rust code doesn't need this as you can directly use the Serialize/Deserialize traits on them.) Possible values: true, false cddl-codegen --input=example --output=export --to-from-bytes-methods true --wasm Whether to output a wasm crate. On by default. Possible values: true, false cddl-codegen --input=example --output=export --wasm false --preserve-encodings Preserves CBOR encoding upon deserialization e.g. definite vs indefinite, map ordering. For each module this will also create a cbor_encodings.rs file to potentially store any structs for storing these encodings. This option is useful if you need to preserve the deserialized format for round-tripping (e.g. hashes) or if you want to modify the format to conincide with a specific tool for hashing. Possible values: true, false cddl-codegen --input=example --output=export --preserve-encodings true --canonical-form Used primarily with --preserve-encodings to provide a way to override the specific deserialization format and to instead output canonical CBOR. This will have Serialize's trait have an extra to_canonical_cbor_bytes() method. Likewise the wasm wrappers (with --to-from-bytes-methods) will contain one too. Possible values: true, false cddl-codegen --input=example --output=export --canonical-form true --json-serde-derives Derives serde::Serialize/serde::Deserialize for types to allow to/from JSON Possible values: true, false cddl-codegen --input=example --output=export --json-serde-derives true --json-schema-export Tags types with sonSchema derives and generates a crate (in wasm/json-gen) to export them. This requires --json-serde-derives. Possible values: true, false Default: true Example: cddl-codegen --input=example --output=export --json-schema-export true --package-json Generates a npm package.json along with build scripts (some of these scripts require --json-serde-derives/--json-schema-export to work). Possible values: true, false Default: false cddl-codegen --input=example --output=export --package-json true --json-schema-export true --common-import-override Overrides the location of the static exports (e.g. error.rs, serialization.rs, etc). This is particularily useful for combining multiple crates each generated using cddl-codegen where they all share a shared core directory where the static files are located. Default: crate cddl-codegen --input=example --output=export --common-import-override=cml_core --package-json If it is passed in, it will call the supplied externally defined macro on each exported type, instead of manually exporting the functions for to/from CBOR bytes + to/from JSON API. The external macro is assumed to exist at the specified path and will be imported if there are module prefixes. The macro must take the wasm wrapper type as the only parameter. This macro will be called regardless of the values of to-from-bytes-methods / json-serde-derives / etc, so it is assumed that whatever logic your macros have is consistent with the other CLI flag values. cddl-codegen --input=example --output=export --wasm-cbor-json-api-macro=cml_core_wasm::impl_wasm_cbor_json_api --wasm-conversion-macro If it is passed in, it will call the supplied externally defined macro on each exported type, instead of manually exporting the rust/wasm conversion traits. The external macro is assumed to exist at the specified path and will be imported if there are module prefixes. The macro must take the rust type as the first parameter and the wasm wrapper type as the second one. cddl-codegen --input=example --output=export --wasm-conversion-macro=cml_core_wasm::impl_wasm_conversions","s":"Command line flags","u":"/cddl-codegen/command_line_flags","h":"","p":5},{"i":9,"t":"Primitives - bytes, bstr, tstr, text, uint, nint Fixed values - null, nil, true, false Array values - [uint] Table types as members - foo = ( x: { * a => b } ) Inline groups at root level - foo = ( a: uint, b: uint) Array groups - foo = [uint, tstr, 0, bytes] Map groups (both struct-type and table-type) - foo = { a: uint, b: tstr } or bar = { * uint => tstr } Embedding groups in other groups - foo = (0, bstr) bar = [uint, foo, foo] Group choices - foo = [ 0, uint // 1, tstr, uint // tstr } Tagged major types - rational = #6.30([ numerator : uint, denominator : uint]) Optional fields - foo = { ? 0 : bytes } Type aliases - foo = bar Type choices - foo = uint / tstr Serialization for all supported types. Deserialization for almost all supported types (see limitations section). CDDL Generics - foo = [T], bar = foo Length bounds - foo = bytes .size (0..32) cbor in bytes - foo_bytes = bytes .cbor foo Support for the CDDL standard prelude (using raw CDDL from the RFC) - biguint, etc default values - ? key : uint .default 0 We generate getters for all fields, and setters for optional fields. Mandatory fields are set via the generated constructor. All wasm-facing functions are set to take references for non-primitives and clone when needed. Returns are also cloned. This helps make usage from wasm more memory safe. Identifiers and fields are also changed to rust style. ie foo_bar = { Field-Name: text } gets converted into struct FooBar { field_name: String }","s":"Types","u":"/cddl-codegen/current_capacities","h":"#types","p":7},{"i":11,"t":"Group choices are handled as an enum with each choice being a variant. This enum is then wrapped around a wasm-exposed struct as wasm_bindgen does not support rust enums with members/values. Group choices that have only a single non-fixed-value field use just that field as the enum variant, otherwise we create a GroupN for the Nth variant enum with the fields of that group choice. Any fixed values are resolved purely in serialization code, so 0, \"hello\", uint puts the uint in the enum variant directly instead of creating a new struct.","s":"Group choices","u":"/cddl-codegen/current_capacities","h":"#group-choices","p":7},{"i":13,"t":"Type choices are handled via enums as well with the name defaulting to AOrBOrC for A / B / C when inlined as a field/etc, and will take on the type identifier if provided ie foo = A / B / C would be Foo. Any field that is T / null is transformed as a special case into Option rather than creating a TOrNull enum. A special case for this is when all types are fixed values e.g. foo = 0 / 1 / \"hello\", in which case we generate a special c-style enum in the rust. This will have wasm_bindgen tags so it can be directly used in the wasm crate. Encoding variables (for --preserve-encodings=true) are stored where the enum is used like with other primitives.","s":"Type choices","u":"/cddl-codegen/current_capacities","h":"#type-choices","p":7},{"i":15,"t":"We have a comment DSL to help annotate the output code beyond what is possible just with CDDL.","s":"Comment DSL","u":"/cddl-codegen/comment_dsl","h":"","p":14},{"i":17,"t":"For example in an array-encoded group you can give explicit names just by the keys e.g.: foo = [ bar: uint, baz: text ] but with map-encoded structs the keys are stored and for things like integer keys this isn't very helpful e.g.: tx = { ? 0: [* input], ? 1: [* outputs], } we would end up with two fields: key_0 and key_1. We can instead end up with fields named inputs and outputs by doing: tx = { ? 0: [* input], ; @name inputs ? 1: [* outputs], ; @name outputs } Note: the parsing can be finicky. For struct fields you must put the comment AFTER the comma, and the comma must exist even for the last field in a struct. It is also possible to use @name with type choices: foo = 0 ; @name mainnet / 1 ; @name testnet and also for group choices: script = [ ; @name native tag: 0, script: native_script // ; @name plutus_v1 tag: 1, script: plutus_v1_script // ; @name plutus_v2 tag: 2, script: plutus_v2_script ]","s":"@name","u":"/cddl-codegen/comment_dsl","h":"#name","p":14},{"i":19,"t":"With code like foo = uint this creates an alias e.g. pub type Foo = u64; in rust. When we use foo = uint ; @newtype it instead creates a pub struct Foo(u64);.","s":"@newtype","u":"/cddl-codegen/comment_dsl","h":"#newtype","p":14},{"i":21,"t":"foo = uint bar = [ field: foo ] This would normally result in: pub type Foo = u64; pub struct Bar { field: Foo, } but if we use @no_alias it skips generating an alias and uses it directly e.g.: foo = uint ; @no_alias bar = [ field: foo ] to pub struct Bar { field: u64, }","s":"@no_alias","u":"/cddl-codegen/comment_dsl","h":"#no_alias","p":14},{"i":23,"t":"While not as a comment, this allows you to compose in hand-written structs into a cddl spec. foo = _CDDL_CODEGEN_EXTERN_TYPE_ bar = [ x: uint, y: foo, ] This will treat Foo as a type that will exist and that has implemented the Serialize and Deserialize traits, so the (de)serialization logic in Bar here will call Foo::serialize() and Foo::deserialize(). This can also be useful when you have a spec that is either very awkward to use (so you hand-write or hand-modify after generation) in some type so you don't generate those types and instead manually merge those hand-written/hand-modified structs back in to the code afterwards. This saves you from having to manually remove all code that is generated regarding Foo first before merging in your own. This can also be useful when you have a spec that is either very awkward to use (so you hand-write or hand-modify after generation) in some type so you don't generate those types and instead manually merge those hand-written/hand-modified structs back in to the code afterwards. This saves you from having to manually remove all code that is generated regarding Foo first before merging in your own. CDDL_CODEGEN_RAW_BYTES_TYPE​ Allows encoding as bytes but imposing hand-written constraints defined elsewhere. foo = _CDDL_CODEGEN_RAW_BYTES_TYPE_ bar = [ foo, ] This will treat foo as some external type called Foo. This type must implement the exported (in serialization.rs) trait RawBytesEncoding. This can be useful for example when working with cryptographic primtivies e.g. a hash or pubkey, as it allows users to have those crypto structs be from a crypto library then they only need to implement the trait for them and they will be able to be directly used without needing any useless generated wrapper struct for the in between.","s":"CDDL_CODEGEN_EXTERN_TYPE","u":"/cddl-codegen/comment_dsl","h":"#cddl_codegen_extern_type","p":14},{"i":26,"t":"Type alias hash = bytes See generated output input​ hash = bytes output​ (export/rust/src/lib.rs) pub type Hash = Vec; Create a newtype around another type instead of an alias special_hash = bytes ; @newtype See generated output input​ special_hash = bytes ; @newtype output​ (export/rust/src/lib.rs) #[derive(Clone, Debug)] pub struct SpecialHash(pub Vec); impl SpecialHash { pub fn get(&self) -> &Vec { &self.0 } pub fn new(inner: Vec) -> Self { Self(inner) } } impl From> for SpecialHash { fn from(inner: Vec) -> Self { SpecialHash::new(inner) } } impl From for Vec { fn from(wrapper: SpecialHash) -> Self { wrapper.0 } } or don't generate either and directly use the aliased type instead hidden_hash = bytes ; @no_alias hashes = [ hash, special_hash, hidden_hash, ] See generated output input​ hash = bytes special_hash = bytes ; @newtype hidden_hash = bytes ; @no_alias hashes = [ hash, special_hash, hidden_hash, ] output​ (export/rust/src/lib.rs) pub type Hash = Vec; #[derive(Clone, Debug)] pub struct Hashes { pub hash: Hash, pub special_hash: SpecialHash, pub hidden_hash: Vec, } impl Hashes { pub fn new(hash: Hash, special_hash: SpecialHash, hidden_hash: Vec) -> Self { Self { hash, special_hash, hidden_hash, } } } #[derive(Clone, Debug)] pub struct SpecialHash(pub Vec); impl SpecialHash { pub fn get(&self) -> &Vec { &self.0 } pub fn new(inner: Vec) -> Self { Self(inner) } } impl From> for SpecialHash { fn from(inner: Vec) -> Self { SpecialHash::new(inner) } } impl From for Vec { fn from(wrapper: SpecialHash) -> Self { wrapper.0 } } info pay attention to the @name comment placement as it can be finicky","s":"Aliases","u":"/cddl-codegen/examples","h":"#aliases","p":24},{"i":28,"t":"limitations = [ u_8: uint .size 1, u_16: uint .le 65535, u_32: 0..4294967295, u_64: uint .size 8, i_8: -128..127, i_64: int .size 8, hash32: bytes .size 32, bounded: text .size (10..20), ] Integer restrictions that map to rust types are directly translated u8 in rust u_8: uint .size 1 u16 in rust u_16: uint .le 65535 u32, etc... u_32: 0..4294967295 u_64: uint .size 8 i_8: -128..127 i_64: int .size 8 One can also limit strings (text or bytes) to a specific length hash32: bytes .size 32 or to a range e.g. between 10 and 20 bytes bounded: text .size (10..20) See generated output input​ limitations = [ u_8: uint .size 1, u_16: uint .le 65535, u_32: 0..4294967295, u_64: uint .size 8, i_8: -128..127, i_64: int .size 8, hash32: bytes .size 32, bounded: text .size (10..20), ] output​ (export/rust/src/lib.rs) #[derive(Clone, Debug)] pub struct Limitations { pub u_8: u8, pub u_16: u16, pub u_32: u32, pub u_64: u64, pub i_8: i8, pub i_64: i64, pub hash32: Vec, pub bounded: String, } impl Limitations { pub fn new( u_8: u8, u_16: u16, u_32: u32, u_64: u64, i_8: i8, i_64: i64, hash32: Vec, bounded: String, ) -> Self { Self { u_8, u_16, u_32, u_64, i_8, i_64, hash32, bounded, } } }","s":"Size/length requirements on primitives","u":"/cddl-codegen/examples","h":"#sizelength-requirements-on-primitives","p":24},{"i":30,"t":"foo = [ int, name: text, fp: float64, ] All primitives are supported, e.g. uint, nint and int supported. int generates special code as no rust equivalent. Unnamed array fields try to derive name from type if possible: int Text/bytes is also supported, or one can give them an explicit name: name: text As well as floats (without --preserve-encodings=true) fp: float64 See generated output input​ foo = [ int, name: text, fp: float64, ] output​ (export/rust/src/lib.rs) #[derive(Clone, Debug)] pub struct Foo { pub index_0: Int, pub name: String, pub fp: f64, } impl Foo { pub fn new(index_0: Int, name: String, fp: f64) -> Self { Self { index_0, name, fp } } } #[derive(Clone, Debug)] pub enum Int { Uint(u64), Nint(u64), } impl Int { pub fn new_uint(value: u64) -> Self { Self::Uint(value) } /// * `value` - Value as encoded in CBOR - note: a negative `x` here would be `|x + 1|` due to CBOR's `nint` encoding e.g. to represent -5, pass in 4. pub fn new_nint(value: u64) -> Self { Self::Nint(value) } } impl std::fmt::Display for Int { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { Self::Uint(x) => write!(f, \"{}\", x), Self::Nint(x) => write!(f, \"-{}\", x + 1), } } } impl std::str::FromStr for Int { type Err = IntError; fn from_str(s: &str) -> Result { let x = i128::from_str(s).map_err(IntError::Parsing)?; Self::try_from(x).map_err(IntError::Bounds) } } impl TryFrom for Int { type Error = std::num::TryFromIntError; fn try_from(x: i128) -> Result { if x >= 0 { u64::try_from(x).map(Self::Uint) } else { u64::try_from((x + 1).abs()).map(Self::Nint) } } } #[derive(Clone, Debug)] pub enum IntError { Bounds(std::num::TryFromIntError), Parsing(std::num::ParseIntError), }","s":"Array struct","u":"/cddl-codegen/examples","h":"#array-struct","p":24},{"i":32,"t":"user has to insert/import code for this type after generation extern_foo = _CDDL_CODEGEN_EXTERN_TYPE_ See generated output input​ foo = _CDDL_CODEGEN_EXTERN_TYPE_ bar = [ x: uint, y: foo, ] output​ (export/rust/src/lib.rs) #[derive(Clone, Debug)] pub struct Bar { pub x: u64, pub y: Foo, } impl Bar { pub fn new(x: u64, y: Foo) -> Self { Self { x, y } } }","s":"Mark as externally defined.","u":"/cddl-codegen/examples","h":"#mark-as-externally-defined","p":24},{"i":34,"t":"Map struct + tagged fields + .cbor + optional fields + constants + .default bar = { foo: #6.1337(foo), extern_foo: bytes .cbor extern_foo ? derp: uint, 1 : uint / null, ; @name explicitly_named_1 ? 5: \"five\", five: 5, ? 100: uint .default 0, } Fields can be tagged and this remains a serialization detail (hidden from API) foo: #6.1337(foo), They can also be encoded as CBOR bytes which remains a serialization detail (hidden from API). This can be combined with tags as well i.e. #6.42(bytes .cbor extern_foo) extern_foo: bytes .cbor extern_foo Optional field (generates as Option) ? derp: uint, Type choice with null will result in Option too for the API. Also, you can give explicit names that differ from the key value for maps like this: 1 : uint / null, ; @name explicitly_named_1 Optional string constant (no field generated) ? 5: \"five\", Integer constant (no field generated) five: 5, This will not be an optional field in rust, as when it is not present, it will be set to 0 ? 100: uint .default 0, See generated output input​ bar = { foo: #6.1337(foo), extern_foo: bytes .cbor extern_foo ? derp: uint, 1 : uint / null, ; @name explicitly_named_1 ? 5: \"five\", five: 5, ? 100: uint .default 0, } output​ (export/rust/src/lib.rs) #[derive(Clone, Debug)] pub struct Bar { pub foo: Foo, pub extern_foo: ExternFoo, pub derp: Option, pub explicitly_named_1: Option, pub key_100: u64, } impl Bar { pub fn new(foo: Foo, extern_foo: ExternFoo, explicitly_named_1: Option) -> Self { Self { foo, extern_foo, derp: None, explicitly_named_1, key_100: 0, } } }","s":"Map struct","u":"/cddl-codegen/examples","h":"#map-struct","p":24},{"i":36,"t":"Basic groups are supported and have their own type basic = ( b: #6.23(uint), c: text, ) Basic groups are fully supported in array groups They can be put into an array struct directly i.e. embed their fields into outer, which is only a serialization detail. this field will be of type Basic; or one can embed them into a repeatable homogeneous array outer = [ a: uint, embedded: basic, homogeneous_array: [* basic], ] other_basic = ( b: uint, c: uint, ) Basic groups can be embeded in maps, BUT deserialization will not be generated due to technical limitations limitation A single basic group cannot be put into both a map and an array group for serialization which is why we had to define a separate one other_basic instead of just using basic outer_map = { a: uint, embedded: other_basic, } See generated output input​ basic = ( b: #6.23(uint), c: text, ) outer = [ a: uint, embedded: basic, homogeneous_array: [* basic], ] other_basic = ( b: uint, c: uint, ) outer_map = { a: uint, embedded: other_basic, } output​ (export/rust/src/lib.rs) #[derive(Clone, Debug)] pub struct Basic { pub b: u64, pub c: String, } impl Basic { pub fn new(b: u64, c: String) -> Self { Self { b, c } } } #[derive(Clone, Debug)] pub struct OtherBasic { pub b: u64, pub c: u64, } impl OtherBasic { pub fn new(b: u64, c: u64) -> Self { Self { b, c } } } #[derive(Clone, Debug)] pub struct Outer { pub a: u64, pub embedded: Basic, pub homogeneous_array: Vec, } impl Outer { pub fn new(a: u64, embedded: Basic, homogeneous_array: Vec) -> Self { Self { a, embedded, homogeneous_array, } } } #[derive(Clone, Debug)] pub struct OuterMap { pub a: u64, pub embedded: OtherBasic, } impl OuterMap { pub fn new(a: u64, embedded: OtherBasic) -> Self { Self { a, embedded } } } One can directly define homogeneous maps as fields (or define them at top-level). Also define homogenous arrays as fields (or define them at top-level) table_arr_members = { tab: { * text => text }, arr: [ * uint ], } type_choice = 0 ; @name you / \"hello world\" ; @name can / uint ; @name name / text ; @name variants / bytes ; @name like / #6.64([*uint]) ; @name this See generated output input​ table_arr_members = { tab: { * text => text }, arr: [ * uint ], } type_choice = 0 ; @name you / \"hello world\" ; @name can / uint ; @name name / text ; @name variants / bytes ; @name like / #6.64([*uint]) ; @name this output​ (export/rust/src/lib.rs) #[derive(Clone, Debug)] pub struct TableArrMembers { pub tab: BTreeMap, pub arr: Vec, } impl TableArrMembers { pub fn new(tab: BTreeMap, arr: Vec) -> Self { Self { tab, arr } } } #[derive(Clone, Debug)] pub enum TypeChoice { You, Can, Name(u64), Variants(String), Like(Vec), This(Vec), } impl TypeChoice { pub fn new_you() -> Self { Self::You } pub fn new_can() -> Self { Self::Can } pub fn new_name(name: u64) -> Self { Self::Name(name) } pub fn new_variants(variants: String) -> Self { Self::Variants(variants) } pub fn new_like(like: Vec) -> Self { Self::Like(like) } pub fn new_this(this: Vec) -> Self { Self::This(this) } }","s":"Basic groups","u":"/cddl-codegen/examples","h":"#basic-groups","p":24},{"i":38,"t":"If a type choice only has constants it will generate as a c-style enum (directly wasm-exposable) c_style_enum = 0 ; @name foo / 1 ; @name bar / 2 ; @name baz See generated output input​ c_style_enum = 0 ; @name foo / 1 ; @name bar / 2 ; @name baz output​ (export/rust/src/lib.rs) #[derive(Clone, Debug)] pub enum CStyleEnum { Foo, Bar, Baz, } impl CStyleEnum { pub fn new_foo() -> Self { Self::Foo } pub fn new_bar() -> Self { Self::Bar } pub fn new_baz() -> Self { Self::Baz } } If there is only one non-constant field in the inlined group then that will be inlined in the enum, but if there are multiple then a new struct will be generated from this variant group_choice = [ foo // ; @name these 0, x: uint // ; @name are 1, x: uint, y: text // ; @name also basic ; @name nameable ] choices = [ type_choice, c_style_enum, group_choice, ] See generated output input​ foo = [ int, name: text, fp: float64, ] basic = ( b: #6.23(uint), c: text, ) type_choice = 0 ; @name you / \"hello world\" ; @name can / uint ; @name name / text ; @name variants / bytes ; @name like / #6.64([*uint]) ; @name this c_style_enum = 0 ; @name foo / 1 ; @name bar / 2 ; @name baz group_choice = [ foo // ; @name these 0, x: uint // ; @name are 1, x: uint, y: text // ; @name also basic ; @name nameable ] choices = [ type_choice, c_style_enum, group_choice, ] output​ (export/rust/src/lib.rs) #[derive(Clone, Debug)] pub struct Are { pub x: u64, pub y: String, } impl Are { pub fn new(x: u64, y: String) -> Self { Self { x, y } } } #[derive(Clone, Debug)] pub struct Basic { pub b: u64, pub c: String, } impl Basic { pub fn new(b: u64, c: String) -> Self { Self { b, c } } } #[derive(Clone, Debug)] pub enum CStyleEnum { Foo, Bar, Baz, } impl CStyleEnum { pub fn new_foo() -> Self { Self::Foo } pub fn new_bar() -> Self { Self::Bar } pub fn new_baz() -> Self { Self::Baz } } #[derive(Clone, Debug)] pub struct Choices { pub type_choice: TypeChoice, pub c_style_enum: CStyleEnum, pub group_choice: GroupChoice, } impl Choices { pub fn new( type_choice: TypeChoice, c_style_enum: CStyleEnum, group_choice: GroupChoice, ) -> Self { Self { type_choice, c_style_enum, group_choice, } } } #[derive(Clone, Debug)] pub struct Foo { pub index_0: Int, pub name: String, pub fp: f64, } impl Foo { pub fn new(index_0: Int, name: String, fp: f64) -> Self { Self { index_0, name, fp } } } #[derive(Clone, Debug)] pub enum GroupChoice { Foo(Foo), These(These), Are(Are), Basic(Basic), } impl GroupChoice { pub fn new_foo(index_0: Int, name: String, fp: f64) -> Self { Self::Foo(Foo::new(index_0, name, fp)) } pub fn new_these(x: u64) -> Self { Self::These(These::new(x)) } pub fn new_are(x: u64, y: String) -> Self { Self::Are(Are::new(x, y)) } pub fn new_basic(b: u64, c: String) -> Self { Self::Basic(Basic::new(b, c)) } } #[derive(Clone, Debug)] pub enum Int { Uint(u64), Nint(u64), } impl Int { pub fn new_uint(value: u64) -> Self { Self::Uint(value) } /// * `value` - Value as encoded in CBOR - note: a negative `x` here would be `|x + 1|` due to CBOR's `nint` encoding e.g. to represent -5, pass in 4. pub fn new_nint(value: u64) -> Self { Self::Nint(value) } } impl std::fmt::Display for Int { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { Self::Uint(x) => write!(f, \"{}\", x), Self::Nint(x) => write!(f, \"-{}\", x + 1), } } } impl std::str::FromStr for Int { type Err = IntError; fn from_str(s: &str) -> Result { let x = i128::from_str(s).map_err(IntError::Parsing)?; Self::try_from(x).map_err(IntError::Bounds) } } impl TryFrom for Int { type Error = std::num::TryFromIntError; fn try_from(x: i128) -> Result { if x >= 0 { u64::try_from(x).map(Self::Uint) } else { u64::try_from((x + 1).abs()).map(Self::Nint) } } } #[derive(Clone, Debug)] pub enum IntError { Bounds(std::num::TryFromIntError), Parsing(std::num::ParseIntError), } #[derive(Clone, Debug)] pub struct These { pub x: u64, } impl These { pub fn new(x: u64) -> Self { Self { x } } } #[derive(Clone, Debug)] pub enum TypeChoice { You, Can, Name(u64), Variants(String), Like(Vec), This(Vec), } impl TypeChoice { pub fn new_you() -> Self { Self::You } pub fn new_can() -> Self { Self::Can } pub fn new_name(name: u64) -> Self { Self::Name(name) } pub fn new_variants(variants: String) -> Self { Self::Variants(variants) } pub fn new_like(like: Vec) -> Self { Self::Like(like) } pub fn new_this(this: Vec) -> Self { Self::This(this) } }","s":"Type Choices","u":"/cddl-codegen/examples","h":"#type-choices","p":24},{"i":41,"t":"git clone https://github.com/dcSpark/cddl-codegen && cd cddl-codegen","s":"Install","u":"/cddl-codegen/getting_started","h":"#install","p":39},{"i":43,"t":"To run execute cargo run -- --input=input.cddl --output=EXPORT_DIR to read ./input.cddl and produce output code in ./EXPORT_DIR/. cargo run -- --input=example/test.cddl --output=export","s":"Run Example","u":"/cddl-codegen/getting_started","h":"#run-example","p":39},{"i":45,"t":"cargo build --release target/release/cddl-codegen --input example/test.cddl --output export","s":"Build","u":"/cddl-codegen/getting_started","h":"#build","p":39},{"i":47,"t":"Inside of the output directly the tool always produces a rust/ directory (including Cargo.toml, etc). Unless we pass in --wasm=false the tool also generates a corresponding wasm/ directory. The default format for rust/ is to have a lib.rs containing the structs and serialization.rs containing their (de)serialization implementations/corresponding types. The wasm/ directory is full of wasm_bindgen-annotated wrappers all in lib.rs for the corresponding rust-use-only structs in rust/ and can be compiled for WASM builds by running wasm-pack build on it. Example Output note The output format can change slightly depending on certain command line flags: --wasm=false --preserve-encodings=true --json-schema-export true --package-json true --json-schema-export true","s":"Output format","u":"/cddl-codegen/output_format","h":"","p":46},{"i":49,"t":"In the wasm crate we can't always go one to one with the rust crate. Here are some differences/extra types in the WASM create. AsRef From and Into are implemented to go between the rust and wasm crate types to help.","s":"Wasm Differences","u":"/cddl-codegen/wasm_differences","h":"","p":48},{"i":51,"t":"wasm_bindgen cannot expose doubly-nested types like Vec which can be a limitation if T was a non-byte primtive. Any array of non-primitives such as [foo] will generate another type called FooList which supports all basic array operations. This lets us get around the wasm_bindgen limitation (without implementing cross-boundary traits which could be inefficient/tedious/complicated). This array wrapper implements len() -> self, get(usize) -> T and add(T).","s":"Heterogeneous Arrays","u":"/cddl-codegen/wasm_differences","h":"#heterogeneous-arrays","p":48},{"i":53,"t":"Map literals also generate a type for them with len() -> usize and insert(K, V) -> Option. The table type will have a MapKeyToValue name for whichever Key and Value types it's exposed as if it's anonymously inlined a as a member, or will take on the identifier if it's a named one.","s":"Tables","u":"/cddl-codegen/wasm_differences","h":"#tables","p":48},{"i":55,"t":"Both type/group choices generate rust-style enums. On the wasm side we can't do that so we directly wrap the rust type, and then provide a FooKind c-style enum for each rust enum Foo just for checking which variant it is.","s":"Enums","u":"/cddl-codegen/wasm_differences","h":"#enums","p":48}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/2",[0,4.657,1,3.292,2,0.609,3,1.241,4,1.522,5,2.064,6,4.657,7,2.294,8,2.064,9,3.292]],["t/4",[2,0.551,4,1.776,5,1.867,8,2.246,9,3.582,10,1.685,11,3.468,12,4.172,13,3.468,14,4.213,15,4.172,16,4.213,17,2.978,18,3.468,19,4.213,20,4.213,21,3.468,22,4.213,23,4.213,24,4.213,25,4.213,26,2.611,27,2.978,28,4.213,29,3.468,30,2.076]],["t/6",[1,1.067,2,0.461,3,0.818,4,0.493,5,1.563,8,2.347,10,1.228,26,0.936,27,1.725,30,0.744,31,1.265,32,4.141,33,1.509,34,1.067,35,3.871,36,3.702,37,1.509,38,1.154,39,3.161,40,2.903,41,1.399,42,1.509,43,1.243,44,0.831,45,1.509,46,2.903,47,1.509,48,1.509,49,0.511,50,2.009,51,1.243,52,0.581,53,1.509,54,3.526,55,1.509,56,1.509,57,1.903,58,1.903,59,2.44,60,1.152,61,3.081,62,2.006,63,1.509,64,4.921,65,4.052,66,1.399,67,4.141,68,1.509,69,1.509,70,1.509,71,2.131,72,1.509,73,1.725,74,0.446,75,1.143,76,1.509,77,2.17,78,2.702,79,1.874,80,3.702,81,3.858,82,1.509,83,2.4,84,1.716,85,1.509,86,1.903,87,1.509,88,1.509,89,1.509,90,0.669,91,1.509,92,2.493,93,0.744,94,1.509,95,1.509,96,1.725,97,0.29,98,1.067,99,1.509,100,1.509,101,1.725,102,1.509,103,1.243,104,1.509,105,1.243,106,3.071,107,2.44,108,1.509,109,1.067,110,1.509,111,3.071,112,1.509,113,1.509,114,1.509,115,1.509,116,1.903,117,1.081,118,4.312,119,3.871,120,3.588,121,1.509,122,1.243,123,3.071,124,2.903,125,0.831,126,1.509,127,1.509,128,1.509,129,2.44,130,2.528,131,1.509,132,1.509,133,1.509,134,1.067,135,2.009,136,1.243,137,2.44,138,3.526,139,2.44,140,2.44,141,1.509,142,1.067,143,1.509,144,1.243,145,1.243,146,2.44,147,1.509,148,1.509,149,1.512,150,2.17,151,2.44,152,2.903,153,1.725,154,4.686,155,2.009,156,1.243,157,2.009,158,3.071,159,1.725,160,2.44,161,2.44,162,1.512,163,2.44,164,1.509,165,1.509,166,1.243,167,1.509,168,1.509,169,1.243,170,1.509,171,3.071,172,1.509,173,1.243,174,1.509,175,1.509]],["t/9",[2,0.519,3,0.604,5,1.481,7,1.117,8,1.759,15,1.866,26,1.405,29,1.866,44,1.248,49,0.584,51,1.866,52,0.919,57,1.405,60,0.741,62,1.336,66,1.766,71,1.84,73,1.602,75,0.669,79,1.587,80,1.602,81,1.866,86,1.405,90,1.004,97,0.642,98,2.362,125,1.248,156,1.866,162,1.405,176,2.072,177,3.342,178,5.055,179,1.647,180,1.501,181,1.602,182,1.602,183,1.602,184,2.267,185,1.84,186,2.751,187,1.866,188,1.488,189,1.248,190,2.461,191,1.405,192,2.691,193,2.267,194,1.866,195,1.868,196,1.602,197,1.942,198,1.866,199,1.481,200,1.004,201,2.267,202,2.267,203,2.267,204,2.267,205,2.267,206,1.766,207,1.866,208,2.185,209,0.906,210,1.405,211,2.267,212,2.267,213,1.602,214,2.267,215,1.866,216,1.866,217,1.866,218,2.267,219,2.267,220,2.267,221,2.267,222,2.267,223,2.267,224,1.405,225,2.267,226,2.267,227,2.267,228,2.751,229,1.866,230,2.267,231,2.267,232,2.267,233,2.751,234,2.267,235,1.405,236,2.267,237,2.267,238,2.267,239,1.602,240,1.405,241,1.866,242,2.267,243,2.267,244,2.267,245,2.267,246,2.267,247,1.117]],["t/11",[3,1.013,4,1.242,7,1.873,10,1.52,34,2.687,44,2.092,62,1.52,74,1.122,75,1.122,79,1.902,92,2.687,93,2.344,97,0.914,180,1.268,182,3.363,192,2.859,195,1.52,199,2.412,206,1.877,208,2.092,248,3.129,249,2.817,250,3.801,251,3.374,252,3.129,253,2.687,254,2.356,255,2.356,256,3.801,257,3.801,258,3.801,259,3.801,260,3.801,261,3.801,262,2.356,263,2.687,264,2.687]],["t/13",[2,0.47,3,0.957,41,1.297,49,0.57,52,0.879,60,1.173,61,2.538,62,1.436,71,1.976,74,1.06,75,1.355,79,1.436,83,2.225,84,1.591,93,1.769,96,2.538,109,2.538,125,1.976,162,2.225,176,2.225,182,2.538,183,2.538,188,1.348,190,2.845,191,2.225,195,1.436,199,1.591,200,1.591,206,1.297,213,2.538,229,2.956,239,2.538,240,2.225,241,2.956,248,2.956,249,2.626,255,2.225,262,2.225,265,2.538,266,3.59,267,3.136,268,3.59,269,3.59,270,4.164,271,5.058,272,2.956,273,3.59,274,3.59,275,2.538]],["t/15",[4,1.529,8,2.074,38,1.122,78,2.901,235,2.901,276,2.901,277,4.679,278,3.852,279,4.679]],["t/17",[10,1.175,13,2.419,31,1.609,38,1.181,41,1.453,49,0.331,52,0.919,58,1.822,60,1.861,75,0.868,78,1.822,84,1.781,90,1.302,96,2.077,97,0.88,125,2.522,135,4.055,159,2.077,179,1.448,180,0.783,185,1.618,188,1.071,192,2.213,195,1.97,197,1.302,199,1.781,200,2.183,206,1.78,224,2.84,235,1.822,263,2.077,276,1.822,280,2.077,281,2.077,282,2.419,283,2.938,284,2.077,285,2.938,286,2.419,287,4.019,288,4.019,289,4.019,290,2.938,291,2.938,292,2.938,293,2.938,294,1.822,295,2.419,296,4.019,297,2.938,298,2.938,299,2.938,300,2.938,301,2.938,302,2.938,303,2.938,304,2.938,305,2.938,306,2.419,307,2.938]],["t/19",[3,1.163,4,1.426,10,1.745,41,1.577,49,0.491,52,0.856,75,1.289,93,2.55,97,0.838,180,1.379,188,1.47,308,3.085,309,1.871,310,1.745,311,3.593,312,4.364]],["t/21",[2,0.513,41,1.418,49,0.442,52,0.913,74,1.159,75,1.433,97,0.932,180,1.293,188,1.535,197,2.439,206,1.989,308,2.773,309,1.904,310,1.94,313,3.923,314,3.23,315,3.995,316,3.923]],["t/23",[1,1.889,2,0.695,4,1.545,7,1.316,8,1.184,9,3.079,10,1.505,11,4.465,12,3.098,21,3.098,30,1.316,39,1.656,41,0.966,49,0.598,52,0.814,58,1.656,66,0.966,73,2.66,74,0.789,75,1.527,77,3.079,84,1.184,86,1.656,97,0.957,101,1.889,103,3.892,116,1.656,122,3.586,136,2.2,142,1.889,150,2.66,152,2.2,153,1.889,155,3.892,159,1.889,166,2.2,173,3.098,180,0.712,188,1.469,189,1.471,197,1.93,276,1.656,286,3.098,317,2.672,318,3.763,319,2.2,320,1.889,321,3.763,322,3.079,323,2.2,324,2.672,325,2.672,326,3.763,327,3.098,328,4.983,329,4.728,330,3.763,331,3.763,332,3.763,333,3.763,334,3.763,335,3.763,336,3.763,337,2.672,338,2.672,339,2.672,340,2.672,341,2.672,342,2.672,343,2.672,344,2.672,345,2.672,346,2.2,347,3.763,348,1.889,349,2.672,350,1.889]],["t/26",[2,0.565,10,1.307,31,1.275,38,1.16,49,0.52,52,0.927,60,0.719,66,1.859,74,0.65,75,0.65,93,1.084,97,0.749,101,3.992,207,1.811,209,1.56,253,1.555,276,1.364,295,1.811,308,2.311,309,2.006,311,3.555,315,2.691,327,1.811,351,1.729,352,3.473,353,1.811,354,5.143,355,1.729,356,1.729,357,3.269,358,2.219,359,5.143,360,2.329,361,3.269,362,3.269,363,3.269,364,2.057,365,3.269,366,3.269,367,3.269,368,3.269,369,3.269,370,3.269,371,3.269,372,5.007,373,2.2,374,2.2,375,2.2,376,2.2,377,2.2]],["t/28",[2,0.324,3,1.112,27,1.749,31,0.809,38,0.854,41,0.894,49,0.279,52,0.869,57,1.534,66,1.749,74,0.731,90,1.097,97,0.475,117,1.097,179,2.25,180,1.443,200,1.85,209,0.989,210,3,215,2.037,216,4.149,217,4.739,247,2.057,264,1.749,284,1.749,309,1.986,310,1.425,350,1.749,351,1.097,352,2.208,355,1.097,356,1.097,358,1.097,360,1.097,364,1.425,378,5.04,379,5.04,380,4.174,381,4.174,382,5.04,383,4.174,384,5.04,385,5.04,386,5.04,387,4.174,388,5.04,389,2.951,390,5.04,391,4.174,392,4.174,393,2.474,394,2.474,395,4.174,396,4.174,397,4.174,398,2.474,399,2.474,400,2.474,401,3.563,402,3.563]],["t/30",[2,0.429,3,0.589,4,0.722,5,0.979,17,1.562,30,1.089,31,0.722,38,0.787,41,1.185,49,0.44,52,0.926,60,1.683,78,1.37,79,1.312,83,1.37,84,1.454,97,0.424,117,0.979,120,1.819,149,1.37,176,1.37,179,1.927,180,0.589,181,2.318,185,1.216,188,1.153,189,2.666,195,0.884,200,1.454,206,0.799,208,2.153,209,0.884,247,1.616,249,1.616,265,1.562,270,1.819,275,1.562,280,1.562,281,1.562,294,1.37,309,1.901,310,1.312,348,1.562,351,0.979,355,1.733,356,1.733,358,2.049,360,2.146,364,1.849,389,3.887,403,3.987,404,3.22,405,2.21,406,2.21,407,2.21,408,2.21,409,2.21,410,2.7,411,2.7,412,1.819,413,1.819,414,1.819,415,1.819,416,1.819,417,1.819,418,1.562,419,1.819,420,1.819,421,1.562,422,1.819,423,1.819,424,1.819,425,1.819,426,1.819,427,1.819,428,1.819,429,1.819,430,1.819,431,1.819,432,2.7,433,1.819,434,1.819,435,1.819,436,2.7,437,1.819,438,1.819,439,2.7,440,1.819,441,1.819,442,1.819,443,1.819,444,1.819,445,1.819,446,1.819,447,1.819,448,1.819,449,1.819,450,1.819,451,1.819,452,1.819,453,1.819]],["t/32",[2,0.622,4,1.242,31,1.242,38,1.141,49,0.428,52,0.91,97,0.73,180,1.013,188,1.45,189,2.859,197,2.302,209,1.52,309,1.967,310,1.902,319,3.917,320,3.847,346,3.129,351,1.684,355,1.684,356,1.684,358,1.684,360,1.684,364,1.902,454,3.801,455,3.129,456,3.129]],["t/34",[2,0.586,3,0.632,5,2.201,7,1.702,31,0.775,38,0.829,49,0.267,52,0.914,60,1.463,66,1.618,71,2.465,79,0.948,84,1.051,90,1.531,97,0.663,98,3.165,125,2.243,144,1.953,157,3.355,180,1.428,183,3.165,188,1.366,195,1.903,197,1.984,199,1.051,200,1.806,206,1.853,209,0.948,224,1.47,228,1.953,247,1.169,265,1.676,272,2.844,280,1.676,281,1.676,284,1.676,309,1.853,310,0.948,314,1.953,351,1.051,355,1.051,356,1.051,358,1.051,360,1.051,364,1.381,421,3.511,455,4.482,457,3.355,458,4.075,459,4.759,460,4.967,461,4.967,462,4.075,463,3.455,464,2.844,465,3.455,466,1.953,467,2.372,468,2.372,469,2.372,470,3.455,471,4.075,472,3.455,473,2.372,474,2.372]],["t/36",[2,0.393,7,1.17,10,0.584,31,0.776,34,1.032,38,0.829,49,0.267,52,0.931,60,1.676,66,0.858,74,0.701,75,0.431,86,0.905,90,1.33,97,0.783,117,1.33,153,2.689,179,2.207,180,1.324,185,2.094,190,2.777,192,2.245,194,1.955,195,0.949,196,1.032,198,4.011,206,1.249,208,1.307,209,0.949,210,1.472,247,1.874,249,0.719,251,1.472,262,1.472,263,1.678,267,2.951,309,2.052,310,1.948,351,1.052,352,0.905,355,1.807,356,1.807,358,1.807,360,2.159,364,2.102,418,1.032,464,1.202,466,1.202,475,3.715,476,1.955,477,1.46,478,2.374,479,3.805,480,1.46,481,3.001,482,3.805,483,3.805,484,1.46,485,1.46,486,2.374,487,1.955,488,3.457,489,2.374,490,2.374,491,2.374,492,2.374,493,2.374,494,3.457,495,3.805,496,1.955,497,1.955,498,1.955,499,2.374,500,2.374,501,2.471,502,1.46,503,1.955,504,1.202,505,1.202,506,1.202,507,1.202,508,1.202,509,1.202,510,1.202,511,1.202,512,1.202,513,1.202,514,1.202,515,1.202,516,1.202,517,1.202,518,1.202,519,1.202]],["t/38",[2,0.373,5,0.476,17,0.759,30,0.529,31,0.6,38,0.684,41,0.388,44,0.591,49,0.271,52,0.933,60,1.785,62,0.429,66,0.388,74,0.317,79,0.735,84,0.814,97,0.671,117,0.476,145,0.884,149,0.666,179,1.579,180,0.854,181,0.759,188,1.135,189,2.59,190,1.493,191,1.139,192,0.591,195,1.493,197,1.42,199,1.42,200,1.655,206,0.388,209,0.735,240,0.666,247,2.1,249,1.94,251,1.139,254,0.666,262,0.666,264,1.299,267,2.315,282,2.638,294,0.666,306,1.983,309,2.071,310,1.803,320,2.639,351,0.814,352,0.666,355,1.947,356,1.947,358,2.044,360,2.37,364,2.174,389,2.906,403,2.876,404,0.884,410,1.513,411,1.983,412,0.884,413,0.884,414,0.884,415,0.884,416,0.884,417,0.884,418,0.759,419,0.884,420,0.884,421,0.759,422,0.884,423,0.884,424,0.884,425,0.884,426,0.884,427,0.884,428,0.884,429,0.884,430,0.884,431,0.884,432,1.513,433,0.884,434,0.884,435,0.884,436,1.513,437,0.884,438,0.884,439,1.513,440,0.884,441,0.884,442,0.884,443,0.884,444,0.884,445,0.884,446,0.884,447,0.884,448,0.884,449,0.884,450,0.884,451,0.884,452,0.884,453,0.884,456,1.513,457,1.513,475,2.265,476,0.884,487,0.884,496,2.876,497,0.884,498,0.884,501,0.884,503,2.347,504,0.884,505,0.884,506,0.884,507,0.884,508,0.884,509,0.884,510,0.884,511,0.884,512,0.884,513,0.884,514,0.884,515,0.884,516,0.884,517,0.884,518,0.884,519,0.884,520,3.937,521,3.494,522,1.838,523,1.838,524,1.838,525,1.838,526,1.838,527,1.838,528,3.734,529,1.838,530,2.851,531,1.074,532,1.074,533,1.074,534,1.074,535,1.074,536,1.074,537,1.074,538,1.074,539,1.074,540,1.074,541,1.074,542,1.074]],["t/41",[8,2.084,36,3.821,52,0.705,233,3.871,543,4.702,544,4.702,545,4.702]],["t/43",[4,1.479,38,1.086,43,3.727,65,3.727,546,4.613,547,4.527,548,4.354,549,4.527,550,4.527,551,4.527,552,3.727,553,4.527,554,4.527]],["t/45",[31,1.529,36,3.308,38,1.122,39,2.901,134,3.308,548,3.852,555,4.679,556,4.679,557,4.679]],["t/47",[2,0.464,3,1.415,26,2.201,38,1.207,39,2.825,40,4.143,46,3.751,49,0.4,50,3.751,57,2.201,58,2.201,62,2.123,71,1.955,74,1.048,75,1.048,80,3.557,83,2.201,97,0.875,105,3.751,116,2.201,118,4.143,124,3.751,130,2.923,134,3.221,142,2.51,149,2.201,169,2.923,255,2.201,275,2.51,278,2.923,294,2.201,323,2.923,546,2.923,552,2.923,558,3.551,559,2.923,560,3.551,561,3.551,562,3.551,563,4.557,564,4.557,565,4.557,566,3.551,567,3.551,568,3.551,569,3.551,570,3.551,571,3.551,572,3.551,573,3.551,574,3.551]],["t/49",[3,1.383,30,2.16,49,0.584,61,3.908,62,2.211,93,2.16,117,2.3,235,2.718,322,3.099,350,3.099,559,3.609,575,3.609,576,5.19,577,4.384,578,4.384]],["t/51",[2,0.522,44,2.698,49,0.552,52,0.735,66,1.441,77,2.819,116,2.472,150,2.819,176,2.472,185,2.921,188,1.063,208,2.195,210,3.039,213,3.465,253,2.819,254,2.472,255,3.039,322,3.465,348,2.819,353,3.283,364,1.595,475,2.819,579,3.988,580,3.988,581,3.988,582,3.988,583,3.988,584,3.988,585,3.988,586,3.988,587,3.988,588,3.988,589,3.988,590,3.283,591,3.988,592,3.988]],["t/53",[2,0.556,18,4.492,49,0.614,52,0.764,60,1.665,79,1.699,90,1.883,117,1.883,162,2.634,186,3.498,187,3.498,191,2.634,224,2.634,239,3.004,254,2.634,590,3.498,593,4.25,594,4.25,595,4.25,596,4.25,597,4.25,598,4.25,599,4.25,600,4.25]],["t/55",[2,0.568,3,1.467,49,0.489,62,1.737,74,1.283,92,3.071,109,3.071,188,1.158,196,3.071,199,1.925,240,3.2,249,2.714,251,2.693,252,3.577,267,2.693,575,3.577,601,4.345,602,4.345,603,4.345,604,4.345]]],"invertedIndex":[["",{"_index":52,"t":{"6":{"position":[[336,1],[806,1],[3461,1],[3734,1],[3755,1]]},"9":{"position":[[138,1],[140,1],[145,1],[147,1],[151,2],[156,1],[158,1],[194,1],[196,1],[235,1],[311,1],[313,1],[332,1],[341,1],[343,1],[345,1],[352,2],[360,1],[401,1],[417,1],[456,1],[458,1],[468,2],[485,2],[493,1],[525,1],[545,1],[565,1],[596,1],[598,1],[600,1],[604,1],[612,1],[633,1],[658,1],[665,1],[808,1],[819,1],[851,1],[899,1],[1017,1],[1023,1],[1402,1],[1404,1],[1423,1],[1459,1],[1480,1]]},"13":{"position":[[85,1],[89,1],[178,1],[182,1],[186,1],[224,1],[384,1],[388,1],[392,1]]},"17":{"position":[[93,1],[95,1],[118,1],[235,1],[237,1],[239,1],[244,2],[255,1],[260,2],[273,1],[397,1],[399,1],[401,1],[406,2],[417,1],[432,1],[437,2],[450,1],[466,1],[680,1],[684,1],[700,1],[704,1],[755,1],[757,1],[759,1],[804,2],[807,1],[858,2],[861,1],[912,1]]},"19":{"position":[[19,1],[66,1],[98,1],[105,1]]},"21":{"position":[[4,1],[15,1],[17,1],[30,1],[76,1],[98,1],[112,1],[198,1],[205,1],[221,1],[223,1],[236,1],[256,1],[270,1]]},"23":{"position":[[97,1],[130,1],[132,1],[151,1],[1271,1],[1307,1],[1309,1],[1316,1]]},"26":{"position":[[16,1],[57,1],[112,1],[193,1],[201,1],[253,1],[261,1],[383,1],[404,1],[415,1],[425,1],[455,1],[462,1],[476,1],[478,1],[515,1],[542,1],[549,1],[575,1],[577,1],[614,1],[647,1],[654,1],[666,1],[668,1],[749,1],[757,1],[776,1],[778,1],[813,1],[848,1],[869,1],[877,1],[900,1],[908,1],[927,1],[929,1],[964,1],[1013,1],[1066,1],[1141,1],[1155,1],[1230,1],[1237,1],[1244,1],[1279,1],[1281,1],[1283,1],[1363,1],[1384,1],[1395,1],[1405,1],[1435,1],[1442,1],[1456,1],[1458,1],[1495,1],[1522,1],[1529,1],[1555,1],[1557,1],[1594,1],[1627,1],[1634,1],[1646,1],[1648,1]]},"28":{"position":[[12,1],[14,1],[187,1],[602,1],[604,1],[777,1],[859,1],[989,1],[1008,1],[1118,1],[1121,1],[1128,1],[1135,1],[1188,1],[1190,1],[1192,1]]},"30":{"position":[[4,1],[6,1],[38,1],[400,1],[402,1],[434,1],[508,1],[559,1],[570,1],[621,1],[628,1],[635,1],[655,1],[657,1],[659,1],[698,1],[722,1],[733,1],[764,1],[771,1],[791,1],[793,3],[797,1],[875,1],[973,1],[980,1],[1000,1],[1002,1],[1035,1],[1085,1],[1104,1],[1117,1],[1133,2],[1146,5],[1170,2],[1183,1],[1185,4],[1192,1],[1198,1],[1200,1],[1202,1],[1235,1],[1246,1],[1280,1],[1306,1],[1314,1],[1407,1],[1409,1],[1438,1],[1451,1],[1502,1],[1530,1],[1537,2],[1542,1],[1577,1],[1584,1],[1603,1],[1631,1],[1633,1],[1635,1],[1679,1],[1750,1]]},"32":{"position":[[73,1],[134,1],[167,1],[169,1],[188,1],[262,1],[288,1],[299,1],[329,1],[336,1],[343,1],[350,1],[352,1],[354,1]]},"34":{"position":[[11,1],[27,1],[35,1],[53,1],[65,1],[80,1],[82,1],[138,1],[154,1],[161,1],[169,1],[196,1],[218,1],[242,1],[586,1],[751,1],[758,1],[766,1],[839,1],[990,1],[1046,1],[1048,1],[1104,1],[1120,1],[1127,1],[1135,1],[1162,1],[1184,1],[1208,1],[1282,1],[1403,1],[1414,1],[1494,1],[1501,1],[1508,1],[1571,1],[1573,1],[1575,1]]},"36":{"position":[[57,1],[59,1],[86,1],[355,1],[357,1],[404,2],[415,1],[429,1],[431,1],[451,1],[755,1],[757,1],[791,1],[827,1],[829,1],[856,1],[864,1],[866,1],[913,2],[924,1],[938,1],[940,1],[960,1],[972,1],[974,1],[1008,1],[1084,1],[1113,1],[1126,1],[1159,1],[1166,1],[1173,1],[1180,1],[1182,1],[1184,1],[1232,1],[1258,1],[1276,1],[1306,1],[1313,1],[1320,1],[1327,1],[1329,1],[1331,1],[1374,1],[1444,1],[1457,1],[1527,1],[1534,1],[1541,1],[1575,1],[1577,1],[1579,1],[1625,1],[1665,1],[1681,1],[1725,1],[1732,1],[1739,1],[1753,1],[1755,1],[1757,1],[1929,1],[1931,1],[1938,1],[1940,1],[1947,2],[1955,2],[1963,1],[1965,1],[1972,2],[1975,1],[1989,1],[1993,1],[2005,1],[2021,1],[2033,1],[2040,1],[2053,1],[2060,1],[2077,1],[2085,1],[2098,1],[2115,1],[2174,1],[2176,1],[2183,1],[2185,1],[2192,2],[2200,2],[2208,1],[2210,1],[2217,2],[2220,1],[2234,1],[2238,1],[2250,1],[2266,1],[2278,1],[2285,1],[2298,1],[2305,1],[2322,1],[2330,1],[2343,1],[2360,1],[2457,1],[2513,1],[2536,1],[2596,1],[2603,1],[2610,1],[2621,1],[2623,1],[2625,1],[2671,1],[2743,1],[2761,1],[2781,1],[2788,1],[2800,1],[2820,1],[2827,1],[2839,1],[2869,1],[2876,1],[2895,1],[2936,1],[2943,1],[2970,1],[3004,1],[3011,1],[3030,1],[3065,1],[3072,1],[3091,1],[3093,1]]},"38":{"position":[[110,1],[114,1],[126,1],[130,1],[142,1],[146,1],[199,1],[203,1],[215,1],[219,1],[231,1],[235,1],[324,1],[341,1],[359,1],[379,1],[386,1],[398,1],[418,1],[425,1],[437,1],[457,1],[464,1],[476,1],[478,1],[673,1],[675,1],[681,2],[684,1],[709,2],[712,1],[744,2],[747,1],[766,1],[783,1],[793,1],[795,1],[838,1],[872,1],[874,1],[906,1],[914,1],[916,1],[943,1],[957,1],[961,1],[973,1],[989,1],[1001,1],[1008,1],[1021,1],[1028,1],[1045,1],[1053,1],[1066,1],[1083,1],[1109,1],[1113,1],[1125,1],[1129,1],[1141,1],[1145,1],[1170,1],[1172,1],[1178,2],[1181,1],[1206,2],[1209,1],[1241,2],[1244,1],[1263,1],[1280,1],[1290,1],[1292,1],[1335,1],[1409,1],[1438,1],[1449,1],[1482,1],[1489,1],[1496,1],[1503,1],[1505,1],[1507,1],[1550,1],[1579,1],[1592,1],[1625,1],[1632,1],[1639,1],[1646,1],[1648,1],[1650,1],[1696,1],[1713,1],[1731,1],[1751,1],[1758,1],[1770,1],[1790,1],[1797,1],[1809,1],[1829,1],[1836,1],[1848,1],[1850,1],[1895,1],[1987,1],[2002,1],[2094,1],[2097,1],[2104,1],[2111,1],[2154,1],[2156,1],[2158,1],[2199,1],[2250,1],[2261,1],[2312,1],[2319,1],[2326,1],[2346,1],[2348,1],[2350,1],[2397,1],[2447,1],[2466,1],[2521,1],[2528,1],[2569,1],[2597,1],[2604,1],[2633,1],[2670,1],[2677,1],[2705,1],[2744,1],[2751,1],[2783,1],[2785,1],[2824,1],[2848,1],[2859,1],[2890,1],[2897,1],[2917,1],[2919,3],[2923,1],[3001,1],[3099,1],[3106,1],[3126,1],[3128,1],[3161,1],[3211,1],[3230,1],[3243,1],[3259,2],[3272,5],[3296,2],[3309,1],[3311,4],[3318,1],[3324,1],[3326,1],[3328,1],[3361,1],[3372,1],[3406,1],[3432,1],[3440,1],[3533,1],[3535,1],[3564,1],[3577,1],[3628,1],[3656,1],[3663,2],[3668,1],[3703,1],[3710,1],[3729,1],[3757,1],[3759,1],[3761,1],[3805,1],[3876,1],[3919,1],[3933,1],[3946,1],[3968,1],[3975,1],[3982,1],[3986,1],[3988,1],[3990,1],[4036,1],[4108,1],[4126,1],[4146,1],[4153,1],[4165,1],[4185,1],[4192,1],[4204,1],[4234,1],[4241,1],[4260,1],[4301,1],[4308,1],[4335,1],[4369,1],[4376,1],[4395,1],[4430,1],[4437,1],[4456,1],[4458,1]]},"41":{"position":[[50,2]]},"51":{"position":[[428,1],[448,1]]},"53":{"position":[[55,1],[81,1]]}}}],["0",{"_index":195,"t":{"9":{"position":[[250,2],[403,3],[460,2],[602,1],[1039,1]]},"11":{"position":[[447,2]]},"13":{"position":[[386,1]]},"17":{"position":[[241,2],[403,2],[682,1],[779,2]]},"30":{"position":[[1540,1]]},"34":{"position":[[239,2],[988,1],[1011,2],[1205,2],[1568,2]]},"36":{"position":[[1991,1],[2236,1]]},"38":{"position":[[112,1],[201,1],[698,2],[959,1],[1111,1],[1195,2],[3666,1]]}}}],["0..32",{"_index":218,"t":{"9":{"position":[[865,7]]}}}],["0..4294967295",{"_index":383,"t":{"28":{"position":[[63,14],[337,13],[653,14]]}}}],["1",{"_index":200,"t":{"9":{"position":[[471,2]]},"13":{"position":[[390,1]]},"17":{"position":[[257,2],[434,2],[702,1],[830,2]]},"28":{"position":[[32,2],[284,1],[622,2]]},"30":{"position":[[877,3],[1194,3]]},"34":{"position":[[152,1],[749,1],[1118,1]]},"38":{"position":[[128,1],[217,1],[724,2],[1127,1],[1221,2],[3003,3],[3320,3]]}}}],["1).abs()).map(self::nint",{"_index":451,"t":{"30":{"position":[[1605,25]]},"38":{"position":[[3731,25]]}}}],["10",{"_index":399,"t":{"28":{"position":[[517,2]]}}}],["10..20",{"_index":392,"t":{"28":{"position":[[177,9],[553,8],[767,9]]}}}],["100",{"_index":462,"t":{"34":{"position":[[220,4],[992,4],[1186,4]]}}}],["128..127",{"_index":387,"t":{"28":{"position":[[104,9],[376,8],[694,9]]}}}],["2",{"_index":306,"t":{"17":{"position":[[884,2]]},"38":{"position":[[144,1],[233,1],[1143,1]]}}}],["20",{"_index":400,"t":{"28":{"position":[[524,2]]}}}],["32",{"_index":391,"t":{"28":{"position":[[153,3],[487,2],[743,3]]}}}],["4",{"_index":422,"t":{"30":{"position":[[941,2]]},"38":{"position":[[3067,2]]}}}],["5",{"_index":421,"t":{"30":{"position":[[930,2]]},"34":{"position":[[198,2],[215,2],[841,2],[896,2],[1164,2],[1181,2]]},"38":{"position":[[3056,2]]}}}],["6.1337(foo",{"_index":458,"t":{"34":{"position":[[89,13],[328,13],[1055,13]]}}}],["6.23(uint",{"_index":476,"t":{"36":{"position":[[64,12],[834,12]]},"38":{"position":[[921,12]]}}}],["6.30",{"_index":203,"t":{"9":{"position":[[527,7]]}}}],["6.42(byte",{"_index":467,"t":{"34":{"position":[[481,11]]}}}],["6.64([*uint",{"_index":498,"t":{"36":{"position":[[2100,14],[2345,14]]},"38":{"position":[[1068,14]]}}}],["65535",{"_index":381,"t":{"28":{"position":[[50,6],[313,5],[640,6]]}}}],["8",{"_index":385,"t":{"28":{"position":[[95,2],[130,2],[368,1],[401,1],[685,2],[720,2]]}}}],["_cddl_codegen_extern_type_",{"_index":319,"t":{"23":{"position":[[99,26]]},"32":{"position":[[75,26],[136,26]]}}}],["_cddl_codegen_raw_bytes_type_",{"_index":341,"t":{"23":{"position":[[1273,29]]}}}],["add(t",{"_index":592,"t":{"51":{"position":[[456,7]]}}}],["afterward",{"_index":332,"t":{"23":{"position":[[623,11],[1023,11]]}}}],["alia",{"_index":308,"t":{"19":{"position":[[42,5]]},"21":{"position":[[161,5]]},"26":{"position":[[5,5],[174,5]]}}}],["alias",{"_index":207,"t":{"9":{"position":[[619,7]]},"26":{"position":[[716,7]]}}}],["allow",{"_index":122,"t":{"6":{"position":[[2230,5]]},"23":{"position":[[29,6],[1185,6],[1559,6]]}}}],["along",{"_index":133,"t":{"6":{"position":[[2664,5]]}}}],["alway",{"_index":559,"t":{"47":{"position":[[39,6]]},"49":{"position":[[27,6]]}}}],["annot",{"_index":278,"t":{"15":{"position":[[30,8]]},"47":{"position":[[399,9]]}}}],["anonym",{"_index":600,"t":{"53":{"position":[[198,11]]}}}],["anoth",{"_index":353,"t":{"26":{"position":[[147,7]]},"51":{"position":[[175,7]]}}}],["aorborc",{"_index":266,"t":{"13":{"position":[[71,7]]}}}],["api",{"_index":157,"t":{"6":{"position":[[3476,4],[3924,3]]},"34":{"position":[[318,4],[431,5],[659,4]]}}}],["append",{"_index":63,"t":{"6":{"position":[[674,9]]}}}],["are(ar",{"_index":533,"t":{"38":{"position":[[2423,9]]}}}],["around",{"_index":253,"t":{"11":{"position":[[97,6]]},"26":{"position":[[140,6]]},"51":{"position":[[263,6]]}}}],["arr",{"_index":495,"t":{"36":{"position":[[1958,4],[2203,4],[2498,4],[2580,4],[2617,3]]}}}],["array",{"_index":185,"t":{"9":{"position":[[87,5],[216,5]]},"17":{"position":[[18,5]]},"30":{"position":[[163,5]]},"36":{"position":[[124,5],[161,5],[343,5],[630,5],[1864,6]]},"51":{"position":[[123,5],[228,5],[396,5]]}}}],["asref",{"_index":578,"t":{"49":{"position":[[127,5]]}}}],["assum",{"_index":158,"t":{"6":{"position":[[3503,7],[3771,7],[4176,7]]}}}],["attent",{"_index":376,"t":{"26":{"position":[[1659,9]]}}}],["awkward",{"_index":326,"t":{"23":{"position":[[421,7],[821,7]]}}}],["b",{"_index":190,"t":{"9":{"position":[[154,1],[207,2],[324,2]]},"13":{"position":[[87,1],[184,1]]},"36":{"position":[[61,2],[433,2],[831,2],[942,2],[1090,2],[1175,2],[1238,2],[1322,2]]},"38":{"position":[[918,2],[1556,2],[1641,2]]}}}],["back",{"_index":331,"t":{"23":{"position":[[603,4],[1003,4]]}}}],["bar",{"_index":197,"t":{"9":{"position":[[337,3],[413,3],[635,3],[815,3]]},"17":{"position":[[97,4]]},"21":{"position":[[11,3],[94,3],[217,3],[252,3]]},"23":{"position":[[126,3],[296,3],[1303,3]]},"32":{"position":[[163,3],[258,3],[295,3]]},"34":{"position":[[76,3],[1042,3],[1278,3],[1410,3]]},"38":{"position":[[138,3],[227,3],[331,4],[1137,3],[1703,4]]}}}],["basic",{"_index":475,"t":{"36":{"position":[[0,5],[51,5],[88,5],[284,6],[378,6],[407,7],[453,5],[581,5],[739,5],[821,5],[887,6],[916,7],[1078,5],[1120,5],[1402,6],[1488,6]]},"38":{"position":[[760,5],[908,5],[1257,5],[1544,5],[1586,5]]},"51":{"position":[[222,5]]}}}],["basic(bas",{"_index":534,"t":{"38":{"position":[[2433,13]]}}}],["baz",{"_index":282,"t":{"17":{"position":[[108,4]]},"38":{"position":[[154,3],[243,3],[336,4],[1153,3],[1708,4]]}}}],["be",{"_index":250,"t":{"11":{"position":[[54,5]]}}}],["befor",{"_index":336,"t":{"23":{"position":[[728,6],[1128,6]]}}}],["between",{"_index":350,"t":{"23":{"position":[[1784,8]]},"28":{"position":[[509,7]]},"49":{"position":[[169,7]]}}}],["beyond",{"_index":279,"t":{"15":{"position":[[55,6]]}}}],["biguint",{"_index":223,"t":{"9":{"position":[[987,8]]}}}],["both",{"_index":196,"t":{"9":{"position":[[271,5]]},"36":{"position":[[612,4]]},"55":{"position":[[0,4]]}}}],["bound",{"_index":216,"t":{"9":{"position":[[838,6]]},"28":{"position":[[157,8],[533,8],[747,8],[972,8],[1101,8],[1179,8]]}}}],["boundari",{"_index":588,"t":{"51":{"position":[[326,8]]}}}],["bounds(std::num::tryfrominterror",{"_index":452,"t":{"30":{"position":[[1681,34]]},"38":{"position":[[3807,34]]}}}],["bstr",{"_index":177,"t":{"9":{"position":[[20,5],[407,5]]}}}],["btreemap b } ) Inline groups at root level - foo = ( a: uint, b: uint) Array groups - foo = [uint, tstr, 0, bytes] Map groups (both struct-type and table-type) - foo = { a: uint, b: tstr } or bar = { * uint => tstr } Embedding groups in other groups - foo = (0, bstr) bar = [uint, foo, foo] Group choices - foo = [ 0, uint // 1, tstr, uint // tstr } Tagged major types - rational = #6.30([ numerator : uint, denominator : uint]) Optional fields - foo = { ? 0 : bytes } Type aliases - foo = bar Type choices - foo = uint / tstr Serialization for all supported types. Deserialization for almost all supported types (see limitations section). CDDL Generics - foo = [T], bar = foo Length bounds - foo = bytes .size (0..32) cbor in bytes - foo_bytes = bytes .cbor foo Support for the CDDL standard prelude (using raw CDDL from the RFC) - biguint, etc default values - ? key : uint .default 0 We generate getters for all fields, and setters for optional fields. Mandatory fields are set via the generated constructor. All wasm-facing functions are set to take references for non-primitives and clone when needed. Returns are also cloned. This helps make usage from wasm more memory safe. Identifiers and fields are also changed to rust style. ie foo_bar = { Field-Name: text } gets converted into struct FooBar { field_name: String }","s":"Types","u":"/cddl-codegen/current_capacities","h":"#types","p":17},{"i":21,"t":"Group choices are handled as an enum with each choice being a variant. This enum is then wrapped around a wasm-exposed struct as wasm_bindgen does not support rust enums with members/values. Group choices that have only a single non-fixed-value field use just that field as the enum variant, otherwise we create a GroupN for the Nth variant enum with the fields of that group choice. Any fixed values are resolved purely in serialization code, so 0, \"hello\", uint puts the uint in the enum variant directly instead of creating a new struct.","s":"Group choices","u":"/cddl-codegen/current_capacities","h":"#group-choices","p":17},{"i":23,"t":"Type choices are handled via enums as well with the name defaulting to AOrBOrC for A / B / C when inlined as a field/etc, and will take on the type identifier if provided ie foo = A / B / C would be Foo. Any field that is T / null is transformed as a special case into Option rather than creating a TOrNull enum. A special case for this is when all types are fixed values e.g. foo = 0 / 1 / \"hello\", in which case we generate a special c-style enum in the rust. This will have wasm_bindgen tags so it can be directly used in the wasm crate. Encoding variables (for --preserve-encodings=true) are stored where the enum is used like with other primitives.","s":"Type choices","u":"/cddl-codegen/current_capacities","h":"#type-choices","p":17},{"i":26,"t":"Type alias hash = bytes See generated output input​ hash = bytes output​ (export/rust/src/lib.rs) pub type Hash = Vec; Create a newtype around another type instead of an alias special_hash = bytes ; @newtype See generated output input​ special_hash = bytes ; @newtype output​ (export/rust/src/lib.rs) #[derive(Clone, Debug)] pub struct SpecialHash(pub Vec); impl SpecialHash { pub fn get(&self) -> &Vec { &self.0 } pub fn new(inner: Vec) -> Self { Self(inner) } } impl From> for SpecialHash { fn from(inner: Vec) -> Self { SpecialHash::new(inner) } } impl From for Vec { fn from(wrapper: SpecialHash) -> Self { wrapper.0 } } or don't generate either and directly use the aliased type instead hidden_hash = bytes ; @no_alias hashes = [ hash, special_hash, hidden_hash, ] See generated output input​ hash = bytes special_hash = bytes ; @newtype hidden_hash = bytes ; @no_alias hashes = [ hash, special_hash, hidden_hash, ] output​ (export/rust/src/lib.rs) pub type Hash = Vec; #[derive(Clone, Debug)] pub struct Hashes { pub hash: Hash, pub special_hash: SpecialHash, pub hidden_hash: Vec, } impl Hashes { pub fn new(hash: Hash, special_hash: SpecialHash, hidden_hash: Vec) -> Self { Self { hash, special_hash, hidden_hash, } } } #[derive(Clone, Debug)] pub struct SpecialHash(pub Vec); impl SpecialHash { pub fn get(&self) -> &Vec { &self.0 } pub fn new(inner: Vec) -> Self { Self(inner) } } impl From> for SpecialHash { fn from(inner: Vec) -> Self { SpecialHash::new(inner) } } impl From for Vec { fn from(wrapper: SpecialHash) -> Self { wrapper.0 } } info pay attention to the @name comment placement as it can be finicky","s":"Aliases","u":"/cddl-codegen/examples","h":"#aliases","p":24},{"i":28,"t":"limitations = [ u_8: uint .size 1, u_16: uint .le 65535, u_32: 0..4294967295, u_64: uint .size 8, i_8: -128..127, i_64: int .size 8, hash32: bytes .size 32, bounded: text .size (10..20), ] Integer restrictions that map to rust types are directly translated u8 in rust u_8: uint .size 1 u16 in rust u_16: uint .le 65535 u32, etc... u_32: 0..4294967295 u_64: uint .size 8 i_8: -128..127 i_64: int .size 8 One can also limit strings (text or bytes) to a specific length hash32: bytes .size 32 or to a range e.g. between 10 and 20 bytes bounded: text .size (10..20) See generated output input​ limitations = [ u_8: uint .size 1, u_16: uint .le 65535, u_32: 0..4294967295, u_64: uint .size 8, i_8: -128..127, i_64: int .size 8, hash32: bytes .size 32, bounded: text .size (10..20), ] output​ (export/rust/src/lib.rs) #[derive(Clone, Debug)] pub struct Limitations { pub u_8: u8, pub u_16: u16, pub u_32: u32, pub u_64: u64, pub i_8: i8, pub i_64: i64, pub hash32: Vec, pub bounded: String, } impl Limitations { pub fn new( u_8: u8, u_16: u16, u_32: u32, u_64: u64, i_8: i8, i_64: i64, hash32: Vec, bounded: String, ) -> Self { Self { u_8, u_16, u_32, u_64, i_8, i_64, hash32, bounded, } } }","s":"Size/length requirements on primitives","u":"/cddl-codegen/examples","h":"#sizelength-requirements-on-primitives","p":24},{"i":30,"t":"foo = [ int, name: text, fp: float64, ] All primitives are supported, e.g. uint, nint and int supported. int generates special code as no rust equivalent. Unnamed array fields try to derive name from type if possible: int Text/bytes is also supported, or one can give them an explicit name: name: text As well as floats (without --preserve-encodings=true) fp: float64 See generated output input​ foo = [ int, name: text, fp: float64, ] output​ (export/rust/src/lib.rs) #[derive(Clone, Debug)] pub struct Foo { pub index_0: Int, pub name: String, pub fp: f64, } impl Foo { pub fn new(index_0: Int, name: String, fp: f64) -> Self { Self { index_0, name, fp } } } #[derive(Clone, Debug)] pub enum Int { Uint(u64), Nint(u64), } impl Int { pub fn new_uint(value: u64) -> Self { Self::Uint(value) } /// * `value` - Value as encoded in CBOR - note: a negative `x` here would be `|x + 1|` due to CBOR's `nint` encoding e.g. to represent -5, pass in 4. pub fn new_nint(value: u64) -> Self { Self::Nint(value) } } impl std::fmt::Display for Int { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { Self::Uint(x) => write!(f, \"{}\", x), Self::Nint(x) => write!(f, \"-{}\", x + 1), } } } impl std::str::FromStr for Int { type Err = IntError; fn from_str(s: &str) -> Result { let x = i128::from_str(s).map_err(IntError::Parsing)?; Self::try_from(x).map_err(IntError::Bounds) } } impl TryFrom for Int { type Error = std::num::TryFromIntError; fn try_from(x: i128) -> Result { if x >= 0 { u64::try_from(x).map(Self::Uint) } else { u64::try_from((x + 1).abs()).map(Self::Nint) } } } #[derive(Clone, Debug)] pub enum IntError { Bounds(std::num::TryFromIntError), Parsing(std::num::ParseIntError), }","s":"Array struct","u":"/cddl-codegen/examples","h":"#array-struct","p":24},{"i":32,"t":"user has to insert/import code for this type after generation extern_foo = _CDDL_CODEGEN_EXTERN_TYPE_ See generated output input​ foo = _CDDL_CODEGEN_EXTERN_TYPE_ bar = [ x: uint, y: foo, ] output​ (export/rust/src/lib.rs) #[derive(Clone, Debug)] pub struct Bar { pub x: u64, pub y: Foo, } impl Bar { pub fn new(x: u64, y: Foo) -> Self { Self { x, y } } }","s":"Mark as externally defined.","u":"/cddl-codegen/examples","h":"#mark-as-externally-defined","p":24},{"i":34,"t":"Map struct + tagged fields + .cbor + optional fields + constants + .default bar = { foo: #6.1337(foo), extern_foo: bytes .cbor extern_foo ? derp: uint, 1 : uint / null, ; @name explicitly_named_1 ? 5: \"five\", five: 5, ? 100: uint .default 0, } Fields can be tagged and this remains a serialization detail (hidden from API) foo: #6.1337(foo), They can also be encoded as CBOR bytes which remains a serialization detail (hidden from API). This can be combined with tags as well i.e. #6.42(bytes .cbor extern_foo) extern_foo: bytes .cbor extern_foo Optional field (generates as Option) ? derp: uint, Type choice with null will result in Option too for the API. Also, you can give explicit names that differ from the key value for maps like this: 1 : uint / null, ; @name explicitly_named_1 Optional string constant (no field generated) ? 5: \"five\", Integer constant (no field generated) five: 5, This will not be an optional field in rust, as when it is not present, it will be set to 0 ? 100: uint .default 0, See generated output input​ bar = { foo: #6.1337(foo), extern_foo: bytes .cbor extern_foo ? derp: uint, 1 : uint / null, ; @name explicitly_named_1 ? 5: \"five\", five: 5, ? 100: uint .default 0, } output​ (export/rust/src/lib.rs) #[derive(Clone, Debug)] pub struct Bar { pub foo: Foo, pub extern_foo: ExternFoo, pub derp: Option, pub explicitly_named_1: Option, pub key_100: u64, } impl Bar { pub fn new(foo: Foo, extern_foo: ExternFoo, explicitly_named_1: Option) -> Self { Self { foo, extern_foo, derp: None, explicitly_named_1, key_100: 0, } } }","s":"Map struct","u":"/cddl-codegen/examples","h":"#map-struct","p":24},{"i":36,"t":"Basic groups are supported and have their own type basic = ( b: #6.23(uint), c: text, ) Basic groups are fully supported in array groups They can be put into an array struct directly i.e. embed their fields into outer, which is only a serialization detail. this field will be of type Basic; or one can embed them into a repeatable homogeneous array outer = [ a: uint, embedded: basic, homogeneous_array: [* basic], ] other_basic = ( b: uint, c: uint, ) Basic groups can be embeded in maps, BUT deserialization will not be generated due to technical limitations limitation A single basic group cannot be put into both a map and an array group for serialization which is why we had to define a separate one other_basic instead of just using basic outer_map = { a: uint, embedded: other_basic, } See generated output input​ basic = ( b: #6.23(uint), c: text, ) outer = [ a: uint, embedded: basic, homogeneous_array: [* basic], ] other_basic = ( b: uint, c: uint, ) outer_map = { a: uint, embedded: other_basic, } output​ (export/rust/src/lib.rs) #[derive(Clone, Debug)] pub struct Basic { pub b: u64, pub c: String, } impl Basic { pub fn new(b: u64, c: String) -> Self { Self { b, c } } } #[derive(Clone, Debug)] pub struct OtherBasic { pub b: u64, pub c: u64, } impl OtherBasic { pub fn new(b: u64, c: u64) -> Self { Self { b, c } } } #[derive(Clone, Debug)] pub struct Outer { pub a: u64, pub embedded: Basic, pub homogeneous_array: Vec, } impl Outer { pub fn new(a: u64, embedded: Basic, homogeneous_array: Vec) -> Self { Self { a, embedded, homogeneous_array, } } } #[derive(Clone, Debug)] pub struct OuterMap { pub a: u64, pub embedded: OtherBasic, } impl OuterMap { pub fn new(a: u64, embedded: OtherBasic) -> Self { Self { a, embedded } } } One can directly define homogeneous maps as fields (or define them at top-level). Also define homogenous arrays as fields (or define them at top-level) table_arr_members = { tab: { * text => text }, arr: [ * uint ], } type_choice = 0 ; @name you / \"hello world\" ; @name can / uint ; @name name / text ; @name variants / bytes ; @name like / #6.64([*uint]) ; @name this See generated output input​ table_arr_members = { tab: { * text => text }, arr: [ * uint ], } type_choice = 0 ; @name you / \"hello world\" ; @name can / uint ; @name name / text ; @name variants / bytes ; @name like / #6.64([*uint]) ; @name this output​ (export/rust/src/lib.rs) #[derive(Clone, Debug)] pub struct TableArrMembers { pub tab: BTreeMap, pub arr: Vec, } impl TableArrMembers { pub fn new(tab: BTreeMap, arr: Vec) -> Self { Self { tab, arr } } } #[derive(Clone, Debug)] pub enum TypeChoice { You, Can, Name(u64), Variants(String), Like(Vec), This(Vec), } impl TypeChoice { pub fn new_you() -> Self { Self::You } pub fn new_can() -> Self { Self::Can } pub fn new_name(name: u64) -> Self { Self::Name(name) } pub fn new_variants(variants: String) -> Self { Self::Variants(variants) } pub fn new_like(like: Vec) -> Self { Self::Like(like) } pub fn new_this(this: Vec) -> Self { Self::This(this) } }","s":"Basic groups","u":"/cddl-codegen/examples","h":"#basic-groups","p":24},{"i":38,"t":"If a type choice only has constants it will generate as a c-style enum (directly wasm-exposable) c_style_enum = 0 ; @name foo / 1 ; @name bar / 2 ; @name baz See generated output input​ c_style_enum = 0 ; @name foo / 1 ; @name bar / 2 ; @name baz output​ (export/rust/src/lib.rs) #[derive(Clone, Debug)] pub enum CStyleEnum { Foo, Bar, Baz, } impl CStyleEnum { pub fn new_foo() -> Self { Self::Foo } pub fn new_bar() -> Self { Self::Bar } pub fn new_baz() -> Self { Self::Baz } } If there is only one non-constant field in the inlined group then that will be inlined in the enum, but if there are multiple then a new struct will be generated from this variant group_choice = [ foo // ; @name these 0, x: uint // ; @name are 1, x: uint, y: text // ; @name also basic ; @name nameable ] choices = [ type_choice, c_style_enum, group_choice, ] See generated output input​ foo = [ int, name: text, fp: float64, ] basic = ( b: #6.23(uint), c: text, ) type_choice = 0 ; @name you / \"hello world\" ; @name can / uint ; @name name / text ; @name variants / bytes ; @name like / #6.64([*uint]) ; @name this c_style_enum = 0 ; @name foo / 1 ; @name bar / 2 ; @name baz group_choice = [ foo // ; @name these 0, x: uint // ; @name are 1, x: uint, y: text // ; @name also basic ; @name nameable ] choices = [ type_choice, c_style_enum, group_choice, ] output​ (export/rust/src/lib.rs) #[derive(Clone, Debug)] pub struct Are { pub x: u64, pub y: String, } impl Are { pub fn new(x: u64, y: String) -> Self { Self { x, y } } } #[derive(Clone, Debug)] pub struct Basic { pub b: u64, pub c: String, } impl Basic { pub fn new(b: u64, c: String) -> Self { Self { b, c } } } #[derive(Clone, Debug)] pub enum CStyleEnum { Foo, Bar, Baz, } impl CStyleEnum { pub fn new_foo() -> Self { Self::Foo } pub fn new_bar() -> Self { Self::Bar } pub fn new_baz() -> Self { Self::Baz } } #[derive(Clone, Debug)] pub struct Choices { pub type_choice: TypeChoice, pub c_style_enum: CStyleEnum, pub group_choice: GroupChoice, } impl Choices { pub fn new( type_choice: TypeChoice, c_style_enum: CStyleEnum, group_choice: GroupChoice, ) -> Self { Self { type_choice, c_style_enum, group_choice, } } } #[derive(Clone, Debug)] pub struct Foo { pub index_0: Int, pub name: String, pub fp: f64, } impl Foo { pub fn new(index_0: Int, name: String, fp: f64) -> Self { Self { index_0, name, fp } } } #[derive(Clone, Debug)] pub enum GroupChoice { Foo(Foo), These(These), Are(Are), Basic(Basic), } impl GroupChoice { pub fn new_foo(index_0: Int, name: String, fp: f64) -> Self { Self::Foo(Foo::new(index_0, name, fp)) } pub fn new_these(x: u64) -> Self { Self::These(These::new(x)) } pub fn new_are(x: u64, y: String) -> Self { Self::Are(Are::new(x, y)) } pub fn new_basic(b: u64, c: String) -> Self { Self::Basic(Basic::new(b, c)) } } #[derive(Clone, Debug)] pub enum Int { Uint(u64), Nint(u64), } impl Int { pub fn new_uint(value: u64) -> Self { Self::Uint(value) } /// * `value` - Value as encoded in CBOR - note: a negative `x` here would be `|x + 1|` due to CBOR's `nint` encoding e.g. to represent -5, pass in 4. pub fn new_nint(value: u64) -> Self { Self::Nint(value) } } impl std::fmt::Display for Int { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { Self::Uint(x) => write!(f, \"{}\", x), Self::Nint(x) => write!(f, \"-{}\", x + 1), } } } impl std::str::FromStr for Int { type Err = IntError; fn from_str(s: &str) -> Result { let x = i128::from_str(s).map_err(IntError::Parsing)?; Self::try_from(x).map_err(IntError::Bounds) } } impl TryFrom for Int { type Error = std::num::TryFromIntError; fn try_from(x: i128) -> Result { if x >= 0 { u64::try_from(x).map(Self::Uint) } else { u64::try_from((x + 1).abs()).map(Self::Nint) } } } #[derive(Clone, Debug)] pub enum IntError { Bounds(std::num::TryFromIntError), Parsing(std::num::ParseIntError), } #[derive(Clone, Debug)] pub struct These { pub x: u64, } impl These { pub fn new(x: u64) -> Self { Self { x } } } #[derive(Clone, Debug)] pub enum TypeChoice { You, Can, Name(u64), Variants(String), Like(Vec), This(Vec), } impl TypeChoice { pub fn new_you() -> Self { Self::You } pub fn new_can() -> Self { Self::Can } pub fn new_name(name: u64) -> Self { Self::Name(name) } pub fn new_variants(variants: String) -> Self { Self::Variants(variants) } pub fn new_like(like: Vec) -> Self { Self::Like(like) } pub fn new_this(this: Vec) -> Self { Self::This(this) } }","s":"Type Choices","u":"/cddl-codegen/examples","h":"#type-choices","p":24},{"i":41,"t":"git clone https://github.com/dcSpark/cddl-codegen && cd cddl-codegen","s":"Install","u":"/cddl-codegen/getting_started","h":"#install","p":39},{"i":43,"t":"To run execute cargo run -- --input=input.cddl --output=EXPORT_DIR to read ./input.cddl and produce output code in ./EXPORT_DIR/. cargo run -- --input=example/test.cddl --output=export","s":"Run Example","u":"/cddl-codegen/getting_started","h":"#run-example","p":39},{"i":45,"t":"cargo build --release target/release/cddl-codegen --input example/test.cddl --output export","s":"Build","u":"/cddl-codegen/getting_started","h":"#build","p":39},{"i":47,"t":"Inside of the output directly the tool always produces a rust/ directory (including Cargo.toml, etc). Unless we pass in --wasm=false the tool also generates a corresponding wasm/ directory. The default format for rust/ is to have a lib.rs containing the structs and serialization.rs containing their (de)serialization implementations/corresponding types. The wasm/ directory is full of wasm_bindgen-annotated wrappers all in lib.rs for the corresponding rust-use-only structs in rust/ and can be compiled for WASM builds by running wasm-pack build on it. Example Output note The output format can change slightly depending on certain command line flags: --wasm=false --preserve-encodings=true --json-schema-export true --package-json true --json-schema-export true","s":"Output format","u":"/cddl-codegen/output_format","h":"","p":46},{"i":49,"t":"In the wasm crate we can't always go one to one with the rust crate. Here are some differences/extra types in the WASM create. AsRef From and Into are implemented to go between the rust and wasm crate types to help.","s":"Wasm Differences","u":"/cddl-codegen/wasm_differences","h":"","p":48},{"i":51,"t":"wasm_bindgen cannot expose doubly-nested types like Vec which can be a limitation if T was a non-byte primtive. Any array of non-primitives such as [foo] will generate another type called FooList which supports all basic array operations. This lets us get around the wasm_bindgen limitation (without implementing cross-boundary traits which could be inefficient/tedious/complicated). This array wrapper implements len() -> self, get(usize) -> T and add(T).","s":"Heterogeneous Arrays","u":"/cddl-codegen/wasm_differences","h":"#heterogeneous-arrays","p":48},{"i":53,"t":"Map literals also generate a type for them with len() -> usize and insert(K, V) -> Option. The table type will have a MapKeyToValue name for whichever Key and Value types it's exposed as if it's anonymously inlined a as a member, or will take on the identifier if it's a named one.","s":"Tables","u":"/cddl-codegen/wasm_differences","h":"#tables","p":48},{"i":55,"t":"Both type/group choices generate rust-style enums. On the wasm side we can't do that so we directly wrap the rust type, and then provide a FooKind c-style enum for each rust enum Foo just for checking which variant it is.","s":"Enums","u":"/cddl-codegen/wasm_differences","h":"#enums","p":48}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/2",[0,4.657,1,3.292,2,0.609,3,1.241,4,1.522,5,2.064,6,4.657,7,2.294,8,2.064,9,3.292]],["t/4",[2,0.551,4,1.776,5,1.867,8,2.246,9,3.582,10,1.685,11,3.468,12,4.172,13,3.468,14,4.213,15,4.172,16,4.213,17,2.978,18,3.468,19,4.213,20,4.213,21,3.468,22,4.213,23,4.213,24,4.213,25,4.213,26,2.611,27,2.978,28,4.213,29,3.468,30,2.076]],["t/6",[1,1.067,2,0.461,3,0.818,4,0.493,5,1.563,8,2.347,10,1.228,26,0.936,27,1.725,30,0.744,31,1.265,32,4.141,33,1.509,34,1.067,35,3.871,36,3.702,37,1.509,38,1.154,39,3.161,40,2.903,41,1.399,42,1.509,43,1.243,44,0.831,45,1.509,46,2.903,47,1.509,48,1.509,49,0.511,50,2.009,51,1.243,52,0.581,53,1.509,54,3.526,55,1.509,56,1.509,57,1.903,58,1.903,59,2.44,60,1.152,61,3.081,62,2.006,63,1.509,64,4.921,65,4.052,66,1.399,67,4.141,68,1.509,69,1.509,70,1.509,71,2.131,72,1.509,73,1.725,74,0.446,75,1.143,76,1.509,77,2.17,78,2.702,79,1.874,80,3.702,81,3.858,82,1.509,83,2.4,84,1.716,85,1.509,86,1.903,87,1.509,88,1.509,89,1.509,90,0.669,91,1.509,92,2.493,93,0.744,94,1.509,95,1.509,96,1.725,97,0.29,98,1.067,99,1.509,100,1.509,101,1.725,102,1.509,103,1.243,104,1.509,105,1.243,106,3.071,107,2.44,108,1.509,109,1.067,110,1.509,111,3.071,112,1.509,113,1.509,114,1.509,115,1.509,116,1.903,117,1.081,118,4.312,119,3.871,120,3.588,121,1.509,122,1.243,123,3.071,124,2.903,125,0.831,126,1.509,127,1.509,128,1.509,129,2.44,130,2.528,131,1.509,132,1.509,133,1.509,134,1.067,135,2.009,136,1.243,137,2.44,138,3.526,139,2.44,140,2.44,141,1.509,142,1.067,143,1.509,144,1.243,145,1.243,146,2.44,147,1.509,148,1.509,149,1.512,150,2.17,151,2.44,152,2.903,153,1.725,154,4.686,155,2.009,156,1.243,157,2.009,158,3.071,159,1.725,160,2.44,161,2.44,162,1.512,163,2.44,164,1.509,165,1.509,166,1.243,167,1.509,168,1.509,169,1.243,170,1.509,171,3.071,172,1.509,173,1.243,174,1.509,175,1.509]],["t/8",[4,1.529,8,2.074,38,1.122,78,2.901,176,2.901,177,4.679,178,2.901,179,3.852,180,4.679]],["t/10",[10,1.175,13,2.419,31,1.609,38,1.181,41,1.453,49,0.331,52,0.919,58,1.822,60,1.861,75,0.868,78,1.822,84,1.781,90,1.302,96,2.077,97,0.88,125,2.522,135,4.055,159,2.077,176,1.822,178,1.822,181,1.618,182,2.213,183,2.077,184,2.077,185,2.84,186,1.071,187,1.302,188,0.783,189,2.419,190,1.448,191,2.938,192,2.077,193,2.938,194,2.419,195,4.019,196,1.97,197,2.183,198,4.019,199,4.019,200,2.938,201,1.78,202,2.938,203,2.938,204,2.938,205,1.822,206,2.419,207,2.077,208,4.019,209,2.938,210,2.938,211,1.781,212,2.938,213,2.938,214,2.938,215,2.938,216,2.938,217,2.938,218,2.938,219,2.419,220,2.938]],["t/12",[3,1.163,4,1.426,10,1.745,41,1.577,49,0.491,52,0.856,75,1.289,93,2.55,97,0.838,186,1.47,188,1.379,221,3.085,222,1.871,223,1.745,224,3.593,225,4.364]],["t/14",[2,0.513,41,1.418,49,0.442,52,0.913,74,1.159,75,1.433,97,0.932,186,1.535,187,2.439,188,1.293,201,1.989,221,2.773,222,1.904,223,1.94,226,3.923,227,3.23,228,3.995,229,3.923]],["t/16",[1,1.889,2,0.695,4,1.545,7,1.316,8,1.184,9,3.079,10,1.505,11,4.465,12,3.098,21,3.098,30,1.316,39,1.656,41,0.966,49,0.598,52,0.814,58,1.656,66,0.966,73,2.66,74,0.789,75,1.527,77,3.079,84,1.184,86,1.656,97,0.957,101,1.889,103,3.892,116,1.656,122,3.586,136,2.2,142,1.889,150,2.66,152,2.2,153,1.889,155,3.892,159,1.889,166,2.2,173,3.098,176,1.656,186,1.469,187,1.93,188,0.712,194,3.098,230,2.672,231,3.763,232,2.2,233,1.471,234,1.889,235,3.763,236,3.079,237,2.2,238,2.672,239,2.672,240,3.763,241,3.098,242,4.983,243,4.728,244,3.763,245,3.763,246,3.763,247,3.763,248,3.763,249,3.763,250,3.763,251,2.672,252,2.672,253,2.672,254,2.672,255,2.672,256,2.672,257,2.672,258,2.672,259,2.672,260,2.2,261,3.763,262,1.889,263,2.672,264,1.889]],["t/19",[2,0.519,3,0.604,5,1.481,7,1.117,8,1.759,15,1.866,26,1.405,29,1.866,44,1.248,49,0.584,51,1.866,52,0.919,57,1.405,60,0.741,62,1.336,66,1.766,71,1.84,73,1.602,75,0.669,79,1.587,80,1.602,81,1.866,86,1.405,90,1.004,97,0.642,98,2.362,125,1.248,156,1.866,162,1.405,178,1.405,181,1.84,182,2.691,185,1.405,186,1.488,187,1.942,188,1.501,190,1.647,196,1.868,197,1.004,201,1.766,211,1.481,233,1.248,265,2.072,266,3.342,267,5.055,268,1.602,269,1.602,270,1.602,271,2.267,272,2.751,273,1.866,274,2.461,275,1.405,276,2.267,277,1.866,278,1.602,279,1.866,280,2.267,281,2.267,282,2.267,283,2.267,284,2.267,285,1.866,286,2.185,287,0.906,288,1.405,289,2.267,290,2.267,291,1.602,292,2.267,293,1.866,294,1.866,295,1.866,296,2.267,297,2.267,298,2.267,299,2.267,300,2.267,301,2.267,302,2.267,303,2.267,304,2.267,305,2.751,306,1.866,307,2.267,308,2.267,309,2.267,310,2.751,311,2.267,312,2.267,313,2.267,314,2.267,315,1.602,316,1.405,317,1.866,318,2.267,319,2.267,320,2.267,321,2.267,322,2.267,323,1.117]],["t/21",[3,1.013,4,1.242,7,1.873,10,1.52,34,2.687,44,2.092,62,1.52,74,1.122,75,1.122,79,1.902,92,2.687,93,2.344,97,0.914,182,2.859,188,1.268,196,1.52,201,1.877,207,2.687,211,2.412,269,3.363,286,2.092,324,3.129,325,2.817,326,3.801,327,3.374,328,3.129,329,2.687,330,2.356,331,2.356,332,3.801,333,3.801,334,3.801,335,3.801,336,3.801,337,3.801,338,2.356,339,2.687]],["t/23",[2,0.47,3,0.957,41,1.297,49,0.57,52,0.879,60,1.173,61,2.538,62,1.436,71,1.976,74,1.06,75,1.355,79,1.436,83,2.225,84,1.591,93,1.769,96,2.538,109,2.538,125,1.976,162,2.225,186,1.348,196,1.436,197,1.591,201,1.297,211,1.591,265,2.225,269,2.538,270,2.538,274,2.845,275,2.225,291,2.538,306,2.956,315,2.538,316,2.225,317,2.956,324,2.956,325,2.626,331,2.225,338,2.225,340,2.538,341,3.59,342,3.136,343,3.59,344,3.59,345,4.164,346,5.058,347,2.956,348,3.59,349,3.59,350,2.538]],["t/26",[2,0.565,10,1.307,31,1.275,38,1.16,49,0.52,52,0.927,60,0.719,66,1.859,74,0.65,75,0.65,93,1.084,97,0.749,101,3.992,176,1.364,206,1.811,221,2.311,222,2.006,224,3.555,228,2.691,241,1.811,285,1.811,287,1.56,329,1.555,351,1.729,352,3.473,353,1.811,354,5.143,355,1.729,356,1.729,357,3.269,358,2.219,359,5.143,360,2.329,361,3.269,362,3.269,363,3.269,364,2.057,365,3.269,366,3.269,367,3.269,368,3.269,369,3.269,370,3.269,371,3.269,372,5.007,373,2.2,374,2.2,375,2.2,376,2.2,377,2.2]],["t/28",[2,0.324,3,1.112,27,1.749,31,0.809,38,0.854,41,0.894,49,0.279,52,0.869,57,1.534,66,1.749,74,0.731,90,1.097,97,0.475,117,1.097,188,1.443,190,2.25,192,1.749,197,1.85,222,1.986,223,1.425,264,1.749,287,0.989,288,3,293,2.037,294,4.149,295,4.739,323,2.057,339,1.749,351,1.097,352,2.208,355,1.097,356,1.097,358,1.097,360,1.097,364,1.425,378,5.04,379,5.04,380,4.174,381,4.174,382,5.04,383,4.174,384,5.04,385,5.04,386,5.04,387,4.174,388,5.04,389,2.951,390,5.04,391,4.174,392,4.174,393,2.474,394,2.474,395,4.174,396,4.174,397,4.174,398,2.474,399,2.474,400,2.474,401,3.563,402,3.563]],["t/30",[2,0.429,3,0.589,4,0.722,5,0.979,17,1.562,30,1.089,31,0.722,38,0.787,41,1.185,49,0.44,52,0.926,60,1.683,78,1.37,79,1.312,83,1.37,84,1.454,97,0.424,117,0.979,120,1.819,149,1.37,181,1.216,183,1.562,184,1.562,186,1.153,188,0.589,190,1.927,196,0.884,197,1.454,201,0.799,205,1.37,222,1.901,223,1.312,233,2.666,262,1.562,265,1.37,268,2.318,286,2.153,287,0.884,323,1.616,325,1.616,340,1.562,345,1.819,350,1.562,351,0.979,355,1.733,356,1.733,358,2.049,360,2.146,364,1.849,389,3.887,403,3.987,404,3.22,405,2.21,406,2.21,407,2.21,408,2.21,409,2.21,410,2.7,411,2.7,412,1.819,413,1.819,414,1.819,415,1.819,416,1.819,417,1.819,418,1.562,419,1.819,420,1.819,421,1.562,422,1.819,423,1.819,424,1.819,425,1.819,426,1.819,427,1.819,428,1.819,429,1.819,430,1.819,431,1.819,432,2.7,433,1.819,434,1.819,435,1.819,436,2.7,437,1.819,438,1.819,439,2.7,440,1.819,441,1.819,442,1.819,443,1.819,444,1.819,445,1.819,446,1.819,447,1.819,448,1.819,449,1.819,450,1.819,451,1.819,452,1.819,453,1.819]],["t/32",[2,0.622,4,1.242,31,1.242,38,1.141,49,0.428,52,0.91,97,0.73,186,1.45,187,2.302,188,1.013,222,1.967,223,1.902,232,3.917,233,2.859,234,3.847,260,3.129,287,1.52,351,1.684,355,1.684,356,1.684,358,1.684,360,1.684,364,1.902,454,3.801,455,3.129,456,3.129]],["t/34",[2,0.586,3,0.632,5,2.201,7,1.702,31,0.775,38,0.829,49,0.267,52,0.914,60,1.463,66,1.618,71,2.465,79,0.948,84,1.051,90,1.531,97,0.663,98,3.165,125,2.243,144,1.953,157,3.355,183,1.676,184,1.676,185,1.47,186,1.366,187,1.984,188,1.428,192,1.676,196,1.903,197,1.806,201,1.853,211,1.051,222,1.853,223,0.948,227,1.953,270,3.165,287,0.948,305,1.953,323,1.169,340,1.676,347,2.844,351,1.051,355,1.051,356,1.051,358,1.051,360,1.051,364,1.381,421,3.511,455,4.482,457,3.355,458,4.075,459,4.759,460,4.967,461,4.967,462,4.075,463,3.455,464,2.844,465,3.455,466,1.953,467,2.372,468,2.372,469,2.372,470,3.455,471,4.075,472,3.455,473,2.372,474,2.372]],["t/36",[2,0.393,7,1.17,10,0.584,31,0.776,34,1.032,38,0.829,49,0.267,52,0.931,60,1.676,66,0.858,74,0.701,75,0.431,86,0.905,90,1.33,97,0.783,117,1.33,153,2.689,181,2.094,182,2.245,188,1.324,190,2.207,196,0.949,201,1.249,207,1.678,222,2.052,223,1.948,274,2.777,277,1.955,278,1.032,279,4.011,286,1.307,287,0.949,288,1.472,323,1.874,325,0.719,327,1.472,338,1.472,342,2.951,351,1.052,352,0.905,355,1.807,356,1.807,358,1.807,360,2.159,364,2.102,418,1.032,464,1.202,466,1.202,475,3.715,476,1.955,477,1.46,478,2.374,479,3.805,480,1.46,481,3.001,482,3.805,483,3.805,484,1.46,485,1.46,486,2.374,487,1.955,488,3.457,489,2.374,490,2.374,491,2.374,492,2.374,493,2.374,494,3.457,495,3.805,496,1.955,497,1.955,498,1.955,499,2.374,500,2.374,501,2.471,502,1.46,503,1.955,504,1.202,505,1.202,506,1.202,507,1.202,508,1.202,509,1.202,510,1.202,511,1.202,512,1.202,513,1.202,514,1.202,515,1.202,516,1.202,517,1.202,518,1.202,519,1.202]],["t/38",[2,0.373,5,0.476,17,0.759,30,0.529,31,0.6,38,0.684,41,0.388,44,0.591,49,0.271,52,0.933,60,1.785,62,0.429,66,0.388,74,0.317,79,0.735,84,0.814,97,0.671,117,0.476,145,0.884,149,0.666,182,0.591,186,1.135,187,1.42,188,0.854,189,2.638,190,1.579,196,1.493,197,1.655,201,0.388,205,0.666,211,1.42,219,1.983,222,2.071,223,1.803,233,2.59,234,2.639,268,0.759,274,1.493,275,1.139,287,0.735,316,0.666,323,2.1,325,1.94,327,1.139,330,0.666,338,0.666,339,1.299,342,2.315,351,0.814,352,0.666,355,1.947,356,1.947,358,2.044,360,2.37,364,2.174,389,2.906,403,2.876,404,0.884,410,1.513,411,1.983,412,0.884,413,0.884,414,0.884,415,0.884,416,0.884,417,0.884,418,0.759,419,0.884,420,0.884,421,0.759,422,0.884,423,0.884,424,0.884,425,0.884,426,0.884,427,0.884,428,0.884,429,0.884,430,0.884,431,0.884,432,1.513,433,0.884,434,0.884,435,0.884,436,1.513,437,0.884,438,0.884,439,1.513,440,0.884,441,0.884,442,0.884,443,0.884,444,0.884,445,0.884,446,0.884,447,0.884,448,0.884,449,0.884,450,0.884,451,0.884,452,0.884,453,0.884,456,1.513,457,1.513,475,2.265,476,0.884,487,0.884,496,2.876,497,0.884,498,0.884,501,0.884,503,2.347,504,0.884,505,0.884,506,0.884,507,0.884,508,0.884,509,0.884,510,0.884,511,0.884,512,0.884,513,0.884,514,0.884,515,0.884,516,0.884,517,0.884,518,0.884,519,0.884,520,3.937,521,3.494,522,1.838,523,1.838,524,1.838,525,1.838,526,1.838,527,1.838,528,3.734,529,1.838,530,2.851,531,1.074,532,1.074,533,1.074,534,1.074,535,1.074,536,1.074,537,1.074,538,1.074,539,1.074,540,1.074,541,1.074,542,1.074]],["t/41",[8,2.084,36,3.821,52,0.705,310,3.871,543,4.702,544,4.702,545,4.702]],["t/43",[4,1.479,38,1.086,43,3.727,65,3.727,546,4.613,547,4.527,548,4.354,549,4.527,550,4.527,551,4.527,552,3.727,553,4.527,554,4.527]],["t/45",[31,1.529,36,3.308,38,1.122,39,2.901,134,3.308,548,3.852,555,4.679,556,4.679,557,4.679]],["t/47",[2,0.464,3,1.415,26,2.201,38,1.207,39,2.825,40,4.143,46,3.751,49,0.4,50,3.751,57,2.201,58,2.201,62,2.123,71,1.955,74,1.048,75,1.048,80,3.557,83,2.201,97,0.875,105,3.751,116,2.201,118,4.143,124,3.751,130,2.923,134,3.221,142,2.51,149,2.201,169,2.923,179,2.923,205,2.201,237,2.923,331,2.201,350,2.51,546,2.923,552,2.923,558,3.551,559,2.923,560,3.551,561,3.551,562,3.551,563,4.557,564,4.557,565,4.557,566,3.551,567,3.551,568,3.551,569,3.551,570,3.551,571,3.551,572,3.551,573,3.551,574,3.551]],["t/49",[3,1.383,30,2.16,49,0.584,61,3.908,62,2.211,93,2.16,117,2.3,178,2.718,236,3.099,264,3.099,559,3.609,575,3.609,576,5.19,577,4.384,578,4.384]],["t/51",[2,0.522,44,2.698,49,0.552,52,0.735,66,1.441,77,2.819,116,2.472,150,2.819,181,2.921,186,1.063,236,3.465,262,2.819,265,2.472,286,2.195,288,3.039,291,3.465,329,2.819,330,2.472,331,3.039,353,3.283,364,1.595,475,2.819,579,3.988,580,3.988,581,3.988,582,3.988,583,3.988,584,3.988,585,3.988,586,3.988,587,3.988,588,3.988,589,3.988,590,3.283,591,3.988,592,3.988]],["t/53",[2,0.556,18,4.492,49,0.614,52,0.764,60,1.665,79,1.699,90,1.883,117,1.883,162,2.634,185,2.634,272,3.498,273,3.498,275,2.634,315,3.004,330,2.634,590,3.498,593,4.25,594,4.25,595,4.25,596,4.25,597,4.25,598,4.25,599,4.25,600,4.25]],["t/55",[2,0.568,3,1.467,49,0.489,62,1.737,74,1.283,92,3.071,109,3.071,186,1.158,211,1.925,278,3.071,316,3.2,325,2.714,327,2.693,328,3.577,342,2.693,575,3.577,601,4.345,602,4.345,603,4.345,604,4.345]]],"invertedIndex":[["",{"_index":52,"t":{"6":{"position":[[336,1],[806,1],[3461,1],[3734,1],[3755,1]]},"10":{"position":[[93,1],[95,1],[118,1],[235,1],[237,1],[239,1],[244,2],[255,1],[260,2],[273,1],[397,1],[399,1],[401,1],[406,2],[417,1],[432,1],[437,2],[450,1],[466,1],[680,1],[684,1],[700,1],[704,1],[755,1],[757,1],[759,1],[804,2],[807,1],[858,2],[861,1],[912,1]]},"12":{"position":[[19,1],[66,1],[98,1],[105,1]]},"14":{"position":[[4,1],[15,1],[17,1],[30,1],[76,1],[98,1],[112,1],[198,1],[205,1],[221,1],[223,1],[236,1],[256,1],[270,1]]},"16":{"position":[[97,1],[130,1],[132,1],[151,1],[1271,1],[1307,1],[1309,1],[1316,1]]},"19":{"position":[[138,1],[140,1],[145,1],[147,1],[151,2],[156,1],[158,1],[194,1],[196,1],[235,1],[311,1],[313,1],[332,1],[341,1],[343,1],[345,1],[352,2],[360,1],[401,1],[417,1],[456,1],[458,1],[468,2],[485,2],[493,1],[525,1],[545,1],[565,1],[596,1],[598,1],[600,1],[604,1],[612,1],[633,1],[658,1],[665,1],[808,1],[819,1],[851,1],[899,1],[1017,1],[1023,1],[1402,1],[1404,1],[1423,1],[1459,1],[1480,1]]},"23":{"position":[[85,1],[89,1],[178,1],[182,1],[186,1],[224,1],[384,1],[388,1],[392,1]]},"26":{"position":[[16,1],[57,1],[112,1],[193,1],[201,1],[253,1],[261,1],[383,1],[404,1],[415,1],[425,1],[455,1],[462,1],[476,1],[478,1],[515,1],[542,1],[549,1],[575,1],[577,1],[614,1],[647,1],[654,1],[666,1],[668,1],[749,1],[757,1],[776,1],[778,1],[813,1],[848,1],[869,1],[877,1],[900,1],[908,1],[927,1],[929,1],[964,1],[1013,1],[1066,1],[1141,1],[1155,1],[1230,1],[1237,1],[1244,1],[1279,1],[1281,1],[1283,1],[1363,1],[1384,1],[1395,1],[1405,1],[1435,1],[1442,1],[1456,1],[1458,1],[1495,1],[1522,1],[1529,1],[1555,1],[1557,1],[1594,1],[1627,1],[1634,1],[1646,1],[1648,1]]},"28":{"position":[[12,1],[14,1],[187,1],[602,1],[604,1],[777,1],[859,1],[989,1],[1008,1],[1118,1],[1121,1],[1128,1],[1135,1],[1188,1],[1190,1],[1192,1]]},"30":{"position":[[4,1],[6,1],[38,1],[400,1],[402,1],[434,1],[508,1],[559,1],[570,1],[621,1],[628,1],[635,1],[655,1],[657,1],[659,1],[698,1],[722,1],[733,1],[764,1],[771,1],[791,1],[793,3],[797,1],[875,1],[973,1],[980,1],[1000,1],[1002,1],[1035,1],[1085,1],[1104,1],[1117,1],[1133,2],[1146,5],[1170,2],[1183,1],[1185,4],[1192,1],[1198,1],[1200,1],[1202,1],[1235,1],[1246,1],[1280,1],[1306,1],[1314,1],[1407,1],[1409,1],[1438,1],[1451,1],[1502,1],[1530,1],[1537,2],[1542,1],[1577,1],[1584,1],[1603,1],[1631,1],[1633,1],[1635,1],[1679,1],[1750,1]]},"32":{"position":[[73,1],[134,1],[167,1],[169,1],[188,1],[262,1],[288,1],[299,1],[329,1],[336,1],[343,1],[350,1],[352,1],[354,1]]},"34":{"position":[[11,1],[27,1],[35,1],[53,1],[65,1],[80,1],[82,1],[138,1],[154,1],[161,1],[169,1],[196,1],[218,1],[242,1],[586,1],[751,1],[758,1],[766,1],[839,1],[990,1],[1046,1],[1048,1],[1104,1],[1120,1],[1127,1],[1135,1],[1162,1],[1184,1],[1208,1],[1282,1],[1403,1],[1414,1],[1494,1],[1501,1],[1508,1],[1571,1],[1573,1],[1575,1]]},"36":{"position":[[57,1],[59,1],[86,1],[355,1],[357,1],[404,2],[415,1],[429,1],[431,1],[451,1],[755,1],[757,1],[791,1],[827,1],[829,1],[856,1],[864,1],[866,1],[913,2],[924,1],[938,1],[940,1],[960,1],[972,1],[974,1],[1008,1],[1084,1],[1113,1],[1126,1],[1159,1],[1166,1],[1173,1],[1180,1],[1182,1],[1184,1],[1232,1],[1258,1],[1276,1],[1306,1],[1313,1],[1320,1],[1327,1],[1329,1],[1331,1],[1374,1],[1444,1],[1457,1],[1527,1],[1534,1],[1541,1],[1575,1],[1577,1],[1579,1],[1625,1],[1665,1],[1681,1],[1725,1],[1732,1],[1739,1],[1753,1],[1755,1],[1757,1],[1929,1],[1931,1],[1938,1],[1940,1],[1947,2],[1955,2],[1963,1],[1965,1],[1972,2],[1975,1],[1989,1],[1993,1],[2005,1],[2021,1],[2033,1],[2040,1],[2053,1],[2060,1],[2077,1],[2085,1],[2098,1],[2115,1],[2174,1],[2176,1],[2183,1],[2185,1],[2192,2],[2200,2],[2208,1],[2210,1],[2217,2],[2220,1],[2234,1],[2238,1],[2250,1],[2266,1],[2278,1],[2285,1],[2298,1],[2305,1],[2322,1],[2330,1],[2343,1],[2360,1],[2457,1],[2513,1],[2536,1],[2596,1],[2603,1],[2610,1],[2621,1],[2623,1],[2625,1],[2671,1],[2743,1],[2761,1],[2781,1],[2788,1],[2800,1],[2820,1],[2827,1],[2839,1],[2869,1],[2876,1],[2895,1],[2936,1],[2943,1],[2970,1],[3004,1],[3011,1],[3030,1],[3065,1],[3072,1],[3091,1],[3093,1]]},"38":{"position":[[110,1],[114,1],[126,1],[130,1],[142,1],[146,1],[199,1],[203,1],[215,1],[219,1],[231,1],[235,1],[324,1],[341,1],[359,1],[379,1],[386,1],[398,1],[418,1],[425,1],[437,1],[457,1],[464,1],[476,1],[478,1],[673,1],[675,1],[681,2],[684,1],[709,2],[712,1],[744,2],[747,1],[766,1],[783,1],[793,1],[795,1],[838,1],[872,1],[874,1],[906,1],[914,1],[916,1],[943,1],[957,1],[961,1],[973,1],[989,1],[1001,1],[1008,1],[1021,1],[1028,1],[1045,1],[1053,1],[1066,1],[1083,1],[1109,1],[1113,1],[1125,1],[1129,1],[1141,1],[1145,1],[1170,1],[1172,1],[1178,2],[1181,1],[1206,2],[1209,1],[1241,2],[1244,1],[1263,1],[1280,1],[1290,1],[1292,1],[1335,1],[1409,1],[1438,1],[1449,1],[1482,1],[1489,1],[1496,1],[1503,1],[1505,1],[1507,1],[1550,1],[1579,1],[1592,1],[1625,1],[1632,1],[1639,1],[1646,1],[1648,1],[1650,1],[1696,1],[1713,1],[1731,1],[1751,1],[1758,1],[1770,1],[1790,1],[1797,1],[1809,1],[1829,1],[1836,1],[1848,1],[1850,1],[1895,1],[1987,1],[2002,1],[2094,1],[2097,1],[2104,1],[2111,1],[2154,1],[2156,1],[2158,1],[2199,1],[2250,1],[2261,1],[2312,1],[2319,1],[2326,1],[2346,1],[2348,1],[2350,1],[2397,1],[2447,1],[2466,1],[2521,1],[2528,1],[2569,1],[2597,1],[2604,1],[2633,1],[2670,1],[2677,1],[2705,1],[2744,1],[2751,1],[2783,1],[2785,1],[2824,1],[2848,1],[2859,1],[2890,1],[2897,1],[2917,1],[2919,3],[2923,1],[3001,1],[3099,1],[3106,1],[3126,1],[3128,1],[3161,1],[3211,1],[3230,1],[3243,1],[3259,2],[3272,5],[3296,2],[3309,1],[3311,4],[3318,1],[3324,1],[3326,1],[3328,1],[3361,1],[3372,1],[3406,1],[3432,1],[3440,1],[3533,1],[3535,1],[3564,1],[3577,1],[3628,1],[3656,1],[3663,2],[3668,1],[3703,1],[3710,1],[3729,1],[3757,1],[3759,1],[3761,1],[3805,1],[3876,1],[3919,1],[3933,1],[3946,1],[3968,1],[3975,1],[3982,1],[3986,1],[3988,1],[3990,1],[4036,1],[4108,1],[4126,1],[4146,1],[4153,1],[4165,1],[4185,1],[4192,1],[4204,1],[4234,1],[4241,1],[4260,1],[4301,1],[4308,1],[4335,1],[4369,1],[4376,1],[4395,1],[4430,1],[4437,1],[4456,1],[4458,1]]},"41":{"position":[[50,2]]},"51":{"position":[[428,1],[448,1]]},"53":{"position":[[55,1],[81,1]]}}}],["0",{"_index":196,"t":{"10":{"position":[[241,2],[403,2],[682,1],[779,2]]},"19":{"position":[[250,2],[403,3],[460,2],[602,1],[1039,1]]},"21":{"position":[[447,2]]},"23":{"position":[[386,1]]},"30":{"position":[[1540,1]]},"34":{"position":[[239,2],[988,1],[1011,2],[1205,2],[1568,2]]},"36":{"position":[[1991,1],[2236,1]]},"38":{"position":[[112,1],[201,1],[698,2],[959,1],[1111,1],[1195,2],[3666,1]]}}}],["0..32",{"_index":296,"t":{"19":{"position":[[865,7]]}}}],["0..4294967295",{"_index":383,"t":{"28":{"position":[[63,14],[337,13],[653,14]]}}}],["1",{"_index":197,"t":{"10":{"position":[[257,2],[434,2],[702,1],[830,2]]},"19":{"position":[[471,2]]},"23":{"position":[[390,1]]},"28":{"position":[[32,2],[284,1],[622,2]]},"30":{"position":[[877,3],[1194,3]]},"34":{"position":[[152,1],[749,1],[1118,1]]},"38":{"position":[[128,1],[217,1],[724,2],[1127,1],[1221,2],[3003,3],[3320,3]]}}}],["1).abs()).map(self::nint",{"_index":451,"t":{"30":{"position":[[1605,25]]},"38":{"position":[[3731,25]]}}}],["10",{"_index":399,"t":{"28":{"position":[[517,2]]}}}],["10..20",{"_index":392,"t":{"28":{"position":[[177,9],[553,8],[767,9]]}}}],["100",{"_index":462,"t":{"34":{"position":[[220,4],[992,4],[1186,4]]}}}],["128..127",{"_index":387,"t":{"28":{"position":[[104,9],[376,8],[694,9]]}}}],["2",{"_index":219,"t":{"10":{"position":[[884,2]]},"38":{"position":[[144,1],[233,1],[1143,1]]}}}],["20",{"_index":400,"t":{"28":{"position":[[524,2]]}}}],["32",{"_index":391,"t":{"28":{"position":[[153,3],[487,2],[743,3]]}}}],["4",{"_index":422,"t":{"30":{"position":[[941,2]]},"38":{"position":[[3067,2]]}}}],["5",{"_index":421,"t":{"30":{"position":[[930,2]]},"34":{"position":[[198,2],[215,2],[841,2],[896,2],[1164,2],[1181,2]]},"38":{"position":[[3056,2]]}}}],["6.1337(foo",{"_index":458,"t":{"34":{"position":[[89,13],[328,13],[1055,13]]}}}],["6.23(uint",{"_index":476,"t":{"36":{"position":[[64,12],[834,12]]},"38":{"position":[[921,12]]}}}],["6.30",{"_index":282,"t":{"19":{"position":[[527,7]]}}}],["6.42(byte",{"_index":467,"t":{"34":{"position":[[481,11]]}}}],["6.64([*uint",{"_index":498,"t":{"36":{"position":[[2100,14],[2345,14]]},"38":{"position":[[1068,14]]}}}],["65535",{"_index":381,"t":{"28":{"position":[[50,6],[313,5],[640,6]]}}}],["8",{"_index":385,"t":{"28":{"position":[[95,2],[130,2],[368,1],[401,1],[685,2],[720,2]]}}}],["_cddl_codegen_extern_type_",{"_index":232,"t":{"16":{"position":[[99,26]]},"32":{"position":[[75,26],[136,26]]}}}],["_cddl_codegen_raw_bytes_type_",{"_index":255,"t":{"16":{"position":[[1273,29]]}}}],["add(t",{"_index":592,"t":{"51":{"position":[[456,7]]}}}],["afterward",{"_index":246,"t":{"16":{"position":[[623,11],[1023,11]]}}}],["alia",{"_index":221,"t":{"12":{"position":[[42,5]]},"14":{"position":[[161,5]]},"26":{"position":[[5,5],[174,5]]}}}],["alias",{"_index":285,"t":{"19":{"position":[[619,7]]},"26":{"position":[[716,7]]}}}],["allow",{"_index":122,"t":{"6":{"position":[[2230,5]]},"16":{"position":[[29,6],[1185,6],[1559,6]]}}}],["along",{"_index":133,"t":{"6":{"position":[[2664,5]]}}}],["alway",{"_index":559,"t":{"47":{"position":[[39,6]]},"49":{"position":[[27,6]]}}}],["annot",{"_index":179,"t":{"8":{"position":[[30,8]]},"47":{"position":[[399,9]]}}}],["anonym",{"_index":600,"t":{"53":{"position":[[198,11]]}}}],["anoth",{"_index":353,"t":{"26":{"position":[[147,7]]},"51":{"position":[[175,7]]}}}],["aorborc",{"_index":341,"t":{"23":{"position":[[71,7]]}}}],["api",{"_index":157,"t":{"6":{"position":[[3476,4],[3924,3]]},"34":{"position":[[318,4],[431,5],[659,4]]}}}],["append",{"_index":63,"t":{"6":{"position":[[674,9]]}}}],["are(ar",{"_index":533,"t":{"38":{"position":[[2423,9]]}}}],["around",{"_index":329,"t":{"21":{"position":[[97,6]]},"26":{"position":[[140,6]]},"51":{"position":[[263,6]]}}}],["arr",{"_index":495,"t":{"36":{"position":[[1958,4],[2203,4],[2498,4],[2580,4],[2617,3]]}}}],["array",{"_index":181,"t":{"10":{"position":[[18,5]]},"19":{"position":[[87,5],[216,5]]},"30":{"position":[[163,5]]},"36":{"position":[[124,5],[161,5],[343,5],[630,5],[1864,6]]},"51":{"position":[[123,5],[228,5],[396,5]]}}}],["asref",{"_index":578,"t":{"49":{"position":[[127,5]]}}}],["assum",{"_index":158,"t":{"6":{"position":[[3503,7],[3771,7],[4176,7]]}}}],["attent",{"_index":376,"t":{"26":{"position":[[1659,9]]}}}],["awkward",{"_index":240,"t":{"16":{"position":[[421,7],[821,7]]}}}],["b",{"_index":274,"t":{"19":{"position":[[154,1],[207,2],[324,2]]},"23":{"position":[[87,1],[184,1]]},"36":{"position":[[61,2],[433,2],[831,2],[942,2],[1090,2],[1175,2],[1238,2],[1322,2]]},"38":{"position":[[918,2],[1556,2],[1641,2]]}}}],["back",{"_index":245,"t":{"16":{"position":[[603,4],[1003,4]]}}}],["bar",{"_index":187,"t":{"10":{"position":[[97,4]]},"14":{"position":[[11,3],[94,3],[217,3],[252,3]]},"16":{"position":[[126,3],[296,3],[1303,3]]},"19":{"position":[[337,3],[413,3],[635,3],[815,3]]},"32":{"position":[[163,3],[258,3],[295,3]]},"34":{"position":[[76,3],[1042,3],[1278,3],[1410,3]]},"38":{"position":[[138,3],[227,3],[331,4],[1137,3],[1703,4]]}}}],["basic",{"_index":475,"t":{"36":{"position":[[0,5],[51,5],[88,5],[284,6],[378,6],[407,7],[453,5],[581,5],[739,5],[821,5],[887,6],[916,7],[1078,5],[1120,5],[1402,6],[1488,6]]},"38":{"position":[[760,5],[908,5],[1257,5],[1544,5],[1586,5]]},"51":{"position":[[222,5]]}}}],["basic(bas",{"_index":534,"t":{"38":{"position":[[2433,13]]}}}],["baz",{"_index":189,"t":{"10":{"position":[[108,4]]},"38":{"position":[[154,3],[243,3],[336,4],[1153,3],[1708,4]]}}}],["be",{"_index":326,"t":{"21":{"position":[[54,5]]}}}],["befor",{"_index":250,"t":{"16":{"position":[[728,6],[1128,6]]}}}],["between",{"_index":264,"t":{"16":{"position":[[1784,8]]},"28":{"position":[[509,7]]},"49":{"position":[[169,7]]}}}],["beyond",{"_index":180,"t":{"8":{"position":[[55,6]]}}}],["biguint",{"_index":301,"t":{"19":{"position":[[987,8]]}}}],["both",{"_index":278,"t":{"19":{"position":[[271,5]]},"36":{"position":[[612,4]]},"55":{"position":[[0,4]]}}}],["bound",{"_index":294,"t":{"19":{"position":[[838,6]]},"28":{"position":[[157,8],[533,8],[747,8],[972,8],[1101,8],[1179,8]]}}}],["boundari",{"_index":588,"t":{"51":{"position":[[326,8]]}}}],["bounds(std::num::tryfrominterror",{"_index":452,"t":{"30":{"position":[[1681,34]]},"38":{"position":[[3807,34]]}}}],["bstr",{"_index":266,"t":{"19":{"position":[[20,5],[407,5]]}}}],["btreemap