keramics_compression/
lznt1.rs

1/* Copyright 2024-2025 Joachim Metz <joachim.metz@gmail.com>
2 *
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License. You may
5 * obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0
6 *
7 * Unless required by applicable law or agreed to in writing, software
8 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
9 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
10 * License for the specific language governing permissions and limitations
11 * under the License.
12 */
13
14//! LZNT1 decompression.
15//!
16//! Provides decompression support for LZNT1 compressed data.
17
18use keramics_core::ErrorTrace;
19use keramics_core::mediator::{Mediator, MediatorReference};
20use keramics_layout_map::LayoutMap;
21use keramics_types::bytes_to_u16_le;
22
23#[derive(LayoutMap)]
24#[layout_map(
25    structure(
26        byte_order = "little",
27        field(name = "block_size", data_type = "BitField16<12>", modifier = "+ 1"),
28        field(name = "signature", data_type = "BitField16<3>"),
29        field(name = "is_compressed_flag", data_type = "BitField16<1>"),
30    ),
31    method(name = "debug_read_data")
32)]
33/// LZNT1 block header.
34struct Lznt1BlockHeader {
35    /// Block size.
36    block_size: u16,
37
38    /// Value to indicate the block is compressed.
39    is_compressed: bool,
40}
41
42impl Lznt1BlockHeader {
43    /// Creates a new block header.
44    pub fn new() -> Self {
45        Self {
46            block_size: 0,
47            is_compressed: false,
48        }
49    }
50
51    /// Reads the block header from a buffer.
52    pub fn read_data(&mut self, data: &[u8]) -> Result<(), ErrorTrace> {
53        if data.len() < 2 {
54            return Err(keramics_core::error_trace_new!(
55                "Unsupported LZNT1 block header data size"
56            ));
57        }
58        let bit_fields1: u16 = bytes_to_u16_le!(data, 0);
59
60        self.block_size = (bit_fields1 & 0x0fff) + 1;
61        self.is_compressed = bit_fields1 & 0x8000 != 0;
62
63        Ok(())
64    }
65}
66
67/// Context for decompressing LZNT1 compressed data.
68pub struct Lznt1Context {
69    /// Mediator.
70    mediator: MediatorReference,
71
72    /// Uncompressed data size.
73    pub uncompressed_data_size: usize,
74}
75
76impl Lznt1Context {
77    /// Creates a new context.
78    pub fn new() -> Self {
79        Self {
80            mediator: Mediator::current(),
81            uncompressed_data_size: 0,
82        }
83    }
84
85    /// Decompress data.
86    pub fn decompress(
87        &mut self,
88        compressed_data: &[u8],
89        uncompressed_data: &mut [u8],
90    ) -> Result<(), ErrorTrace> {
91        let mut compressed_data_offset: usize = 0;
92        let compressed_data_size: usize = compressed_data.len();
93
94        let mut uncompressed_data_offset: usize = 0;
95        let uncompressed_data_size: usize = uncompressed_data.len();
96
97        while compressed_data_offset < compressed_data_size {
98            if uncompressed_data_offset >= uncompressed_data_size {
99                break;
100            }
101            if 2 > compressed_data_size - compressed_data_offset {
102                return Err(keramics_core::error_trace_new!(
103                    "Invalid compressed data value too small"
104                ));
105            }
106            let compressed_data_end_offset: usize = compressed_data_offset + 2;
107
108            if compressed_data[compressed_data_offset..compressed_data_end_offset] == [0; 2] {
109                break;
110            }
111            let mut block_header: Lznt1BlockHeader = Lznt1BlockHeader::new();
112
113            if self.mediator.debug_output {
114                self.mediator.debug_print(format!(
115                    "Lznt1BlockHeader data of size: 2 at offset: {} (0x{:08x})\n",
116                    compressed_data_offset, compressed_data_offset
117                ));
118                self.mediator.debug_print_data(
119                    &compressed_data[compressed_data_offset..compressed_data_end_offset],
120                    true,
121                );
122                self.mediator.debug_print(Lznt1BlockHeader::debug_read_data(
123                    &compressed_data[compressed_data_offset..compressed_data_end_offset],
124                ));
125            }
126            block_header
127                .read_data(&compressed_data[compressed_data_offset..compressed_data_end_offset])?;
128            compressed_data_offset = compressed_data_end_offset;
129
130            if block_header.is_compressed {
131                let write_count: usize = self.decompress_block(
132                    block_header.block_size as usize,
133                    compressed_data,
134                    &mut compressed_data_offset,
135                    compressed_data_size,
136                    &mut uncompressed_data[uncompressed_data_offset..],
137                    uncompressed_data_size - uncompressed_data_offset,
138                )?;
139                uncompressed_data_offset += write_count;
140            } else {
141                let compressed_data_end_offset: usize =
142                    compressed_data_offset + block_header.block_size as usize;
143                let uncompressed_data_end_offset: usize =
144                    uncompressed_data_offset + block_header.block_size as usize;
145
146                if self.mediator.debug_output {
147                    self.mediator
148                        .debug_print(format!("Lznt1Context::decompress {{\n",));
149                    self.mediator.debug_print(format!("    literal data:\n"));
150                    self.mediator.debug_print_data(
151                        &compressed_data[compressed_data_offset..compressed_data_end_offset],
152                        true,
153                    );
154                    self.mediator.debug_print(format!("}}\n\n"));
155                }
156                if compressed_data_end_offset > compressed_data_size {
157                    return Err(keramics_core::error_trace_new!(
158                        "Invalid compressed data value too small"
159                    ));
160                }
161                if uncompressed_data_end_offset > uncompressed_data_size {
162                    return Err(keramics_core::error_trace_new!(
163                        "Invalid uncompressed data value too small"
164                    ));
165                }
166                uncompressed_data[uncompressed_data_offset..uncompressed_data_end_offset]
167                    .copy_from_slice(
168                        &compressed_data[compressed_data_offset..compressed_data_end_offset],
169                    );
170
171                compressed_data_offset = compressed_data_end_offset;
172                uncompressed_data_offset = uncompressed_data_end_offset;
173            }
174        }
175        self.uncompressed_data_size = uncompressed_data_offset;
176
177        Ok(())
178    }
179
180    /// Decompress a block.
181    fn decompress_block(
182        &self,
183        block_size: usize,
184        compressed_data: &[u8],
185        compressed_data_offset: &mut usize,
186        compressed_data_size: usize,
187        uncompressed_data: &mut [u8],
188        uncompressed_data_size: usize,
189    ) -> Result<usize, ErrorTrace> {
190        let mut safe_compressed_data_offset: usize = *compressed_data_offset;
191        let mut uncompressed_data_offset: usize = 0;
192
193        if self.mediator.debug_output {
194            self.mediator
195                .debug_print(format!("Lznt1Context::decompress_block {{\n",));
196        }
197        let compressed_data_end_offset: usize = safe_compressed_data_offset + block_size;
198        let mut compression_tuple_threshold: usize = 16;
199        let mut compression_tuple_distance_shift: u16 = 12;
200        let mut compression_tuple_match_size_mask: u16 = 0x0fff;
201
202        while safe_compressed_data_offset < compressed_data_end_offset {
203            if safe_compressed_data_offset >= compressed_data_size {
204                break;
205            }
206            let mut compression_flags: u8 = compressed_data[safe_compressed_data_offset];
207
208            if self.mediator.debug_output {
209                self.mediator.debug_print(format!(
210                    "    compressed_data_offset: {} (0x{:08x}),\n",
211                    safe_compressed_data_offset, safe_compressed_data_offset
212                ));
213                self.mediator.debug_print(format!(
214                    "    compression_flags: 0x{:02x},\n",
215                    compression_flags
216                ));
217            }
218            safe_compressed_data_offset += 1;
219
220            for _ in 0..8 {
221                if compression_flags & 0x01 != 0 {
222                    if 2 > compressed_data_size - safe_compressed_data_offset {
223                        return Err(keramics_core::error_trace_new!(
224                            "Invalid compressed data value too small"
225                        ));
226                    }
227                    let compression_tuple: u16 =
228                        bytes_to_u16_le!(compressed_data, safe_compressed_data_offset);
229                    safe_compressed_data_offset += 2;
230
231                    let distance: u16 = (compression_tuple >> compression_tuple_distance_shift) + 1;
232                    let match_size: u16 =
233                        (compression_tuple & compression_tuple_match_size_mask) + 3;
234
235                    if self.mediator.debug_output {
236                        self.mediator.debug_print(format!(
237                            "    compressed_data_offset: {} (0x{:08x}),\n",
238                            safe_compressed_data_offset, safe_compressed_data_offset
239                        ));
240                        self.mediator.debug_print(format!(
241                            "    compression_tuple: 0x{:04x} (shift: {}, mask: 0x{:04x}),\n",
242                            compression_tuple,
243                            compression_tuple_distance_shift,
244                            compression_tuple_match_size_mask
245                        ));
246                        self.mediator
247                            .debug_print(format!("    distance: {},\n", distance));
248                        self.mediator
249                            .debug_print(format!("    match_size: {},\n", match_size));
250                        self.mediator.debug_print(format!(
251                            "    uncompressed_data_offset: {},\n",
252                            uncompressed_data_offset
253                        ));
254                    }
255                    if distance as usize > uncompressed_data_offset {
256                        return Err(keramics_core::error_trace_new!(
257                            "Invalid distance value exceeds uncompressed data offset"
258                        ));
259                    }
260                    if match_size as usize > uncompressed_data_size - uncompressed_data_offset {
261                        return Err(keramics_core::error_trace_new!(
262                            "Invalid match size value exceeds uncompressed data size"
263                        ));
264                    }
265                    let match_offset: usize = uncompressed_data_offset - distance as usize;
266                    let mut match_end_offset: usize = match_offset;
267
268                    for _ in 0..match_size {
269                        uncompressed_data[uncompressed_data_offset] =
270                            uncompressed_data[match_end_offset];
271
272                        match_end_offset += 1;
273                        uncompressed_data_offset += 1;
274                    }
275                    if self.mediator.debug_output {
276                        self.mediator
277                            .debug_print(format!("    match offset: {}\n", match_offset));
278                        self.mediator.debug_print(format!("    match data:\n"));
279                        self.mediator.debug_print_data(
280                            &uncompressed_data[match_offset..match_end_offset],
281                            true,
282                        );
283                    }
284                } else {
285                    if safe_compressed_data_offset >= compressed_data_size {
286                        return Err(keramics_core::error_trace_new!(
287                            "Invalid compressed data value too small"
288                        ));
289                    }
290                    if uncompressed_data_offset >= uncompressed_data_size {
291                        return Err(keramics_core::error_trace_new!(
292                            "Invalid uncompressed data value too small"
293                        ));
294                    }
295                    uncompressed_data[uncompressed_data_offset] =
296                        compressed_data[safe_compressed_data_offset];
297
298                    safe_compressed_data_offset += 1;
299                    uncompressed_data_offset += 1;
300                }
301                compression_flags >>= 1;
302
303                if safe_compressed_data_offset >= compressed_data_end_offset {
304                    break;
305                }
306                // The compression tuple match size mask and distance shift are dependent on the uncompressed data offset.
307                while uncompressed_data_offset > compression_tuple_threshold {
308                    if compression_tuple_distance_shift == 0 {
309                        return Err(keramics_core::error_trace_new!(
310                            "Invalid compression tuple offset shift value out of bounds"
311                        ));
312                    }
313                    compression_tuple_distance_shift -= 1;
314                    compression_tuple_match_size_mask >>= 1;
315                    compression_tuple_threshold <<= 1;
316                }
317            }
318        }
319        if self.mediator.debug_output {
320            self.mediator.debug_print(format!("}}\n\n"));
321        }
322        *compressed_data_offset = compressed_data_end_offset;
323
324        Ok(uncompressed_data_offset)
325    }
326}
327
328#[cfg(test)]
329mod tests {
330    use super::*;
331
332    use std::fs;
333
334    fn get_test_data() -> Vec<u8> {
335        return vec![
336            0x47, 0xb8, 0x04, 0x0a, 0x20, 0x1d, 0x00, 0x41, 0x70, 0x61, 0x63, 0x68, 0x00, 0x65,
337            0x20, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x02, 0x65, 0x19, 0xbc, 0x56, 0x65, 0x72,
338            0x73, 0x69, 0x6f, 0x00, 0x6e, 0x20, 0x32, 0x2e, 0x30, 0x2c, 0x20, 0x4a, 0x00, 0x61,
339            0x6e, 0x75, 0x61, 0x72, 0x79, 0x20, 0x32, 0x08, 0x30, 0x30, 0x34, 0x16, 0x68, 0x68,
340            0x74, 0x74, 0x70, 0x00, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x61, 0x81, 0x02,
341            0x66, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x03, 0x6a, 0x08, 0x73, 0x2f, 0x0a, 0x01,
342            0x38, 0x54, 0x45, 0x52, 0x4d, 0x00, 0x53, 0x20, 0x41, 0x4e, 0x44, 0x20, 0x43, 0x4f,
343            0x00, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x00, 0x20, 0x46, 0x4f, 0x52,
344            0x20, 0x55, 0x53, 0x45, 0x00, 0x2c, 0x20, 0x52, 0x45, 0x50, 0x52, 0x4f, 0x44, 0x14,
345            0x55, 0x43, 0x01, 0x16, 0x2c, 0x02, 0x25, 0x44, 0x49, 0x53, 0x60, 0x54, 0x52, 0x49,
346            0x42, 0x55, 0x01, 0x11, 0x02, 0x40, 0x31, 0x00, 0x2e, 0x20, 0x44, 0x65, 0x66, 0x69,
347            0x6e, 0x69, 0xb2, 0x74, 0x00, 0x9c, 0x73, 0x2e, 0x02, 0x13, 0x00, 0xf4, 0x22, 0x04,
348            0xd1, 0x00, 0x22, 0x20, 0x73, 0x68, 0x61, 0x6c, 0x6c, 0x20, 0x40, 0x6d, 0x65, 0x61,
349            0x6e, 0x20, 0x74, 0x80, 0x74, 0x74, 0x00, 0x65, 0x72, 0x6d, 0x73, 0x20, 0x61, 0x6e,
350            0x64, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x64, 0x83, 0x1a, 0x20, 0x66, 0x00, 0x6f, 0x72,
351            0x20, 0x75, 0x73, 0x65, 0x2c, 0x20, 0x00, 0x72, 0x65, 0x70, 0x72, 0x6f, 0x64, 0x75,
352            0x63, 0x0d, 0x01, 0x26, 0x2c, 0x04, 0x6c, 0x81, 0x15, 0x64, 0x69, 0x73, 0x74, 0x10,
353            0x72, 0x69, 0x62, 0x75, 0x81, 0x0b, 0x20, 0x61, 0x73, 0x04, 0x20, 0x64, 0x01, 0x39,
354            0x65, 0x64, 0x20, 0x62, 0x79, 0x88, 0x20, 0x53, 0x65, 0x82, 0x16, 0x73, 0x20, 0x31,
355            0x80, 0x2f, 0x00, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x20, 0x39, 0x20, 0x14, 0x6f, 0x66,
356            0x00, 0x06, 0x69, 0x80, 0x13, 0x6f, 0x63, 0x75, 0x90, 0x6d, 0x65, 0x6e, 0x74, 0x8d,
357            0x4b, 0x6f, 0x72, 0x0e, 0x4c, 0x00, 0x63, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68,
358            0x00, 0x74, 0x20, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x20, 0x03, 0x00, 0x49, 0x00, 0x1c,
359            0x69, 0x74, 0x79, 0x20, 0x61, 0x75, 0xc0, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x82,
360            0x37, 0x04, 0x4a, 0x83, 0x01, 0x65, 0x8d, 0x18, 0x74, 0x68, 0x61, 0x74, 0x20, 0x00,
361            0x3a, 0x00, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x07, 0x00, 0x41, 0x46,
362            0x76, 0x08, 0x20, 0x65, 0x67, 0x61, 0x6c, 0x20, 0x92, 0x45, 0x40, 0x08, 0x74, 0x79,
363            0x0e, 0x21, 0x75, 0x6e, 0x81, 0x78, 0xf1, 0x42, 0x2f, 0x65, 0x20, 0x61, 0x00, 0x36,
364            0x40, 0x11, 0x45, 0x21, 0x80, 0x4c, 0x4b, 0x40, 0x52, 0xc4, 0x1f, 0x6f, 0x00, 0x20,
365            0x72, 0x20, 0x82, 0x06, 0x69, 0x1c, 0x65, 0x73, 0x40, 0x1a, 0x80, 0x1e, 0x00, 0x54,
366            0x74, 0x72, 0x6f, 0xc0, 0x6c, 0x2c, 0x20, 0x61, 0x72, 0x65, 0x41, 0x57, 0x01, 0x03,
367            0x1a, 0x6c, 0x02, 0x2d, 0x2c, 0x41, 0x33, 0x41, 0x05, 0x75, 0x6e, 0x64, 0x81, 0x80,
368            0x36, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x44, 0x12, 0xc1, 0x44, 0x0d, 0x20, 0x77,
369            0x69, 0x74, 0x68, 0xc3, 0x11, 0x03, 0x1c, 0x18, 0x2e, 0x20, 0x46, 0x80, 0x40, 0xc1,
370            0x39, 0x70, 0x75, 0x72, 0x78, 0x70, 0x6f, 0x73, 0x40, 0x19, 0x46, 0x55, 0x06, 0x7c,
371            0xc5, 0x68, 0x22, 0x05, 0x44, 0x11, 0x22, 0x02, 0x7a, 0x73, 0x20, 0x28, 0x69, 0x29,
372            0x01, 0xc0, 0x12, 0x65, 0x20, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x60, 0x2c, 0x20, 0x64,
373            0x69, 0x72, 0x40, 0x69, 0x01, 0x21, 0x69, 0x03, 0xc0, 0x7c, 0xc1, 0x02, 0x2c, 0x20,
374            0x74, 0x6f, 0x20, 0x63, 0x3e, 0x61, 0x00, 0x7d, 0xc1, 0x09, 0x84, 0x22, 0x83, 0x09,
375            0x42, 0x40, 0x72, 0x20, 0xc0, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x01, 0x6f, 0x41,
376            0x73, 0x10, 0x73, 0x75, 0x63, 0x68, 0x83, 0x3b, 0x79, 0x2c, 0x20, 0xf8, 0x77, 0x68,
377            0x65, 0x82, 0x3f, 0x40, 0x7f, 0xc2, 0x1d, 0x00, 0x4a, 0xc0, 0x16, 0x33, 0x04, 0x11,
378            0x42, 0x46, 0x77, 0x69, 0x41, 0x93, 0xc0, 0x2f, 0x28, 0x69, 0x43, 0x40, 0x22, 0x02,
379            0x74, 0x73, 0x68, 0x69, 0x70, 0x41, 0x12, 0x66, 0x44, 0x69, 0x66, 0xc0, 0x74, 0x70,
380            0x65, 0x72, 0x40, 0xdc, 0x74, 0x40, 0x20, 0x28, 0x35, 0x30, 0x25, 0x29, 0x01, 0x26,
381            0x6d, 0x0e, 0x6f, 0x00, 0x4d, 0x03, 0x5e, 0x05, 0x12, 0x75, 0x74, 0x73, 0x74, 0xc7,
382            0x00, 0x9f, 0x41, 0x72, 0x00, 0xb1, 0x72, 0x65, 0x73, 0x82, 0x51, 0x40, 0x14, 0x91,
383            0x80, 0x14, 0x62, 0x65, 0x6e, 0x00, 0x41, 0x63, 0x69, 0x80, 0x72, 0x07, 0x4a, 0x17,
384            0xc8, 0x29, 0x87, 0x7c, 0x59, 0x6f, 0x75, 0x22, 0x20, 0x8a, 0x28, 0xa0, 0x11, 0x22,
385            0x20, 0x01, 0x72, 0x22, 0x29, 0x69, 0x62, 0x43, 0xc0, 0x62, 0x61, 0x22, 0x76, 0x69,
386            0x64, 0x75, 0x61, 0x09, 0x72, 0x4c, 0x20, 0x4c, 0xe8, 0x43, 0x24, 0x11, 0x65, 0x78,
387            0xa0, 0x15, 0x69, 0x46, 0x73, 0x01, 0x11, 0xe0, 0x16, 0x6d, 0x69, 0x73, 0x01, 0x81,
388            0x73, 0x7e, 0x20, 0xe2, 0x4c, 0xe2, 0x3b, 0x60, 0x28, 0xe0, 0x4e, 0x44, 0x6e, 0xe7,
389            0x0e, 0x53, 0x54, 0x6f, 0x75, 0xa0, 0x1c, 0x22, 0xc1, 0x6b, 0x6d, 0xed, 0x70, 0x70,
390            0xc0, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0xc0, 0x07, 0x80, 0x6f, 0x22, 0x6d, 0x22,
391            0x70, 0x6d, 0x61, 0x6b, 0x41, 0x0c, 0x6d, 0x6f, 0x40, 0x64, 0x69, 0x66, 0x69, 0x63,
392            0x61, 0x61, 0x6d, 0x73, 0x81, 0x05, 0x3c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0xc1,
393            0x03, 0x01, 0x80, 0x70, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x69, 0x18, 0x6d, 0x69,
394            0x74, 0xc0, 0x07, 0xe0, 0x38, 0x73, 0x6f, 0x66, 0x34, 0x74, 0x77, 0xc1, 0x4b, 0x73,
395            0x02, 0x0e, 0x60, 0x4f, 0x64, 0x65, 0xff, 0x80, 0x3e, 0x64, 0x6f, 0x02, 0x09, 0x24,
396            0x19, 0x03, 0x04, 0x20, 0x54, 0x80, 0x59, 0x40, 0x37, 0x20, 0x66, 0x69, 0x67, 0x75,
397            0x72, 0xe2, 0x03, 0x20, 0x66, 0x88, 0x69, 0x6c, 0x65, 0xc8, 0x87, 0x4f, 0x62, 0x6a,
398            0x20, 0x46, 0x31, 0x4f, 0x17, 0x61, 0x6e, 0x79, 0xc3, 0x19, 0xc0, 0x31, 0x75, 0x6c,
399            0x21, 0xa2, 0x6c, 0x66, 0x72, 0x6f, 0x6d, 0xc0, 0x4e, 0x63, 0x68, 0x54, 0x61, 0x6e,
400            0xa0, 0x16, 0x6c, 0x24, 0x0d, 0x74, 0x80, 0x70, 0x73, 0x2f, 0x41, 0x1b, 0xc3, 0x0b,
401            0x80, 0x2f, 0x22, 0x02, 0x6c, 0xc4, 0x01, 0x66, 0x20, 0xcc, 0x61, 0x20, 0xc3, 0x23,
402            0xc2, 0x09, 0x2c, 0x20, 0x0a, 0x1c, 0x64, 0x08, 0x8b, 0xcc, 0x1c, 0xc0, 0x66, 0x70,
403            0xa0, 0x14, 0x64, 0x20, 0x6f, 0x82, 0x13, 0xdd, 0xc4, 0x1c, 0x67, 0x20, 0x41, 0x60,
404            0x18, 0x20, 0x21, 0x64, 0x09, 0x1e, 0x05, 0x27, 0x9b, 0xa1, 0x97, 0x20, 0x1d, 0x76,
405            0xa3, 0xb7, 0x20, 0x75, 0x6f, 0x20, 0x63, 0x77, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x61,
406            0x20, 0x74, 0x79, 0x42, 0x70, 0xc9, 0x1e, 0x57, 0x6f, 0x72, 0x6b, 0x8e, 0x82, 0x77,
407            0x9f, 0x80, 0x02, 0x21, 0x57, 0xe3, 0x90, 0xe1, 0x58, 0x47, 0x60, 0x69, 0x6e, 0xc5,
408            0x18, 0x1c, 0x6f, 0x72, 0xa4, 0x16, 0x43, 0x27, 0xc4, 0x1a, 0x6d, 0x61, 0x64, 0x01,
409            0x00, 0x89, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0xbc, 0x65, 0x20, 0xe3, 0x7f,
410            0x81, 0x7a, 0x84, 0x45, 0x40, 0x31, 0x73, 0x60, 0x1f, 0xee, 0x64, 0xe1, 0x3d, 0x40,
411            0x18, 0x20, 0x6a, 0x61, 0xc4, 0x08, 0xa7, 0x9b, 0xc0, 0x20, 0x7f, 0x60, 0xc6, 0x60,
412            0x4c, 0xc3, 0x9b, 0x23, 0x25, 0x80, 0x05, 0x60, 0x0f, 0xc0, 0x2a, 0x61, 0xf4, 0x74,
413            0x74, 0x41, 0xd8, 0x64, 0x01, 0x7a, 0x01, 0x0b, 0xa1, 0x15, 0x44, 0x08, 0x82, 0x28,
414            0x80, 0x5b, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x20, 0x0f, 0x1f, 0xe0, 0x53, 0x40, 0xbb,
415            0xc0, 0x5c, 0x03, 0x07, 0x21, 0x05, 0x41, 0x70, 0x70, 0x02, 0x65, 0xc0, 0x81, 0x78,
416            0x20, 0x62, 0x65, 0x6c, 0x6f, 0x04, 0x77, 0x29, 0xe7, 0x56, 0x44, 0x65, 0x72, 0x69,
417            0x76, 0xd1, 0x00, 0x35, 0x76, 0x65, 0x20, 0x01, 0x22, 0x73, 0x2a, 0x22, 0x21, 0x40,
418            0xfb, 0x61, 0x0c, 0x73, 0x20, 0x20, 0xa3, 0x1f, 0x04, 0x10, 0xe1, 0x3f, 0x20, 0x8d,
419            0xe4, 0xb2, 0x78, 0x62, 0x61, 0x73, 0x80, 0x0f, 0x40, 0xe8, 0x41, 0x71, 0xe0, 0xa0,
420            0x69, 0xfe, 0x76, 0xc0, 0x01, 0xa1, 0x47, 0x63, 0x95, 0x41, 0x0d, 0x02, 0xd3, 0xa0,
421            0x06, 0x40, 0x8c, 0xde, 0x69, 0x00, 0x8e, 0xa0, 0x14, 0x24, 0x09, 0x80, 0x35, 0x74,
422            0x60, 0xc0, 0x40, 0x74, 0x48, 0x72, 0x65, 0x76, 0x40, 0x71, 0x6f, 0x6e, 0xa0, 0x81,
423            0x61, 0xae, 0x6e, 0x40, 0x23, 0x02, 0x4a, 0x80, 0x01, 0x65, 0x20, 0x2c, 0x6f, 0x83,
424            0x59, 0x3f, 0xa0, 0x01, 0x00, 0x23, 0xc4, 0x3c, 0xd9, 0x34, 0xc4, 0x04, 0x51, 0x6e,
425            0x65, 0x73, 0xcb, 0x60, 0x56, 0xd2, 0x17, 0x61, 0xc0, 0x06, 0x6f, 0x6c, 0x00, 0x33,
426            0xd0, 0x12, 0xf1, 0x20, 0x06, 0x67, 0x69, 0x6e, 0x50, 0x06, 0x11, 0x0e, 0x3b, 0x1f,
427            0xff, 0x58, 0x7f, 0xd4, 0x04, 0x55, 0x59, 0x16, 0x1d, 0xed, 0x13, 0xa4, 0x3f, 0xb0,
428            0x0a, 0x54, 0x2e, 0x65, 0x06, 0x20, 0xe1, 0x05, 0x54, 0x63, 0x72, 0x65, 0x6d, 0x61,
429            0x69, 0xc1, 0xc5, 0x60, 0x73, 0x65, 0x70, 0x61, 0x72, 0x92, 0x22, 0x71, 0x11, 0x81,
430            0xf2, 0x4e, 0x6d, 0x65, 0x72, 0x65, 0x6c, 0x79, 0xe0, 0x3e, 0x34, 0x6e, 0x6b, 0x32,
431            0x4c, 0x62, 0xe0, 0x4a, 0x71, 0x77, 0x6e, 0x61, 0xd4, 0x6d, 0x65, 0x80, 0x13, 0x6f,
432            0x70, 0x21, 0x65, 0x70, 0x05, 0x70, 0x7d, 0xf8, 0x66, 0x61, 0x63, 0x42, 0x62, 0xa5,
433            0x2f, 0x31, 0x1e, 0x46, 0x15, 0x4e, 0x09, 0x21, 0xd0, 0x01, 0x72, 0x65, 0x6f, 0x66,
434            0x57, 0x1f, 0x43, 0x6f, 0xfc, 0x6e, 0x74, 0x35, 0x7e, 0x1f, 0x1f, 0x3f, 0x30, 0xc4,
435            0x0c, 0x30, 0x49, 0x84, 0x10, 0xff, 0xf1, 0x06, 0x06, 0x14, 0x04, 0x37, 0x31, 0x14,
436            0x71, 0x01, 0x76, 0x08, 0xe1, 0x23, 0x1a, 0x4e, 0xf9, 0xc1, 0x5f, 0x61, 0x64, 0x94,
437            0x88, 0x95, 0x04, 0x51, 0x0d, 0xd0, 0x2e, 0x52, 0x03, 0x4b, 0xa0, 0x1c, 0xcf, 0x0b,
438            0x68, 0x50, 0x11, 0x6f, 0x66, 0xb7, 0x25, 0x69, 0x94, 0x6e, 0x74, 0x61, 0x73, 0x6f,
439            0xb0, 0x1b, 0x6c, 0x79, 0x54, 0x04, 0xf8, 0x73, 0x75, 0x62, 0x20, 0x52, 0x34, 0x52,
440            0xd3, 0x19, 0xb0, 0x04, 0xd1, 0x25, 0xff, 0x22, 0x34, 0xd2, 0x9c, 0x30, 0x34, 0xe6,
441            0x09, 0xc0, 0x37, 0xb1, 0x00, 0x6c, 0x85, 0xc4, 0x04, 0x4b, 0x90, 0x03, 0xc1, 0x39,
442            0x6e, 0x50, 0x0f, 0x64, 0x69, 0xdf, 0x62, 0x74, 0x97, 0x8c, 0x8a, 0x51, 0x59, 0xe2,
443            0x07, 0x20, 0xf0, 0x2e, 0x62, 0x65, 0x30, 0x98, 0xee, 0x66, 0xa0, 0x10, 0xb4, 0x04,
444            0x5f, 0x06, 0x72, 0xdf, 0x25, 0x93, 0x13, 0x60, 0x3b, 0xa3, 0xb2, 0x96, 0x82, 0x9a,
445            0x2c, 0x20, 0x22, 0x36, 0x0d, 0x22, 0xb4, 0x04, 0x4f, 0x81, 0x9d, 0xf1, 0x9c, 0x64,
446            0x59, 0xc0, 0x28, 0x65, 0x6c, 0x90, 0x5b, 0x72, 0x92, 0x6f, 0xc0, 0x58, 0x2c, 0x20,
447            0x50, 0x18, 0x62, 0x61, 0x10, 0x89, 0x61, 0xd0, 0x0b, 0x77, 0x72, 0x69, 0x74, 0x30,
448            0x12, 0x50, 0x53, 0x6d, 0xf6, 0x6d, 0x60, 0x8e, 0xf3, 0x65, 0x20, 0x51, 0x30, 0x55,
449            0x09, 0xa3, 0x24, 0x86, 0x12, 0xf1, 0x30, 0x03, 0x69, 0x74, 0x73, 0x22, 0xa1, 0xc2,
450            0x32, 0x02, 0x41, 0xa0, 0x35, 0xff, 0xf3, 0x47, 0xaf, 0x68, 0x11, 0x48, 0xa4, 0x04,
451            0x01, 0x8e, 0x37, 0x06, 0x10, 0x10, 0x37, 0x09, 0xe9, 0x70, 0x85, 0x69, 0x6c, 0xc1,
452            0x03, 0x6c, 0x20, 0xa5, 0xd0, 0x04, 0x28, 0x6b, 0x03, 0xa0, 0x09, 0x10, 0x28, 0x6f,
453            0x6c, 0x20, 0x73, 0x79, 0x73, 0x38, 0x74, 0x65, 0x6d, 0xb6, 0x6f, 0x21, 0x5c, 0x30,
454            0x77, 0x75, 0x65, 0xfa, 0x20, 0x20, 0x64, 0x63, 0x32, 0x72, 0x14, 0x02, 0x33, 0x51,
455            0x91, 0x6f, 0xd3, 0x8a, 0xef, 0x01, 0xa9, 0x42, 0x33, 0x49, 0x17, 0x41, 0x22, 0x65,
456            0x84, 0x09, 0x5a, 0x20, 0x61, 0x18, 0xe7, 0xb4, 0x95, 0xc1, 0x16, 0x30, 0xae, 0x63,
457            0x75, 0xa0, 0x7d, 0x20, 0x9f, 0x12, 0x07, 0x9e, 0x6d, 0xf2, 0x52, 0xd0, 0x00, 0x71,
458            0x02, 0x91, 0x28, 0x2c, 0x20, 0xb0, 0x77, 0x79, 0x84, 0x04, 0x65, 0x78, 0xf5, 0x78,
459            0xbb, 0x0e, 0x35, 0xa8, 0x20, 0x67, 0x73, 0x80, 0x70, 0x69, 0x63, 0x75, 0x6f, 0x75,
460            0x73, 0xc0, 0x3b, 0x70, 0x6d, 0x61, 0x72, 0x6b, 0xa1, 0x4f, 0x50, 0xad, 0xc0, 0x04,
461            0x72, 0x03, 0xd1, 0x91, 0x74, 0x04, 0x64, 0x65, 0x73, 0x69, 0x67, 0x6e, 0xde, 0x61,
462            0x41, 0x2a, 0xa0, 0x28, 0x31, 0x1a, 0x82, 0x15, 0x79, 0x52, 0x3d, 0x9c, 0x28, 0x49,
463            0x81, 0xb7, 0x22, 0x4e, 0xa0, 0x7f, 0x61, 0x20, 0xb9, 0x3a, 0x2e, 0xf4, 0x22, 0x0a,
464            0xc4, 0x04, 0x22, 0x66, 0x01, 0xfc, 0xb5, 0x66, 0x0f, 0x81, 0x0d, 0xbf, 0x11, 0x38,
465            0x2f, 0x8f, 0x25, 0xb1, 0xa4, 0x04, 0x09, 0x14, 0xf1, 0x51, 0x6d, 0xf0, 0x7a, 0x09,
466            0x49, 0x07, 0x20, 0x68, 0x50, 0xc0, 0x62, 0x65, 0x65, 0x6e, 0xf9, 0xf0, 0x21, 0x63,
467            0x65, 0x92, 0x5c, 0xe0, 0x31, 0x79, 0x06, 0x84, 0x04, 0x00, 0x2b, 0x70, 0x73, 0x65,
468            0x71, 0x75, 0xc0, 0x39, 0x70, 0x10, 0xa0, 0x23, 0x6f, 0x1f, 0xb0, 0xac, 0xe3, 0x7a,
469            0x01, 0xaf, 0xe8, 0x37, 0x83, 0x48, 0x32, 0x2e, 0x20, 0x36, 0x47, 0xe1, 0xbb, 0x01,
470            0x19, 0x43, 0x16, 0xc1, 0x73, 0x05, 0x65, 0x2e, 0x78, 0x20, 0x53, 0x75, 0xa3, 0x7f,
471            0xe0, 0x35, 0x51, 0x19, 0xcf, 0xcc, 0x6e, 0x66, 0x73, 0x90, 0x03, 0xa4, 0x07, 0x74,
472            0x68, 0xd0, 0x33, 0xa4, 0x03, 0x2c, 0xfc, 0x20, 0x65, 0x50, 0x72, 0x77, 0x13, 0xc0,
473            0x2d, 0x21, 0x44, 0x30, 0x0b, 0x52, 0x9c, 0x8f, 0x72, 0x81, 0xc0, 0xa1, 0x50, 0x0e,
474            0x10, 0x9e, 0x70, 0x65, 0x74, 0xc0, 0xa0, 0x43, 0x65, 0x54, 0xb0, 0x5a, 0x6c, 0x64,
475            0x77, 0x69, 0x21, 0x95, 0x6e, 0xa8, 0x6f, 0x6e, 0x2d, 0x92, 0x1f, 0x73, 0x10, 0x0f,
476            0x2c, 0x60, 0x98, 0x12, 0x2d, 0x50, 0x8f, 0x72, 0x67, 0xb0, 0x63, 0x72, 0x6f, 0x79,
477            0x00, 0x61, 0x6c, 0x74, 0x79, 0x2d, 0x66, 0x72, 0x65, 0xc5, 0xd0, 0x00, 0x69, 0x80,
478            0x9d, 0x76, 0x6f, 0x63, 0x81, 0x5c, 0xb4, 0x08, 0x7f, 0xa7, 0x1c, 0xf4, 0xdf, 0xe1,
479            0x7a, 0xd5, 0xd6, 0x10, 0x03, 0xe0, 0xa0, 0x90, 0x5f, 0x65, 0x8f, 0xb0, 0xdc, 0xab,
480            0x77, 0xd0, 0x0c, 0x75, 0x08, 0x70, 0x75, 0x62, 0xb0, 0x03, 0x81, 0x50, 0x14, 0x64,
481            0x69, 0x73, 0x70, 0x6c, 0x61, 0x70, 0xb8, 0xc7, 0x16, 0x01, 0x30, 0x0b, 0x60, 0x4d,
482            0x6d, 0x2c, 0x20, 0xd0, 0x16, 0xf4, 0x05, 0x9f, 0xa0, 0x6d, 0x30, 0x9e, 0xa0, 0x02,
483            0x33, 0x5d, 0xb0, 0x33, 0x68, 0x65, 0xb4, 0x08, 0xff, 0x52, 0x55, 0x91, 0x20, 0xc2,
484            0xb2, 0xbe, 0x55, 0x30, 0x19, 0x94, 0x99, 0x40, 0x12, 0xc8, 0x8c, 0x95, 0x03, 0x1a,
485            0x33, 0x08, 0x1a, 0x50, 0x70, 0x2b, 0x6e, 0x74, 0xc5, 0xf3, 0x5f, 0xdf, 0x19, 0xaf,
486            0xe6, 0xdf, 0x19, 0x72, 0xf7, 0xdf, 0x19, 0x20, 0xdf, 0x19, 0x6f, 0x3a, 0x75, 0xdf,
487            0x19, 0x20, 0x91, 0x74, 0xdf, 0x19, 0xd5, 0x19, 0x0e, 0xb8, 0x00, 0x63, 0x68, 0x61,
488            0x72, 0x67, 0x65, 0x2c, 0x20, 0x00, 0x72, 0x6f, 0x79, 0x61, 0x6c, 0x74, 0x79, 0x2d,
489            0x08, 0x66, 0x72, 0x65, 0x00, 0x68, 0x69, 0x72, 0x72, 0x65, 0x00, 0x76, 0x6f, 0x63,
490            0x61, 0x62, 0x6c, 0x65, 0x0a, 0x02, 0x20, 0x02, 0x00, 0x28, 0x65, 0x78, 0x63, 0x65,
491            0x70, 0x00, 0x74, 0x20, 0x61, 0x73, 0x20, 0x73, 0x74, 0x61, 0x00, 0x74, 0x65, 0x64,
492            0x20, 0x69, 0x6e, 0x20, 0x74, 0x04, 0x68, 0x69, 0x00, 0x38, 0x65, 0x63, 0x74, 0x69,
493            0x6f, 0x10, 0x6e, 0x29, 0x20, 0x70, 0x00, 0x2c, 0x6e, 0x74, 0x20, 0x00, 0x6c, 0x69,
494            0x63, 0x65, 0x6e, 0x73, 0x65, 0x20, 0x40, 0x74, 0x6f, 0x20, 0x6d, 0x61, 0x6b, 0x00,
495            0x98, 0x68, 0x88, 0x61, 0x76, 0x65, 0x00, 0x14, 0x64, 0x65, 0x2c, 0x04, 0x96, 0x04,
496            0x75, 0x73, 0x00, 0x2a, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x81, 0x01, 0x48, 0x73, 0x65,
497            0x6c, 0x6c, 0x2c, 0x20, 0x03, 0x05, 0x00, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x2c,
498            0x20, 0x00, 0x61, 0x6e, 0x64, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x08, 0x72, 0x77, 0x69,
499            0x01, 0x49, 0x72, 0x61, 0x6e, 0x73, 0x01, 0x02, 0x2d, 0x68, 0x65, 0x20, 0x57, 0x6f,
500            0x72, 0x6b, 0x05, 0x05, 0x48, 0x77, 0x00, 0x21, 0x65, 0x20, 0x73, 0x75, 0x63, 0x02,
501            0x68, 0x06, 0x75, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x40, 0x73, 0x20, 0x6f, 0x6e,
502            0x6c, 0x79, 0x01, 0x5d, 0x74, 0x0c, 0x68, 0x6f, 0x00, 0x41, 0x04, 0x9a, 0x63, 0x6c,
503            0x61, 0x69, 0x4c, 0x6d, 0x73, 0x04, 0x2b, 0x08, 0xdc, 0x62, 0x79, 0x03, 0x22, 0x43,
504            0x00, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x12, 0x6f, 0x80, 0x4c, 0x68,
505            0x61, 0x80, 0x76, 0x72, 0x65, 0x20, 0x00, 0x6e, 0x65, 0x63, 0x65, 0x73, 0x73, 0x61,
506            0x72, 0x02, 0x69, 0x00, 0x28, 0x69, 0x6e, 0x66, 0x72, 0x69, 0x6e, 0xce, 0x67, 0x80,
507            0x7e, 0x00, 0x19, 0x80, 0x4f, 0x69, 0x72, 0x04, 0x69, 0x86, 0x1c, 0x01, 0x80, 0x84,
508            0x28, 0x73, 0x29, 0x20, 0x61, 0x6c, 0x6f, 0x18, 0x6e, 0x65, 0x20, 0x00, 0x23, 0x80,
509            0x13, 0x63, 0x6f, 0x6d, 0x10, 0x62, 0x69, 0x6e, 0x61, 0x01, 0x92, 0x20, 0x6f, 0x66,
510            0x61, 0x00, 0x9a, 0x65, 0x69, 0x72, 0x20, 0x0c, 0x18, 0x04, 0x23, 0x77, 0x38, 0x69,
511            0x74, 0x68, 0x01, 0x10, 0x82, 0x72, 0x01, 0x5f, 0x77, 0x68, 0x2e, 0x69, 0x00, 0x6e,
512            0x82, 0x70, 0x0d, 0x31, 0x77, 0x01, 0xc5, 0x75, 0x62, 0x08, 0x6d, 0x69, 0x74, 0x80,
513            0xc6, 0x2e, 0x20, 0x49, 0x66, 0x10, 0x20, 0x59, 0x6f, 0x75, 0x84, 0x23, 0x69, 0x6e,
514            0x73, 0x40, 0x74, 0x69, 0x74, 0x75, 0x74, 0x65, 0x07, 0xca, 0x74, 0xc4, 0x69, 0x67,
515            0x03, 0x41, 0x61, 0x67, 0x61, 0x01, 0x0f, 0x80, 0xb1, 0x10, 0x79, 0x20, 0x65, 0x6e,
516            0x00, 0x13, 0x79, 0x20, 0x28, 0x40, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x40, 0x36,
517            0x20, 0x02, 0x61, 0x44, 0x10, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x2d, 0x03, 0x02, 0x4c,
518            0x81, 0x31, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x06, 0x72, 0xc3, 0x03, 0x40, 0x7e,
519            0x61, 0x20, 0x6c, 0x61, 0x77, 0x10, 0x73, 0x75, 0x69, 0x74, 0x81, 0x3a, 0x6c, 0x65,
520            0x67, 0x7d, 0x81, 0x0e, 0x74, 0x41, 0x4c, 0x00, 0x45, 0x02, 0x2f, 0x84, 0x11, 0x40,
521            0x40, 0x61, 0xe3, 0xca, 0x3a, 0x80, 0x8d, 0x63, 0x6f, 0x72, 0x40, 0x79, 0xc2, 0x90,
522            0xc1, 0x3b, 0x23, 0xc2, 0x91, 0xc3, 0x75, 0x20, 0x63, 0x6f, 0x05, 0x2e, 0x73, 0x20,
523            0x78, 0x64, 0x69, 0x72, 0x40, 0x96, 0xc7, 0x11, 0xc0, 0x06, 0x05, 0x67, 0x79, 0xab,
524            0x85, 0x35, 0xc5, 0x63, 0x6d, 0x00, 0x32, 0x2c, 0x01, 0x4e, 0x6e, 0x82, 0x35, 0xf5,
525            0x4b, 0xa2, 0x73, 0xc4, 0x10, 0x67, 0x80, 0x91, 0x01, 0xae, 0x00, 0xa6, 0x40, 0x4a,
526            0xb0, 0x20, 0x75, 0x6e, 0x64, 0x01, 0xa0, 0x81, 0xb0, 0x4c, 0x84, 0xac, 0x0e, 0x66,
527            0x80, 0x2b, 0x42, 0x31, 0x01, 0x99, 0x20, 0x73, 0x68, 0x61, 0xe8, 0x6c, 0x6c, 0x20,
528            0x40, 0x3d, 0x6d, 0x41, 0x6f, 0x05, 0xc2, 0x40, 0x5d, 0x79, 0x03, 0x71, 0x20, 0x64,
529            0x80, 0x30, 0x05, 0x9f, 0x46, 0x57, 0x00, 0xc4, 0x66, 0x40, 0x69, 0x6c, 0x65, 0x64,
530            0x2e, 0x0a, 0x41, 0x1d, 0x34, 0x80, 0x2e, 0x20, 0x52, 0x65, 0x64, 0x69, 0x73, 0x03,
531            0x2e, 0x0d, 0xc0, 0x86, 0x2e, 0x01, 0x69, 0x00, 0xc3, 0x79, 0x20, 0x72, 0x65, 0x80,
532            0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x40, 0x2c, 0xd6, 0x64, 0x00, 0x3b, 0xc4,
533            0x08, 0x65, 0xc0, 0x40, 0x70, 0x02, 0xb0, 0x42, 0x8a, 0x07, 0x84, 0x2e, 0xc2, 0x23,
534            0x00, 0x27, 0x44, 0x65, 0x72, 0x69, 0x76, 0x97, 0x80, 0x71, 0x00, 0xd4, 0x81, 0x04,
535            0x73, 0x81, 0x3c, 0x72, 0x65, 0xc0, 0x23, 0x21, 0x81, 0x64, 0x6e, 0x79, 0x20, 0x6d,
536            0x00, 0x1b, 0x75, 0x6d, 0x1c, 0x2c, 0x20, 0xc2, 0x91, 0xc0, 0x0b, 0xc1, 0x01, 0x6f,
537            0x75, 0x74, 0x01, 0x44, 0x11, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x63, 0x0d, 0x82,
538            0x81, 0x73, 0x03, 0xd9, 0xc0, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0xa3, 0xa0, 0x10, 0xa0,
539            0x05, 0x4f, 0x62, 0x6a, 0x20, 0x2e, 0x20, 0xa0, 0x20, 0xe3, 0x40, 0x08, 0xa0, 0x13,
540            0x76, 0x69, 0x64, 0x20, 0x5d, 0x02, 0x22, 0x47, 0x4b, 0x30, 0x6d, 0x65, 0x65, 0x74,
541            0xc1, 0x0e, 0xc0, 0x04, 0x6c, 0x6c, 0x4c, 0x6f, 0x77, 0x01, 0x3f, 0x20, 0x33, 0x64,
542            0x69, 0xc1, 0x5b, 0x73, 0x46, 0x3a, 0xa2, 0x1e, 0x00, 0x86, 0x28, 0x61, 0x29, 0x23,
543            0x1d, 0x75, 0xa0, 0x73, 0x74, 0x20, 0x67, 0x69, 0xe0, 0x15, 0x61, 0xc0, 0x13, 0x93,
544            0x42, 0x7a, 0x20, 0x1f, 0x63, 0x69, 0x40, 0x1c, 0x6e, 0x74, 0xa0, 0x74, 0xbb, 0x82,
545            0x1c, 0xa3, 0x5d, 0x6f, 0x65, 0x69, 0xe1, 0x8d, 0x0e, 0x1d, 0x61, 0xe1, 0x22, 0x6e,
546            0x79, 0xe3, 0x67, 0x60, 0x2c, 0x24, 0x36, 0x3b, 0x81, 0x27, 0x66, 0x0e, 0x62, 0xf9,
547            0x68, 0x0e, 0x63, 0x61, 0xa0, 0x8c, 0xa0, 0x03, 0x60, 0x22, 0xa2, 0x1e, 0x00, 0x19,
548            0x03, 0xe1, 0x32, 0x20, 0x26, 0x6f, 0x20, 0x63, 0x61, 0x72, 0x72, 0x19, 0x40, 0x48,
549            0x72, 0x6f, 0x00, 0x3b, 0x00, 0x47, 0x20, 0x6e, 0x6f, 0xfe, 0x74, 0x00, 0x40, 0xc5,
550            0x44, 0xc1, 0x0f, 0x41, 0x9c, 0x46, 0x5a, 0x81, 0x45, 0xc0, 0xa4, 0x2f, 0xc2, 0x7e,
551            0xc1, 0x5b, 0xe2, 0x08, 0x2b, 0x0f, 0x63, 0x28, 0x0f, 0x72, 0x65, 0xca, 0x74, 0x00,
552            0x6c, 0x2c, 0xe3, 0xa3, 0x65, 0x20, 0xc4, 0x2b, 0x81, 0x2a, 0xff, 0xa1, 0x17, 0xc1,
553            0x20, 0x8d, 0x1b, 0xc4, 0x33, 0x01, 0x0f, 0x85, 0x2d, 0x08, 0x42, 0x00, 0x35, 0x01,
554            0xc0, 0x50, 0x63, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x0e, 0x68, 0x80, 0xa3, 0xa3,
555            0x5b, 0xc0, 0x5d, 0x72, 0x61, 0x64, 0x65, 0x3c, 0x6d, 0x61, 0xc0, 0xa1, 0xa2, 0x20,
556            0xc1, 0x07, 0x63, 0x00, 0x61, 0x74, 0xf3, 0xe6, 0x4d, 0x65, 0x1b, 0x20, 0x66, 0xa0,
557            0x1d, 0xc2, 0x36, 0xec, 0x11, 0xe5, 0x75, 0xff, 0x45, 0xaa, 0x21, 0x08, 0x40, 0xbd,
558            0xa4, 0x81, 0xa3, 0xa7, 0xe4, 0x23, 0xc0, 0x07, 0x40, 0xa2, 0x84, 0x64, 0x6f, 0x61,
559            0x0a, 0x20, 0x70, 0x65, 0x72, 0xc1, 0x1c, 0xc3, 0x61, 0x94, 0x41, 0x1a, 0x70, 0x61,
560            0x72, 0x74, 0xc0, 0x1b, 0x2a, 0x19, 0xcc, 0x65, 0x20, 0x0d, 0x1d, 0x8b, 0x26, 0x64,
561            0x29, 0x81, 0x96, 0x05, 0x10, 0x07, 0x01, 0x83, 0xa0, 0x0e, 0x40, 0xb7, 0x61, 0x20,
562            0x22, 0x4e, 0x4f, 0x20, 0x54, 0x49, 0x43, 0x45, 0x22, 0x80, 0x6f, 0x78, 0x74, 0x8e,
563            0x20, 0xe1, 0x2d, 0xe1, 0xce, 0x64, 0x0c, 0x20, 0x69, 0x74, 0x49, 0x35, 0xff, 0xa9,
564            0x6b, 0x48, 0x80, 0x4d, 0x0f, 0x83, 0x17, 0x41, 0x39, 0x06, 0x06, 0x80, 0xd2, 0xa0,
565            0x53, 0xcf, 0x48, 0x16, 0xa3, 0xa0, 0x00, 0x72, 0x40, 0x54, 0x61, 0x64, 0xe1, 0xc3,
566            0x88, 0x4e, 0xcf, 0xc0, 0x02, 0xd0, 0x2a, 0x81, 0x92, 0xa0, 0x3d, 0x65, 0x64, 0xc8,
567            0x08, 0x81, 0x6e, 0x0f, 0xe0, 0x6a, 0x82, 0xb6, 0x03, 0x19, 0x42, 0x18, 0x2c, 0x20,
568            0x65, 0x78, 0xff, 0xa5, 0xac, 0xf6, 0x2a, 0xc8, 0x08, 0x33, 0x2c, 0xe0, 0x18, 0xef,
569            0x2a, 0x82, 0x4d, 0x60, 0x33, 0x78, 0x6c, 0x65, 0x61, 0xc0, 0x6d, 0x20, 0xcf, 0xc8,
570            0x08, 0x84, 0x95, 0x66, 0xa2, 0x6f, 0xa5, 0x75, 0x70, 0x6c, 0x61, 0x00, 0xda, 0x3a,
571            0x62, 0x84, 0xc9, 0xc0, 0x14, 0x61, 0x20, 0x34, 0x0a, 0x74, 0x65, 0xb5, 0x16, 0x17,
572            0x12, 0xff, 0x69, 0x0d, 0x80, 0x4f, 0x15, 0x18, 0x31, 0x1b, 0xbf, 0x1d, 0x74, 0x0f,
573            0xc1, 0x01, 0x4a, 0x26, 0xe1, 0x79, 0x3d, 0x64, 0x6f, 0x63, 0x75, 0xc1, 0x5a, 0x32,
574            0x48, 0x60, 0x0b, 0x6c, 0x66, 0x20, 0x76, 0x46, 0x21, 0x73, 0x67, 0x93, 0x4b, 0xff,
575            0x05, 0x6b, 0xdc, 0x73, 0x3b, 0x60, 0x68, 0x49, 0x2a, 0xd4, 0x06, 0x61, 0x91, 0x32,
576            0x20, 0x0d, 0x80, 0x79, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x52, 0x65, 0xbf, 0xb3,
577            0x79, 0xde, 0x27, 0xe2, 0x06, 0x90, 0x85, 0xc8, 0x11, 0x02, 0x84, 0x76, 0x60, 0x60,
578            0xa3, 0xc2, 0x1a, 0xe0, 0x8c, 0x72, 0x64, 0x2d, 0x41, 0x0e, 0x79, 0x76, 0x33, 0x90,
579            0x6e, 0x6f, 0x72, 0x6d, 0x60, 0x60, 0x79, 0x20, 0x80, 0x85, 0xc0, 0x65, 0x61, 0x72,
580            0x2e, 0x20, 0x54, 0x30, 0x88, 0x51, 0x1f, 0xcf, 0x80, 0x43, 0x69, 0x28, 0x64, 0x16,
581            0xf8, 0x1e, 0x20, 0x61, 0xc0, 0x83, 0x60, 0x3f, 0x07, 0x80, 0x2d, 0xc1, 0x3f, 0x12,
582            0x0f, 0x61, 0x6c, 0x20, 0x70, 0x75, 0xfd, 0xd0, 0x6f, 0x73, 0x15, 0x8a, 0xeb, 0x08,
583            0xb4, 0x35, 0x72, 0x5a, 0xd0, 0x8b, 0x90, 0x06, 0x23, 0x74, 0x4e, 0x67, 0x63, 0x61,
584            0x64, 0x64, 0x81, 0x55, 0x72, 0x20, 0xfc, 0x6f, 0x77, 0xb0, 0x6e, 0x17, 0x29, 0x48,
585            0x0d, 0xe5, 0x3a, 0x14, 0x12, 0x9f, 0x30, 0x87, 0x71, 0x7a, 0x9b, 0x30, 0x31, 0x46,
586            0x6f, 0x6e, 0x67, 0x73, 0x00, 0x5f, 0x17, 0x88, 0x04, 0x20, 0x61, 0x40, 0x1f, 0x61,
587            0x70, 0x06, 0x64, 0x64, 0x65, 0xf0, 0x6e, 0x64, 0x75, 0x6d, 0xd1, 0x3e, 0xb1, 0x19,
588            0x1a, 0x23, 0x85, 0x45, 0xfd, 0x01, 0x69, 0x2c, 0xe6, 0x1c, 0x68, 0x04, 0x32, 0x4d,
589            0x02, 0x16, 0xc0, 0x0b, 0x72, 0x62, 0x2b, 0x60, 0x10, 0x3f, 0x4a, 0x73, 0x70, 0x59,
590            0x6e, 0xb0, 0x0b, 0x20, 0x62, 0xf3, 0x31, 0x70, 0x70, 0x80, 0x72, 0x75, 0x6a, 0x35,
591            0xa0, 0x08, 0x83, 0x11, 0x83, 0x59, 0x9c, 0x65, 0x20, 0xb5, 0x11, 0xf5, 0x5f, 0x21,
592            0x0d, 0x6d, 0x61, 0x90, 0x1a, 0x3f, 0x29, 0x12, 0x76, 0x53, 0x63, 0xab, 0xb1, 0x27,
593            0x51, 0x0c, 0xb0, 0x02, 0x72, 0x20, 0xdf, 0xe2, 0x04, 0xf5, 0x70, 0x38, 0x54, 0x41,
594            0x04, 0x64, 0x29, 0x20, 0x28, 0x0b, 0xe0, 0x10, 0xcf, 0xf0, 0x73, 0x70, 0xa8, 0x31,
595            0x63, 0x56, 0xae, 0x65, 0x72, 0x10, 0xa5, 0x60, 0x1c, 0xfd, 0xa0, 0x42, 0x6e, 0x54,
596            0x70, 0xb4, 0x0f, 0xb1, 0x1f, 0xa2, 0xae, 0xa5, 0x7e, 0x21, 0x72, 0xfe, 0x2c, 0xd1,
597            0x94, 0x06, 0x36, 0x10, 0x81, 0x41, 0x61, 0xdf, 0x08, 0x61, 0x02, 0x68, 0x04, 0x0f,
598            0x21, 0x56, 0x12, 0x14, 0xce, 0x1c, 0x01, 0x1a, 0x20, 0x77, 0x68, 0x6f, 0xfc, 0x6c,
599            0x65, 0xb7, 0x17, 0x03, 0x22, 0xa1, 0x07, 0x24, 0x04, 0x0b, 0x08, 0xc1, 0x0a, 0xff,
600            0x1d, 0x08, 0x51, 0x1d, 0x01, 0x1c, 0x58, 0xb7, 0x60, 0xab, 0xa3, 0xb4, 0x71, 0x24,
601            0x84, 0x04, 0x1f, 0x61, 0x02, 0xc0, 0x2f, 0x74, 0x0e, 0x9d, 0xc0, 0x0a, 0x19, 0x35,
602            0x2e, 0x20, 0x32, 0x53, 0xd1, 0xa9, 0x73, 0x73, 0x44, 0x0e, 0xf9, 0xab, 0x73, 0x2e,
603            0xf0, 0x20, 0x55, 0x6e, 0x6c, 0x60, 0xb5, 0xa1, 0x0a, 0x70, 0x51, 0x80, 0x06, 0xf8,
604            0x63, 0x69, 0x74, 0x00, 0xb6, 0xb2, 0xc5, 0x47, 0x08, 0x05, 0x3f, 0xf1, 0x0f, 0xbb,
605            0xf9, 0x03, 0x30, 0x35, 0x74, 0x50, 0x18, 0x90, 0x05, 0xb2, 0x39, 0x73, 0x65, 0xb0,
606            0xff, 0xb1, 0x8b, 0xb0, 0x01, 0x60, 0x56, 0x52, 0x07, 0xe0, 0x4d, 0x85, 0x0d, 0x04,
607            0x0c, 0xa0, 0x41, 0xff, 0xc0, 0x16, 0x75, 0x2c, 0x03, 0x0b, 0x70, 0x1d, 0xa3, 0x9e,
608            0x80, 0x27, 0x45, 0xa1, 0xe0, 0xcb, 0xff, 0x8f, 0x1d, 0xf1, 0x8a, 0x86, 0x10, 0x47,
609            0x88, 0xe3, 0x96, 0x60, 0x96, 0x20, 0x24, 0xd2, 0x27, 0x57, 0x35, 0x2e, 0xa1, 0xa3,
610            0x30, 0x03, 0x72, 0xa8, 0x21, 0x2e, 0xf4, 0x03, 0x4e, 0x9c, 0x6f, 0x74, 0x61, 0x15,
611            0xe0, 0x0e, 0x40, 0x23, 0x6e, 0x67, 0x52, 0x5d, 0xb0, 0x61, 0x62, 0x6f, 0x76, 0x50,
612            0x1c, 0x20, 0x30, 0x68, 0x21, 0x2e, 0x27, 0xb1, 0xcd, 0x00, 0x0c, 0xa3, 0x09, 0x73,
613            0x75, 0xe0, 0x60, 0x73, 0x65, 0x7e, 0x64, 0x32, 0xc5, 0x63, 0x30, 0x96, 0x08, 0xb5,
614            0x0a, 0x20, 0x48, 0x72, 0x22, 0x65, 0x67, 0x10, 0x4c, 0xa1, 0xa9, 0x25, 0x2a, 0x61,
615            0x67, 0x30, 0xdd, 0x82, 0x2f, 0x79, 0x0c, 0x6f, 0x75, 0xb2, 0xa7, 0x12, 0xd9, 0x65,
616            0x78, 0x65, 0x63, 0x1f, 0x10, 0xc2, 0x25, 0x5e, 0xe1, 0x08, 0x24, 0x35, 0x00, 0x11,
617            0x72, 0x65, 0x67, 0xbc, 0x61, 0x72, 0x02, 0xc1, 0x62, 0x27, 0xbb, 0x1b, 0x02, 0x37,
618            0x36, 0xa0, 0x50, 0xcb, 0x05, 0x88, 0xe0, 0x1c, 0x54, 0x79, 0xb4, 0x64, 0x6f, 0xf0,
619            0x4d, 0xa1, 0x3c, 0xe6, 0x67, 0x21, 0xb7, 0xb1, 0x82, 0x6d, 0x69, 0x73, 0x20, 0xb0,
620            0xb7, 0x70, 0x29, 0x0d, 0xe2, 0x0e, 0x74, 0xd1, 0x03, 0x44, 0x0c, 0x6e, 0x61, 0x6d,
621            0x65, 0x0f, 0x10, 0xa9, 0x22, 0x01, 0x11, 0x8d, 0xb0, 0x00, 0x73, 0x65, 0x72, 0x76,
622            0xf3, 0x50, 0x99, 0xf0, 0x0a, 0x72, 0x6b, 0xe0, 0x00, 0x30, 0x09, 0x20, 0x39, 0xf0,
623            0xb2, 0x7c, 0x74, 0x20, 0xc2, 0x02, 0x61, 0x33, 0xb1, 0x1d, 0x25, 0x1c, 0x95, 0x22,
624            0x65, 0xa1, 0x66, 0xea, 0x72, 0x65, 0x71, 0x75, 0x20, 0xc4, 0x64, 0x32, 0x21, 0x72,
625            0x72, 0x90, 0x71, 0x6f, 0x6e, 0x22, 0x7d, 0xb2, 0x3a, 0x80, 0x7f, 0x6f, 0x19, 0x80,
626            0x06, 0x79, 0x20, 0xd1, 0x08, 0x50, 0x16, 0x64, 0x65, 0x73, 0xee, 0x63, 0x90, 0xdf,
627            0xa4, 0x45, 0x54, 0x09, 0x6f, 0x00, 0x97, 0xb0, 0x01, 0xa4, 0x5d, 0xff, 0xe2, 0x31,
628            0xc1, 0x03, 0xd5, 0x34, 0xc4, 0x02, 0xd1, 0x1d, 0xc1, 0x28, 0x15, 0x09, 0x28, 0x60,
629            0x01, 0x43, 0xc0, 0x37, 0x2e, 0x20, 0x44, 0x69, 0x73, 0x63, 0x17, 0xb1, 0xe7, 0x90,
630            0x66, 0xd0, 0x04, 0x57, 0xf0, 0xa7, 0x61, 0x6e, 0x74, 0xfe, 0x79, 0x46, 0x30, 0xa6,
631            0x0a, 0xe0, 0x29, 0x02, 0xec, 0x92, 0xf7, 0x21, 0xd6, 0xd0, 0x42, 0x9b, 0xc4, 0x08,
632            0x52, 0x1c, 0x64, 0x91, 0x2b, 0x20, 0x09, 0x77, 0x72, 0x30, 0x26, 0x78, 0x6e, 0x67,
633            0x2c, 0x07, 0x1b, 0xf4, 0x4a, 0x12, 0xc1, 0xf3, 0xb4, 0x28, 0xe1, 0xb1, 0x0a, 0x65,
634            0x61, 0x63, 0x68, 0x04, 0x04, 0x36, 0x1c, 0xa3, 0x14, 0x01, 0xc1, 0xbd, 0x73, 0x20,
635            0x69, 0x1f, 0xb8, 0x00, 0x74, 0x73, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x00, 0x69,
636            0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x00, 0x29, 0x20, 0x6f, 0x6e, 0x20, 0x61,
637            0x6e, 0x20, 0x00, 0x22, 0x41, 0x53, 0x20, 0x49, 0x53, 0x22, 0x20, 0x00, 0x42, 0x41,
638            0x53, 0x49, 0x53, 0x2c, 0x0a, 0x20, 0x01, 0x02, 0x00, 0x57, 0x49, 0x54, 0x48, 0x4f,
639            0x55, 0x54, 0x00, 0x20, 0x57, 0x41, 0x52, 0x52, 0x41, 0x4e, 0x54, 0x00, 0x49, 0x45,
640            0x53, 0x20, 0x4f, 0x52, 0x20, 0x43, 0x00, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f,
641            0x4e, 0x01, 0x00, 0x1a, 0x46, 0x20, 0x41, 0x4e, 0x59, 0x20, 0x4b, 0x00, 0x49, 0x4e,
642            0x44, 0x2c, 0x20, 0x65, 0x69, 0x74, 0x00, 0x68, 0x65, 0x72, 0x20, 0x65, 0x78, 0x70,
643            0x72, 0x40, 0x65, 0x73, 0x73, 0x20, 0x6f, 0x72, 0x04, 0x8a, 0x69, 0x00, 0x6d, 0x70,
644            0x6c, 0x69, 0x65, 0x64, 0x2c, 0x20, 0x00, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69,
645            0x6e, 0x10, 0x67, 0x2c, 0x20, 0x77, 0x00, 0x2b, 0x6f, 0x75, 0x74, 0x80, 0x20, 0x6c,
646            0x69, 0x6d, 0x69, 0x74, 0x61, 0x01, 0x89, 0x02, 0x2c, 0x00, 0x85, 0x79, 0x20, 0x77,
647            0x61, 0x72, 0x72, 0x20, 0x61, 0x6e, 0x74, 0x69, 0x65, 0x01, 0x3f, 0x20, 0x63, 0x30,
648            0x6f, 0x6e, 0x64, 0x69, 0x02, 0xa6, 0x04, 0x4a, 0x6f, 0x66, 0x00, 0x20, 0x54, 0x49,
649            0x54, 0x4c, 0x45, 0x2c, 0x20, 0x00, 0x4e, 0x4f, 0x4e, 0x2d, 0x49, 0x4e, 0x46, 0x52,
650            0x00, 0x49, 0x4e, 0x47, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x80, 0x2c, 0x20, 0x4d, 0x45,
651            0x52, 0x43, 0x48, 0x00, 0xa5, 0x00, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x2c,
652            0x01, 0x00, 0x80, 0x20, 0x46, 0x49, 0x54, 0x4e, 0x45, 0x53, 0x28, 0x53, 0x20, 0x46,
653            0x00, 0xb6, 0x41, 0x04, 0x43, 0x50, 0x41, 0x00, 0x52, 0x54, 0x49, 0x43, 0x55, 0x4c,
654            0x41, 0x52, 0x00, 0x20, 0x50, 0x55, 0x52, 0x50, 0x4f, 0x53, 0x45, 0x00, 0x2e, 0x20,
655            0x59, 0x6f, 0x75, 0x20, 0x61, 0x72, 0x00, 0x65, 0x20, 0x73, 0x6f, 0x6c, 0x65, 0x6c,
656            0x79, 0x0a, 0x20, 0x80, 0x5f, 0x70, 0x80, 0x8d, 0x69, 0x62, 0x6c, 0x65, 0x00, 0x20,
657            0x66, 0x6f, 0x72, 0x20, 0x64, 0x65, 0x74, 0xa0, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x00,
658            0x5d, 0x20, 0x80, 0x71, 0x01, 0x04, 0x24, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x70, 0x72,
659            0x20, 0x69, 0x61, 0x74, 0x65, 0x6e, 0x02, 0x78, 0x66, 0x20, 0x0c, 0x75, 0x73, 0x01,
660            0x11, 0x80, 0x18, 0x72, 0x65, 0x64, 0x69, 0x12, 0x73, 0x84, 0xb2, 0x6e, 0x67, 0x01,
661            0x1a, 0x20, 0x57, 0x6f, 0x04, 0x72, 0x6b, 0x80, 0x71, 0x64, 0x20, 0x61, 0x73, 0x73,
662            0x18, 0x75, 0x6d, 0x65, 0x01, 0x77, 0x04, 0x24, 0x72, 0x69, 0x73, 0xa4, 0x6b, 0x73,
663            0x01, 0x0b, 0x6f, 0x63, 0x01, 0x26, 0x64, 0x82, 0x8e, 0x03, 0x81, 0x49, 0x01, 0xa6,
664            0x65, 0x72, 0x63, 0x69, 0x73, 0x65, 0x4a, 0x20, 0x80, 0x7c, 0x70, 0x81, 0x41, 0x73,
665            0x73, 0x81, 0xda, 0x20, 0x08, 0x75, 0x6e, 0x64, 0x00, 0xb5, 0x74, 0x68, 0x69, 0x73,
666            0x00, 0x20, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0xe4, 0x2e, 0x0a, 0x81, 0x26,
667            0x38, 0x2e, 0x80, 0x07, 0x05, 0xa9, 0x01, 0x1a, 0x00, 0x4c, 0x69, 0x61, 0x62, 0x69,
668            0x6c, 0x69, 0x74, 0x00, 0x79, 0x2e, 0x20, 0x49, 0x6e, 0x20, 0x6e, 0x6f, 0xc0, 0x20,
669            0x65, 0x76, 0x65, 0x6e, 0x74, 0xc2, 0x21, 0xc3, 0x10, 0x41, 0x80, 0x04, 0x6c, 0x65,
670            0x67, 0x61, 0x6c, 0xc1, 0x28, 0x6f, 0x44, 0x72, 0x79, 0x85, 0x7e, 0x77, 0x68, 0x65,
671            0x40, 0x3a, 0x72, 0x01, 0xc0, 0x6c, 0x20, 0x74, 0x6f, 0x72, 0x74, 0x20, 0x28, 0x01,
672            0x06, 0x6f, 0x20, 0x6e, 0x65, 0x67, 0x6c, 0x69, 0x67, 0x40, 0x65, 0x6e, 0x63, 0x65,
673            0x29, 0x2c, 0x81, 0x68, 0x74, 0x50, 0x72, 0x61, 0x63, 0x74, 0x82, 0x5b, 0x6f, 0x81,
674            0x0c, 0x77, 0x23, 0x80, 0x2b, 0x45, 0x11, 0x75, 0x6e, 0x6c, 0x41, 0x46, 0x72, 0x65,
675            0x08, 0x71, 0x75, 0x69, 0x80, 0x44, 0x20, 0x62, 0x79, 0x20, 0x21, 0x40, 0x4d, 0x6c,
676            0x69, 0x63, 0x61, 0x81, 0x56, 0x6c, 0x61, 0x80, 0x77, 0x20, 0x28, 0x73, 0x75, 0x63,
677            0x68, 0xc0, 0x3e, 0xc1, 0xc0, 0x58, 0x6c, 0x69, 0x62, 0x65, 0x72, 0x00, 0x53, 0x02,
678            0x27, 0x80, 0x67, 0x72, 0x6f, 0x73, 0x73, 0x6c, 0x79, 0x44, 0x48, 0x13, 0x85, 0x1c,
679            0x00, 0x2e, 0x63, 0x74, 0xc1, 0xac, 0x72, 0x20, 0x61, 0x60, 0x67, 0x72, 0x65, 0x65,
680            0x64, 0x00, 0x27, 0x81, 0x28, 0x77, 0x08, 0x72, 0x69, 0x74, 0x40, 0x5e, 0x2c, 0x20,
681            0x73, 0x68, 0x68, 0x61, 0x6c, 0x6c, 0x00, 0x10, 0x79, 0x47, 0xb9, 0x40, 0x63, 0x62,
682            0x9a, 0x65, 0xc4, 0x11, 0x6c, 0x40, 0x43, 0xc0, 0x74, 0x74, 0x6f, 0x42, 0x7c, 0x81,
683            0x82, 0x76, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x08, 0xa7, 0x2d, 0x42, 0x0f, 0x64,
684            0x80, 0x2b, 0x01, 0x35, 0x69, 0x00, 0xa0, 0x72, 0x65, 0xd1, 0x41, 0x02, 0x73, 0x70,
685            0x65, 0x40, 0x67, 0x6c, 0x45, 0x36, 0x80, 0x43, 0x64, 0x69, 0x64, 0x40, 0x52, 0x61,
686            0x6c, 0x42, 0x3e, 0x40, 0xaa, 0x73, 0x6b, 0x00, 0x39, 0x00, 0x04, 0x69, 0x80, 0x52,
687            0x64, 0x03, 0x15, 0xc1, 0x5f, 0x61, 0xc0, 0x6e, 0x79, 0x20, 0x63, 0x68, 0x61, 0x81,
688            0x48, 0x00, 0x6c, 0x76, 0x61, 0x80, 0x7a, 0x41, 0x88, 0x61, 0x80, 0x7b, 0x84, 0x24,
689            0xc0, 0x9a, 0x75, 0xfc, 0x6c, 0x74, 0x81, 0x0a, 0x49, 0x73, 0x01, 0xaf, 0xc1, 0xc7,
690            0x80, 0x7d, 0xc0, 0x54, 0xdf, 0xc0, 0x95, 0x40, 0x80, 0x01, 0x63, 0x04, 0x73, 0x81,
691            0x3d, 0x75, 0x40, 0x85, 0xc0, 0x06, 0xff, 0x84, 0x11, 0x42, 0x97, 0x08, 0x69, 0x80,
692            0xf7, 0x40, 0x7b, 0x04, 0xd8, 0xc3, 0x49, 0x45, 0x25, 0x0d, 0xc1, 0x1e, 0x6c, 0xa0,
693            0x2b, 0x61, 0x0e, 0x67, 0x6f, 0x6f, 0x64, 0x28, 0x77, 0x69, 0x6c, 0xc6, 0x1a, 0x77,
694            0x81, 0x54, 0x73, 0x74, 0x18, 0x6f, 0x70, 0x70, 0xa0, 0x22, 0xa1, 0x3b, 0x6d, 0x70,
695            0x75, 0x81, 0x60, 0x5f, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x00, 0x64, 0x01, 0x80,
696            0x29, 0x6d, 0x61, 0x6c, 0x66, 0x75, 0x6e, 0x63, 0x27, 0x63, 0x76, 0xe0, 0x01, 0x21,
697            0x1c, 0x61, 0x6e, 0xc0, 0x5a, 0x6c, 0x6c, 0x67, 0x64, 0x11, 0xc2, 0x40, 0x20, 0x43,
698            0x6d, 0x6d, 0x81, 0x57, 0xe9, 0x21, 0x72, 0x32, 0x20, 0x01, 0x0f, 0x65, 0x73, 0x00,
699            0x47, 0xe1, 0x50, 0x20, 0x69, 0x5c, 0x66, 0x20, 0xe2, 0x3f, 0x46, 0x92, 0x86, 0x86,
700            0x68, 0x40, 0x24, 0x62, 0xa4, 0x65, 0x65, 0x60, 0x93, 0x64, 0x76, 0x00, 0x4a, 0x64,
701            0x81, 0x15, 0xf5, 0x21, 0x21, 0x70, 0x00, 0x17, 0x69, 0x23, 0x5a, 0x41, 0x02, 0xa2,
702            0x07, 0x04, 0x1b, 0x01, 0x23, 0x60, 0x39, 0x2e, 0x20, 0x41, 0x63, 0x63, 0x65, 0x52,
703            0x70, 0xe1, 0x41, 0x20, 0x57, 0xc3, 0x89, 0x79, 0xc1, 0x29, 0x41, 0x8e, 0x64, 0x63,
704            0x89, 0xe0, 0x11, 0x88, 0x62, 0x57, 0x68, 0x69, 0x00, 0x42, 0x1f, 0xcb, 0x75, 0xc4,
705            0x18, 0xc1, 0x0d, 0xc2, 0x2a, 0x80, 0x1c, 0x44, 0x65, 0x72, 0xa4, 0x69, 0x76, 0xe0,
706            0x94, 0x76, 0x65, 0xe2, 0x78, 0x73, 0xa1, 0x65, 0x20, 0x72, 0x65, 0x6f, 0x66, 0x2c,
707            0x02, 0x49, 0x6d, 0x61, 0x29, 0x81, 0x3c, 0x6f, 0x6f, 0x21, 0x32, 0x6f, 0xc0, 0x12,
708            0x66, 0x65, 0x2e, 0x72, 0xe5, 0x44, 0x21, 0x23, 0xe1, 0x3f, 0x67, 0x00, 0x7e, 0x20,
709            0x66, 0x6e, 0x65, 0xe2, 0x89, 0x40, 0x9d, 0x22, 0x14, 0x61, 0x40, 0x68, 0x83, 0x18,
710            0x70, 0x1e, 0x70, 0x60, 0x6c, 0xa0, 0xa2, 0xc4, 0x15, 0xa1, 0x51, 0x64, 0x65, 0x6d,
711            0x7e, 0x6e, 0xc0, 0x76, 0xe5, 0x08, 0x60, 0x10, 0xc3, 0x2a, 0x41, 0x58, 0x02, 0x7a,
712            0x20, 0x1c, 0x6f, 0x62, 0xc0, 0x70, 0x62, 0xa7, 0xa0, 0x49, 0x6e, 0x64, 0x2f, 0xe1,
713            0x40, 0x04, 0x72, 0x69, 0x67, 0x68, 0x20, 0xbc, 0xa1, 0x51, 0xc0, 0x8f, 0x1f, 0xa0,
714            0x51, 0x43, 0x89, 0x21, 0x4b, 0x84, 0x1a, 0xa5, 0x85, 0x20, 0x48, 0x6f, 0xca, 0x77,
715            0x40, 0x30, 0x72, 0x41, 0x0d, 0x20, 0x61, 0x06, 0x26, 0xe2, 0x29, 0x7f, 0x08, 0x0b,
716            0xe7, 0x1b, 0x60, 0x7c, 0x40, 0xc5, 0x26, 0x72, 0xa0, 0xc6, 0x80, 0xa6, 0x72, 0x80,
717            0x20, 0x6f, 0x77, 0x6e, 0x20, 0x62, 0x65, 0xa0, 0x6e, 0xd6, 0x66, 0xe0, 0x66, 0xa0,
718            0x34, 0x6e, 0x01, 0x22, 0x72, 0x02, 0xa9, 0xc7, 0xa8, 0xfd, 0xe2, 0x15, 0x2c, 0xe2,
719            0x51, 0xe0, 0x06, 0xc3, 0x05, 0xe4, 0x11, 0x00, 0x5c, 0x01, 0x48, 0xff, 0x63, 0x1b,
720            0xc8, 0x40, 0xc1, 0xc1, 0xc1, 0x09, 0xa0, 0xb1, 0x80, 0x44, 0xe2, 0xb3, 0x01, 0x7e,
721            0x0b, 0xe3, 0x7d, 0x62, 0x23, 0x66, 0x66, 0x95, 0x64, 0x65, 0x66, 0x65, 0x06, 0x6e,
722            0xe0, 0xcb, 0x61, 0x2d, 0x68, 0x6f, 0x6c, 0x64, 0x20, 0xac, 0x65, 0x61, 0x60, 0x8a,
723            0x88, 0x09, 0x20, 0x00, 0x70, 0x6d, 0x22, 0x91, 0x9f, 0x61, 0x5f, 0xe1, 0x0d, 0xa6,
724            0x28, 0xc4, 0x10, 0xc0, 0x79, 0x75, 0x72, 0x23, 0x94, 0x21, 0xe3, 0x79, 0x6c, 0x61,
725            0x69, 0x6d, 0xc0, 0x2a, 0x73, 0x73, 0x08, 0x65, 0x72, 0x74, 0xc0, 0x67, 0x61, 0x67,
726            0x61, 0x69, 0x3c, 0x6e, 0x73, 0xa0, 0x9c, 0x02, 0x24, 0x49, 0x0b, 0x40, 0x9a, 0x72,
727            0x65, 0x10, 0x61, 0x73, 0x6f, 0x6e, 0x07, 0x1a, 0x79, 0x6f, 0x75, 0xbf, 0xe0, 0x93,
728            0x66, 0x2a, 0xe1, 0x0d, 0xc2, 0x06, 0x84, 0xdb, 0xa2, 0x51, 0x61, 0xa7, 0x51, 0x03,
729            0x66, 0x11, 0x03, 0x58, 0x45, 0x4e, 0x44, 0x20, 0x4f, 0x46, 0x40, 0x20, 0x54, 0x45,
730            0x52, 0x4d, 0x53, 0xa0, 0xeb, 0x44, 0x23, 0xe8, 0xed, 0x42, 0xbc, 0x41, 0x50, 0x50,
731            0x40, 0x04, 0x49, 0x58, 0x2e, 0x3a, 0x41, 0x38, 0xe1, 0x21, 0x21, 0xaa, 0x79, 0x01,
732            0x52, 0x20, 0x41, 0xfa, 0x70, 0x00, 0x1f, 0x65, 0x25, 0xc2, 0x61, 0x03, 0x42, 0x11,
733            0x81, 0x7a, 0x63, 0x0b, 0xf9, 0xa0, 0xfa, 0x54, 0x6f, 0x22, 0x58, 0x0f, 0x03, 0xc3,
734            0x2b, 0x06, 0x03, 0x00, 0x18, 0x0c, 0x74, 0x74, 0x71, 0x14, 0x61, 0x30, 0x66, 0x6f,
735            0x6c, 0x6c, 0x4c, 0x6f, 0x77, 0x90, 0x4b, 0x44, 0x0e, 0x62, 0x6f, 0x50, 0x33, 0x72,
736            0xe0, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x51, 0x1d, 0x10, 0x68, 0x23, 0x7d, 0x01, 0x52,
737            0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x2f, 0x00, 0x62, 0xc0, 0x3e, 0xb0,
738            0x13, 0x10, 0x12, 0x62, 0xf0, 0x4f, 0x6b, 0x65, 0x21, 0x90, 0x29, 0x22, 0x5b, 0x5d,
739            0x22, 0x34, 0x04, 0x72, 0x65, 0xed, 0xf0, 0x03, 0x63, 0xf0, 0x01, 0xb1, 0x80, 0x20,
740            0x72, 0x07, 0xc1, 0x24, 0x52, 0x55, 0x48, 0x69, 0x66, 0x79, 0x61, 0x52, 0x69, 0x6e,
741            0xf0, 0x1a, 0x6d, 0x01, 0x22, 0x2e, 0x2e, 0x20, 0x28, 0x44, 0x6f, 0x6e, 0x27, 0x3e,
742            0x74, 0xd0, 0x5e, 0x41, 0x84, 0x05, 0x5d, 0xc1, 0x09, 0xc5, 0x05, 0x21, 0x29, 0x00,
743            0x20, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x65, 0x24, 0x78, 0x74, 0x80, 0x60, 0x6f,
744            0x75, 0x90, 0x20, 0x62, 0x65, 0x79, 0x77, 0x08, 0x69, 0x6e, 0xe2, 0x09, 0xe0, 0x12,
745            0x65, 0x7b, 0x94, 0x08, 0x63, 0x06, 0x6f, 0x90, 0x4a, 0x40, 0x71, 0x73, 0x79, 0x6e,
746            0x74, 0x61, 0x1e, 0x78, 0x12, 0x7f, 0x42, 0x0f, 0x91, 0x41, 0x03, 0x08, 0x2e, 0x20,
747            0x57, 0x71, 0xf0, 0x3b, 0x6c, 0x73, 0x6f, 0x30, 0x2d, 0xd3, 0x02, 0x90, 0x67, 0x68,
748            0x36, 0x61, 0xe0, 0x68, 0x24, 0x04, 0x66, 0xb1, 0x02, 0x00, 0x38, 0x63, 0x6c, 0x51,
749            0xd0, 0x7d, 0x20, 0x6e, 0x61, 0xf2, 0x7d, 0x64, 0x40, 0x6d, 0x73, 0x38, 0x63, 0x72,
750            0x69, 0xb0, 0x48, 0x60, 0x2f, 0x90, 0x2e, 0x70, 0x75, 0xfa, 0x72, 0xf0, 0x4b, 0x65,
751            0x00, 0x33, 0x65, 0x0c, 0x12, 0x33, 0xc0, 0x06, 0x64, 0x04, 0x6a, 0x73, 0x81, 0x03,
752            0x22, 0x30, 0x85, 0x6e, 0x41, 0x27, 0x31, 0x58, 0x22, 0xc3, 0xb1, 0x71, 0xd1, 0x08,
753            0x63, 0x6f, 0x70, 0x79, 0xe2, 0x3d, 0x04, 0x17, 0x33, 0x62, 0x0a, 0x80, 0x27, 0x69,
754            0x65, 0x76, 0x96, 0xf1, 0x68, 0x69, 0x66, 0x0f, 0xc0, 0x75, 0xb1, 0x59, 0x92, 0x3f,
755            0x22, 0x0f, 0x69, 0x72, 0x64, 0x2d, 0x10, 0x70, 0x61, 0x72, 0x74, 0xb0, 0x77, 0x72,
756            0x63, 0x68, 0x50, 0x69, 0x76, 0x65, 0x73, 0xc3, 0x20, 0x43, 0x16, 0x05, 0x5b, 0xe2,
757            0x79, 0x00, 0x00, 0x5d, 0x20, 0x5b, 0x72, 0x0b, 0x70, 0x0a, 0xb7, 0x06, 0xb1, 0x10,
758            0x19, 0x65, 0x72, 0x5d, 0x72, 0x27, 0x94, 0x43, 0x64, 0xb6, 0x87, 0x82, 0x65, 0xfc,
759            0x26, 0x2c, 0x20, 0x56, 0x65, 0x72, 0xe1, 0x89, 0x40, 0x20, 0x32, 0x2e, 0x30, 0x20,
760            0x28, 0x41, 0x0b, 0x22, 0xb1, 0x44, 0x03, 0x22, 0x29, 0x3b, 0x11, 0x0e, 0x40, 0x1e,
761            0x20, 0xb1, 0x52, 0x38, 0x6e, 0x6f, 0x74, 0x22, 0x6d, 0x12, 0x6f, 0xa2, 0x13, 0x65,
762            0x78, 0xff, 0x21, 0x5b, 0x50, 0x11, 0x61, 0x63, 0xe0, 0xa2, 0xa2, 0x51, 0x82, 0x21,
763            0x61, 0x04, 0x54, 0x04, 0x8e, 0x2e, 0x31, 0x04, 0xa1, 0x40, 0x31, 0x04, 0x6f, 0x62,
764            0x74, 0x20, 0x39, 0xd4, 0x20, 0x61, 0x00, 0x03, 0x70, 0x10, 0x35, 0x66, 0xb2, 0x1d,
765            0x84, 0x02, 0x18, 0x20, 0x61, 0x74, 0x22, 0x0b, 0x41, 0xac, 0x68, 0x74, 0x74, 0x00,
766            0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x82, 0x61, 0xe2, 0x31, 0x2e, 0x6f,
767            0x72, 0x67, 0x2f, 0x20, 0x88, 0x01, 0x41, 0x93, 0x73, 0x2f, 0x4c, 0x49, 0x43, 0x45,
768            0x4e, 0xd8, 0x53, 0x45, 0x2d, 0x20, 0x0b, 0x22, 0x03, 0x55, 0x1f, 0x8b, 0xf1, 0x35,
769            0x0f, 0x18, 0x8b, 0x50, 0x1e, 0xbf, 0x87, 0x31, 0xad, 0x73, 0x6f, 0x66, 0x74, 0xfd,
770            0x20, 0x3e, 0x65, 0x51, 0x0a, 0xd6, 0x9f, 0xf0, 0x2d, 0xb5, 0x9a, 0x87, 0x39, 0x50,
771            0x9b, 0xff, 0x09, 0x02, 0xc0, 0x21, 0x1f, 0xb8, 0xb0, 0x0b, 0xef, 0xb7, 0xef, 0xb7,
772            0xef, 0xb7, 0xe6, 0xb7, 0xf6, 0x20, 0x84, 0xb7, 0x62, 0x13, 0x53, 0xa0, 0x67, 0xa8,
773            0x14, 0x46, 0x2e, 0x62, 0x8d, 0x81, 0x30, 0x23, 0x20, 0x6c, 0x61, 0x6e, 0x67, 0x75,
774            0x40, 0x7f, 0xc0, 0x20, 0x67, 0x6f, 0x76, 0x65, 0x72, 0xa2, 0xae, 0x09, 0xa7, 0xb7,
775            0xb0, 0x55, 0x71, 0x0d, 0xf7, 0xba, 0x73, 0x78, 0x20, 0xf6, 0x19, 0x00, 0x0f, 0x00,
776            0xff, 0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x1f,
777            0x01, 0x1f, 0x01, 0xff, 0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x01,
778            0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0xff, 0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x1f,
779            0x01, 0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0xff, 0x1f, 0x01, 0x1f, 0x01,
780            0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0xff, 0x1f,
781            0x01, 0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x1f,
782            0x01, 0xff, 0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x01,
783            0x1f, 0x01, 0x1f, 0x01, 0x07, 0x1f, 0x01, 0x1f, 0x01, 0x18, 0x01, 0x03, 0xb0, 0x02,
784            0x00, 0xfc, 0x0f, 0x03, 0xb0, 0x02, 0x00, 0xfc, 0x0f, 0x03, 0xb0, 0x02, 0x00, 0xfc,
785            0x0f, 0x03, 0xb0, 0x02, 0x00, 0xfc, 0x0f, 0x03, 0xb0, 0x02, 0x00, 0xfc, 0x0f, 0x03,
786            0xb0, 0x02, 0x00, 0xfc, 0x0f, 0x03, 0xb0, 0x02, 0x00, 0xfc, 0x0f, 0x03, 0xb0, 0x02,
787            0x00, 0xfc, 0x0f, 0x03, 0xb0, 0x02, 0x00, 0xfc, 0x0f, 0x03, 0xb0, 0x02, 0x00, 0xfc,
788            0x0f, 0x03, 0xb0, 0x02, 0x00, 0xfc, 0x0f, 0x03, 0xb0, 0x02, 0x00, 0xfc, 0x0f, 0x03,
789            0xb0, 0x02, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
790            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
791            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
792            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
793            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
794            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
795            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
796            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
797            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
798            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
799            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
800            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
801            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
802            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
803            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
804            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
805            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
806            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
807            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
808            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
809            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
810            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
811            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
812            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
813            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
814            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
815            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
816            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
817            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
818            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
819            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
820            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
821            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
822            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
823            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
824            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
825            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
826            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
827            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
828            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
829            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
830            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
831            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
832            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
833            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
834            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
835            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
836            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
837            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
838            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
839            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
840            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
841            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
842            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
843            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
844            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
845            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
846            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
847            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
848            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
849            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
850            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
851            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
852            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
853            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
854            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
855            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
856            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
857            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
858            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
859            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
860            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
861            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
862            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
863            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
864            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
865            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
866            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
867            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
868            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
869            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
870            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
871            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
872            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
873            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
874            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
875            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
876            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
877            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
878            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
879            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
880            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
881            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
882            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
883            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
884            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
885            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
886            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
887            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
888            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
889            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
890            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
891            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
892            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
893            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
894            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
895            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
896            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
897            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
898            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
899            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
900            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
901            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
902            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
903            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
904            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
905            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
906            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
907            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
908            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
909            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
910            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
911            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
912            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
913            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
914            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
915            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
916            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
917            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
918            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
919            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
920            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
921            0x00, 0x00,
922        ];
923    }
924
925    #[test]
926    fn test_decompress() -> Result<(), ErrorTrace> {
927        let mut test_context: Lznt1Context = Lznt1Context::new();
928
929        let test_data: Vec<u8> = get_test_data();
930        let mut uncompressed_data: Vec<u8> = vec![0; 65536];
931        test_context.decompress(&test_data, &mut uncompressed_data)?;
932        assert_eq!(test_context.uncompressed_data_size, 65536);
933
934        let expected_data: Vec<u8> = match fs::read("../LICENSE") {
935            Ok(data) => data,
936            Err(error) => {
937                return Err(keramics_core::error_trace_new_with_error!(
938                    "Unable read test reference file",
939                    error
940                ));
941            }
942        };
943        assert_eq!(&uncompressed_data[0..11358], &expected_data);
944
945        Ok(())
946    }
947}