[automerger skipped] RESTRICT AUTOMERGE: Ignore profile name from DICE chain entries am: d90bee7ea4 -s ours

am skip reason: contains skip directive

Original change: https://android-review.googlesource.com/c/platform/tools/security/+/3475030

Change-Id: Iac5bd69661c9feabf4dfe17b777579143f8a8671
Signed-off-by: Automerger Merge Worker <[email protected]>
diff --git a/fuzzing/OWNERS b/fuzzing/OWNERS
new file mode 100644
index 0000000..7540546
--- /dev/null
+++ b/fuzzing/OWNERS
@@ -0,0 +1 @@
+# Bug component: 330367
\ No newline at end of file
diff --git a/fuzzing/example_afl_fuzzer/Android.bp b/fuzzing/example_afl_fuzzer/Android.bp
new file mode 100644
index 0000000..8d3a6d0
--- /dev/null
+++ b/fuzzing/example_afl_fuzzer/Android.bp
@@ -0,0 +1,18 @@
+
+
+cc_fuzz {
+    name: "example_afl_fuzzer",
+    srcs: [
+        "example_afl_fuzzer.cpp",
+    ],
+    fuzz_config: {
+        triage_assignee: "[email protected]",
+    },
+    fuzzing_frameworks: {
+        afl: true,
+        libfuzzer: false,
+    },
+    cflags: [
+        "-Wno-array-bounds",
+    ],
+}
\ No newline at end of file
diff --git a/fuzzing/example_afl_fuzzer/example_afl_fuzzer.cpp b/fuzzing/example_afl_fuzzer/example_afl_fuzzer.cpp
new file mode 100644
index 0000000..96b536f
--- /dev/null
+++ b/fuzzing/example_afl_fuzzer/example_afl_fuzzer.cpp
@@ -0,0 +1,25 @@
+
+#include <stddef.h>
+#include <stdint.h>
+#include <string.h>
+#include <iostream>
+
+#include <string>
+
+void CrashFunc(const char *data) {
+
+  if (strcmp(data, "c") == 0) {
+    volatile int* arr = new int[10];
+    for (int i = 0; i < 15; i++){
+        arr[i] = 54;
+    }
+  }
+}
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+  std::string null_terminated_string(reinterpret_cast<const char *>(data),
+                                     size);
+
+  CrashFunc(null_terminated_string.c_str());
+  return 0;
+}
diff --git a/fuzzing/example_fuzzer/Android.bp b/fuzzing/example_fuzzer/Android.bp
index 97e792c..0b3dda5 100644
--- a/fuzzing/example_fuzzer/Android.bp
+++ b/fuzzing/example_fuzzer/Android.bp
@@ -22,7 +22,8 @@
         description: "Test Fuzzer",
         production_date: "6/8/2019",
         critical: false,
-        fuzz_on_haiku_device: true,
-        fuzz_on_haiku_host: true,
+        fuzz_on_haiku_device: false,
+        fuzz_on_haiku_host: false,
+        triage_assignee: "[email protected]"
     },
 }
diff --git a/fuzzing/example_rust_fuzzer/fuzzer.rs b/fuzzing/example_rust_fuzzer/fuzzer.rs
index 14c0a51..f7a7f19 100644
--- a/fuzzing/example_rust_fuzzer/fuzzer.rs
+++ b/fuzzing/example_rust_fuzzer/fuzzer.rs
@@ -18,7 +18,8 @@
 use libfuzzer_sys::fuzz_target;
 
 fn heap_oob() {
-    let xs = vec![0, 1, 2, 3];
+    let xs = [0, 1, 2, 3];
+    // SAFETY: This is in fact intentionally unsound, but we hope the fuzzer will catch it.
     let val = unsafe { *xs.as_ptr().offset(4) };
     println!("Out-of-bounds heap value: {}", val);
 }
diff --git a/fuzzing/llm/frameDecoder_fuzzer2/Android.bp b/fuzzing/llm/frameDecoder_fuzzer2/Android.bp
new file mode 100644
index 0000000..5c4350b
--- /dev/null
+++ b/fuzzing/llm/frameDecoder_fuzzer2/Android.bp
@@ -0,0 +1,21 @@
+// Copyright 2024 The Android Open Source Project
+package {
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_fuzz {
+    name: "frameDecoder2_fuzzer",
+    srcs: [
+        "FrameDecoderFuzzer2.cpp",
+    ],
+    corpus: ["corpus/*"],
+    defaults: ["libstagefright_fuzzer_defaults"],
+    include_dirs: [
+        "frameworks/av/media/libstagefright/include/media/stagefright/",
+        "frameworks/av/media/libstagefright/tests/fuzzers/",
+    ],
+    fuzz_config: {
+       cc: ["[email protected]"],
+       componentid: 330367,
+    },
+}
\ No newline at end of file
diff --git a/fuzzing/llm/frameDecoder_fuzzer2/FrameDecoderFuzzer2.cpp b/fuzzing/llm/frameDecoder_fuzzer2/FrameDecoderFuzzer2.cpp
new file mode 100644
index 0000000..1ccae30
--- /dev/null
+++ b/fuzzing/llm/frameDecoder_fuzzer2/FrameDecoderFuzzer2.cpp
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <FrameDecoder.h>
+#include <fuzzer/FuzzedDataProvider.h>
+#include <media/IMediaSource.h>
+#include <media/stagefright/MetaData.h>
+#include <media/stagefright/foundation/AString.h>
+#include "FrameDecoderHelpers.h"
+#include "IMediaSourceFuzzImpl.h"
+
+namespace android {
+
+#define MAX_MEDIA_BUFFER_SIZE 2048
+
+// Fuzzer entry point.
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+    // Init our wrapper
+    FuzzedDataProvider fdp(data, size);
+
+    std::string name = fdp.ConsumeRandomLengthString(fdp.remaining_bytes());
+    AString componentName(name.c_str());
+    sp<MetaData> trackMeta = generateMetaData(&fdp);
+    sp<IMediaSource> source = new IMediaSourceFuzzImpl(&fdp, MAX_MEDIA_BUFFER_SIZE);
+
+    // Image or video Decoder?
+    sp<FrameDecoder> decoder;
+    bool isVideoDecoder = fdp.ConsumeBool();
+    if (isVideoDecoder) {
+        decoder = new VideoFrameDecoder(componentName, trackMeta, source);
+    } else {
+        decoder = new MediaImageDecoder(componentName, trackMeta, source);
+    }
+
+    while (fdp.remaining_bytes()) {
+        if (fdp.ConsumeBool()) {
+            int64_t frameTimeUs = fdp.ConsumeIntegral<int64_t>();
+            int option = fdp.ConsumeIntegral<int>();
+            int colorFormat = fdp.ConsumeIntegral<int>();
+            decoder->init(frameTimeUs, option, colorFormat);
+            decoder->extractFrame();
+        } else {
+            FrameRect rect;
+            rect.left = fdp.ConsumeIntegral<int32_t>();
+            rect.top = fdp.ConsumeIntegral<int32_t>();
+            rect.right = fdp.ConsumeIntegral<int32_t>();
+            rect.bottom = fdp.ConsumeIntegral<int32_t>();
+            int64_t frameTimeUs = fdp.ConsumeIntegral<int64_t>();
+            int option = fdp.ConsumeIntegral<int>();
+            int colorFormat = fdp.ConsumeIntegral<int>();
+            decoder->init(frameTimeUs, option, colorFormat);
+            decoder->extractFrame(&rect);
+        }
+    }
+
+    generated_mime_types.clear();
+
+    return 0;
+}
+}  // namespace android
\ No newline at end of file
diff --git a/fuzzing/llm/libufdt_fuzzer2/Android.bp b/fuzzing/llm/libufdt_fuzzer2/Android.bp
new file mode 100644
index 0000000..973d43e
--- /dev/null
+++ b/fuzzing/llm/libufdt_fuzzer2/Android.bp
@@ -0,0 +1,26 @@
+// Copyright 2024 The Android Open Source Project
+package {
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_fuzz {
+    name: "libufdt_fuzzer2",
+    srcs: [
+        "libufdt_fuzzer2.cpp",
+    ],
+    static_libs: [
+        "libfdt",
+        "libufdt_silent",
+        "libufdt_sysdeps",
+    ],
+
+    include_dirs: [
+        "system/libufdt/include/",
+    ],
+
+    fuzz_config: {
+        cc: [ "[email protected]" ],
+        componentid: 330367,
+    },
+    host_supported: true,
+}
\ No newline at end of file
diff --git a/fuzzing/llm/libufdt_fuzzer2/libufdt_fuzzer2.cpp b/fuzzing/llm/libufdt_fuzzer2/libufdt_fuzzer2.cpp
new file mode 100644
index 0000000..c8c182e
--- /dev/null
+++ b/fuzzing/llm/libufdt_fuzzer2/libufdt_fuzzer2.cpp
@@ -0,0 +1,46 @@
+#include <cstdint>
+#include <fuzzer/FuzzedDataProvider.h>
+
+extern "C" {
+#include "libufdt_sysdeps.h"
+#include "libufdt.h"
+#include "ufdt_node_pool.h"
+}
+
+constexpr uint32_t kMaxData = 1024 * 512;
+constexpr size_t kMinDataSize = 10;
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+  if (size < kMinDataSize || size > kMaxData) {
+    return 0;
+  }
+
+  FuzzedDataProvider stream(data, size);
+
+  // Initialize node pool
+  struct ufdt_node_pool pool; // Allocate the structure.
+  ufdt_node_pool_construct(&pool); // Initialize it.
+
+  // Consume bytes and ensure they persist for the required lifetime
+  auto bytes = stream.ConsumeBytes<uint8_t>(stream.remaining_bytes() / 2);
+  void *fdtp = bytes.data();
+
+  int isValidBuffer = fdt_check_full(bytes.data(), bytes.size());
+  // Return if memory bytes are invalid
+  if (isValidBuffer != 0) {
+    return 0;
+  }
+
+  fdt32_t *fdt_tag_ptr = (fdt32_t *)fdt_offset_ptr(fdtp, 0, sizeof(fdt32_t));
+  struct ufdt_node *node = ufdt_node_construct(fdtp, fdt_tag_ptr, &pool);
+
+  int depth = stream.ConsumeIntegral<int>();
+
+  if (node) {
+    ufdt_node_print(node, depth);
+  }
+
+  ufdt_node_destruct(node, &pool);
+
+  return 0;
+}
diff --git a/fuzzing/llm/tinyxml2_fuzzer/Android.bp b/fuzzing/llm/tinyxml2_fuzzer/Android.bp
new file mode 100644
index 0000000..103d6a6
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/Android.bp
@@ -0,0 +1,20 @@
+cc_fuzz {
+    name: "tinyxml_parse_fuzzer",
+    srcs: [
+        "tinyxml_parse_fuzzer.cpp",
+    ],
+
+    static_libs: [
+        "libtinyxml2",
+    ],
+
+    fuzz_config: {
+        cc: [
+            "[email protected]",
+        ],
+        componentid: 330367,
+    },
+
+    corpus: ["xml_corpus/*"],
+    dictionary: "tinyxml.dict",
+}
diff --git a/fuzzing/llm/tinyxml2_fuzzer/gen_corpus.py b/fuzzing/llm/tinyxml2_fuzzer/gen_corpus.py
new file mode 100644
index 0000000..72b8a83
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/gen_corpus.py
@@ -0,0 +1,42 @@
+import os
+import random
+import string
+
+def generate_random_string(length):
+    return ''.join(random.choices(string.ascii_letters + string.digits, k=length))
+
+def generate_random_xml(depth=0):
+    if depth > 3:  # Limit the depth to prevent overly complex XML
+        return ""
+
+    tag = generate_random_string(random.randint(1, 10))
+    attributes = " ".join(
+        f'{generate_random_string(random.randint(1, 5))}="{generate_random_string(random.randint(1, 10))}"'
+        for _ in range(random.randint(0, 3))
+    )
+    content = generate_random_string(random.randint(0, 20))
+
+    children = "".join(generate_random_xml(depth + 1) for _ in range(random.randint(0, 2)))
+
+    return f"<{tag} {attributes}>{content}{children}</{tag}>"
+
+def create_corpus_file(filename, content):
+    with open(filename, "w") as file:
+        file.write(content)
+
+def main():
+    corpus_dir = "xml_corpus"
+    os.makedirs(corpus_dir, exist_ok=True)
+
+    # Generate a range of XML files
+    for i in range(100):
+        xml_content = generate_random_xml()
+        filename = os.path.join(corpus_dir, f"xml_{i}.xml")
+        create_corpus_file(filename, xml_content)
+
+    # Generate some specific edge cases
+    create_corpus_file(os.path.join(corpus_dir, "empty.xml"), "")
+    create_corpus_file(os.path.join(corpus_dir, "large.xml"), generate_random_xml() * 1000)
+
+if __name__ == "__main__":
+    main()
diff --git a/fuzzing/llm/tinyxml2_fuzzer/gen_corpus2.py b/fuzzing/llm/tinyxml2_fuzzer/gen_corpus2.py
new file mode 100644
index 0000000..90c0650
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/gen_corpus2.py
@@ -0,0 +1,59 @@
+import xml.etree.ElementTree as ET
+import random
+import os
+
+def generate_random_xml(depth=0, max_depth=3, num_attributes=2, max_text_length=20):
+    """
+    Recursively generates a random XML structure.
+
+    Args:
+        depth: Current nesting depth.
+        max_depth: Maximum allowed nesting depth.
+        num_attributes: Number of attributes to generate for each element.
+        max_text_length: Maximum length for text content in elements.
+
+    Returns:
+        ET.Element: The generated XML element.
+    """
+
+    tag_name = f"element_{random.randint(1, 100)}"
+    element = ET.Element(tag_name)
+
+    # Add attributes
+    for _ in range(random.randint(0, num_attributes)):
+        attr_name = f"attr_{random.randint(1, 10)}"
+        attr_value = "".join(random.choices("abcdefghijklmnopqrstuvwxyz ", k=random.randint(0, 15)))
+        element.set(attr_name, attr_value)
+
+    # Add text content
+    text_content = "".join(random.choices("abcdefghijklmnopqrstuvwxyz  <>&\"'", k=random.randint(0, max_text_length)))
+    element.text = text_content
+
+    # Recursively add child elements
+    if depth < max_depth:
+        num_children = random.randint(0, 3)
+        for _ in range(num_children):
+            child = generate_random_xml(depth + 1, max_depth, num_attributes, max_text_length)
+            element.append(child)
+
+    return element
+
+
+if __name__ == "__main__":
+    num_files = 100  # Number of XML files to generate
+    corpus_dir = "xml_corpus"  # Directory to store the generated files
+
+    os.makedirs(corpus_dir, exist_ok=True)
+
+    for i in range(num_files):
+        root_element = generate_random_xml()
+        tree = ET.ElementTree(root_element)
+
+        # Add corruptions (optional)
+        if random.random() < 0.2:  # 20% chance of introducing corruption
+            corruption_type = random.choice(["missing_end_tag", "invalid_attribute", "unescaped_chars"])
+            # ... add logic to introduce the specific corruption type ...
+
+        # Save to file
+        filename = os.path.join(corpus_dir, f"sample_{i}.xml")
+        tree.write(filename, encoding="utf-8", xml_declaration=True)
diff --git a/fuzzing/llm/tinyxml2_fuzzer/tinyxml.dict b/fuzzing/llm/tinyxml2_fuzzer/tinyxml.dict
new file mode 100644
index 0000000..8e2f330
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/tinyxml.dict
@@ -0,0 +1,12 @@
+root>
+<item>
+</item>
+name="
+value="
+id="
+type="text"
+&
+<
+>
+'
+"
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/tinyxml_parse_fuzzer.cpp b/fuzzing/llm/tinyxml2_fuzzer/tinyxml_parse_fuzzer.cpp
new file mode 100644
index 0000000..bacc7a7
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/tinyxml_parse_fuzzer.cpp
@@ -0,0 +1,75 @@
+#include <fuzzer/FuzzedDataProvider.h>
+#include <tinyxml2.h>
+#include <string>
+#include <vector>
+
+struct XMLElement {
+    std::string name;
+    std::vector<std::pair<std::string, std::string>> attributes;
+    std::vector<XMLElement> children;
+    std::string textContent;
+};
+
+std::string serializeXML(const XMLElement& element) {
+    std::string xml = "<" + element.name;
+
+    // Add attributes
+    for (const auto& attr : element.attributes) {
+        xml += " " + attr.first + "=\"" + attr.second + "\"";
+    }
+
+    xml += ">";
+
+    // Add text content
+    xml += element.textContent;
+
+    // Add child elements (recursively)
+    for (const auto& child : element.children) {
+        xml += serializeXML(child);
+    }
+
+    xml += "</" + element.name + ">";
+    return xml;
+}
+
+void GenerateXML(FuzzedDataProvider* stream, XMLElement* element, int maxDepth = 3) {
+    element->name = stream->ConsumeRandomLengthString(20);
+
+    int numAttributes = stream->ConsumeIntegralInRange<int>(0, 5);
+    for (int i = 0; i < numAttributes; ++i) {
+    element->attributes.push_back({
+      stream->ConsumeRandomLengthString(15), // Attribute name
+      stream->ConsumeRandomLengthString(30)  // Attribute value
+    });
+    }
+
+    int numChildren = stream->ConsumeIntegralInRange<int>(0, 3);
+    for (int i = 0; i < numChildren; ++i) {
+        XMLElement child;
+
+        // Recursive generation for nested elements
+        if (maxDepth > 0) {
+            GenerateXML(stream, &child, maxDepth - 1);
+        } else {
+            // Populate text content at the leaves
+            child.textContent = stream->ConsumeRandomLengthString(30);
+        }
+
+        element->children.push_back(child);
+    }
+}
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+    FuzzedDataProvider stream(data, size);
+
+    XMLElement rootElement;
+    GenerateXML(&stream, &rootElement);
+
+    // Convert the generated XMLElement structure into an XML string
+    std::string xmlString = serializeXML(rootElement);
+
+    tinyxml2::XMLDocument doc;
+    doc.Parse(xmlString.c_str(), xmlString.length());
+
+    return 0;
+}
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/empty.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/empty.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/empty.xml
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/large.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/large.xml
new file mode 100644
index 0000000..2c59ca9
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/large.xml
@@ -0,0 +1 @@
+<xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm><xjbAVm GP="HG" P="M1O" Z="PMp9wk">6cIKlaju<i SF="GMSO7IR">Bwr7va9KyxeOxGFYy4<yGeu pHv="cBtvti3e">Z5uMTtc<u4YJDX MH="fe3uYI4h">NiRzK</u4YJDX></yGeu></i></xjbAVm>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_0.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_0.xml
new file mode 100644
index 0000000..500ee71
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_0.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_23 attr_4="" attr_1="bilt">b'<element_1 attr_8="mzjmxxav"> b ut''b cu&amp;yp'nuifj<element_87 attr_2="tadn">wg"""m fnhal&lt;xyz<element_51 attr_9="xvpbbzi">esf&amp;zxj &amp;</element_51></element_87></element_1><element_55 attr_5="">h&amp;chpeh z&lt;d mdky&lt;<element_62>qnvio cqgi"nvyx<element_67>q"w&amp;xcdhy'btqdm</element_67><element_45 attr_8="nk"> ln </element_45></element_62><element_45 attr_6="kzrmydbopmgnsmg">dnn&amp;axo jp'<element_94> ktsrqo</element_94><element_54 attr_2="tstdukkqqypf" attr_5="dsndvzt">bxzxjhodclrgbfmt</element_54><element_80>wc vksdrwhvuavhqx</element_80></element_45><element_92>sxym&lt;dywrf</element_92></element_55></element_23>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_1.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_1.xml
new file mode 100644
index 0000000..6a53beb
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_1.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_19 attr_7="h" attr_6="hgpzgm l">&amp;yfhj&amp;r'jy llfci r"d</element_19>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_10.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_10.xml
new file mode 100644
index 0000000..10c4f9b
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_10.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_6 attr_7="a">ysgf&gt;kqsvqh &gt;bevzq<element_26 /><element_96>tf&lt;mqhc&amp;e&gt;emkh"<element_20 attr_10="nuoxwtr">wkavjmprlha&gt;hu<element_91 attr_2="fy">&gt;gu</element_91><element_6 attr_5="pul qjbpf">ebtrcpl</element_6></element_20><element_28 attr_10="">&gt;nr"uplpsvby</element_28><element_3 attr_6="">cz'e&gt;"y&amp;p&amp;td"sw<element_54 attr_2="oyh k">hix f&lt;l </element_54></element_3></element_96></element_6>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_11.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_11.xml
new file mode 100644
index 0000000..ee1fcee
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_11.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_66 attr_6="r qj" attr_4="wqjkgdug jpfv" />
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_12.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_12.xml
new file mode 100644
index 0000000..d175ec6
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_12.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_40>rk"lzgcclvbcur&amp;c g&gt;<element_91 attr_5="wbupacdven" attr_8="hgkcweswt">&lt;&amp;sxemdjv<element_41>jqc<element_67>yw anv "mgunfsyx&amp; </element_67><element_12 attr_5="vxfrblaqjmbc">tpyrx' '&gt;wxqey'oc</element_12><element_8 attr_2="i">vpwiaj'"tfl&lt;""&gt;</element_8></element_41><element_93 attr_5="">em&amp;ow'sfre'nyedr<element_4 attr_5="dvkjduiwxvuypw" attr_1="lcwnbpfpykuhl">&amp;w&lt;cyy&lt;kcfvdasu'cl</element_4><element_33 attr_6="vp">b&lt;h""bagyzkgfpu</element_33><element_41 attr_1="hlydpdgnfdggt">gip sujtq wvxso</element_41></element_93></element_91></element_40>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_13.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_13.xml
new file mode 100644
index 0000000..9271739
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_13.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_70 attr_7="nw" attr_8="rdgz">&amp;bspsxuxu&lt;wwqumb<element_14>kx"uo&gt;nwopuacf<element_97 attr_3="irgsuflsrmjzst" attr_10="tvuhj">ygguvn &lt; <element_65 attr_8="koojcjmw qm">ndsb&amp;"k</element_65><element_45>qicpnui"i&gt;skc'k</element_45></element_97><element_56 attr_7="gepum" attr_3="">adimrna'k"y'cfwsy<element_26 attr_9="ohiclvfmhisfa" attr_7="cdrxzzztoug">y&amp;gbejiulvktbe ge</element_26><element_63>ftl"lj  &amp;nj mf</element_63><element_44 attr_2="arfyffkiauku">"ynex&lt;&amp;iauh</element_44></element_56><element_11 attr_9="wbpudarnfzthcjq" attr_10="dvmgwprajxffd">midoya&amp;lci &lt;<element_61>bqnlv&lt;d</element_61></element_11></element_14><element_37><element_14 attr_3="sephlsdcnt">d&amp;fz&gt;tife&lt;<element_39 attr_4="ufd" attr_8="cjhvn olgvs">de&amp;q" okg j r</element_39></element_14><element_49 attr_4="qmwyygcpwrtpxtm">&amp;h&lt;r'rjyy&lt;&lt;"<element_72 attr_5="vitokvwyhwsa k" /></element_49><element_19>ccaxax"'<element_6 attr_4="uocoayq"> u'</element_6><element_60 attr_2="" attr_5="dum">" i'&amp;pye</element_60><element_34>'&lt;pd</element_34></element_19></element_37></element_70>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_14.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_14.xml
new file mode 100644
index 0000000..1bceac3
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_14.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_72 attr_4="eghznlcizjw">&gt;rue'rvyiy&gt;<element_98 attr_10="iugofcmwcs"> </element_98><element_45>v fsbnf<element_30>'p'lo&lt;&lt;z'jnu&lt;&lt; &lt;lzg<element_63 attr_10="qxcc">wym</element_63><element_4>t</element_4><element_62>iev nzcdbn&lt;qhwpbs&gt;</element_62></element_30><element_93 attr_5="qacqego" attr_9="fojvz">yogo n<element_64 attr_10="bvjd" attr_6=" mp">qgaf'dwblzg</element_64></element_93><element_55>pup""oziq coo nkd'w</element_55></element_45></element_72>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_15.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_15.xml
new file mode 100644
index 0000000..f863f54
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_15.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_17>wnfp&amp;k<element_94>e</element_94></element_17>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_16.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_16.xml
new file mode 100644
index 0000000..bac41ff
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_16.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_100>rs&amp;m&amp;y"f&gt;hu<element_91 attr_2="z devejom" attr_1="ft">&amp;<element_100 attr_5="xunwxmxryzsspio">z<element_45>ftjbasy</element_45></element_100><element_40 attr_6="fonjbzecbc zp">oiflf&gt;tazbwul</element_40><element_46 attr_4="flcfrejtb">n'&gt;jqfmmlw&lt;g'<element_82>bqrzcqomo'ir</element_82><element_62 attr_6="iscjhfzfmdghfj" attr_2="swmzbbrijwq">tf&amp;&gt;e</element_62></element_46></element_91><element_73>&amp;mywln i&lt;sb&amp;www</element_73></element_100>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_17.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_17.xml
new file mode 100644
index 0000000..bce1d52
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_17.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_61 attr_5="ugp" attr_4="">r gxmus&gt;&amp;rmn<element_53 attr_3="cwwktjcduvpop" attr_2="fk">p&gt;yrtodvhkjr&gt;ap <element_35 attr_5="cuz ne">kd<element_71 attr_9="vcdk">  sw&gt; j&amp;oqtqee</element_71><element_43 attr_1="a xdhxfmd" attr_8="yhkzugmh hkoulq">ibnjn"&lt;n&gt;s" </element_43><element_66 attr_6="akooizedcfy">vilvu</element_66></element_35><element_49 attr_2="cxxlimtt" attr_9="">bvec&amp;lf"qo</element_49></element_53></element_61>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_18.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_18.xml
new file mode 100644
index 0000000..96e53cc
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_18.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_60 attr_10="xtsd fszef" attr_8="wsjtnqsisyv" />
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_19.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_19.xml
new file mode 100644
index 0000000..f253df0
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_19.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_34 attr_4="mdrab" attr_9="nteprhixn"> dgcj"ynw&gt;fk b&amp;&lt;<element_58>ykygv&amp;&amp;zn'tr&gt;<element_77 attr_8="uxqdza">hi jrv f   m  m'yusb<element_24 attr_3="">akt </element_24><element_73 attr_8="ibhyo">ljxa&amp;yj'&lt;&gt;g</element_73><element_85>&amp;d&gt;jbig&gt;</element_85></element_77><element_37 attr_3="">wpz'uknggg'r&lt;jt</element_37><element_35 attr_2="lrwglnfnzocbq">sket"</element_35></element_58></element_34>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_2.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_2.xml
new file mode 100644
index 0000000..834cec4
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_2.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_3 attr_6="" attr_3="b">gg'&gt;gx</element_3>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_20.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_20.xml
new file mode 100644
index 0000000..e930ea9
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_20.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_2 attr_7="tzbhxyvlrs">lfbgh'xvuf&lt;bpbf<element_26 attr_3="kfynndhzyjbqaxd">kl&gt;fjt&amp;smgqo qsxlo<element_17><element_52>ka iyxt&lt;z&lt;b</element_52><element_35 attr_8="le">y&lt;xskzlnkv&amp;o</element_35><element_18 attr_10="eghbw jkisoq" attr_4="bylgxzeunpk">v'xcuiwo&amp;noedev&gt;bh</element_18></element_17></element_26><element_39>q &amp;hzqc uityzor<element_6>bgq&amp;dxaewhc</element_6><element_68 attr_9="xrjptjqucgkxnxq">vxjhzrqbtqxe<element_92 attr_1="" attr_6=" hmxnpd">lpuij</element_92><element_53>wspb ovr&gt;xls</element_53><element_9 attr_6="lswznd" attr_10="qgo">ih'&lt;g hfgse</element_9></element_68><element_11 attr_2="pper  fmjpao">"ccbw&lt;zd&lt;lekr'q<element_14 attr_10="bgpboqros" attr_1="mdftxxa" /><element_45 attr_9="kzyapmbfnmdt">vaaprcrla"njewa"&lt;kz</element_45><element_5 attr_10="vbuzb" attr_6="eerren tfyhvzt">or ft"&gt;nmelkfe</element_5></element_11></element_39><element_85>kkawwdam"wajj&amp;qsk<element_4 attr_8="yp" attr_4="vt w">dkkqgjz<element_4 attr_3="yizrtuwlgsiu" attr_4="udcjqqerl">rayvokvxz</element_4><element_71 attr_6="a afmsqdoaf">beh"sk&lt;</element_71><element_98 attr_2="xxbgn">jmmyennrp&lt;ftukhqv&amp;we</element_98></element_4></element_85></element_2>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_21.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_21.xml
new file mode 100644
index 0000000..52abc98
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_21.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_78 attr_2=" curbd">'&amp;siehwtzvh&lt;sntciz<element_19 attr_10="eeoiwsvv" /><element_48>'s&lt;mvox&lt;'</element_48></element_78>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_22.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_22.xml
new file mode 100644
index 0000000..86b8469
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_22.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_8>&gt;qk&lt;nf&lt;&lt;emsyo<element_47 attr_4="zjpiysuxzjarer" attr_2="wg e">xousimrf</element_47></element_8>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_23.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_23.xml
new file mode 100644
index 0000000..a2b3066
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_23.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_4 attr_4="srfku">jgrjy e"bczo"in<element_67 attr_10="sp">isji&amp;xkwmrwtnymf<element_70 attr_2="muqojfhpdcsknut">mln<element_82 /><element_70 attr_5="vqh" attr_9="we">&gt;b&amp;jtjo&lt;buw</element_70><element_90 attr_10="f dmblryae" attr_3="icuvrefvvfhzwh">&amp;vjqcu</element_90></element_70><element_41 attr_6="lhkss" attr_8="s ko m">if&lt;y<element_42 attr_6="pdgbu" attr_7="gfvl">&amp;cmu</element_42><element_35>fo&amp;ywfla&gt;xbwqvarougx</element_35></element_41><element_89>omzx jrdls&lt;ssk<element_16>uvqe</element_16><element_50 attr_8="">&lt;'eldgrjfczd'n</element_50><element_77>ls</element_77></element_89></element_67><element_64 attr_5="mdpszo">tw&gt;f</element_64><element_9>edwwr<element_98>ibxnvy<element_46 attr_8="p">rqlzqvxyd</element_46><element_88>au&gt;hl&amp;gy&amp;c"v</element_88><element_68>tuem'b c</element_68></element_98><element_9 attr_5="znhitymijwlc"><element_32 attr_1="ycqk">tzbhdhjm</element_32></element_9><element_97 attr_6="lktdpnb">&lt;cvyp&amp; xwu<element_94>k&lt;j &gt;dr f'</element_94><element_63 attr_5="ozmnokgmqlzdfes">ijjjcj</element_63></element_97></element_9></element_4>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_24.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_24.xml
new file mode 100644
index 0000000..872adf6
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_24.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_91 attr_3="erbh" attr_9="zxxhuovxcs">mraveifq</element_91>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_25.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_25.xml
new file mode 100644
index 0000000..14c0f39
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_25.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_11 attr_7="isokxlnku" attr_8="crntbyarsekfxfx">i<element_78 attr_3="alvkke ate">vxqdugf&gt;jmjngo<element_24 attr_7=" uqbnqozeqch">b&lt;tlnrmfwx"whiy</element_24></element_78><element_36 attr_2="" attr_5="eh hgdti">w&gt;gjtrbj&amp;'<element_64 attr_3="eslapzol">x 'md'kyjhxcm&gt;</element_64><element_63 attr_2="daq">pdz<element_89>lxdeojnrgc</element_89><element_60 attr_1="svljp">gqhmm w sbl</element_60></element_63><element_45>tiplwiam</element_45></element_36></element_11>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_26.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_26.xml
new file mode 100644
index 0000000..4a2ca75
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_26.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_30 attr_6="vbo fkhij" attr_9="xxrrhsfofgd">joh&lt;cb&lt;uyh&lt;"</element_30>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_27.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_27.xml
new file mode 100644
index 0000000..d9e0019
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_27.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_44 attr_2=" vuxvk" attr_3="anu dvivzhgkvfs">vrpwmi&amp;fpz"&lt;l&gt;raw<element_39 attr_6="cna" attr_10="ikdgtfqxrcc">tnrdwa</element_39><element_29>cjl qlp<element_78 attr_3="wfcyqnokvd ">gvzfno"xs</element_78><element_35 attr_5="yquccbhn">aredcnjre&amp;mv' el&lt;ka<element_75 attr_1="crsuecyygaqxrjs" attr_3="te">oh</element_75><element_48 attr_2="xm ya" /></element_35><element_22>j&gt;duwguxerdml<element_9 attr_9="">&lt;hn'bjiyc'xf mjqy</element_9></element_22></element_29><element_74 attr_3="dsnwepxgt" attr_1="">&amp;x<element_74>"vln'<element_93 attr_5="otlstw ">w&gt;f</element_93></element_74></element_74></element_44>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_28.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_28.xml
new file mode 100644
index 0000000..9f95d02
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_28.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_41 attr_10="kvopy">do<element_100>"nwfow<element_42 attr_6="elbiiaoiro" attr_5="rbpg">bhgyely<element_79 attr_6="muqmrlb">x""'"smysyn m</element_79><element_93 attr_6="bglbmdddnjm  ">uggv"&amp;gif</element_93><element_87 attr_9="e wducdpu">quiqlzauck</element_87></element_42></element_100><element_16 attr_6="slllfo"><element_42 attr_5="abzrthozk xc">masndfzmb&amp;ljwnt<element_64> prllj&gt;</element_64><element_26 attr_2="kkrcnjdzcblk">kgp</element_26><element_30 attr_9="gyfdkaihpw" attr_5="vqu mxor">mzy&lt;bzyrh&lt;e</element_30></element_42></element_16><element_37 attr_8="wrojllmvps">'dzxi oi'mcfc&gt;hakj<element_48 attr_8="gl" attr_2="">nj'<element_88 attr_8="xqswggco">pumxt</element_88><element_82>m &amp;ze qo"</element_82><element_72>u dm rp "ki'g&gt;a&lt;gxc</element_72></element_48><element_36 attr_4="rcgbssiuql y">lex cyx&amp;gr <element_41 attr_9="fy">"bw</element_41></element_36></element_37></element_41>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_29.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_29.xml
new file mode 100644
index 0000000..157aba7
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_29.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_50 attr_3="iagvtkefidji" attr_9="">&gt; o&lt;io" zf</element_50>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_3.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_3.xml
new file mode 100644
index 0000000..0c2698c
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_3.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_54 attr_9="ihhzleerrjy" attr_4="akkfifecs">fchxp<element_84>rl a onrmop&gt;pexxh'q&gt;</element_84><element_100>td "jpwphx'b<element_52 attr_4="i" attr_10="xb o"> kv&lt;dm"fz<element_14 attr_1="exwrlis" attr_8="bykeqd"> dk</element_14></element_52></element_100><element_48 attr_10=" dlwc" attr_7="elvrpsntlk"> t&amp;ffy&gt;rem&gt;cdjhar&amp;g<element_76 attr_4="wtt" attr_1="xvvomzqnlfadcv">&lt;&gt;&gt;qz&lt;rsxfau<element_70 attr_2="frllnjfwp ">&lt;wend'bu</element_70><element_52 attr_8="boe" attr_4="k">femwqhiecnkkpxugnw</element_52><element_16 /></element_76></element_48></element_54>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_30.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_30.xml
new file mode 100644
index 0000000..d1798bc
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_30.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_71>&amp;kvp'siy</element_71>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_31.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_31.xml
new file mode 100644
index 0000000..2dbcc95
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_31.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_34 attr_6="gnfr qudfh bs">b'b'uaidftg&amp;y</element_34>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_32.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_32.xml
new file mode 100644
index 0000000..5f49b50
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_32.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_39 attr_4="oukarupcjvpiroh">oj'v fue</element_39>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_33.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_33.xml
new file mode 100644
index 0000000..a6c94d5
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_33.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_96 attr_2="mgko"><element_91 attr_7="">&amp;fmsyqjuko&gt;imobmuluc<element_46 attr_7="">nghuenvwian<element_85>a"&lt;&gt;drm&lt;lqlxgveiy"h</element_85><element_30 attr_7="xdadh">r&amp;z&gt;jgig</element_30></element_46><element_85 attr_5="e" attr_1="bggrypmiocnxwiw">dn<element_75 attr_5="yscxqsg">xv&amp;pdd &amp;n</element_75></element_85><element_90 attr_4="xbjmh">ei&amp;&amp;<element_30>dzrulihqclo fg&lt;ey</element_30></element_90></element_91><element_88 attr_6="icfegyd ">ew pl"of</element_88><element_17 attr_4="a">e&lt;uz c&amp;cwv'yz<element_79>'hwfkoises"zhxe<element_28 attr_4="wavbvykvim pcn" attr_6="okdvrf ssrrfkmv">albz</element_28><element_86 attr_5="rpc"> </element_86></element_79><element_44 attr_2="fklyz" attr_10="hhusbyheld">qmmvjy&amp;</element_44><element_95>'"z"cc&gt;fpsx pdf"m<element_8 attr_6="" attr_5=""> j&gt;&amp;"&lt;d"uf </element_8></element_95></element_17></element_96>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_34.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_34.xml
new file mode 100644
index 0000000..2254524
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_34.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_96 attr_7="">uswy jb v'c"<element_36 attr_5="a wkgrq" attr_3="ud">&lt;eb'vdyof'lfe"&gt;gxcbv<element_95>lkv"milj<element_82>r yz&gt;o&lt;yc &lt;o</element_82><element_85>lqy</element_85></element_95></element_36><element_18>qg&lt;d<element_29>ylulgo<element_4>llmuygtb&gt;s"</element_4><element_23 attr_7="sq">whb&gt;aitumo</element_23><element_66>ozse"rkj</element_66></element_29></element_18><element_39>ehf<element_46>mdibb</element_46><element_75>'wiccxfz v&amp;uxe<element_34>vvd </element_34><element_25 attr_3="pky" attr_8="m">&gt;&gt;</element_25><element_12 attr_8="bivk lmaorxy" attr_5="ebwmyu">ynnw ezyo"r&lt;&lt;uubg</element_12></element_75></element_39></element_96>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_35.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_35.xml
new file mode 100644
index 0000000..79a4e08
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_35.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_35>aa kvd<element_97 attr_4="jxbtwiwvh">&lt;k i&gt;zeeb<element_65>&gt;jqrsquxw&gt;hz</element_65></element_97><element_41 attr_5="cwayel ">sb hucutpon</element_41></element_35>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_36.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_36.xml
new file mode 100644
index 0000000..e8ef847
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_36.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_73 attr_1="flgtwws" attr_4="es"><element_38>h&lt;hurnl<element_23 attr_7="yexngxtfiqh" attr_8="ln"> d'fczepj "wuc&amp;a</element_23><element_16 attr_9="ud">kiwervqw</element_16><element_77>  eu<element_80 attr_2="hzixcx hmj rzph" attr_9="xzib">zqfmw</element_80><element_57>thcx</element_57><element_78 attr_5="leojt"> qq</element_78></element_77></element_38><element_2 attr_10="pz" attr_1="und">neealnjod&gt;lq&lt;tbjhzs<element_94 attr_10="tjupexzn">wkq v<element_100>&amp;r ueh nhygzdmlbm</element_100><element_20> u'&amp;'giu&amp;xkt</element_20></element_94></element_2></element_73>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_37.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_37.xml
new file mode 100644
index 0000000..165856a
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_37.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_65 attr_6="dk">hdna&lt;&gt;</element_65>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_38.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_38.xml
new file mode 100644
index 0000000..e6e12d6
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_38.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_21>x'hq sczhgbo <element_74 attr_1="jflkiblzzcwgr">qnblmkxkrsb"</element_74></element_21>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_39.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_39.xml
new file mode 100644
index 0000000..dd6e459
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_39.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_15 attr_8="vomjpacgdot" attr_4="lsixyoeqdcvqudd">osej  &gt;qvhg<element_24>i"'p' pnzk ffedq&amp;b&lt; <element_64 attr_2="sutyypenav">mwztnocm&amp;fv<element_92>ervacrpv''cmzdda</element_92></element_64><element_86> gxwvn&lt;a<element_1 attr_3="y xi">lju</element_1><element_53 attr_6="p">whwpfnk</element_53></element_86></element_24><element_3 attr_9="xeqxpvh " attr_1=" thycth">yuvl lza w&gt;ac<element_9 attr_2="oumyctge" attr_10="innlrxajxftphd">hlmznq&amp;p<element_58 attr_8="xvyhhwl">bmzt'tif</element_58><element_92 attr_7="qto ist" attr_10="sovif b">"qdrf</element_92><element_91 attr_6="gft" attr_7="hweayrlgpw">c&lt;'</element_91></element_9><element_93>p&gt;jxomm&lt;rcz"</element_93><element_76 attr_9="dkzeehkfo">npu</element_76></element_3></element_15>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_4.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_4.xml
new file mode 100644
index 0000000..738a770
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_4.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_91 attr_8="bzgpprwizzt">e'ymrwqhszdji<element_49 attr_5="cv">m'ofwl</element_49></element_91>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_40.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_40.xml
new file mode 100644
index 0000000..c121ce5
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_40.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_99 attr_1="aqlobuvb">py'ytk&lt;rb&gt;gzcf"&gt;"b&lt;o<element_35 attr_4="zyf">woyzy<element_92 attr_2="xcjpvl" attr_10="sgdzw">ogzs<element_68>mbexcugp</element_68><element_53 attr_10="hsjiaszlovma">pav</element_53><element_100>kdjk</element_100></element_92><element_97>"&lt;rrny&gt;cefl"ru&lt;<element_34 attr_10="ls rryxuc">ipuu&lt;u&amp;q&amp;&amp;z qs</element_34><element_39 attr_5="zebleiizrzx">q&lt;okq"ocajxyltdk"k&gt;</element_39></element_97><element_67 attr_7="utkjji" attr_9="xwxw">iqm&lt;vbyjyxk'"yh<element_21 attr_10="brgmtvniuwa">fo"osohykaj</element_21></element_67></element_35></element_99>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_41.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_41.xml
new file mode 100644
index 0000000..0f1a05d
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_41.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_75 attr_9="ovbgw" attr_10="fywqhacwcqmimgn">f&gt;ixu<element_50>p&lt;aok"&gt;i xpjece<element_36 attr_6="gcswmp" attr_2="">ara&lt;slrsf c&lt;s</element_36><element_57>fp&lt;dmu&gt;f</element_57><element_9 attr_9="qhezpytutp">jpj&lt;'"<element_73 attr_3="bmehed">bjqi c</element_73><element_5 attr_8="bwlq ugngycughz">h myodju ql"sb&lt;x </element_5></element_9></element_50><element_66>qv&amp;plpe'msr's ah&amp;st<element_99>i'mm&lt;qu&lt;pit"vkndi<element_61 attr_6="gbgsykpkylzrcpr" attr_7="cgid">p&amp;&gt;fxkec ftnrqcqfxs</element_61><element_15 attr_10="fuliyzc">ncmnihr&amp;&lt;zdn</element_15><element_55 attr_5="lib d" attr_7="qdzat">dv"bqprxwwhdr&gt;imx&gt;</element_55></element_99><element_64>wfbex<element_52>'ovzis qjpu w</element_52><element_80 attr_2="luxkuqvglhysr" attr_3="nppmx icexxawp">&amp;uhjiwqlipsel</element_80></element_64></element_66></element_75>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_42.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_42.xml
new file mode 100644
index 0000000..e4e4b03
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_42.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_25 attr_9="oyrk mwwab" attr_3="ujucgcxeufo">a&amp;uory"qghks&lt;tgk<element_83 attr_4="mh" attr_1="cjoaw"> b"tlj'bsgfct rhf<element_56> va"&amp;ztvd"i&lt;rd&lt;</element_56></element_83></element_25>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_43.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_43.xml
new file mode 100644
index 0000000..52d4099
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_43.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_34 attr_4="mypwxde">ythm<element_34 attr_1="jp" attr_2="rautopc">vhyaax"ytvxaqkce&amp;qu<element_75 attr_5="hqcsvmdlgd">obwxteb&amp;dv<element_47>dzlql&gt;advuikugc</element_47><element_36 attr_5="qjooykeekrx"> </element_36></element_75></element_34><element_97>pfftqqtaoy</element_97><element_3 attr_9="rolylyjqsafq" attr_8="joneg jxwgsqy">rtd tvqyw a gf c</element_3></element_34>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_44.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_44.xml
new file mode 100644
index 0000000..223b0b5
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_44.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_66 attr_1=" " attr_10="g">pjgc<element_32 attr_3="ckpwqosahrycpc" attr_4="nvrgwdkamlhyfy">h"adloluaeqt qq<element_39 attr_4="mwbzaoqda" attr_6="u ce wumd">  yg&amp;wj&lt;rn'qror xm&lt;"<element_56>map&lt;mrjbyzjotk"c</element_56><element_50 attr_4="nqshdryugxsb">z deuh&lt; fxo&amp;lrpgm</element_50><element_56>v q</element_56></element_39><element_20>z<element_54 attr_8="rgeflrxublhcimp" attr_9="autlegaavt">&gt;gm'f</element_54><element_73>&amp;' nh</element_73></element_20><element_85 attr_2="njep basykauhcv">&lt;msabowvu&amp;gr ozvwn&gt;<element_83>lx&lt;f</element_83><element_38>"ptgziceh"</element_38></element_85></element_32><element_10 attr_10="bffh">&amp;yl&amp;qx<element_54 attr_3="e" attr_9=""> u jn&amp;'pknpiyqlchsa&lt;<element_6>bimaxrwppemgec&gt;</element_6><element_97 attr_7="aytvovjobhgk">p</element_97><element_74 attr_5="yubtatxq">vbszfsjj</element_74></element_54><element_90 attr_8="xozwszb  dw" attr_2="">qnurps<element_36>eqrvuvvw &amp;mrumephd</element_36></element_90><element_51 attr_5="dbyupn g" attr_6="aratbb i"><element_37 attr_9="egrb" attr_5="vfwhibq ">igthz"sdm i"wgi"a&amp;</element_37><element_55 attr_5="" attr_6="yjifsfypsgg">a</element_55></element_51></element_10><element_59 attr_4="nhkhqw">'ng"bhknhjzcn b<element_29>ocukgftg o&amp;&amp;<element_16 attr_5="grob twq" attr_10="jxudjzo">pjnwqufm</element_16><element_27 attr_5="taox iaoq" /></element_29></element_59></element_66>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_45.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_45.xml
new file mode 100644
index 0000000..aa17205
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_45.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_34 attr_3="" attr_7="qvsxzeuw">f&lt;ahj<element_17 attr_8="tscnq" attr_7="vapzkhiepr">n&lt;pll&amp;pmkf<element_92 attr_6="ajtcmo">wciyb&lt;aco&lt;l<element_6 attr_2="uqmbqizbrbl ">&amp;b'"prcdhwf&lt;albunv&amp;i</element_6><element_64>id'ayx</element_64></element_92><element_18 attr_3="esygevurer" attr_4="au h q u"> q<element_89>gl"pjif &amp;&gt;y d</element_89></element_18></element_17></element_34>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_46.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_46.xml
new file mode 100644
index 0000000..a3d5995
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_46.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_24>uk'pjoz"xvdipl&amp;"</element_24>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_47.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_47.xml
new file mode 100644
index 0000000..2fd8806
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_47.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_82 attr_7="ayl" attr_6="hfba  osdswo">"zdomak'&amp;"kmb</element_82>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_49.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_49.xml
new file mode 100644
index 0000000..d768bae
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_49.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_27 attr_8="ehuuvuo">jh</element_27>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_5.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_5.xml
new file mode 100644
index 0000000..b28f7ae
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_5.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_83>hwstg h<element_30>nklki c&gt;axtyo<element_87 attr_9="rmdygxlzqrrkimx" attr_1="geij">nocxypbtm<element_32>vza</element_32><element_10 attr_4="gntpt fi thfdl" attr_5="ecstebclo">"as&gt;'ua</element_10><element_63 attr_10="iv" attr_9=" bjhaoycggyhrd"> jffku&amp;u</element_63></element_87><element_5> see<element_21>ji</element_21></element_5><element_43>p&gt;'bh&amp;svwg</element_43></element_30><element_10 attr_9="uifkmjxxdtgdnx">yp'z'u&amp;vna&amp;f"diy</element_10><element_30 attr_7="aplzcee" attr_10="rtnwskpcdjdl">g"hswq&amp;kegkn&amp;l&amp;u&amp;sxq<element_26 attr_5="sc ypv" attr_7="pwwsiodohabwpkq"> zdt&gt;ripwsc bxka<element_9 attr_4="sskc">sd"hfzzpr</element_9><element_8>rce&amp;hj</element_8><element_72 attr_7="ent">bfzbraga&lt;&amp;aqmd</element_72></element_26><element_58><element_75>v bhge vvdgd" e</element_75></element_58><element_76 attr_4="wn" attr_8=" vzntppidedxub">hlum<element_11>jis "n</element_11></element_76></element_30></element_83>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_50.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_50.xml
new file mode 100644
index 0000000..7d9168f
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_50.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_7 attr_7="i"> qe"r"&gt;v&lt;lbf sjd<element_64 attr_3="lmjmkqvetrvdowr" attr_6="ndhtpugtmt">cmsmk"c<element_11 attr_5="w" attr_9="paroznz">"eunk</element_11><element_70 attr_4="" attr_3="g ttnyrdaaj">"eur<element_67 attr_10="ksuzvbwdjq zkw">yr"oqkz"i</element_67></element_70></element_64><element_56 attr_6="naykroquozuw" attr_5="e">uj"xhwanojdcrglekm<element_98 attr_8="elzfoqyvtu">qte&gt;qlb<element_17 attr_6="cigfamt">th bbp</element_17></element_98><element_5 attr_5="xiulxxrahv">ceue'e&gt;pjhemeyrbxin<element_96 attr_2="ncaoiazsfjtxs">jiut"d &amp; p&lt;v</element_96><element_45>vlkz</element_45></element_5><element_99>xe<element_55> "xvysm</element_55><element_52 attr_1="nssdhvux" attr_7=" aidhs">rncwtg</element_52><element_35> &gt;"etu</element_35></element_99></element_56></element_7>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_51.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_51.xml
new file mode 100644
index 0000000..c3e3e8e
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_51.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_96 attr_4="medkjfdaw" attr_6="glyj">&gt;ahiwpu&amp;"hzkqre &gt;arm</element_96>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_52.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_52.xml
new file mode 100644
index 0000000..2070667
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_52.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_95 attr_9="wkcbjjsme ab xx">it"p'xbikxj</element_95>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_53.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_53.xml
new file mode 100644
index 0000000..958628c
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_53.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_8 attr_4="keyhhqr">wd"wfcn</element_8>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_54.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_54.xml
new file mode 100644
index 0000000..266e140
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_54.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_82 attr_1="mwbgdyxbjw">&gt;hvuro az cnosjp"</element_82>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_55.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_55.xml
new file mode 100644
index 0000000..5f7c820
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_55.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_61>vr&gt;nqzmb"<element_62 attr_9="mgnhxykkyar hf" attr_1="ktwipn">nuungi&gt;</element_62><element_45>de 'p pjrw&amp;sm<element_59> iake&amp;i"enh&lt;ep&gt;aiug&lt;<element_41 attr_1="" attr_7="ac">pqbfl&gt;sl"xfxq&lt;czo&gt;rp</element_41></element_59><element_28 attr_9="mjxoztwawjjyuxn">kyx'e&amp;ndw<element_75 attr_6=" lvnkodxcnpfs">  dubdr </element_75><element_73 attr_6="pniramgsy">fzlh </element_73></element_28></element_45></element_61>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_56.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_56.xml
new file mode 100644
index 0000000..d231693
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_56.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_40 attr_6="bbpp" attr_1="rdkadsjxupgqoe">&gt;d&amp;lhhmqqks<element_92 attr_10="hyednas" attr_1="njr eokxd">gv j'zau<element_49 attr_4="ctnuu">ukvz"hpu&gt;x&lt;x&amp;at"<element_50 attr_10="afggsfdopetcax">ej&amp;" 'kfqs l"&amp;c</element_50><element_43 attr_4="tyhwpdrmhajjqz" attr_2="gzzclxa">ca"wfakftmb'gvzrun</element_43><element_85 attr_10="r">ql &gt;v'</element_85></element_49></element_92></element_40>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_57.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_57.xml
new file mode 100644
index 0000000..47f2484
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_57.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_84 attr_5="r" attr_6="frm kgozhlbmlxw">o&amp;vsfhnwbkm&lt;k"<element_88 attr_5="efzyd">sw<element_55 attr_10="bjqepuo" attr_4="bcichrbfveacro">p ff&gt; 'oz"x<element_27 attr_3="tsbhzknw"> rwahlmuv&amp;vm</element_27><element_74>p&lt;qimkq&amp;eru&amp; ix&lt;e</element_74></element_55><element_46 attr_1="iewzq" attr_6="  xf"> v&amp;&lt;p &amp;pygtd<element_6 attr_7="voin" attr_5="laajkh" /><element_28 attr_9="ypnodd" attr_1="gfyvdjfgzful">giun&amp;p&lt;&amp;'"jz x</element_28></element_46></element_88><element_95 attr_7="f">k<element_63 attr_8="ygnyt">wtsyja<element_63 attr_1="xkbghkuhrfjtzud" attr_2="t">&lt;uv&lt;hrvlsc zuya&gt;qjsv</element_63><element_94>jdl'oq</element_94></element_63><element_50 attr_10="gxdczxqmushp d ">h<element_54 attr_4="rf" attr_7="nr">efm"ha fbsmlpqlag</element_54></element_50><element_22 attr_5="avscajr" attr_9=" i ateohbf">&lt;h &lt;gkz'&lt;i"nmfxj<element_96 attr_6="vd">nxoqb ye&gt;sykco&gt;n</element_96></element_22></element_95><element_41 attr_10="tnfl" attr_1=" diqjax">&amp;v gpix"edj<element_48>z&amp;<element_27 attr_6="adjz" attr_4="hxegouiv">usox</element_27></element_48><element_91 attr_5="">ytctwnwr<element_29>bro u&gt;</element_29><element_1 /><element_32 attr_4="iqhtzdsmxtoc">scn&lt;'a</element_32></element_91><element_72 attr_10="phgtpliho iwr" attr_5="fajrnfrak">qhy&lt;id<element_19>cyfl</element_19><element_19>qz</element_19><element_19>tmfqxns'vdu</element_19></element_72></element_41></element_84>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_58.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_58.xml
new file mode 100644
index 0000000..ce214e2
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_58.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_74 attr_1="hghdnf ph w x">y'&lt;emujnfrxhfhm  o<element_2>jkyoud ""tdj<element_44 attr_6="" attr_8="wid jonubxf">dsizoej lz<element_84 attr_4="aolaeiboh" attr_5="hyjq ">o&amp;e'rpvshrwjk&amp;bjkw</element_84><element_91 attr_9="vrlwtjsruncaynt" attr_4="tkubi">l</element_91><element_31 attr_5="ipctxp">"&amp;mbigsm n t</element_31></element_44></element_2><element_40>orhnx&gt;ja&gt;r</element_40></element_74>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_59.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_59.xml
new file mode 100644
index 0000000..f49f0a5
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_59.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_89 attr_8="">irg<element_85 attr_8="wvy" attr_2="yhc wxl x">pu"zn'f"&gt;tpv dz<element_38>ykdzwp&amp;nk&amp; fhuixvk</element_38></element_85><element_47 attr_8="imqyezr xdupeh">btixw azh tk</element_47></element_89>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_6.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_6.xml
new file mode 100644
index 0000000..73624da
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_6.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_3 attr_6="" attr_7="kmqyn">lpd</element_3>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_60.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_60.xml
new file mode 100644
index 0000000..cec419e
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_60.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_90 attr_10="ptdfft">ujzzkpbdlwuiucf<element_34>imrnea"xc&amp;hep</element_34><element_87 attr_4="ixplupfa" attr_5="rweutpc">pi&gt;xyu<element_62 attr_4="kbbdlhafbgqsdh">qaux"g&amp;qehshtybs<element_72 attr_10="fcadckpiql">vjmy'skfz"</element_72><element_83 attr_10="" attr_3="npmszcmikxlzzv">rvfuid"tf </element_83><element_84>eftuaw&lt;bt v&gt;wpy&amp;zw&gt;f</element_84></element_62><element_28 attr_1="r"> hse"<element_50 attr_3="tlmhqkypsg">wkdz&amp;&amp;pg&amp;qv&gt;uab</element_50><element_14>ogglaxseq&amp;</element_14><element_52 attr_3="oplxgxo">&gt;lcluhgalxdcfinmwvb</element_52></element_28></element_87><element_32>i&lt;x &gt;bk&lt;nlwmrtmlwbd&gt;<element_99 attr_1="ele">m<element_77 attr_9="lrmhk  hyybsk" attr_5="susufh">&gt;&gt;sgrllwi</element_77></element_99><element_72 attr_4="hyoe"> hbhaosrbrzq'wnb&gt;jwi<element_22 attr_6="yplt">hn&gt;v&amp;</element_22></element_72></element_32></element_90>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_61.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_61.xml
new file mode 100644
index 0000000..9f1a676
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_61.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_71>'h<element_69 attr_2="klv">ddwb<element_21 attr_7="prmnlk" attr_1="xyzgo"><element_84 attr_1="qzbo" attr_2="uqqpwvi">tn u&lt;zzpusm lut</element_84></element_21><element_17 attr_4="gducbf">uqt'm&gt;'<element_65 attr_1="zeemwkxjrirz">z"py ag</element_65><element_35>&lt;i</element_35><element_25 attr_5="qgyljpfrnowgr w">ieiu</element_25></element_17><element_13 attr_6="zmkrwhzejosxzx" attr_9="izifbygde"><element_68 attr_5="ypwk mcqxo vn" attr_6="aamxvqnzok">c  pgmzsnc</element_68></element_13></element_69></element_71>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_62.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_62.xml
new file mode 100644
index 0000000..54b8366
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_62.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_73 attr_8=" lpbcuyazj">e &amp;zh</element_73>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_63.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_63.xml
new file mode 100644
index 0000000..4388b5c
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_63.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_18 attr_7="yigionb" attr_2="sptla">&gt;qaxqwuotayxdagm&gt;jpk<element_65 attr_8="cssx">frpcwbql wghe&lt;<element_17>d&amp;qq"s bou  m'k&gt;ny<element_48 attr_2="vvxr" attr_10="d zaxzsoguetsih">yoq oh"anz&gt;aoquls</element_48><element_34 attr_5="w vglypijp">rbkoxosspvmg</element_34><element_58 attr_7="tpew qymdq">x v&lt;&gt;zvqgbqwb&amp;h</element_58></element_17><element_81>y uipv'fgm"<element_34 attr_8="m qvkbgdodke" attr_6="uwgmm ">xawhwn"uvg"w</element_34><element_67 attr_4="mgofnd">xjzvbaz</element_67><element_13 attr_5="vzkbmlmhvcqxur">hrrl si&gt;akyc</element_13></element_81></element_65></element_18>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_64.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_64.xml
new file mode 100644
index 0000000..6c2dac5
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_64.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_98 attr_1="ri mkdmhafi"> qhv&gt;rr"npy</element_98>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_65.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_65.xml
new file mode 100644
index 0000000..2b02bd8
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_65.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_75>sityis&amp;r&gt;</element_75>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_66.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_66.xml
new file mode 100644
index 0000000..7ce3102
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_66.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_74 attr_9="mzxesyzpuflld">srkawr'<element_67 attr_4="bbwtn" attr_1="hz  g">d xhs&gt;v umy<element_40 /><element_3 attr_2="cvza" attr_7="zi ubuvuj">vewm &lt;h <element_77 attr_4="q">prv&amp; vhya"&amp;kfebdrjo&lt;</element_77><element_60 attr_6="" attr_4="puxauepctlco">a qpprt&amp;czyzxsj</element_60></element_3></element_67></element_74>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_67.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_67.xml
new file mode 100644
index 0000000..ae4cd9c
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_67.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_85 attr_2="mwr" attr_6="dyw">hzm''"me"y&gt;xxk<element_5 attr_4="qdy">vc'vagptfwp  h<element_13>cv&lt;ng</element_13><element_14>n&amp;</element_14></element_5></element_85>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_68.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_68.xml
new file mode 100644
index 0000000..d96e190
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_68.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_39>fxlnw&gt;'te 'dwi<element_97 attr_5="mqjliouibeam">rwhi'd&amp;l&lt;d<element_25 attr_3="m pe" attr_7="wkhtg jowania">x c<element_36 attr_2="zswphpkoqk" attr_7="zbopccrwyhmnoh">klf&amp;r vbzittdwk "</element_36><element_85>gw&gt; ovg"khnf</element_85><element_94 attr_8="wkof">hmhx ls&lt;y'</element_94></element_25></element_97></element_39>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_69.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_69.xml
new file mode 100644
index 0000000..4d825cf
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_69.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_60 attr_1="inlz" attr_7="zrlnl">  't<element_85 attr_5="btnquf opzai">idexzju'efe</element_85><element_14 attr_3="sggxhmolgyljyp">o gl</element_14></element_60>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_7.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_7.xml
new file mode 100644
index 0000000..9188568
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_7.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_39> tj'mvfm&gt;&amp;xs&gt;ntqy &gt;<element_14>" ogf<element_87 attr_8="sxfx cmiwl" attr_7="wipdtqsc">wypcrqo'x ufetmnq<element_45> cqz</element_45></element_87></element_14><element_37>"&amp;&lt;zq"h'wb&gt;xrslxdv o</element_37><element_18><element_13 attr_4="httvftf" attr_5="pxlayar wv">jpbe n&amp;ttqkadm dxtps<element_75> tp'bg</element_75><element_57 attr_10="vaulrxjydr vh">vgt'd&amp;m</element_57><element_51 attr_4="guczpzifcxl">tzvsl&gt;h"b qmfduywoh</element_51></element_13></element_18></element_39>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_70.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_70.xml
new file mode 100644
index 0000000..d2bbb85
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_70.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_43>r</element_43>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_71.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_71.xml
new file mode 100644
index 0000000..fd57b20
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_71.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_62 attr_8="zauatd dee ">rgdbaohbup'"acje"wb</element_62>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_72.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_72.xml
new file mode 100644
index 0000000..a9e2c81
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_72.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_9 attr_1="foapwgo" attr_7="smt yy"> ykzoxgz s'rzn<element_67 attr_6="trfsrpdie" attr_10="yusmqelewpf">yb&lt;</element_67><element_30>ci u ppvii<element_30>wq' n"aaqblty siyy<element_67>cv&amp;&amp; sunsfet"itwi</element_67><element_99>u</element_99><element_92>"fg anqc</element_92></element_30><element_22 attr_7="">&gt;j s&amp;sghu </element_22></element_30><element_68 attr_9="kchjahavl">k"kd"xmv&gt;es" <element_40 attr_9="jcxbqj szqhbmh" attr_6="gfz">e&gt;srbu&lt;' &amp;wo&gt;kk</element_40></element_68></element_9>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_73.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_73.xml
new file mode 100644
index 0000000..c6c70f8
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_73.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_8 attr_6="yyj yyqw">"ve"&gt;zzq'u<element_47 attr_2="izjpd">rdt</element_47></element_8>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_74.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_74.xml
new file mode 100644
index 0000000..6cd2ce0
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_74.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_90 attr_7="icyyx">&lt;zqoyscmzpwlip vdluc</element_90>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_75.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_75.xml
new file mode 100644
index 0000000..6c1c9b2
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_75.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_83>wgsxdg&amp;&gt;<element_22>  c uwyam uo</element_22><element_26>hgfkqinbptvx<element_83 attr_6=" ktbcqmsgon izk" attr_9="zxqsa" /></element_26><element_1 attr_8="nqiuolnsuu">qar'<element_11> ovatvqg"ibnoucoe<element_78 /><element_99>caf'ejyhgpwxgmrct</element_99><element_79 attr_1="xmewvpufbx hmn">bgfs'mol zx '&amp;a</element_79></element_11><element_55 attr_8="zmoghy" attr_10="srlgccdoktnxdzi">cqnmy&lt;x </element_55><element_30>qaihhsd&lt;y&gt;j&gt;<element_77>f&gt;m g</element_77><element_87 attr_6="jg">vx</element_87><element_57 attr_8="nnko" attr_9="">&amp;toj&lt;&gt;&lt;"v ngiz"ai</element_57></element_30></element_1></element_83>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_76.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_76.xml
new file mode 100644
index 0000000..391e26b
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_76.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_20>o<element_73>zhdx i<element_23 attr_7="ztiggg" attr_10="xmoxutw zck">  vyjg odz<element_52 attr_1="bmhdqwri" attr_4="w">inlts&gt;zzo&gt;ypubbb&amp;h&gt;b</element_52><element_29>zszx</element_29><element_69 attr_6="w">zolum&gt;j</element_69></element_23></element_73></element_20>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_77.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_77.xml
new file mode 100644
index 0000000..f9db24b
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_77.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_22 attr_7="pgbcw kn" attr_9="easg uykdxddk">uc<element_98>"mmvso bislh "jyimq<element_71 attr_7="ut hzebps"> eh<element_54>uq&lt;b"dayqgjmb&amp; hs"ac</element_54></element_71><element_21 attr_10="zunoxei" attr_2="qzlzxiidcu">vae <element_36>usdtlnwz iuru"s</element_36><element_80 attr_6="yyyepawc">iaqiemwpopoeky mwgz</element_80></element_21><element_12>udrnwedpqaiftdxmyllz<element_70 attr_6="ok" attr_7="ratuwmvdcapqxm">cr"</element_70><element_10 attr_4="xlqocrtifntik">qk "jm</element_10></element_12></element_98></element_22>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_78.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_78.xml
new file mode 100644
index 0000000..eacf2c8
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_78.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_1 attr_2="tjgsf ji" attr_1="gsmddpecmym">rqaznkp m sm '&amp;dkur</element_1>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_79.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_79.xml
new file mode 100644
index 0000000..d5028fa
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_79.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_68 attr_9="mxgmuqcfmsymvb">hdmyqgs<element_45>roitnwq" gehzyo</element_45><element_66>v mmsxbpnu&gt;beyzq<element_32 attr_9="qpnyelugral" attr_7="pwubtfnpd qmx">bmlstoo&gt;azawuq</element_32></element_66></element_68>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_8.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_8.xml
new file mode 100644
index 0000000..3ad22b2
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_8.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_98>hxsbx&amp;grrobr xh my<element_81 attr_2=" gzysappqogek">y</element_81><element_53 attr_6="gpcswwkqso" attr_9="rtw">pqgnswj&lt;oorh'qi llyj</element_53><element_60 attr_4="oswehnrtessu">wc&lt;</element_60></element_98>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_80.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_80.xml
new file mode 100644
index 0000000..54078a6
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_80.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_3 attr_10="ifx  ikrlkxlbcc" attr_8="ahucbduon">neoc mwd"</element_3>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_81.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_81.xml
new file mode 100644
index 0000000..522443c
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_81.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_50 attr_6="iba">hjhw&gt;rj<element_83>yqnnwavkr</element_83><element_18 attr_8="i r" attr_7="vqfgcw">whq<element_22 attr_4="" attr_10="jreszogsfxajxd">me &amp;'hwb<element_14 attr_2="bubqijuzjbe" attr_5="jisrlkwut">okuy</element_14></element_22></element_18><element_70 attr_6="babshwiworem">kk&gt;z<element_38 attr_6="fcvhmjah">qf<element_43 attr_7="ihfwcqoebbcz" attr_3="tq">umsi 'jlgows"j</element_43><element_64 attr_6="ok" attr_10="tfrovraufpcn">ay</element_64></element_38><element_98 attr_9="rxtgb tzkercg">uj onezfvdyzi'b<element_83 attr_7="fkudrnyg">zq"z&amp;vwtued euo</element_83></element_98></element_70></element_50>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_82.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_82.xml
new file mode 100644
index 0000000..1a1cf38
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_82.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_22>thsue</element_22>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_83.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_83.xml
new file mode 100644
index 0000000..5b83f28
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_83.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_4 attr_4="psmsvifvcbzmnik" attr_7="">'v"og i sa"bsu<element_36 attr_5="szebafutwbyna " attr_9="omk">bg'ag&amp;tvtjafe&lt;zuu</element_36><element_88 attr_4="g" attr_1="pfssvmshkbukjes">fn&lt;&gt;'joy<element_10>vw <element_49 attr_10="fxhbcsk">ijstol"</element_49><element_44>i&lt;ynk"k"</element_44><element_83 attr_8="ahaw" attr_4="yxdnrcg nus">k uy   dk&gt;l </element_83></element_10><element_66 attr_8="uvo" attr_3="i vjow">zwvuvi'fuxzl"<element_42 attr_8="pizo">&lt;h&gt;&gt;xjy</element_42><element_24>kzrrhh"g&lt;</element_24></element_66></element_88><element_11 attr_3="ugvf" attr_4="yerfhtk">hfbu<element_18>"g'aald"fbz&lt;&amp;g"ceob<element_26 attr_3="nbpjwcmt" attr_7="ecbrwsnupnz">ml'o'mq</element_26><element_71 attr_2="lefwtjcgthq">zbw&gt;</element_71><element_2>famxoblnsf  s'</element_2></element_18><element_50 attr_8="xlurp  egt z g">w<element_92 attr_6="bldt" attr_9="flgrodnxccz">fmr</element_92></element_50></element_11></element_4>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_84.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_84.xml
new file mode 100644
index 0000000..6651324
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_84.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_87>c<element_99>wq&amp; qa'hps aked <element_23 attr_9="szuvzgyurlan" attr_4="">j&gt;a<element_67 attr_5="wbl" attr_1="cdgk  uzhzct">cctjaq</element_67></element_23><element_67>t&amp;c<element_67 attr_10="vheiwknjpjn" attr_3="nwvoczwol b pwu" /></element_67><element_71>eftwujqic&gt;k'rbmi<element_23 attr_3="hiscfsp" attr_7="h ffzpihvezpisz">gqnlfxaqsvrtvwp</element_23></element_71></element_99></element_87>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_85.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_85.xml
new file mode 100644
index 0000000..c72fa4c
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_85.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_38>t&lt;tv"kt'rgni</element_38>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_86.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_86.xml
new file mode 100644
index 0000000..c30b9da
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_86.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_67 attr_10="cvtkpplhhjm" attr_1="">oxl  &gt; 'a&lt;z&amp;ozbct&lt;ht</element_67>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_87.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_87.xml
new file mode 100644
index 0000000..2bb4433
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_87.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_92 attr_9="">q&lt;mtrccxwrpi<element_87>jbidr lyiosws pktf</element_87><element_14>fmurop"sisp<element_4 attr_5="asqliccjzud">wom&lt;k engbwll&amp;e <element_39 attr_3="nawzitjtooqofm" attr_10="bsnxk">zzstx  r x"r'ku"too</element_39></element_4><element_79 attr_10="" attr_5="kklxathlxsijmu">y k&gt;h&lt;p&gt;x" u<element_52 attr_8="jcbgzhkbu" /><element_97 attr_9="qweligunszu" attr_4="krsmabhiyvwpine">s'fpgnjot&gt;gfe </element_97></element_79></element_14><element_99 attr_2="omdrrwc yyw" attr_9="kfpoilkmn">dv&amp;"ahlvst&lt;&gt;xaiu<element_53 attr_1="jqkuozeiueveo" attr_4="yduc nj">"vd"xbi&amp;h<element_28> &lt;qcoi pheg</element_28><element_50 attr_3="rkqa" attr_5="yhhtisfbyq">h</element_50><element_30>"w&lt;</element_30></element_53><element_91 attr_1="kmyyq">lodxlzy&amp;"w vn<element_94 attr_4="qztbml ">s g xr&lt;rdjwqlwey&amp;fgr</element_94></element_91><element_57>bq<element_55 attr_5="diobjuqiyilog" attr_3="yebjdk pcpfldk">tu'l&lt;</element_55><element_84 attr_5="rz" attr_6="r">e</element_84></element_57></element_99></element_92>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_88.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_88.xml
new file mode 100644
index 0000000..98d7cec
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_88.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_45 attr_4="elcemdhxugckki" attr_6=" vfynaul">&gt;u&gt;g<element_57>t<element_5 attr_5="xvdftfoc">gw'xlwu aib xrjqd</element_5></element_57><element_52 attr_9="iqpjeqg"> vlhuk lui"nayg&gt;<element_84 attr_5="myzvnqlcsrj">'f<element_27 attr_1="dbdwlgersancbdr" attr_7="ornkgkkycici">  lohlzw&amp;ix az</element_27><element_72 attr_5="">nlbpqsruz'ku</element_72></element_84><element_53>xjnzmi&lt;rdw"vsvl&amp;<element_20>srk&gt;r&lt;ocwvroz&amp;fx</element_20><element_80 attr_4="emceljpsym" attr_8="">ohur"i' </element_80><element_77 attr_1="pzxocmc asglgi">hgz vnqtu</element_77></element_53></element_52><element_39 attr_8="umbh">hy nlrjocyxdj<element_22 attr_1="lfjsbleqptdzmoo">glr'gm'&gt;uwibxh"xcz<element_77 attr_3="hgnhjltcyvxkxs">q</element_77><element_56>fyefeglo&lt;d'eeberv</element_56><element_52 attr_3="nkwltekiqnc" attr_4="e">pb rmn p</element_52></element_22><element_73>fhdg mo<element_73 attr_2="zyjzwemtnvcbxia">"buuyk&gt;j'&gt;m</element_73><element_22 attr_3="bs">k uyu</element_22><element_6 attr_7="qux">&gt;'nhywb nt"</element_6></element_73><element_48 attr_1="gzq" attr_2="ivdbcquwdsqq">gfqa&amp;jx"<element_49>&lt;m&amp;a&lt;m</element_49><element_38 attr_8="j nla">&amp; you</element_38></element_48></element_39></element_45>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_89.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_89.xml
new file mode 100644
index 0000000..456a04e
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_89.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_39>g"bo&amp;lokh&lt;n&amp;g&amp;y</element_39>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_9.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_9.xml
new file mode 100644
index 0000000..ae6335b
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_9.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_13 attr_1="hs">ulazdmu f<element_5>uh&lt; jinkcmshd<element_80 attr_3="drlwlblsj tqkvc" attr_10="jq hzf gkl ap">keqor  j<element_30 attr_7="mojoutyu" attr_8=" eraek">mc' </element_30><element_46>nz qcul</element_46></element_80><element_65>zf&lt;mwcyvofyo&amp;h<element_52>mgdoiy"</element_52><element_65 attr_1="skzu">h"dksiikige"&gt;onqfoox</element_65><element_13 attr_9="moj" attr_5="x">&lt;'pg&lt;pug&lt; </element_13></element_65><element_20>uyzxauoy&lt;fhnjvez'dl<element_91 attr_2="wwnb">tdqm&lt;agapavurs</element_91></element_20></element_5><element_9 attr_9="gatxn">"z gujx&lt;okpyssgw'j"<element_88>&gt;zh&amp;<element_27>'l&gt;</element_27></element_88><element_99>pdjbvod&gt;<element_11 attr_7="p">k&amp;tdwdjpkt </element_11><element_79>dwzwaszi&amp;ncn"bhyys'w</element_79><element_97>fdae</element_97></element_99><element_93>m&amp;&gt;je</element_93></element_9><element_53 attr_6="fas">qifms"nbbwndgjvzxg<element_62 attr_1="ltf">ma<element_66 attr_10="lqozrwgpbtt">b qhc</element_66><element_92 attr_7="sdecuo">t</element_92></element_62></element_53></element_13>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_90.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_90.xml
new file mode 100644
index 0000000..38c7cdb
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_90.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_8 attr_10="lkmnjhjwowrc">wqt zy&gt;<element_79 attr_7="kpn">zxlsguuknz'e&lt;fzted&amp;<element_39 attr_5="wiigecljixdc" attr_4="dh">hlk&amp;gmie<element_44>&amp;korivvslvg </element_44><element_8>p</element_8></element_39></element_79></element_8>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_91.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_91.xml
new file mode 100644
index 0000000..a373736
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_91.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_91 attr_3="xn">qone'ijnfgu euyzlwj"<element_21 attr_7="yjoztcsmuuu" attr_8="dfu">omuatrtje&lt;vyeic "</element_21><element_89 attr_8="xc">&lt;o'jijqwjaksg</element_89></element_91>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_92.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_92.xml
new file mode 100644
index 0000000..b86eb74
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_92.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_84 attr_8="g">cfy"fbaabmx&lt;w"mtf<element_51>&lt;&lt;<element_72 attr_4="dkgitd">t d<element_62>v"s"d&amp; &amp;u&lt;bz&gt;g&amp;&lt;a</element_62></element_72></element_51><element_91>xfvee&gt;buoqvufs&gt;bi<element_42>ow&amp;gnuo&lt;<element_59 attr_7="kntq" attr_1="in">i&amp;g</element_59><element_91 attr_2="piuuyjgwppift">xjccr&amp;agj mz</element_91></element_42><element_33 attr_7="d wlfdrkaeyo" attr_1="ytpczye l">"aglzr pnv<element_42 attr_8="dwlysngwe vb" attr_6="gaew"> </element_42><element_92>chtinmvbe&gt;e&gt;</element_92><element_1 attr_8=" lwe" attr_9="lgeyvyali">etvisekodq df vql&amp;t</element_1></element_33></element_91></element_84>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_93.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_93.xml
new file mode 100644
index 0000000..b01299c
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_93.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_69 attr_9="bcvcf">huhuc&amp;ubotqq az</element_69>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_94.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_94.xml
new file mode 100644
index 0000000..e389b71
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_94.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_91>gtmlzjufp"rc<element_16>gsbioxp tw<element_13 attr_3="oqqlodzlqylpynr">  okrqjvvzgfi&amp;&lt;p<element_75>&amp;bbvrszaf p&lt;uz f'</element_75></element_13></element_16></element_91>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_95.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_95.xml
new file mode 100644
index 0000000..33eaae3
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_95.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_96>k'dp"bg</element_96>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_96.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_96.xml
new file mode 100644
index 0000000..f2f79f4
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_96.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_92 attr_9="ubzmcdrgbzwi" attr_2="o">yparf jt<element_38 attr_9="lkw">&amp;ldyudr&lt;kezbk&gt;w<element_63 attr_6="fo" attr_2="gjh">cnug&amp; &gt; j&lt;injsbvdz</element_63></element_38><element_47 attr_2="fam" attr_7="ij dy">sdl'"r&lt;&gt;<element_65 attr_5="xsqkihbmk" attr_10="wvcdokrpqlycshi">syze'nikpswlngwpfx'<element_70 attr_1="w">u'mnn </element_70></element_65><element_41 attr_6="iocxwmnyulsbgfy">mqbradf<element_58 attr_3=""> ubk'jypb&gt;aue&lt;ixdl</element_58></element_41></element_47><element_83>ie&amp;&gt;q"&amp;tspn&gt;<element_22 attr_7="igwhlbetixjyva" attr_5="ha">pr'phbkrmyezo&lt;vb<element_39>"if"w&gt;ueb'wgigbqt&amp;</element_39><element_27 attr_2="oyicnmi" attr_9="kzyn ">jpsjr&amp;vx</element_27></element_22><element_51>mxvi&gt;&lt;hce&amp;szt&amp;<element_45 attr_1="hx" attr_10="okk ulzbq">pyeb&lt;u"m&amp;</element_45><element_1 attr_1="df">wv</element_1></element_51><element_56 attr_1="wbvlfpf">ggmjby</element_56></element_83></element_92>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_97.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_97.xml
new file mode 100644
index 0000000..ea5fd4b
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_97.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_8> 'veimdt</element_8>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_98.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_98.xml
new file mode 100644
index 0000000..56a9a31
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_98.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_19 attr_1="uixqpljycytodde">yhxxx<element_15>f w&amp;vy&amp;janx wp'x<element_49 attr_5="aeyati ea pan">cdzvlcvvamjbqjvey<element_40 attr_3="lqxnze" attr_2="vjzbzpgxxhlxq">'ab</element_40></element_49></element_15><element_86 attr_9="wgonptwabletcuz">"<element_81 /><element_64 attr_4="earfalzv">yc&gt;<element_32 attr_8="udsigwviyotmp" attr_5="siwru"> x bl&lt;i&lt;'taz"</element_32></element_64><element_21>cvrvzv<element_7 attr_6=" jwgbygr">qoo arprv</element_7><element_27 attr_8="pa jgulzqrite ">t</element_27></element_21></element_86><element_48 attr_9="pas">pv&gt;so<element_12><element_41 attr_6="wnknkvkpgxcsy">cgdtm t&gt;wdbfil&lt;</element_41><element_15>dm&gt;</element_15></element_12><element_33 attr_3="x ms ejuxxmkrcp">v&gt;xppkzzjnwpd d</element_33><element_99 attr_2="">fksb<element_27 attr_7="" attr_1="tgrviuaksxlin">kuo&lt;xdet &gt;&gt; rnmxva'</element_27><element_50>zh</element_50><element_71 attr_3="yqgidjx dxjou"> &amp;jaflqjslmqh&amp;tnr</element_71></element_99></element_48></element_19>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_99.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_99.xml
new file mode 100644
index 0000000..37b8e7a
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/sample_99.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<element_84 attr_10="spshwhoadt">gjnuk&amp;d<element_43>gh&gt;b&lt;&gt;wexwcp<element_52 attr_3="sap nw">gynhqav<element_8>rzygddwur&amp;kd n</element_8><element_1>iwmlyryknr&gt;</element_1><element_72>wxrry</element_72></element_52><element_84 attr_8="">i"ocpjzz&amp;nyrs&gt;x't<element_92>co poz l"dqxyv</element_92><element_5>i"r&lt;hcpf&lt;j qo &gt;y'</element_5><element_19>gab</element_19></element_84></element_43><element_76 attr_4="prfkfvev" attr_6=" wd">imvq&lt;tclvf</element_76><element_68 attr_8=" s">eyi&gt;jib&lt;zxnieo s'&lt;<element_17 attr_1="jalxuxwpgfw" attr_2="hpgsernpx">p</element_17></element_68></element_84>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_0.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_0.xml
new file mode 100644
index 0000000..b49fb3f
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_0.xml
@@ -0,0 +1 @@
+<Sc7 7b="Fizi">NSOHZiNp<rC Ge8="404EPFfR21" j3c="Og4k0pa7g" JXPi="2">JdyMuQly0M7op0ws<LwmUg4 h="Ri">O4uj3tj2dg6Cw<C dOpT="M7gjok3d9a" pHd0T="LtxzWQ">B</C></LwmUg4><gOmxWpMk qgag="GFdO">Nrf3htt7BPr<8pwpkM >D</8pwpkM></gOmxWpMk></rC></Sc7>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_1.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_1.xml
new file mode 100644
index 0000000..89ae0ed
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_1.xml
@@ -0,0 +1 @@
+<lo6r xz4Q="FFQCl" fT="j9wAG9stC" JWp="52ofd0UN3">OOIqHIRsVYy</lo6r>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_10.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_10.xml
new file mode 100644
index 0000000..562a8fd
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_10.xml
@@ -0,0 +1 @@
+<X u7RP4="X" kH="zy">Q6QgrewmnjmSShkD<E zcgyY="vLG">W5gj4BPhkbNyIis4<sdrR2mcRxL >HbgNQzSjvVusKJBpr<7yVFvHFt ogz0B="141R" UtF7L="3Fz3LC9o">Yx6lg</7yVFvHFt><ha rA="I3y2Q8c0y" p="NpS1e">xcyhKT31</ha></sdrR2mcRxL></E><sgfH8EIPEw 7="BTW" q0SoD="fcuRJ1Bew">3um3eUjQ7k1t</sgfH8EIPEw></X>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_11.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_11.xml
new file mode 100644
index 0000000..75b29a2
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_11.xml
@@ -0,0 +1 @@
+<yJl4t >jO<5cdAcT LZW="Gm73eABG" q="OzHhvV" I8r7="hZdqpHt9">0OCBdKO6DZ<MIdnlcoJx >Wb9</MIdnlcoJx><PBys >H0N0C14bE<kmrAm8ZT >2cuekkyyUQSokF3p6ANk</kmrAm8ZT><l6JtZ6J feGG5="wb1B" RzWjZ="kIWR">8zq2nLZRgKN9dgNHzsvP</l6JtZ6J></PBys></5cdAcT></yJl4t>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_12.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_12.xml
new file mode 100644
index 0000000..20a7feb
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_12.xml
@@ -0,0 +1 @@
+<mdovaQ wv="J4m0w" MyYq="5iGugh7p5">y5</mdovaQ>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_13.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_13.xml
new file mode 100644
index 0000000..fbfed9f
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_13.xml
@@ -0,0 +1 @@
+<Gq >MCazu9kD1PFmY</Gq>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_14.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_14.xml
new file mode 100644
index 0000000..05a6bbc
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_14.xml
@@ -0,0 +1 @@
+<Fhh87V4UU6 DMY1="Bl6Z2A" 24="fmFY8lm">wqXGjMnPi9<U8lwgMHN5X lvo="3" t="sxYUPQdGao" pT="7TguOb">jSX<Inx7tK2HU SeeZj="T0O" GQ6="ZF8kIUDDTa" C4D="al">vqHE24Pb1rwqG7x0ki</Inx7tK2HU></U8lwgMHN5X><lX7kVNuodd >f2d18mmQWLxdJHMpuATz</lX7kVNuodd></Fhh87V4UU6>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_15.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_15.xml
new file mode 100644
index 0000000..8e6ce26
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_15.xml
@@ -0,0 +1 @@
+<EUFh7bxo5M ><MMXOy Rx2g="iOVwBub" Nx93="IAl" fF="ilDYyE65">6QnO4l1vmFi<jksY GsNt="zx">gJO60Ei3otMuOwgArpk<KRlW VX="c">MiE5BZQpBoVdRxGE4o</KRlW></jksY></MMXOy><RoCe q="mPk9v0Y" elzr="DX" BzOG5="4PFnhJqz6R">7YyUE<1q >11OdCrzUhVU3f<efz E="CD" S="K" z="cE">lcTSAzfxDt7myvCSL</efz></1q></RoCe></EUFh7bxo5M>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_16.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_16.xml
new file mode 100644
index 0000000..1f2b503
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_16.xml
@@ -0,0 +1 @@
+<iwBI xU="9FF88Z">fpioM3<vSB5j >t<HGkFk7QC6C E4tmd="tixV">GAdv</HGkFk7QC6C></vSB5j><UEye3Ps hi9="ifOptya" K="AoOZ">Vm4VGWO5cMq<zTji5V GG0="6PLRk4kbC" Nv4M="pchO" Nwiut="z6gjZ2v7B">oAJvUSmcq</zTji5V></UEye3Ps></iwBI>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_17.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_17.xml
new file mode 100644
index 0000000..e456f50
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_17.xml
@@ -0,0 +1 @@
+<SBYI7 a0TT="KVwv" 6="Ql1makozF">jIM<VN3d6Tt Rm="tPNqMRWm9M">aGnfa</VN3d6Tt><FmReCjQg dW="gWNd" R1="sLF1" sz0Z="nqeyv"></FmReCjQg></SBYI7>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_18.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_18.xml
new file mode 100644
index 0000000..9d09795
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_18.xml
@@ -0,0 +1 @@
+<a gpCpN="ieU" GP0T="HX">iUTZ0E</a>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_19.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_19.xml
new file mode 100644
index 0000000..78ccd01
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_19.xml
@@ -0,0 +1 @@
+<rAssDfCm UVPpD="jz9YJ1GA" Gx="rI" 2zOk="dsdgdu">97C9bGNTKgFg</rAssDfCm>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_2.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_2.xml
new file mode 100644
index 0000000..cd4840a
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_2.xml
@@ -0,0 +1 @@
+<vPAVqnC7 >bLXPpOc</vPAVqnC7>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_20.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_20.xml
new file mode 100644
index 0000000..d798373
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_20.xml
@@ -0,0 +1 @@
+<gdZ xQ="mSJfZ">vydoV7bwJ</gdZ>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_21.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_21.xml
new file mode 100644
index 0000000..0382219
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_21.xml
@@ -0,0 +1 @@
+<yNW5c >XD8ndawKBf9R</yNW5c>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_22.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_22.xml
new file mode 100644
index 0000000..ac5056c
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_22.xml
@@ -0,0 +1 @@
+<rPsC k90="QaqoBT">UdzpOKfaURgj6pHsAu</rPsC>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_23.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_23.xml
new file mode 100644
index 0000000..7ec723d
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_23.xml
@@ -0,0 +1 @@
+<wDgJxkGE Qf5="ghdFCw" G7="IXkbc8">rkk8ug</wDgJxkGE>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_24.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_24.xml
new file mode 100644
index 0000000..118030d
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_24.xml
@@ -0,0 +1 @@
+<8RqYt3Ele4 n="2xZX1wUmAg" I="94iv">wyCwimtFiTGOmkA42I<U XA3GK="q8yl" TNnr="JrowHw">vpoIulvHutCl4O3FPpRr<p >YOmCFSM</p><dYvx6RIA TSaly="92X">HWlP<WPzQ3v9x rVGEI="mk" vU="PiqJOLj" LW="Vpxlx9ANCk">MIpH</WPzQ3v9x></dYvx6RIA></U><NaavpHn3q jdUU="7gX0Qxz">tGIIiqsYN1OGWHb</NaavpHn3q></8RqYt3Ele4>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_25.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_25.xml
new file mode 100644
index 0000000..c595339
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_25.xml
@@ -0,0 +1 @@
+<Yj xhyW5="TIY5lH" G="iiD"><ToxOJpr j="1hPsNpv0UB" zm="DkNuEbAG" Sz="F5p1">IGC29rnLI<hpY2 2MYXP="SDDiY" 3="Cs">jVn</hpY2></ToxOJpr></Yj>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_26.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_26.xml
new file mode 100644
index 0000000..9e97ac2
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_26.xml
@@ -0,0 +1 @@
+<67J a2pGs="ECQpmzg" iJQl="ovVVS" cR="lRQicNKhG">n6Agxe50MaYTNgoD38r</67J>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_27.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_27.xml
new file mode 100644
index 0000000..68d4e84
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_27.xml
@@ -0,0 +1 @@
+<Kr 7Pu="6" eSYF="aRSa" ov="512lm">ClHnpvI2GnMEUR<IRttSP oFK1P="2Rmf4" XS="LKl">5NpRzpUQhr9zaCq</IRttSP></Kr>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_28.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_28.xml
new file mode 100644
index 0000000..fbb51e4
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_28.xml
@@ -0,0 +1 @@
+<u nMjiu="HEJTmR" dRaWp="1">OKdztHyd3AqnoFFQEx<TGLIq XLAW="pfjph" Re8k="v7BqPUE" 1b3="eoxi">R4zFzNZvZO</TGLIq><fEn0452NU zHk="hrmjMO">9WSY9WQHSscNskRNdy<6Eur 5m="FK" wphM="Fr" gYq="vNye3rZDf">aa0W<52Iwgd8fKv o="1">nFgjRS6zPEO</52Iwgd8fKv><VYV >stSjkeQ2K</VYV></6Eur></fEn0452NU></u>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_29.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_29.xml
new file mode 100644
index 0000000..11c4794
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_29.xml
@@ -0,0 +1 @@
+<r zzM6R="L">0bV<4 T6="8BtkY7" dsK="Qq1It" lra="aOdpdQQ3">paKrJVIL8oArw6P2<m27tk FUyeE="da">dT8OnYGyQvPO<Lb FugD="fimAO" cz="maB" oU="l6H">V1hoOPoE</Lb></m27tk></4></r>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_3.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_3.xml
new file mode 100644
index 0000000..0b9f4a1
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_3.xml
@@ -0,0 +1 @@
+<ZgJMmZ v6="DY8L0C">4ig3KCvSKEj6t04zY0y<2 G="pa4yzIKH" v3v7="SZNMQv" yCrU="rZXmfm0Zj">GtHe4lajYsZO7o<OyH 4yZ="WKht8HdP" Y="uZ15nzquA" XW0I="kmxYNzR">61VMrJHfeWSVvMgiO<SFsw2BSlm YHZ="bUlWVSi">pKfBZM2MXQKHDGIia35</SFsw2BSlm><B >J</B></OyH><CJYGq4 t="gUZqi5d6G3" R="1ht3S">SudapwdxWCpX</CJYGq4></2><5 Ho="8mgAb" Qk="CnBQ6gSwW" V="BtU1qU">uAdMp98<HB >w0EN95Y0fc1</HB><CadrzDi >lLIzwyC0NYhb4kgY5</CadrzDi></5></ZgJMmZ>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_30.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_30.xml
new file mode 100644
index 0000000..55cff4b
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_30.xml
@@ -0,0 +1 @@
+<v2dC23fSLt rYT="8U4" 5="NeRe" ip="b">xsOAkqS<nUjGb mk51="fyYpTH" 6="R" Tx49F="0i">3B6QUFi306fS<Vl >vSRQehBUMtndUM<F 0z="gMwvAVI" tp="99HMUL2E">G0bA0xF09L</F><pm0cFm0np3 vD="B" hGdO="eUCuUqA" NdXk="xbvt">J4K</pm0cFm0np3></Vl><9 >bFSt6Y69dKfb9eoG3y<E K="mrhjXmQo3">rYNYj0</E></9></nUjGb></v2dC23fSLt>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_31.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_31.xml
new file mode 100644
index 0000000..38c7a7f
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_31.xml
@@ -0,0 +1 @@
+<sJ9VD3 EIauW="Y6h8M4nd" rgPl3="J4z8pzcpfn"><0LPIZez xEO="zz21wvgPz">9eD62WgZJJCcAWV</0LPIZez></sJ9VD3>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_32.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_32.xml
new file mode 100644
index 0000000..4f8c6e1
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_32.xml
@@ -0,0 +1 @@
+<ZEBX Utyn="7umDyVnQBt" 8="DV" WV="6D6">mNGtYY7k5g2</ZEBX>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_33.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_33.xml
new file mode 100644
index 0000000..82faf9c
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_33.xml
@@ -0,0 +1 @@
+<M mwk2F="qxd" DTL="v">TGi4Ietrmge<jSJ6hBwQqw 3Dtbe="ngI" f="qFBzcUC">55zVR<vYIdi JETd="Oy" G="dujHjE"><TcLSIU9E7b vqM="fSU">OMAzg</TcLSIU9E7b></vYIdi></jSJ6hBwQqw></M>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_34.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_34.xml
new file mode 100644
index 0000000..81e3bd1
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_34.xml
@@ -0,0 +1 @@
+<ya >I<UgWt5p1TwX Y="h4O3NGnbGP" 7="V0">JUbw8DWgucWObPZVINli<FrjaSIYl >uJ7F0np1lOBHM1fLM4R<AnX0tqtwdo TsP="eYsZde94" WF="qI5EOc59vj">WVbUZpWJ34s</AnX0tqtwdo></FrjaSIYl><Cwo >NidKqdKXBHkdfBKIk<srjLCEA >p</srjLCEA><20 B5="av" P0MX="H3HyUckPw">SR1QhdJnSwaoJhsxX</20></Cwo></UgWt5p1TwX><cJDguMT Ytb="ChyglXL" 9hU="b">ras5jypXcWdG8NeLF8</cJDguMT></ya>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_35.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_35.xml
new file mode 100644
index 0000000..612d751
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_35.xml
@@ -0,0 +1 @@
+<Jj0yK40 okSa="ck75zXM9B">iKz107rJ5</Jj0yK40>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_36.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_36.xml
new file mode 100644
index 0000000..2a9e27f
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_36.xml
@@ -0,0 +1 @@
+<TK1ZY >LkNsaW</TK1ZY>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_37.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_37.xml
new file mode 100644
index 0000000..3d95dc9
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_37.xml
@@ -0,0 +1 @@
+<GHpYEg n="8JMqPutB0" JTPf="zhe">g4J9CqKttfMLVqQJ<PyCf6 XF="B">o<zhQWlPLS KD="Izo" YQky="Znf9RCn1">7XkYnsEVnd3lBX<ys09N VOE="p" cMhfU="g">KYKaMRWKnd</ys09N></zhQWlPLS></PyCf6></GHpYEg>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_38.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_38.xml
new file mode 100644
index 0000000..ba352d5
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_38.xml
@@ -0,0 +1 @@
+<491Vel p="m2YJ5npb" JML="Ox9QX">VCg8qFkwcR7lWj<POenJQ30r >TUxUcyl</POenJQ30r></491Vel>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_39.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_39.xml
new file mode 100644
index 0000000..e9e856a
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_39.xml
@@ -0,0 +1 @@
+<AwpaIWoSK nb="DHJK" g="bMdAUKZsX">nrTj7juv</AwpaIWoSK>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_4.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_4.xml
new file mode 100644
index 0000000..378dbd0
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_4.xml
@@ -0,0 +1 @@
+<uw78EFL >srA1lNbs<B8RH9ex4 2o="ID" hX="79SYc6Gv" t="kfhmko">Itwa1xQzM4Eqp</B8RH9ex4></uw78EFL>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_40.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_40.xml
new file mode 100644
index 0000000..b8352a7
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_40.xml
@@ -0,0 +1 @@
+<JFzb jND="f">6JVA3897IW8ij<Jhi5oxss >AhkSfrcI0u77s1JIchlY</Jhi5oxss></JFzb>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_41.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_41.xml
new file mode 100644
index 0000000..42355f5
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_41.xml
@@ -0,0 +1 @@
+<k6ck ><tgBz J="5Rny" X="YJ0M1roQ0O">h</tgBz><JRL2xJF >IqdX8AYttwV<5jLvNGxk U0Ymo="afMpFJ" d="i">MCGn3j1<sFIEJS UD="AF6XMkN">Bo0T5cjy</sFIEJS></5jLvNGxk><krT3VBJ xg9y="VeprwiXtnh" IfK="ZsK" S="xWkV">OhdIDQTvbM</krT3VBJ></JRL2xJF></k6ck>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_42.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_42.xml
new file mode 100644
index 0000000..9aaa9b3
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_42.xml
@@ -0,0 +1 @@
+<dSe zO="dQL3nzicy">JyX<qMkVzpO >zyd3G<Dw >Md3MSRsON5ROKpF4<TbGy T="Uvalwr8H" 1="JpR">lInTFw</TbGy></Dw></qMkVzpO><gNjjL9S1 9Al4k="wEoa6s" Q="Gf9s8C">4Bh39<d Nu="oi9uY"><t HTeQ="0">07mwKbeUiV</t><w5pB Pj="Fpr8my6lY" BC="PKnh5IS">Zq0g1sNo4SyTK3GKU</w5pB></d></gNjjL9S1></dSe>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_43.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_43.xml
new file mode 100644
index 0000000..193bf9b
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_43.xml
@@ -0,0 +1 @@
+<MkjcHm >uYhZXyzMTeNnzzXIMzwV<9 b="Kr" zr9xr="PDUaruxi">F72V<VROpE a1="hf" xoQ="PzNR2uG">QuueNFMo5VZ</VROpE><Y uzP="g76">mfwjx9<1FXde kYHq="yyE">4xQhHcXvUscYn</1FXde><iUiPm >4dnZn08Uf</iUiPm></Y></9></MkjcHm>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_44.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_44.xml
new file mode 100644
index 0000000..43ebfdd
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_44.xml
@@ -0,0 +1 @@
+<0VP3VvE3 pqHDw="11AJH3A">3mBh401IgpHBsgQEvi<YNqo26xH bdXN="8YwdsYI89">So8</YNqo26xH><pIvuT4uUR >Hz<aucl1v jn7i="8" Bn="wgrK44F" L6n="w8OQp">Pb</aucl1v></pIvuT4uUR></0VP3VvE3>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_45.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_45.xml
new file mode 100644
index 0000000..cfcd7ac
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_45.xml
@@ -0,0 +1 @@
+<fi7rO >0B<3eiM yx="BA" k="b9t83e">57rQbQO8SbyBJBO8Tk<4QbvT >QlT2s7ErH8NgdTmbmE<5UQCns1Nu >K7GL</5UQCns1Nu></4QbvT></3eiM><L D7Po="W" Jr2="LwkV">yO5isVyRRfkqQp</L></fi7rO>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_46.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_46.xml
new file mode 100644
index 0000000..dc1f1d6
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_46.xml
@@ -0,0 +1 @@
+<Hyg QYB="Cc6" 1="B">rNmQPw<P8 e7vNR="zjTr" n9WS="6cpQ2qM3">3lr7sQzMFSuIENTDZpzj</P8></Hyg>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_47.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_47.xml
new file mode 100644
index 0000000..6d1951c
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_47.xml
@@ -0,0 +1 @@
+<lJ OAkg8="l56IXFG">XT1n1QK<Ft6 m1Ih="NgsSsywJ24" b5T="6dBA" yD="j6qocUl0NT">vaqBbj5cCG<auAjKmT wKk1I="jC6" Ti="h" K="l9Ct2C5">qaZY5DCz</auAjKmT></Ft6></lJ>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_48.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_48.xml
new file mode 100644
index 0000000..ab61765
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_48.xml
@@ -0,0 +1 @@
+<ZkZz2irI O0J="zAHcp">8NUWMx1Mp0SJMcaD4i3<QrT >ioMWtOgTbhYgbpD<r5cL NpIX="zlHF9w" 3="avQZuSbg" RQ="Dcl">bB4HBqKTDRVtZ5iN<6IIF61j irti="39ol70L" 1jZxe="aOzfvzO6eB">Zg0</6IIF61j></r5cL><Xqa >fm4HXWXkERxWi</Xqa></QrT></ZkZz2irI>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_49.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_49.xml
new file mode 100644
index 0000000..7befa96
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_49.xml
@@ -0,0 +1 @@
+<mh 1YdxN="qL47Iefm3"><R3gpk o4j="AV" b="PnYCc9h2h" zA="A9Is">nZ</R3gpk><92Bl uJu="xSd">8Op</92Bl></mh>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_5.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_5.xml
new file mode 100644
index 0000000..4ba297b
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_5.xml
@@ -0,0 +1 @@
+<P >JdlwcqfkHmVzWYBGIm<IwTd gW="EbNXlx" s="ZFJxhYR73">nfuDwL1U01gNj</IwTd></P>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_50.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_50.xml
new file mode 100644
index 0000000..319e0a5
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_50.xml
@@ -0,0 +1 @@
+<Sv3Fzz TZII="nhOXSH" xuI="IHPhMoazj">jQjP1<6MeYDN Y="Vj5WvnsH" dW0n="N">9k<rEJjNcu nBiau="0" X="RgmZD" eUg="CWV3">2FbCGaBTkRP87i1fOH<T8Z UCT="TrZt">Y</T8Z></rEJjNcu><w02wGFV rBB7="z" T="CSXEPO">Ssgxx8R<L zsT="8GG8AULwGm">ypZYuVFkcmswTIqeKB</L></w02wGFV></6MeYDN><NRf yo="B3OgyR">awr</NRf></Sv3Fzz>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_51.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_51.xml
new file mode 100644
index 0000000..3cf8d8f
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_51.xml
@@ -0,0 +1 @@
+<0VtgTJQ OWEU="RvzY" WHhbW="U0b4">yNtGdFg9JNim</0VtgTJQ>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_52.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_52.xml
new file mode 100644
index 0000000..dd62675
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_52.xml
@@ -0,0 +1 @@
+<m4 >jooB9ffISKCg<d1mRs ><9H7xbbn MjlW="Qlo0dZOG4" ro="OZGs8" W="SlTMa">Tzgeq9v</9H7xbbn><qKtDEO 6PKl="GovjJ">wkSMXK68oVvRIWh<5 >mZxfW5i</5></qKtDEO></d1mRs><7 >pmTkFHhhF6P9nLuO</7></m4>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_53.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_53.xml
new file mode 100644
index 0000000..9384351
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_53.xml
@@ -0,0 +1 @@
+<dkFB >M4r<kAic6c >QnCCnTp<OWR3y9G8 >OdJRkf5qP7lbkLnU4</OWR3y9G8><H PAE="W6NuYu62mn" o543z="LyAlyL0uX">J4OTF8ySW</H></kAic6c><5 NmGU="JRI">zlCm6r7yfE5Jvz<6Uf1I7Csdh KZv="4XzI" SgEl="gC" u0="Vmhy5gBl04">4TF</6Uf1I7Csdh><86x0 b3G="Mus" ed="nIu9" u1S="t80zB">ojhf7</86x0></5></dkFB>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_54.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_54.xml
new file mode 100644
index 0000000..087d710
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_54.xml
@@ -0,0 +1 @@
+<47PX vTC="oM">osmPBnKIYv<Ax0RBd UWZe9="jofTq">MCqy<ECkccIwrik pTlOk="CFAF8SW6Wa">8JDFcFKZ</ECkccIwrik></Ax0RBd></47PX>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_55.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_55.xml
new file mode 100644
index 0000000..b9edfe0
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_55.xml
@@ -0,0 +1 @@
+<rQdz5YB e8="i2t" Bi="AwKYlESHx">5vIdw19r2RJ8uSU</rQdz5YB>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_56.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_56.xml
new file mode 100644
index 0000000..fb50e30
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_56.xml
@@ -0,0 +1 @@
+<nA3I3 Yzf="Y0w" J="9Je2">E0A2Kz</nA3I3>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_57.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_57.xml
new file mode 100644
index 0000000..5c01a4d
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_57.xml
@@ -0,0 +1 @@
+<v1A 5="zE" x="Ja2B" dMW6R="Zp">r</v1A>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_58.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_58.xml
new file mode 100644
index 0000000..876a7a9
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_58.xml
@@ -0,0 +1 @@
+<u9M vLMx="bxV" DDV="3SL" cHP="eFL6">dxXOcAiw09Ha9yQ15GAp</u9M>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_59.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_59.xml
new file mode 100644
index 0000000..12d7fcb
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_59.xml
@@ -0,0 +1 @@
+<uNuw rpG="pcE3yxSOlU" xh6L="DUQSdv34B" 4="jJsHZgJehv">30x<YVQv3TSI >K<dFRzkUqwPe 2G="aJ" F="VB">issc0i</dFRzkUqwPe></YVQv3TSI></uNuw>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_6.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_6.xml
new file mode 100644
index 0000000..aa25d19
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_6.xml
@@ -0,0 +1 @@
+<CSSowM tTxf5="djjuT3KZY" n="cj">BNJW0zCafKt4GM659oF<A1nIhD4 X605="GtKkMDbo" 2Tw="2" SAXt="F2l5TRHnJw">J3xycN8U<SEf2j7 >xhH8hSSZbf5CSvoNkCL</SEf2j7></A1nIhD4></CSSowM>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_60.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_60.xml
new file mode 100644
index 0000000..96ce246
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_60.xml
@@ -0,0 +1 @@
+<UU i="lXg" Hdgbe="nIIYxxZjh" QJ="5L9OUXJVJ">2uQioSsXYz7MKINtu<b 5="xzz4B3yac" wc="y5n4Q7ViV">Yil<uVV FIHtd="GjM">FVBRmqb<TKKuvQ0gu EW="JjTR" Gn="wn9RZbw" 6k6="v3Rrxk">cU6VjE7Hr</TKKuvQ0gu></uVV><QpuaUZ y="sAxoMDy9">LgLiWOm1Vlpd<lNqort hV="9KFAE09LY">TwBOuL6V7HC</lNqort><0kGb KV3Bq="CXvE" t="4" N="ceMswqT3">623T</0kGb></QpuaUZ></b><AjrvI29 gY="JDn" c6="tJ5BNRoy" DaZcr="JDqYjB5gic">3UMMIUvwc4Xv</AjrvI29></UU>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_61.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_61.xml
new file mode 100644
index 0000000..e179cf3
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_61.xml
@@ -0,0 +1 @@
+<i Q="fgyLn9gMm">xgVUl8m<h qiPW="su1pm">3n6OqnQ<LNyudMF >hdNbFEeIsKnNRHH<r5nsTKSF4 j="lFql7rosic" J="FhuGE55" JL="A5P">whkvtgVMqFAnas</r5nsTKSF4><Yv8tN0m7P J="aNeQXuuY6D">2iheqiGn</Yv8tN0m7P></LNyudMF><6LLTwGKc2 Ocz3="yvvxTe" yX="e8Tmz">aGop</6LLTwGKc2></h></i>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_62.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_62.xml
new file mode 100644
index 0000000..942bc70
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_62.xml
@@ -0,0 +1 @@
+<vhk >ub8aou6E<gkRmPf >W4DJ6RHqV5uRW<fl I="QnL">XRs8sMsNnNW0WAKH</fl><jX3J0nPGa g="qIr2">cuRc3rZ36ptllC<HLYuOhLiX OrP="mD">kXavXthx</HLYuOhLiX><9Cz4BmOy ph5r="QKIuklW" Iix="mVue" 9rR8="If5t">IuSQ3UVOHCKsHxWtiZ</9Cz4BmOy></jX3J0nPGa></gkRmPf></vhk>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_63.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_63.xml
new file mode 100644
index 0000000..3f6f05e
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_63.xml
@@ -0,0 +1 @@
+<qrII4BDTFr 8c6="e4KRSZtWN" ZjQRy="1hbLqmR">fggsOvkLCC2J<5SxSUHiVGS >1yuhDObQhIsFn9<IjAfOmKMEe ><eT Y="sIyp" OxNky="OGt2Sd" gdP="V9u">j0t4tLmRAmG2T9</eT></IjAfOmKMEe><rRx3Ov1U >aDLiJp<9 dyy="A3DTVNGTAf" 7SKUI="Pu1p55MgTm">dAvXcGeUM7Aon</9></rRx3Ov1U></5SxSUHiVGS></qrII4BDTFr>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_64.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_64.xml
new file mode 100644
index 0000000..63f3c7c
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_64.xml
@@ -0,0 +1 @@
+<ozRv aN="EyX" s9RO="Q">EIT52HPVmWDRvNVuAl</ozRv>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_65.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_65.xml
new file mode 100644
index 0000000..88c3b32
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_65.xml
@@ -0,0 +1 @@
+<mMFNOt9 lH="GwgZ" JVSst="7bRUf">yqiubwvQbUoeV8<Zz9sDqg d5gw2="d5J24pdXS8" dmL="HPuv">cog<7 KH="9R">KxBmQDF4wMjpFA8<Db37zg JLeT="pmBl" Ly4="pGn" VZqp3="noMfwQ">kFxN0rioRir</Db37zg></7><F >q</F></Zz9sDqg></mMFNOt9>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_66.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_66.xml
new file mode 100644
index 0000000..09b43d1
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_66.xml
@@ -0,0 +1 @@
+<WPDix W="bSuSx8">f0Xwjj<6AaP2ny4R g7XE="AX1Dv" wD="D">UPHke3CM</6AaP2ny4R></WPDix>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_67.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_67.xml
new file mode 100644
index 0000000..02b0a9b
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_67.xml
@@ -0,0 +1 @@
+<WWPP Hn="pJymq" mNlf="G">NZYhzpu4NItKnaH<Tpu98E >s</Tpu98E><N8Ktbv 51ZdT="R" e6irC="mE25HiMmv7">NB</N8Ktbv></WWPP>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_68.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_68.xml
new file mode 100644
index 0000000..e4f9fec
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_68.xml
@@ -0,0 +1 @@
+<N3hTR4GY e0MK="VuAtp" escAk="G">VOo</N3hTR4GY>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_69.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_69.xml
new file mode 100644
index 0000000..e967213
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_69.xml
@@ -0,0 +1 @@
+<09IO2 v="X3DBJfxz" Jb="RGGY" kv="pbnPE">U4rZ7Ooss6nF4</09IO2>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_7.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_7.xml
new file mode 100644
index 0000000..1468035
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_7.xml
@@ -0,0 +1 @@
+<7U pGNyk="7CdtjCB" 6y="cRpi91w">cz6<w >hJHw</w></7U>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_70.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_70.xml
new file mode 100644
index 0000000..31b4366
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_70.xml
@@ -0,0 +1 @@
+<qjN5 >8dj5Ern51a08TLzIM5</qjN5>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_71.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_71.xml
new file mode 100644
index 0000000..701a1f0
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_71.xml
@@ -0,0 +1 @@
+<8G7DnfK >gYpMNRlwKVel0f9Z<khjA7OLUI O6="Ztyef6p5Z" iWs6i="Q1El6JW" 6NCv="0V0jS">E05H<v4 IDZ="zJTo3">DOuaUFUtzHQ6Ccb<43Z3l DKx="x2HKd2qMvx" HC7="AKEfBJHTw">JwQgTp4Epb2BJ1wmjj8</43Z3l></v4></khjA7OLUI><X9d 66PU="U">NMxn7xCVU3rU2Wud<hbz1KuLXY8 YJzy="yJDNBWRp" M6ZE="0qL">tCiVxAhfBtV2H59A8U<2K mz="29CWxD0">75weCjVt2r</2K></hbz1KuLXY8></X9d></8G7DnfK>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_72.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_72.xml
new file mode 100644
index 0000000..0231234
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_72.xml
@@ -0,0 +1 @@
+<n0IFo t="BXaSnNHX" BC8="jkR" y="9GyBNVq">z15vNU19E<nw4w qpe="uij">tSYa5L8O9rpMPCVTF6</nw4w><tSL2I1mrH W="iEuGvbxW" VnL="M">SEdx</tSL2I1mrH></n0IFo>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_73.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_73.xml
new file mode 100644
index 0000000..78eb3ec
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_73.xml
@@ -0,0 +1 @@
+<d1u3Xn5oVb 5d61="clKEP" 43="oq">WtHT<satdALbA 9U="Y6K" Lqv="xGki">54ZAx6w8d3<a qIO="Bg9q" Mt2o="PD4yDs" 3A="c5ig6OQKL">pXDRywZ73hdnihBp0e</a></satdALbA></d1u3Xn5oVb>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_74.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_74.xml
new file mode 100644
index 0000000..29085a6
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_74.xml
@@ -0,0 +1 @@
+<g4Kj3X sN="D">jbaZfmWmhrd5<rartNL8As >u<NJwBuk >BZWtsKzovMvl<apjqkU4 >mmCjardpUn5AZ</apjqkU4><t Yyb="k">bizaYtOVbSYtMERaLtSh</t></NJwBuk></rartNL8As></g4Kj3X>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_75.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_75.xml
new file mode 100644
index 0000000..463a417
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_75.xml
@@ -0,0 +1 @@
+<oo3j e3rQM="luQU1" KQqU="cxQnY6NP" Q0="NI">58Ub3uasaLl1X<boWku4055p tc4="ePA0eZGc">BmZa2nNCYzP0<s1 LcfE="urZgkEAmzG" R="CY12lZjV" c="bQP8gqIA">fCvQPjYBT253xTK</s1></boWku4055p><kvz3VM 1fuP="o" lGjbo="N510zheUBk" xi="wcMEUIjwY">9FrEkCpIv7</kvz3VM></oo3j>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_76.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_76.xml
new file mode 100644
index 0000000..ae74113
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_76.xml
@@ -0,0 +1 @@
+<OWJhiT 72fJM="Fj">rwlGLaF4ctvWVo<J01Z wiqp6="bxQRRU" 8Cb8="X5QIK8M">dSmsYLM6XrrSLk5G</J01Z><E5XOwWG1G JdS="JRcn2dA" WXnG="fRAdt">ySbw27kjEqlJOH2gC8u1</E5XOwWG1G></OWJhiT>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_77.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_77.xml
new file mode 100644
index 0000000..33a9340
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_77.xml
@@ -0,0 +1 @@
+<q1F X="u5" Yt="Ff6SX6A">MVEDEM</q1F>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_78.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_78.xml
new file mode 100644
index 0000000..1abb07a
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_78.xml
@@ -0,0 +1 @@
+<3KaR3 X6Y="8N" b="5kjhao" JZ="jQAXGKTm">3<ngKosqu9qz 5F4q="M05p" dS="3zI5MzOs5" K="dnWSnu0"><8XvhIk nBqVd="Y9mOFT" CKcD="DJS" kB="4asCkiFg5Z">e1Fl<CkKjwoSss9 >KsP1VnQM5cWh8nsG5bo</CkKjwoSss9><SHz fcfSN="jgX2">qMDvhOqry</SHz></8XvhIk></ngKosqu9qz></3KaR3>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_79.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_79.xml
new file mode 100644
index 0000000..624720d
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_79.xml
@@ -0,0 +1 @@
+<dhDTe3 uCs6u="7qv">FtBZfd6UjE2RX<A R1nHd="yKJYN24rR" vgh8t="ab2W" bMd1F="3">FJ8SosKAdemw39wHqe<OBkraP SEnl="tvOeDCA">30l5</OBkraP><3SSZxGH9it BS="4j" rVnWK="hlH" sa="wO">skqPMkxGJ<DoxLpv19B UK8="HHzHrWKANi">l</DoxLpv19B><FQgGbtRcxC NcdO="A" tv8="opJY4I">raUZenpQvlqte67bX</FQgGbtRcxC></3SSZxGH9it></A></dhDTe3>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_8.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_8.xml
new file mode 100644
index 0000000..df7ca2f
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_8.xml
@@ -0,0 +1 @@
+<6DYmrb MlJPH="z0Wj4Frt" Cz="Df0r">g8<M14VN7RKe K8S7G="4ipjxM" fWFxx="Ob70a" reE44="hb6yX">OYlG5YSfqKtzUoyu3</M14VN7RKe><Q79i x="s2j3" U0hP="YH7fdY">iaJSi<T0vTf5 m="nHcnQIuT">ESxEYCamkR0<n8GrrEtP qBM="nFEw" 7TT="1ck1ZA">12iY69t6AY3VJzhj</n8GrrEtP></T0vTf5></Q79i></6DYmrb>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_80.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_80.xml
new file mode 100644
index 0000000..e7d6f6b
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_80.xml
@@ -0,0 +1 @@
+<LTO3 >bNrnuIrMrqRk6WrK<ygXQx 18v="hagB">2M4QhHsNG1kaYnk<SX >mDNdmKYwqllExhctJw</SX><BxAACTX jHs0="epR" i="NLqRg" AJZf="O2gdH">v5J1<lwMf2JeM >H8vgxKj</lwMf2JeM></BxAACTX></ygXQx><C ui="zqABHB8">OlZOIYj</C></LTO3>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_81.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_81.xml
new file mode 100644
index 0000000..8b1b346
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_81.xml
@@ -0,0 +1 @@
+<J2MDJTMyif m="EIfk" ueqSd="1L6">VkeZ1dF9uKhvoI</J2MDJTMyif>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_82.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_82.xml
new file mode 100644
index 0000000..9af6642
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_82.xml
@@ -0,0 +1 @@
+<Uei 5e="K" H="GLtylN" qXbT="QP">AqJoZm45ws1T</Uei>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_83.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_83.xml
new file mode 100644
index 0000000..137fdea
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_83.xml
@@ -0,0 +1 @@
+<1AA1vx1DA 8aI="nyacK" 6ayA="2fax8QLKh" ZK="YKdY">MbJtD9YWQR5hV2qC</1AA1vx1DA>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_84.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_84.xml
new file mode 100644
index 0000000..a7b60eb
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_84.xml
@@ -0,0 +1 @@
+<RMtV 272fW="rBY" gj8="dnl" 1="ajF">mgc20ou3U6AK3rMD8VBO<7j32X G="PW4aR4I">Ie</7j32X><DzcF3n j="vu7dYRPa2d" Em="7">ojCZmN</DzcF3n></RMtV>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_85.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_85.xml
new file mode 100644
index 0000000..f1592b4
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_85.xml
@@ -0,0 +1 @@
+<Q4hYfSX xOqe="KN">SL64MbYGdFsj<wKgfi4Nfk >OG9pocitbKj9OvEspfV</wKgfi4Nfk><afCq0QnC >3e5<texeyAltiI >lFix8zIKv<c Dlk="8ZMgH2l" d9="MQlNI">mPshdAE</c><H4tPs cYB="Wiblg08CiU" LQzUX="GMi4aNOPfx" 6Eh="JmK237Tjr">PmK9eMpvS</H4tPs></texeyAltiI><nX f70="3pLg" ovY1C="F" ar97Z="ZA0Fv1Wp"><Xg5e2Wivj Ne="gZyPhd" VplP6="qX" j="j3OYIA">RW785dc8VR6r8</Xg5e2Wivj><F >CbdT5ZgO</F></nX></afCq0QnC></Q4hYfSX>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_86.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_86.xml
new file mode 100644
index 0000000..b48825a
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_86.xml
@@ -0,0 +1 @@
+<P MnAK="xXERAKcJ4" u="EL" 0T="V">WeAPDvhIMcXMRSpIqCG1<QFukAqH9H u="UkiVVG" BLA5="U9Pfa0" JZZ="gsr">dEnLy2wpU7</QFukAqH9H><qvEV8MjSc0 TG6="Qn">eus4sl5KNp3KLO81744X<3vz2Pk X="ZrD5czMz" D="PKD">pc<Rn b9q="XTM">OnKhmJKjoyQQa6WG2gVe</Rn><VANll5sYE sYD68="77jHKQK">Hm7kzNHx5P</VANll5sYE></3vz2Pk></qvEV8MjSc0></P>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_87.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_87.xml
new file mode 100644
index 0000000..d1cf0f1
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_87.xml
@@ -0,0 +1 @@
+<eBcl1xb 8X="exqCejzr">tXHbywek<cjtBNm m="tC4" awAy="CuKx">kSpzAz58eVEObhqaH</cjtBNm><m7b4xOgPYa VqwP="TyP" VyLm="IrKS0G70my" hK="N20u">GIndeqC9d6UqTxeO<nEgufv LO="YbdjHZ1k">zakJ4GwNEokm<S3FG lOKA="gWklUVEf" r6E="Y9x53iKtvW">GcY4NG</S3FG><1AELe ISzNU="QY75Jv" aj="7MC"></1AELe></nEgufv></m7b4xOgPYa></eBcl1xb>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_88.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_88.xml
new file mode 100644
index 0000000..9f95bcf
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_88.xml
@@ -0,0 +1 @@
+<wi dC6="0Jj1wVW1b">0Xp29PQ6D1f<zNlnHQx tV="4wpZRxgk3" fM="k58wTUc3G">1sTrjUJonR<lzqEb lBj="DSv5O">flN2z5siADZVWFH59R<ST9x6xrJrk qS="dNo7WcU8ge" ZC="d6edL">X1ybibZiwwEpBNYXyF</ST9x6xrJrk><bb jqKfD="0jes" We36="OjHSQ7" 0mHQg="vCIeOYEfoY">UfhFbgnC0</bb></lzqEb><Yq g="TcMQCxV" r="3lwa" wu9="i6Kb">m74pLDXaZq9z9uZUorG<XwkUv0n kZ="1TPDMWpBFC" WQp="wPO">EVIK1vubtmLU</XwkUv0n><4mr m="sU">ffxbYNlX78URWg</4mr></Yq></zNlnHQx></wi>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_89.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_89.xml
new file mode 100644
index 0000000..74ac326
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_89.xml
@@ -0,0 +1 @@
+<7Zctg ></7Zctg>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_9.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_9.xml
new file mode 100644
index 0000000..20a4c5b
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_9.xml
@@ -0,0 +1 @@
+<VEKWA17UO 5NoT0="h" Oncsx="1">Xf2UsHIBsNEkOTbO<lKhp 0ih="gfJpWkgTBU" Up4="UF">AovTvZb2</lKhp></VEKWA17UO>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_90.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_90.xml
new file mode 100644
index 0000000..c0883f1
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_90.xml
@@ -0,0 +1 @@
+<Zds45s4akA c="QGoBN" ljFgZ="v" 6="C">NFFZPhGXBw<HtYrfL >VoW8NTNXRA4BAkK</HtYrfL><H XIfab="Brnie8O2fq">Pji8egBgQmp4fRUj0S<tF G="YzIDr">i<ajEOz 1Cjr="F4OCsU" GLQFK="7Ll2yR5V2" 5J="ZdR">mfm0Cc5DzK</ajEOz><I2e K="TaoVm5KBf" 9zY="nPww0" EBV="brVtWJ">kQOURR</I2e></tF><yH >Cu59<RCKxu 2Fea="q1">6oO</RCKxu></yH></H></Zds45s4akA>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_91.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_91.xml
new file mode 100644
index 0000000..ddc04be
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_91.xml
@@ -0,0 +1 @@
+<gv7XQ Piw="bULZ">gvgM5<fE2dcTALgZ XK2="2Yni3PhWL">FzWU1R1bxPWygrTOSvsV<0o Xna="4t7drNdj" dgma="km" h="S">GTgznJ9manEnAMoGOt</0o></fE2dcTALgZ></gv7XQ>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_92.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_92.xml
new file mode 100644
index 0000000..e64f364
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_92.xml
@@ -0,0 +1 @@
+<thBx5t GeWO="ke3F65jKc" wkIUM="k">qx3o428zs4VtZRQaBa<bUp3z A="Z3F7IaXc" m52c="2od7uKa">Q8gR</bUp3z><J O="R0F">sCTMQrMwrixPvcSK</J></thBx5t>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_93.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_93.xml
new file mode 100644
index 0000000..c206c4d
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_93.xml
@@ -0,0 +1 @@
+<pFkpc AUQ2S="A24iYb" m="RXbO7WFc" s="9mXUyY">mPqu4Ba</pFkpc>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_94.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_94.xml
new file mode 100644
index 0000000..cbd118a
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_94.xml
@@ -0,0 +1 @@
+<4n9yd t="kMUbNr" 76="XOOfG">393VlP<Cjd0m3ecf e="hTbq3jjvg9">vAVX3<Zpy6MkzB7T hof="yYoK8TaMe" M="1d31C8RL">p<xD7nL23uNA xm0dR="VB4hLBn" HXX="z">GJYvl9A</xD7nL23uNA><fchDSJPJP >i0sg</fchDSJPJP></Zpy6MkzB7T></Cjd0m3ecf><XatWo4uR6 gAu4="EXSMF5cv" b="15XT3rXtre">yDpIrzcA5FmYcgaCxfBq<LjFy ScssC="l2" z="ZXLLyCvA">mpn<Ab NCKIq="Sr" Yt="5m" 6DFrl="uR5xaIn"></Ab></LjFy></XatWo4uR6></4n9yd>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_95.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_95.xml
new file mode 100644
index 0000000..3ab0d11
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_95.xml
@@ -0,0 +1 @@
+<2I3 kn39U="0UZqngTya" A5vMm="VN7x5Ra9f">DmT34z<dp >vX<4kRSfl >wwTXN4cF5KuP<ET 3FSU4="631gK4M1">ExpJPYwCcLZVJWC2ol</ET></4kRSfl></dp></2I3>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_96.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_96.xml
new file mode 100644
index 0000000..e3483f1
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_96.xml
@@ -0,0 +1 @@
+<zjOU01r7HL 2dG="ylCp" uT="3HP" uFjt="Y3x">B<4GfObQH tO9="Yv" 8Csn="W">c1B86lPGo7nW<J7GybA JQv="jw0lynKtgQ" 5FwM="EHG">NDVs1LtXsVRwB</J7GybA><FO1 BOXy1="cpfZofJQ1">z3UVwpLtUxHWijfgUsI</FO1></4GfObQH><YHfev tdnB="v7tBOyc">Va<mpR56rFIeC vfK="nr5R82q6" u="lDxWo" 3S="k">YwryMAuWN4Hje5fYcJ<5d19iVu31T BJem="rr6mNGDMSD">NHch6WXzeqdd1wCLXWci</5d19iVu31T><WTfr B2="im2DCPHpB" VME="aLT" qasdt="heAHelA">zNNMBA</WTfr></mpR56rFIeC><uoE6 TLS="N6"><ov ZO6="Sna" esT="UbalNrXNe" m="ZrSggJnD">Lt3ViDYfZw355Ca</ov><dSYCJRCxGs l="zjz" cm="AhbWFw4V1w" JoF="9gz3YAZJzd">QWiCSarw</dSYCJRCxGs></uoE6></YHfev></zjOU01r7HL>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_97.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_97.xml
new file mode 100644
index 0000000..7e4db56
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_97.xml
@@ -0,0 +1 @@
+<AhAELq9wFh >ch14W5NflCsI<Oe8A >dpBhoWgb4v<5 >4wHnCc43GmvqCjgL7wgN<5woLd KgV="wyvSZd">jIBKHHBXE</5woLd></5><d7 bX="2">qO2zkcvVNDI4<q4zZZG3jA E="oJHnWFE">DJ44ld0J4W</q4zZZG3jA></d7></Oe8A></AhAELq9wFh>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_98.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_98.xml
new file mode 100644
index 0000000..959b5b5
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_98.xml
@@ -0,0 +1 @@
+<JOgAtST T7z="JMv4V" n="I">m3qw3589L2MM</JOgAtST>
\ No newline at end of file
diff --git a/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_99.xml b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_99.xml
new file mode 100644
index 0000000..1a0d0ee
--- /dev/null
+++ b/fuzzing/llm/tinyxml2_fuzzer/xml_corpus/xml_99.xml
@@ -0,0 +1 @@
+<xrQ4CU O3d="6DOXEGPO1">idy1bWtJhRy4eh<es0s X4Odu="dJV" AvF="FxkCPjzm" OAkm="tBb12xBa">FnYkbt<k9hmPi 8Ss="QKKqB9OqiW">A27RNXS3</k9hmPi></es0s></xrQ4CU>
\ No newline at end of file
diff --git a/fuzzing/llm/xmlreader_fuzzer/Android.bp b/fuzzing/llm/xmlreader_fuzzer/Android.bp
new file mode 100644
index 0000000..066354c
--- /dev/null
+++ b/fuzzing/llm/xmlreader_fuzzer/Android.bp
@@ -0,0 +1,38 @@
+// Copyright 2024 The Android Open Source Project
+package {
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_fuzz {
+    name: "xmlread_memory_fuzzer",
+    shared_libs: [
+        "libxml2",
+    ],
+    srcs: [
+        "XmlRead_Memory_Fuzzer.cpp",
+    ],
+    fuzz_config: {
+        cc: ["[email protected]"],
+        componentid: 330367,
+    },
+    host_supported: true,
+    corpus: ["testdata/*"],
+    dictionary: "xml_fuzzer.dict",
+}
+
+cc_fuzz {
+    name: "xmlread_fd_fuzzer",
+    shared_libs: [
+        "libxml2",
+    ],
+    srcs: [
+        "XmlRead_Fd_Fuzzer.cpp",
+    ],
+    fuzz_config: {
+        cc: ["[email protected]"],
+        componentid: 330367,
+    },
+    host_supported: true,
+    corpus: ["testdata/*"],
+    dictionary: "xml_fuzzer.dict",
+}
diff --git a/fuzzing/llm/xmlreader_fuzzer/XmlRead_Fd_Fuzzer.cpp b/fuzzing/llm/xmlreader_fuzzer/XmlRead_Fd_Fuzzer.cpp
new file mode 100644
index 0000000..364043c
--- /dev/null
+++ b/fuzzing/llm/xmlreader_fuzzer/XmlRead_Fd_Fuzzer.cpp
@@ -0,0 +1,50 @@
+#include <fuzzer/FuzzedDataProvider.h>
+#include <libxml/parser.h>
+#include <cstdio>
+#include <unistd.h>
+#include <fcntl.h>
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+    FuzzedDataProvider stream(data, size);
+
+    // Initialize the XML parser
+    xmlInitParser();
+
+    // Create and initialize parser context
+    xmlParserCtxtPtr ctxt = xmlNewParserCtxt();
+    if (ctxt == nullptr) {
+        return 0;
+    }
+
+    // Create a temporary file
+    std::unique_ptr<std::FILE, decltype(&fclose)> fp(tmpfile(), &fclose);
+    if (!fp) {
+        xmlFreeParserCtxt(ctxt);
+        return 0;
+    }
+
+    // Write fuzzed data to the temporary file
+    fwrite(data, 1, size, fp.get());
+    fflush(fp.get());
+    rewind(fp.get());
+
+    // Get the file descriptor from the FILE object
+    int fd = fileno(fp.get());
+
+    // Generate other fuzzed inputs
+    std::string URL = stream.ConsumeRandomLengthString();
+    std::string encoding = stream.ConsumeRandomLengthString();
+    int options = stream.ConsumeIntegral<int>();
+
+    // Call the function under test
+    xmlDocPtr doc = xmlCtxtReadFd(ctxt, fd, URL.c_str(), encoding.c_str(), options);
+
+    // Cleanup
+    if (doc != nullptr) {
+        xmlFreeDoc(doc);
+    }
+    xmlFreeParserCtxt(ctxt);
+    xmlCleanupParser();
+
+    return 0;
+}
diff --git a/fuzzing/llm/xmlreader_fuzzer/XmlRead_Memory_Fuzzer.cpp b/fuzzing/llm/xmlreader_fuzzer/XmlRead_Memory_Fuzzer.cpp
new file mode 100644
index 0000000..12a5c9c
--- /dev/null
+++ b/fuzzing/llm/xmlreader_fuzzer/XmlRead_Memory_Fuzzer.cpp
@@ -0,0 +1,64 @@
+#include <fuzzer/FuzzedDataProvider.h>
+#include <string>
+#include <libxml/parser.h>
+
+
+std::string GenerateRandomXML(FuzzedDataProvider& stream) {
+    std::string xml = "<root>";
+    int numberOfElements = stream.ConsumeIntegralInRange<int>(1, 10);
+
+    for (int i = 0; i < numberOfElements; ++i) {
+        std::string elementName = stream.ConsumeRandomLengthString(10); // Limiting name length to 10
+        xml += "<" + elementName + ">";
+
+        if (stream.ConsumeBool()) {
+            std::string textContent = stream.ConsumeRandomLengthString(20); // Limiting text content length
+            xml += textContent;
+        }
+
+        int numberOfAttributes = stream.ConsumeIntegralInRange<int>(0, 5);
+        for (int j = 0; j < numberOfAttributes; ++j) {
+            std::string attributeName = stream.ConsumeRandomLengthString(10); // Limiting attribute name length
+            std::string attributeValue = stream.ConsumeRandomLengthString(20); // Limiting attribute value length
+            xml += " " + attributeName + "=\"" + attributeValue + "\"";
+        }
+
+        xml += "</" + elementName + ">";
+    }
+
+    xml += "</root>";
+    return xml;
+}
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+    FuzzedDataProvider stream(data, size);
+
+    // Initialize the XML parser
+    xmlInitParser();
+
+    // Create and initialize parser context
+    xmlParserCtxtPtr ctxt = xmlNewParserCtxt();
+    if (ctxt == nullptr) {
+        // If cannot allocate context, early return
+        return 0;
+    }
+
+    // Generate fuzzed inputs
+    std::string buffer = GenerateRandomXML(stream);
+    int bufferSize = buffer.length();
+    std::string URL = stream.ConsumeRandomLengthString();
+    std::string encoding = stream.ConsumeRandomLengthString();
+    int options = stream.ConsumeIntegral<int>();
+
+    // Call the function under test
+    xmlDocPtr doc = xmlCtxtReadMemory(ctxt, buffer.data(), bufferSize, URL.c_str(), encoding.c_str(), options);
+
+    // Cleanup
+    if (doc != nullptr) {
+        xmlFreeDoc(doc);
+    }
+    xmlFreeParserCtxt(ctxt);
+    xmlCleanupParser();
+
+    return 0;
+}
diff --git a/fuzzing/llm/xmlreader_fuzzer/testdata/attributes.xml b/fuzzing/llm/xmlreader_fuzzer/testdata/attributes.xml
new file mode 100644
index 0000000..417fec7
--- /dev/null
+++ b/fuzzing/llm/xmlreader_fuzzer/testdata/attributes.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<root>
+    <child id="1">
+        <subchild type="A">Content A</subchild>
+        <subchild type="B">Content B</subchild>
+    </child>
+    <child id="2" extra="data">
+        <subchild type="C">Content C</subchild>
+    </child>
+</root>
diff --git a/fuzzing/llm/xmlreader_fuzzer/testdata/basic.xml b/fuzzing/llm/xmlreader_fuzzer/testdata/basic.xml
new file mode 100644
index 0000000..7e13db5
--- /dev/null
+++ b/fuzzing/llm/xmlreader_fuzzer/testdata/basic.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<root>
+    <child1>Value 1</child1>
+    <child2>Value 2</child2>
+</root>
diff --git a/fuzzing/llm/xmlreader_fuzzer/testdata/cdata.xml b/fuzzing/llm/xmlreader_fuzzer/testdata/cdata.xml
new file mode 100644
index 0000000..90cdf35
--- /dev/null
+++ b/fuzzing/llm/xmlreader_fuzzer/testdata/cdata.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<root>
+    <!-- Example with special characters and CDATA -->
+    <data><![CDATA[Some <encoded> data & other "special" characters]]></data>
+    <message>Hello &amp; Welcome!</message>
+</root>
diff --git a/fuzzing/llm/xmlreader_fuzzer/xml_fuzzer.dict b/fuzzing/llm/xmlreader_fuzzer/xml_fuzzer.dict
new file mode 100644
index 0000000..745ded4
--- /dev/null
+++ b/fuzzing/llm/xmlreader_fuzzer/xml_fuzzer.dict
@@ -0,0 +1,11 @@
+root_tag=<root>
+child_tag=<child>
+end_child_tag=</child>
+id_attr=id="
+type_attr=type="
+cdata_start=<![CDATA[
+cdata_end=]]>
+ampersand_entity=&amp;
+xml_header=<?xml version="1.0" encoding="UTF-8"?>
+comment_start=<!--
+comment_end= -->
diff --git a/fuzzing/llm/xz_fuzzer/Android.bp b/fuzzing/llm/xz_fuzzer/Android.bp
new file mode 100644
index 0000000..d9d5bbb
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/Android.bp
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+cc_fuzz {
+    name: "xz_decoder_fuzzer",
+    srcs: [
+        "xz_decoder_fuzzer.cpp",
+    ],
+
+    static_libs: [
+        "libxz",
+    ],
+
+    fuzz_config: {
+        cc: [
+            "[email protected]",
+        ],
+        componentid: 330367,
+    },
+
+    include_dirs: [
+        "external/xz-embedded/linux/include/linux/",
+        "external/xz-embedded/linux/lib/xz/",
+    ],
+
+    corpus: ["xz_corpus/*"],
+    dictionary: "xz_fuzzer.dict",
+}
diff --git a/fuzzing/llm/xz_fuzzer/make_corpus.py b/fuzzing/llm/xz_fuzzer/make_corpus.py
new file mode 100644
index 0000000..cdda54c
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/make_corpus.py
@@ -0,0 +1,41 @@
+import lzma
+import os
+import random
+
+def create_valid_xz_files(directory, num_files=10):
+    for i in range(num_files):
+        file_content = os.urandom(random.randint(100, 10000))  # Random binary content
+        file_path = os.path.join(directory, f'valid_file_{i}.xz')
+
+        with lzma.open(file_path, 'wb', preset=random.choice([0, 9])) as f:
+            f.write(file_content)
+
+def create_malformed_xz_files(directory, num_files=10):
+    for i in range(num_files):
+        valid_file_path = random.choice(os.listdir(directory))
+        with open(os.path.join(directory, valid_file_path), 'rb') as f:
+            content = f.read()
+
+        malformed_content = corrupt_data(content)
+
+        with open(os.path.join(directory, f'malformed_file_{i}.xz'), 'wb') as f:
+            f.write(malformed_content)
+
+def corrupt_data(data):
+    # Introduce random corruption in data
+    index = random.randint(0, len(data) - 1)
+    corrupted_data = data[:index] + random.randint(0, 255).to_bytes(1, 'little') + data[index + 1:]
+    return corrupted_data
+
+def main():
+    corpus_directory = 'xz_corpus'
+    os.makedirs(corpus_directory, exist_ok=True)
+
+    # Create valid .xz files
+    create_valid_xz_files(corpus_directory, num_files=50)
+
+    # Create malformed .xz files
+    create_malformed_xz_files(corpus_directory, num_files=50)
+
+if __name__ == '__main__':
+    main()
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_0.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_0.xz
new file mode 100644
index 0000000..a9d733f
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_0.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_1.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_1.xz
new file mode 100644
index 0000000..4ad546f
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_1.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_10.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_10.xz
new file mode 100644
index 0000000..613a0a2
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_10.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_11.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_11.xz
new file mode 100644
index 0000000..ee52ec1
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_11.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_12.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_12.xz
new file mode 100644
index 0000000..01d4629
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_12.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_13.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_13.xz
new file mode 100644
index 0000000..69d6a7a
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_13.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_14.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_14.xz
new file mode 100644
index 0000000..cac37b0
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_14.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_15.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_15.xz
new file mode 100644
index 0000000..80a1782
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_15.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_16.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_16.xz
new file mode 100644
index 0000000..6e04373
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_16.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_17.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_17.xz
new file mode 100644
index 0000000..9efdeba
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_17.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_18.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_18.xz
new file mode 100644
index 0000000..96a98e6
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_18.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_19.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_19.xz
new file mode 100644
index 0000000..6fd4590
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_19.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_2.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_2.xz
new file mode 100644
index 0000000..286412f
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_2.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_20.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_20.xz
new file mode 100644
index 0000000..9c268bd
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_20.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_21.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_21.xz
new file mode 100644
index 0000000..2b5b39f
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_21.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_22.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_22.xz
new file mode 100644
index 0000000..dffbfb1
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_22.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_23.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_23.xz
new file mode 100644
index 0000000..789292f
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_23.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_24.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_24.xz
new file mode 100644
index 0000000..5d1bce6
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_24.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_25.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_25.xz
new file mode 100644
index 0000000..c6ffb54
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_25.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_26.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_26.xz
new file mode 100644
index 0000000..01e5aa2
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_26.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_27.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_27.xz
new file mode 100644
index 0000000..e59456d
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_27.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_28.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_28.xz
new file mode 100644
index 0000000..92d2d23
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_28.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_29.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_29.xz
new file mode 100644
index 0000000..f08353b
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_29.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_3.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_3.xz
new file mode 100644
index 0000000..4ec99f5
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_3.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_30.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_30.xz
new file mode 100644
index 0000000..0cd1f58
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_30.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_31.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_31.xz
new file mode 100644
index 0000000..e80afc2
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_31.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_32.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_32.xz
new file mode 100644
index 0000000..7a1b990
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_32.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_33.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_33.xz
new file mode 100644
index 0000000..33ec324
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_33.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_34.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_34.xz
new file mode 100644
index 0000000..909cb75
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_34.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_35.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_35.xz
new file mode 100644
index 0000000..c48d80d
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_35.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_36.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_36.xz
new file mode 100644
index 0000000..a30c5a4
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_36.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_37.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_37.xz
new file mode 100644
index 0000000..aea2dac
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_37.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_38.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_38.xz
new file mode 100644
index 0000000..ff17aa1
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_38.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_39.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_39.xz
new file mode 100644
index 0000000..66c78bb
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_39.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_4.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_4.xz
new file mode 100644
index 0000000..2efa4f8
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_4.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_40.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_40.xz
new file mode 100644
index 0000000..c5fda88
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_40.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_41.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_41.xz
new file mode 100644
index 0000000..55903d4
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_41.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_42.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_42.xz
new file mode 100644
index 0000000..a217920
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_42.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_43.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_43.xz
new file mode 100644
index 0000000..48de5db
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_43.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_44.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_44.xz
new file mode 100644
index 0000000..2fc22bb
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_44.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_45.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_45.xz
new file mode 100644
index 0000000..3d89783
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_45.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_46.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_46.xz
new file mode 100644
index 0000000..5a2bcef
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_46.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_47.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_47.xz
new file mode 100644
index 0000000..dbcf120
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_47.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_48.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_48.xz
new file mode 100644
index 0000000..d6c796d
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_48.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_49.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_49.xz
new file mode 100644
index 0000000..8cc5bfc
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_49.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_5.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_5.xz
new file mode 100644
index 0000000..4932440
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_5.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_6.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_6.xz
new file mode 100644
index 0000000..f46c96a
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_6.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_7.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_7.xz
new file mode 100644
index 0000000..b69773b
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_7.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_8.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_8.xz
new file mode 100644
index 0000000..f58dd1f
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_8.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_9.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_9.xz
new file mode 100644
index 0000000..bf0855d
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/malformed_file_9.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_0.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_0.xz
new file mode 100644
index 0000000..d98f97d
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_0.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_1.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_1.xz
new file mode 100644
index 0000000..8f3ae7c
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_1.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_10.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_10.xz
new file mode 100644
index 0000000..e988570
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_10.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_11.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_11.xz
new file mode 100644
index 0000000..f72ced3
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_11.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_12.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_12.xz
new file mode 100644
index 0000000..bbf10ed
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_12.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_13.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_13.xz
new file mode 100644
index 0000000..cc10249
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_13.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_14.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_14.xz
new file mode 100644
index 0000000..d7213e8
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_14.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_15.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_15.xz
new file mode 100644
index 0000000..85c2aca
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_15.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_16.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_16.xz
new file mode 100644
index 0000000..8497a7f
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_16.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_17.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_17.xz
new file mode 100644
index 0000000..bd317cf
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_17.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_18.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_18.xz
new file mode 100644
index 0000000..ce70c15
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_18.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_19.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_19.xz
new file mode 100644
index 0000000..e293111
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_19.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_2.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_2.xz
new file mode 100644
index 0000000..4e7f29b
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_2.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_20.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_20.xz
new file mode 100644
index 0000000..78d85c3
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_20.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_21.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_21.xz
new file mode 100644
index 0000000..edeacb8
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_21.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_22.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_22.xz
new file mode 100644
index 0000000..9daaf2b
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_22.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_23.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_23.xz
new file mode 100644
index 0000000..257114a
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_23.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_24.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_24.xz
new file mode 100644
index 0000000..c5bd012
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_24.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_25.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_25.xz
new file mode 100644
index 0000000..2ad0b40
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_25.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_26.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_26.xz
new file mode 100644
index 0000000..f6adb26
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_26.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_27.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_27.xz
new file mode 100644
index 0000000..9cf5c3e
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_27.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_28.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_28.xz
new file mode 100644
index 0000000..dcc695f
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_28.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_29.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_29.xz
new file mode 100644
index 0000000..9cc51a6
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_29.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_3.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_3.xz
new file mode 100644
index 0000000..38b3ec0
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_3.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_30.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_30.xz
new file mode 100644
index 0000000..8a2478f
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_30.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_31.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_31.xz
new file mode 100644
index 0000000..f3c90dc
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_31.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_32.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_32.xz
new file mode 100644
index 0000000..6f51eee
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_32.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_33.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_33.xz
new file mode 100644
index 0000000..b7eef75
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_33.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_34.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_34.xz
new file mode 100644
index 0000000..9346468
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_34.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_35.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_35.xz
new file mode 100644
index 0000000..3769bb0
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_35.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_36.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_36.xz
new file mode 100644
index 0000000..b6a7ebd
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_36.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_37.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_37.xz
new file mode 100644
index 0000000..44dfb0b
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_37.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_38.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_38.xz
new file mode 100644
index 0000000..ea9da12
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_38.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_39.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_39.xz
new file mode 100644
index 0000000..515aa56
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_39.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_4.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_4.xz
new file mode 100644
index 0000000..3d91dec
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_4.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_40.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_40.xz
new file mode 100644
index 0000000..f5f53cf
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_40.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_41.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_41.xz
new file mode 100644
index 0000000..5dbda34
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_41.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_42.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_42.xz
new file mode 100644
index 0000000..61b0def
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_42.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_43.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_43.xz
new file mode 100644
index 0000000..f0f46d9
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_43.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_44.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_44.xz
new file mode 100644
index 0000000..3cee216
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_44.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_45.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_45.xz
new file mode 100644
index 0000000..2c70224
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_45.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_46.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_46.xz
new file mode 100644
index 0000000..ad55ab4
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_46.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_47.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_47.xz
new file mode 100644
index 0000000..1ca131c
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_47.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_48.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_48.xz
new file mode 100644
index 0000000..9b23ed0
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_48.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_49.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_49.xz
new file mode 100644
index 0000000..2456be1
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_49.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_5.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_5.xz
new file mode 100644
index 0000000..6e788b5
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_5.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_6.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_6.xz
new file mode 100644
index 0000000..991bc19
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_6.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_7.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_7.xz
new file mode 100644
index 0000000..9e4a0e6
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_7.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_8.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_8.xz
new file mode 100644
index 0000000..259aa93
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_8.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_9.xz b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_9.xz
new file mode 100644
index 0000000..29b2384
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_corpus/valid_file_9.xz
Binary files differ
diff --git a/fuzzing/llm/xz_fuzzer/xz_decoder_fuzzer.cpp b/fuzzing/llm/xz_fuzzer/xz_decoder_fuzzer.cpp
new file mode 100644
index 0000000..61c4d03
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_decoder_fuzzer.cpp
@@ -0,0 +1,50 @@
+#include <fuzzer/FuzzedDataProvider.h>
+#include "xz.h"
+
+constexpr size_t kMinSize = 0;
+constexpr size_t kMaxSize = 1000;
+
+// Function to initialize xz_dec structure using xz_dec_init
+struct xz_dec *init_xz_dec(FuzzedDataProvider& stream) {
+    // Randomly select a mode from the xz_mode enum
+    const std::array<enum xz_mode, 3> modes = {XZ_SINGLE, XZ_PREALLOC, XZ_DYNALLOC};
+    enum xz_mode mode = stream.PickValueInArray(modes);
+
+    // Generate a random dict_max value
+    uint32_t dict_max =
+        stream.ConsumeIntegralInRange<uint32_t>(kMinSize, kMaxSize);
+
+    // Initialize the xz_dec structure
+    struct xz_dec *s = xz_dec_init(mode, dict_max);
+
+    return s;
+}
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+    FuzzedDataProvider stream(data, size);
+
+    // Initialize xz_dec structure
+    struct xz_dec *s = init_xz_dec(stream);
+
+    // Initialize xz_buf structure
+    struct xz_buf b;
+    size_t in_buffer_size = stream.ConsumeIntegralInRange<size_t>(0, size);
+    std::vector<uint8_t> in_buffer(in_buffer_size);
+    for (size_t i = 0; i < in_buffer_size; ++i) {
+        in_buffer[i] = stream.ConsumeIntegral<uint8_t>();
+    }
+    b.in = in_buffer.data();
+    b.in_pos = 0;
+    b.in_size = in_buffer_size;
+
+    size_t out_buffer_size = stream.ConsumeIntegralInRange<size_t>(0, size);
+    std::vector<uint8_t> out_buffer(out_buffer_size);
+    b.out = out_buffer.data();
+    b.out_pos = 0;
+    b.out_size = out_buffer_size;
+
+    // Call the function under test
+    xz_ret result = xz_dec_run(s, &b);
+
+    return 0;  // Non-zero return values are usually reserved for fatal errors
+}
diff --git a/fuzzing/llm/xz_fuzzer/xz_fuzzer.dict b/fuzzing/llm/xz_fuzzer/xz_fuzzer.dict
new file mode 100644
index 0000000..4272941
--- /dev/null
+++ b/fuzzing/llm/xz_fuzzer/xz_fuzzer.dict
@@ -0,0 +1,10 @@
+fd377a585a00
+00
+01
+02
+05
+10
+00000000
+ffffffff
+00
+ff
diff --git a/fuzzing/measure_sandbox/Android.bp b/fuzzing/measure_sandbox/Android.bp
new file mode 100644
index 0000000..22bac0b
--- /dev/null
+++ b/fuzzing/measure_sandbox/Android.bp
@@ -0,0 +1,20 @@
+package {
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_binary {
+    name: "measure_sandbox",
+    srcs: [
+        "measure_sandbox.cpp",
+    ],
+    include_dirs: [
+        "system/core/libcutils/include/private/",
+    ],
+    static_libs: [
+        "libselinux",
+    ],
+    shared_libs: [
+        "libseccomp_policy",
+    ],
+    host_supported: false,
+}
diff --git a/fuzzing/measure_sandbox/measure_sandbox.cpp b/fuzzing/measure_sandbox/measure_sandbox.cpp
new file mode 100644
index 0000000..79684fc
--- /dev/null
+++ b/fuzzing/measure_sandbox/measure_sandbox.cpp
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <fcntl.h>
+#include <grp.h>
+#include <selinux/selinux.h>
+#include <signal.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/prctl.h>
+#include <unistd.h>
+
+#include "android_filesystem_config.h"
+#include "seccomp_policy.h"
+
+static bool set_groups(const gid_t gid) {
+  const gid_t groups[] = {gid, AID_EVERYBODY, AID_MISC};
+  const size_t num_groups = sizeof(groups) / sizeof(gid_t);
+
+  if (setgroups(num_groups, groups) != 0) {
+    fprintf(stderr, "setgroups failed\n");
+    return false;
+  }
+
+  if (setresgid(gid, gid, gid) != 0) {
+    fprintf(stderr, "setresgid failed\n");
+    return false;
+  }
+
+  return true;
+}
+
+static bool set_user(const uid_t uid) {
+  if (setresuid(uid, uid, uid) != 0) {
+    fprintf(stderr, "setresuid failed\n");
+    return false;
+  }
+
+  if (prctl(PR_SET_PDEATHSIG, SIGKILL, 0, 0, 0)) {
+    fprintf(stderr, "prctl failed\n");
+    return false;
+  }
+
+  return true;
+}
+
+static bool enter_app_sandbox() {
+  if (!set_groups(AID_APP_START)) {
+    return false;
+  }
+
+  if (!set_app_seccomp_filter()) {
+    return false;
+  }
+
+  if (!set_user(AID_APP_START)) {
+    return false;
+  };
+
+  // TODO: figure out the correct value or make this configurable.
+  setcon("u:r:untrusted_app:s0:c512,c768");
+
+  return true;
+}
+
+static bool enter_system_sandbox() {
+  if (!set_groups(AID_SYSTEM)) {
+    return false;
+  }
+
+  if (!set_system_seccomp_filter()) {
+    return false;
+  }
+
+  if (!set_user(AID_SYSTEM)) {
+    return false;
+  };
+
+  return true;
+}
+
+void print_usage(char** argv) {
+  fprintf(stderr, "usage: %s <app|system> <file>\n", argv[0]);
+}
+
+int main(int argc, char** argv) {
+  if (argc != 3) {
+    print_usage(argv);
+    return 1;
+  }
+
+  if (!strcmp(argv[1], "app")) {
+    if (!enter_app_sandbox()) {
+      return 1;
+    }
+  } else if (!strcmp(argv[1], "system")) {
+    if (!enter_system_sandbox()) {
+      return 1;
+    }
+  } else {
+    print_usage(argv);
+    return 1;
+  }
+
+  if (open(argv[2], O_RDONLY) == -1) {
+    fprintf(stderr, "failed to open %s\n", argv[2]);
+    return 1;
+  }
+
+  return 0;
+}
diff --git a/fuzzing/orphans/android_logger/android_logger_fuzzer.rs b/fuzzing/orphans/android_logger/android_logger_fuzzer.rs
index 94dcee6..2509ba9 100644
--- a/fuzzing/orphans/android_logger/android_logger_fuzzer.rs
+++ b/fuzzing/orphans/android_logger/android_logger_fuzzer.rs
@@ -30,6 +30,18 @@
     }
 }
 
+impl From<LevelInput> for LevelFilter {
+    fn from(l: LevelInput) -> LevelFilter {
+        match l {
+            LevelInput::Error => LevelFilter::Error,
+            LevelInput::Warn => LevelFilter::Warn,
+            LevelInput::Info => LevelFilter::Info,
+            LevelInput::Debug => LevelFilter::Debug,
+            LevelInput::Trace => LevelFilter::Trace,
+        }
+    }
+}
+
 #[derive(Arbitrary, Debug)]
 pub enum LevelFilterInput {
     Off,
@@ -96,9 +108,9 @@
     fn from(config_input: ConfigInput) -> Config {
         Config::default()
             .with_filter(config_input.get_filter())
-            .with_min_level(config_input.log_level.into())
+            .with_max_level(config_input.log_level.into())
             .with_tag(config_input.tag)
-            .with_log_id(config_input.log_id.into())
+            .with_log_buffer(config_input.log_id.into())
     }
 }
 
diff --git a/fuzzing/orphans/libcppbor/Android.bp b/fuzzing/orphans/libcppbor/Android.bp
index 3bb20f9..39f4b91 100644
--- a/fuzzing/orphans/libcppbor/Android.bp
+++ b/fuzzing/orphans/libcppbor/Android.bp
@@ -22,7 +22,7 @@
         "cppbor_fuzzer.cpp",
     ],
     shared_libs: [
-        "libcppbor_external",
+        "libcppbor",
     ],
     host_supported: true,
 }
@@ -33,7 +33,7 @@
         "cppbor_parse_fuzzer.cpp",
     ],
     shared_libs: [
-        "libcppbor_external",
+        "libcppbor",
     ],
     corpus: ["corpus/*.cbor"],
     host_supported: true,
diff --git a/fuzzing/orphans/libskia/Android.bp b/fuzzing/orphans/libskia/Android.bp
index cce7ba3..128d0fc 100644
--- a/fuzzing/orphans/libskia/Android.bp
+++ b/fuzzing/orphans/libskia/Android.bp
@@ -24,7 +24,6 @@
   static_libs: [
       "libskia",
       "libarect",
-      "libsfntly",
       "libwebp-decode",
       "libwebp-encode",
       "libwuffs_mirror_release_c",
diff --git a/fuzzing/orphans/pppd/Android.bp b/fuzzing/orphans/pppd/Android.bp
deleted file mode 100644
index e2b4dc0..0000000
--- a/fuzzing/orphans/pppd/Android.bp
+++ /dev/null
@@ -1,35 +0,0 @@
-package {
-    default_applicable_licenses: ["Android-Apache-2.0"],
-}
-
-cc_fuzz {
-    name: "eap_pppd_fuzz",
-
-    srcs: [
-        "eap_fuzz.proto",
-        "eap_fuzz.cc",
-        "eap_fuzz_Cproxy.c",
-    ],
-
-    static_libs: [
-        "libprotobuf-mutator",
-        "libpppd",
-    ],
-    shared_libs: [
-        "libprotobuf-cpp-full",
-        "libdl",
-        "liblog",
-        "libcutils",
-        "libcrypto",
-    ],
-
-    cflags: [
-        "-Wno-unused-parameter",
-    ],
-
-    ldflags: ["-rdynamic"],
-    required: [
-        "pppol2tp-android",
-        "pppopptp-android",
-    ],
-}
diff --git a/fuzzing/orphans/pppd/eap_fuzz.cc b/fuzzing/orphans/pppd/eap_fuzz.cc
deleted file mode 100644
index 5372e15..0000000
--- a/fuzzing/orphans/pppd/eap_fuzz.cc
+++ /dev/null
@@ -1,215 +0,0 @@
-#include <stdint.h>
-extern "C" {
-#include "eap_fuzz_Cproxy.h"
-}
-
-#include <src/libfuzzer/libfuzzer_macro.h>
-#include "eap_fuzz.pb.h"
-
-#define S_MALLOC(var, size) \
-do { \
- if ((var = (uint8_t *)malloc(size)) == NULL) { \
-     return; \
- } \
-} while(0)
-
-void write_header(uint8_t *packet, uint16_t data_size, uint8_t type)
-{
-    data_size += EAP_HEADERLEN;
-    //the packet type
-    *(packet)++ = type&0xff;
-    //id
-    *(packet)++ = 0x0;
-    //the length as big endian short
-    *(packet)++ = ((data_size >> 8)&0xff);
-    *(packet)++ = data_size&0xff;
-}
-
-DEFINE_BINARY_PROTO_FUZZER(const eap_fuzz::proto::PacketSet &packets){
-    init();
-
-    for(const eap_fuzz::proto::Packet& packet: packets.packets()){
-       uint8_t *fuzz_packet = NULL;
-       size_t packet_len = 0;
-       std::string data = "";
-       uint8_t packet_type = -1;
-       switch(packet.PacketType_case()){
-           case eap_fuzz::proto::Packet::kEapRequest: {
-                packet_type = EAP_REQUEST;
-                uint8_t eap_request_type = -1;
-                auto eap_request = packet.eap_request();
-                switch(eap_request.EapRequestType_case()){
-                    case eap_fuzz::proto::EapRequest::kIdentity: {
-                        eap_request_type = EAPT_IDENTITY;
-                        data = eap_request.identity().data();
-                        S_MALLOC(fuzz_packet, data.size()+EAP_HEADERLEN+1);
-                        break;
-                    }
-                    case eap_fuzz::proto::EapRequest::kNotification: {
-                        eap_request_type = EAPT_NOTIFICATION;
-                        data = eap_request.notification().data();
-                        S_MALLOC(fuzz_packet, data.size()+EAP_HEADERLEN+1);
-                        break;
-                    }
-                    case eap_fuzz::proto::EapRequest::kMd5Chap: {
-                        eap_request_type = EAPT_MD5CHAP;
-                        data = eap_request.md5chap().data();
-                        S_MALLOC(fuzz_packet, data.size()+EAP_HEADERLEN+1);
-                        break;
-                    }
-                    case eap_fuzz::proto::EapRequest::kSrp: {
-                        auto request_srp = eap_request.srp();
-                        eap_request_type = EAPT_SRP;
-                        uint8_t srp_type = -1;
-                        switch(request_srp.EspMessage_case()){
-                            case eap_fuzz::proto::EaptRequestSRP::kSrpChallenge:{
-                                data = request_srp.srp_challenge().data();
-                                srp_type = EAPSRP_CHALLENGE;
-                                break;
-                            }
-                            case eap_fuzz::proto::EaptRequestSRP::kSrpValidator:{
-                                data = request_srp.srp_validator().data();
-                                srp_type = EAPSRP_SVALIDATOR;
-                                break;
-                            }
-                            case eap_fuzz::proto::EaptRequestSRP::kSrpKey:{
-                                data = request_srp.srp_key().data();
-                                srp_type = EAPSRP_SKEY;
-                                break;
-                            }
-                            case eap_fuzz::proto::EaptRequestSRP::kSrpLwreChallenge:{
-                                data = request_srp.srp_lwre_challenge().data();
-                                srp_type = EAPSRP_LWRECHALLENGE;
-                                break;
-                            }
-                            case eap_fuzz::proto::EaptRequestSRP::ESPMESSAGE_NOT_SET:{
-                                return;
-                            }
-
-                        }
-                        S_MALLOC(fuzz_packet, data.size()+EAP_HEADERLEN+2);
-                        *(fuzz_packet+EAP_HEADERLEN+1) = srp_type;
-                        packet_len++;
-                        break;
-                    }
-                    case eap_fuzz::proto::EapRequest::EAPREQUESTTYPE_NOT_SET: {
-                        return;
-                    }
-                }
-                *(fuzz_packet+EAP_HEADERLEN) = eap_request_type;
-                ++packet_len;
-                break;
-           }
-
-           case eap_fuzz::proto::Packet::kEapResponse: {
-                packet_type = EAP_RESPONSE;
-                auto eap_response = packet.eap_response();
-                uint8_t eap_response_type = -1;
-                switch(eap_response.EapResponseType_case()){
-                    case eap_fuzz::proto::EapResponse::kIdentity: {
-                        eap_response_type = EAPT_IDENTITY;
-                        data = eap_response.identity().data();
-                        S_MALLOC(fuzz_packet, data.size()+EAP_HEADERLEN+1);
-                        break;
-                    }
-                    case eap_fuzz::proto::EapResponse::kNotification: {
-                        eap_response_type = EAPT_NOTIFICATION;
-                        data = eap_response.notification().data();
-                        S_MALLOC(fuzz_packet, data.size()+EAP_HEADERLEN+1);
-                        break;
-                    }
-                    case eap_fuzz::proto::EapResponse::kMd5Chap: {
-                        eap_response_type = EAPT_MD5CHAP;
-                        data = eap_response.md5chap().data();
-                        S_MALLOC(fuzz_packet, data.size()+EAP_HEADERLEN+1);
-                        break;
-                    }
-                    case eap_fuzz::proto::EapResponse::kNak: {
-                        eap_response_type = EAPT_NAK;
-                        auto response_nak = eap_response.nak();
-                        uint8_t nak_type = -1;
-                        switch(response_nak.EaptResponseNAKType_case()){
-                            case eap_fuzz::proto::EaptResponseNAK::kSrp:{
-                                nak_type = EAPT_SRP;
-                                break;
-
-                            }
-                            case eap_fuzz::proto::EaptResponseNAK::kMd5Chap:{
-                                nak_type = EAPT_MD5CHAP;
-                                break;
-
-                            }
-                            case eap_fuzz::proto::EaptResponseNAK::EAPTRESPONSENAKTYPE_NOT_SET:{
-                                return;
-                            }
-                        }
-                        S_MALLOC(fuzz_packet, data.size()+EAP_HEADERLEN+2);
-                        *(fuzz_packet+EAP_HEADERLEN+1) = nak_type;
-                        packet_len++;
-                        break;
-                    }
-                    case eap_fuzz::proto::EapResponse::kSrp: {
-                        auto response_srp = eap_response.srp();
-                        eap_response_type = EAPT_SRP;
-                        uint8_t srp_type = -1;
-                        switch(response_srp.EspMessage_case()){
-                            case eap_fuzz::proto::EaptResponseSRP::kSrpChallenge:{
-                                data = response_srp.srp_challenge().data();
-                                srp_type = EAPSRP_LWRECHALLENGE;
-                                break;
-                            }
-                            case eap_fuzz::proto::EaptResponseSRP::kSrpCvalidator:{
-                                data = response_srp.srp_cvalidator().data();
-                                srp_type = EAPSRP_CVALIDATOR;
-                                break;
-                            }
-                            case eap_fuzz::proto::EaptResponseSRP::kSrpCkey:{
-                                data = response_srp.srp_ckey().data();
-                                srp_type = EAPSRP_CKEY;
-                                break;
-                            }
-                            case eap_fuzz::proto::EaptResponseSRP::kSrpAck:{
-                                data = response_srp.srp_ack().data();
-                                srp_type = EAPSRP_ACK;
-                                break;
-                            }
-                            case eap_fuzz::proto::EaptResponseSRP::ESPMESSAGE_NOT_SET:{
-                                return;
-                            }
-
-                        }
-                        S_MALLOC(fuzz_packet, data.size()+EAP_HEADERLEN+2);
-                        *(fuzz_packet+EAP_HEADERLEN+1) = srp_type;
-                        packet_len++;
-                        break;
-                    }
-                    case eap_fuzz::proto::EapResponse::EAPRESPONSETYPE_NOT_SET: {
-                        return;
-                    }
-                }
-                *(fuzz_packet+EAP_HEADERLEN) = eap_response_type;
-                ++packet_len;
-                break;
-           }
-           case eap_fuzz::proto::Packet::kEapSuccess: {
-                packet_type = EAP_SUCCESS;
-                data = packet.eap_success().data();
-                S_MALLOC(fuzz_packet, data.size()+EAP_HEADERLEN);
-                break;
-           }
-           case eap_fuzz::proto::Packet::kEapFailure: {
-                packet_type = EAP_FAILURE;
-                data = packet.eap_failure().data();
-                S_MALLOC(fuzz_packet, data.size()+EAP_HEADERLEN);
-                break;
-           }
-           case eap_fuzz::proto::Packet::PACKETTYPE_NOT_SET: {
-                return;
-         }
-       }
-       write_header(fuzz_packet, data.size()+packet_len, packet_type);
-       memcpy(fuzz_packet+EAP_HEADERLEN+packet_len, data.data(), data.size());
-       proxy_packet(fuzz_packet, data.size()+EAP_HEADERLEN+packet_len);
-       free(fuzz_packet);
-    }
-}
diff --git a/fuzzing/orphans/pppd/eap_fuzz.proto b/fuzzing/orphans/pppd/eap_fuzz.proto
deleted file mode 100644
index 6d41214..0000000
--- a/fuzzing/orphans/pppd/eap_fuzz.proto
+++ /dev/null
@@ -1,133 +0,0 @@
-syntax = "proto2";
-package eap_fuzz.proto;
-
-message PacketSet{
-    repeated Packet packets = 1;
-}
-
-message Packet{
-    oneof PacketType {
-        EapRequest eap_request = 1;
-        EapResponse eap_response = 2;
-        EapSuccess eap_success = 3;
-        EapFailure eap_failure = 4;
-    }
-}
-
-message EapRequest{
-    oneof EapRequestType{
-        EaptRequestIdentity identity = 1;
-        EsptRequestNotification notification = 2;
-        EaptRequestMD5Chap md5chap = 3;
-        EaptRequestSRP srp = 4;
-    }
-
-}
-
-message EaptRequestIdentity{
-    required bytes data = 1;
-}
-
-message EsptRequestNotification{
-    required bytes data = 1;
-}
-
-message EaptRequestMD5Chap{
-    required bytes data = 2;
-}
-message EaptRequestSRP{
-    oneof EspMessage {
-        EapRequestSRPChallenge srp_challenge = 1;
-        EapRequestSRPKey srp_key = 2;
-        EapRequestSRPValidator srp_validator = 3;
-        EapRequestSRPLWREChallenge srp_lwre_challenge = 4;
-    }
-}
-
-message EapRequestSRPChallenge{
-    required bytes data = 1;
-}
-
-message EapRequestSRPKey{
-    required bytes data = 1;
-}
-
-message EapRequestSRPValidator {
-    required bytes data = 1;
-}
-
-message EapRequestSRPLWREChallenge{
-   required bytes data = 1;
-}
-
-message EapResponse{
-    oneof EapResponseType{
-        EaptResponseIdentity identity = 1;
-        EsptResponseNotification notification = 2;
-        EaptResponseNAK nak = 3;
-        EaptResponseMD5Chap md5chap = 4;
-        EaptResponseSRP srp = 5;
-    }
-}
-
-message EaptResponseIdentity{
-    required bytes data = 1;
-}
-
-message EsptResponseNotification{
-    required bytes data = 1;
-}
-
-message EaptResponseNAK{
-    oneof EaptResponseNAKType{
-        EaptResponseNAKSRP srp = 1;
-        EaptResponseNAKMD5Chap md5_chap = 2;
-    }
-}
-
-
-message EaptResponseNAKSRP{
-    required bytes data = 1;
-}
-
-message EaptResponseNAKMD5Chap {
-    required bytes data = 1;
-}
-
-message EaptResponseMD5Chap {
-    required bytes data = 1;
-}
-
-message EaptResponseSRP{
-    oneof EspMessage {
-        EapResponseSRPCKey srp_ckey = 1;
-        EapResponseSRPCValidator srp_cvalidator = 2;
-        EapResponseSRPACK srp_ack = 3;
-        EapResponseSRPLWEChallenge srp_challenge = 4;
-    }
-}
-
-message EapResponseSRPCKey {
-    required bytes data = 1;
-}
-
-message EapResponseSRPCValidator{
-    required bytes data = 1;
-}
-
-message EapResponseSRPACK{
-    required bytes data = 1;
-}
-
-message EapResponseSRPLWEChallenge{
-    required bytes data = 1;
-}
-
-message EapSuccess{
-    required bytes data = 1;
-}
-
-message EapFailure{
-    required bytes data = 1;
-}
-
diff --git a/fuzzing/orphans/pppd/eap_fuzz_Cproxy.c b/fuzzing/orphans/pppd/eap_fuzz_Cproxy.c
deleted file mode 100644
index e2b7d98..0000000
--- a/fuzzing/orphans/pppd/eap_fuzz_Cproxy.c
+++ /dev/null
@@ -1,28 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <stdint.h>
-#include <pwd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <assert.h>
-#include <errno.h>
-
-#include "pppd.h"
-#include "pathnames.h"
-#include "md5.h"
-#include "eap.h"
-#include "magic.h"
-
-void init()
-{
-    eap_protent.init(0);
-}
-
-
-void proxy_packet(uint8_t *data, int len)
-{
-    eap_protent.input(0, data, len);
-}
diff --git a/fuzzing/orphans/pppd/eap_fuzz_Cproxy.h b/fuzzing/orphans/pppd/eap_fuzz_Cproxy.h
deleted file mode 100644
index 6846f5e..0000000
--- a/fuzzing/orphans/pppd/eap_fuzz_Cproxy.h
+++ /dev/null
@@ -1,56 +0,0 @@
-//from pppd.h, can't include it directly in the fuzzer because C -> C++ issues
-#define	EAP_HEADERLEN	4
-
-/* EAP message codes. */
-#define	EAP_REQUEST	1
-#define	EAP_RESPONSE	2
-#define	EAP_SUCCESS	3
-#define	EAP_FAILURE	4
-
-/* EAP types */
-#define	EAPT_IDENTITY		1
-#define	EAPT_NOTIFICATION	2
-#define	EAPT_NAK		3	/* (response only) */
-#define	EAPT_MD5CHAP		4
-#define	EAPT_OTP		5	/* One-Time Password; RFC 1938 */
-#define	EAPT_TOKEN		6	/* Generic Token Card */
-/* 7 and 8 are unassigned. */
-#define	EAPT_RSA		9	/* RSA Public Key Authentication */
-#define	EAPT_DSS		10	/* DSS Unilateral */
-#define	EAPT_KEA		11	/* KEA */
-#define	EAPT_KEA_VALIDATE	12	/* KEA-VALIDATE	*/
-#define	EAPT_TLS		13	/* EAP-TLS */
-#define	EAPT_DEFENDER		14	/* Defender Token (AXENT) */
-#define	EAPT_W2K		15	/* Windows 2000 EAP */
-#define	EAPT_ARCOT		16	/* Arcot Systems */
-#define	EAPT_CISCOWIRELESS	17	/* Cisco Wireless */
-#define	EAPT_NOKIACARD		18	/* Nokia IP smart card */
-#define	EAPT_SRP		19	/* Secure Remote Password */
-/* 20 is deprecated */
-
-/* EAP SRP-SHA1 Subtypes */
-#define	EAPSRP_CHALLENGE	1	/* Request 1 - Challenge */
-#define	EAPSRP_CKEY		1	/* Response 1 - Client Key */
-#define	EAPSRP_SKEY		2	/* Request 2 - Server Key */
-#define	EAPSRP_CVALIDATOR	2	/* Response 2 - Client Validator */
-#define	EAPSRP_SVALIDATOR	3	/* Request 3 - Server Validator */
-#define	EAPSRP_ACK		3	/* Response 3 - final ack */
-#define	EAPSRP_LWRECHALLENGE	4	/* Req/resp 4 - Lightweight rechal */
-
-#define	SRPVAL_EBIT	0x00000001	/* Use shared key for ECP */
-
-#define	SRP_PSEUDO_ID	"pseudo_"
-#define	SRP_PSEUDO_LEN	7
-
-#define MD5_SIGNATURE_SIZE	16
-#define MIN_CHALLENGE_LENGTH	16
-#define MAX_CHALLENGE_LENGTH	24
-
-void init();
-void proxy_packet(uint8_t *data, int len);
-
-//override output so we don't write to a broken fd
-void output (int unit, unsigned char *p, int len)
-{
-
-}
diff --git a/fuzzing/presubmit_test_fuzzers/Android.bp b/fuzzing/presubmit_test_fuzzers/Android.bp
new file mode 100644
index 0000000..b7f923a
--- /dev/null
+++ b/fuzzing/presubmit_test_fuzzers/Android.bp
@@ -0,0 +1,36 @@
+package {
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_fuzz {
+    name: "test_fuzzer_1",
+    srcs: [
+        "test_fuzzer_1.cpp",
+        "test_code.cpp"
+    ],
+    host_supported: true,
+    fuzz_config: {
+        description: "Test Fuzzer 1",
+        critical: false,
+        fuzz_on_haiku_device: true,
+        fuzz_on_haiku_host: true,
+        triage_assignee: "[email protected]",
+        use_for_presubmit: true,
+    },
+}
+cc_fuzz {
+    name: "test_fuzzer_2",
+    srcs: [
+        "test_fuzzer_2.cpp",
+        "test_code.cpp"
+    ],
+    host_supported: true,
+    fuzz_config: {
+        description: "Test Fuzzer 2",
+        critical: false,
+        fuzz_on_haiku_device: true,
+        fuzz_on_haiku_host: true,
+        triage_assignee: "[email protected]",
+        use_for_presubmit: true,
+    },
+}
\ No newline at end of file
diff --git a/fuzzing/presubmit_test_fuzzers/test_code.cpp b/fuzzing/presubmit_test_fuzzers/test_code.cpp
new file mode 100644
index 0000000..0548d6f
--- /dev/null
+++ b/fuzzing/presubmit_test_fuzzers/test_code.cpp
@@ -0,0 +1,14 @@
+#include <string.h>
+#include <stdlib.h>
+
+void BuggyCode1(const char *data) {
+  if (strcmp(data, "Hi!") == 0) {
+    abort();  // Boom!
+  }
+}
+
+void BuggyCode2(const char *data) {
+  if (strcmp(data, "Hey") == 0) {
+    abort();  // Boom!
+  }
+}
\ No newline at end of file
diff --git a/fuzzing/presubmit_test_fuzzers/test_fuzzer_1.cpp b/fuzzing/presubmit_test_fuzzers/test_fuzzer_1.cpp
new file mode 100644
index 0000000..19692f6
--- /dev/null
+++ b/fuzzing/presubmit_test_fuzzers/test_fuzzer_1.cpp
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stddef.h>
+#include <stdint.h>
+#include <string.h>
+#include <string>
+
+void BuggyCode1(const char *data);
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+  std::string null_terminated_string(reinterpret_cast<const char *>(data),
+                                     size);
+
+  BuggyCode1(null_terminated_string.c_str());
+  return 0;
+}
diff --git a/fuzzing/presubmit_test_fuzzers/test_fuzzer_2.cpp b/fuzzing/presubmit_test_fuzzers/test_fuzzer_2.cpp
new file mode 100644
index 0000000..2eb41e5
--- /dev/null
+++ b/fuzzing/presubmit_test_fuzzers/test_fuzzer_2.cpp
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stddef.h>
+#include <stdint.h>
+#include <string.h>
+#include <string>
+
+void BuggyCode2(const char *data);
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+  std::string null_terminated_string(reinterpret_cast<const char *>(data),
+                                     size);
+
+  BuggyCode2(null_terminated_string.c_str());
+  return 0;
+}
diff --git a/fuzzing/system_fuzzers/libcrypto_utils/libcrypto_utils_fuzzer.cpp b/fuzzing/system_fuzzers/libcrypto_utils/libcrypto_utils_fuzzer.cpp
index cc40a3b..ef1727b 100644
--- a/fuzzing/system_fuzzers/libcrypto_utils/libcrypto_utils_fuzzer.cpp
+++ b/fuzzing/system_fuzzers/libcrypto_utils/libcrypto_utils_fuzzer.cpp
@@ -20,6 +20,7 @@
 #include <memory>
 #include <openssl/obj_mac.h>
 #include <openssl/rsa.h>
+#include <cassert>
 #include <cstdio>
 #include <limits>
 
diff --git a/remote_provisioning/OWNERS b/remote_provisioning/OWNERS
index 8f4b43f..ef855cb 100644
--- a/remote_provisioning/OWNERS
+++ b/remote_provisioning/OWNERS
@@ -1,3 +1,5 @@
+# Bug component: 1084908
+
 [email protected]
 [email protected]
 [email protected]
diff --git a/remote_provisioning/hwtrust/Android.bp b/remote_provisioning/hwtrust/Android.bp
index 64b10e9..a42bc27 100644
--- a/remote_provisioning/hwtrust/Android.bp
+++ b/remote_provisioning/hwtrust/Android.bp
@@ -8,12 +8,22 @@
     srcs: ["src/lib.rs"],
     rustlibs: [
         "libanyhow",
-        "libthiserror",
+        "libbase64_rust",
         "libciborium",
         "libcoset",
         "libhex",
-        "libopenssl",
+        "libitertools",
+        "libserde_json",
+        "libthiserror",
     ],
+    target: {
+        host: {
+            rlibs: ["libopenssl_static"],
+        },
+        android: {
+            rustlibs: ["libopenssl"],
+        }
+    },
 }
 
 rust_library {
@@ -51,6 +61,16 @@
 rust_binary {
     name: "hwtrust",
     defaults: ["hwtrust_defaults"],
+    target: {
+        host: {
+            compile_multilib: "first",
+            dist: {
+                dir: "rkp/host",
+                targets: ["dist_files"],
+            },
+            static_executable: true,
+        },
+    }
 }
 
 rust_test {
diff --git a/remote_provisioning/hwtrust/Cargo.lock b/remote_provisioning/hwtrust/Cargo.lock
index 12d91ba..8a5769a 100644
--- a/remote_provisioning/hwtrust/Cargo.lock
+++ b/remote_provisioning/hwtrust/Cargo.lock
@@ -3,10 +3,28 @@
 version = 3
 
 [[package]]
+name = "addr2line"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97"
+dependencies = [
+ "gimli",
+]
+
+[[package]]
+name = "adler"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+
+[[package]]
 name = "anyhow"
 version = "1.0.68"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61"
+dependencies = [
+ "backtrace",
+]
 
 [[package]]
 name = "autocfg"
@@ -15,6 +33,27 @@
 checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
 
 [[package]]
+name = "backtrace"
+version = "0.3.67"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca"
+dependencies = [
+ "addr2line",
+ "cc",
+ "cfg-if",
+ "libc",
+ "miniz_oxide",
+ "object",
+ "rustc-demangle",
+]
+
+[[package]]
+name = "base64"
+version = "0.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a"
+
+[[package]]
 name = "bitflags"
 version = "1.3.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -34,9 +73,9 @@
 
 [[package]]
 name = "ciborium"
-version = "0.2.0"
+version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
+checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926"
 dependencies = [
  "ciborium-io",
  "ciborium-ll",
@@ -45,15 +84,15 @@
 
 [[package]]
 name = "ciborium-io"
-version = "0.2.0"
+version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
+checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656"
 
 [[package]]
 name = "ciborium-ll"
-version = "0.2.0"
+version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
+checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b"
 dependencies = [
  "ciborium-io",
  "half",
@@ -98,15 +137,21 @@
 
 [[package]]
 name = "coset"
-version = "0.3.3"
+version = "0.3.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "604cb30f7b6f4fee05b9ddf88cf6d3c0af0f98d9099e6f6a050e81e7a7cb938b"
+checksum = "99c214bbc5c8b4518856d79cae4d323feaa881ecf3e31b5af6572bb5313c11d5"
 dependencies = [
  "ciborium",
  "ciborium-io",
 ]
 
 [[package]]
+name = "either"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
+
+[[package]]
 name = "errno"
 version = "0.2.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -143,6 +188,12 @@
 checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
 
 [[package]]
+name = "gimli"
+version = "0.27.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4"
+
+[[package]]
 name = "half"
 version = "1.8.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -174,11 +225,14 @@
 version = "0.1.0"
 dependencies = [
  "anyhow",
+ "base64",
  "ciborium",
  "clap",
  "coset",
  "hex",
+ "itertools",
  "openssl",
+ "serde_json",
  "thiserror",
 ]
 
@@ -205,6 +259,21 @@
 ]
 
 [[package]]
+name = "itertools"
+version = "0.10.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
+
+[[package]]
 name = "libc"
 version = "0.2.139"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -217,6 +286,30 @@
 checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4"
 
 [[package]]
+name = "memchr"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+
+[[package]]
+name = "miniz_oxide"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa"
+dependencies = [
+ "adler",
+]
+
+[[package]]
+name = "object"
+version = "0.30.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
 name = "once_cell"
 version = "1.17.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -316,6 +409,12 @@
 ]
 
 [[package]]
+name = "rustc-demangle"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
+
+[[package]]
 name = "rustix"
 version = "0.36.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -330,6 +429,12 @@
 ]
 
 [[package]]
+name = "ryu"
+version = "1.0.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
+
+[[package]]
 name = "serde"
 version = "1.0.152"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -350,6 +455,17 @@
 ]
 
 [[package]]
+name = "serde_json"
+version = "1.0.96"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1"
+dependencies = [
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
 name = "strsim"
 version = "0.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/remote_provisioning/hwtrust/Cargo.toml b/remote_provisioning/hwtrust/Cargo.toml
index 7d01144..b304462 100644
--- a/remote_provisioning/hwtrust/Cargo.toml
+++ b/remote_provisioning/hwtrust/Cargo.toml
@@ -8,11 +8,14 @@
 edition = "2021"
 
 [dependencies]
-anyhow = "1.0"
+anyhow = { version = "1.0", features = ["backtrace"] }
 thiserror = "1.0"
 ciborium = "0.2.0"
 clap = { version = "4.1", features = ["derive"] }
-coset = "0.3.3"
+coset = { version = "0.3.5", features = ["std"] }
 hex = "0.4.3"
 openssl = "0.10.45"
+serde_json = "1.0.96"
+itertools = "0.10.5"
+base64 = "0.21.0"
 
diff --git a/remote_provisioning/hwtrust/README.md b/remote_provisioning/hwtrust/README.md
index 0ed2dcf..ed9fd47 100644
--- a/remote_provisioning/hwtrust/README.md
+++ b/remote_provisioning/hwtrust/README.md
@@ -28,7 +28,18 @@
 chain in a file, e.g. `chain.bin`, then call the tool.
 
 ```shell
-hwtrust verify-dice-chain chain.bin
+hwtrust dice-chain chain.bin
 ```
 
 The exit code is zero if the chain passed verification and non-zero otherwise.
+
+### Verifying Factory Certificate Signing Requests
+
+The `rkp_factory_extraction_tool` is used in the manufacturing process to capture
+a "CSR" that contains a full DICE chain and other device properties. The `factory-csr`
+subcommand parses and validates the output of `rkp_factory_extraction_tool`.
+
+
+```shell
+hwtrust factory-csr csr.json
+```
diff --git a/remote_provisioning/hwtrust/TEST_MAPPING b/remote_provisioning/hwtrust/TEST_MAPPING
index 608acb5..875094c 100644
--- a/remote_provisioning/hwtrust/TEST_MAPPING
+++ b/remote_provisioning/hwtrust/TEST_MAPPING
@@ -5,6 +5,27 @@
     },
     {
       "name": "ComposHostTestCases"
+    },
+    {
+      "name": "libdiced_sample_inputs.integration_test"
+    },
+    {
+      "name": "libdiced_sample_inputs_nostd.integration_test"
+    }
+  ],
+  "postsubmit": [
+    {
+      "name": "libclient_vm_csr.test"
+    }
+  ],
+  "avf-presubmit": [
+    {
+      "name": "rialto_test"
+    }
+  ],
+  "avf-postsubmit": [
+    {
+      "name": "VtsHalRemotelyProvisionedComponentTargetTest"
     }
   ]
 }
diff --git a/remote_provisioning/hwtrust/cxxbridge/hwtrust.cpp b/remote_provisioning/hwtrust/cxxbridge/hwtrust.cpp
index 9fd4e75..804b929 100644
--- a/remote_provisioning/hwtrust/cxxbridge/hwtrust.cpp
+++ b/remote_provisioning/hwtrust/cxxbridge/hwtrust.cpp
@@ -25,6 +25,12 @@
     case DiceChain::Kind::kVsr14:
       chainKind = rust::DiceChainKind::Vsr14;
       break;
+    case DiceChain::Kind::kVsr15:
+      chainKind = rust::DiceChainKind::Vsr15;
+      break;
+    case DiceChain::Kind::kVsr16:
+      chainKind = rust::DiceChainKind::Vsr16;
+      break;
   }
   auto res = rust::VerifyDiceChain({chain.data(), chain.size()}, chainKind);
   if (!res.error.empty()) {
@@ -47,4 +53,8 @@
   return result;
 }
 
+bool DiceChain::IsProper() const noexcept {
+  return rust::IsDiceChainProper(*chain_->chain);
+}
+
 } // namespace hwtrust
diff --git a/remote_provisioning/hwtrust/cxxbridge/include/hwtrust/hwtrust.h b/remote_provisioning/hwtrust/cxxbridge/include/hwtrust/hwtrust.h
index 548f10e..35c62b0 100644
--- a/remote_provisioning/hwtrust/cxxbridge/include/hwtrust/hwtrust.h
+++ b/remote_provisioning/hwtrust/cxxbridge/include/hwtrust/hwtrust.h
@@ -15,6 +15,8 @@
   enum class Kind {
     kVsr13,
     kVsr14,
+    kVsr15,
+    kVsr16,
   };
 
   static android::base::Result<DiceChain> Verify(const std::vector<uint8_t>& chain, DiceChain::Kind kind) noexcept;
@@ -24,6 +26,8 @@
 
   android::base::Result<std::vector<std::vector<uint8_t>>> CosePublicKeys() const noexcept;
 
+  bool IsProper() const noexcept;
+
 private:
   DiceChain(std::unique_ptr<BoxedDiceChain> chain, size_t size) noexcept;
 
diff --git a/remote_provisioning/hwtrust/cxxbridge/lib.rs b/remote_provisioning/hwtrust/cxxbridge/lib.rs
index 1f3827a..203f1d2 100644
--- a/remote_provisioning/hwtrust/cxxbridge/lib.rs
+++ b/remote_provisioning/hwtrust/cxxbridge/lib.rs
@@ -5,6 +5,7 @@
 use hwtrust::dice::ChainForm;
 use hwtrust::session::{Options, Session};
 
+#[allow(unsafe_op_in_unsafe_fn)]
 #[cxx::bridge(namespace = "hwtrust::rust")]
 mod ffi {
     /// The set of validation rules to apply.
@@ -13,6 +14,10 @@
         Vsr13,
         /// The DICE chain specified by VSR 14.
         Vsr14,
+        /// The DICE chain specified by VSR 15.
+        Vsr15,
+        /// The DICE chain specified by VSR 16.
+        Vsr16,
     }
 
     /// The result type used by [`verify_dice_chain()`]. The standard [`Result`] is currently only
@@ -35,6 +40,9 @@
 
         #[cxx_name = GetDiceChainPublicKey]
         fn get_dice_chain_public_key(chain: &DiceChain, n: usize) -> Vec<u8>;
+
+        #[cxx_name = IsDiceChainProper]
+        fn is_dice_chain_proper(chain: &DiceChain) -> bool;
     }
 }
 
@@ -46,6 +54,8 @@
         options: match kind {
             ffi::DiceChainKind::Vsr13 => Options::vsr13(),
             ffi::DiceChainKind::Vsr14 => Options::vsr14(),
+            ffi::DiceChainKind::Vsr15 => Options::vsr15(),
+            ffi::DiceChainKind::Vsr16 => Options::vsr16(),
             _ => {
                 return ffi::VerifyDiceChainResult {
                     error: "invalid chain kind".to_string(),
@@ -85,3 +95,14 @@
     }
     Vec::new()
 }
+
+fn is_dice_chain_proper(chain: &DiceChain) -> bool {
+    if let DiceChain(Some(chain)) = chain {
+        match chain {
+            ChainForm::Proper(_) => true,
+            ChainForm::Degenerate(_) => false,
+        }
+    } else {
+        false
+    }
+}
diff --git a/remote_provisioning/hwtrust/src/cbor.rs b/remote_provisioning/hwtrust/src/cbor.rs
index 987d62c..fe3fa88 100644
--- a/remote_provisioning/hwtrust/src/cbor.rs
+++ b/remote_provisioning/hwtrust/src/cbor.rs
@@ -1,15 +1,13 @@
 //! Handling for data represented as CBOR. Cryptographic objects are encoded following COSE.
 
 mod dice;
+mod field_value;
 mod publickey;
+pub(crate) mod rkp;
 
 use ciborium::{de::from_reader, value::Value};
 use std::io::Read;
 
-fn cose_error(ce: coset::CoseError) -> anyhow::Error {
-    anyhow::anyhow!("CoseError: {:?}", ce)
-}
-
 type CiboriumError = ciborium::de::Error<std::io::Error>;
 
 /// Decodes the provided binary CBOR-encoded value and returns a
diff --git a/remote_provisioning/hwtrust/src/cbor/dice.rs b/remote_provisioning/hwtrust/src/cbor/dice.rs
index e35f7af..59c82ce 100644
--- a/remote_provisioning/hwtrust/src/cbor/dice.rs
+++ b/remote_provisioning/hwtrust/src/cbor/dice.rs
@@ -1,7 +1,5 @@
 //! Parsing and encoding DICE chain from and to CBOR.
 
-use crate::cbor::cose_error;
-use crate::session::{KeyOpsType, Session};
 use anyhow::Result;
 use ciborium::value::Value;
 use coset::iana::{self, EnumI64};
@@ -9,22 +7,32 @@
 
 mod chain;
 mod entry;
-mod field_value;
+mod profile;
+
+/// Type allowed for the COSE_Key object key_ops field in the DICE chain.
+#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
+pub(super) enum KeyOpsType {
+    /// The key_ops field must be an array as specified in the RFC 9052.
+    #[default]
+    Array,
+    /// The key_ops field can be either a single int or an array.
+    IntOrArray,
+}
 
 /// Convert a `Value` into a `CoseKey`, respecting the `Session` options that might alter the
 /// validation rules for `CoseKey`s in the DICE chain.
-fn cose_key_from_cbor_value(session: &Session, mut value: Value) -> Result<CoseKey> {
-    if session.options.dice_chain_key_ops_type == KeyOpsType::IntOrArray {
+fn cose_key_from_cbor_value(mut value: Value, key_ops_type: KeyOpsType) -> Result<CoseKey> {
+    if key_ops_type == KeyOpsType::IntOrArray {
         // Convert any integer key_ops into an array of the same integer so that the coset library
         // can handle it.
         if let Value::Map(ref mut entries) = value {
             for (label, value) in entries.iter_mut() {
-                let label = Label::from_cbor_value(label.clone()).map_err(cose_error)?;
+                let label = Label::from_cbor_value(label.clone())?;
                 if label == Label::Int(iana::KeyParameter::KeyOps.to_i64()) && value.is_integer() {
                     *value = Value::Array(vec![value.clone()]);
                 }
             }
         }
     }
-    CoseKey::from_cbor_value(value).map_err(cose_error)
+    Ok(CoseKey::from_cbor_value(value)?)
 }
diff --git a/remote_provisioning/hwtrust/src/cbor/dice/chain.rs b/remote_provisioning/hwtrust/src/cbor/dice/chain.rs
index 1436f65..73ca7d3 100644
--- a/remote_provisioning/hwtrust/src/cbor/dice/chain.rs
+++ b/remote_provisioning/hwtrust/src/cbor/dice/chain.rs
@@ -1,10 +1,10 @@
-use super::cose_key_from_cbor_value;
-use super::entry::Entry;
+use super::entry::{ConfigFormat, Entry};
+use super::{cose_key_from_cbor_value, KeyOpsType};
 use crate::cbor::dice::entry::PayloadFields;
 use crate::cbor::value_from_bytes;
-use crate::dice::{Chain, ChainForm, DegenerateChain, Payload};
+use crate::dice::{Chain, ChainForm, DegenerateChain, Payload, ProfileVersion};
 use crate::publickey::PublicKey;
-use crate::session::{ConfigFormat, Session};
+use crate::session::Session;
 use anyhow::{bail, Context, Result};
 use ciborium::value::Value;
 
@@ -12,7 +12,15 @@
     /// Decode and validate a CBOR-encoded DICE chain. The form of chain is inferred from the
     /// structure of the data.
     pub fn from_cbor(session: &Session, bytes: &[u8]) -> Result<Self> {
-        let (root_public_key, it) = root_and_entries_from_cbor(session, bytes)?;
+        Self::from_value(
+            session,
+            value_from_bytes(bytes).context("Unable to decode top-level CBOR")?,
+        )
+    }
+
+    /// Similar to `from_cbor`, except it accepts an already-parsed Value instead of raw CBOR.
+    pub fn from_value(session: &Session, value: Value) -> Result<Self> {
+        let (root_public_key, it) = root_and_entries_from_value(session, value)?;
 
         if it.len() == 1 {
             // The chain could be degenerate so interpret it as such until it's seen to be more
@@ -42,7 +50,16 @@
     /// extracted. This does not perform any semantic validation of the data in the
     /// certificates such as the Authority, Config and Code hashes.
     pub fn from_cbor(session: &Session, bytes: &[u8]) -> Result<Self> {
-        let (root_public_key, it) = root_and_entries_from_cbor(session, bytes)?;
+        Self::from_value(
+            session,
+            value_from_bytes(bytes).context("Unable to decode top-level CBOR")?,
+        )
+    }
+
+    /// Decode and validate a Chain from a parsed CBOR Value. This is functionally similar
+    /// to `Self::from_cbor`, except that it accepts an already-parsed CBOR Value.
+    pub fn from_value(session: &Session, value: Value) -> Result<Self> {
+        let (root_public_key, it) = root_and_entries_from_value(session, value)?;
         Self::from_root_and_entries(session, root_public_key, it)
     }
 
@@ -56,10 +73,13 @@
         for (n, value) in values.enumerate() {
             let entry = Entry::verify_cbor_value(value, previous_public_key)
                 .with_context(|| format!("Invalid entry at index {}", n))?;
-            let config_format = if n == 0 {
-                session.options.first_dice_chain_cert_config_format
+            let config_format = if n == 0
+                && session.options.dice_profile_range.contains(ProfileVersion::Android14)
+            {
+                // Context: b/261647022
+                ConfigFormat::AndroidOrIgnored
             } else {
-                ConfigFormat::Android
+                ConfigFormat::default()
             };
             let payload = Payload::from_cbor(session, entry.payload(), config_format)
                 .with_context(|| format!("Invalid payload at index {}", n))?;
@@ -71,17 +91,22 @@
     }
 }
 
-fn root_and_entries_from_cbor(
+fn root_and_entries_from_value(
     session: &Session,
-    bytes: &[u8],
+    value: Value,
 ) -> Result<(PublicKey, std::vec::IntoIter<Value>)> {
-    let value = value_from_bytes(bytes).context("Unable to decode top-level CBOR")?;
     let array = match value {
         Value::Array(array) if array.len() >= 2 => array,
         _ => bail!("Expected an array of at least length 2, found: {:?}", value),
     };
     let mut it = array.into_iter();
-    let root_public_key = cose_key_from_cbor_value(session, it.next().unwrap())
+    let key_ops_type = if session.options.dice_profile_range.contains(ProfileVersion::Android13) {
+        // Context: b/262599829#comment65
+        KeyOpsType::IntOrArray
+    } else {
+        KeyOpsType::default()
+    };
+    let root_public_key = cose_key_from_cbor_value(it.next().unwrap(), key_ops_type)
         .context("Error parsing root public key CBOR")?;
     let root_public_key = PublicKey::from_cose_key(&root_public_key).context("Invalid root key")?;
     Ok((root_public_key, it))
@@ -91,12 +116,13 @@
 mod tests {
     use super::*;
     use crate::cbor::serialize;
-    use crate::dice::{DiceMode, PayloadBuilder};
+    use crate::dice::{ConfigDesc, DiceMode, PayloadBuilder};
     use crate::publickey::testkeys::{PrivateKey, ED25519_KEY_PEM, P256_KEY_PEM, P384_KEY_PEM};
-    use crate::session::{KeyOpsType, Options};
+    use crate::session::Options;
     use ciborium::cbor;
     use coset::iana::{self, EnumI64};
     use coset::AsCborValue;
+    use openssl::sha::sha512;
     use std::fs;
 
     #[test]
@@ -124,6 +150,15 @@
     }
 
     #[test]
+    fn check_chain_valid_ed25519_value() {
+        let chain = fs::read("testdata/dice/valid_ed25519.chain").unwrap();
+        let chain = value_from_bytes(&chain).unwrap();
+        let session = Session { options: Options::default() };
+        let chain = Chain::from_value(&session, chain).unwrap();
+        assert_eq!(chain.payloads().len(), 8);
+    }
+
+    #[test]
     fn check_chain_valid_p256() {
         let chain = fs::read("testdata/dice/valid_p256.chain").unwrap();
         let session = Session { options: Options::default() };
@@ -132,6 +167,21 @@
     }
 
     #[test]
+    fn check_chain_valid_p256_value() {
+        let chain = fs::read("testdata/dice/valid_p256.chain").unwrap();
+        let chain = value_from_bytes(&chain).unwrap();
+        let session = Session { options: Options::default() };
+        let chain = Chain::from_value(&session, chain).unwrap();
+        assert_eq!(chain.payloads().len(), 3);
+    }
+
+    #[test]
+    fn check_chain_wrong_value_type() {
+        let session = Session { options: Options::default() };
+        Chain::from_value(&session, Value::Float(1.234)).unwrap_err();
+    }
+
+    #[test]
     fn check_chain_bad_p256() {
         let chain = fs::read("testdata/dice/bad_p256.chain").unwrap();
         let session = Session { options: Options::default() };
@@ -199,12 +249,7 @@
         let cbor = serialize(Value::Array(chain));
         let session = Session { options: Options::default() };
         Chain::from_cbor(&session, &cbor).unwrap_err();
-        let session = Session {
-            options: Options {
-                dice_chain_key_ops_type: KeyOpsType::IntOrArray,
-                ..Options::default()
-            },
-        };
+        let session = Session { options: Options::vsr13() };
         Chain::from_cbor(&session, &cbor).unwrap();
     }
 
@@ -239,11 +284,15 @@
     }
 
     fn valid_payload(index: usize, key: PublicKey) -> Payload {
+        let config_desc = ConfigDesc::default();
+        let config_hash = sha512(&serialize(config_desc.to_cbor_value())).to_vec();
         PayloadBuilder::with_subject_public_key(key)
             .issuer(format!("item {}", index))
             .subject(format!("item {}", index + 1))
             .mode(DiceMode::Normal)
             .code_hash(vec![6; 64])
+            .config_desc(config_desc)
+            .config_hash(Some(config_hash))
             .authority_hash(vec![7; 64])
             .build()
             .unwrap()
diff --git a/remote_provisioning/hwtrust/src/cbor/dice/entry.rs b/remote_provisioning/hwtrust/src/cbor/dice/entry.rs
index 4170de5..1091728 100644
--- a/remote_provisioning/hwtrust/src/cbor/dice/entry.rs
+++ b/remote_provisioning/hwtrust/src/cbor/dice/entry.rs
@@ -1,16 +1,19 @@
 use super::cose_key_from_cbor_value;
-use super::field_value::FieldValue;
-use crate::cbor::{cose_error, value_from_bytes};
+use super::profile::{ComponentVersionType, ModeType, Profile};
+use crate::cbor::{field_value::FieldValue, value_from_bytes};
 use crate::dice::{
     ComponentVersion, ConfigDesc, ConfigDescBuilder, DiceMode, Payload, PayloadBuilder,
+    ProfileVersion,
 };
 use crate::publickey::PublicKey;
-use crate::session::{ComponentVersionType, ConfigFormat, ModeType, Session};
-use anyhow::{anyhow, bail, Context, Result};
+use crate::session::Session;
+use anyhow::{anyhow, bail, ensure, Context, Result};
 use ciborium::value::Value;
 use coset::{AsCborValue, CoseSign1};
+use openssl::sha::{sha256, sha384, sha512};
 use std::collections::hash_map::Entry::{Occupied, Vacant};
 use std::collections::HashMap;
+use std::str::FromStr;
 
 const ISS: i64 = 1;
 const SUB: i64 = 2;
@@ -31,6 +34,7 @@
 const COMPONENT_VERSION: i64 = -70003;
 const RESETTABLE: i64 = -70004;
 const SECURITY_VERSION: i64 = -70005;
+const RKP_VM_MARKER: i64 = -70006;
 
 pub(super) struct Entry {
     payload: Vec<u8>,
@@ -39,9 +43,8 @@
 impl Entry {
     pub(super) fn verify_cbor_value(cbor: Value, key: &PublicKey) -> Result<Self> {
         let sign1 = CoseSign1::from_cbor_value(cbor)
-            .map_err(cose_error)
             .context("Given CBOR does not appear to be a COSE_sign1")?;
-        key.verify_cose_sign1(&sign1).context("cannot verify COSE_sign1")?;
+        key.verify_cose_sign1(&sign1, b"").context("cannot verify COSE_sign1")?;
         match sign1.payload {
             None => bail!("Missing payload"),
             Some(payload) => Ok(Self { payload }),
@@ -53,13 +56,32 @@
     }
 }
 
+#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
+pub(super) enum ConfigFormat {
+    /// The configuration descriptor format specified by Android.
+    #[default]
+    Android,
+    /// The configuration descriptor format is either that specified by Android or is ignored.
+    AndroidOrIgnored,
+}
+
 impl Payload {
     pub(super) fn from_cbor(
         session: &Session,
         bytes: &[u8],
         config_format: ConfigFormat,
     ) -> Result<Self> {
-        let f = PayloadFields::from_cbor(session, bytes, config_format)?;
+        let entries = cbor_map_from_slice(bytes)?;
+        let profile_version = PayloadFields::extract_profile_version(session, &entries)?;
+        Self::from_entries(&profile_version.into(), entries, config_format)
+    }
+
+    fn from_entries(
+        profile: &Profile,
+        entries: Vec<(Value, Value)>,
+        config_format: ConfigFormat,
+    ) -> Result<Self> {
+        let f = PayloadFields::from_entries(profile, entries, config_format)?;
         PayloadBuilder::with_subject_public_key(f.subject_public_key)
             .issuer(f.issuer)
             .subject(f.subject)
@@ -94,6 +116,47 @@
         bytes: &[u8],
         config_format: ConfigFormat,
     ) -> Result<Self> {
+        let entries = cbor_map_from_slice(bytes)?;
+        let profile_version = Self::extract_profile_version(session, &entries)?;
+        Self::from_entries(&profile_version.into(), entries, config_format)
+    }
+
+    fn extract_profile_version(
+        session: &Session,
+        entries: &[(Value, Value)],
+    ) -> Result<ProfileVersion> {
+        let mut profile_name = FieldValue::new("profile name");
+        for (key, value) in entries.iter() {
+            if key == &Value::from(PROFILE_NAME) {
+                profile_name.set_once(value.clone())?;
+            }
+        }
+
+        let profile_version = match profile_name.into_optional_string()? {
+            None => {
+                let version = session.options.dice_profile_range.start();
+                ensure!(version <= ProfileVersion::Android14, "profile name is required");
+                version
+            }
+            Some(profile_name) => {
+                ProfileVersion::from_str(&profile_name).with_context(|| profile_name.clone())?
+            }
+        };
+        ensure!(
+            session.options.dice_profile_range.contains(profile_version),
+            "profile version \"{profile_version}\" is less than \"{}\" or greater than \"{}\"",
+            session.options.dice_profile_range.start(),
+            session.options.dice_profile_range.end(),
+        );
+
+        Ok(profile_version)
+    }
+
+    fn from_entries(
+        profile: &Profile,
+        entries: Vec<(Value, Value)>,
+        config_format: ConfigFormat,
+    ) -> Result<Self> {
         let mut issuer = FieldValue::new("issuer");
         let mut subject = FieldValue::new("subject");
         let mut subject_public_key = FieldValue::new("subject public key");
@@ -107,7 +170,6 @@
         let mut key_usage = FieldValue::new("key usage");
         let mut profile_name = FieldValue::new("profile name");
 
-        let entries = cbor_map_from_slice(bytes)?;
         for (key, value) in entries.into_iter() {
             if let Some(Ok(key)) = key.as_integer().map(TryInto::try_into) {
                 let field = match key {
@@ -125,43 +187,36 @@
                     PROFILE_NAME => &mut profile_name,
                     _ => bail!("Unknown key {}", key),
                 };
-                match field.get() {
-                    Some(existing) => bail!(
-                        "duplicate values for {}: {:?} and {:?}",
-                        field.name(),
-                        existing,
-                        value
-                    ),
-                    None => field.set(value),
-                }
+                field.set_once(value)?
             } else {
                 bail!("Invalid key: {:?}", key);
             }
         }
 
-        validate_key_usage(session, key_usage)?;
+        validate_key_usage(profile, key_usage)?;
+        let (config_desc, config_hash) =
+            validate_config(profile, config_desc, config_hash, config_format).context("config")?;
 
         Ok(Self {
-            issuer: issuer.into_string().context("issuer")?,
-            subject: subject.into_string().context("subject")?,
-            subject_public_key: validate_subject_public_key(session, subject_public_key)?,
-            mode: validate_mode(session, mode).context("mode")?,
-            code_desc: code_desc.into_optional_bytes().context("code descriptor")?,
-            code_hash: code_hash.into_optional_bytes().context("code hash")?,
-            config_desc: validate_config_desc(session, config_desc, config_format)
-                .context("config descriptor")?,
-            config_hash: config_hash.into_optional_bytes().context("config hash")?,
-            authority_desc: authority_desc.into_optional_bytes().context("authority descriptor")?,
-            authority_hash: authority_hash.into_optional_bytes().context("authority hash")?,
+            issuer: issuer.into_string()?,
+            subject: subject.into_string()?,
+            subject_public_key: validate_subject_public_key(profile, subject_public_key)?,
+            mode: validate_mode(profile, mode)?,
+            code_desc: code_desc.into_optional_bytes()?,
+            code_hash: code_hash.into_optional_bytes()?,
+            config_desc,
+            config_hash,
+            authority_desc: authority_desc.into_optional_bytes()?,
+            authority_hash: authority_hash.into_optional_bytes()?,
         })
     }
 }
 
-fn validate_key_usage(session: &Session, key_usage: FieldValue) -> Result<()> {
+fn validate_key_usage(profile: &Profile, key_usage: FieldValue) -> Result<()> {
     let key_usage = key_usage.into_bytes().context("key usage")?;
     let key_cert_sign = 1 << 5;
     if key_usage.len() > 1
-        && session.options.dice_chain_allow_big_endian_key_usage
+        && profile.allow_big_endian_key_usage
         && key_usage[key_usage.len() - 1] == key_cert_sign
         && key_usage.iter().take(key_usage.len() - 1).all(|&x| x == 0)
     {
@@ -177,19 +232,19 @@
 }
 
 fn validate_subject_public_key(
-    session: &Session,
+    profile: &Profile,
     subject_public_key: FieldValue,
 ) -> Result<PublicKey> {
-    let subject_public_key = subject_public_key.into_bytes().context("Subject public")?;
+    let subject_public_key = subject_public_key.into_bytes()?;
     let subject_public_key = value_from_bytes(&subject_public_key).context("decode CBOR")?;
-    let subject_public_key = cose_key_from_cbor_value(session, subject_public_key)
+    let subject_public_key = cose_key_from_cbor_value(subject_public_key, profile.key_ops_type)
         .context("parsing subject public key")?;
     PublicKey::from_cose_key(&subject_public_key)
         .context("parsing subject public key from COSE_key")
 }
 
-fn validate_mode(session: &Session, mode: FieldValue) -> Result<Option<DiceMode>> {
-    Ok(if !mode.is_bytes() && session.options.dice_chain_mode_type == ModeType::IntOrBytes {
+fn validate_mode(profile: &Profile, mode: FieldValue) -> Result<Option<DiceMode>> {
+    Ok(if !mode.is_bytes() && profile.mode_type == ModeType::IntOrBytes {
         mode.into_optional_i64()?
     } else {
         mode.into_optional_bytes()?
@@ -209,23 +264,32 @@
     }))
 }
 
-fn validate_config_desc(
-    session: &Session,
+fn validate_config(
+    profile: &Profile,
     config_desc: FieldValue,
+    config_hash: FieldValue,
     config_format: ConfigFormat,
-) -> Result<Option<ConfigDesc>> {
+) -> Result<(Option<ConfigDesc>, Option<Vec<u8>>)> {
     let config_desc = config_desc.into_optional_bytes()?;
-    config_desc
-        .map(|config_desc| {
-            let config =
-                config_desc_from_slice(session, &config_desc).context("parsing config descriptor");
-            if config.is_err() && config_format == ConfigFormat::Permissive {
-                Ok(ConfigDesc::default())
-            } else {
-                config
-            }
-        })
-        .transpose()
+    let config_hash = config_hash.into_optional_bytes()?;
+    if let Some(config_desc) = config_desc {
+        let config = config_desc_from_slice(profile, &config_desc).context("parsing descriptor");
+        if config.is_err() && config_format == ConfigFormat::AndroidOrIgnored {
+            return Ok((Some(ConfigDesc::default()), config_hash));
+        }
+        if !profile.config_hash_unverified {
+            let Some(ref hash) = config_hash else { bail!("hash required") };
+            match hash.len() {
+                32 => ensure!(hash == &sha256(&config_desc)),
+                48 => ensure!(hash == &sha384(&config_desc)),
+                64 => ensure!(hash == &sha512(&config_desc)),
+                _ => bail!("unsupported hash size"),
+            };
+        }
+        Ok((Some(config?), config_hash))
+    } else {
+        Ok((None, config_hash))
+    }
 }
 
 fn cbor_map_from_slice(bytes: &[u8]) -> Result<Vec<(Value, Value)>> {
@@ -237,13 +301,14 @@
     Ok(entries)
 }
 
-fn config_desc_from_slice(session: &Session, bytes: &[u8]) -> Result<ConfigDesc> {
+fn config_desc_from_slice(profile: &Profile, bytes: &[u8]) -> Result<ConfigDesc> {
     let entries = cbor_map_from_slice(bytes)?;
 
     let mut component_name = FieldValue::new("component name");
     let mut component_version = FieldValue::new("component version");
     let mut resettable = FieldValue::new("resettable");
     let mut security_version = FieldValue::new("security version");
+    let mut rkp_vm_marker = FieldValue::new("rkp vm marker");
     let mut extensions = HashMap::new();
 
     for (key, value) in entries.into_iter() {
@@ -253,6 +318,7 @@
                 COMPONENT_VERSION => &mut component_version,
                 RESETTABLE => &mut resettable,
                 SECURITY_VERSION => &mut security_version,
+                RKP_VM_MARKER => &mut rkp_vm_marker,
                 key if (CONFIG_DESC_RESERVED_MIN..=CONFIG_DESC_RESERVED_MAX).contains(&key) => {
                     bail!("Reserved key {}", key);
                 }
@@ -266,32 +332,38 @@
                     }
                 },
             };
-            match field.get() {
-                Some(existing) => {
-                    bail!("duplicate values for {}: {:?} and {:?}", field.name(), existing, value)
-                }
-                None => field.set(value),
-            }
+            field.set_once(value)?
         } else {
             bail!("Invalid key: {:?}", key);
         }
     }
 
+    let extensions =
+        extensions.into_iter().map(|(k, v)| (k.to_string(), format!("{v:?}"))).collect();
+
+    let security_version = if profile.security_version_optional {
+        security_version.into_optional_u64()
+    } else {
+        security_version.into_u64().map(Some)
+    }
+    .context("Security version")?;
+
     Ok(ConfigDescBuilder::new()
         .component_name(component_name.into_optional_string().context("Component name")?)
         .component_version(
-            validate_version(session, component_version).context("Component version")?,
+            validate_version(profile, component_version).context("Component version")?,
         )
         .resettable(resettable.is_null().context("Resettable")?)
-        .security_version(security_version.into_optional_u64().context("Security version")?)
+        .security_version(security_version)
+        .rkp_vm_marker(rkp_vm_marker.is_null().context("RKP VM marker")?)
+        .extensions(extensions)
         .build())
 }
 
-fn validate_version(session: &Session, field: FieldValue) -> Result<Option<ComponentVersion>> {
+fn validate_version(profile: &Profile, field: FieldValue) -> Result<Option<ComponentVersion>> {
     Ok(
         if !field.is_integer()
-            && session.options.dice_chain_component_version_type
-                == ComponentVersionType::IntOrString
+            && profile.component_version_type == ComponentVersionType::IntOrString
         {
             field.into_optional_string()?.map(ComponentVersion::String)
         } else {
@@ -303,9 +375,10 @@
 #[cfg(test)]
 mod tests {
     use super::*;
+    use crate::cbor::dice::KeyOpsType;
     use crate::cbor::serialize;
     use crate::publickey::testkeys::{PrivateKey, ED25519_KEY_PEM};
-    use crate::session::{KeyOpsType, Options};
+    use crate::session::{DiceProfileRange, Options};
     use ciborium::cbor;
     use coset::iana::{self, EnumI64};
     use coset::CborSerializable;
@@ -323,9 +396,8 @@
 
     impl Payload {
         pub(in super::super) fn to_cbor_value(&self) -> Result<Value> {
-            let subject_public_key =
-                self.subject_public_key().to_cose_key()?.to_vec().map_err(cose_error)?;
-            let config_desc = serialize(encode_config_desc(self.config_desc()));
+            let subject_public_key = self.subject_public_key().to_cose_key()?.to_vec()?;
+            let config_desc = serialize(self.config_desc().to_cbor_value());
             let mut map = vec![
                 (Value::from(ISS), Value::from(self.issuer())),
                 (Value::from(SUB), Value::from(self.subject())),
@@ -349,6 +421,34 @@
         }
     }
 
+    impl ConfigDesc {
+        pub(in super::super) fn to_cbor_value(&self) -> Value {
+            let mut map = Vec::new();
+            if let Some(component_name) = self.component_name() {
+                map.push((Value::from(COMPONENT_NAME), Value::from(component_name)));
+            }
+            if let Some(component_version) = self.component_version() {
+                map.push((
+                    Value::from(COMPONENT_VERSION),
+                    match component_version {
+                        ComponentVersion::Integer(n) => Value::from(*n),
+                        ComponentVersion::String(s) => Value::from(s.as_str()),
+                    },
+                ))
+            }
+            if self.resettable() {
+                map.push((Value::from(RESETTABLE), Value::Null));
+            }
+            if let Some(security_version) = self.security_version() {
+                map.push((Value::from(SECURITY_VERSION), Value::from(security_version)));
+            }
+            if self.rkp_vm_marker() {
+                map.push((Value::from(RKP_VM_MARKER), Value::Null));
+            }
+            Value::Map(map)
+        }
+    }
+
     fn encode_mode(mode: DiceMode) -> Value {
         let mode = match mode {
             DiceMode::NotConfigured => 0,
@@ -359,31 +459,34 @@
         Value::Bytes(vec![mode])
     }
 
-    fn encode_config_desc(config_desc: &ConfigDesc) -> Value {
-        let mut map = Vec::new();
-        if let Some(component_name) = config_desc.component_name() {
-            map.push((Value::from(COMPONENT_NAME), Value::from(component_name)));
-        }
-        if let Some(component_version) = config_desc.component_version() {
-            map.push((
-                Value::from(COMPONENT_VERSION),
-                match component_version {
-                    ComponentVersion::Integer(n) => Value::from(*n),
-                    ComponentVersion::String(s) => Value::from(s.as_str()),
-                },
-            ))
-        }
-        if config_desc.resettable() {
-            map.push((Value::from(RESETTABLE), Value::Null));
-        }
-        if let Some(security_version) = config_desc.security_version() {
-            map.push((Value::from(SECURITY_VERSION), Value::from(security_version)));
-        }
-        Value::Map(map)
+    #[test]
+    fn valid_payload_sha256() {
+        let config_desc = serialize(cbor!({COMPONENT_NAME => "sha256 test"}).unwrap());
+        let config_hash = sha256(&config_desc).to_vec();
+        let mut fields = valid_payload_fields();
+        fields.insert(CODE_HASH, Value::Bytes(vec![1; 32]));
+        fields.insert(CONFIG_DESC, Value::Bytes(config_desc));
+        fields.insert(CONFIG_HASH, Value::Bytes(config_hash));
+        fields.insert(AUTHORITY_HASH, Value::Bytes(vec![2; 32]));
+        let session = Session { options: Options::default() };
+        Payload::from_cbor(&session, &serialize_fields(fields), ConfigFormat::Android).unwrap();
     }
 
     #[test]
-    fn valid_payload() {
+    fn valid_payload_sha384() {
+        let config_desc = serialize(cbor!({COMPONENT_NAME => "sha384 test"}).unwrap());
+        let config_hash = sha384(&config_desc).to_vec();
+        let mut fields = valid_payload_fields();
+        fields.insert(CODE_HASH, Value::Bytes(vec![1; 48]));
+        fields.insert(CONFIG_DESC, Value::Bytes(config_desc));
+        fields.insert(CONFIG_HASH, Value::Bytes(config_hash));
+        fields.insert(AUTHORITY_HASH, Value::Bytes(vec![2; 48]));
+        let session = Session { options: Options::default() };
+        Payload::from_cbor(&session, &serialize_fields(fields), ConfigFormat::Android).unwrap();
+    }
+
+    #[test]
+    fn valid_payload_sha512() {
         let fields = valid_payload_fields();
         let session = Session { options: Options::default() };
         Payload::from_cbor(&session, &serialize_fields(fields), ConfigFormat::Android).unwrap();
@@ -483,13 +586,11 @@
     fn mode_int_debug() {
         let mut fields = valid_payload_fields();
         fields.insert(MODE, Value::from(2));
-        let cbor = serialize_fields(fields);
-        let session = Session { options: Options::default() };
-        Payload::from_cbor(&session, &cbor, ConfigFormat::Android).unwrap_err();
-        let session = Session {
-            options: Options { dice_chain_mode_type: ModeType::IntOrBytes, ..Options::default() },
-        };
-        let payload = Payload::from_cbor(&session, &cbor, ConfigFormat::Android).unwrap();
+        let entries = encode_fields(fields);
+        Payload::from_entries(&Profile::default(), entries.clone(), ConfigFormat::Android)
+            .unwrap_err();
+        let profile = Profile { mode_type: ModeType::IntOrBytes, ..Profile::default() };
+        let payload = Payload::from_entries(&profile, entries, ConfigFormat::Android).unwrap();
         assert_eq!(payload.mode(), DiceMode::Debug);
     }
 
@@ -523,59 +624,53 @@
     fn key_usage_big_endian() {
         let mut fields = valid_payload_fields();
         fields.insert(KEY_USAGE, Value::Bytes(vec![0x00, 0x20]));
-        let cbor = serialize_fields(fields);
-        let session = Session { options: Options::default() };
-        Payload::from_cbor(&session, &cbor, ConfigFormat::Android).unwrap_err();
-        let session = Session {
-            options: Options { dice_chain_allow_big_endian_key_usage: true, ..Options::default() },
-        };
-        Payload::from_cbor(&session, &cbor, ConfigFormat::Android).unwrap();
+        let entries = encode_fields(fields);
+        Payload::from_entries(&Profile::default(), entries.clone(), ConfigFormat::Android)
+            .unwrap_err();
+        let profile = Profile { allow_big_endian_key_usage: true, ..Profile::default() };
+        Payload::from_entries(&profile, entries, ConfigFormat::Android).unwrap();
     }
 
     #[test]
     fn key_usage_big_endian_invalid() {
         let mut fields = valid_payload_fields();
         fields.insert(KEY_USAGE, Value::Bytes(vec![0x00, 0xfe, 0x20]));
-        let cbor = serialize_fields(fields);
-        let session = Session { options: Options::default() };
-        Payload::from_cbor(&session, &cbor, ConfigFormat::Android).unwrap_err();
-        let session = Session {
-            options: Options { dice_chain_allow_big_endian_key_usage: true, ..Options::default() },
-        };
-        Payload::from_cbor(&session, &cbor, ConfigFormat::Android).unwrap_err();
+        let entries = encode_fields(fields);
+        Payload::from_entries(&Profile::default(), entries.clone(), ConfigFormat::Android)
+            .unwrap_err();
+        let profile = Profile { allow_big_endian_key_usage: true, ..Profile::default() };
+        Payload::from_entries(&profile, entries, ConfigFormat::Android).unwrap_err();
     }
 
     #[test]
     fn key_usage_invalid() {
         let mut fields = valid_payload_fields();
         fields.insert(KEY_USAGE, Value::Bytes(vec![0x00, 0x10]));
-        let cbor = serialize_fields(fields);
-        let session = Session { options: Options::default() };
-        Payload::from_cbor(&session, &cbor, ConfigFormat::Android).unwrap_err();
-        let session = Session {
-            options: Options { dice_chain_allow_big_endian_key_usage: true, ..Options::default() },
-        };
-        Payload::from_cbor(&session, &cbor, ConfigFormat::Android).unwrap_err();
+        let entries = encode_fields(fields);
+        Payload::from_entries(&Profile::default(), entries.clone(), ConfigFormat::Android)
+            .unwrap_err();
+        let profile = Profile { allow_big_endian_key_usage: true, ..Profile::default() };
+        Payload::from_entries(&profile, entries, ConfigFormat::Android).unwrap_err();
     }
 
     #[test]
     fn key_usage_empty() {
         let mut fields = valid_payload_fields();
         fields.insert(KEY_USAGE, Value::Bytes(vec![]));
-        let cbor = serialize_fields(fields);
-        let session = Session { options: Options::default() };
-        Payload::from_cbor(&session, &cbor, ConfigFormat::Android).unwrap_err();
-        let session = Session {
-            options: Options { dice_chain_allow_big_endian_key_usage: true, ..Options::default() },
-        };
-        Payload::from_cbor(&session, &cbor, ConfigFormat::Android).unwrap_err();
+        let entries = encode_fields(fields);
+        Payload::from_entries(&Profile::default(), entries.clone(), ConfigFormat::Android)
+            .unwrap_err();
+        let profile = Profile { allow_big_endian_key_usage: true, ..Profile::default() };
+        Payload::from_entries(&profile, entries, ConfigFormat::Android).unwrap_err();
     }
 
     #[test]
     fn config_desc_custom_field_above() {
         let mut fields = valid_payload_fields();
         let config_desc = serialize(cbor!({-69999 => "custom"}).unwrap());
+        let config_hash = sha512(&config_desc).to_vec();
         fields.insert(CONFIG_DESC, Value::Bytes(config_desc));
+        fields.insert(CONFIG_HASH, Value::Bytes(config_hash));
         let session = Session { options: Options::default() };
         Payload::from_cbor(&session, &serialize_fields(fields), ConfigFormat::Android).unwrap();
     }
@@ -584,7 +679,9 @@
     fn config_desc_reserved_field_max() {
         let mut fields = valid_payload_fields();
         let config_desc = serialize(cbor!({-70000 => "reserved"}).unwrap());
+        let config_hash = sha512(&config_desc).to_vec();
         fields.insert(CONFIG_DESC, Value::Bytes(config_desc));
+        fields.insert(CONFIG_HASH, Value::Bytes(config_hash));
         let session = Session { options: Options::default() };
         Payload::from_cbor(&session, &serialize_fields(fields), ConfigFormat::Android).unwrap_err();
     }
@@ -593,7 +690,9 @@
     fn config_desc_reserved_field_min() {
         let mut fields = valid_payload_fields();
         let config_desc = serialize(cbor!({-70999 => "reserved"}).unwrap());
+        let config_hash = sha512(&config_desc).to_vec();
         fields.insert(CONFIG_DESC, Value::Bytes(config_desc));
+        fields.insert(CONFIG_HASH, Value::Bytes(config_hash));
         let session = Session { options: Options::default() };
         Payload::from_cbor(&session, &serialize_fields(fields), ConfigFormat::Android).unwrap_err();
     }
@@ -602,37 +701,56 @@
     fn config_desc_custom_field_below() {
         let mut fields = valid_payload_fields();
         let config_desc = serialize(cbor!({-71000 => "custom"}).unwrap());
+        let config_hash = sha512(&config_desc).to_vec();
         fields.insert(CONFIG_DESC, Value::Bytes(config_desc));
+        fields.insert(CONFIG_HASH, Value::Bytes(config_hash));
         let session = Session { options: Options::default() };
         Payload::from_cbor(&session, &serialize_fields(fields), ConfigFormat::Android).unwrap();
     }
 
     #[test]
+    fn config_desc_custom_fields() {
+        let mut fields = valid_payload_fields();
+        let config_desc = serialize(cbor!({-71000 => "custom hi", -69999 => "custom lo"}).unwrap());
+        let config_hash = sha512(&config_desc).to_vec();
+        fields.insert(CONFIG_DESC, Value::Bytes(config_desc));
+        fields.insert(CONFIG_HASH, Value::Bytes(config_hash));
+        let session = Session { options: Options::default() };
+        let payload =
+            Payload::from_cbor(&session, &serialize_fields(fields), ConfigFormat::Android).unwrap();
+        let extensions = payload.config_desc().extensions();
+        let extensions = HashMap::<_, _>::from_iter(extensions.to_owned());
+        assert_eq!(extensions.get("-71000").unwrap(), "Text(\"custom hi\")");
+        assert_eq!(extensions.get("-69999").unwrap(), "Text(\"custom lo\")");
+        assert_eq!(extensions.len(), 2);
+    }
+
+    #[test]
     fn config_desc_not_android_spec() {
         let mut fields = valid_payload_fields();
         fields.insert(CONFIG_DESC, Value::Bytes(vec![0xcd; 64]));
         let cbor = serialize_fields(fields);
         let session = Session { options: Options::default() };
         Payload::from_cbor(&session, &cbor, ConfigFormat::Android).unwrap_err();
-        let payload = Payload::from_cbor(&session, &cbor, ConfigFormat::Permissive).unwrap();
+        let payload = Payload::from_cbor(&session, &cbor, ConfigFormat::AndroidOrIgnored).unwrap();
         assert_eq!(payload.config_desc(), &ConfigDesc::default());
     }
 
     #[test]
     fn config_desc_component_version_string() {
         let mut fields = valid_payload_fields();
-        let config_desc = serialize(cbor!({COMPONENT_VERSION => "It's version 4"}).unwrap());
+        let config_desc = serialize(
+            cbor!({COMPONENT_VERSION => "It's version 4", SECURITY_VERSION => 99999999}).unwrap(),
+        );
+        let config_hash = sha512(&config_desc).to_vec();
         fields.insert(CONFIG_DESC, Value::Bytes(config_desc));
-        let cbor = serialize_fields(fields);
-        let session = Session {
-            options: Options {
-                dice_chain_component_version_type: ComponentVersionType::Int,
-                ..Options::default()
-            },
-        };
-        Payload::from_cbor(&session, &cbor, ConfigFormat::Android).unwrap_err();
-        let session = Session { options: Options::default() };
-        let payload = Payload::from_cbor(&session, &cbor, ConfigFormat::Android).unwrap();
+        fields.insert(CONFIG_HASH, Value::Bytes(config_hash));
+        let entries = encode_fields(fields);
+        let profile =
+            Profile { component_version_type: ComponentVersionType::Int, ..Profile::default() };
+        Payload::from_entries(&profile, entries.clone(), ConfigFormat::Android).unwrap_err();
+        let payload =
+            Payload::from_entries(&Profile::default(), entries, ConfigFormat::Android).unwrap();
         assert_eq!(
             payload.config_desc().component_version(),
             Some(&ComponentVersion::String("It's version 4".to_string()))
@@ -642,8 +760,10 @@
     #[test]
     fn config_desc_security_version() {
         let mut fields = valid_payload_fields();
-        let config_desc = serialize(cbor!({SECURITY_VERSION => Value::from(0x12345678)}).unwrap());
+        let config_desc = serialize(cbor!({SECURITY_VERSION => 0x12345678}).unwrap());
+        let config_hash = sha512(&config_desc).to_vec();
         fields.insert(CONFIG_DESC, Value::Bytes(config_desc));
+        fields.insert(CONFIG_HASH, Value::Bytes(config_hash));
         let cbor = serialize_fields(fields);
         let session = Session { options: Options::default() };
         let payload = Payload::from_cbor(&session, &cbor, ConfigFormat::Android).unwrap();
@@ -651,6 +771,21 @@
     }
 
     #[test]
+    fn config_desc_security_version_omitted() {
+        let mut fields = valid_payload_fields();
+        let config_desc = serialize(cbor!({}).unwrap());
+        let config_hash = sha512(&config_desc).to_vec();
+        fields.insert(CONFIG_DESC, Value::Bytes(config_desc));
+        fields.insert(CONFIG_HASH, Value::Bytes(config_hash));
+        let entries = encode_fields(fields);
+        Payload::from_entries(&Profile::default(), entries.clone(), ConfigFormat::Android)
+            .unwrap_err();
+        let profile = Profile { security_version_optional: true, ..Profile::default() };
+        let payload = Payload::from_entries(&profile, entries, ConfigFormat::Android).unwrap();
+        assert_eq!(payload.config_desc().security_version(), None);
+    }
+
+    #[test]
     fn config_desc_security_version_fixed_size_encoding() {
         let mut fields = valid_payload_fields();
         let config_desc = vec![
@@ -658,7 +793,9 @@
             0x3a, 0x00, 0x01, 0x11, 0x74, // SECURITY_VERSION.
             0x1a, 0x00, 0x00, 0xca, 0xfe, // Non-deterministic encoding of 0xcafe.
         ];
+        let config_hash = sha512(&config_desc).to_vec();
         fields.insert(CONFIG_DESC, Value::Bytes(config_desc));
+        fields.insert(CONFIG_HASH, Value::Bytes(config_hash));
         let cbor = serialize_fields(fields);
         let session = Session { options: Options::default() };
         let payload = Payload::from_cbor(&session, &cbor, ConfigFormat::Android).unwrap();
@@ -676,6 +813,54 @@
     }
 
     #[test]
+    fn config_desc_resettable() {
+        let mut fields = valid_payload_fields();
+        let config_desc = serialize(cbor!({RESETTABLE => null}).unwrap());
+        let config_hash = sha512(&config_desc).to_vec();
+        fields.insert(CONFIG_DESC, Value::Bytes(config_desc));
+        fields.insert(CONFIG_HASH, Value::Bytes(config_hash));
+        let cbor = serialize_fields(fields);
+        let session = Session { options: Options::default() };
+        let payload = Payload::from_cbor(&session, &cbor, ConfigFormat::Android).unwrap();
+        assert!(payload.config_desc().resettable());
+    }
+
+    #[test]
+    fn config_desc_rkp_vm_marker() {
+        let mut fields = valid_payload_fields();
+        let config_desc = serialize(cbor!({RKP_VM_MARKER => null}).unwrap());
+        let config_hash = sha512(&config_desc).to_vec();
+        fields.insert(CONFIG_DESC, Value::Bytes(config_desc));
+        fields.insert(CONFIG_HASH, Value::Bytes(config_hash));
+        let cbor = serialize_fields(fields);
+        let session = Session { options: Options::default() };
+        let payload = Payload::from_cbor(&session, &cbor, ConfigFormat::Android).unwrap();
+        assert!(payload.config_desc().rkp_vm_marker());
+    }
+
+    #[test]
+    fn config_desc_nulls_omitted() {
+        let mut fields = valid_payload_fields();
+        let config_desc = serialize(cbor!({}).unwrap());
+        let config_hash = sha512(&config_desc).to_vec();
+        fields.insert(CONFIG_DESC, Value::Bytes(config_desc));
+        fields.insert(CONFIG_HASH, Value::Bytes(config_hash));
+        let cbor = serialize_fields(fields);
+        let session = Session { options: Options::default() };
+        let payload = Payload::from_cbor(&session, &cbor, ConfigFormat::Android).unwrap();
+        assert!(!payload.config_desc().resettable());
+        assert!(!payload.config_desc().rkp_vm_marker());
+    }
+
+    #[test]
+    fn config_hash_missing() {
+        let mut fields = valid_payload_fields();
+        fields.remove(&CONFIG_HASH);
+        let entries = encode_fields(fields);
+        Payload::from_entries(&Profile::default(), entries, ConfigFormat::Android).unwrap_err();
+    }
+
+    #[test]
     fn integer_key_ops() {
         let mut fields = valid_payload_fields();
         let subject_public_key = cbor!({
@@ -687,22 +872,128 @@
         })
         .unwrap();
         fields.insert(SUBJECT_PUBLIC_KEY, Value::Bytes(serialize(subject_public_key)));
-        let cbor = serialize_fields(fields);
-        let session = Session { options: Options::default() };
-        Payload::from_cbor(&session, &cbor, ConfigFormat::Android).unwrap_err();
+        let entries = encode_fields(fields);
+        Payload::from_entries(&Profile::default(), entries.clone(), ConfigFormat::Android)
+            .unwrap_err();
+        let profile = Profile { key_ops_type: KeyOpsType::IntOrArray, ..Profile::default() };
+        Payload::from_entries(&profile, entries, ConfigFormat::Android).unwrap();
+    }
+
+    #[test]
+    fn extract_profile_version_named_profiles() {
+        let test_cases = [
+            ("android.14", ProfileVersion::Android14),
+            ("android.15", ProfileVersion::Android15),
+            ("android.16", ProfileVersion::Android16),
+        ];
+        for (profile_name, expected_version) in test_cases {
+            let mut fields = valid_payload_fields();
+            fields.insert(PROFILE_NAME, Value::from(profile_name));
+            let entries = encode_fields(fields);
+            let session = Session {
+                options: Options {
+                    dice_profile_range: DiceProfileRange::new(expected_version, expected_version),
+                },
+            };
+            let profile_version =
+                PayloadFields::extract_profile_version(&session, &entries).unwrap();
+            assert_eq!(profile_version, expected_version);
+        }
+    }
+
+    #[test]
+    fn extract_profile_version_named_android_13_fails() {
         let session = Session {
             options: Options {
-                dice_chain_key_ops_type: KeyOpsType::IntOrArray,
-                ..Options::default()
+                dice_profile_range: DiceProfileRange::new(
+                    ProfileVersion::Android13,
+                    ProfileVersion::Android16,
+                ),
             },
         };
-        Payload::from_cbor(&session, &cbor, ConfigFormat::Android).unwrap();
+        let mut fields = valid_payload_fields();
+        fields.insert(PROFILE_NAME, Value::from("android.13"));
+        let entries = encode_fields(fields);
+        PayloadFields::extract_profile_version(&session, &entries).unwrap_err();
+    }
+
+    #[test]
+    fn extract_profile_version_multiple_profile_name_entries_fails() {
+        let session = Session {
+            options: Options {
+                dice_profile_range: DiceProfileRange::new(
+                    ProfileVersion::Android13,
+                    ProfileVersion::Android16,
+                ),
+            },
+        };
+        let mut fields = valid_payload_fields();
+        fields.insert(PROFILE_NAME, Value::from("android.15"));
+        let mut entries = encode_fields(fields);
+        entries.push((Value::from(PROFILE_NAME), Value::from("android.15")));
+        PayloadFields::extract_profile_version(&session, &entries).unwrap_err();
+    }
+
+    #[test]
+    fn extract_profile_version_out_of_range_fails() {
+        let session = Session {
+            options: Options {
+                dice_profile_range: DiceProfileRange::new(
+                    ProfileVersion::Android15,
+                    ProfileVersion::Android15,
+                ),
+            },
+        };
+        let mut fields = valid_payload_fields();
+        fields.insert(PROFILE_NAME, Value::from("android.14"));
+        let entries = encode_fields(fields.clone());
+        PayloadFields::extract_profile_version(&session, &entries).unwrap_err();
+        fields.insert(PROFILE_NAME, Value::from("android.16"));
+        let entries = encode_fields(fields);
+        PayloadFields::extract_profile_version(&session, &entries).unwrap_err();
+    }
+
+    #[test]
+    fn extract_profile_version_default_when_not_named_up_to_android_14() {
+        let entries = encode_fields(valid_payload_fields());
+        for expected_version in [ProfileVersion::Android13, ProfileVersion::Android14] {
+            let session = Session {
+                options: Options {
+                    dice_profile_range: DiceProfileRange::new(
+                        expected_version,
+                        ProfileVersion::Android16,
+                    ),
+                },
+            };
+            let profile_version =
+                PayloadFields::extract_profile_version(&session, &entries).unwrap();
+            assert_eq!(profile_version, expected_version);
+        }
+    }
+
+    #[test]
+    fn extract_profile_version_named_profile_required_from_android_15() {
+        let entries = encode_fields(valid_payload_fields());
+        for min_version in [ProfileVersion::Android15, ProfileVersion::Android16] {
+            let session = Session {
+                options: Options {
+                    dice_profile_range: DiceProfileRange::new(
+                        min_version,
+                        ProfileVersion::Android16,
+                    ),
+                },
+            };
+            PayloadFields::extract_profile_version(&session, &entries).unwrap_err();
+        }
     }
 
     fn valid_payload_fields() -> HashMap<i64, Value> {
         let key = PrivateKey::from_pem(ED25519_KEY_PEM[0]).public_key();
         let subject_public_key = key.to_cose_key().unwrap().to_vec().unwrap();
-        let config_desc = serialize(cbor!({COMPONENT_NAME => "component name"}).unwrap());
+        let config_desc = serialize(
+            cbor!({COMPONENT_NAME => "component name", SECURITY_VERSION => 1234}).unwrap(),
+        );
+        let config_hash = sha512(&config_desc).to_vec();
         HashMap::from([
             (ISS, Value::from("issuer")),
             (SUB, Value::from("subject")),
@@ -710,13 +1001,17 @@
             (KEY_USAGE, Value::Bytes(vec![0x20])),
             (CODE_HASH, Value::Bytes(vec![1; 64])),
             (CONFIG_DESC, Value::Bytes(config_desc)),
+            (CONFIG_HASH, Value::Bytes(config_hash)),
             (AUTHORITY_HASH, Value::Bytes(vec![2; 64])),
             (MODE, Value::Bytes(vec![0])),
         ])
     }
 
-    fn serialize_fields(mut fields: HashMap<i64, Value>) -> Vec<u8> {
-        let value = Value::Map(fields.drain().map(|(k, v)| (Value::from(k), v)).collect());
-        serialize(value)
+    fn encode_fields(mut fields: HashMap<i64, Value>) -> Vec<(Value, Value)> {
+        fields.drain().map(|(k, v)| (Value::from(k), v)).collect()
+    }
+
+    fn serialize_fields(fields: HashMap<i64, Value>) -> Vec<u8> {
+        serialize(Value::Map(encode_fields(fields)))
     }
 }
diff --git a/remote_provisioning/hwtrust/src/cbor/dice/field_value.rs b/remote_provisioning/hwtrust/src/cbor/dice/field_value.rs
deleted file mode 100644
index 037e681..0000000
--- a/remote_provisioning/hwtrust/src/cbor/dice/field_value.rs
+++ /dev/null
@@ -1,113 +0,0 @@
-//! This module defines a helper for parsing fields in a CBOR map.
-
-use coset::cbor::value::Value;
-use thiserror::Error;
-
-#[derive(Error, Debug)]
-pub enum FieldValueError {
-    #[error("expected a value but none was found")]
-    Missing,
-    #[error("expected bytes but found `{0:?}`")]
-    NotBytes(Value),
-    #[error("expected string but found `{0:?}`")]
-    NotString(Value),
-    #[error("expected null but found `{0:?}`")]
-    NotNull(Value),
-    #[error("expected i64 but found `{0:?}`")]
-    NotI64(Value),
-    #[error("expected u64 but found `{0:?}`")]
-    NotU64(Value),
-}
-
-pub(super) struct FieldValue {
-    name: &'static str,
-    value: Option<Value>,
-}
-
-impl FieldValue {
-    pub fn new(name: &'static str) -> Self {
-        Self { name, value: None }
-    }
-
-    pub fn name(&self) -> &str {
-        self.name
-    }
-
-    pub fn get(&self) -> &Option<Value> {
-        &self.value
-    }
-
-    pub fn set(&mut self, value: Value) {
-        self.value = Some(value)
-    }
-
-    pub fn is_bytes(&self) -> bool {
-        self.value.as_ref().map_or(false, |v| v.is_bytes())
-    }
-
-    pub fn into_optional_bytes(self) -> Result<Option<Vec<u8>>, FieldValueError> {
-        self.value
-            .map(|v| match v {
-                Value::Bytes(b) => Ok(b),
-                _ => Err(FieldValueError::NotBytes(v)),
-            })
-            .transpose()
-    }
-
-    pub fn into_bytes(self) -> Result<Vec<u8>, FieldValueError> {
-        require_present(self.into_optional_bytes())
-    }
-
-    pub fn into_optional_string(self) -> Result<Option<String>, FieldValueError> {
-        self.value
-            .map(|v| match v {
-                Value::Text(s) => Ok(s),
-                _ => Err(FieldValueError::NotString(v)),
-            })
-            .transpose()
-    }
-
-    pub fn into_string(self) -> Result<String, FieldValueError> {
-        require_present(self.into_optional_string())
-    }
-
-    pub fn is_null(&self) -> Result<bool, FieldValueError> {
-        // If there's no value, return false; if there is a null value, return true; anything else
-        // is an error.
-        self.value
-            .as_ref()
-            .map(|v| match *v {
-                Value::Null => Ok(true),
-                _ => Err(FieldValueError::NotNull(v.clone())),
-            })
-            .unwrap_or(Ok(false))
-    }
-
-    pub fn is_integer(&self) -> bool {
-        self.value.as_ref().map_or(false, |v| v.is_integer())
-    }
-
-    pub fn into_optional_i64(self) -> Result<Option<i64>, FieldValueError> {
-        self.value
-            .map(|v| {
-                let value =
-                    if let Value::Integer(i) = v { i128::from(i).try_into().ok() } else { None };
-                value.ok_or_else(|| FieldValueError::NotI64(v))
-            })
-            .transpose()
-    }
-
-    pub fn into_optional_u64(self) -> Result<Option<u64>, FieldValueError> {
-        self.value
-            .map(|v| {
-                let value =
-                    if let Value::Integer(i) = v { i128::from(i).try_into().ok() } else { None };
-                value.ok_or_else(|| FieldValueError::NotU64(v))
-            })
-            .transpose()
-    }
-}
-
-fn require_present<T>(value: Result<Option<T>, FieldValueError>) -> Result<T, FieldValueError> {
-    value.and_then(|opt| opt.ok_or(FieldValueError::Missing))
-}
diff --git a/remote_provisioning/hwtrust/src/cbor/dice/profile.rs b/remote_provisioning/hwtrust/src/cbor/dice/profile.rs
new file mode 100644
index 0000000..de28d3f
--- /dev/null
+++ b/remote_provisioning/hwtrust/src/cbor/dice/profile.rs
@@ -0,0 +1,106 @@
+//! Defines the set of validation rules to apply for a DICE profile.
+
+use super::KeyOpsType;
+use crate::dice::ProfileVersion;
+
+/// Options that describe an Android Profile for DICE.
+#[derive(Default)]
+pub(super) struct Profile {
+    /// The types that are permitted for the key_ops field of COSE_Key objects in the DICE chain.
+    /// This option can be used for compatibility with the RKP HAL before v3 which diverged from
+    /// the COSE spec and allowed a single int instead of always requiring an array.
+    pub(super) key_ops_type: KeyOpsType,
+
+    /// The types that are permitted for the mode field of the DICE certificates. This option can
+    /// be used for compatibility with the RKP HAL v3 which allowed some deviations from the Open
+    /// Profile for DICE specification.
+    pub(super) mode_type: ModeType,
+
+    /// Whether to allow the key_usage field of the DICE certificates to be encoded in big-endian
+    /// byte order. This introduces ambiguity of the exact key usage being expressed but the keys
+    /// in the DICE chain are only used for verification so it may be preferable to allow for
+    /// compatibility with implementations that use the wrong endianness.
+    pub(super) allow_big_endian_key_usage: bool,
+
+    /// The types that are permitted for the component version field in the configuration
+    /// descriptor. The specification has changed the allowed types over time and this option
+    /// can be used to select which rules to apply.
+    pub(super) component_version_type: ComponentVersionType,
+
+    /// Whether the configuration hash is verified to be present and derived from the configuration
+    /// descriptor. This allows for compatibility with early versions of the RKP HAL which did not
+    /// enforce the requirements on the configuration hash as defined by the Open Profile for DICE.
+    pub(super) config_hash_unverified: bool,
+
+    /// Whether the security version is a required field in the configuration descriptor.
+    pub(super) security_version_optional: bool,
+}
+
+/// Type allowed for the DICE certificate mode field.
+#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
+pub(super) enum ModeType {
+    /// The mode field must be a byte string holding a single byte as specified by the Open Profile
+    /// for DICE.
+    #[default]
+    Bytes,
+    /// The mode field can be either an int or a byte string holding a single byte.
+    IntOrBytes,
+}
+
+/// Type allowed for the DICE certificate configuration descriptor's component version field.
+#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
+pub(super) enum ComponentVersionType {
+    /// The component version can be either an int or a free-form string.
+    #[default]
+    IntOrString,
+    /// The component version must be an int.
+    Int,
+}
+
+impl Profile {
+    /// The rules for the profile used in Android 13.
+    pub(super) fn android13() -> Self {
+        Self {
+            // Context: b/262599829#comment65
+            key_ops_type: KeyOpsType::IntOrArray,
+            // Context: b/273552826
+            component_version_type: ComponentVersionType::Int,
+            config_hash_unverified: true,
+            security_version_optional: true,
+            ..Self::default()
+        }
+    }
+
+    /// The rules for the "android.14" profile.
+    pub(super) fn android14() -> Self {
+        Self {
+            // Context: b/273552826
+            mode_type: ModeType::IntOrBytes,
+            allow_big_endian_key_usage: true,
+            config_hash_unverified: true,
+            security_version_optional: true,
+            ..Self::default()
+        }
+    }
+
+    /// The rules for the "android.15" profile.
+    pub(super) fn android15() -> Self {
+        Self { config_hash_unverified: true, security_version_optional: true, ..Self::default() }
+    }
+
+    /// The rules for the "android.16" profile..
+    pub(super) fn android16() -> Self {
+        Self::default()
+    }
+}
+
+impl From<ProfileVersion> for Profile {
+    fn from(version: ProfileVersion) -> Self {
+        match version {
+            ProfileVersion::Android13 => Profile::android13(),
+            ProfileVersion::Android14 => Profile::android14(),
+            ProfileVersion::Android15 => Profile::android15(),
+            ProfileVersion::Android16 => Profile::android16(),
+        }
+    }
+}
diff --git a/remote_provisioning/hwtrust/src/cbor/field_value.rs b/remote_provisioning/hwtrust/src/cbor/field_value.rs
new file mode 100644
index 0000000..fb25f86
--- /dev/null
+++ b/remote_provisioning/hwtrust/src/cbor/field_value.rs
@@ -0,0 +1,237 @@
+//! This module defines a helper for parsing fields in a CBOR map.
+
+use coset::{cbor::value::Value, AsCborValue, CoseEncrypt, CoseError, CoseMac0, CoseSign1};
+use thiserror::Error;
+
+#[derive(Error, Debug)]
+pub enum FieldValueError {
+    #[error("expected a value for field {0}, but none was found")]
+    Missing(&'static str),
+    #[error("expected bytes for field {0}, but found `{1:?}`")]
+    NotBytes(&'static str, Value),
+    #[error("expected string for field {0}, but found `{1:?}`")]
+    NotString(&'static str, Value),
+    #[error("expected null for field {0}, but found `{1:?}`")]
+    NotNull(&'static str, Value),
+    #[error("expected u32 for field {0}, but found `{1:?}`")]
+    NotU32(&'static str, Value),
+    #[error("expected i64 for field {0}, but found `{1:?}`")]
+    NotI64(&'static str, Value),
+    #[error("expected u64 for field {0}, but found `{1:?}`")]
+    NotU64(&'static str, Value),
+    #[error("expected boolean for field {0}, but found `{1:?}`")]
+    NotBool(&'static str, Value),
+    #[error("expected map for field {0}, but found `{1:?}`")]
+    NotMap(&'static str, Value),
+    #[error("expected array for field {0}, but found `{1:?}`")]
+    NotArray(&'static str, Value),
+    #[error("unable to parse field {0} as COSE_Sign1: `{1:?}`")]
+    CoseSign1ParseError(&'static str, CoseError),
+    #[error("unable to parse field {0} as COSE_Encrypt: `{1:?}`")]
+    CoseEncryptParseError(&'static str, CoseError),
+    #[error("unable to parse field {0} as COSE_Mac0: `{1:?}`")]
+    CoseMac0ParseError(&'static str, CoseError),
+    #[error("field {0} may be set only once; encountered multiple values: `{1:?}`, `{2:?}`")]
+    DuplicateField(&'static str, Value, Value),
+}
+
+pub(super) struct FieldValue {
+    name: &'static str,
+    value: Option<Value>,
+}
+
+impl FieldValue {
+    pub fn new(name: &'static str) -> Self {
+        Self { name, value: None }
+    }
+
+    pub fn from_optional_value(name: &'static str, value: Option<Value>) -> Self {
+        Self { name, value }
+    }
+
+    pub fn set_once(&mut self, value: Value) -> Result<(), FieldValueError> {
+        match &self.value {
+            None => {
+                self.value = Some(value);
+                Ok(())
+            }
+            Some(previous) => {
+                Err(FieldValueError::DuplicateField(self.name, previous.clone(), value))
+            }
+        }
+    }
+
+    pub fn is_bytes(&self) -> bool {
+        self.value.as_ref().map_or(false, |v| v.is_bytes())
+    }
+
+    pub fn into_optional_bytes(self) -> Result<Option<Vec<u8>>, FieldValueError> {
+        self.value
+            .map(|v| match v {
+                Value::Bytes(b) => Ok(b),
+                _ => Err(FieldValueError::NotBytes(self.name, v)),
+            })
+            .transpose()
+    }
+
+    pub fn into_bytes(self) -> Result<Vec<u8>, FieldValueError> {
+        require_present(self.name, self.into_optional_bytes())
+    }
+
+    pub fn into_optional_string(self) -> Result<Option<String>, FieldValueError> {
+        self.value
+            .map(|v| match v {
+                Value::Text(s) => Ok(s),
+                _ => Err(FieldValueError::NotString(self.name, v)),
+            })
+            .transpose()
+    }
+
+    pub fn into_string(self) -> Result<String, FieldValueError> {
+        require_present(self.name, self.into_optional_string())
+    }
+
+    pub fn into_cose_encrypt(self) -> Result<CoseEncrypt, FieldValueError> {
+        require_present(self.name, self.into_optional_cose_encrypt())
+    }
+
+    pub fn into_optional_cose_encrypt(self) -> Result<Option<CoseEncrypt>, FieldValueError> {
+        self.value
+            .map(|v| match v {
+                Value::Array(_) => CoseEncrypt::from_cbor_value(v)
+                    .map_err(|e| FieldValueError::CoseEncryptParseError(self.name, e)),
+                _ => Err(FieldValueError::NotArray(self.name, v)),
+            })
+            .transpose()
+    }
+
+    pub fn into_cose_mac0(self) -> Result<CoseMac0, FieldValueError> {
+        require_present(self.name, self.into_optional_cose_mac0())
+    }
+
+    pub fn into_optional_cose_mac0(self) -> Result<Option<CoseMac0>, FieldValueError> {
+        self.value
+            .map(|v| match v {
+                Value::Array(_) => CoseMac0::from_cbor_value(v)
+                    .map_err(|e| FieldValueError::CoseMac0ParseError(self.name, e)),
+                _ => Err(FieldValueError::NotArray(self.name, v)),
+            })
+            .transpose()
+    }
+
+    pub fn into_cose_sign1(self) -> Result<CoseSign1, FieldValueError> {
+        require_present(self.name, self.into_optional_cose_sign1())
+    }
+
+    pub fn into_optional_cose_sign1(self) -> Result<Option<CoseSign1>, FieldValueError> {
+        self.value
+            .map(|v| match v {
+                Value::Array(_) => CoseSign1::from_cbor_value(v)
+                    .map_err(|e| FieldValueError::CoseSign1ParseError(self.name, e)),
+                _ => Err(FieldValueError::NotArray(self.name, v)),
+            })
+            .transpose()
+    }
+
+    pub fn into_array(self) -> Result<Vec<Value>, FieldValueError> {
+        require_present(self.name, self.into_optional_array())
+    }
+
+    pub fn into_optional_array(self) -> Result<Option<Vec<Value>>, FieldValueError> {
+        self.value
+            .map(|v| match v {
+                Value::Array(v) => Ok(v),
+                _ => Err(FieldValueError::NotArray(self.name, v)),
+            })
+            .transpose()
+    }
+
+    pub fn into_map(self) -> Result<Vec<(Value, Value)>, FieldValueError> {
+        require_present(self.name, self.into_optional_map())
+    }
+
+    pub fn into_optional_map(self) -> Result<Option<Vec<(Value, Value)>>, FieldValueError> {
+        self.value
+            .map(|v| match v {
+                Value::Map(v) => Ok(v),
+                _ => Err(FieldValueError::NotMap(self.name, v)),
+            })
+            .transpose()
+    }
+
+    pub fn into_bool(self) -> Result<bool, FieldValueError> {
+        require_present(self.name, self.into_optional_bool())
+    }
+
+    pub fn into_optional_bool(self) -> Result<Option<bool>, FieldValueError> {
+        self.value
+            .map(|v| match v {
+                Value::Bool(b) => Ok(b),
+                Value::Integer(i) if i == 0.into() => Ok(false),
+                Value::Integer(i) if i == 1.into() => Ok(true),
+                _ => Err(FieldValueError::NotBool(self.name, v)),
+            })
+            .transpose()
+    }
+
+    pub fn is_null(&self) -> Result<bool, FieldValueError> {
+        // If there's no value, return false; if there is a null value, return true; anything else
+        // is an error.
+        self.value
+            .as_ref()
+            .map(|v| match *v {
+                Value::Null => Ok(true),
+                _ => Err(FieldValueError::NotNull(self.name, v.clone())),
+            })
+            .unwrap_or(Ok(false))
+    }
+
+    pub fn is_integer(&self) -> bool {
+        self.value.as_ref().map_or(false, |v| v.is_integer())
+    }
+
+    pub fn into_u32(self) -> Result<u32, FieldValueError> {
+        require_present(self.name, self.into_optional_u32())
+    }
+
+    pub fn into_optional_u32(self) -> Result<Option<u32>, FieldValueError> {
+        self.value
+            .map(|v| {
+                let value =
+                    if let Value::Integer(i) = v { i128::from(i).try_into().ok() } else { None };
+                value.ok_or_else(|| FieldValueError::NotU32(self.name, v))
+            })
+            .transpose()
+    }
+
+    pub fn into_optional_i64(self) -> Result<Option<i64>, FieldValueError> {
+        self.value
+            .map(|v| {
+                let value =
+                    if let Value::Integer(i) = v { i128::from(i).try_into().ok() } else { None };
+                value.ok_or_else(|| FieldValueError::NotI64(self.name, v))
+            })
+            .transpose()
+    }
+
+    pub fn into_u64(self) -> Result<u64, FieldValueError> {
+        require_present(self.name, self.into_optional_u64())
+    }
+
+    pub fn into_optional_u64(self) -> Result<Option<u64>, FieldValueError> {
+        self.value
+            .map(|v| {
+                let value =
+                    if let Value::Integer(i) = v { i128::from(i).try_into().ok() } else { None };
+                value.ok_or_else(|| FieldValueError::NotU64(self.name, v))
+            })
+            .transpose()
+    }
+}
+
+fn require_present<T>(
+    name: &'static str,
+    value: Result<Option<T>, FieldValueError>,
+) -> Result<T, FieldValueError> {
+    value.and_then(|opt| opt.ok_or(FieldValueError::Missing(name)))
+}
diff --git a/remote_provisioning/hwtrust/src/cbor/publickey.rs b/remote_provisioning/hwtrust/src/cbor/publickey.rs
index 709daff..11743e6 100644
--- a/remote_provisioning/hwtrust/src/cbor/publickey.rs
+++ b/remote_provisioning/hwtrust/src/cbor/publickey.rs
@@ -1,6 +1,6 @@
 //! CBOR encoding and decoding of a [`PublicKey`].
 
-use crate::publickey::{EcKind, Kind, PublicKey};
+use crate::publickey::{EcKind, KeyAgreementPublicKey, PublicKey, SignatureKind};
 use anyhow::{anyhow, bail, ensure, Context, Result};
 use coset::cbor::value::Value;
 use coset::iana::{self, EnumI64};
@@ -16,24 +16,20 @@
         if !cose_key.key_ops.is_empty() {
             ensure!(cose_key.key_ops.contains(&KeyOperation::Assigned(iana::KeyOperation::Verify)));
         }
-        let pkey = match cose_key.kty {
-            KeyType::Assigned(iana::KeyType::OKP) => pkey_from_okp_key(cose_key)?,
-            KeyType::Assigned(iana::KeyType::EC2) => pkey_from_ec2_key(cose_key)?,
-            _ => bail!("Unexpected KeyType value: {:?}", cose_key.kty),
-        };
+        let pkey = to_pkey(cose_key)?;
         pkey.try_into().context("Making PublicKey from PKey")
     }
 
     /// Verifies a COSE_Sign1 signature over its message. This function handles the conversion of
     /// the signature format that is needed for some algorithms.
-    pub(in crate::cbor) fn verify_cose_sign1(&self, sign1: &CoseSign1) -> Result<()> {
+    pub(in crate::cbor) fn verify_cose_sign1(&self, sign1: &CoseSign1, aad: &[u8]) -> Result<()> {
         ensure!(sign1.protected.header.crit.is_empty(), "No critical headers allowed");
         ensure!(
             sign1.protected.header.alg == Some(Algorithm::Assigned(iana_algorithm(self.kind()))),
             "Algorithm mistmatch in protected header"
         );
-        sign1.verify_signature(b"", |signature, message| match self.kind() {
-            Kind::Ec(k) => {
+        sign1.verify_signature(aad, |signature, message| match self.kind() {
+            SignatureKind::Ec(k) => {
                 let der = ec_cose_signature_to_der(k, signature).context("Signature to DER")?;
                 self.verify(&der, message)
             }
@@ -44,7 +40,7 @@
     /// Convert the public key into a [`CoseKey`].
     pub fn to_cose_key(&self) -> Result<CoseKey> {
         let builder = match self.kind() {
-            Kind::Ed25519 => {
+            SignatureKind::Ed25519 => {
                 let label_crv = iana::OkpKeyParameter::Crv.to_i64();
                 let label_x = iana::OkpKeyParameter::X.to_i64();
                 let x = self.pkey().raw_public_key().context("Get ed25519 raw public key")?;
@@ -52,7 +48,7 @@
                     .param(label_crv, Value::from(iana::EllipticCurve::Ed25519.to_i64()))
                     .param(label_x, Value::from(x))
             }
-            Kind::Ec(ec) => {
+            SignatureKind::Ec(ec) => {
                 let key = self.pkey().ec_key().unwrap();
                 let group = key.group();
                 let mut ctx = BigNumContext::new().context("Failed to create bignum context")?;
@@ -66,8 +62,8 @@
                     EcKind::P384 => (iana::EllipticCurve::P_384, 48),
                 };
 
-                let x = adjust_coord(x.to_vec(), coord_len);
-                let y = adjust_coord(y.to_vec(), coord_len);
+                let x = adjust_coord(x.to_vec(), coord_len)?;
+                let y = adjust_coord(y.to_vec(), coord_len)?;
                 CoseKeyBuilder::new_ec2_pub_key(crv, x, y)
             }
         };
@@ -78,11 +74,30 @@
     }
 }
 
-fn adjust_coord(mut coordinate: Vec<u8>, length: usize) -> Vec<u8> {
+impl KeyAgreementPublicKey {
+    pub(super) fn from_cose_key(cose_key: &CoseKey) -> Result<Self> {
+        // RFC 9052 says the key_op for derive key is only for private keys. The public key
+        // has no key_ops (see Appendix B for an example).
+        ensure!(cose_key.key_ops.is_empty());
+        let pkey = to_pkey(cose_key)?;
+        pkey.try_into().context("Making KeyAgreementPublicKey from PKey")
+    }
+}
+
+fn to_pkey(cose_key: &CoseKey) -> Result<PKey<Public>> {
+    match cose_key.kty {
+        KeyType::Assigned(iana::KeyType::OKP) => Ok(pkey_from_okp_key(cose_key)?),
+        KeyType::Assigned(iana::KeyType::EC2) => Ok(pkey_from_ec2_key(cose_key)?),
+        _ => bail!("Unexpected KeyType value: {:?}", cose_key.kty),
+    }
+}
+
+fn adjust_coord(mut coordinate: Vec<u8>, length: usize) -> Result<Vec<u8>> {
     // Use loops "just in case". However we should never see a coordinate with more than one
     // extra leading byte. The chances of more than one trailing byte is also quite small --
     // roughly 1/65000.
-    while coordinate.len() > length && coordinate[0] == 00 {
+    while coordinate.len() > length {
+        ensure!(coordinate[0] == 0, "unexpected non-zero leading byte on public key");
         coordinate.remove(0);
     }
 
@@ -90,16 +105,26 @@
         coordinate.insert(0, 0);
     }
 
-    coordinate
+    Ok(coordinate)
 }
 
 fn pkey_from_okp_key(cose_key: &CoseKey) -> Result<PKey<Public>> {
     ensure!(cose_key.kty == KeyType::Assigned(iana::KeyType::OKP));
-    ensure!(cose_key.alg == Some(Algorithm::Assigned(iana::Algorithm::EdDSA)));
+    ensure!(
+        cose_key.alg == Some(Algorithm::Assigned(iana::Algorithm::EdDSA))
+            || cose_key.alg == Some(Algorithm::Assigned(iana::Algorithm::ECDH_ES_HKDF_256))
+    );
+    //ensure!(cose_key.alg == Some(Algorithm::Assigned(iana::Algorithm::EdDSA)));
     let crv = get_label_value(cose_key, Label::Int(iana::OkpKeyParameter::Crv.to_i64()))?;
     let x = get_label_value_as_bytes(cose_key, Label::Int(iana::OkpKeyParameter::X.to_i64()))?;
-    ensure!(crv == &Value::from(iana::EllipticCurve::Ed25519.to_i64()));
-    PKey::public_key_from_raw_bytes(x, Id::ED25519).context("Failed to instantiate key")
+    let curve_id = if crv == &Value::from(iana::EllipticCurve::Ed25519.to_i64()) {
+        Id::ED25519
+    } else if crv == &Value::from(iana::EllipticCurve::X25519.to_i64()) {
+        Id::X25519
+    } else {
+        bail!("Given crv is invalid: '{crv:?}'");
+    };
+    PKey::public_key_from_raw_bytes(x, curve_id).context("Failed to instantiate key")
 }
 
 fn pkey_from_ec2_key(cose_key: &CoseKey) -> Result<PKey<Public>> {
@@ -108,7 +133,8 @@
     let x = get_label_value_as_bytes(cose_key, Label::Int(iana::Ec2KeyParameter::X.to_i64()))?;
     let y = get_label_value_as_bytes(cose_key, Label::Int(iana::Ec2KeyParameter::Y.to_i64()))?;
     match cose_key.alg {
-        Some(Algorithm::Assigned(iana::Algorithm::ES256)) => {
+        Some(Algorithm::Assigned(iana::Algorithm::ES256))
+        | Some(Algorithm::Assigned(iana::Algorithm::ECDH_ES_HKDF_256)) => {
             ensure!(crv == &Value::from(iana::EllipticCurve::P_256.to_i64()));
             pkey_from_ec_coords(Nid::X9_62_PRIME256V1, x, y).context("Failed to instantiate key")
         }
@@ -116,7 +142,7 @@
             ensure!(crv == &Value::from(iana::EllipticCurve::P_384.to_i64()));
             pkey_from_ec_coords(Nid::SECP384R1, x, y).context("Failed to instantiate key")
         }
-        _ => bail!("Need to specify ES256 or ES384 in the key. Got {:?}", cose_key.alg),
+        _ => bail!("Need to specify ES256 or ES384 key algorithm. Got {:?}", cose_key.alg),
     }
 }
 
@@ -165,11 +191,11 @@
     }
 }
 
-fn iana_algorithm(kind: Kind) -> iana::Algorithm {
+fn iana_algorithm(kind: SignatureKind) -> iana::Algorithm {
     match kind {
-        Kind::Ed25519 => iana::Algorithm::EdDSA,
-        Kind::Ec(EcKind::P256) => iana::Algorithm::ES256,
-        Kind::Ec(EcKind::P384) => iana::Algorithm::ES384,
+        SignatureKind::Ed25519 => iana::Algorithm::EdDSA,
+        SignatureKind::Ec(EcKind::P256) => iana::Algorithm::ES256,
+        SignatureKind::Ec(EcKind::P384) => iana::Algorithm::ES384,
     }
 }
 
@@ -190,7 +216,7 @@
                 .create_signature(b"", |m| {
                     let signature = self.sign(m).unwrap();
                     match self.kind() {
-                        Kind::Ec(ec) => ec_der_signature_to_cose(ec, &signature),
+                        SignatureKind::Ec(ec) => ec_der_signature_to_cose(ec, &signature),
                         _ => signature,
                     }
                 })
@@ -211,14 +237,14 @@
     fn sign_and_verify_okp() {
         let key = PrivateKey::from_pem(ED25519_KEY_PEM[0]);
         let sign1 = key.sign_cose_sign1(b"signed payload".to_vec());
-        key.public_key().verify_cose_sign1(&sign1).unwrap();
+        key.public_key().verify_cose_sign1(&sign1, b"").unwrap();
     }
 
     #[test]
     fn sign_and_verify_ec2() {
         let key = PrivateKey::from_pem(P256_KEY_PEM[0]);
         let sign1 = key.sign_cose_sign1(b"signed payload".to_vec());
-        key.public_key().verify_cose_sign1(&sign1).unwrap();
+        key.public_key().verify_cose_sign1(&sign1, b"").unwrap();
     }
 
     #[test]
@@ -227,9 +253,20 @@
         let sign1 = CoseSign1Builder::new()
             .protected(HeaderBuilder::new().algorithm(iana::Algorithm::EdDSA).build())
             .payload(b"the message".to_vec())
-            .create_signature(b"", |m| key.sign(m).unwrap())
+            .create_signature(b"the aad", |m| key.sign(m).unwrap())
             .build();
-        key.public_key().verify_cose_sign1(&sign1).unwrap();
+        key.public_key().verify_cose_sign1(&sign1, b"the aad").unwrap();
+    }
+
+    #[test]
+    fn verify_cose_sign1_fails_with_wrong_aad() {
+        let key = PrivateKey::from_pem(ED25519_KEY_PEM[0]);
+        let sign1 = CoseSign1Builder::new()
+            .protected(HeaderBuilder::new().algorithm(iana::Algorithm::ES256).build())
+            .payload(b"the message".to_vec())
+            .create_signature(b"correct aad", |m| key.sign(m).unwrap())
+            .build();
+        key.public_key().verify_cose_sign1(&sign1, b"bad").unwrap_err();
     }
 
     #[test]
@@ -240,7 +277,7 @@
             .payload(b"the message".to_vec())
             .create_signature(b"", |m| key.sign(m).unwrap())
             .build();
-        key.public_key().verify_cose_sign1(&sign1).unwrap_err();
+        key.public_key().verify_cose_sign1(&sign1, b"").unwrap_err();
     }
 
     #[test]
@@ -256,7 +293,7 @@
             .payload(b"the message".to_vec())
             .create_signature(b"", |m| key.sign(m).unwrap())
             .build();
-        key.public_key().verify_cose_sign1(&sign1).unwrap()
+        key.public_key().verify_cose_sign1(&sign1, b"").unwrap()
     }
 
     #[test]
@@ -272,7 +309,7 @@
             .payload(b"the message".to_vec())
             .create_signature(b"", |m| key.sign(m).unwrap())
             .build();
-        key.public_key().verify_cose_sign1(&sign1).unwrap_err();
+        key.public_key().verify_cose_sign1(&sign1, b"").unwrap_err();
     }
 
     #[test]
diff --git a/remote_provisioning/hwtrust/src/cbor/rkp.rs b/remote_provisioning/hwtrust/src/cbor/rkp.rs
new file mode 100644
index 0000000..b4d3043
--- /dev/null
+++ b/remote_provisioning/hwtrust/src/cbor/rkp.rs
@@ -0,0 +1,5 @@
+//! This module provides functions for dealing with RKP-specific data structures.
+
+pub(crate) mod csr;
+mod device_info;
+mod protected_data;
diff --git a/remote_provisioning/hwtrust/src/cbor/rkp/csr.rs b/remote_provisioning/hwtrust/src/cbor/rkp/csr.rs
new file mode 100644
index 0000000..e621756
--- /dev/null
+++ b/remote_provisioning/hwtrust/src/cbor/rkp/csr.rs
@@ -0,0 +1,240 @@
+use crate::cbor::field_value::FieldValue;
+use crate::cbor::value_from_bytes;
+use crate::dice::Chain;
+use crate::rkp::{Csr, DeviceInfo, ProtectedData};
+use crate::session::Session;
+use anyhow::{anyhow, bail, ensure, Context, Result};
+use base64::{prelude::BASE64_STANDARD, Engine};
+use ciborium::value::Value;
+
+const VERSION_OR_DEVICE_INFO_INDEX: usize = 0;
+
+impl Csr {
+    /// Parse base64-encoded CBOR data as a Certificate Signing Request.
+    pub fn from_base64_cbor<S: AsRef<[u8]>>(session: &Session, base64: &S) -> Result<Self> {
+        let cbor: Vec<u8> = BASE64_STANDARD.decode(base64).context("invalid base64 CSR")?;
+        Self::from_cbor(session, cbor.as_slice())
+    }
+
+    /// Read and parse CBOR data as a Certificate Signing Request.
+    pub fn from_cbor<S: std::io::Read>(session: &Session, cbor: S) -> Result<Self> {
+        let value: Value = ciborium::de::from_reader(cbor).context("invalid CBOR")?;
+        let mut array = match value {
+            Value::Array(a) if a.is_empty() => bail!("CSR CBOR is an empty array"),
+            Value::Array(a) => a,
+            other => bail!("expected array, found {other:?}"),
+        };
+        let version_or_device_info =
+            std::mem::replace(&mut array[VERSION_OR_DEVICE_INFO_INDEX], Value::Null);
+        match version_or_device_info {
+            Value::Array(device_info) => Self::v2_from_cbor_values(session, array, device_info),
+            Value::Integer(i) => Self::v3_from_authenticated_request(session, array, i.into()),
+            other => Err(anyhow!(
+                "Expected integer or array at index {VERSION_OR_DEVICE_INFO_INDEX}, \
+                found {other:?}"
+            )),
+        }
+    }
+
+    fn v2_from_cbor_values(
+        session: &Session,
+        mut csr: Vec<Value>,
+        mut device_info: Vec<Value>,
+    ) -> Result<Self> {
+        let maced_keys_to_sign =
+            FieldValue::from_optional_value("MacedKeysToSign", csr.pop()).into_cose_mac0()?;
+        let encrypted_protected_data =
+            FieldValue::from_optional_value("ProtectedData", csr.pop()).into_cose_encrypt()?;
+        let challenge = FieldValue::from_optional_value("Challenge", csr.pop()).into_bytes()?;
+
+        ensure!(device_info.len() == 2, "Device info should contain exactly 2 entries");
+        device_info.pop(); // ignore unverified info
+        let verified_device_info = match device_info.pop() {
+            Some(Value::Map(d)) => Value::Map(d),
+            other => bail!("Expected a map for verified device info, found '{:?}'", other),
+        };
+
+        let protected_data = ProtectedData::from_cose_encrypt(
+            session,
+            encrypted_protected_data,
+            &challenge,
+            &verified_device_info,
+            &maced_keys_to_sign.tag,
+        )?;
+
+        let verified_device_info = match verified_device_info {
+            Value::Map(m) => m,
+            _ => unreachable!("verified device info is always a map"),
+        };
+
+        Ok(Self::V2 {
+            device_info: DeviceInfo::from_cbor_values(verified_device_info, None)?,
+            challenge,
+            protected_data,
+        })
+    }
+
+    fn v3_from_authenticated_request(
+        session: &Session,
+        mut csr: Vec<Value>,
+        version: i128,
+    ) -> Result<Self> {
+        if version != 1 {
+            bail!("Invalid CSR version. Only '1' is supported, found '{}", version);
+        }
+
+        // CSRs that are uploaded to the backend have an additional unverified info field tacked
+        // onto them. We just ignore that, so if it's there pop it and move on.
+        if csr.len() == 5 {
+            FieldValue::from_optional_value("UnverifiedDeviceInfo", csr.pop());
+        }
+
+        let signed_data =
+            FieldValue::from_optional_value("SignedData", csr.pop()).into_cose_sign1()?;
+        let dice_chain =
+            Chain::from_value(session, csr.pop().ok_or(anyhow!("Missing DiceCertChain"))?)?;
+
+        let signed_data_payload = signed_data.payload.context("missing payload in SignedData")?;
+        let csr_payload_value = value_from_bytes(&signed_data_payload)
+            .context("SignedData payload is not valid CBOR")?
+            .as_array_mut()
+            .context("SignedData payload is not a CBOR array")?
+            .pop()
+            .context("Missing CsrPayload in SignedData")?;
+        let csr_payload_bytes = csr_payload_value
+            .as_bytes()
+            .context("CsrPayload (in SignedData) is expected to be encoded CBOR")?
+            .as_slice();
+        let mut csr_payload = match value_from_bytes(csr_payload_bytes)? {
+            Value::Array(a) => a,
+            other => bail!("CsrPayload is expected to be an array, found {other:?}"),
+        };
+
+        let _keys_to_sign = FieldValue::from_optional_value("KeysToSign", csr_payload.pop());
+        let device_info = FieldValue::from_optional_value("DeviceInfo", csr_payload.pop());
+        let _certificate_type =
+            FieldValue::from_optional_value("CertificateType", csr_payload.pop());
+
+        let device_info = DeviceInfo::from_cbor_values(device_info.into_map()?, Some(3))?;
+        Ok(Self::V3 { device_info, dice_chain })
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    // More complete testing happens in the factorycsr module, as the test data
+    // generation spits out full JSON files, not just a CSR. Therefore, only a
+    // minimal number of smoke tests are here.
+    use super::*;
+    use crate::cbor::rkp::csr::testutil::{parse_pem_public_key_or_panic, test_device_info};
+    use crate::dice::{ChainForm, DegenerateChain, DiceMode};
+    use crate::rkp::DeviceInfoVersion;
+    use std::fs;
+
+    #[test]
+    fn from_base64_valid_v2() {
+        let input = fs::read_to_string("testdata/csr/v2_csr.base64").unwrap().trim().to_owned();
+        let csr = Csr::from_base64_cbor(&Session::default(), &input).unwrap();
+
+        let device_info = testutil::test_device_info(DeviceInfoVersion::V2);
+        let challenge =
+            b"\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10".to_vec();
+        let pem = "-----BEGIN PUBLIC KEY-----\n\
+                   MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERd9pHZbUJ/b4IleUGDN8fs8+LDxE\n\
+                   vG6VX1dkw0sClFs4imbzfXGbocEq74S7TQiyZkd1LhY6HRZnTC51KoGDIA==\n\
+                   -----END PUBLIC KEY-----\n";
+        let subject_public_key = testutil::parse_pem_public_key_or_panic(pem);
+        let degenerate = ChainForm::Degenerate(
+            DegenerateChain::new("self-signed", "self-signed", subject_public_key).unwrap(),
+        );
+        let protected_data = ProtectedData::new(vec![0; 32], degenerate, None);
+        assert_eq!(csr, Csr::V2 { device_info, challenge, protected_data });
+    }
+
+    #[test]
+    fn from_base64_valid_v3() {
+        let input = fs::read_to_string("testdata/csr/v3_csr.base64").unwrap().trim().to_owned();
+        let csr = Csr::from_base64_cbor(&Session::default(), &input).unwrap();
+        if let Csr::V3 { device_info, dice_chain } = csr {
+            assert_eq!(device_info, test_device_info(DeviceInfoVersion::V3));
+            let root_public_key = parse_pem_public_key_or_panic(
+                "-----BEGIN PUBLIC KEY-----\n\
+                MCowBQYDK2VwAyEA3FEn/nhqoGOKNok1AJaLfTKI+aFXHf4TfC42vUyPU6s=\n\
+                -----END PUBLIC KEY-----\n",
+            );
+            assert_eq!(dice_chain.root_public_key(), &root_public_key);
+            let payloads = dice_chain.payloads();
+            assert_eq!(payloads.len(), 1);
+            assert_eq!(payloads[0].issuer(), "issuer");
+            assert_eq!(payloads[0].subject(), "subject");
+            assert_eq!(payloads[0].mode(), DiceMode::Normal);
+            assert_eq!(payloads[0].code_hash(), &[0x55; 32]);
+            let expected_config_hash: &[u8] =
+                b"\xb8\x96\x54\xe2\x2c\xa4\xd2\x4a\x9c\x0e\x45\x11\xc8\xf2\x63\xf0\
+                  \x66\x0d\x2e\x20\x48\x96\x90\x14\xf4\x54\x63\xc4\xf4\x39\x30\x38";
+            assert_eq!(payloads[0].config_hash(), Some(expected_config_hash));
+            assert_eq!(payloads[0].authority_hash(), &[0x55; 32]);
+            assert_eq!(payloads[0].config_desc().component_name(), Some("component_name"));
+            assert_eq!(payloads[0].config_desc().component_version(), None);
+            assert!(!payloads[0].config_desc().resettable());
+            assert_eq!(payloads[0].config_desc().security_version(), None);
+            assert_eq!(payloads[0].config_desc().extensions(), []);
+        } else {
+            panic!("Parsed CSR was not V3: {:?}", csr);
+        }
+    }
+
+    #[test]
+    fn from_empty_string() {
+        let err = Csr::from_base64_cbor(&Session::default(), &"").unwrap_err();
+        assert!(err.to_string().contains("invalid CBOR"));
+    }
+
+    #[test]
+    fn from_garbage() {
+        let err = Csr::from_base64_cbor(&Session::default(), &"cnViYmlzaAo=").unwrap_err();
+        assert!(err.to_string().contains("invalid CBOR"));
+    }
+
+    #[test]
+    fn from_invalid_base64() {
+        let err = Csr::from_base64_cbor(&Session::default(), &"not base64").unwrap_err();
+        assert!(err.to_string().contains("invalid base64"));
+    }
+}
+
+#[cfg(test)]
+pub(crate) mod testutil {
+    use crate::publickey::PublicKey;
+    use crate::rkp::{
+        DeviceInfo, DeviceInfoBootloaderState, DeviceInfoSecurityLevel, DeviceInfoVbState,
+        DeviceInfoVersion,
+    };
+    use openssl::pkey::PKey;
+
+    // Parse the given PEM-encoded public key into a PublicKey object, panicking on failure.
+    pub fn parse_pem_public_key_or_panic(pem: &str) -> PublicKey {
+        PKey::public_key_from_pem(pem.as_bytes()).unwrap().try_into().unwrap()
+    }
+
+    // The test data uses mostly common DeviceInfo fields
+    pub fn test_device_info(version: DeviceInfoVersion) -> DeviceInfo {
+        DeviceInfo {
+            version,
+            brand: "Google".to_string(),
+            manufacturer: "Google".to_string(),
+            product: "pixel".to_string(),
+            model: "model".to_string(),
+            device: "device".to_string(),
+            vb_state: DeviceInfoVbState::Green,
+            bootloader_state: DeviceInfoBootloaderState::Locked,
+            vbmeta_digest: b"\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xdd\xee\xff".to_vec(),
+            os_version: Some("12".to_string()),
+            system_patch_level: 20221025,
+            boot_patch_level: 20221026,
+            vendor_patch_level: 20221027,
+            security_level: Some(DeviceInfoSecurityLevel::Tee),
+            fused: true,
+        }
+    }
+}
diff --git a/remote_provisioning/hwtrust/src/cbor/rkp/device_info.rs b/remote_provisioning/hwtrust/src/cbor/rkp/device_info.rs
new file mode 100644
index 0000000..ec1fc74
--- /dev/null
+++ b/remote_provisioning/hwtrust/src/cbor/rkp/device_info.rs
@@ -0,0 +1,349 @@
+use crate::cbor::field_value::FieldValue;
+use crate::rkp::{
+    DeviceInfo, DeviceInfoBootloaderState, DeviceInfoSecurityLevel, DeviceInfoVbState,
+};
+use anyhow::{bail, ensure, Context, Result};
+use ciborium::value::Value;
+
+impl DeviceInfo {
+    /// Create a new DeviceInfo struct from Values parsed by ciborium
+    pub fn from_cbor_values(
+        values: Vec<(Value, Value)>,
+        explicit_version: Option<u32>,
+    ) -> Result<Self> {
+        let mut brand = FieldValue::new("brand");
+        let mut manufacturer = FieldValue::new("manufacturer");
+        let mut product = FieldValue::new("product");
+        let mut model = FieldValue::new("model");
+        let mut device = FieldValue::new("device");
+        let mut vb_state = FieldValue::new("vb_state");
+        let mut bootloader_state = FieldValue::new("bootloader_state");
+        let mut vbmeta_digest = FieldValue::new("vbmeta_digest");
+        let mut os_version = FieldValue::new("os_version");
+        let mut system_patch_level = FieldValue::new("system_patch_level");
+        let mut boot_patch_level = FieldValue::new("boot_patch_level");
+        let mut vendor_patch_level = FieldValue::new("vendor_patch_level");
+        let mut security_level = FieldValue::new("security_level");
+        let mut version = FieldValue::new("version");
+        let mut fused = FieldValue::new("fused");
+
+        for (key, value) in values {
+            let field_value = match key.as_text() {
+                Some("brand") => &mut brand,
+                Some("manufacturer") => &mut manufacturer,
+                Some("product") => &mut product,
+                Some("model") => &mut model,
+                Some("device") => &mut device,
+                Some("vb_state") => &mut vb_state,
+                Some("bootloader_state") => &mut bootloader_state,
+                Some("vbmeta_digest") => &mut vbmeta_digest,
+                Some("os_version") => &mut os_version,
+                Some("system_patch_level") => &mut system_patch_level,
+                Some("boot_patch_level") => &mut boot_patch_level,
+                Some("vendor_patch_level") => &mut vendor_patch_level,
+                Some("security_level") => &mut security_level,
+                Some("fused") => &mut fused,
+                Some("version") => &mut version,
+                _ => bail!("Unexpected DeviceInfo kv-pair: ({key:?},{value:?})"),
+            };
+            field_value.set_once(value)?;
+        }
+
+        let version = match version.into_optional_u32() {
+            Ok(Some(v)) if v == explicit_version.unwrap_or(v) => v,
+            Ok(Some(v)) => bail!(
+                "Parsed DeviceInfo version '{v}' does not match expected version \
+                '{explicit_version:?}'"
+            ),
+            Ok(None) => explicit_version.context("missing required version")?,
+            Err(e) => return Err(e.into()),
+        };
+
+        let security_level = match security_level.into_optional_string()? {
+            Some(s) => Some(s.as_str().try_into()?),
+            None => None,
+        };
+
+        let info = DeviceInfo {
+            brand: brand.into_string()?,
+            manufacturer: manufacturer.into_string()?,
+            product: product.into_string()?,
+            model: model.into_string()?,
+            device: device.into_string()?,
+            vb_state: vb_state.into_string()?.as_str().try_into()?,
+            bootloader_state: bootloader_state.into_string()?.as_str().try_into()?,
+            vbmeta_digest: vbmeta_digest.into_bytes()?,
+            os_version: os_version.into_optional_string()?,
+            system_patch_level: system_patch_level.into_u32()?,
+            boot_patch_level: boot_patch_level.into_u32()?,
+            vendor_patch_level: vendor_patch_level.into_u32()?,
+            security_level,
+            fused: fused.into_bool()?,
+            version: version.try_into()?,
+        };
+        info.validate()?;
+        Ok(info)
+    }
+
+    fn validate(&self) -> Result<()> {
+        ensure!(!self.vbmeta_digest.is_empty(), "vbmeta_digest must not be empty");
+        ensure!(
+            !self.vbmeta_digest.iter().all(|b| *b == 0u8),
+            "vbmeta_digest must not be all zeros. Got {:?}",
+            self.vbmeta_digest
+        );
+
+        if Some(DeviceInfoSecurityLevel::Avf) == self.security_level {
+            ensure!(
+                self.bootloader_state == DeviceInfoBootloaderState::Avf
+                    && self.vb_state == DeviceInfoVbState::Avf
+                    && self.brand == "aosp-avf"
+                    && self.device == "avf"
+                    && self.model == "avf"
+                    && self.manufacturer == "aosp-avf"
+                    && self.product == "avf",
+                "AVF security level requires AVF fields. Got: {:?}",
+                self
+            );
+        } else {
+            ensure!(
+                self.bootloader_state != DeviceInfoBootloaderState::Avf
+                    && self.vb_state != DeviceInfoVbState::Avf
+                    && self.brand != "aosp-avf"
+                    && self.device != "avf"
+                    && self.model != "avf"
+                    && self.manufacturer != "aosp-avf"
+                    && self.product != "avf",
+                "Non-AVF security level requires non-AVF fields. Got: {:?}",
+                self
+            );
+        }
+        Ok(())
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use crate::rkp::DeviceInfoVersion;
+
+    #[test]
+    fn device_info_from_cbor_values_optional_os_version() {
+        let values: Vec<(Value, Value)> = get_valid_values_filtered(|x| x != "os_version");
+        let info = DeviceInfo::from_cbor_values(values, None).unwrap();
+        assert!(info.os_version.is_none());
+    }
+
+    #[test]
+    fn device_info_from_cbor_values_missing_required_field() {
+        let values: Vec<(Value, Value)> = get_valid_values_filtered(|x| x != "brand");
+        let err = DeviceInfo::from_cbor_values(values, None).unwrap_err();
+        println!("{err:?}");
+        assert!(err.to_string().contains("brand"));
+    }
+
+    #[test]
+    fn from_cbor_values_valid_v2() {
+        let actual = DeviceInfo::from_cbor_values(get_valid_values(), None).unwrap();
+        let expected = DeviceInfo {
+            brand: "generic".to_string(),
+            manufacturer: "acme".to_string(),
+            product: "phone".to_string(),
+            model: "the best one".to_string(),
+            device: "really the best".to_string(),
+            vb_state: DeviceInfoVbState::Green,
+            bootloader_state: DeviceInfoBootloaderState::Locked,
+            vbmeta_digest: b"abcdefg".to_vec(),
+            os_version: Some("dessert".to_string()),
+            system_patch_level: 303010,
+            boot_patch_level: 30300102,
+            vendor_patch_level: 30300304,
+            security_level: Some(DeviceInfoSecurityLevel::Tee),
+            fused: true,
+            version: DeviceInfoVersion::V2,
+        };
+        assert_eq!(actual, expected);
+    }
+
+    #[test]
+    fn device_info_from_cbor_values_valid_v3() {
+        let values: Vec<(Value, Value)> = get_valid_values_filtered(|x| x != "version");
+        let actual = DeviceInfo::from_cbor_values(values, Some(3)).unwrap();
+        let expected = DeviceInfo {
+            brand: "generic".to_string(),
+            manufacturer: "acme".to_string(),
+            product: "phone".to_string(),
+            model: "the best one".to_string(),
+            device: "really the best".to_string(),
+            vb_state: DeviceInfoVbState::Green,
+            bootloader_state: DeviceInfoBootloaderState::Locked,
+            vbmeta_digest: b"abcdefg".to_vec(),
+            os_version: Some("dessert".to_string()),
+            system_patch_level: 303010,
+            boot_patch_level: 30300102,
+            vendor_patch_level: 30300304,
+            security_level: Some(DeviceInfoSecurityLevel::Tee),
+            fused: true,
+            version: DeviceInfoVersion::V3,
+        };
+        assert_eq!(actual, expected);
+    }
+
+    #[test]
+    fn device_info_from_cbor_values_mismatched_version() {
+        let values: Vec<(Value, Value)> = get_valid_values();
+        let err = DeviceInfo::from_cbor_values(values, Some(3)).unwrap_err();
+        println!("{err:?}");
+        assert!(err.to_string().contains("version"));
+    }
+
+    #[test]
+    fn device_info_from_cbor_values_invalid_version_value() {
+        let values: Vec<(Value, Value)> = get_valid_values_filtered(|x| x != "version");
+        let err = DeviceInfo::from_cbor_values(values, None).unwrap_err();
+        println!("{err:?}");
+        assert!(err.to_string().contains("version"));
+    }
+
+    #[test]
+    fn device_info_from_cbor_values_invalid_explicit_version() {
+        let values: Vec<(Value, Value)> = get_valid_values_filtered(|x| x != "version");
+        let err = DeviceInfo::from_cbor_values(values, Some(0)).unwrap_err();
+        println!("{err:?}");
+        assert!(err.to_string().contains("version"));
+    }
+
+    #[test]
+    fn device_info_from_cbor_values_missing_version() {
+        let values: Vec<(Value, Value)> = get_valid_values_filtered(|x| x != "version");
+        let err = DeviceInfo::from_cbor_values(values, None).unwrap_err();
+        println!("{err:?}");
+        assert!(err.to_string().contains("version"));
+    }
+
+    #[test]
+    fn device_info_from_cbor_duplicate_values() {
+        let mut values: Vec<(Value, Value)> = get_valid_values();
+        values.push(("brand".into(), "generic".into()));
+
+        let err = DeviceInfo::from_cbor_values(values, None).unwrap_err();
+        println!("{err:?}");
+        assert!(err.to_string().contains("may be set only once"));
+    }
+
+    #[test]
+    fn device_info_from_cbor_empty_vbmeta_digest() {
+        let mut values: Vec<(Value, Value)> = get_valid_values_filtered(|v| v != "vbmeta_digest");
+        values.push(("vbmeta_digest".into(), vec![0u8; 0].into()));
+
+        let err = DeviceInfo::from_cbor_values(values, None).unwrap_err();
+        println!("{err:?}");
+        assert!(err.to_string().contains("vbmeta_digest must not be empty"), "{err:?}");
+    }
+
+    #[test]
+    fn device_info_from_cbor_all_zero_vbmeta_digest() {
+        let mut values: Vec<(Value, Value)> = get_valid_values_filtered(|v| v != "vbmeta_digest");
+        values.push(("vbmeta_digest".into(), vec![0u8; 16].into()));
+
+        let err = DeviceInfo::from_cbor_values(values, None).unwrap_err();
+        println!("{err:?}");
+        assert!(err.to_string().contains("vbmeta_digest must not be all zeros"), "{err:?}");
+    }
+
+    #[test]
+    fn device_info_from_cbor_values_non_avf_security_level_has_avf_vb_state() {
+        let mut values = get_valid_values_filtered(|x| x != "vb_state");
+        values.push(("vb_state".into(), "avf".into()));
+
+        let err = DeviceInfo::from_cbor_values(values, None).unwrap_err();
+        assert!(err.to_string().contains("Non-AVF security level"), "{err:?}");
+    }
+
+    #[test]
+    fn device_info_from_cbor_values_non_avf_security_level_has_avf_bootloader_state() {
+        let mut values = get_valid_values_filtered(|x| x != "bootloader_state");
+        values.push(("bootloader_state".into(), "avf".into()));
+
+        let err = DeviceInfo::from_cbor_values(values, None).unwrap_err();
+        assert!(err.to_string().contains("Non-AVF security level"), "{err:?}");
+    }
+
+    #[test]
+    fn device_info_from_cbor_values_avf_security_level_has_non_avf_vb_state() {
+        let values: Vec<(Value, Value)> = get_valid_avf_values()
+            .into_iter()
+            .filter(|(k, _v)| k.as_text().unwrap() != "vb_state")
+            .chain(vec![("vb_state".into(), "green".into())])
+            .collect();
+        let err = DeviceInfo::from_cbor_values(values, Some(3)).unwrap_err();
+        assert!(err.to_string().contains("AVF security level requires AVF fields"), "{err:?}");
+    }
+
+    #[test]
+    fn device_info_from_cbor_values_avf_security_level_has_avf_fields() {
+        let values = get_valid_avf_values();
+        let actual = DeviceInfo::from_cbor_values(values, Some(3)).unwrap();
+        let expected = DeviceInfo {
+            brand: "aosp-avf".to_string(),
+            manufacturer: "aosp-avf".to_string(),
+            product: "avf".to_string(),
+            model: "avf".to_string(),
+            device: "avf".to_string(),
+            vb_state: DeviceInfoVbState::Avf,
+            bootloader_state: DeviceInfoBootloaderState::Avf,
+            vbmeta_digest: b"abcdefg".to_vec(),
+            os_version: Some("dessert".to_string()),
+            system_patch_level: 303010,
+            boot_patch_level: 30300102,
+            vendor_patch_level: 30300304,
+            security_level: Some(DeviceInfoSecurityLevel::Avf),
+            fused: true,
+            version: DeviceInfoVersion::V3,
+        };
+        assert_eq!(expected, actual);
+    }
+
+    fn get_valid_values() -> Vec<(Value, Value)> {
+        vec![
+            ("brand".into(), "generic".into()),
+            ("manufacturer".into(), "acme".into()),
+            ("product".into(), "phone".into()),
+            ("model".into(), "the best one".into()),
+            ("device".into(), "really the best".into()),
+            ("vb_state".into(), "green".into()),
+            ("bootloader_state".into(), "locked".into()),
+            ("vbmeta_digest".into(), b"abcdefg".as_ref().into()),
+            ("os_version".into(), "dessert".into()),
+            ("system_patch_level".into(), 303010.into()),
+            ("boot_patch_level".into(), 30300102.into()),
+            ("vendor_patch_level".into(), 30300304.into()),
+            ("security_level".into(), "tee".into()),
+            ("fused".into(), 1.into()),
+            ("version".into(), 2.into()),
+        ]
+    }
+
+    fn get_valid_avf_values() -> Vec<(Value, Value)> {
+        vec![
+            ("brand".into(), "aosp-avf".into()),
+            ("manufacturer".into(), "aosp-avf".into()),
+            ("product".into(), "avf".into()),
+            ("model".into(), "avf".into()),
+            ("device".into(), "avf".into()),
+            ("vb_state".into(), "avf".into()),
+            ("bootloader_state".into(), "avf".into()),
+            ("vbmeta_digest".into(), b"abcdefg".as_ref().into()),
+            ("os_version".into(), "dessert".into()),
+            ("system_patch_level".into(), 303010.into()),
+            ("boot_patch_level".into(), 30300102.into()),
+            ("vendor_patch_level".into(), 30300304.into()),
+            ("security_level".into(), "avf".into()),
+            ("fused".into(), 1.into()),
+        ]
+    }
+
+    fn get_valid_values_filtered<F: Fn(&str) -> bool>(filter: F) -> Vec<(Value, Value)> {
+        get_valid_values().into_iter().filter(|x| filter(x.0.as_text().unwrap())).collect()
+    }
+}
diff --git a/remote_provisioning/hwtrust/src/cbor/rkp/protected_data.rs b/remote_provisioning/hwtrust/src/cbor/rkp/protected_data.rs
new file mode 100644
index 0000000..637fc82
--- /dev/null
+++ b/remote_provisioning/hwtrust/src/cbor/rkp/protected_data.rs
@@ -0,0 +1,214 @@
+use crate::cbor::field_value::FieldValue;
+use crate::cbor::value_from_bytes;
+use crate::dice::ChainForm;
+use crate::eek;
+use crate::publickey::{KeyAgreementPublicKey, PublicKey};
+use crate::rkp::{ProtectedData, UdsCerts, UdsCertsEntry};
+use crate::session::Session;
+use anyhow::{anyhow, bail, Context, Result};
+use ciborium::value::Value;
+use coset::{iana, Algorithm, AsCborValue, CoseEncrypt, CoseKey, CoseRecipient, CoseSign1, Label};
+use openssl::cipher::Cipher;
+use openssl::cipher_ctx::CipherCtx;
+use openssl::pkey::{Id, PKey, Private};
+
+const COSE_RECIPIENT_PUBKEY_LABEL: i64 = -1;
+
+impl ProtectedData {
+    pub(crate) fn from_cose_encrypt(
+        session: &Session,
+        protected_data: CoseEncrypt,
+        challenge: &[u8],
+        verified_device_info: &Value,
+        tag: &[u8],
+    ) -> Result<ProtectedData> {
+        let (recipient, eek) = Self::match_recipient(&protected_data.recipients)?;
+
+        let mut headers = recipient.unprotected.rest;
+        let pubkey_index = headers
+            .iter()
+            .position(|p| p.0 == Label::Int(COSE_RECIPIENT_PUBKEY_LABEL))
+            .context("Unable to locate public key in COSE_encrypt recipients.")?;
+        let mut pubkey_cose = match CoseKey::from_cbor_value(headers.remove(pubkey_index).1) {
+            Ok(key) => key,
+            Err(e) => bail!("Error converting CBOR into COSE_key: {:?}", e),
+        };
+
+        Self::work_around_recipient_key_missing_alg(&mut pubkey_cose, &eek)?;
+
+        let pubkey = KeyAgreementPublicKey::from_cose_key(&pubkey_cose)?;
+        let encryption_key = eek::derive_ephemeral_symmetric_key(&eek, pubkey.pkey())
+            .with_context(|| format!("for pubkey {:?}", pubkey_cose))?;
+
+        let protected_data_plaintext = protected_data
+            .decrypt(&[], |ciphertext, aad| {
+                let (ciphertext, tag) = ciphertext.split_at(ciphertext.len() - 16);
+                let mut plaintext = Vec::new();
+                let mut ctx = CipherCtx::new().context("Unable to load cipher context")?;
+                // decrypt_init must be called twice because our IV is not 12 bytes, which is what
+                // AES-GCM wants by default. The first init tells openssl the cipher+mode, then we
+                // can tell openssl the IV len, and only after that can we set the non-standard IV.
+                ctx.decrypt_init(Some(Cipher::aes_256_gcm()), Some(&encryption_key), None)?;
+                ctx.set_iv_length(protected_data.unprotected.iv.len())?;
+                ctx.decrypt_init(None, None, Some(&protected_data.unprotected.iv))?;
+                ctx.set_tag(tag)?;
+                ctx.cipher_update(aad, None).context("Error setting AAD on cipher")?;
+                ctx.cipher_update_vec(ciphertext, &mut plaintext)
+                    .context("Error decrypting ciphertext")?;
+                ctx.cipher_final_vec(&mut plaintext).context("Error finalizing decryption")?;
+                Ok::<Vec<u8>, anyhow::Error>(plaintext)
+            })
+            .context("while decrypting ProtectedData")?;
+
+        Self::from_cbor_bytes(
+            session,
+            &protected_data_plaintext,
+            challenge,
+            verified_device_info,
+            tag,
+        )
+    }
+
+    fn from_cbor_bytes(
+        session: &Session,
+        plaintext_cbor: &[u8],
+        challenge: &[u8],
+        verified_device_info: &Value,
+        tag: &[u8],
+    ) -> Result<Self> {
+        let mut array = match value_from_bytes(plaintext_cbor) {
+            Ok(Value::Array(a)) => a,
+            Ok(other) => bail!("Expected array for ProtectedDataPayload, found {other:?}"),
+            Err(e) => bail!(
+                "Error '{e:?}' parsing ProtectedDataPayload '{}'",
+                hex::encode(plaintext_cbor)
+            ),
+        };
+
+        if array.len() != 2 && array.len() != 3 {
+            bail!("ProtectedDataPayload size must be 2 or 3, found {array:?}");
+        }
+
+        // pull items out in reverse order to avoid shifting the vector
+        let uds_certs = if array.len() != 3 {
+            None
+        } else {
+            let uds_certs_field = FieldValue::from_optional_value("UdsCerts", array.pop());
+            Self::to_uds_certs(uds_certs_field.into_map()?)?
+        };
+
+        let dice_chain =
+            Value::Array(FieldValue::from_optional_value("DiceChain", array.pop()).into_array()?);
+        let dice_chain = ChainForm::from_value(session, dice_chain)?;
+
+        let mac_key = Self::validate_mac_key(
+            challenge,
+            verified_device_info,
+            tag,
+            FieldValue::from_optional_value("SignedMac", array.pop()).into_cose_sign1()?,
+            dice_chain.leaf_public_key(),
+        )?;
+
+        Ok(ProtectedData::new(mac_key, dice_chain, uds_certs))
+    }
+
+    fn validate_mac_key(
+        challenge: &[u8],
+        verified_device_info: &Value,
+        tag: &[u8],
+        signed_mac: CoseSign1,
+        signer: &PublicKey,
+    ) -> Result<Vec<u8>> {
+        let mut aad: Vec<u8> = vec![];
+        ciborium::ser::into_writer(
+            // This can be optimized if/when ciborium exposes lower-level serialization routines
+            &Value::Array(vec![
+                Value::Bytes(challenge.to_vec()),
+                verified_device_info.clone(),
+                Value::Bytes(tag.to_vec()),
+            ]),
+            &mut aad,
+        )?;
+        signer.verify_cose_sign1(&signed_mac, &aad).context("verifying signed MAC")?;
+        signed_mac.payload.ok_or(anyhow!("SignedMac is missing the payload"))
+    }
+
+    fn to_uds_certs(kv_pairs: Vec<(Value, Value)>) -> Result<Option<UdsCerts>> {
+        if kv_pairs.is_empty() {
+            return Ok(None);
+        }
+
+        let mut uds_certs = UdsCerts::new();
+        for pair in kv_pairs {
+            match pair {
+                (Value::Text(signer), value) => uds_certs.add_signer(signer, value)?,
+                (k, v) => bail!("Expected (string, value), but found ({k:?}, {v:?}"),
+            }
+        }
+        Ok(Some(uds_certs))
+    }
+
+    fn work_around_recipient_key_missing_alg(
+        cose_key: &mut CoseKey,
+        eek: &PKey<Private>,
+    ) -> Result<()> {
+        let cose_alg = match eek.id() {
+            Id::X25519 => iana::Algorithm::ECDH_ES_HKDF_256,
+            Id::EC if eek.bits() == 256 => iana::Algorithm::ES256,
+            other => bail!("Unsupported EEK: {:?}, key size: {}", other, eek.bits()),
+        };
+
+        match &cose_key.alg {
+            None => cose_key.alg = Some(Algorithm::Assigned(cose_alg)),
+            Some(Algorithm::Assigned(alg)) if *alg == cose_alg => (),
+            Some(Algorithm::Assigned(alg)) => {
+                bail!("Algorithm mismatch between EEK ({cose_alg:?}) and recipient ({alg:?})")
+            }
+            other => bail!("COSE_Encrypt recipient pubkey has unexpected algorithm: {other:?}"),
+        }
+        Ok(())
+    }
+
+    /// Look through a set of COSE_recipients to see if any of them match a known EEK. If so,V
+    /// return the matching recipieint and EEK to the caller so they can perform key agreement.
+    fn match_recipient(recipients: &Vec<CoseRecipient>) -> Result<(CoseRecipient, PKey<Private>)> {
+        for r in recipients {
+            if r.unprotected.key_id == eek::X25519_EEK_ID {
+                return Ok((r.clone(), eek::x25519_geek()));
+            } else if r.unprotected.key_id == eek::P256_EEK_ID {
+                return Ok((r.clone(), eek::p256_geek()));
+            }
+        }
+        Err(anyhow!("Unable to locate a COSE_recipient matching any known EEK"))
+    }
+}
+
+impl UdsCerts {
+    pub fn add_signer(&mut self, signer: String, data: Value) -> Result<()> {
+        // For now, assume all signers are using x.509 certs. This may change in the future for
+        // platforms that need custom certification mechanisms for UDS_pub.
+        match self.0.get_mut(&signer) {
+            Some(_) => bail!("Signer '{signer}' entry found twice in the UdsCerts"),
+            None => self.0.insert(signer, UdsCertsEntry::from_cbor_value(data)?),
+        };
+        Ok(())
+    }
+}
+
+impl UdsCertsEntry {
+    fn from_cbor_value(data: Value) -> Result<Self> {
+        match data {
+            Value::Array(certs) => {
+                let mut cert_buffers = vec![];
+                for cert in certs {
+                    match cert {
+                        Value::Bytes(b) => cert_buffers.push(b),
+                        other => bail!("Expected UDS cert byte array found '{other:?}'"),
+                    }
+                }
+                UdsCertsEntry::new_x509_chain(cert_buffers)
+            }
+            other => Err(anyhow!("Expected CBOR array of certificates, found {other:?}")),
+        }
+    }
+}
diff --git a/remote_provisioning/hwtrust/src/dice.rs b/remote_provisioning/hwtrust/src/dice.rs
index feaf984..7373abc 100644
--- a/remote_provisioning/hwtrust/src/dice.rs
+++ b/remote_provisioning/hwtrust/src/dice.rs
@@ -2,7 +2,9 @@
 
 mod chain;
 mod entry;
+mod profile;
 
 pub use chain::{Chain, ChainForm, DegenerateChain};
 pub use entry::{ComponentVersion, ConfigDesc, DiceMode, Payload};
 pub(crate) use entry::{ConfigDescBuilder, PayloadBuilder};
+pub use profile::ProfileVersion;
diff --git a/remote_provisioning/hwtrust/src/dice/chain.rs b/remote_provisioning/hwtrust/src/dice/chain.rs
index 0d36aee..9a606cf 100644
--- a/remote_provisioning/hwtrust/src/dice/chain.rs
+++ b/remote_provisioning/hwtrust/src/dice/chain.rs
@@ -6,6 +6,7 @@
 use thiserror::Error;
 
 /// Enumeration of the different forms that a DICE chain can take.
+#[derive(Clone, Debug, Eq, PartialEq)]
 pub enum ChainForm {
     /// A proper DICE chain with multiple layers of trust.
     Proper(Chain),
@@ -15,7 +16,7 @@
 
 /// Represents a DICE chain. This consists of the root public key (which signs the first
 /// certificate), followed by a chain of certificates.
-#[derive(Debug)]
+#[derive(Clone, Eq, PartialEq)]
 pub struct Chain {
     root_public_key: PublicKey,
     payloads: Vec<Payload>,
@@ -33,6 +34,15 @@
     RepeatedKey(usize),
 }
 
+impl ChainForm {
+    pub(crate) fn leaf_public_key(&self) -> &PublicKey {
+        match self {
+            Self::Proper(chain) => chain.leaf().subject_public_key(),
+            Self::Degenerate(degenerate) => degenerate.public_key(),
+        }
+    }
+}
+
 impl Chain {
     /// Builds a [`Chain`] after checking that it is well-formed. The issuer of each entry must be
     /// equal to the subject of the previous entry. The chain is not allowed to contain any
@@ -102,6 +112,17 @@
     }
 }
 
+impl fmt::Debug for Chain {
+    fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
+        let mut debug = fmt.debug_struct("Chain");
+        debug.field("Root public key", &self.root_public_key.to_pem());
+        for (i, payload) in self.payloads.iter().enumerate() {
+            debug.field(&format!("DICE Certificate[{i}]"), payload);
+        }
+        debug.finish()
+    }
+}
+
 #[derive(Error, Debug, PartialEq, Eq)]
 pub(crate) enum DegenerateChainError {
     #[error("issuer empty")]
@@ -113,7 +134,7 @@
 /// A degenerate DICE chain. These chains consist of a single, self-signed certificate and the
 /// entries contain less information than usual. They are expected from devices that haven't
 /// implemented everything necessary to produce a proper DICE Chain.
-#[derive(Debug)]
+#[derive(Clone, Debug, Eq, PartialEq)]
 pub struct DegenerateChain {
     issuer: String,
     subject: String,
@@ -253,7 +274,7 @@
     #[test]
     fn degenerate_chain_valid() {
         let key = PrivateKey::from_pem(ED25519_KEY_PEM[0]).public_key();
-        DegenerateChain::new("issuer", "subject", key).unwrap();
+        DegenerateChain::new("issuer", "issuer", key).unwrap();
     }
 
     #[test]
diff --git a/remote_provisioning/hwtrust/src/dice/entry.rs b/remote_provisioning/hwtrust/src/dice/entry.rs
index 6c5abf4..2f6cbfd 100644
--- a/remote_provisioning/hwtrust/src/dice/entry.rs
+++ b/remote_provisioning/hwtrust/src/dice/entry.rs
@@ -18,7 +18,7 @@
 }
 
 /// The payload of a DICE chain entry.
-#[derive(Debug)]
+#[derive(Clone, Eq, PartialEq)]
 pub struct Payload {
     issuer: String,
     subject: String,
@@ -100,24 +100,47 @@
             writeln!(f, "Authority Desc: {}", hex::encode(authority_desc))?;
         }
         writeln!(f, "Authority Hash: {}", hex::encode(&self.authority_hash))?;
-        writeln!(f, "Config Desc:")?;
+        writeln!(f, "Config Desc {{")?;
         write!(f, "{}", &self.config_desc)?;
+        writeln!(f, "}}")?;
         Ok(())
     }
 }
 
+impl fmt::Debug for Payload {
+    fn fmt(&self, f: &mut Formatter) -> Result<(), fmt::Error> {
+        let mut debug = f.debug_struct("Payload");
+        debug.field("Issuer", &self.issuer);
+        debug.field("Subject", &self.subject);
+        debug.field("Mode", &self.mode);
+        if let Some(code_desc) = &self.code_desc {
+            debug.field("Code Desc", &hex::encode(code_desc));
+        }
+        debug.field("Code Hash", &hex::encode(&self.code_hash));
+        if let Some(config_hash) = &self.config_hash {
+            debug.field("Config Hash", &hex::encode(config_hash));
+        }
+        if let Some(authority_desc) = &self.authority_desc {
+            debug.field("Authority Desc", &hex::encode(authority_desc));
+        }
+        debug.field("Authority Hash", &hex::encode(&self.authority_hash));
+        debug.field("Config Desc", &self.config_desc);
+        debug.finish()
+    }
+}
+
 #[derive(Error, Debug, PartialEq, Eq)]
 pub(crate) enum PayloadBuilderError {
     #[error("issuer empty")]
     IssuerEmpty,
     #[error("subject empty")]
     SubjectEmpty,
-    #[error("bad code hash size")]
-    CodeHashSize,
-    #[error("bad config hash size")]
-    ConfigHashSize,
-    #[error("bad authority hash size")]
-    AuthorityHashSize,
+    #[error("bad code hash size, actual: {0}, expected: 32, 48, or 64")]
+    CodeHashSize(usize),
+    #[error("bad config hash size, actual: {0}, expected: {1}")]
+    ConfigHashSize(usize, usize),
+    #[error("bad authority hash size, actual: {0}, expected: {1}")]
+    AuthorityHashSize(usize, usize),
 }
 
 pub(crate) struct PayloadBuilder(Payload);
@@ -149,15 +172,18 @@
         }
         let used_hash_size = self.0.code_hash.len();
         if ![32, 48, 64].contains(&used_hash_size) {
-            return Err(PayloadBuilderError::CodeHashSize);
+            return Err(PayloadBuilderError::CodeHashSize(used_hash_size));
         }
         if let Some(ref config_hash) = self.0.config_hash {
             if config_hash.len() != used_hash_size {
-                return Err(PayloadBuilderError::ConfigHashSize);
+                return Err(PayloadBuilderError::ConfigHashSize(config_hash.len(), used_hash_size));
             }
         }
         if self.0.authority_hash.len() != used_hash_size {
-            return Err(PayloadBuilderError::AuthorityHashSize);
+            return Err(PayloadBuilderError::AuthorityHashSize(
+                self.0.authority_hash.len(),
+                used_hash_size,
+            ));
         }
         Ok(self.0)
     }
@@ -252,6 +278,8 @@
     component_version: Option<ComponentVersion>,
     resettable: bool,
     security_version: Option<u64>,
+    rkp_vm_marker: bool,
+    extensions: Vec<(String, String)>,
 }
 
 impl ConfigDesc {
@@ -274,6 +302,16 @@
     pub fn security_version(&self) -> Option<u64> {
         self.security_version
     }
+
+    /// Returns whether the component may be part of an RPK VM.
+    pub fn rkp_vm_marker(&self) -> bool {
+        self.rkp_vm_marker
+    }
+
+    /// Return any extensions present in the descriptor.
+    pub fn extensions(&self) -> &[(String, String)] {
+        &self.extensions
+    }
 }
 
 impl Display for ConfigDesc {
@@ -290,6 +328,12 @@
         if let Some(security_version) = &self.security_version {
             writeln!(f, "Security Version: {}", security_version)?;
         }
+        if self.rkp_vm_marker {
+            writeln!(f, "RKP VM Marker")?;
+        }
+        for (key, value) in &self.extensions {
+            writeln!(f, "{key}: {value}")?;
+        }
         Ok(())
     }
 }
@@ -334,6 +378,20 @@
         self.0.security_version = version;
         self
     }
+
+    /// Sets whether the component may be part of an RKP VM.
+    #[must_use]
+    pub fn rkp_vm_marker(mut self, rkp_vm_marker: bool) -> Self {
+        self.0.rkp_vm_marker = rkp_vm_marker;
+        self
+    }
+
+    /// Sets the extension key/value pairs.
+    #[must_use]
+    pub fn extensions(mut self, extensions: Vec<(String, String)>) -> Self {
+        self.0.extensions = extensions;
+        self
+    }
 }
 
 #[cfg(test)]
@@ -391,26 +449,26 @@
     #[test]
     fn payload_builder_bad_code_hash_size() {
         let err = valid_payload().code_hash(vec![1; 16]).build().unwrap_err();
-        assert_eq!(err, PayloadBuilderError::CodeHashSize);
+        assert_eq!(err, PayloadBuilderError::CodeHashSize(16));
     }
 
     #[test]
     fn payload_builder_bad_authority_hash_size() {
         let err = valid_payload().authority_hash(vec![1; 16]).build().unwrap_err();
-        assert_eq!(err, PayloadBuilderError::AuthorityHashSize);
+        assert_eq!(err, PayloadBuilderError::AuthorityHashSize(16, 64));
     }
 
     #[test]
     fn payload_builder_inconsistent_authority_hash_size() {
         let err =
             valid_payload().code_hash(vec![1; 32]).authority_hash(vec![1; 64]).build().unwrap_err();
-        assert_eq!(err, PayloadBuilderError::AuthorityHashSize);
+        assert_eq!(err, PayloadBuilderError::AuthorityHashSize(64, 32));
     }
 
     #[test]
     fn payload_builder_bad_config_hash_size() {
         let err = valid_payload().config_hash(Some(vec![1; 16])).build().unwrap_err();
-        assert_eq!(err, PayloadBuilderError::ConfigHashSize);
+        assert_eq!(err, PayloadBuilderError::ConfigHashSize(16, 64));
     }
 
     #[test]
@@ -420,7 +478,7 @@
             .config_hash(Some(vec![1; 32]))
             .build()
             .unwrap_err();
-        assert_eq!(err, PayloadBuilderError::ConfigHashSize);
+        assert_eq!(err, PayloadBuilderError::ConfigHashSize(32, 64));
     }
 
     fn valid_payload() -> PayloadBuilder {
diff --git a/remote_provisioning/hwtrust/src/dice/profile.rs b/remote_provisioning/hwtrust/src/dice/profile.rs
new file mode 100644
index 0000000..ae8d52f
--- /dev/null
+++ b/remote_provisioning/hwtrust/src/dice/profile.rs
@@ -0,0 +1,54 @@
+use std::error::Error;
+use std::fmt::{self, Display, Formatter};
+use std::str::FromStr;
+
+/// Versions of the Android Profile for DICE.
+#[derive(Debug, Default, Copy, Clone, PartialEq, Eq, Ord, PartialOrd)]
+pub enum ProfileVersion {
+    /// The version of the Android Profile for DICE that aligns with Android 13.
+    Android13,
+    /// The version of the Android Profile for DICE that aligns with Android 14.
+    #[default]
+    Android14,
+    /// The version of the Android Profile for DICE that aligns with Android 15.
+    Android15,
+    /// The version of the Android Profile for DICE that aligns with Android 16.
+    Android16,
+}
+
+impl Display for ProfileVersion {
+    fn fmt(&self, f: &mut Formatter) -> fmt::Result {
+        let profile_name = match self {
+            Self::Android13 => "android.13",
+            Self::Android14 => "android.14",
+            Self::Android15 => "android.15",
+            Self::Android16 => "android.16",
+        };
+        write!(f, "{profile_name}",)
+    }
+}
+
+/// An error which can be returned when parsing an Android Profile for DICE version.
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+pub struct ParseProfileVersionError(());
+
+impl fmt::Display for ParseProfileVersionError {
+    fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
+        write!(fmt, "unknown profile version")
+    }
+}
+
+impl Error for ParseProfileVersionError {}
+
+impl FromStr for ProfileVersion {
+    type Err = ParseProfileVersionError;
+
+    fn from_str(s: &str) -> Result<Self, Self::Err> {
+        Ok(match s {
+            "android.14" => Self::Android14,
+            "android.15" => Self::Android15,
+            "android.16" => Self::Android16,
+            _ => return Err(ParseProfileVersionError(())),
+        })
+    }
+}
diff --git a/remote_provisioning/hwtrust/src/eek.rs b/remote_provisioning/hwtrust/src/eek.rs
new file mode 100644
index 0000000..55127a5
--- /dev/null
+++ b/remote_provisioning/hwtrust/src/eek.rs
@@ -0,0 +1,109 @@
+//! This module contains the Endpoint Encryption Keys (EEK) utilities for encrypting
+//! factory payloads for CSR versions 1 & 2. EEK usage was dropped for CSR v3.
+//!
+//! NOTE: Since CSR version 3 drops the encryption requirement, Google is publishing
+//! the private Google EEKs so that testing on platforms that support CSR versions
+//! 1 & 2 have diagnostic parity with CSR v3 systems.
+
+use anyhow::{bail, Context, Result};
+use coset::{CborSerializable, CoseKdfContextBuilder, Nonce, PartyInfo, SuppPubInfoBuilder};
+use openssl::{
+    bn::{BigNum, BigNumContext},
+    derive::Deriver,
+    ec::{EcGroup, EcKey, EcPoint, PointConversionForm},
+    md::Md,
+    nid::Nid,
+    pkey::{HasPublic, Id, PKey, PKeyRef, Private, Public},
+    pkey_ctx::PkeyCtx,
+};
+
+pub const X25519_EEK_ID: &[u8] = b"\xd0\xae\xc1\x15\xca\x2a\xcf\x73\xae\x6b\xcc\xcb\xd1\x96\x1d\x65\xe8\xb1\xdd\xd7\x4a\x1a\x37\xb9\x43\x3a\x97\xd5\x99\xdf\x98\x08";
+// X25519_EEK_PUBLIC_X: b"\xbe\x85\xe7\x46\xc4\xa3\x42\x5a\x40\xd9\x36\x3a\xa6\x15\xd0\x2c\x58\x7e\x3d\xdc\x33\x02\x32\xd2\xfc\x5e\x1e\x87\x25\x5f\x72\x60";
+pub const X25519_EEK_PRIVATE: &[u8] = b"\x47\x66\x65\xdb\xaa\xe1\x1d\xdb\xd3\x03\xf7\xad\x68\xbb\xff\x8d\x90\xaf\x8a\x4f\xb8\xbf\x7c\xf3\x39\xc7\xe9\x73\xec\x70\x75\x8c";
+
+pub const P256_EEK_ID: &[u8] = b"\x35\x73\xb7\x3f\xa0\x8a\x80\x89\xb1\x26\x67\xe9\xcb\x7c\x75\xa1\xaf\x02\x61\xfc\x6e\x65\x03\x91\x3b\xd3\x4b\x7d\x14\x94\x3e\x46";
+pub const P256_EEK_PUBLIC_X: &[u8] = b"\xe0\x41\xcf\x2f\x0f\x34\x0f\x1c\x33\x2c\x41\xb0\xcf\xd7\x0c\x30\x55\x35\xd2\x1e\x6a\x47\x13\x4b\x2e\xd1\x48\x96\x7e\x24\x9c\x68";
+pub const P256_EEK_PUBLIC_Y: &[u8] = b"\x1f\xce\x45\xc5\xfb\x61\xba\x81\x21\xf9\xe5\x05\x9b\x9b\x39\x0e\x76\x86\x86\x47\xb8\x1e\x2f\x45\xf1\xce\xaf\xda\x3f\x80\x68\xdb";
+pub const P256_EEK_PRIVATE: &[u8] = b"\x00\xd1\x0a\x51\x59\xb2\xa0\x39\x43\xc8\x58\xf1\xdc\x3f\xc4\x0a\x03\x39\x31\x9d\x34\x01\x8f\x30\xa9\xc4\x46\x7e\x64\x61\x35\x6d\xdf";
+
+/// Get the well-known P256 GEEK private key.
+pub fn p256_geek() -> PKey<Private> {
+    let p256 = EcGroup::from_curve_name(Nid::X9_62_PRIME256V1).unwrap();
+    let private = BigNum::from_slice(P256_EEK_PRIVATE).unwrap();
+    let mut public_key = EcPoint::new(&p256).unwrap();
+    public_key
+        .set_affine_coordinates_gfp(
+            &p256,
+            &BigNum::from_slice(P256_EEK_PUBLIC_X).unwrap(),
+            &BigNum::from_slice(P256_EEK_PUBLIC_Y).unwrap(),
+            &mut BigNumContext::new().unwrap(),
+        )
+        .unwrap();
+
+    let ec_key = EcKey::from_private_components(&p256, &private, &public_key).unwrap();
+    PKey::from_ec_key(ec_key).unwrap()
+}
+
+/// Get the well-known X25519 GEEK private key.
+pub fn x25519_geek() -> PKey<Private> {
+    PKey::private_key_from_raw_bytes(X25519_EEK_PRIVATE, Id::X25519).unwrap()
+}
+
+pub fn derive_ephemeral_symmetric_key(
+    private: &PKeyRef<Private>,
+    public: &PKeyRef<Public>,
+) -> Result<[u8; 32]> {
+    let mut deriver = Deriver::new(private)?;
+    deriver.set_peer(public)?;
+    let shared_secret = deriver.derive_to_vec()?;
+
+    let supp_pub_info = SuppPubInfoBuilder::new().key_data_length(256).build();
+
+    let context = CoseKdfContextBuilder::new()
+        .algorithm(coset::iana::Algorithm::A256GCM)
+        .party_u_info(kdf_party_info(b"client", public)?)
+        .party_v_info(kdf_party_info(b"server", private)?)
+        .supp_pub_info(supp_pub_info)
+        .build();
+    let hkdf_info = match context.to_vec() {
+        Ok(v) => v,
+        Err(e) => bail!("Error serializing COSE_KDF_Context: {e}"),
+    };
+
+    let mut kdf = PkeyCtx::new_id(Id::HKDF)?;
+    kdf.derive_init()?;
+    kdf.set_hkdf_key(&shared_secret)?;
+    kdf.set_hkdf_md(Md::sha256())?;
+    kdf.add_hkdf_info(&hkdf_info)?;
+
+    let mut derived_key = [0; 32];
+    kdf.derive(Some(&mut derived_key))?;
+    Ok(derived_key)
+}
+
+fn kdf_party_info<T: HasPublic>(identity: &[u8], key: &PKeyRef<T>) -> Result<PartyInfo> {
+    Ok(PartyInfo {
+        identity: Some(identity.to_vec()),
+        nonce: Some(Nonce::Bytes(vec![])),
+        other: Some(raw_key_bytes(key)?),
+    })
+}
+
+fn raw_key_bytes<T: HasPublic>(key: &PKeyRef<T>) -> Result<Vec<u8>> {
+    match key.id() {
+        Id::X25519 => key.raw_public_key().context("Unable to fetch raw public key"),
+        Id::EC => {
+            let ec = key.ec_key()?;
+            let mut ctx = BigNumContext::new()?;
+            let mut uncompressed = ec.public_key().to_bytes(
+                ec.group(),
+                PointConversionForm::UNCOMPRESSED,
+                &mut ctx,
+            )?;
+            // uncompressed format is '04 | X | Y'. For KDF purposes, we just want 'X | Y'
+            uncompressed.remove(0);
+            Ok(uncompressed)
+        }
+        other => bail!("Unsupported public key type {other:?}"),
+    }
+}
diff --git a/remote_provisioning/hwtrust/src/lib.rs b/remote_provisioning/hwtrust/src/lib.rs
index 282ecb5..2b14dba 100644
--- a/remote_provisioning/hwtrust/src/lib.rs
+++ b/remote_provisioning/hwtrust/src/lib.rs
@@ -3,6 +3,8 @@
 
 pub mod dice;
 pub mod publickey;
+pub mod rkp;
 pub mod session;
 
 mod cbor;
+mod eek;
diff --git a/remote_provisioning/hwtrust/src/main.rs b/remote_provisioning/hwtrust/src/main.rs
index 1f50f52..9cfcc97 100644
--- a/remote_provisioning/hwtrust/src/main.rs
+++ b/remote_provisioning/hwtrust/src/main.rs
@@ -1,10 +1,13 @@
 //! A tool for handling data related to the hardware root-of-trust.
 
-use anyhow::Result;
+use anyhow::{bail, Result};
 use clap::{Parser, Subcommand, ValueEnum};
 use hwtrust::dice;
+use hwtrust::dice::ChainForm;
+use hwtrust::rkp;
 use hwtrust::session::{Options, Session};
-use std::fs;
+use std::io::BufRead;
+use std::{fs, io};
 
 #[derive(Parser)]
 /// A tool for handling data related to the hardware root-of-trust
@@ -12,11 +15,25 @@
 struct Args {
     #[clap(subcommand)]
     action: Action,
+
+    /// Verbose output, including parsed data structures.
+    #[clap(long)]
+    verbose: bool,
+
+    /// The VSR version to validate against. If omitted, the set of rules that are used have no
+    /// compromises or workarounds and new implementations should validate against them as it will
+    /// be the basis for future VSR versions.
+    #[clap(long, value_enum)]
+    vsr: Option<VsrVersion>,
 }
 
 #[derive(Subcommand)]
 enum Action {
-    VerifyDiceChain(VerifyDiceChainArgs),
+    /// Deprecated alias of dice-chain
+    VerifyDiceChain(DiceChainArgs),
+    DiceChain(DiceChainArgs),
+    FactoryCsr(FactoryCsrArgs),
+    Csr(CsrArgs),
 }
 
 #[derive(Parser)]
@@ -27,19 +44,30 @@
 ///
 /// [1] -- https://cs.android.com/android/platform/superproject/+/master:hardware/interfaces/security/rkp/aidl/android/hardware/security/keymint/IRemotelyProvisionedComponent.aidl
 /// [2] -- https://pigweed.googlesource.com/open-dice/+/refs/heads/main/docs/specification.md
-struct VerifyDiceChainArgs {
-    /// Dump the DICE chain on the standard output
-    #[clap(long)]
-    dump: bool,
-
+struct DiceChainArgs {
     /// Path to a file containing a DICE chain
     chain: String,
+}
 
-    /// The VSR version to validate against. If omitted, the set of rules that are used have no
-    /// compromises or workarounds and new implementations should validate against them as it will
-    /// be the basis for future VSR versions.
-    #[clap(long, value_enum)]
-    vsr: Option<VsrVersion>,
+#[derive(Parser)]
+/// Verify a CSR generated by the rkp_factory_extraction_tool
+///
+/// "v1" CSRs are also decrypted using the factory EEK.
+struct FactoryCsrArgs {
+    /// Path to a file containing one or more CSRs, in the "csr+json" format as defined by
+    /// rkp_factory_extraction_tool. Each line is interpreted as a separate JSON blob containing
+    /// a base64-encoded CSR.
+    csr_file: String,
+}
+
+#[derive(Parser)]
+/// Parse and verify a request payload that is suitable for the RKP server's SignCertificates API.
+/// In HALv3, this is the output of generateCertificateRequestV2. For previous HAL versions,
+/// the CSR is constructed by the remote provisioning service client, but is constructed from the
+/// outputs of generateCertificateRequest.
+struct CsrArgs {
+    /// Path to a file containing a single CSR, encoded as CBOR.
+    csr_file: String,
 }
 
 #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, ValueEnum)]
@@ -48,26 +76,101 @@
     Vsr13,
     /// VSR 14 / Android U / 2023
     Vsr14,
+    /// VSR 15 / Android V / 2024
+    Vsr15,
+    /// VSR 16 / Android W / 2025
+    Vsr16,
+}
+
+fn session_from_vsr(vsr: Option<VsrVersion>) -> Session {
+    Session {
+        options: match vsr {
+            Some(VsrVersion::Vsr13) => Options::vsr13(),
+            Some(VsrVersion::Vsr14) => Options::vsr14(),
+            Some(VsrVersion::Vsr15) => Options::vsr15(),
+            Some(VsrVersion::Vsr16) => {
+                println!();
+                println!();
+                println!("  ********************************************************************");
+                println!("  ! The selected VSR is not finalized and is subject to change.      !");
+                println!("  ! Please contact your TAM if you intend to depend on the           !");
+                println!("  ! validation rules use for the selected VSR.                       !");
+                println!("  ********************************************************************");
+                println!();
+                println!();
+                Options::vsr16()
+            }
+            None => Options::default(),
+        },
+    }
 }
 
 fn main() -> Result<()> {
     let args = Args::parse();
-    let Action::VerifyDiceChain(sub_args) = args.action;
-    let session = Session {
-        options: match sub_args.vsr {
-            Some(VsrVersion::Vsr13) => Options::vsr13(),
-            Some(VsrVersion::Vsr14) => Options::vsr14(),
-            None => Options::default(),
-        },
+    let message = match &args.action {
+        Action::VerifyDiceChain(sub_args) => {
+            println!();
+            println!("  ********************************************************************");
+            println!("  ! 'verify-dice-chain' has been deprecated in favor of 'dice-chain'.!");
+            println!("  ********************************************************************");
+            println!();
+            verify_dice_chain(&args, sub_args)?
+        }
+        Action::DiceChain(sub_args) => verify_dice_chain(&args, sub_args)?,
+        Action::FactoryCsr(sub_args) => parse_factory_csr(&args, sub_args)?,
+        Action::Csr(sub_args) => parse_csr(&args, sub_args)?,
     };
-    let chain = dice::Chain::from_cbor(&session, &fs::read(sub_args.chain)?)?;
-    println!("Success!");
-    if sub_args.dump {
-        print!("{}", chain);
-    }
+    println!("{}", message.unwrap_or(String::from("Success")));
     Ok(())
 }
 
+fn verify_dice_chain(args: &Args, sub_args: &DiceChainArgs) -> Result<Option<String>> {
+    let session = session_from_vsr(args.vsr);
+    let chain = dice::ChainForm::from_cbor(&session, &fs::read(&sub_args.chain)?)?;
+    if args.verbose {
+        println!("{chain:#?}");
+    }
+    if let ChainForm::Degenerate(_) = chain {
+        return Ok(Some(String::from(
+            "WARNING!
+The given 'degenerate' DICE chain is valid. However, the degenerate chain form is deprecated in
+favor of full DICE chains, rooted in ROM, that measure the system's boot components.",
+        )));
+    }
+    Ok(None)
+}
+
+fn parse_factory_csr(args: &Args, sub_args: &FactoryCsrArgs) -> Result<Option<String>> {
+    let session = session_from_vsr(args.vsr);
+    let input = &fs::File::open(&sub_args.csr_file)?;
+    let mut csr_count = 0;
+    for line in io::BufReader::new(input).lines() {
+        let line = line?;
+        if line.is_empty() {
+            continue;
+        }
+        let csr = rkp::FactoryCsr::from_json(&session, &line)?;
+        csr_count += 1;
+        if args.verbose {
+            println!("{csr_count}: {csr:#?}");
+        }
+    }
+    if csr_count == 0 {
+        bail!("No CSRs found in the input file '{}'", sub_args.csr_file);
+    }
+    Ok(None)
+}
+
+fn parse_csr(args: &Args, sub_args: &CsrArgs) -> Result<Option<String>> {
+    let session = session_from_vsr(args.vsr);
+    let input = &fs::File::open(&sub_args.csr_file)?;
+    let csr = rkp::Csr::from_cbor(&session, input)?;
+    if args.verbose {
+        print!("{csr:#?}");
+    }
+    Ok(None)
+}
+
 #[cfg(test)]
 mod tests {
     use super::*;
diff --git a/remote_provisioning/hwtrust/src/publickey.rs b/remote_provisioning/hwtrust/src/publickey.rs
index 562ec37..298c675 100644
--- a/remote_provisioning/hwtrust/src/publickey.rs
+++ b/remote_provisioning/hwtrust/src/publickey.rs
@@ -8,13 +8,20 @@
 use std::error::Error;
 use std::fmt;
 
-/// Enumeration of the kinds of key that are supported.
+/// The kinds of digital signature keys that are supported.
 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
-pub(crate) enum Kind {
+pub(crate) enum SignatureKind {
     Ed25519,
     Ec(EcKind),
 }
 
+/// The kinds of key agreement keys that are supported.
+#[derive(Clone, Copy, Debug, PartialEq, Eq)]
+pub(crate) enum KeyAgreementKind {
+    X25519,
+    Ec(EcKind),
+}
+
 /// Enumeration of the kinds of elliptic curve keys that are supported.
 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
 pub(crate) enum EcKind {
@@ -22,28 +29,40 @@
     P384,
 }
 
-/// Struct wrapping the public key and relevant validation methods.
-#[derive(Clone, Debug)]
+// Wraps PKey<Public> so we can implement some traits around it, allowing for derived traits on
+// types that include a PKey<Public>.
+#[derive(Clone)]
+struct PKeyPublicWrapper(PKey<Public>);
+
+/// Public key used for signature validation.
+#[derive(Clone, Debug, Eq, PartialEq)]
 pub struct PublicKey {
-    kind: Kind,
-    pkey: PKey<Public>,
+    kind: SignatureKind,
+    pkey: PKeyPublicWrapper,
+}
+
+/// Public key used for key agreement.
+#[derive(Clone, Debug, Eq, PartialEq)]
+pub struct KeyAgreementPublicKey {
+    kind: KeyAgreementKind,
+    pkey: PKeyPublicWrapper,
 }
 
 impl PublicKey {
-    pub(crate) fn kind(&self) -> Kind {
+    pub(crate) fn kind(&self) -> SignatureKind {
         self.kind
     }
 
     pub(crate) fn pkey(&self) -> &PKeyRef<Public> {
-        &self.pkey
+        &self.pkey.0
     }
 
     /// Verify that the signature obtained from signing the given message
     /// with the PublicKey matches the signature provided.
     pub fn verify(&self, signature: &[u8], message: &[u8]) -> Result<()> {
         let mut verifier = match self.kind {
-            Kind::Ed25519 => Verifier::new_without_digest(&self.pkey),
-            Kind::Ec(ec) => Verifier::new(digest_for_ec(ec), &self.pkey),
+            SignatureKind::Ed25519 => Verifier::new_without_digest(&self.pkey.0),
+            SignatureKind::Ec(ec) => Verifier::new(digest_for_ec(ec), &self.pkey.0),
         }
         .with_context(|| format!("Failed to create verifier {:?}", self.kind))?;
         let verified =
@@ -54,7 +73,54 @@
 
     /// Serializes the public key into a PEM-encoded SubjectPublicKeyInfo structure.
     pub fn to_pem(&self) -> String {
-        String::from_utf8(self.pkey.public_key_to_pem().unwrap()).unwrap()
+        self.pkey.to_pem()
+    }
+
+    fn pkey_kind<T: HasParams>(pkey: &PKeyRef<T>) -> Option<SignatureKind> {
+        match pkey.id() {
+            Id::ED25519 => Some(SignatureKind::Ed25519),
+            Id::EC => pkey_ec_kind(pkey).map(SignatureKind::Ec),
+            _ => None,
+        }
+    }
+}
+
+impl KeyAgreementPublicKey {
+    pub(crate) fn pkey(&self) -> &PKeyRef<Public> {
+        &self.pkey.0
+    }
+
+    /// Serializes the public key into a PEM-encoded SubjectPublicKeyInfo structure.
+    pub fn to_pem(&self) -> String {
+        self.pkey.to_pem()
+    }
+
+    fn pkey_kind(pkey: &PKeyRef<Public>) -> Option<KeyAgreementKind> {
+        match pkey.id() {
+            Id::X25519 => Some(KeyAgreementKind::X25519),
+            Id::EC => pkey_ec_kind(pkey).map(KeyAgreementKind::Ec),
+            _ => None,
+        }
+    }
+}
+
+impl Eq for PKeyPublicWrapper {}
+
+impl PartialEq for PKeyPublicWrapper {
+    fn eq(&self, rhs: &PKeyPublicWrapper) -> bool {
+        self.0.public_eq(&rhs.0)
+    }
+}
+
+impl PKeyPublicWrapper {
+    fn to_pem(&self) -> String {
+        String::from_utf8(self.0.public_key_to_pem().unwrap()).unwrap()
+    }
+}
+
+impl fmt::Debug for PKeyPublicWrapper {
+    fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
+        fmt.write_str(&self.to_pem())
     }
 }
 
@@ -74,17 +140,25 @@
     type Error = TryFromPKeyError;
 
     fn try_from(pkey: PKey<Public>) -> Result<Self, Self::Error> {
-        let kind = pkey_kind(&pkey).ok_or(TryFromPKeyError(()))?;
-        Ok(Self { kind, pkey })
+        let kind = PublicKey::pkey_kind(&pkey).ok_or(TryFromPKeyError(()))?;
+        Ok(Self { kind, pkey: PKeyPublicWrapper(pkey) })
     }
 }
 
-fn pkey_kind<T: HasParams>(pkey: &PKeyRef<T>) -> Option<Kind> {
+impl TryFrom<PKey<Public>> for KeyAgreementPublicKey {
+    type Error = TryFromPKeyError;
+
+    fn try_from(pkey: PKey<Public>) -> Result<Self, Self::Error> {
+        let kind = KeyAgreementPublicKey::pkey_kind(&pkey).ok_or(TryFromPKeyError(()))?;
+        Ok(Self { kind, pkey: PKeyPublicWrapper(pkey) })
+    }
+}
+
+fn pkey_ec_kind<T: HasParams>(pkey: &PKeyRef<T>) -> Option<EcKind> {
     match pkey.id() {
-        Id::ED25519 => Some(Kind::Ed25519),
         Id::EC => match pkey.ec_key().unwrap().group().curve_name() {
-            Some(Nid::X9_62_PRIME256V1) => Some(Kind::Ec(EcKind::P256)),
-            Some(Nid::SECP384R1) => Some(Kind::Ec(EcKind::P384)),
+            Some(Nid::X9_62_PRIME256V1) => Some(EcKind::P256),
+            Some(Nid::SECP384R1) => Some(EcKind::P384),
             _ => None,
         },
         _ => None,
@@ -106,6 +180,7 @@
     fn from_ed25519_pkey() {
         let pkey = load_public_pkey(testkeys::ED25519_KEY_PEM[0]);
         let key: PublicKey = pkey.clone().try_into().unwrap();
+        assert_eq!(key.kind, SignatureKind::Ed25519);
         assert_eq!(key.to_pem().as_bytes(), pkey.public_key_to_pem().unwrap());
     }
 
@@ -113,6 +188,7 @@
     fn from_p256_pkey() {
         let pkey = load_public_pkey(testkeys::P256_KEY_PEM[0]);
         let key: PublicKey = pkey.clone().try_into().unwrap();
+        assert_eq!(key.kind, SignatureKind::Ec(EcKind::P256));
         assert_eq!(key.to_pem().as_bytes(), pkey.public_key_to_pem().unwrap());
     }
 
@@ -120,6 +196,7 @@
     fn from_p384_pkey() {
         let pkey = load_public_pkey(testkeys::P384_KEY_PEM[0]);
         let key: PublicKey = pkey.clone().try_into().unwrap();
+        assert_eq!(key.kind, SignatureKind::Ec(EcKind::P384));
         assert_eq!(key.to_pem().as_bytes(), pkey.public_key_to_pem().unwrap());
     }
 
@@ -135,9 +212,70 @@
         assert!(PublicKey::try_from(pkey).is_err());
     }
 
+    #[test]
+    fn from_x25519_pkey_not_supported() {
+        let pkey = load_public_pkey(testkeys::X25519_KEY_PEM[0]);
+        assert!(PublicKey::try_from(pkey).is_err());
+    }
+
+    #[test]
+    fn key_agreement_key_from_x25519_pkey() {
+        let pkey = load_public_pkey(testkeys::X25519_KEY_PEM[0]);
+        let key: KeyAgreementPublicKey = pkey.clone().try_into().unwrap();
+        assert_eq!(key.kind, KeyAgreementKind::X25519);
+        assert_eq!(key.to_pem().as_bytes(), pkey.public_key_to_pem().unwrap());
+    }
+
+    #[test]
+    fn key_agreement_key_from_p256_pkey() {
+        let pkey = load_public_pkey(testkeys::P256_KEY_PEM[0]);
+        let key: KeyAgreementPublicKey = pkey.clone().try_into().unwrap();
+        assert_eq!(key.kind, KeyAgreementKind::Ec(EcKind::P256));
+        assert_eq!(key.to_pem().as_bytes(), pkey.public_key_to_pem().unwrap());
+    }
+
+    #[test]
+    fn key_agreement_key_from_p384_pkey() {
+        let pkey = load_public_pkey(testkeys::P384_KEY_PEM[0]);
+        let key: KeyAgreementPublicKey = pkey.clone().try_into().unwrap();
+        assert_eq!(key.kind, KeyAgreementKind::Ec(EcKind::P384));
+        assert_eq!(key.to_pem().as_bytes(), pkey.public_key_to_pem().unwrap());
+    }
+
+    #[test]
+    fn key_agreement_key_from_ed25519_pkey_not_supported() {
+        let pkey = load_public_pkey(testkeys::ED25519_KEY_PEM[0]);
+        assert!(KeyAgreementPublicKey::try_from(pkey).is_err());
+    }
+
     pub fn load_public_pkey(pem: &str) -> PKey<Public> {
         testkeys::public_from_private(&PKey::private_key_from_pem(pem.as_bytes()).unwrap())
     }
+
+    #[test]
+    fn verify_pkey_equality() {
+        let first = PKeyPublicWrapper(load_public_pkey(testkeys::ED25519_KEY_PEM[0]));
+        let second = PKeyPublicWrapper(load_public_pkey(testkeys::ED25519_KEY_PEM[0]));
+        assert_eq!(&first, &first);
+        assert_eq!(&first, &second);
+        assert_eq!(&second, &first);
+    }
+
+    #[test]
+    fn verify_key_kind_inequality() {
+        let ed25519 = PKeyPublicWrapper(load_public_pkey(testkeys::ED25519_KEY_PEM[0]));
+        let p256 = PKeyPublicWrapper(load_public_pkey(testkeys::P256_KEY_PEM[0]));
+        assert_ne!(&ed25519, &p256);
+        assert_ne!(&p256, &ed25519);
+    }
+
+    #[test]
+    fn verify_key_bits_inequality() {
+        let first = PKeyPublicWrapper(load_public_pkey(testkeys::P256_KEY_PEM[0]));
+        let second = PKeyPublicWrapper(load_public_pkey(testkeys::P256_KEY_PEM[1]));
+        assert_ne!(&first, &second);
+        assert_ne!(&second, &first);
+    }
 }
 
 /// Keys and key handling utilities for use in tests.
@@ -148,18 +286,18 @@
     use openssl::sign::Signer;
 
     pub struct PrivateKey {
-        kind: Kind,
+        kind: SignatureKind,
         pkey: PKey<Private>,
     }
 
     impl PrivateKey {
         pub fn from_pem(pem: &str) -> Self {
             let pkey = PKey::private_key_from_pem(pem.as_bytes()).unwrap();
-            let kind = pkey_kind(&pkey).expect("unsupported private key");
+            let kind = PublicKey::pkey_kind(&pkey).expect("unsupported private key");
             Self { kind, pkey }
         }
 
-        pub(crate) fn kind(&self) -> Kind {
+        pub(crate) fn kind(&self) -> SignatureKind {
             self.kind
         }
 
@@ -169,8 +307,8 @@
 
         pub fn sign(&self, message: &[u8]) -> Result<Vec<u8>> {
             let mut signer = match self.kind {
-                Kind::Ed25519 => Signer::new_without_digest(&self.pkey)?,
-                Kind::Ec(ec) => Signer::new(digest_for_ec(ec), &self.pkey)?,
+                SignatureKind::Ed25519 => Signer::new_without_digest(&self.pkey)?,
+                SignatureKind::Ec(ec) => Signer::new(digest_for_ec(ec), &self.pkey)?,
             };
             signer.sign_oneshot_to_vec(message).context("signing message")
         }
@@ -182,6 +320,11 @@
         PKey::public_key_from_der(&pkey.public_key_to_der().unwrap()).unwrap()
     }
 
+    /// A selection of X25519 private keys.
+    pub const X25519_KEY_PEM: &[&str] = &["-----BEGIN PRIVATE KEY-----\n\
+        MC4CAQAwBQYDK2VuBCIEIMDLdDFad6CwwacwNtW/kQujlrAkxIjQ/Co3DleSd9xV\n\
+        -----END PRIVATE KEY-----\n"];
+
     /// A selection of Ed25519 private keys.
     pub const ED25519_KEY_PEM: &[&str] = &["-----BEGIN PRIVATE KEY-----\n\
         MC4CAQAwBQYDK2VwBCIEILKW0KEeuieFxhDAzigQPE4XRTiQx+0/AlAjJqHmUWE6\n\
diff --git a/remote_provisioning/hwtrust/src/rkp.rs b/remote_provisioning/hwtrust/src/rkp.rs
new file mode 100644
index 0000000..14929f1
--- /dev/null
+++ b/remote_provisioning/hwtrust/src/rkp.rs
@@ -0,0 +1,17 @@
+//! This module contains data types used in Remote Key Provisioning.
+
+mod csr;
+mod device_info;
+mod factory_csr;
+mod protected_data;
+
+pub use csr::Csr;
+
+pub use device_info::{
+    DeviceInfo, DeviceInfoBootloaderState, DeviceInfoSecurityLevel, DeviceInfoVbState,
+    DeviceInfoVersion,
+};
+
+pub(crate) use protected_data::{ProtectedData, UdsCerts, UdsCertsEntry};
+
+pub use factory_csr::FactoryCsr;
diff --git a/remote_provisioning/hwtrust/src/rkp/csr.rs b/remote_provisioning/hwtrust/src/rkp/csr.rs
new file mode 100644
index 0000000..23c3081
--- /dev/null
+++ b/remote_provisioning/hwtrust/src/rkp/csr.rs
@@ -0,0 +1,48 @@
+use std::fmt;
+
+use crate::{dice::Chain, rkp::DeviceInfo};
+
+use super::ProtectedData;
+
+/// Represents a Certificate Signing Request that is sent to an RKP backend to request
+/// certificates to be signed for a set of public keys. The CSR is partially generated by an
+/// IRemotelyProvisionedComponent HAL. The set of public keys to be signed is authenticated
+/// (signed) with a device-unique key.
+#[derive(Clone, Eq, PartialEq)]
+pub enum Csr {
+    /// CSR V2 was introduced in Android T. In this version, the payload is encrypted using
+    /// an Endpoint Encryption Key (EEK).
+    V2 {
+        /// Describes the device that is requesting certificates.
+        device_info: DeviceInfo,
+        /// This is the challenge that is authenticated inside the protected data.
+        challenge: Vec<u8>,
+        /// Contains the plaintext of the payload that was encrypted to an EEK.
+        protected_data: ProtectedData,
+    },
+    /// CSR V3 was introduced in Android T. This version drops encryption of the payload.
+    V3 {
+        /// Describes the device that is requesting certificates.
+        device_info: DeviceInfo,
+        /// The DICE chain for the device
+        dice_chain: Chain,
+    },
+}
+
+impl fmt::Debug for Csr {
+    fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
+        match self {
+            Csr::V2 { device_info, challenge, protected_data } => fmt
+                .debug_struct("CSR V2")
+                .field("DeviceInfo", &device_info)
+                .field("Challenge", &hex::encode(challenge))
+                .field("ProtectedData", &protected_data)
+                .finish(),
+            Csr::V3 { device_info, dice_chain } => fmt
+                .debug_struct("CSR V3")
+                .field("DeviceInfo", &device_info)
+                .field("DiceChain", &dice_chain)
+                .finish(),
+        }
+    }
+}
diff --git a/remote_provisioning/hwtrust/src/rkp/device_info.rs b/remote_provisioning/hwtrust/src/rkp/device_info.rs
new file mode 100644
index 0000000..c99f74d
--- /dev/null
+++ b/remote_provisioning/hwtrust/src/rkp/device_info.rs
@@ -0,0 +1,207 @@
+use anyhow::anyhow;
+use hex;
+use std::fmt;
+
+#[non_exhaustive]
+#[derive(Clone, Eq, PartialEq)]
+/// Describes a device that is registered with the RKP backend. This implementation contains fields
+/// common to all versions defined in DeviceInfo.aidl.
+pub struct DeviceInfo {
+    /// Version of this data structure.
+    pub version: DeviceInfoVersion,
+    /// The device's marketed brand.
+    pub brand: String,
+    /// The device maker.
+    pub manufacturer: String,
+    /// A variant of a device. Multiple products may be built off the same device.
+    pub product: String,
+    /// End-user-visible name of the product.
+    pub model: String,
+    /// The high-level industrial design. What makes up a "device" is generally hardware
+    /// characteristics like form factor, cpu, etc. Multiple products/models may be shipped on
+    /// the same underlying device.
+    pub device: String,
+    /// Verified boot state.
+    pub vb_state: DeviceInfoVbState,
+    /// Whether the bootloader is locked or not.
+    pub bootloader_state: DeviceInfoBootloaderState,
+    /// Digest of the verified boot metadata structures.
+    pub vbmeta_digest: Vec<u8>,
+    /// Partner-defined operating system version.
+    pub os_version: Option<String>,
+    /// Patch level of the system partition.
+    pub system_patch_level: u32,
+    /// Patch level of the kernel.
+    pub boot_patch_level: u32,
+    /// Patch level of the vendor partition.
+    pub vendor_patch_level: u32,
+    /// If backed by KeyMint, this is the security level of the HAL.
+    pub security_level: Option<DeviceInfoSecurityLevel>,
+    /// Whether or not secure boot is enforced/required by the SoC.
+    pub fused: bool,
+}
+
+impl fmt::Debug for DeviceInfo {
+    fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
+        let security_level: &dyn fmt::Debug = self.security_level.as_ref().map_or(&"<none>", |s| s);
+        let os_version: &dyn fmt::Debug = self.os_version.as_ref().map_or(&"<none>", |v| v);
+
+        fmt.debug_struct("DeviceInfo")
+            .field("version", &self.version)
+            .field("brand", &self.brand)
+            .field("manufacturer", &self.manufacturer)
+            .field("product", &self.product)
+            .field("model", &self.model)
+            .field("device", &self.device)
+            .field("vb_state", &self.vb_state)
+            .field("bootloader_state", &self.bootloader_state)
+            .field("vbmeta_digest", &hex::encode(&self.vbmeta_digest))
+            .field("os_version", os_version)
+            .field("system_patch_level", &self.system_patch_level)
+            .field("boot_patch_level", &self.boot_patch_level)
+            .field("vendor_patch_level", &self.vendor_patch_level)
+            .field("security_level", security_level)
+            .field("fused", &self.fused)
+            .finish()
+    }
+}
+
+#[derive(Copy, Clone, Debug, Eq, PartialEq)]
+/// Whether the bootloader allows unsigned or third-party-signed images.
+pub enum DeviceInfoBootloaderState {
+    /// The bootloader is locked, and will only allow signed images.
+    Locked,
+    /// The bootloader will load arbitrary images.
+    Unlocked,
+    /// This field is a placeholder for the AVF backend.
+    Avf,
+}
+
+impl TryFrom<&str> for DeviceInfoBootloaderState {
+    type Error = anyhow::Error;
+
+    fn try_from(s: &str) -> Result<Self, Self::Error> {
+        match s.to_ascii_lowercase().as_str() {
+            "locked" => Ok(Self::Locked),
+            "unlocked" => Ok(Self::Unlocked),
+            "avf" => Ok(Self::Avf),
+            _ => Err(anyhow!("Invalid bootloader state: `{s}`")),
+        }
+    }
+}
+
+#[derive(Copy, Clone, Debug, Eq, PartialEq)]
+/// State of the verified boot validation.
+pub enum DeviceInfoVbState {
+    /// The device booted an OEM-signed image.
+    Green,
+    /// The device booted an image signed by a key set by the end user.
+    Yellow,
+    /// The bootloader is unlocked, and no guarantees of image integrity are available.
+    Orange,
+    /// This field is a placeholder for the AVF backend.
+    Avf,
+}
+
+impl TryFrom<&str> for DeviceInfoVbState {
+    type Error = anyhow::Error;
+
+    fn try_from(s: &str) -> Result<Self, Self::Error> {
+        match s.to_ascii_lowercase().as_str() {
+            "green" => Ok(Self::Green),
+            "yellow" => Ok(Self::Yellow),
+            "orange" => Ok(Self::Orange),
+            "avf" => Ok(Self::Avf),
+            _ => Err(anyhow!("Invalid VB state: `{s}`")),
+        }
+    }
+}
+
+#[derive(Copy, Clone, Debug, Eq, PartialEq)]
+/// The version of the DeviceInfo structure, which may updated with HAL changes.
+pub enum DeviceInfoVersion {
+    /// First supported version. Prior to this (V1), almost all fields were optional.
+    V2,
+    /// Explicit version removed from the CBOR. Otherwise identical to V2.
+    V3,
+}
+
+impl TryFrom<u32> for DeviceInfoVersion {
+    type Error = anyhow::Error;
+
+    fn try_from(i: u32) -> Result<Self, Self::Error> {
+        match i {
+            2 => Ok(Self::V2),
+            3 => Ok(Self::V3),
+            _ => Err(anyhow!("Invalid version: `{i}`")),
+        }
+    }
+}
+
+#[derive(Copy, Clone, Debug, Eq, PartialEq)]
+/// This corresponds with where KeyMint's backing service lives: a TEE or in a separate SE.
+pub enum DeviceInfoSecurityLevel {
+    /// KeyMint's backend runs in a Trusted Execution Environment.
+    Tee,
+    /// KeyMint's backend runs in a Secure Element.
+    StrongBox,
+    /// AVF's backend.
+    Avf,
+}
+
+impl TryFrom<&str> for DeviceInfoSecurityLevel {
+    type Error = anyhow::Error;
+
+    fn try_from(s: &str) -> Result<Self, Self::Error> {
+        match s.to_ascii_lowercase().as_str() {
+            "strongbox" => Ok(Self::StrongBox),
+            "tee" => Ok(Self::Tee),
+            "avf" => Ok(Self::Avf),
+            _ => Err(anyhow!("Invalid security level: `{s}`")),
+        }
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn bootloader_state_from_string() {
+        assert_eq!(
+            DeviceInfoBootloaderState::try_from("LoCkEd").unwrap(),
+            DeviceInfoBootloaderState::Locked
+        );
+        assert_eq!(
+            DeviceInfoBootloaderState::try_from("UNLocked").unwrap(),
+            DeviceInfoBootloaderState::Unlocked
+        );
+        DeviceInfoBootloaderState::try_from("nope").unwrap_err();
+    }
+
+    #[test]
+    fn vb_state_from_string() {
+        assert_eq!(DeviceInfoVbState::try_from("greEN").unwrap(), DeviceInfoVbState::Green);
+        assert_eq!(DeviceInfoVbState::try_from("YeLLoW").unwrap(), DeviceInfoVbState::Yellow);
+        assert_eq!(DeviceInfoVbState::try_from("ORange").unwrap(), DeviceInfoVbState::Orange);
+        DeviceInfoVbState::try_from("bad").unwrap_err();
+    }
+
+    #[test]
+    fn version_from_int() {
+        DeviceInfoVersion::try_from(1).unwrap_err();
+        assert_eq!(DeviceInfoVersion::try_from(2).unwrap(), DeviceInfoVersion::V2);
+        assert_eq!(DeviceInfoVersion::try_from(3).unwrap(), DeviceInfoVersion::V3);
+        DeviceInfoVersion::try_from(4).unwrap_err();
+    }
+
+    #[test]
+    fn security_level_from_string() {
+        assert_eq!(
+            DeviceInfoSecurityLevel::try_from("StrongBOX").unwrap(),
+            DeviceInfoSecurityLevel::StrongBox
+        );
+        assert_eq!(DeviceInfoSecurityLevel::try_from("TeE").unwrap(), DeviceInfoSecurityLevel::Tee);
+        DeviceInfoSecurityLevel::try_from("insecure").unwrap_err();
+    }
+}
diff --git a/remote_provisioning/hwtrust/src/rkp/factory_csr.rs b/remote_provisioning/hwtrust/src/rkp/factory_csr.rs
new file mode 100644
index 0000000..47fbb95
--- /dev/null
+++ b/remote_provisioning/hwtrust/src/rkp/factory_csr.rs
@@ -0,0 +1,229 @@
+use crate::rkp::Csr;
+use crate::session::Session;
+use anyhow::{bail, Result};
+use serde_json::{Map, Value};
+
+/// Represents a "Factory CSR", which is a JSON value captured for each device on the factory
+/// line. This JSON is uploaded to the RKP backend to register the device. We reuse the CSR
+/// (Certificate Signing Request) format for this as an implementation convenience. The CSR
+/// actually contains an empty set of keys for which certificates are needed.
+#[non_exhaustive]
+#[derive(Debug, Eq, PartialEq)]
+pub struct FactoryCsr {
+    /// The CSR, as created by an IRemotelyProvisionedComponent HAL.
+    pub csr: Csr,
+    /// The name of the HAL that generated the CSR.
+    pub name: String,
+}
+
+fn get_string_from_map(fields: &Map<String, Value>, key: &str) -> Result<String> {
+    match fields.get(key) {
+        Some(Value::String(s)) => Ok(s.to_string()),
+        Some(v) => bail!("Unexpected type for '{key}'. Expected String, found '{v:?}'"),
+        None => bail!("Unable to locate '{key}' in input"),
+    }
+}
+
+impl FactoryCsr {
+    /// Parse the input JSON string into a CSR that was captured on the factory line. The
+    /// format of the JSON data is defined by rkp_factory_extraction_tool.
+    pub fn from_json(session: &Session, json: &str) -> Result<Self> {
+        match serde_json::from_str(json) {
+            Ok(Value::Object(map)) => Self::from_map(session, map),
+            Ok(unexpected) => bail!("Expected a map, got some other type: {unexpected}"),
+            Err(e) => bail!("Error parsing input json: {e}"),
+        }
+    }
+
+    fn from_map(session: &Session, fields: Map<String, Value>) -> Result<Self> {
+        let base64 = get_string_from_map(&fields, "csr")?;
+        let name = get_string_from_map(&fields, "name")?;
+        let csr = Csr::from_base64_cbor(session, &base64)?;
+        Ok(Self { csr, name })
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use crate::cbor::rkp::csr::testutil::{parse_pem_public_key_or_panic, test_device_info};
+    use crate::dice::{ChainForm, DegenerateChain};
+    use crate::rkp::device_info::DeviceInfoVersion;
+    use crate::rkp::factory_csr::FactoryCsr;
+    use crate::rkp::{ProtectedData, UdsCerts, UdsCertsEntry};
+    use anyhow::anyhow;
+    use itertools::Itertools;
+    use openssl::{pkey::PKey, x509::X509};
+    use std::fs;
+    use std::fs::File;
+
+    fn json_map_from_file(path: &str) -> Result<Map<String, Value>> {
+        let input = File::open(path)?;
+        match serde_json::from_reader(input)? {
+            Value::Object(map) => Ok(map),
+            other => Err(anyhow!("Unexpected JSON. Wanted a map, found {other:?}")),
+        }
+    }
+
+    #[test]
+    fn from_json_valid_v2_ed25519() {
+        let json = fs::read_to_string("testdata/factory_csr/v2_ed25519_valid.json").unwrap();
+        let csr = FactoryCsr::from_json(&Session::default(), &json).unwrap();
+        let subject_public_key = parse_pem_public_key_or_panic(
+            "-----BEGIN PUBLIC KEY-----\n\
+            MCowBQYDK2VwAyEAOhWsfxcBLgUfLLdqpb8cLUWutkkPtfIqDRfJC3LUihI=\n\
+            -----END PUBLIC KEY-----\n",
+        );
+        let degenerate = ChainForm::Degenerate(
+            DegenerateChain::new("self-signed", "self-signed", subject_public_key).unwrap(),
+        );
+        let chain = [
+            "-----BEGIN CERTIFICATE-----\n\
+             MIIBaDCCARqgAwIBAgIBezAFBgMrZXAwKzEVMBMGA1UEChMMRmFrZSBDb21wYW55\n\
+             MRIwEAYDVQQDEwlGYWtlIFJvb3QwHhcNMjMwODAxMjI1MTM0WhcNMjMwODMxMjI1\n\
+             MTM0WjArMRUwEwYDVQQKEwxGYWtlIENvbXBhbnkxEjAQBgNVBAMTCUZha2UgUm9v\n\
+             dDAqMAUGAytlcAMhAJYhPNIeQXe6+GPFiQAg4WtK+D8HuWaF6Es4X3HgDzq7o2Mw\n\
+             YTAdBgNVHQ4EFgQUDR0DF3abDeR3WXSlIhpN07R049owHwYDVR0jBBgwFoAUDR0D\n\
+             F3abDeR3WXSlIhpN07R049owDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC\n\
+             AgQwBQYDK2VwA0EAWNEhXrATWj4MXT/n38OwbngUm/n/5+vGFqV0aXuJPX/8d6Yx\n\
+             BbX/LFv6m8/VuPuItSqK4AudgwZJoupR/lknDg==\n\
+             -----END CERTIFICATE-----\n",
+            "-----BEGIN CERTIFICATE-----\n\
+             MIIBbDCCAR6gAwIBAgICAcgwBQYDK2VwMCsxFTATBgNVBAoTDEZha2UgQ29tcGFu\n\
+             eTESMBAGA1UEAxMJRmFrZSBSb290MB4XDTIzMDgwMTIyNTEzNFoXDTIzMDgzMTIy\n\
+             NTEzNFowLjEVMBMGA1UEChMMRmFrZSBDb21wYW55MRUwEwYDVQQDEwxGYWtlIENo\n\
+             aXBzZXQwKjAFBgMrZXADIQA6Fax/FwEuBR8st2qlvxwtRa62SQ+18ioNF8kLctSK\n\
+             EqNjMGEwHQYDVR0OBBYEFEbOrkgBL2SUCLJayyvpc+oR7m6/MB8GA1UdIwQYMBaA\n\
+             FA0dAxd2mw3kd1l0pSIaTdO0dOPaMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/\n\
+             BAQDAgIEMAUGAytlcANBANJmKGgiZP3tqtjnHpbmR3ypkXtvuqmo6KTBIHKsGKAO\n\
+             mH8qlMQPLmNSdxTs3OnVrlxQwZqXxHjVHS/6OpkkFgo=\n\
+             -----END CERTIFICATE-----\n",
+        ];
+        let chain = chain
+            .iter()
+            .map(|pem| X509::from_pem(pem.as_bytes()).unwrap().to_der().unwrap())
+            .collect_vec();
+
+        let mut uds_certs = UdsCerts::new();
+        uds_certs
+            .0
+            .insert("google-test".to_string(), UdsCertsEntry::new_x509_chain(chain).unwrap());
+        assert_eq!(
+            csr,
+            FactoryCsr {
+                csr: Csr::V2 {
+                    device_info: test_device_info(DeviceInfoVersion::V2),
+                    challenge: b"\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
+                        .to_vec(),
+                    protected_data: ProtectedData::new(vec![0; 32], degenerate, Some(uds_certs)),
+                },
+                name: "default".to_string(),
+            }
+        );
+    }
+
+    #[test]
+    fn from_json_valid_v3_ed25519() {
+        let json = fs::read_to_string("testdata/factory_csr/v3_ed25519_valid.json").unwrap();
+        let csr = FactoryCsr::from_json(&Session::default(), &json).unwrap();
+        if let Csr::V3 { device_info, dice_chain } = csr.csr {
+            assert_eq!(device_info, test_device_info(DeviceInfoVersion::V3));
+            let root_public_key = parse_pem_public_key_or_panic(
+                "-----BEGIN PUBLIC KEY-----\n\
+                MCowBQYDK2VwAyEA3FEn/nhqoGOKNok1AJaLfTKI+aFXHf4TfC42vUyPU6s=\n\
+                -----END PUBLIC KEY-----\n",
+            );
+            assert_eq!(dice_chain.root_public_key(), &root_public_key);
+            assert_eq!(dice_chain.payloads().len(), 1);
+        } else {
+            panic!("Parsed CSR was not V3: {:?}", csr);
+        }
+    }
+
+    #[test]
+    fn from_json_valid_v2_p256() {
+        let json = fs::read_to_string("testdata/factory_csr/v2_p256_valid.json").unwrap();
+        let csr = FactoryCsr::from_json(&Session::default(), &json).unwrap();
+        let pem = "-----BEGIN PUBLIC KEY-----\n\
+                   MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERd9pHZbUJ/b4IleUGDN8fs8+LDxE\n\
+                   vG6VX1dkw0sClFs4imbzfXGbocEq74S7TQiyZkd1LhY6HRZnTC51KoGDIA==\n\
+                   -----END PUBLIC KEY-----\n";
+        let subject_public_key =
+            PKey::public_key_from_pem(pem.as_bytes()).unwrap().try_into().unwrap();
+        let degenerate = ChainForm::Degenerate(
+            DegenerateChain::new("self-signed", "self-signed", subject_public_key).unwrap(),
+        );
+        assert_eq!(
+            csr,
+            FactoryCsr {
+                csr: Csr::V2 {
+                    device_info: test_device_info(DeviceInfoVersion::V2),
+                    challenge: b"\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
+                        .to_vec(),
+                    protected_data: ProtectedData::new(vec![0; 32], degenerate, None),
+                },
+                name: "default".to_string(),
+            }
+        );
+    }
+
+    #[test]
+    fn from_json_valid_v3_p256() {
+        let json = fs::read_to_string("testdata/factory_csr/v3_p256_valid.json").unwrap();
+        let csr = FactoryCsr::from_json(&Session::default(), &json).unwrap();
+        if let Csr::V3 { device_info, dice_chain } = csr.csr {
+            assert_eq!(device_info, test_device_info(DeviceInfoVersion::V3));
+            let root_public_key = parse_pem_public_key_or_panic(
+                "-----BEGIN PUBLIC KEY-----\n\
+                MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqT6ujVegwBbVWtsZeZmvN4WO3THx\n\
+                zpPPnt2rAOdqL9DSDZcIBbLas5xh9psaEaD0o/0KxlUVZplO/BPmRf3Ycg==\n\
+                -----END PUBLIC KEY-----\n",
+            );
+            assert_eq!(dice_chain.root_public_key(), &root_public_key);
+            assert_eq!(dice_chain.payloads().len(), 1);
+        } else {
+            panic!("Parsed CSR was not V3: {:?}", csr);
+        }
+    }
+
+    #[test]
+    fn from_json_name_is_missing() {
+        let mut value = json_map_from_file("testdata/factory_csr/v2_ed25519_valid.json").unwrap();
+        value.remove_entry("name");
+        let json = serde_json::to_string(&value).unwrap();
+        let err = FactoryCsr::from_json(&Session::default(), &json).unwrap_err();
+        assert!(err.to_string().contains("Unable to locate 'name'"));
+    }
+
+    #[test]
+    fn from_json_name_is_wrong_type() {
+        let mut value = json_map_from_file("testdata/factory_csr/v2_ed25519_valid.json").unwrap();
+        value.insert("name".to_string(), Value::Object(Map::default()));
+        let json = serde_json::to_string(&value).unwrap();
+        let err = FactoryCsr::from_json(&Session::default(), &json).unwrap_err();
+        assert!(err.to_string().contains("Unexpected type for 'name'"));
+    }
+
+    #[test]
+    fn from_json_csr_is_missing() {
+        let json = r#"{ "name": "default" }"#;
+        let err = FactoryCsr::from_json(&Session::default(), json).unwrap_err();
+        assert!(err.to_string().contains("Unable to locate 'csr'"));
+    }
+
+    #[test]
+    fn from_json_csr_is_wrong_type() {
+        let json = r#"{ "csr": 3.1415, "name": "default" }"#;
+        let err = FactoryCsr::from_json(&Session::default(), json).unwrap_err();
+        assert!(err.to_string().contains("Unexpected type for 'csr'"));
+    }
+
+    #[test]
+    fn from_json_extra_tag_is_ignored() {
+        let mut value = json_map_from_file("testdata/factory_csr/v2_ed25519_valid.json").unwrap();
+        value.insert("extra".to_string(), Value::Bool(true));
+        let json = serde_json::to_string(&value).unwrap();
+        let csr = FactoryCsr::from_json(&Session::default(), &json).unwrap();
+        assert_eq!(csr.name, "default");
+    }
+}
diff --git a/remote_provisioning/hwtrust/src/rkp/protected_data.rs b/remote_provisioning/hwtrust/src/rkp/protected_data.rs
new file mode 100644
index 0000000..a4fa5bd
--- /dev/null
+++ b/remote_provisioning/hwtrust/src/rkp/protected_data.rs
@@ -0,0 +1,71 @@
+use anyhow::Result;
+use openssl::x509::X509;
+use std::{collections::HashMap, fmt};
+
+use crate::dice::ChainForm;
+
+#[derive(Clone, Eq, PartialEq)]
+pub struct ProtectedData {
+    mac_key: Vec<u8>,
+    dice_chain: ChainForm,
+    uds_certs: Option<UdsCerts>,
+}
+
+#[derive(Clone, Debug, Default, Eq, PartialEq)]
+pub struct UdsCerts(pub(crate) HashMap<String, UdsCertsEntry>);
+
+/// Represent entries in the UDS certs mapping as an enum to support special cases in the future
+/// where the input is not actually x.509 certs.
+#[derive(Clone, Eq, PartialEq)]
+pub enum UdsCertsEntry {
+    /// A chain of X.509 certificates that certify the UDS
+    X509Chain(Vec<Vec<u8>>),
+}
+
+impl ProtectedData {
+    pub fn new(mac_key: Vec<u8>, dice_chain: ChainForm, uds_certs: Option<UdsCerts>) -> Self {
+        Self { mac_key, dice_chain, uds_certs }
+    }
+}
+
+impl UdsCerts {
+    pub fn new() -> Self {
+        Self(HashMap::new())
+    }
+}
+
+impl UdsCertsEntry {
+    pub(crate) fn new_x509_chain(der_encoded_chain: Vec<Vec<u8>>) -> Result<Self> {
+        Ok(Self::X509Chain(der_encoded_chain))
+    }
+}
+
+impl fmt::Debug for ProtectedData {
+    fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
+        fmt.debug_struct("ProtectedData")
+            .field("mac_key", &hex::encode(&self.mac_key))
+            .field("dice_chain", &self.dice_chain)
+            .field("uds_certs", &self.uds_certs)
+            .finish()
+    }
+}
+
+impl fmt::Debug for UdsCertsEntry {
+    fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
+        match self {
+            Self::X509Chain(v) => format_x509_chain(fmt, v),
+        }
+    }
+}
+
+fn format_x509_chain(fmt: &mut fmt::Formatter, chain: &Vec<Vec<u8>>) -> fmt::Result {
+    for c in chain {
+        fmt.write_str(&x509_der_to_pem(c).unwrap_or("[INVALID CERTIFICATE]".to_string()))?;
+    }
+    Ok(())
+}
+
+fn x509_der_to_pem(der: &[u8]) -> Result<String> {
+    let utf8 = X509::from_der(der)?.to_pem()?;
+    Ok(std::str::from_utf8(&utf8)?.to_string())
+}
diff --git a/remote_provisioning/hwtrust/src/session.rs b/remote_provisioning/hwtrust/src/session.rs
index 53f2371..0b90ed6 100644
--- a/remote_provisioning/hwtrust/src/session.rs
+++ b/remote_provisioning/hwtrust/src/session.rs
@@ -1,103 +1,92 @@
 //! Defines the context type for a session handling hwtrust data structures.
 
+use crate::dice::ProfileVersion;
+use std::ops::RangeInclusive;
+
 /// The context for a session handling hwtrust data structures.
+#[derive(Default, Debug)]
 pub struct Session {
     /// Options that control the behaviour during this session.
     pub options: Options,
 }
 
 /// Options that control the behaviour of a session.
-#[derive(Default)]
+#[derive(Default, Debug)]
 pub struct Options {
-    /// The expected format for the configuration descriptor in the first certificate of the DICE
-    /// chain. When the chain is ROM-rooted, the first certificate is generated by ROM so this
-    /// option can be used for compatibility with ROMs.
-    pub first_dice_chain_cert_config_format: ConfigFormat,
-
-    /// The types that are permitted for the key_ops field of COSE_Key objects in the DICE chain.
-    /// This option can be used for compatibility with the RKP HAL before v3 which diverged from
-    /// the COSE spec and allowed a single int instead of always requiring an array.
-    pub dice_chain_key_ops_type: KeyOpsType,
-
-    /// The types that are permitted for the mode field of the DICE certificates. This option can
-    /// be used for compatibility with the RKP HAL v3 which allowed some deviations from the Open
-    /// Profile for DICE specification.
-    pub dice_chain_mode_type: ModeType,
-
-    /// Whether to allow the key_usage field of the DICE certificates to be encoded in big-endian
-    /// byte order. This introduces ambiguity of the exact key usage being expressed but the keys
-    /// in the DICE chain are only used for verification so it may be preferable to allow for
-    /// compatibility with implementations that use the wrong endianness.
-    pub dice_chain_allow_big_endian_key_usage: bool,
-
-    /// The types that are permitted for the component version field in the configuration
-    /// descriptor. The specification has changed the allowed types over time and this option
-    /// can be used to select which rules to apply.
-    pub dice_chain_component_version_type: ComponentVersionType,
+    /// The range of supported Android Profile for DICE versions.
+    pub dice_profile_range: DiceProfileRange,
 }
 
-/// Format of the DICE configuration descriptor.
-#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
-pub enum ConfigFormat {
-    /// The configuration descriptor format specified by Android.
-    #[default]
-    Android,
-    /// Any configuration descriptor format is allowed.
-    Permissive,
+/// An inclusive range of Android Profile for DICE versions.
+#[derive(Clone, Debug, PartialEq, Eq)]
+pub struct DiceProfileRange(RangeInclusive<ProfileVersion>);
+
+impl DiceProfileRange {
+    /// Creates a new inclusive range of Android Profile for DICE versions.
+    pub fn new(start: ProfileVersion, end: ProfileVersion) -> Self {
+        Self(RangeInclusive::new(start, end))
+    }
+
+    /// Returns `true` if `version` is contained in the range.
+    pub fn contains(&self, version: ProfileVersion) -> bool {
+        self.0.contains(&version)
+    }
+
+    /// Returns the lower bound of the range.
+    pub fn start(&self) -> ProfileVersion {
+        *self.0.start()
+    }
+
+    /// Returns the upper bound of the range.
+    pub fn end(&self) -> ProfileVersion {
+        *self.0.end()
+    }
 }
 
-/// Type allowed for the COSE_Key object key_ops field in the DICE chain.
-#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
-pub enum KeyOpsType {
-    /// The key_ops field must be an array as specified in the COSE RFC.
-    #[default]
-    Array,
-    /// The key_ops field can be either a single int or an array as specified in the COSE RFC.
-    IntOrArray,
-}
-
-/// Type allowed for the DICE certificate mode field.
-#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
-pub enum ModeType {
-    /// The mode field must be a byte string holding a single byte as specified by the Open Profile
-    /// for DICE.
-    #[default]
-    Bytes,
-    /// The mode field can be either an int or a byte string holding a single byte.
-    IntOrBytes,
-}
-
-/// Type allowed for the DICE certificate configuration descriptor's component version field.
-#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
-pub enum ComponentVersionType {
-    /// The component version can be either an int or a free-form string.
-    #[default]
-    IntOrString,
-    /// The component version must be an int.
-    Int,
+impl Default for DiceProfileRange {
+    fn default() -> Self {
+        Self::new(ProfileVersion::Android14, ProfileVersion::Android16)
+    }
 }
 
 impl Options {
     /// The options use by VSR 13.
     pub fn vsr13() -> Self {
         Self {
-            // Context: b/262599829#comment65
-            dice_chain_key_ops_type: KeyOpsType::IntOrArray,
-            // Context: b/273552826
-            dice_chain_component_version_type: ComponentVersionType::Int,
-            ..Options::default()
+            dice_profile_range: DiceProfileRange::new(
+                ProfileVersion::Android13,
+                ProfileVersion::Android13,
+            ),
         }
     }
 
     /// The options use by VSR 14.
     pub fn vsr14() -> Self {
         Self {
-            // Context: b/261647022
-            first_dice_chain_cert_config_format: ConfigFormat::Permissive,
-            // Context: b/273552826
-            dice_chain_mode_type: ModeType::IntOrBytes,
-            dice_chain_allow_big_endian_key_usage: true,
-            ..Options::default()
+            dice_profile_range: DiceProfileRange::new(
+                ProfileVersion::Android14,
+                ProfileVersion::Android14,
+            ),
+        }
+    }
+
+    /// The options use by VSR 15.
+    pub fn vsr15() -> Self {
+        Self {
+            dice_profile_range: DiceProfileRange::new(
+                ProfileVersion::Android14,
+                ProfileVersion::Android15,
+            ),
+        }
+    }
+
+    /// The options use by VSR 16.
+    pub fn vsr16() -> Self {
+        Self {
+            dice_profile_range: DiceProfileRange::new(
+                ProfileVersion::Android14,
+                ProfileVersion::Android16,
+            ),
         }
     }
 }
diff --git a/remote_provisioning/hwtrust/testdata/csr/bad_csr.cbor b/remote_provisioning/hwtrust/testdata/csr/bad_csr.cbor
new file mode 100644
index 0000000..7a58924
--- /dev/null
+++ b/remote_provisioning/hwtrust/testdata/csr/bad_csr.cbor
Binary files differ
diff --git a/remote_provisioning/hwtrust/testdata/csr/v2_csr.base64 b/remote_provisioning/hwtrust/testdata/csr/v2_csr.base64
new file mode 100644
index 0000000..fc7830f
--- /dev/null
+++ b/remote_provisioning/hwtrust/testdata/csr/v2_csr.base64
@@ -0,0 +1 @@
+hIKvZWJyYW5kZkdvb2dsZWVmdXNlZAFlbW9kZWxlbW9kZWxmZGV2aWNlZmRldmljZWdwcm9kdWN0ZXBpeGVsZ3ZlcnNpb24CaHZiX3N0YXRlZWdyZWVuam9zX3ZlcnNpb25iMTJsbWFudWZhY3R1cmVyZkdvb2dsZW12Ym1ldGFfZGlnZXN0TxEiM0RVZneImaq7zN3u/25zZWN1cml0eV9sZXZlbGN0ZWVwYm9vdF9wYXRjaF9sZXZlbBoBNIxicGJvb3Rsb2FkZXJfc3RhdGVmbG9ja2VkcnN5c3RlbV9wYXRjaF9sZXZlbBoBNIxhcnZlbmRvcl9wYXRjaF9sZXZlbBoBNIxjoFABAgMEBQYHCAkKCwwNDg8QhEOhAQOhBVCr/oKcDPOg6uOCb5pCL1cvWQIrjq+3muSG/VeaKg6KRk7VZfEcBFEhWDyp7xNbctANbysjGel9+AZPX4T2rKxNqHY8wIcL60o54u+uWP3FBufg5LHUHbiRYytailRapw/QPa0wo8oFR4KiCJHdhz0V6bzYaIzoxu+Lbyu94Z5lt1wThlrcXEJv0fzCY7BMpiRpZ3V/ZC6BuJOldieZ3UPNDiVVdSdRieFcUeUVJFfYp6SiuMrous+RU/or7/rd8Rfyya/ZWpME9bkHpv8bRPnCY2IKzrYntnvXqiolgOV2kqXTMvM9mvJeR0nLcnpje/94fXoLYMBxiRAVdZRkb9/uQ0U139Luwl1aq0AxfldfYoyuqhP20Ej1bO6Vd4FSMntLKDzSKjHxMlc32fIm9t8bJvWy9tcE3TnMM6+Bqig0CRTbuJYSCkBwU+97CZDMSlvnXshii4d+dXzmyA6vWc7FDWQoigtUDwctWay00Pl0PReDodQk1YnxUJJWnZVduoOi4mvrh2C8lJQONK2BIV6mopVTFMmX3HM0LzgkP+2QTQEr5NlVIvanwmutHfj+RNbw/l7IyX2uQJae7OhlzWc9cG8D+/zaY+Ed6ICFle2To+I/mzoFNCOhSjfia0gXhflM3F0YYtSx6IVUQapdZFFL/pV+jfi8GY/MYMyKr/CMLUFRuDwWSHCtCea7ILyR9Th74zUMESm/OpTQQ1UjzPqPCQaV+YvlfjDEjDveWzdRryi+uJwO7c/r3lQS3A38gYNEoQE4GKIEWCA1c7c/oIqAibEmZ+nLfHWhrwJh/G5lA5E700t9FJQ+RiCkAQIgASFYIOBBzy8PNA8cMyxBsM/XDDBVNdIeakcTSy7RSJZ+JJxoIlggH85FxfthuoEh+eUFm5s5DnaGhke4Hi9F8c6v2j+AaNv2hEOhAQWgWJeCpAECIAEhWCDlxY4/5ECfw38CmLED7+l3xwW0gqLt0HImANA8QwXX6SJYIHIXmIeEbh3NawrdbggFepiixARj4NIk7DM74BIKO9pFpAECIAEhWCAAtHlcE6CgbK+xS2Zf0Jh2Eidcsc8LWABZoAyoIjY5byJYIGDaSmMQVinh9Tq13CdS0Xv4CkM1KQ/cvMec9oSoAGbpWCDheJgWSwLkuT6HOiu3DKbxXvW7/TBBfzz3UH7ybxpOgA==
diff --git a/remote_provisioning/hwtrust/testdata/csr/v3_csr.base64 b/remote_provisioning/hwtrust/testdata/csr/v3_csr.base64
new file mode 100644
index 0000000..340325c
--- /dev/null
+++ b/remote_provisioning/hwtrust/testdata/csr/v3_csr.base64
@@ -0,0 +1 @@
+hQGggqUBAQMnIAYhWCDcUSf+eGqgY4o2iTUAlot9Moj5oVcd/hN8Lja9TI9TqyNYINbpTLuXQGzX+WCPNsTTPjzF15o8yYWFptEThYpij2ZQhEOhASegWQEoqQFmaXNzdWVyAmdzdWJqZWN0OgBHRFBYIFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVOgBHRFJYILiWVOIspNJKnA5FEcjyY/BmDS4gSJaQFPRUY8T0OTA4OgBHRFNVoToAARFxbmNvbXBvbmVudF9uYW1lOgBHRFRYIFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVOgBHRFZBAToAR0RXWHGmAQIDJiABIVgghPaHz8YJlc4ztK06hmbiC1wmZtM1Air1zQVt8YQq97oiWCBUYQIjz9WbS1XWQQ93CQesOdJYr5XCxekLVTdTsBVusSNYIQCI+fLc8cPFJ7Gfq54OgKRtm7R81ddA8pWjbU3eOQMezzoAR0RYQSBYQDXNmA9jnnpPYldM3QATMpMr4IyqGAzXy3AkziLi397fnNalisoGl9tSk2XJEA2f2S2ALw+Bphu2zeO3P6oyRwaEQ6EBJqBZAg+CWCABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fIFkB6YQDZ0tFWU1JTlSuZWJyYW5kZkdvb2dsZWVmdXNlZAFlbW9kZWxlbW9kZWxmZGV2aWNlZmRldmljZWdwcm9kdWN0ZXBpeGVsaHZiX3N0YXRlZWdyZWVuam9zX3ZlcnNpb25iMTJsbWFudWZhY3R1cmVyZkdvb2dsZW12Ym1ldGFfZGlnZXN0TxEiM0RVZneImaq7zN3u/25zZWN1cml0eV9sZXZlbGN0ZWVwYm9vdF9wYXRjaF9sZXZlbBoBNIxicGJvb3Rsb2FkZXJfc3RhdGVmbG9ja2VkcnN5c3RlbV9wYXRjaF9sZXZlbBoBNIxhcnZlbmRvcl9wYXRjaF9sZXZlbBoBNIxjgqYBAgMmIAEhWCAyw/UU6r9gQ0l5AcBLebbEa+U/dSIRsO5CKLqAtYatfiJYIDdXT+o28hydMserzyH5A6LG1sUcPJP5a+Wevgefd4d8I1ggW69SlC4b1bAb9tYsmxBrQlLJh+qvv2aDw2BX2QvzUpymAQIDJiABIVggRwQMKiwiURobXaQ7N7MR1Ck5t1Kh5JfvgWk4s2GRpdQiWCCK1PDZ+ZNRe8rTAGzxz7CBPM8FXqOSTumV2B001eFmGyNYIQDal8DBe1tGEKNgBPtTgYFt1gFoVPwOzvhqWluxLo6QPlhA+x5DwVtGqPBFKIwEYW+rKzo/4rdHJzmUnU/2OYXpJURsG7sQnMlf+TxUmjJkaJ2zZ2Zy/ZVoxWyAP+wEVcJjc6FrZmluZ2VycHJpbnR4O2JyYW5kMS9wcm9kdWN0MS9kZXZpY2UxOjExL2lkLzIwMjEwODA1LjQyOnVzZXIvcmVsZWFzZS1rZXlz
diff --git a/remote_provisioning/hwtrust/testdata/csr/valid_csr.cbor b/remote_provisioning/hwtrust/testdata/csr/valid_csr.cbor
new file mode 100644
index 0000000..bc3bbb9
--- /dev/null
+++ b/remote_provisioning/hwtrust/testdata/csr/valid_csr.cbor
Binary files differ
diff --git a/remote_provisioning/hwtrust/testdata/factory_csr/all_versions_invalid.json b/remote_provisioning/hwtrust/testdata/factory_csr/all_versions_invalid.json
new file mode 100644
index 0000000..fc6b42a
--- /dev/null
+++ b/remote_provisioning/hwtrust/testdata/factory_csr/all_versions_invalid.json
@@ -0,0 +1,5 @@
+{"csr":"hIKvZWJyYW5kZkdvb2dsZWVmdXNlZAFlbW9kZWxlbW9kZWxmZGV2aWNlZmRldmljZWdwcm9kdWN0ZXBpeGVsZ3ZlcnNpb24CaHZiX3N0YXRlZWdyZWVuam9zX3ZlcnNpb25iMTJsbWFudWZhY3R1cmVyZkdvb2dsZW12Ym1ldGFfZGlnZXN0TxEiM0RVZneImaq7zN3u/25zZWN1cml0eV9sZXZlbGN0ZWVwYm9vdF9wYXRjaF9sZXZlbBoBNIxicGJvb3Rsb2FkZXJfc3RhdGVmbG9ja2VkcnN5c3RlbV9wYXRjaF9sZXZlbBoBNIxhcnZlbmRvcl9wYXRjaF9sZXZlbBoBNIxjoFABAgMEBQYHCAkKCwwNDg8QhEOhAQOhBVBAOUVcs02usDObs1JivY+VWQSjAFjRDKnS8PpyaYRHO1zzkBhsEBO8vPDf+QwmoOyJO0kEDCO/TY3VeL+prsU+dJWPmAFEiZP0CeoisHKSbuuuUIdDWezv+lQ7Nu1S0EGdL6QJnFzqtzLZjk3XHYvY1oHMv9R/6YzYTuMGwXTv/S4cp2ok88Rxew72Q16LdRKMP6E5EN6Hz5W/ffO9FOj/AIhoNXPDbehqNDod5+MRBS82pMZ7VFcd8VJ9z5l1+xlFdHSnaN9279d4Rk+RgfVszgQscjnkFZInQvUX5bNI+/jFdKd6ZPv5BpByo2m7co1SLcQ5X/9u33xgaxwTOGk9wn81PztqGirop1yAMB+FFtj1af5cIPv/TnS3zpw8GSAJWOLYSE1UNBdpoNWLj3pBhcZ6Sc50EXlkNXra4crOroEsSDVDQHLnuYPY3/pQ6xJ3xiFjVtjUfJ2RmCVGyH1nsyq5qLbtJu/JeoIbBYvjjXrcJG0CZrXG1YZUkbA3YDjDCpYAXy0hPuEpDvkcDKCTc651I7OoNr1h2Z8X0OFqcA6CSu9ihzqvoRJxuRpC5kJIDkkUbxJrtJUaDb1XGy4IuQ2WKNWsPEZpFKidS3cswjlnpBMByVRI1ghYGW5fcUXEFEVVcmZUZRVCDqlgYGp3JAdBBetVy+NqjPd1IkSxGrwS8KVeo7FwMChUfOl9SVE0Q0ORnbeU2U8uwU9iAn7YS7gzPnlPrVgLA9MNb1dCHVaepGxp4zWCFzaxXXAOqAtfbEG5r2yH6uHQqBzXe5hMc5/LQBFKdTsCYY0aCfpFGW7sYlPz5SasxremY/6Y31Fmt3v6gq4TIYp/Qw/OofomCUMLhZTMJYMVUH05O4JGhTeXEflXpQ2uOy+Z54aeg1bKNVeliN3mXNDAlGXFNtl3T74c/bjcS6H+51kUlO8ixwVS7371+o+4i6zQeJVKmcLIBCIVrk1iLBgX3HqtF50bOMy+jtzOl5e8Q+p7lkU8diEdNPtkwT2GhUs3p3peSY37IBZwzizn0J0qetVtFmpkdpxFjfKaTmjnxxeJG/zOduViwisW5xdyAK1+Xnlu/Xx8flQdfERkZfQd8n1Ln0/SJwE30zI4nI5vaKzaCDS1v40o03hL22ZuPQ0iKCcVVZcVFq3jtqjNp4AI7wLlzMoU9bhKOSryjuwfQ0RP8i+QJz+s+yFUGGimm55UodyJiTK4H4WVI8uw/n0hrplCm8/bIbFeSfWyoyaCmKQbVtK7QN+x4FVYPIttlt2rhepIF68YH3va39rY0CtiF9cVHqWhCzl9LX638tldFBfyUtDePTRkK3/0HrgUg642hYqTl2VrswdxwV4HN64WAZM8SU2jx+SD1B3iMq6ZkMV5wdMdCy48RdPIcuxdbpjiWw3ZROHaNT/nsnQsOtp/hH7jkTlAdTuLRo52AXiRbB53Jx3hOGpmL21JqO/HVWt/O8nXyr8ZOxr+y/JyP5zC9euik/jeSk7DMu/ycuEnPSvu0a9GFC0R8z8QrOutax4h/r3xEe6Cw8VPGb9VTCZrUvha/ykECRclz0p2AaiKVohtF2kaXCuYQ1ZVCLB4YhBCvPvDdiYHa81oSlyBg0ShATgYogRYINCuwRXKKs9zrmvMy9GWHWXosd3XSho3uUM6l9WZ35gIIKUBAQJYIKV70WngNHGDeSu3E8bEkUZLWDUT9RtmGu5lOF1C7OAvAzgYIAQhWCB/iM/iQDN7dqc5EM38CbRFbQbXV15ldrxaVkYTDtQIGPaEQ6EBBaBYl4KkAQIgASFYICVYth7UESkuuM5TamtxmcjRAo7HPtcHuToYgLpkhNVyIlggdurc2may95o+KP3C8Hhuzgdf105VQne97sXcuhzEgSWkAQIgASFYIIwEl++rFFoIs8QPYQecqeduye0OjWsw7oFHh84i/jk5IlggVnAPeEhdC9j440gbnWBVy54Z34p1n1tHm47Ib7ADePxYIAFqZLdzfrgvgdq0B7ffEp+Jn0GmaMlMoMwJtSjDBW/C","name":"default","serialno":"fake-device-0"}
+{"csr":"hIKvZWJyYW5kZkdvb2dsZWVmdXNlZAFlbW9kZWxlbW9kZWxmZGV2aWNlZmRldmljZWdwcm9kdWN0ZXBpeGVsZ3ZlcnNpb24CaHZiX3N0YXRlZWdyZWVuam9zX3ZlcnNpb25iMTJsbWFudWZhY3R1cmVyZkdvb2dsZW12Ym1ldGFfZGlnZXN0TxEiM0RVZneImaq7zN3u/25zZWN1cml0eV9sZXZlbGN0ZWVwYm9vdF9wYXRjaF9sZXZlbBoBNIxicGJvb3Rsb2FkZXJfc3RhdGVmbG9ja2VkcnN5c3RlbV9wYXRjaF9sZXZlbBoBNIxhcnZlbmRvcl9wYXRjaF9sZXZlbBoBNIxjoFABAgMEBQYHCAkKCwwNDg8QhEOhAQOhBVB8SGVJT/kGHh6S+uozCl07WQH657MN4GJCirkP+lHYcuPS538uvOXlh3fiUVchQmcYlYndP+/va2BI3vboQj/dHBmop/UILHuX0q3syjBmm0eMbOleFh7KFQVZRib7mbG8wgoDIE+jghkVYGDm2iszr438seyE+MDZRwxI4gkPzrBXEkkyN0X+LvLz6ANlpuNAdeyaGO/3reoB+cPNWNrBB28Ldx+3kd3Jp4V08tGp2m+KOJgNqHy2Y5dCRvLX87CpXphe2H+DNXou93E5JTePnGrSzZdBHHPhE/q+or6uLZdS7v7xMbUvClQv2ZmkIPMxWJAyWgHdjONT63f9EWfrk8v5eE/thfDGPrfQPdvQvOlrh8oUmr1FoNe8WaBrZqVpm81Dr939nQxGl+Wk0X6uXRXl0fhzQoxZr4bYXW/6tvz3NrEme/v7CUhOtb4N7r1pOQZ31n0umaBSoC5GTiRixVYUpL4KB2JyFLqfxwhHPB4wrCzgxpEslfsopE0VHb+iPR7ibBWN6Wc7EJ4n9e85YkGrrjKXviEUlqWwsL1MXSkXCh8gKMFg3CVlennDdAhw/DbAKF8vQwP32A9rxRZ2KiM521mejSNyQBfwuleA0BraBg8p4OuXOvRBcf2ZTkd8/AKcnj7aHGaNseA+noJFAofyGkAMLwbZc7ttCGaJ/gyH0pUD/Lap1XEt1/GBg0ShATgYogRYIDVztz+gioCJsSZn6ct8daGvAmH8bmUDkTvTS30UlD5GIKQBAiABIVggrXoMDRADqmefBvftkTG9uXoV+oX+ZJvdZGIrhUPPdXciWCCrnXSWOkVVJTCjex9u622rADn2AjMAXY9sihTeH2Iji/aEQ6EBBaBYl4KkAQIgASFYIH31wzJNpqIWZPeoBUxlz7LJRSco5bUo4D7FRbHYcaZfIlggpAmS/zsYSSfXNkrxj7AKexd41VcPTTM/YtcGnedm1jakAQIgASFYIMy0g5IMFEJOihApibR1Lk8Adb8uT2YyApbMNhqMlxqiIlggUM9q/Lp6/ylLzNbFnYQMaa1ygdZTTpb1wmb1xV9LDcBYIPQrdGZIzk8dengNOxVFAngM6/TuNidXJZY2M6c2+LGm","name":"default","serialno":"fake-device-0"}
+{"csr":"TOTALLY BOGUS","name":"default","serialno":"fake-device-0"}
+{"csr":"hQGggqUBAQMnIAYhWCAsuQh3dEqvFh388CNmcs/EF27rN3EbYEOvu/puokB6WiNYIC6HHSDrS0Qvur+/sw1Wv4c3wmODHnqsoQZm7lBpv4w7hEOhASegWMWoAWZpc3N1ZXICZ3N1YmplY3Q6AEdEUEMAAQI6AEdEU1WhOgABEXFuY29tcG9uZW50X25hbWU6AEdEVEMAAQI6AEdEVkEBOgBHRFdYcaYBAgMmIAEhWCBi/AYDJ9hQnqfcGCyY46kV2IKa7zZGt3vV2utH2Y7VByJYIFKXej1PFrBMc0zJTYgmU5+fWba6eOPQWqpqYE+iQmswI1ghAPxi72oVN9U2BFPI4ezP38FrdSurJsxY5O0/Wvr6sdk/OgBHRFhBIFhAcNXSblkgb1tI3KkLV2hv8jF7HDBTrmbk2Zgtbf+GjrlIDzwIKIYvdssmzwkFT5kq7+X1vtMqzdBsVHgQBkNYBIRDoQEmoFkCD4JYIAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gWQHphANnS0VZTUlOVK5lYnJhbmRmR29vZ2xlZWZ1c2VkAWVtb2RlbGVtb2RlbGZkZXZpY2VmZGV2aWNlZ3Byb2R1Y3RlcGl4ZWxodmJfc3RhdGVlZ3JlZW5qb3NfdmVyc2lvbmIxMmxtYW51ZmFjdHVyZXJmR29vZ2xlbXZibWV0YV9kaWdlc3RPESIzRFVmd4iZqrvM3e7/bnNlY3VyaXR5X2xldmVsY3RlZXBib290X3BhdGNoX2xldmVsGgE0jGJwYm9vdGxvYWRlcl9zdGF0ZWZsb2NrZWRyc3lzdGVtX3BhdGNoX2xldmVsGgE0jGFydmVuZG9yX3BhdGNoX2xldmVsGgE0jGOCpgECAyYgASFYICibs6BzzvTC2P6fFbOs4hIEF2E5YyOgJL06ogIGO2VhIlggikGxp7d8r2mMqG2GCy4zu82QmdxTbxzEj7oZrnRtuIkjWCEAowwtl6x4fDYXXKxPGUVFsM5h/fshUTlFs5zls2+sYS6mAQIDJiABIVggrG7CFpYoMKNmtqK1F5ERG4jB9rcvS1KxuZe7V/TDgvUiWCAQtNZDZd78RioZLQvqTKYT2ib7qh4u/2CQbfWVIhz9uSNYIDWD6q2AC+F1oDQjkIpKiXD9ZqyenMEXhbr+5DV7szBEWECW3sFhmIg9YKmw/nVersPrkikWN80U2JDUK4+ZpVg8wljyxj5tgslvkRJJutE6N9dGUzWX8wGBGmNUNxr4XlQUoWtmaW5nZXJwcmludHg7YnJhbmQxL3Byb2R1Y3QxL2RldmljZTE6MTEvaWQvMjAyMTA4MDUuNDI6dXNlci9yZWxlYXNlLWtleXM=","name":"default","serialno":"fake-device-0"}
+{"csr":"hQGggqYBAgMmIAEhWCCQbWgM4qcVbKaD/OV+shAQv3yZVEua9250IFP/ua8tkSJYIJvbeqNvlUh6taXlPmAnqamH2oSIt642HwEoXgddAluII1ggHtpjixl6qMLpEH9AWTb/3oefocW+EmA8qPxVLiI2xdiEQ6EBJqBYxagBZmlzc3VlcgJnc3ViamVjdDoAR0RQQwABAjoAR0RTVaE6AAERcW5jb21wb25lbnRfbmFtZToAR0RUQwABAjoAR0RWQQE6AEdEV1hxpgECAyYgASFYIKrrkKhyQly2CYBqrIAxLehLwW8RZUI7EyRYFb/o40rCIlggcQmkixd5yLkzQ/kI/jjet9Kzc9YhcC2gVbZiI9+1YQ8jWCEAiBXy6pC0zpGzFKUQLOjZ0rSNfQtUvXimMwa7JMFwkbk6AEdEWEEgWEDwei8KDsy64HBKZS9BUpzsHO9+pBG0XVEjeuGi/gXccZnGW5FrHuLHrZ1CP3cEtvR2KjjHJtZk9BL8l+sNYAfbhEOhASagWQIPglggAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyBZAemEA2dLRVlNSU5UrmVicmFuZGZHb29nbGVlZnVzZWQBZW1vZGVsZW1vZGVsZmRldmljZWZkZXZpY2VncHJvZHVjdGVwaXhlbGh2Yl9zdGF0ZWVncmVlbmpvc192ZXJzaW9uYjEybG1hbnVmYWN0dXJlcmZHb29nbGVtdmJtZXRhX2RpZ2VzdE8RIjNEVWZ3iJmqu8zd7v9uc2VjdXJpdHlfbGV2ZWxjdGVlcGJvb3RfcGF0Y2hfbGV2ZWwaATSMYnBib290bG9hZGVyX3N0YXRlZmxvY2tlZHJzeXN0ZW1fcGF0Y2hfbGV2ZWwaATSMYXJ2ZW5kb3JfcGF0Y2hfbGV2ZWwaATSMY4KmAQIDJiABIVggQAfcLLxViAxXadWDUn0IJN2QmF8qrRKo26sQNMATmKgiWCCXL67UZ0V+d0jJoKyBOXbaScvu1A02TEZlLZXf5uSr7SNYIAqXQk/RpXA7Gt3QOSdZqz7AlXGCXN4BvQe16jEd7l3fpgECAyYgASFYIBZ/iS7yreG89/IaVWW5SQPvGK6ijryCyltOOw8rUfR+IlggqN0J7ivOB3dKitFcF6GeJgD5snOwBKnoYwwwYWBGDl8jWCEAh3YQNQDm4iK4oT3EwnYkOAjK5iwDzCve9YVUTJfUIyhYQHunfdCq9s8TvyTZ6j1iHNz/pux98QIZpJlnDkrehpazteRjeicPJXdiSyNXhsThYhVIm4rcI5XgkBNi5mz3PXqha2ZpbmdlcnByaW50eDticmFuZDEvcHJvZHVjdDEvZGV2aWNlMToxMS9pZC8yMDIxMDgwNS40Mjp1c2VyL3JlbGVhc2Uta2V5cw==","name":"default","serialno":"fake-device-0"}
diff --git a/remote_provisioning/hwtrust/testdata/factory_csr/all_versions_valid.json b/remote_provisioning/hwtrust/testdata/factory_csr/all_versions_valid.json
new file mode 100644
index 0000000..3ca11c1
--- /dev/null
+++ b/remote_provisioning/hwtrust/testdata/factory_csr/all_versions_valid.json
@@ -0,0 +1,10 @@
+{"csr":"hIKvZWJyYW5kZkdvb2dsZWVmdXNlZAFlbW9kZWxlbW9kZWxmZGV2aWNlZmRldmljZWdwcm9kdWN0ZXBpeGVsZ3ZlcnNpb24CaHZiX3N0YXRlZWdyZWVuam9zX3ZlcnNpb25iMTJsbWFudWZhY3R1cmVyZkdvb2dsZW12Ym1ldGFfZGlnZXN0TxEiM0RVZneImaq7zN3u/25zZWN1cml0eV9sZXZlbGN0ZWVwYm9vdF9wYXRjaF9sZXZlbBoBNIxicGJvb3Rsb2FkZXJfc3RhdGVmbG9ja2VkcnN5c3RlbV9wYXRjaF9sZXZlbBoBNIxhcnZlbmRvcl9wYXRjaF9sZXZlbBoBNIxjoFABAgMEBQYHCAkKCwwNDg8QhEOhAQOhBVB9PPrcMMlZnUZvylZS/xNOWQTKoyyUVWVlYqUxxZixMuO8aEXJNTAfi+xMgRnCfQlkt/6+Kbi4xD6I60WLoHEzmT4BNKf0d1cNBOPkn2KUUswSJwasTSnu6h6tChJjo/5TzP1YLaM49myIPYwxMnerPoPaXAxSU7YBpPtD33RQevN59Ls5LizgiZgx9xyqOjffYz6fqzm/9gwda//Nnxd/sAdTJQvAsRyvQiI3VTWzwITwv7nEHUpSI2rqmnhrEOt2g70UFo5e4CakrGY6uAhc9TUaMNh6YUPIKFBfMsgMCWs9mjXwmguGycmdQ1WWGOJpoYXaK59avPpWfmLLSYOgeDSC5t0QnmkkHYbc8Aw3mLsqC5D77HyN4NWwggTgsxt75Xic3T7Gr+EuHVEGTREaJ9UZ+armS5edrPsYs3CctNb/WucA5qm5/BYlJRO+YBN7lF8lzqAGM1sgXnzRms96V0KWvYYQzDTU+aIKHVXRi/l0lH6zIwe+qobcvIwg1qP2ANjK/ylEYUZQSpp6U0i7PIbZN4UN5dP3NIqwbIFQdtTbOfyr6XFja0plMdcAR6XNWdZwyrKXdGJJMz+vSHDaht4UUUHSO5idlQE3jAj/l94uIUlo34K4ZSKqFQ1oevavKOYI7ss2s/JZldjScUNHYEyvIQ/jSY4/GiW5iYHoqL2M5ZfksjBLhmmKp0l45dWuR6tmScNpiLSROeybuq33eYL/Woh3vU+EoK8xTad0OoV/O/HU5HSmD7WzMXfAaHIr3X7VIPySQtHMSHhTqXiZerB+A+9HO61vuOTuKDBSiojyYTt2dt1MPtqwy3SKkcgWqK0VdlSw9xnwhGpgHeyjhm0qcgJi27Q6Bk51NXvBaYHCB0bL/vUt5l53kZ1Lh6hwaWKwiTuaMkXQ43Dagqp58gPikdvuBWmkR0+p0xoBUiUttbRwU8I+uxpfGzZb1iJxFDss/hr6OTAbVZT5oWOur5OC/WyT1lIzeRDdSDWaEHahQFLoixzt4/MY2YEa8jWXrcIKH2OfYbDPDG1kzCDFUziIUmIEPbTD7o7oL8N4ZqjlwRViA9O8EyXIdg0CxEeGSoH1G0P19NPETklrw2xzSzEo2CTBzkS5nzFOu9XvBbpVbMMciRHLnmNmJjFfhBnrFyfI2ZXOURJcVHyYMZjWL4QuAms4XvguvVl172G0aE5QPn7LEdz0NfXqFbijfx6zj96rof4npS4SNxU18ZTfuvpY+FNzYiOQGxd6svxqAutu/EDjIjft7W5n7FxZ8NokE6Yt0z0GFBzsVmqfbYz5kojKPgBKF13X/hgUoSG6LUjXllBQynqCNG9Mk2LPetOWpw2eoAs2TysYYRe+K/iyq0RuCTb5C5+eTVvELxFInZMphv/EVobodwtmiQ+BPrcg2SN3DNIEt7gLuggSJIP6Xws0Pz7teDgCNtLL/6KSvoxeLwfzrC5zPoTXr8EfJmRbn0x5oAy6Rv6O5FTOjpSBsQsn26ugvWkskjOXX+EgosubxiQMYqShznp4k5YfzZmg7JIei2IopN45N17c+OjRlRE+sgnQ8eU90lM9ny3/vJYzLr436EcG4PGlmz9EPlTENjVqB8IEEP+GjL+sEGRsMlS9+VYbOGuTGbbufK/ZvGojGPfAUCMbzdqcBOKBg0ShATgYogRYINCuwRXKKs9zrmvMy9GWHWXosd3XSho3uUM6l9WZ35gIIKUBAQJYID8iqQxfFauUvQMkVdYOg3t2TUIMuI9ADMG5dSJ7GGxVAzgYIAQhWCCWRoVQCzhvMtwfOvJYe5iSa5HN5NWGdZxZ5E3mQpIESvaEQ6EBBaBYl4KkAQIgASFYIEpSwkxIyWRp4l/sgPmiTshCaf0KKW7DSn4+NUJJzjyzIlggYVAcgzadjrsnsM/ZAeidDQHf7pWphH4BG0vjd57Tx1SkAQIgASFYIAW7cxMJlF4VfWkl1+O2+rycQ/aBWs06vVzCaKbMGTDnIlggSzOqBGodNoxdY3EybUzhu1CKT9gExFuEfSPc0bsxYo1YIF9JxbLFGLG7B4G9q6CixhVh9ePliTU3I9aiGqEUG8S0","name":"default","serialno":"fake-device-0"}
+
+{"csr":"hIKvZWJyYW5kZkdvb2dsZWVmdXNlZAFlbW9kZWxlbW9kZWxmZGV2aWNlZmRldmljZWdwcm9kdWN0ZXBpeGVsZ3ZlcnNpb24CaHZiX3N0YXRlZWdyZWVuam9zX3ZlcnNpb25iMTJsbWFudWZhY3R1cmVyZkdvb2dsZW12Ym1ldGFfZGlnZXN0TxEiM0RVZneImaq7zN3u/25zZWN1cml0eV9sZXZlbGN0ZWVwYm9vdF9wYXRjaF9sZXZlbBoBNIxicGJvb3Rsb2FkZXJfc3RhdGVmbG9ja2VkcnN5c3RlbV9wYXRjaF9sZXZlbBoBNIxhcnZlbmRvcl9wYXRjaF9sZXZlbBoBNIxjoFABAgMEBQYHCAkKCwwNDg8QhEOhAQOhBVABapIU83y82Kdu6BJ8kkVPWQIiqO6n/WEbgqyajycwMpzCyK8+Iw+tCHozqTfWRfnuiYW0tN5FyqWNs1qkWMRhhirxgxnp+fjKTRiOK7fz4lL3PYqSH2o3h2viWWL1PfjtJyrSFQjspQqINX74kU9bNwBTun6FuZEHxNQYzXI9fLXayehu4NJsgzmiL+O/SFkA618XQKCOHBPRLA30iY6gkzUhsSj1+ytBtyIkA6EbXUcPdKnDMuwgpyRP3OBcZHDK3XzrYixd897zPHtvN00ZdQHRbe2Dntf5hyzrMm9cbko9hiPsUM7f1DuIANFwj1iKBIC+kv7wx5RfuS5SClm5qa5CHbA1IZ3xMDIDLCjN74/3O2yRfIBb1+9aEP3Z33MhG4olEZ2q+uC3dbtYit9elkGNuBDyNb5D76OwGCFux5UTFyynoGxVtAznp6JVaI3ZEiYhyrT+MkNUCtuGZ0DjJkFHcLLrXMyTJSjq1+demfiYyr+Ir7T/1TQi1Y+GJGQIdFHA9fW6QYIZ9xE0sfTd1Zq/wn2YQT8pdzid0VClzi/x2LDbk3mtaCrQhBYZ3VrHveQlQVVHHPriKcsQJYBFnMNS6+JNuEZ4++TEwWbF3hiUmXphgo0GecXQ7bl4q/1RuPzZPsBLkUsExhoh65Ewn9kMc+iHupOQCNDILJDik3V07iuwQ5SlrVUsiby7egZaDVDFy5GbiOczgi2BmZmz2jcsePHJe0s7TAwhYFzWqTwMl8tAgYNEoQE4GKIEWCA1c7c/oIqAibEmZ+nLfHWhrwJh/G5lA5E700t9FJQ+RiCkAQIgASFYIGt72uKbTr5Rccjh4/GcgZqjcoBpA3xUIxdz6XsES2dlIlggSS0rPAjiluqGWPBsSbLBuP6hkH4AL9p7zYdpamznZ1H2hEOhAQWgWJeCpAECIAEhWCCwux4tKxu7COAyzC6QYz2Vc7Tbnydp0JAiC/fT2qeQuiJYIMjS4s2/AKyORPK4QAha/b0EckaA6sVTTpazGH8MDFfmpAECIAEhWCBMvwVxq9o8qwDx058dQJibhQxeuYOHnG6VxGYP+vJBryJYIOr3B/2Ll0vM5Yzc2E9PJ8iPbkc2Ts43waji3Fc7WOl+WCDC8jMqc3vVO7A7vRzY8bSTNRX5prg73a1LIhPmLHpdxQ==","name":"default","serialno":"fake-device-0"}
+{"csr":"hQGggqUBAQMnIAYhWCDcUSf+eGqgY4o2iTUAlot9Moj5oVcd/hN8Lja9TI9TqyNYINbpTLuXQGzX+WCPNsTTPjzF15o8yYWFptEThYpij2ZQhEOhASegWQEoqQFmaXNzdWVyAmdzdWJqZWN0OgBHRFBYIFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVOgBHRFJYILiWVOIspNJKnA5FEcjyY/BmDS4gSJaQFPRUY8T0OTA4OgBHRFNVoToAARFxbmNvbXBvbmVudF9uYW1lOgBHRFRYIFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVOgBHRFZBAToAR0RXWHGmAQIDJiABIVgghPaHz8YJlc4ztK06hmbiC1wmZtM1Air1zQVt8YQq97oiWCBUYQIjz9WbS1XWQQ93CQesOdJYr5XCxekLVTdTsBVusSNYIQCI+fLc8cPFJ7Gfq54OgKRtm7R81ddA8pWjbU3eOQMezzoAR0RYQSBYQDXNmA9jnnpPYldM3QATMpMr4IyqGAzXy3AkziLi397fnNalisoGl9tSk2XJEA2f2S2ALw+Bphu2zeO3P6oyRwaEQ6EBJqBZAg+CWCABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fIFkB6YQDZ0tFWU1JTlSuZWJyYW5kZkdvb2dsZWVmdXNlZAFlbW9kZWxlbW9kZWxmZGV2aWNlZmRldmljZWdwcm9kdWN0ZXBpeGVsaHZiX3N0YXRlZWdyZWVuam9zX3ZlcnNpb25iMTJsbWFudWZhY3R1cmVyZkdvb2dsZW12Ym1ldGFfZGlnZXN0TxEiM0RVZneImaq7zN3u/25zZWN1cml0eV9sZXZlbGN0ZWVwYm9vdF9wYXRjaF9sZXZlbBoBNIxicGJvb3Rsb2FkZXJfc3RhdGVmbG9ja2VkcnN5c3RlbV9wYXRjaF9sZXZlbBoBNIxhcnZlbmRvcl9wYXRjaF9sZXZlbBoBNIxjgqYBAgMmIAEhWCAyw/UU6r9gQ0l5AcBLebbEa+U/dSIRsO5CKLqAtYatfiJYIDdXT+o28hydMserzyH5A6LG1sUcPJP5a+Wevgefd4d8I1ggW69SlC4b1bAb9tYsmxBrQlLJh+qvv2aDw2BX2QvzUpymAQIDJiABIVggRwQMKiwiURobXaQ7N7MR1Ck5t1Kh5JfvgWk4s2GRpdQiWCCK1PDZ+ZNRe8rTAGzxz7CBPM8FXqOSTumV2B001eFmGyNYIQDal8DBe1tGEKNgBPtTgYFt1gFoVPwOzvhqWluxLo6QPlhA+x5DwVtGqPBFKIwEYW+rKzo/4rdHJzmUnU/2OYXpJURsG7sQnMlf+TxUmjJkaJ2zZ2Zy/ZVoxWyAP+wEVcJjc6FrZmluZ2VycHJpbnR4O2JyYW5kMS9wcm9kdWN0MS9kZXZpY2UxOjExL2lkLzIwMjEwODA1LjQyOnVzZXIvcmVsZWFzZS1rZXlz","name":"default","serialno":"fake-device-0"}
+
+
+
+{"csr":"hQGggqYBAgMmIAEhWCCpPq6NV6DAFtVa2xl5ma83hY7dMfHOk8+e3asA52ov0CJYININlwgFstqznGH2mxoRoPSj/QrGVRVmmU78E+ZF/dhyI1ggEpU/d/ByZJGgnFstE0omqKZX28FwxANv/egeiB4KzQOEQ6EBJqBZASepAWZpc3N1ZXICZ3N1YmplY3Q6AEdEUFggVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU6AEdEUlgguJZU4iyk0kqcDkURyPJj8GYNLiBIlpAU9FRjxPQ5MDg6AEdEU1WhOgABEXFuY29tcG9uZW50X25hbWU6AEdEVFggVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU6AEdEVkEBOgBHRFdYcKYBAgMmIAEhWCCFTXTgD0Ij31zMNwkMHEHeyJ4R0PVQToYItbHWSBX9CiJYIDFaX3N0+wapfXrb4+8DKNU5VHnDnvb1rsC3cjAlb50lI1ggFFtuT3XEL9kjvKY93UOGxCkqIT8XK4czC8ezX6ykBfk6AEdEWEEgWEBtIzOvyF6PIVIYljj7CfahW+MgOpd4it7iAxvkssZYYXh78NlKJFR0E1G1DdLMfRwSajaXO3wDqG5AbfiUeVy5hEOhASagWQIQglggAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyBZAeqEA2dLRVlNSU5UrmVicmFuZGZHb29nbGVlZnVzZWQBZW1vZGVsZW1vZGVsZmRldmljZWZkZXZpY2VncHJvZHVjdGVwaXhlbGh2Yl9zdGF0ZWVncmVlbmpvc192ZXJzaW9uYjEybG1hbnVmYWN0dXJlcmZHb29nbGVtdmJtZXRhX2RpZ2VzdE8RIjNEVWZ3iJmqu8zd7v9uc2VjdXJpdHlfbGV2ZWxjdGVlcGJvb3RfcGF0Y2hfbGV2ZWwaATSMYnBib290bG9hZGVyX3N0YXRlZmxvY2tlZHJzeXN0ZW1fcGF0Y2hfbGV2ZWwaATSMYXJ2ZW5kb3JfcGF0Y2hfbGV2ZWwaATSMY4KmAQIDJiABIVggN9Y9nAF4lYrevH81hTwirMeHF9lyAXF7MCqiyuY5xXQiWCAMhrBKF2SHHYuLVGMWR/mAYErcLT0JyEG5J690NeM6MSNYIQD/zJBROsd66g7qA9O/HQXpdefN9GgMOhnDQRvUFpUya6YBAgMmIAEhWCCQpbufcGMc+xy60H0wPzbecB81xipX2TDC2LF41FrYeiJYIC4eKnTSeL7astnASAPMGEhgXhUtKJ2vAy86DTvTvZcLI1ghAOMuH5yRYDLMJzAceHafd4Abe1QORt5vqCO/eHun6BnpWED2SzeNFno+SzaMHQ/A6G9JnZqu+teAXGT9eD6MW5ilZ+pFew8+xCnv4Kyk2bABjp2XCsPxkkBjhllDbJakWUz1oWtmaW5nZXJwcmludHg7YnJhbmQxL3Byb2R1Y3QxL2RldmljZTE6MTEvaWQvMjAyMTA4MDUuNDI6dXNlci9yZWxlYXNlLWtleXM=","name":"default","serialno":"fake-device-0"}
+
+
diff --git a/remote_provisioning/hwtrust/testdata/factory_csr/v2_ed25519_valid.json b/remote_provisioning/hwtrust/testdata/factory_csr/v2_ed25519_valid.json
new file mode 100644
index 0000000..23ecece
--- /dev/null
+++ b/remote_provisioning/hwtrust/testdata/factory_csr/v2_ed25519_valid.json
@@ -0,0 +1 @@
+{"csr":"hIKvZWJyYW5kZkdvb2dsZWVmdXNlZAFlbW9kZWxlbW9kZWxmZGV2aWNlZmRldmljZWdwcm9kdWN0ZXBpeGVsZ3ZlcnNpb24CaHZiX3N0YXRlZWdyZWVuam9zX3ZlcnNpb25iMTJsbWFudWZhY3R1cmVyZkdvb2dsZW12Ym1ldGFfZGlnZXN0TxEiM0RVZneImaq7zN3u/25zZWN1cml0eV9sZXZlbGN0ZWVwYm9vdF9wYXRjaF9sZXZlbBoBNIxicGJvb3Rsb2FkZXJfc3RhdGVmbG9ja2VkcnN5c3RlbV9wYXRjaF9sZXZlbBoBNIxhcnZlbmRvcl9wYXRjaF9sZXZlbBoBNIxjoFABAgMEBQYHCAkKCwwNDg8QhEOhAQOhBVALzvc1n0LPYc+vgHPsJjfDWQTT4gGYIH1cgYd+RkD0Fk8Om6/gWbJLVnc0iW94JhUChOo3PkPRqAwVG1h75aC8fuz37QiInSwG7QdZGIfQPnoDzhDGpmjtwbjTndjws8sb1lO3R9mByU4WLa0L78WUGreN4mBXIfsoXfA8ep0oJyRUc3XtfAnXAW3e2iUDWC75jd4+Qm0uF2DDfL0+jcahFRUPHSiRMmulXn0ofWjs0+2zQpDMzjASHHjqYBOND/OyP3GERH78MvNwMYrNksiNKqc6CSgqJpvD+SDVmJCKa5aK72NjJChCmn2IZZrAEdO8qW9zJO5bECEo3VSjEs3TWBLcPMmiorYhaGXod7Ze1fxBmbx0y1/QYen/3K1KKlHPSt1U/VgPfQHwTO4RiYusLf5rctN6tMd0Pvr0wm15z4UWgJ8w5EzbP1/B/JWR0Nm7rlxOPwHuTUbOfgMxXlxKLMWsTIbtRXFeniTL5GK06gVMZwd2uOBOVh6Lef39wlAmbM5bsrlfwrGD7Hm1Tpr7b7FCayUx2eoXUF1i67etebpDJgFmOA92prG4bdll78oaF+cB7BEgPpwZsxNnqS/vQ0CxNWD3vGn2I7lQv6VZt1lTOZLDXvGPr6v5iui/IcGlBLTH+UaHptDlDTFyhMa6OIGHsMjfVye/1eluWwLPV5lJpad68AC+R2N7NZqNY4agfm8ChCYsNsuXhOIEWXq21f3bCbWcCq4qMvm+EH2BS45pOlLvTb/5mpI8p0xtoXxrz9w485iGI4hUqP9pmweVC9yucrraE79fYrBRz/3g+HDqj1pMLjdIOtaE0FiW94P/e4nBnGZDsxn3awx2g8b73xFytYiB+0FTQELo8qaTFMfrn3QnPT1aRw+34vj6E6TZwbuE/akutbcSGyqPkdRgdKmyTs/YE9FFpZrEeh0anfDX19yuWRsrTE7X3+XRAOb28K8Yl8x/gF//71dPvMpgLxTjwvLMPc0SHREjQsEddmzMjxc/p6ngsGTHn4rjn7E7TWq55i+ASeTi5rI2Xqq3G4slsqRaAXg/KGAsZJZiemds72XQpXYYa8XKsRHdVYa7irXweRIlUIRAsxvFO1TvY8wl9ah/LqZvYbl53xRPVCWboe+rOkfvGup1q4VjWR9m5FPdxwU5NSti1Z/YL8GR8YNtdVvrKExZfunjhW3BtYQLpuqOZ+n0s8ybPxnqGk5GFU7gHIGa/rMx2M/LEu4l9X4jt5Nh+Q92YdXHjlqsb8kWFNAwXDUNDDY0/VtmEXSDkxzLilmtmEvRBtyFw09PHd1kQsen4a0MD+fvVrbqRESj4Zh8OXyTLlaugHq+/qqU105HWES4f3FUKnsJXkDxAc6o2D5Cg5rzAH27TcJONRI2YBjA0OM6AoEjb4SXe54qNbXuR92023A2awDm2azDguD9xwJ/ZH2XOAlKB2vCwp8pDkBAC7ky4FEHeDYE+LiGtF7GI3wIO74BpmdueHkO0nM5AKPwArukUTc4IPzXXZhDOiywbYDPt4pKjXm9J8PlSJlK5p23jg7GTf9iFIE1KD3eH5AiIwGsI3jGYAkjBJMiKOq0H73E9bUaHU8oaF30j2F76yp6a150sZh9tD1Tzk967jvJMBrs0A/tkX+wcwcq3Z8PCjSffhGOk4fPc4u8N4ong76Bg0ShATgYogRYINCuwRXKKs9zrmvMy9GWHWXosd3XSho3uUM6l9WZ35gIIKUBAQJYINCuwRXKKs9zrmvMy9GWHWXosd3XSho3uUM6l9WZ35gIAzgYIAQhWCC+hedGxKNCWkDZNjqmFdAsWH493DMCMtL8Xh6HJV9yYPaEQ6EBBaBYl4KkAQIgASFYIKGibwkABzWwjPuGtLSNsBNKU+Rq9DgpHfnefrD0qlsXIlggxQpOLAqfW6sgriJdKg/OpkdTJqm9OqV/nOEWBU1qYOSkAQIgASFYIP3aYG6PKZYw0EzoK+juMNmb45WbP3exBELt8ZbOV8jAIlggBEvRLhhN9ooLfZM4tlh5403ucowcKtbdgBWTXdySaZpYIMlmkjJke2knfNeaI9/cfju3OaxSoQg9x9rQgqlRlIrw","name":"default","serialno":"fake-device-0"}
diff --git a/remote_provisioning/hwtrust/testdata/factory_csr/v2_p256_valid.json b/remote_provisioning/hwtrust/testdata/factory_csr/v2_p256_valid.json
new file mode 100644
index 0000000..4fc097a
--- /dev/null
+++ b/remote_provisioning/hwtrust/testdata/factory_csr/v2_p256_valid.json
@@ -0,0 +1 @@
+{"csr":"hIKvZWJyYW5kZkdvb2dsZWVmdXNlZAFlbW9kZWxlbW9kZWxmZGV2aWNlZmRldmljZWdwcm9kdWN0ZXBpeGVsZ3ZlcnNpb24CaHZiX3N0YXRlZWdyZWVuam9zX3ZlcnNpb25iMTJsbWFudWZhY3R1cmVyZkdvb2dsZW12Ym1ldGFfZGlnZXN0TxEiM0RVZneImaq7zN3u/25zZWN1cml0eV9sZXZlbGN0ZWVwYm9vdF9wYXRjaF9sZXZlbBoBNIxicGJvb3Rsb2FkZXJfc3RhdGVmbG9ja2VkcnN5c3RlbV9wYXRjaF9sZXZlbBoBNIxhcnZlbmRvcl9wYXRjaF9sZXZlbBoBNIxjoFABAgMEBQYHCAkKCwwNDg8QhEOhAQOhBVCr/oKcDPOg6uOCb5pCL1cvWQIrjq+3muSG/VeaKg6KRk7VZfEcBFEhWDyp7xNbctANbysjGel9+AZPX4T2rKxNqHY8wIcL60o54u+uWP3FBufg5LHUHbiRYytailRapw/QPa0wo8oFR4KiCJHdhz0V6bzYaIzoxu+Lbyu94Z5lt1wThlrcXEJv0fzCY7BMpiRpZ3V/ZC6BuJOldieZ3UPNDiVVdSdRieFcUeUVJFfYp6SiuMrous+RU/or7/rd8Rfyya/ZWpME9bkHpv8bRPnCY2IKzrYntnvXqiolgOV2kqXTMvM9mvJeR0nLcnpje/94fXoLYMBxiRAVdZRkb9/uQ0U139Luwl1aq0AxfldfYoyuqhP20Ej1bO6Vd4FSMntLKDzSKjHxMlc32fIm9t8bJvWy9tcE3TnMM6+Bqig0CRTbuJYSCkBwU+97CZDMSlvnXshii4d+dXzmyA6vWc7FDWQoigtUDwctWay00Pl0PReDodQk1YnxUJJWnZVduoOi4mvrh2C8lJQONK2BIV6mopVTFMmX3HM0LzgkP+2QTQEr5NlVIvanwmutHfj+RNbw/l7IyX2uQJae7OhlzWc9cG8D+/zaY+Ed6ICFle2To+I/mzoFNCOhSjfia0gXhflM3F0YYtSx6IVUQapdZFFL/pV+jfi8GY/MYMyKr/CMLUFRuDwWSHCtCea7ILyR9Th74zUMESm/OpTQQ1UjzPqPCQaV+YvlfjDEjDveWzdRryi+uJwO7c/r3lQS3A38gYNEoQE4GKIEWCA1c7c/oIqAibEmZ+nLfHWhrwJh/G5lA5E700t9FJQ+RiCkAQIgASFYIOBBzy8PNA8cMyxBsM/XDDBVNdIeakcTSy7RSJZ+JJxoIlggH85FxfthuoEh+eUFm5s5DnaGhke4Hi9F8c6v2j+AaNv2hEOhAQWgWJeCpAECIAEhWCDlxY4/5ECfw38CmLED7+l3xwW0gqLt0HImANA8QwXX6SJYIHIXmIeEbh3NawrdbggFepiixARj4NIk7DM74BIKO9pFpAECIAEhWCAAtHlcE6CgbK+xS2Zf0Jh2Eidcsc8LWABZoAyoIjY5byJYIGDaSmMQVinh9Tq13CdS0Xv4CkM1KQ/cvMec9oSoAGbpWCDheJgWSwLkuT6HOiu3DKbxXvW7/TBBfzz3UH7ybxpOgA==","name":"default","serialno":"fake-device-0"}
diff --git a/remote_provisioning/hwtrust/testdata/factory_csr/v3_ed25519_valid.json b/remote_provisioning/hwtrust/testdata/factory_csr/v3_ed25519_valid.json
new file mode 100644
index 0000000..4767dc1
--- /dev/null
+++ b/remote_provisioning/hwtrust/testdata/factory_csr/v3_ed25519_valid.json
@@ -0,0 +1 @@
+{"csr":"hQGggqUBAQMnIAYhWCDcUSf+eGqgY4o2iTUAlot9Moj5oVcd/hN8Lja9TI9TqyNYINbpTLuXQGzX+WCPNsTTPjzF15o8yYWFptEThYpij2ZQhEOhASegWQEoqQFmaXNzdWVyAmdzdWJqZWN0OgBHRFBYIFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVOgBHRFJYILiWVOIspNJKnA5FEcjyY/BmDS4gSJaQFPRUY8T0OTA4OgBHRFNVoToAARFxbmNvbXBvbmVudF9uYW1lOgBHRFRYIFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVOgBHRFZBAToAR0RXWHGmAQIDJiABIVgghPaHz8YJlc4ztK06hmbiC1wmZtM1Air1zQVt8YQq97oiWCBUYQIjz9WbS1XWQQ93CQesOdJYr5XCxekLVTdTsBVusSNYIQCI+fLc8cPFJ7Gfq54OgKRtm7R81ddA8pWjbU3eOQMezzoAR0RYQSBYQDXNmA9jnnpPYldM3QATMpMr4IyqGAzXy3AkziLi397fnNalisoGl9tSk2XJEA2f2S2ALw+Bphu2zeO3P6oyRwaEQ6EBJqBZAg+CWCABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fIFkB6YQDZ0tFWU1JTlSuZWJyYW5kZkdvb2dsZWVmdXNlZAFlbW9kZWxlbW9kZWxmZGV2aWNlZmRldmljZWdwcm9kdWN0ZXBpeGVsaHZiX3N0YXRlZWdyZWVuam9zX3ZlcnNpb25iMTJsbWFudWZhY3R1cmVyZkdvb2dsZW12Ym1ldGFfZGlnZXN0TxEiM0RVZneImaq7zN3u/25zZWN1cml0eV9sZXZlbGN0ZWVwYm9vdF9wYXRjaF9sZXZlbBoBNIxicGJvb3Rsb2FkZXJfc3RhdGVmbG9ja2VkcnN5c3RlbV9wYXRjaF9sZXZlbBoBNIxhcnZlbmRvcl9wYXRjaF9sZXZlbBoBNIxjgqYBAgMmIAEhWCAyw/UU6r9gQ0l5AcBLebbEa+U/dSIRsO5CKLqAtYatfiJYIDdXT+o28hydMserzyH5A6LG1sUcPJP5a+Wevgefd4d8I1ggW69SlC4b1bAb9tYsmxBrQlLJh+qvv2aDw2BX2QvzUpymAQIDJiABIVggRwQMKiwiURobXaQ7N7MR1Ck5t1Kh5JfvgWk4s2GRpdQiWCCK1PDZ+ZNRe8rTAGzxz7CBPM8FXqOSTumV2B001eFmGyNYIQDal8DBe1tGEKNgBPtTgYFt1gFoVPwOzvhqWluxLo6QPlhA+x5DwVtGqPBFKIwEYW+rKzo/4rdHJzmUnU/2OYXpJURsG7sQnMlf+TxUmjJkaJ2zZ2Zy/ZVoxWyAP+wEVcJjc6FrZmluZ2VycHJpbnR4O2JyYW5kMS9wcm9kdWN0MS9kZXZpY2UxOjExL2lkLzIwMjEwODA1LjQyOnVzZXIvcmVsZWFzZS1rZXlz","name":"default","serialno":"fake-device-0"}
diff --git a/remote_provisioning/hwtrust/testdata/factory_csr/v3_p256_valid.json b/remote_provisioning/hwtrust/testdata/factory_csr/v3_p256_valid.json
new file mode 100644
index 0000000..4b31d7f
--- /dev/null
+++ b/remote_provisioning/hwtrust/testdata/factory_csr/v3_p256_valid.json
@@ -0,0 +1 @@
+{"csr":"hQGggqYBAgMmIAEhWCCpPq6NV6DAFtVa2xl5ma83hY7dMfHOk8+e3asA52ov0CJYININlwgFstqznGH2mxoRoPSj/QrGVRVmmU78E+ZF/dhyI1ggEpU/d/ByZJGgnFstE0omqKZX28FwxANv/egeiB4KzQOEQ6EBJqBZASepAWZpc3N1ZXICZ3N1YmplY3Q6AEdEUFggVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU6AEdEUlgguJZU4iyk0kqcDkURyPJj8GYNLiBIlpAU9FRjxPQ5MDg6AEdEU1WhOgABEXFuY29tcG9uZW50X25hbWU6AEdEVFggVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVU6AEdEVkEBOgBHRFdYcKYBAgMmIAEhWCCFTXTgD0Ij31zMNwkMHEHeyJ4R0PVQToYItbHWSBX9CiJYIDFaX3N0+wapfXrb4+8DKNU5VHnDnvb1rsC3cjAlb50lI1ggFFtuT3XEL9kjvKY93UOGxCkqIT8XK4czC8ezX6ykBfk6AEdEWEEgWEBtIzOvyF6PIVIYljj7CfahW+MgOpd4it7iAxvkssZYYXh78NlKJFR0E1G1DdLMfRwSajaXO3wDqG5AbfiUeVy5hEOhASagWQIQglggAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyBZAeqEA2dLRVlNSU5UrmVicmFuZGZHb29nbGVlZnVzZWQBZW1vZGVsZW1vZGVsZmRldmljZWZkZXZpY2VncHJvZHVjdGVwaXhlbGh2Yl9zdGF0ZWVncmVlbmpvc192ZXJzaW9uYjEybG1hbnVmYWN0dXJlcmZHb29nbGVtdmJtZXRhX2RpZ2VzdE8RIjNEVWZ3iJmqu8zd7v9uc2VjdXJpdHlfbGV2ZWxjdGVlcGJvb3RfcGF0Y2hfbGV2ZWwaATSMYnBib290bG9hZGVyX3N0YXRlZmxvY2tlZHJzeXN0ZW1fcGF0Y2hfbGV2ZWwaATSMYXJ2ZW5kb3JfcGF0Y2hfbGV2ZWwaATSMY4KmAQIDJiABIVggN9Y9nAF4lYrevH81hTwirMeHF9lyAXF7MCqiyuY5xXQiWCAMhrBKF2SHHYuLVGMWR/mAYErcLT0JyEG5J690NeM6MSNYIQD/zJBROsd66g7qA9O/HQXpdefN9GgMOhnDQRvUFpUya6YBAgMmIAEhWCCQpbufcGMc+xy60H0wPzbecB81xipX2TDC2LF41FrYeiJYIC4eKnTSeL7astnASAPMGEhgXhUtKJ2vAy86DTvTvZcLI1ghAOMuH5yRYDLMJzAceHafd4Abe1QORt5vqCO/eHun6BnpWED2SzeNFno+SzaMHQ/A6G9JnZqu+teAXGT9eD6MW5ilZ+pFew8+xCnv4Kyk2bABjp2XCsPxkkBjhllDbJakWUz1oWtmaW5nZXJwcmludHg7YnJhbmQxL3Byb2R1Y3QxL2RldmljZTE6MTEvaWQvMjAyMTA4MDUuNDI6dXNlci9yZWxlYXNlLWtleXM=","name":"default","serialno":"fake-device-0"}
diff --git a/remote_provisioning/hwtrust/tests/hwtrust_cli.rs b/remote_provisioning/hwtrust/tests/hwtrust_cli.rs
index eca870b..8136a7d 100644
--- a/remote_provisioning/hwtrust/tests/hwtrust_cli.rs
+++ b/remote_provisioning/hwtrust/tests/hwtrust_cli.rs
@@ -8,7 +8,7 @@
 #[test]
 fn exit_code_for_good_chain() {
     let output = Command::new(hwtrust_bin())
-        .args(["verify-dice-chain", "testdata/dice/valid_ed25519.chain"])
+        .args(["dice-chain", "testdata/dice/valid_ed25519.chain"])
         .output()
         .unwrap();
     assert!(output.status.success());
@@ -17,8 +17,50 @@
 #[test]
 fn exit_code_for_bad_chain() {
     let output = Command::new(hwtrust_bin())
-        .args(["verify-dice-chain", "testdata/dice/bad_p256.chain"])
+        .args(["dice-chain", "testdata/dice/bad_p256.chain"])
         .output()
         .unwrap();
     assert!(!output.status.success());
 }
+
+#[test]
+fn factory_csr_empty_input_fails() {
+    let output = Command::new(hwtrust_bin())
+        .args(["dice-chain", "testdata/dice/bad_p256.chain"])
+        .output()
+        .unwrap();
+    assert!(!output.status.success());
+}
+
+#[test]
+fn factory_csr_multiple_valid_csrs_succeeds() {
+    // Input file intentionally has some blank lines, ensuring we skip over them expectedly
+    let output = Command::new(hwtrust_bin())
+        .args(["factory-csr", "testdata/factory_csr/all_versions_valid.json"])
+        .output()
+        .unwrap();
+    assert!(output.status.success());
+}
+
+#[test]
+fn factory_csr_one_invalid_csr_of_multiple_fails() {
+    let output = Command::new(hwtrust_bin())
+        .args(["factory-csr", "testdata/factory_csr/all_versions_invalid.json"])
+        .output()
+        .unwrap();
+    assert!(!output.status.success());
+}
+
+#[test]
+fn exit_code_for_good_csr() {
+    let output =
+        Command::new(hwtrust_bin()).args(["csr", "testdata/csr/valid_csr.cbor"]).output().unwrap();
+    assert!(output.status.success());
+}
+
+#[test]
+fn exit_code_for_bad_csr() {
+    let output =
+        Command::new(hwtrust_bin()).args(["csr", "testdata/csr/bad_csr.cbor"]).output().unwrap();
+    assert!(!output.status.success());
+}