From 7cf58a9ec47d96608dfec9771179691301ede3ce Mon Sep 17 00:00:00 2001 From: Gang Wu Date: Sun, 14 Jan 2024 20:32:15 +0800 Subject: [PATCH] Sync site with format release v2.10.0 --- content/en/docs/Concepts/_index.md | 28 +- .../en/docs/File Format/Data Pages/_index.md | 22 +- .../File Format/Data Pages/checksumming.md | 5 +- .../File Format/Data Pages/columnchunks.md | 15 +- .../File Format/Data Pages/compression.md | 84 +++ .../docs/File Format/Data Pages/encodings.md | 143 +++-- .../docs/File Format/Data Pages/encryption.md | 497 ++++++++++++++++++ .../File Format/Data Pages/errorrecovery.md | 14 +- content/en/docs/File Format/Types/_index.md | 21 +- .../en/docs/File Format/Types/logicaltypes.md | 8 +- content/en/docs/File Format/_index.md | 46 +- content/en/docs/File Format/bloomfilter.md | 335 ++++++++++++ content/en/docs/File Format/configurations.md | 14 +- content/en/docs/File Format/extensibility.md | 7 +- content/en/docs/File Format/metadata.md | 3 +- content/en/docs/File Format/nestedencoding.md | 10 +- content/en/docs/File Format/nulls.md | 5 +- content/en/docs/File Format/pageindex.md | 85 +++ static/images/FileLayoutBloomFilter1.png | Bin 0 -> 44025 bytes static/images/FileLayoutBloomFilter2.png | Bin 0 -> 34018 bytes static/images/FileLayoutEncryptionEF.png | Bin 0 -> 81119 bytes static/images/FileLayoutEncryptionPF.png | Bin 0 -> 79304 bytes static/images/PageIndexLayout.png | Bin 0 -> 7442 bytes 23 files changed, 1250 insertions(+), 92 deletions(-) create mode 100644 content/en/docs/File Format/Data Pages/compression.md create mode 100644 content/en/docs/File Format/Data Pages/encryption.md create mode 100644 content/en/docs/File Format/bloomfilter.md create mode 100644 content/en/docs/File Format/pageindex.md create mode 100644 static/images/FileLayoutBloomFilter1.png create mode 100755 static/images/FileLayoutBloomFilter2.png create mode 100755 static/images/FileLayoutEncryptionEF.png create mode 100755 static/images/FileLayoutEncryptionPF.png create mode 100644 static/images/PageIndexLayout.png diff --git a/content/en/docs/Concepts/_index.md b/content/en/docs/Concepts/_index.md index 2a0c385..ed32229 100644 --- a/content/en/docs/Concepts/_index.md +++ b/content/en/docs/Concepts/_index.md @@ -5,19 +5,29 @@ weight: 4 description: > Glossary of relevant terminology. --- -*Block (hdfs block)*: This means a block in hdfs and the meaning is unchanged for describing this file format. The file format is designed to work well on top of hdfs. + - *Block (HDFS block)*: This means a block in HDFS and the meaning is + unchanged for describing this file format. The file format is + designed to work well on top of HDFS. -*File*: A hdfs file that must include the metadata for the file. It does not need to actually contain the data. + - *File*: A HDFS file that must include the metadata for the file. + It does not need to actually contain the data. -*Row group*: A logical horizontal partitioning of the data into rows. There is no physical structure that is guaranteed for a row group. A row group consists of a column chunk for each column in the dataset. + - *Row group*: A logical horizontal partitioning of the data into rows. + There is no physical structure that is guaranteed for a row group. + A row group consists of a column chunk for each column in the dataset. -*Column chunk*: A chunk of the data for a particular column. These live in a particular row group and is guaranteed to be contiguous in the file. + - *Column chunk*: A chunk of the data for a particular column. They live + in a particular row group and are guaranteed to be contiguous in the file. -*Page*: Column chunks are divided up into pages. A page is conceptually an indivisible unit (in terms of compression and encoding). There can be multiple page types which is interleaved in a column chunk. + - *Page*: Column chunks are divided up into pages. A page is conceptually + an indivisible unit (in terms of compression and encoding). There can + be multiple page types which are interleaved in a column chunk. -Hierarchically, a file consists of one or more row groups. A row group contains exactly one column chunk per column. Column chunks contain one or more pages. +Hierarchically, a file consists of one or more row groups. A row group +contains exactly one column chunk per column. Column chunks contain one or +more pages. ## Unit of parallelization -* MapReduce - File/Row Group -* IO - Column chunk -* Encoding/Compression - Page + - MapReduce - File/Row Group + - IO - Column chunk + - Encoding/Compression - Page diff --git a/content/en/docs/File Format/Data Pages/_index.md b/content/en/docs/File Format/Data Pages/_index.md index 37b1c7f..816f56d 100644 --- a/content/en/docs/File Format/Data Pages/_index.md +++ b/content/en/docs/File Format/Data Pages/_index.md @@ -3,14 +3,24 @@ title: "Data Pages" linkTitle: "Data Pages" weight: 7 --- -For data pages, the 3 pieces of information are encoded back to back, after the page header. We have the +For data pages, the 3 pieces of information are encoded back to back, after the page +header. No padding is allowed in the data page. +In order we have: + 1. repetition levels data + 1. definition levels data + 1. encoded values -* definition levels data, -* repetition levels data, -* encoded values. The size of specified in the header is for all 3 pieces combined. +The value of `uncompressed_page_size` specified in the header is for all the 3 pieces combined. -The data for the data page is always required. The definition and repetition levels are optional, based on the schema definition. If the column is not nested (i.e. the path to the column has length 1), we do not encode the repetition levels (it would always have the value 1). For data that is required, the definition levels are skipped (if encoded, it will always have the value of the max definition level). +The encoded values for the data page is always required. The definition and repetition levels +are optional, based on the schema definition. If the column is not nested (i.e. +the path to the column has length 1), we do not encode the repetition levels (it would +always have the value 1). For data that is required, the definition levels are +skipped (if encoded, it will always have the value of the max definition level). -For example, in the case where the column is non-nested and required, the data in the page is only the encoded values. +For example, in the case where the column is non-nested and required, the data in the +page is only the encoded values. The supported encodings are described in Encodings.md + +The supported compression codecs are described in Compression.md diff --git a/content/en/docs/File Format/Data Pages/checksumming.md b/content/en/docs/File Format/Data Pages/checksumming.md index cca6574..de6c502 100644 --- a/content/en/docs/File Format/Data Pages/checksumming.md +++ b/content/en/docs/File Format/Data Pages/checksumming.md @@ -3,4 +3,7 @@ title: "Checksumming" linkTitle: "Checksumming" weight: 7 --- -Pages of all kinds can be individually checksummed. This allows disabling of checksums at the HDFS file level, to better support single row lookups. Checksums are calculated using the standard CRC32 algorithm - as used in e.g. GZip - on the serialized binary representation of a page (not including the page header itself). +Pages of all kinds can be individually checksummed. This allows disabling of checksums +at the HDFS file level, to better support single row lookups. Checksums are calculated +using the standard CRC32 algorithm - as used in e.g. GZip - on the serialized binary +representation of a page (not including the page header itself). diff --git a/content/en/docs/File Format/Data Pages/columnchunks.md b/content/en/docs/File Format/Data Pages/columnchunks.md index a8b52cd..4461ec1 100644 --- a/content/en/docs/File Format/Data Pages/columnchunks.md +++ b/content/en/docs/File Format/Data Pages/columnchunks.md @@ -3,4 +3,17 @@ title: "Column Chunks" linkTitle: "Column Chunks" weight: 7 --- -Column chunks are composed of pages written back to back. The pages share a common header and readers can skip over page they are not interested in. The data for the page follows the header and can be compressed and/or encoded. The compression and encoding is specified in the page metadata. +Column chunks are composed of pages written back to back. The pages share a common +header and readers can skip over pages they are not interested in. The data for the +page follows the header and can be compressed and/or encoded. The compression and +encoding is specified in the page metadata. + +A column chunk might be partly or completely dictionary encoded. It means that +dictionary indexes are saved in the data pages instead of the actual values. The +actual values are stored in the dictionary page. See details in Encodings.md. +The dictionary page must be placed at the first position of the column chunk. At +most one dictionary page can be placed in a column chunk. + +Additionally, files can contain an optional column index to allow readers to +skip pages more efficiently. See PageIndex.md for details and +the reasoning behind adding these to the format. diff --git a/content/en/docs/File Format/Data Pages/compression.md b/content/en/docs/File Format/Data Pages/compression.md new file mode 100644 index 0000000..f448983 --- /dev/null +++ b/content/en/docs/File Format/Data Pages/compression.md @@ -0,0 +1,84 @@ +--- +title: "Compression" +linkTitle: "Compression" +weight: 1 +--- + +## Overview + +Parquet allows the data block inside dictionary pages and data pages to +be compressed for better space efficiency. The Parquet format supports +several compression covering different areas in the compression ratio / +processing cost spectrum. + +The detailed specifications of compression codecs are maintained externally +by their respective authors or maintainers, which we reference hereafter. + +For all compression codecs except the deprecated `LZ4` codec, the raw data +of a (data or dictionary) page is fed *as-is* to the underlying compression +library, without any additional framing or padding. The information required +for precise allocation of compressed and decompressed buffers is written +in the `PageHeader` struct. + +## Codecs + +### UNCOMPRESSED + +No-op codec. Data is left uncompressed. + +### SNAPPY + +A codec based on the +[Snappy compression format](https://github.com/google/snappy/blob/master/format_description.txt). +If any ambiguity arises when implementing this format, the implementation +provided by Google Snappy [library](https://github.com/google/snappy/) +is authoritative. + +### GZIP + +A codec based on the GZIP format (not the closely-related "zlib" or "deflate" +formats) defined by [RFC 1952](https://tools.ietf.org/html/rfc1952). +If any ambiguity arises when implementing this format, the implementation +provided by the [zlib compression library](https://zlib.net/) is authoritative. + +Readers should support reading pages containing multiple GZIP members, however, +as this has historically not been supported by all implementations, it is recommended +that writers refrain from creating such pages by default for better interoperability. + +### LZO + +A codec based on or interoperable with the +[LZO compression library](http://www.oberhumer.com/opensource/lzo/). + +### BROTLI + +A codec based on the Brotli format defined by +[RFC 7932](https://tools.ietf.org/html/rfc7932). +If any ambiguity arises when implementing this format, the implementation +provided by the [Brotli compression library](https://github.com/google/brotli) +is authoritative. + +### LZ4 + +A **deprecated** codec loosely based on the LZ4 compression algorithm, +but with an additional undocumented framing scheme. The framing is part +of the original Hadoop compression library and was historically copied +first in parquet-mr, then emulated with mixed results by parquet-cpp. + +It is strongly suggested that implementors of Parquet writers deprecate +this compression codec in their user-facing APIs, and advise users to +switch to the newer, interoperable `LZ4_RAW` codec. + +### ZSTD + +A codec based on the Zstandard format defined by +[RFC 8478](https://tools.ietf.org/html/rfc8478). If any ambiguity arises +when implementing this format, the implementation provided by the +[ZStandard compression library](https://facebook.github.io/zstd/) +is authoritative. + +### LZ4_RAW + +A codec based on the [LZ4 block format](https://github.com/lz4/lz4/blob/dev/doc/lz4_Block_format.md). +If any ambiguity arises when implementing this format, the implementation +provided by the [LZ4 compression library](http://www.lz4.org/) is authoritative. diff --git a/content/en/docs/File Format/Data Pages/encodings.md b/content/en/docs/File Format/Data Pages/encodings.md index b224336..3ff8d05 100644 --- a/content/en/docs/File Format/Data Pages/encodings.md +++ b/content/en/docs/File Format/Data Pages/encodings.md @@ -4,7 +4,8 @@ linkTitle: "Encodings" weight: 1 --- -### Plain: (PLAIN = 0) + +### Plain: (PLAIN = 0) Supported Types: all @@ -13,7 +14,7 @@ intended to be the simplest encoding. Values are encoded back to back. The plain encoding is used whenever a more efficient encoding can not be used. It stores the data in the following format: - - BOOLEAN: [Bit Packed](#RLE), LSB first + - BOOLEAN: [Bit Packed](#BITPACKED), LSB first - INT32: 4 bytes little endian - INT64: 8 bytes little endian - INT96: 12 bytes little endian (deprecated) @@ -35,7 +36,7 @@ using the [RLE/Bit-Packing Hybrid](#RLE) encoding. If the dictionary grows too b or number of distinct values, the encoding will fall back to the plain encoding. The dictionary page is written first, before the data pages of the column chunk. -Dictionary page format: the entries in the dictionary - in dictionary order - using the [plain](#PLAIN) encoding. +Dictionary page format: the entries in the dictionary using the [plain](#PLAIN) encoding. Data page format: the bit width used to encode the entry ids stored as 1 byte (max bit width = 32), followed by the values encoded using RLE/Bit packed described above (with the given bit width). @@ -43,13 +44,15 @@ followed by the values encoded using RLE/Bit packed described above (with the gi Using the PLAIN_DICTIONARY enum value is deprecated in the Parquet 2.0 specification. Prefer using RLE_DICTIONARY in a data page and PLAIN in a dictionary page for Parquet 2.0+ files. -### Run Length Encoding / Bit-Packing Hybrid (RLE = 3) + +### Run Length Encoding / Bit-Packing Hybrid (RLE = 3) This encoding uses a combination of bit-packing and run length encoding to more efficiently store repeated values. The grammar for this encoding looks like this, given a fixed bit-width known in advance: ``` rle-bit-packed-hybrid: +// length is not always prepended, please check the table below for more detail length := length of the in bytes stored as 4 bytes little endian (unsigned int32) encoded-data := * run := | @@ -105,11 +108,29 @@ data: * Dictionary indices * Boolean values in data pages, as an alternative to PLAIN encoding -### Bit-packed (Deprecated) (BIT_PACKED = 4) +Whether prepending the four-byte `length` to the `encoded-data` is summarized as the table below: +``` ++--------------+------------------------+-----------------+ +| Page kind | RLE-encoded data kind | Prepend length? | ++--------------+------------------------+-----------------+ +| Data page v1 | Definition levels | Y | +| | Repetition levels | Y | +| | Dictionary indices | N | +| | Boolean values | Y | ++--------------+------------------------+-----------------+ +| Data page v2 | Definition levels | N | +| | Repetition levels | N | +| | Dictionary indices | N | +| | Boolean values | Y | ++--------------+------------------------+-----------------+ +``` + + +### Bit-packed (Deprecated) (BIT_PACKED = 4) This is a bit-packed only encoding, which is deprecated and will be replaced by the [RLE/bit-packing](#RLE) hybrid encoding. Each value is encoded back to back using a fixed width. -There is no padding between values (except for the last byte) which is padded with 0s. +There is no padding between values (except for the last byte, which is padded with 0s). For example, if the max repetition level was 3 (2 bits) and the max definition level as 3 (2 bits), to encode 30 values, we would have 30 * 2 = 60 bits = 8 bytes. @@ -132,21 +153,31 @@ bit label: ABCDEFGH IJKLMNOP QRSTUVWX Note that the BIT_PACKED encoding method is only supported for encoding repetition and definition levels. -### Delta Encoding (DELTA_BINARY_PACKED = 5) + +### Delta Encoding (DELTA_BINARY_PACKED = 5) Supported Types: INT32, INT64 -This encoding is adapted from the Binary packing described in ["Decoding billions of integers per second through vectorization"](http://arxiv.org/pdf/1209.2137v5.pdf) by D. Lemire and L. Boytsov. +This encoding is adapted from the Binary packing described in +["Decoding billions of integers per second through vectorization"](http://arxiv.org/pdf/1209.2137v5.pdf) +by D. Lemire and L. Boytsov. -In delta encoding we make use of variable length integers for storing various numbers (not the deltas themselves). For unsigned values, we use ULEB128, which is the unsigned version of LEB128 (https://en.wikipedia.org/wiki/LEB128#Unsigned_LEB128). For signed values, we use zigzag encoding (https://developers.google.com/protocol-buffers/docs/encoding#signed-integers) to map negative values to positive ones and apply ULEB128 on the result. +In delta encoding we make use of variable length integers for storing various +numbers (not the deltas themselves). For unsigned values, we use ULEB128, +which is the unsigned version of LEB128 (https://en.wikipedia.org/wiki/LEB128#Unsigned_LEB128). +For signed values, we use zigzag encoding (https://developers.google.com/protocol-buffers/docs/encoding#signed-integers) +to map negative values to positive ones and apply ULEB128 on the result. -Delta encoding consists of a header followed by blocks of delta encoded values binary packed. Each block is made of miniblocks, each of them binary packed with its own bit width. +Delta encoding consists of a header followed by blocks of delta encoded values +binary packed. Each block is made of miniblocks, each of them binary packed with its own bit width. The header is defined as follows: ``` ``` * the block size is a multiple of 128; it is stored as a ULEB128 int - * the miniblock count per block is a divisor of the block size such that their quotient, the number of values in a miniblock, is a multiple of 32; it is stored as a ULEB128 int + * the miniblock count per block is a divisor of the block size such that their + quotient, the number of values in a miniblock, is a multiple of 32; it is + stored as a ULEB128 int * the total value count is stored as a ULEB128 int * the first value is stored as a zigzag ULEB128 int @@ -154,25 +185,53 @@ Each block contains ``` ``` - * the min delta is a zigzag ULEB128 int (we compute a minimum as we need positive integers for bit packing) + * the min delta is a zigzag ULEB128 int (we compute a minimum as we need + positive integers for bit packing) * the bitwidth of each block is stored as a byte - * each miniblock is a list of bit packed ints according to the bit width stored at the begining of the block + * each miniblock is a list of bit packed ints according to the bit width + stored at the begining of the block To encode a block, we will: -1. Compute the differences between consecutive elements. For the first element in the block, use the last element in the previous block or, in the case of the first block, use the first value of the whole sequence, stored in the header. - -2. Compute the frame of reference (the minimum of the deltas in the block). Subtract this min delta from all deltas in the block. This guarantees that all values are non-negative. - -3. Encode the frame of reference (min delta) as a zigzag ULEB128 int followed by the bit widths of the miniblocks and the delta values (minus the min delta) bit packed per miniblock. - -Having multiple blocks allows us to adapt to changes in the data by changing the frame of reference (the min delta) which can result in smaller values after the subtraction which, again, means we can store them with a lower bit width. - -If there are not enough values to fill the last miniblock, we pad the miniblock so that its length is always the number of values in a full miniblock multiplied by the bit width. The values of the padding bits should be zero, but readers must accept paddings consisting of arbitrary bits as well. - -If, in the last block, less than `````` miniblocks are needed to store the values, the bytes storing the bit widths of the unneeded miniblocks are still present, their value should be zero, but readers must accept arbitrary values as well. There are no additional padding bytes for the miniblock bodies though, as if their bit widths were 0 (regardless of the actual byte values). The reader knows when to stop reading by keeping track of the number of values read. +1. Compute the differences between consecutive elements. For the first + element in the block, use the last element in the previous block or, in + the case of the first block, use the first value of the whole sequence, + stored in the header. + +2. Compute the frame of reference (the minimum of the deltas in the block). + Subtract this min delta from all deltas in the block. This guarantees that + all values are non-negative. + +3. Encode the frame of reference (min delta) as a zigzag ULEB128 int followed + by the bit widths of the miniblocks and the delta values (minus the min + delta) bit-packed per miniblock. + +Having multiple blocks allows us to adapt to changes in the data by changing +the frame of reference (the min delta) which can result in smaller values +after the subtraction which, again, means we can store them with a lower bit width. + +If there are not enough values to fill the last miniblock, we pad the miniblock +so that its length is always the number of values in a full miniblock multiplied +by the bit width. The values of the padding bits should be zero, but readers +must accept paddings consisting of arbitrary bits as well. + +If, in the last block, less than `````` +miniblocks are needed to store the values, the bytes storing the bit widths +of the unneeded miniblocks are still present, their value should be zero, +but readers must accept arbitrary values as well. There are no additional +padding bytes for the miniblock bodies though, as if their bit widths were 0 +(regardless of the actual byte values). The reader knows when to stop reading +by keeping track of the number of values read. + +Subtractions in steps 1) and 2) may incur signed arithmetic overflow, and so +will the corresponding additions when decoding. Overflow should be allowed +and handled as wrapping around in 2's complement notation so that the original +values are correctly restituted. This may require explicit care in some programming +languages (for example by doing all arithmetic in the unsigned domain). + +The following examples use 8 as the block size to keep the examples short, +but in real cases it would be invalid. -The following examples use 8 as the block size to keep the examples short, but in real cases it would be invalid. #### Example 1 1, 2, 3, 4, 5 @@ -180,7 +239,7 @@ After step 1), we compute the deltas as: 1, 1, 1, 1 -The minimum delta is 1 and after step 2, the deltas become +The minimum delta is 1 and after step 2, the relative deltas become: 0, 0, 0, 0 @@ -189,7 +248,7 @@ The final encoded data is: header: 8 (block size), 1 (miniblock count), 5 (value count), 1 (first value) - block + block: 1 (minimum delta), 0 (bitwidth), (no data needed for bitwidth 0) #### Example 2 @@ -206,7 +265,7 @@ The encoded data is header: 8 (block size), 1 (miniblock count), 8 (value count), 7 (first value) - block + block: -2 (minimum delta), 2 (bitwidth), 00000011111111b (0,0,0,3,3,3,3 packed on 2 bits) #### Characteristics @@ -225,16 +284,19 @@ concatenated back to back. The expected savings is from the cost of encoding the and possibly better compression in the data (it is no longer interleaved with the lengths). The data stream looks like: - +``` +``` -For example, if the data was "Hello", "World", "Foobar", "ABCDEF": +For example, if the data was "Hello", "World", "Foobar", "ABCDEF" -The encoded data would be DeltaEncoding(5, 5, 6, 6) "HelloWorldFoobarABCDEF" +then the encoded data would be comprised of the following segments: +- DeltaEncoding(5, 5, 6, 6) (the string lengths) +- "HelloWorldFoobarABCDEF" ### Delta Strings: (DELTA_BYTE_ARRAY = 7) -Supported Types: BYTE_ARRAY +Supported Types: BYTE_ARRAY, FIXED_LEN_BYTE_ARRAY This is also known as incremental encoding or front compression: for each element in a sequence of strings, store the prefix length of the previous entry plus the suffix. @@ -244,18 +306,31 @@ For a longer description, see https://en.wikipedia.org/wiki/Incremental_encoding This is stored as a sequence of delta-encoded prefix lengths (DELTA_BINARY_PACKED), followed by the suffixes encoded as delta length byte arrays (DELTA_LENGTH_BYTE_ARRAY). +For example, if the data was "axis", "axle", "babble", "babyhood" + +then the encoded data would be comprised of the following segments: +- DeltaEncoding(0, 2, 0, 3) (the prefix lengths) +- DeltaEncoding(4, 2, 6, 5) (the suffix lengths) +- "axislebabbleyhood" + +Note that, even for FIXED_LEN_BYTE_ARRAY, all lengths are encoded despite the redundancy. + ### Byte Stream Split: (BYTE_STREAM_SPLIT = 9) -Supported Types: FLOAT DOUBLE +Supported Types: FLOAT, DOUBLE This encoding does not reduce the size of the data but can lead to a significantly better compression ratio and speed when a compression algorithm is used afterwards. This encoding creates K byte-streams of length N where K is the size in bytes of the data -type and N is the number of elements in the data sequence. +type and N is the number of elements in the data sequence. Specifically, K is 4 for FLOAT +type and 8 for DOUBLE type. The bytes of each value are scattered to the corresponding streams. The 0-th byte goes to the 0-th stream, the 1-st byte goes to the 1-st stream and so on. The streams are concatenated in the following order: 0-th stream, 1-st stream, etc. +The total length of encoded streams is K * N bytes. Because it does not have any metadata +to indicate the total length, the end of the streams is also the end of data page. No padding +is allowed inside the data page. Example: Original data is three 32-bit floats and for simplicity we look at their raw representation. diff --git a/content/en/docs/File Format/Data Pages/encryption.md b/content/en/docs/File Format/Data Pages/encryption.md new file mode 100644 index 0000000..e9fbd0f --- /dev/null +++ b/content/en/docs/File Format/Data Pages/encryption.md @@ -0,0 +1,497 @@ +--- +title: "Parquet Modular Encryption" +linkTitle: "Encryption" +weight: 1 +--- + +Parquet files containing sensitive information can be protected by the modular encryption +mechanism that encrypts and authenticates the file data and metadata - while allowing +for a regular Parquet functionality (columnar projection, predicate pushdown, encoding +and compression). + +## 1 Problem Statement +Existing data protection solutions (such as flat encryption of files, in-storage encryption, +or use of an encrypting storage client) can be applied to Parquet files, but have various +security or performance issues. An encryption mechanism, integrated in the Parquet format, +allows for an optimal combination of data security, processing speed and encryption granularity. + +## 2 Goals +1. Protect Parquet data and metadata by encryption, while enabling selective reads +(columnar projection, predicate push-down). +2. Implement "client-side" encryption/decryption (storage client). The storage server +must not see plaintext data, metadata or encryption keys. +3. Leverage authenticated encryption that allows clients to check integrity of the retrieved +data - making sure the file (or file parts) have not been replaced with a wrong version, or +tampered with otherwise. +4. Enable different encryption keys for different columns and for the footer. +5. Allow for partial encryption - encrypt only column(s) with sensitive data. +6. Work with all compression and encoding mechanisms supported in Parquet. +7. Support multiple encryption algorithms, to account for different security and performance +requirements. +8. Enable two modes for metadata protection - + * full protection of file metadata + * partial protection of file metadata that allows legacy readers to access unencrypted +columns in an encrypted file. +9. Minimize overhead of encryption - in terms of size of encrypted files, and throughput +of write/read operations. + + +## 3 Technical Approach +Parquet files are comprised of separately serialized components: pages, page headers, column +indexes, offset indexes, bloom filter headers and bitsets, the footer. Parquet encryption +mechanism denotes them as “modules” +and encrypts each module separately – making it possible to fetch and decrypt the footer, +find the offset of required pages, fetch the pages and decrypt the data. In this document, +the term “footer” always refers to the regular Parquet footer - the `FileMetaData` structure, +and its nested fields (row groups / column chunks). + +File encryption is flexible - each column and the footer can be encrypted with the same key, +with a different key, or not encrypted at all. + +The results of compression of column pages are encrypted before being written to the output +stream. A new Thrift structure, with column crypto metadata, is added to column chunks of +the encrypted columns. This metadata provides information about the column encryption keys. + +The results of serialization of Thrift structures are encrypted, before being written +to the output stream. + +The file footer can be either encrypted or left as a plaintext. In an encrypted footer mode, +a new Thrift structure with file crypto metadata is added to the file. This metadata provides +information about the file encryption algorithm and the footer encryption key. + +In a plaintext footer mode, the contents of the footer structure is visible and signed +in order to verify its integrity. New footer fields keep an +information about the file encryption algorithm and the footer signing key. + +For encrypted columns, the following modules are always encrypted, with the same column key: +pages and page headers (both dictionary and data), column indexes, offset indexes, bloom filter +headers and bitsets. If the +column key is different from the footer encryption key, the column metadata is serialized +separately and encrypted with the column key. In this case, the column metadata is also +considered to be a module. + +## 4 Encryption Algorithms and Keys +Parquet encryption algorithms are based on the standard AES ciphers for symmetric encryption. +AES is supported in Intel and other CPUs with hardware acceleration of crypto operations +(“AES-NI”) - that can be leveraged, for example, by Java programs (automatically via HotSpot), +or C++ programs (via EVP-* functions in OpenSSL). Parquet supports all standard AES key sizes: +128, 192 and 256 bits. + +Initially, two algorithms have been implemented, one based on a GCM mode of AES, and the +other on a combination of GCM and CTR modes. + +### 4.1 AES modes used in Parquet + +#### 4.1.1 AES GCM +AES GCM is an authenticated encryption. Besides the data confidentiality (encryption), it +supports two levels of integrity verification (authentication): of the data (default), +and of the data combined with an optional AAD (“additional authenticated data”). The +authentication allows to make sure the data has not been tampered with. An AAD +is a free text to be authenticated, together with the data. The user can, for example, pass the +file name with its version (or creation timestamp) as an AAD input, to verify that the +file has not been replaced with an older version. The details on how Parquet creates +and uses AADs are provided in the section 4.4. + +#### 4.1.2 AES CTR +AES CTR is a regular (not authenticated) cipher. It is faster than the GCM cipher, since it +doesn’t perform integrity verification and doesn’t calculate an authentication tag. +Actually, GCM is a combination of the CTR cipher and an +authentication layer called GMAC. For applications running without AES acceleration +(e.g. on Java versions before Java 9) and willing to compromise on content verification, +CTR cipher can provide a boost in encryption/decryption throughput. + + +#### 4.1.3 Nonces and IVs +GCM and CTR ciphers require a unique vector to be provided for each encrypted stream. +In this document, the unique input to GCM encryption is called nonce (“number used once”). +The unique input to CTR encryption is called IV ("initialization vector"), and is comprised of two +parts: a nonce and an initial counter field. + +Parquet encryption uses the RBG-based (random bit generator) nonce construction as defined in +the section 8.2.2 of the NIST SP 800-38D document. For each encrypted module, Parquet generates a +unique nonce with a length of 12 bytes (96 bits). Notice: the NIST +specification uses a term “IV” for what is called “nonce” in the Parquet encryption design. + + +### 4.2 Parquet encryption algorithms + +#### 4.2.1 AES_GCM_V1 +This Parquet algorithm encrypts all modules by the GCM cipher, without padding. The AES GCM cipher +must be implemented by a cryptographic provider according to the NIST SP 800-38D specification. + +In Parquet, an input to the GCM cipher is an encryption key, a 12-byte nonce, a plaintext and an +AAD. The output is a ciphertext with the length equal to that of plaintext, and a 16-byte authentication +tag used to verify the ciphertext and AAD integrity. + + +#### 4.2.2 AES_GCM_CTR_V1 +In this Parquet algorithm, all modules except pages are encrypted with the GCM cipher, as described +above. The pages are encrypted by the CTR cipher without padding. This allows to encrypt/decrypt +the bulk of the data faster, while still verifying the metadata integrity and making +sure the file has not been replaced with a wrong version. However, tampering with the +page data might go unnoticed. The AES CTR cipher +must be implemented by a cryptographic provider according to the NIST SP 800-38A specification. + +In Parquet, an input to the CTR cipher is an encryption key, a 16-byte IV and a plaintext. IVs are comprised of +a 12-byte nonce and a 4-byte initial counter field. The first 31 bits of the initial counter field are set +to 0, the last bit is set to 1. The output is a ciphertext with the length equal to that of plaintext. + +### 4.3 Key metadata +A wide variety of services and tools for management of encryption keys exist in the +industry today. Public clouds offer different key management services (KMS), and +organizational IT systems either build proprietary key managers in-house or adopt open source +tools for on-premises deployment. Besides the diversity of management tools, there are many +ways to generate and handle the keys themselves (generate Data keys inside KMS – or locally +upon data encryption; use Data keys only, or use Master keys to encrypt the Data keys; +store the encrypted key material inside the data file, or at a separate location; etc). There +is also a large variety of authorization and certification methods, required to control the +access to encryption keys. + +Parquet is not limited to a single KMS, key generation/wrapping method, or authorization service. +Instead, Parquet provides a developer with a simple interface that can be utilized for implementation +of any key management scheme. For each column or footer key, a file writer can generate and pass an +arbitrary `key_metadata` byte array that will be stored in the file. This field is made available to +file readers to enable recovery of the key. For example, the key_metadata +can keep a serialized + + * String ID of a Data key. This enables direct retrieval of the Data key from a KMS. + * Encrypted Data key, and string ID of a Master key. The Data key is generated randomly and + encrypted with a Master key either remotely in a KMS, or locally after retrieving the Master key from a KMS. + Master key rotation requires modification of the data file footer. + * Short ID (counter) of a Data key inside the Parquet data file. The Data key is encrypted with a + Master key using one of the options described above – but the resulting key material is stored + separately, outside the data file, and will be retrieved using the counter and file path. + Master key rotation doesn't require modification of the data file. + +Key metadata can also be empty - in a case the encryption keys are fully managed by the caller +code, and passed explicitly to Parquet readers for the file footer and each encrypted column. + +### 4.4 Additional Authenticated Data +The AES GCM cipher protects against byte replacement inside a ciphertext - but, without an AAD, +it can't prevent replacement of one ciphertext with another (encrypted with the same key). +Parquet modular encryption leverages AADs to protect against swapping ciphertext modules (encrypted +with AES GCM) inside a file or between files. Parquet can also protect against swapping full +files - for example, replacement of a file with an old version, or replacement of one table +partition with another. AADs are built to reflects the identity of a file and of the modules +inside the file. + +Parquet constructs a module AAD from two components: an optional AAD prefix - a string provided +by the user for the file, and an AAD suffix, built internally for each GCM-encrypted module +inside the file. The AAD prefix should reflect the target identity that helps to detect file +swapping (a simple example - table name with a date and partition, e.g. "employees_23May2018.part0"). +The AAD suffix reflects the internal identity of modules inside the file, which for example +prevents replacement of column pages in row group 0 by pages from the same column in row +group 1. The module AAD is a direct concatenation of the prefix and suffix parts. + +#### 4.4.1 AAD prefix +File swapping can be prevented by an AAD prefix string, that uniquely identifies the file and +allows to differentiate it e.g. from older versions of the file or from other partition files in the same +data set (table). This string is optionally passed by a writer upon file creation. If provided, +the AAD prefix is stored in an `aad_prefix` field in the file, and is made available to the readers. +This field is not encrypted. If a user is concerned about keeping the file identity inside the file, +the writer code can explicitly request Parquet not to store the AAD prefix. Then the aad_prefix field +will be empty; AAD prefixes must be fully managed by the caller code and supplied explictly to Parquet +readers for each file. + +The protection against swapping full files is optional. It is not enabled by default because +it requires the writers to generate and pass an AAD prefix. + +A reader of a file created with an AAD prefix, should be able to verify the prefix (file identity) +by comparing it with e.g. the target table name, using a convention accepted in the organization. +Readers of data sets, comprised of multiple partition files, can verify data set integrity by +checking the number of files and the AAD prefix of each file. For example, a reader that needs to +process the employee table, a May 23 version, knows (via the convention) that +the AAD prefix must be "employees_23May2018.partN" in +each corresponding table file. If a file AAD prefix is "employees_23May2018.part0", the reader +will know it is fine, but if the prefix is "employees_23May2016.part0" or "contractors_23May2018.part0" - +the file is wrong. The reader should also know the number of table partitions and verify availability +of all partition files (prefixes) from 0 to N-1. + + +#### 4.4.2 AAD suffix +The suffix part of a module AAD protects against module swapping inside a file. It also protects against +module swapping between files - in situations when an encryption key is re-used in multiple files and the +writer has not provided a unique AAD prefix for each file. + +Unlike AAD prefix, a suffix is built internally by Parquet, by direct concatenation of the following parts: +1. [All modules] internal file identifier - a random byte array generated for each file (implementation-defined length) +2. [All modules] module type (1 byte) +3. [All modules except footer] row group ordinal (2 byte short, little endian) +4. [All modules except footer] column ordinal (2 byte short, little endian) +5. [Data page and header only] page ordinal (2 byte short, little endian) + +The following module types are defined: + + * Footer (0) + * ColumnMetaData (1) + * Data Page (2) + * Dictionary Page (3) + * Data PageHeader (4) + * Dictionary PageHeader (5) + * ColumnIndex (6) + * OffsetIndex (7) + * BloomFilter Header (8) + * BloomFilter Bitset (9) + + +| | Internal File ID | Module type | Row group ordinal | Column ordinal | Page ordinal| +|----------------------|------------------|-------------|-------------------|----------------|-------------| +| Footer | yes | yes (0) | no | no | no | +| ColumnMetaData | yes | yes (1) | yes | yes | no | +| Data Page | yes | yes (2) | yes | yes | yes | +| Dictionary Page | yes | yes (3) | yes | yes | no | +| Data PageHeader | yes | yes (4) | yes | yes | yes | +| Dictionary PageHeader| yes | yes (5) | yes | yes | no | +| ColumnIndex | yes | yes (6) | yes | yes | no | +| OffsetIndex | yes | yes (7) | yes | yes | no | +| BloomFilter Header | yes | yes (8) | yes | yes | no | +| BloomFilter Bitset | yes | yes (9) | yes | yes | no | + + + +## 5 File Format + +### 5.1 Encrypted module serialization +All modules, except column pages, are encrypted with the GCM cipher. In the AES_GCM_V1 algorithm, +the column pages are also encrypted with AES GCM. For each module, the GCM encryption +buffer is comprised of a nonce, ciphertext and tag, described in the Algorithms section. The length of +the encryption buffer (a 4-byte little endian) is written to the output stream, followed by the buffer itself. + +|length (4 bytes) | nonce (12 bytes) | ciphertext (length-28 bytes) | tag (16 bytes) | +|-----------------|------------------|------------------------------|----------------| + +In the AES_GCM_CTR_V1 algorithm, the column pages are encrypted with AES CTR. +For each page, the CTR encryption buffer is comprised of a nonce and ciphertext, +described in the Algorithms section. The length of the encryption buffer +(a 4-byte little endian) is written to the output stream, followed by the buffer itself. + +|length (4 bytes) | nonce (12 bytes) | ciphertext (length-12 bytes) | +|-----------------|------------------|------------------------------| + +### 5.2 Crypto structures +Parquet file encryption algorithm is specified in a union of the following Thrift structures: + +```c +struct AesGcmV1 { + /** AAD prefix **/ + 1: optional binary aad_prefix + + /** Unique file identifier part of AAD suffix **/ + 2: optional binary aad_file_unique + + /** In files encrypted with AAD prefix without storing it, + * readers must supply the prefix **/ + 3: optional bool supply_aad_prefix +} + +struct AesGcmCtrV1 { + /** AAD prefix **/ + 1: optional binary aad_prefix + + /** Unique file identifier part of AAD suffix **/ + 2: optional binary aad_file_unique + + /** In files encrypted with AAD prefix without storing it, + * readers must supply the prefix **/ + 3: optional bool supply_aad_prefix +} + +union EncryptionAlgorithm { + 1: AesGcmV1 AES_GCM_V1 + 2: AesGcmCtrV1 AES_GCM_CTR_V1 +} +``` + +If a writer provides an AAD prefix, it will be used for enciphering the file and stored in the +`aad_prefix` field. However, the writer can request Parquet not to store the prefix in the file. In +this case, the `aad_prefix` field will not be set, and the `supply_aad_prefix` field will be set +to _true_ to inform readers they must supply the AAD prefix for this file in order to be able to +decrypt it. + +The row group ordinal, required for AAD suffix calculation, is set in the RowGroup structure: + +```c +struct RowGroup { +... + /** Row group ordinal in the file **/ + 7: optional i16 ordinal +} +``` + +A `crypto_metadata` field is set in each ColumnChunk in the encrypted columns. ColumnCryptoMetaData +is a union - the actual structure is chosen depending on whether the column is encrypted with the +footer encryption key, or with a column-specific key. For the latter, a key metadata can be specified. + +```c +struct EncryptionWithFooterKey { +} + +struct EncryptionWithColumnKey { + /** Column path in schema **/ + 1: required list path_in_schema + + /** Retrieval metadata of column encryption key **/ + 2: optional binary key_metadata +} + +union ColumnCryptoMetaData { + 1: EncryptionWithFooterKey ENCRYPTION_WITH_FOOTER_KEY + 2: EncryptionWithColumnKey ENCRYPTION_WITH_COLUMN_KEY +} + +struct ColumnChunk { +... + /** Crypto metadata of encrypted columns **/ + 8: optional ColumnCryptoMetaData crypto_metadata +} +``` + + +### 5.3 Protection of sensitive metadata +The Parquet file footer, and its nested structures, contain sensitive information - ranging +from a secret data (column statistics) to other information that can be exploited by an +attacker (e.g. schema, num_values, key_value_metadata, encoding +and crypto_metadata). This information is automatically protected when the footer and +secret columns are encrypted with the same key. In other cases - when column(s) and the +footer are encrypted with different keys; or column(s) are encrypted and the footer is not, +an extra measure is required to protect the column-specific information in the file footer. +In these cases, the `ColumnMetaData` structures are Thrift-serialized separately and encrypted +with a column-specific key, thus protecting the column stats and +other metadata. The column metadata module is encrypted with the GCM cipher, serialized +according to the section 5.1 instructions and stored in an `optional binary encrypted_column_metadata` +field in the `ColumnChunk`. + +```c +struct ColumnChunk { +... + + /** Column metadata for this chunk.. **/ + 3: optional ColumnMetaData meta_data +.. + /** Crypto metadata of encrypted columns **/ + 8: optional ColumnCryptoMetaData crypto_metadata + + /** Encrypted column metadata for this chunk **/ + 9: optional binary encrypted_column_metadata +} +``` + + +### 5.4 Encrypted footer mode +In files with sensitive column data, a good security practice is to encrypt not only the +secret columns, but also the file footer metadata. This hides the file schema, +number of rows, key-value properties, column sort order, names of the encrypted columns +and metadata of the column encryption keys. + +The columns encrypted with the same key as the footer must leave the column metadata at the original +location, `optional ColumnMetaData meta_data` in the `ColumnChunk` structure. +This field is not set for columns encrypted with a column-specific key - instead, the `ColumnMetaData` +is Thrift-serialized, encrypted with the column key and written to the `encrypted_column_metadata` +field in the `ColumnChunk` structure, as described in the section 5.3. + +A Thrift-serialized `FileCryptoMetaData` structure is written before the encrypted footer. +It contains information on the file encryption algorithm and on the footer key metadata. Then +the combined length of this structure and of the encrypted footer is written as a 4-byte +little endian integer, followed by a final magic string, "PARE". The same magic bytes are +written at the beginning of the file (offset 0). Parquet readers start file parsing by +reading and checking the magic string. Therefore, the encrypted footer mode uses a new +magic string ("PARE") in order to instruct readers to look for a file crypto metadata +before the footer - and also to immediately inform legacy readers (expecting ‘PAR1’ +bytes) that they can’t parse this file. + +```c +/** Crypto metadata for files with encrypted footer **/ +struct FileCryptoMetaData { + /** + * Encryption algorithm. This field is only used for files + * with encrypted footer. Files with plaintext footer store algorithm id + * inside footer (FileMetaData structure). + */ + 1: required EncryptionAlgorithm encryption_algorithm + + /** Retrieval metadata of key used for encryption of footer, + * and (possibly) columns **/ + 2: optional binary key_metadata +} +``` + + ![File Layout - Encrypted footer](/images/FileLayoutEncryptionEF.png) + + +### 5.5 Plaintext footer mode +This mode allows legacy Parquet versions (released before the encryption support) to access +unencrypted columns in encrypted files - at a price of leaving certain metadata fields +unprotected in these files. + +The plaintext footer mode can be useful during a transitional period in organizations where +some frameworks can't be upgraded to a new Parquet library for a while. Data writers will +upgrade and run with a new Parquet version, producing encrypted files in this mode. Data +readers working with sensitive data will also upgrade to a new Parquet library. But other +readers that don't need the sensitive columns, can continue working with an older Parquet +version. They will be able to access plaintext columns in encrypted files. A legacy reader, +trying to access a sensitive column data in an encrypted file with a plaintext footer, will +get an exception. More specifically, a Thrift parsing exception on an encrypted page header +structure. Again, using legacy Parquet readers for encrypted files is a temporary solution. + +In the plaintext footer mode, the `optional ColumnMetaData meta_data` is set in the `ColumnChunk` +structure for all columns, but is stripped of the statistics for the sensitive (encrypted) +columns. These statistics are available for new readers with the column key - they decrypt +the `encrypted_column_metadata` field, described in the section 5.3, and parse it to get statistics +and all other column metadata values. The legacy readers are not aware of the encrypted metadata field; +they parse the regular (plaintext) field as usual. While they can't read the data of encrypted +columns, they read their metadata to extract the offset and size of encrypted column data, +required for column chunk vectorization. + +The plaintext footer is signed in order to prevent tampering with the +`FileMetaData` contents. The footer signing is done by encrypting the serialized `FileMetaData` +structure with the +AES GCM algorithm - using a footer signing key, and an AAD constructed according to the instructions +of the section 4.4. Only the nonce and GCM tag are stored in the file – as a 28-byte +fixed-length array, written right after the footer itself. The ciphertext is not stored, +because it is not required for footer integrity verification by readers. + +| nonce (12 bytes) | tag (16 bytes) | +|------------------|-----------------| + + +The plaintext footer mode sets the following fields in the the FileMetaData structure: + +```c +struct FileMetaData { +... + /** + * Encryption algorithm. This field is set only in encrypted files + * with plaintext footer. Files with encrypted footer store algorithm id + * in FileCryptoMetaData structure. + */ + 8: optional EncryptionAlgorithm encryption_algorithm + + /** + * Retrieval metadata of key used for signing the footer. + * Used only in encrypted files with plaintext footer. + */ + 9: optional binary footer_signing_key_metadata +} +``` + +The `FileMetaData` structure is Thrift-serialized and written to the output stream. +The 28-byte footer signature is written after the plaintext footer, followed by a 4-byte little endian integer +that contains the combined length of the footer and its signature. A final magic string, +"PAR1", is written at the end of the +file. The same magic string is written at the beginning of the file (offset 0). The magic bytes +for plaintext footer mode are ‘PAR1’ to allow legacy readers to read projections of the file +that do not include encrypted columns. + + ![File Layout - Encrypted footer](/images/FileLayoutEncryptionPF.png) + +## 6. Encryption Overhead +The size overhead of Parquet modular encryption is negligible, since most of the encryption +operations are performed on pages (the minimal unit of Parquet data storage and compression). +The overhead order of magnitude is adding 1 byte per each ~30,000 bytes of original +data - calculated by comparing the page encryption overhead (nonce + tag + length = 32 bytes) +to the default page size (1 MB). This is a rough estimation, and can change with the encryption +algorithm (no 16-byte tag in AES_GCM_CTR_V1) and with page configuration or data encoding/compression. + +The throughput overhead of Parquet modular encryption depends on whether AES enciphering is +done in software or hardware. In both cases, performing encryption on full pages (~1MB buffers) +instead of on much smaller individual data values causes AES to work at its maximal speed. diff --git a/content/en/docs/File Format/Data Pages/errorrecovery.md b/content/en/docs/File Format/Data Pages/errorrecovery.md index d1a3ac4..d84b90a 100644 --- a/content/en/docs/File Format/Data Pages/errorrecovery.md +++ b/content/en/docs/File Format/Data Pages/errorrecovery.md @@ -3,6 +3,16 @@ title: "Error Recovery" linkTitle: "Error Recovery" weight: 7 --- -If the file metadata is corrupt, the file is lost. If the column metadata is corrupt, that column chunk is lost (but column chunks for this column in other row groups are okay). If a page header is corrupt, the remaining pages in that chunk are lost. If the data within a page is corrupt, that page is lost. The file will be more resilient to corruption with smaller row groups. +If the file metadata is corrupt, the file is lost. If the column metadata is corrupt, +that column chunk is lost (but column chunks for this column in other row groups are +okay). If a page header is corrupt, the remaining pages in that chunk are lost. If +the data within a page is corrupt, that page is lost. The file will be more +resilient to corruption with smaller row groups. -Potential extension: With smaller row groups, the biggest issue is placing the file metadata at the end. If an error happens while writing the file metadata, all the data written will be unreadable. This can be fixed by writing the file metadata every Nth row group. Each file metadata would be cumulative and include all the row groups written so far. Combining this with the strategy used for orc or avro files using sync markers, a reader could recover partially written files. +Potential extension: With smaller row groups, the biggest issue is placing the file +metadata at the end. If an error happens while writing the file metadata, all the +data written will be unreadable. This can be fixed by writing the file metadata +every Nth row group. +Each file metadata would be cumulative and include all the row groups written so +far. Combining this with the strategy used for rc or avro files using sync markers, +a reader could recover partially written files. diff --git a/content/en/docs/File Format/Types/_index.md b/content/en/docs/File Format/Types/_index.md index a58e713..a079888 100644 --- a/content/en/docs/File Format/Types/_index.md +++ b/content/en/docs/File Format/Types/_index.md @@ -4,14 +4,19 @@ linkTitle: "Types" weight: 5 --- -The types supported by the file format are intended to be as minimal as possible, with a focus on how the types effect on disk storage. For example, 16-bit ints are not explicitly supported in the storage format since they are covered by 32-bit ints with an efficient encoding. This reduces the complexity of implementing readers and writers for the format. The types are: +The types supported by the file format are intended to be as minimal as possible, +with a focus on how the types effect on disk storage. For example, 16-bit ints +are not explicitly supported in the storage format since they are covered by +32-bit ints with an efficient encoding. This reduces the complexity of implementing +readers and writers for the format. The types are: ``` -BOOLEAN: 1 bit boolean -INT32: 32 bit signed ints -INT64: 64 bit signed ints -INT96: 96 bit signed ints -FLOAT: IEEE 32-bit floating point values -DOUBLE: IEEE 64-bit floating point values -BYTE_ARRAY: arbitrarily long byte arrays. + - BOOLEAN: 1 bit boolean + - INT32: 32 bit signed ints + - INT64: 64 bit signed ints + - INT96: 96 bit signed ints + - FLOAT: IEEE 32-bit floating point values + - DOUBLE: IEEE 64-bit floating point values + - BYTE_ARRAY: arbitrarily long byte arrays + - FIXED_LEN_BYTE_ARRAY: fixed length byte arrays ``` diff --git a/content/en/docs/File Format/Types/logicaltypes.md b/content/en/docs/File Format/Types/logicaltypes.md index e41c2e4..cd610a8 100644 --- a/content/en/docs/File Format/Types/logicaltypes.md +++ b/content/en/docs/File Format/Types/logicaltypes.md @@ -4,4 +4,10 @@ linkTitle: "Logical Types" weight: 5 --- -Logical types are used to extend the types that parquet can be used to store, by specifying how the primitive types should be interpreted. This keeps the set of primitive types to a minimum and reuses parquet’s efficient encodings. For example, strings are stored as byte arrays (binary) with a UTF8 annotation. These annotations define how to further decode and interpret the data. Annotations are stored as a ConvertedType in the file metadata and are documented in LogicalTypes.md. +Logical types are used to extend the types that parquet can be used to store, +by specifying how the primitive types should be interpreted. This keeps the set +of primitive types to a minimum and reuses parquet's efficient encodings. For +example, strings are stored as byte arrays (binary) with a UTF8 annotation. +These annotations define how to further decode and interpret the data. +Annotations are stored as `LogicalType` fields in the file metadata and are +documented in LogicalTypes.md. diff --git a/content/en/docs/File Format/_index.md b/content/en/docs/File Format/_index.md index c035857..7d49ccb 100644 --- a/content/en/docs/File Format/_index.md +++ b/content/en/docs/File Format/_index.md @@ -10,30 +10,36 @@ description: > This file and the thrift definition should be read together to understand the format. ``` -4-byte magic number "PAR1" - - -... - - - -... - -... - - -... - -File Metadata -4-byte length in bytes of file metadata -4-byte magic number "PAR1" + 4-byte magic number "PAR1" + + + ... + + + + ... + + ... + + + ... + + File Metadata + 4-byte length in bytes of file metadata (little endian) + 4-byte magic number "PAR1" ``` -In the above example, there are N columns in this table, split into M row groups. The file metadata contains the locations of all the column metadata start locations. More details on what is contained in the metadata can be found in the thrift files. +In the above example, there are N columns in this table, split into M row +groups. The file metadata contains the locations of all the column metadata +start locations. More details on what is contained in the metadata can be found +in the Thrift definition. Metadata is written after the data to allow for single pass writing. -Readers are expected to first read the file metadata to find all the column chunks they are interested in. The columns chunks should then be read sequentially. +Readers are expected to first read the file metadata to find all the column +chunks they are interested in. The columns chunks should then be read sequentially. -The format is explicitly designed to separate the metadata from the data. This allows splitting columns into multiple files, as well as having a single metadata file reference multiple parquet files. +The format is explicitly designed to separate the metadata from the data. This +allows splitting columns into multiple files, as well as having a single metadata +file reference multiple parquet files. ![File Layout](/images/FileLayout.gif) diff --git a/content/en/docs/File Format/bloomfilter.md b/content/en/docs/File Format/bloomfilter.md new file mode 100644 index 0000000..e4203b4 --- /dev/null +++ b/content/en/docs/File Format/bloomfilter.md @@ -0,0 +1,335 @@ +--- +title: "Bloom Filter" +linkTitle: "Bloom Filter" +weight: 7 +--- +### Problem statement +In their current format, column statistics and dictionaries can be used for predicate +pushdown. Statistics include minimum and maximum value, which can be used to filter out +values not in the range. Dictionaries are more specific, and readers can filter out values +that are between min and max but not in the dictionary. However, when there are too many +distinct values, writers sometimes choose not to add dictionaries because of the extra +space they occupy. This leaves columns with large cardinalities and widely separated min +and max without support for predicate pushdown. + +A [Bloom filter](https://en.wikipedia.org/wiki/Bloom_filter) is a compact data structure that +overapproximates a set. It can respond to membership queries with either "definitely no" or +"probably yes", where the probability of false positives is configured when the filter is +initialized. Bloom filters do not have false negatives. + +Because Bloom filters are small compared to dictionaries, they can be used for predicate +pushdown even in columns with high cardinality and when space is at a premium. + +### Goal +* Enable predicate pushdown for high-cardinality columns while using less space than + dictionaries. + +* Induce no additional I/O overhead when executing queries on columns without Bloom + filters attached or when executing non-selective queries. + +### Technical Approach + +The section describes split block Bloom filters, which is the first +(and, at time of writing, only) Bloom filter representation supported +in Parquet. + +First we will describe a "block". This is the main component split +block Bloom filters are composed of. + +Each block is 256 bits, broken up into eight contiguous "words", each +consisting of 32 bits. Each word is thought of as an array of bits; +each bit is either "set" or "not set". + +When initialized, a block is "empty", which means each of the eight +component words has no bits set. In addition to initialization, a +block supports two other operations: `block_insert` and +`block_check`. Both take a single unsigned 32-bit integer as input; +`block_insert` returns no value, but modifies the block, while +`block_check` returns a boolean. The semantics of `block_check` are +that it must return `true` if `block_insert` was previously called on +the block with the same argument, and otherwise it returns `false` +with high probability. For more details of the probability, see below. + +The operations `block_insert` and `block_check` depend on some +auxiliary artifacts. First, there is a sequence of eight odd unsigned +32-bit integer constants called the `salt`. Second, there is a method +called `mask` that takes as its argument a single unsigned 32-bit +integer and returns a block in which each word has exactly one bit +set. + +``` +unsigned int32 salt[8] = {0x47b6137bU, 0x44974d91U, 0x8824ad5bU, + 0xa2b7289dU, 0x705495c7U, 0x2df1424bU, + 0x9efc4947U, 0x5c6bfb31U} + +block mask(unsigned int32 x) { + block result + for i in [0..7] { + unsigned int32 y = x * salt[i] + result.getWord(i).setBit(y >> 27) + } + return result +} +``` + +Since there are eight words in the block and eight integers in the +salt, there is a correspondence between them. To set a bit in the nth +word of the block, `mask` first multiplies its argument by the nth +integer in the `salt`, keeping only the least significant 32 bits of +the 64-bit product, then divides that 32-bit unsigned integer by 2 to +the 27th power, denoted above using the C language's right shift +operator "`>>`". The resulting integer is between 0 and 31, +inclusive. That integer is the bit that gets set in the word in the +block. + +From the `mask` operation, `block_insert` is defined as setting every +bit in the block that was also set in the result from mask. Similarly, +`block_check` returns `true` when every bit that is set in the result +of `mask` is also set in the block. + +``` +void block_insert(block b, unsigned int32 x) { + block masked = mask(x) + for i in [0..7] { + for j in [0..31] { + if (masked.getWord(i).isSet(j)) { + b.getWord(i).setBit(j) + } + } + } +} +``` + +``` +boolean block_check(block b, unsigned int32 x) { + block masked = mask(x) + for i in [0..7] { + for j in [0..31] { + if (masked.getWord(i).isSet(j)) { + if (not b.getWord(i).setBit(j)) { + return false + } + } + } + } + return true +} +``` + +The reader will note that a block, as defined here, is actually a +special kind of Bloom filter. Specifically it is a "split" Bloom +filter, as described in section 2.1 of [Network Applications of Bloom +Filters: A +Survey](https://www.eecs.harvard.edu/~michaelm/postscripts/im2005b.pdf). The +use of multiplication by an odd constant and then shifting right is a +method of hashing integers as described in section 2.2 of +Dietzfelbinger et al.'s [A reliable randomized algorithm for the +closest-pair +problem](http://hjemmesider.diku.dk/~jyrki/Paper/CP-11.4.1997.pdf). + +This closes the definition of a block and the operations on it. + +Now that a block is defined, we can describe Parquet's split block +Bloom filters. A split block Bloom filter (henceforth "SBBF") is +composed of `z` blocks, where `z` is greater than or equal to one and +less than 2 to the 31st power. When an SBBF is initialized, each block +in it is initialized, which means each bit in each word in each block +in the SBBF is unset. + +In addition to initialization, an SBBF supports an operation called +`filter_insert` and one called `filter_check`. Each takes as an +argument a 64-bit unsigned integer; `filter_check` returns a boolean +and `filter_insert` does not return a value, but does modify the SBBF. + +The `filter_insert` operation first uses the most significant 32 bits +of its argument to select a block to operate on. Call the argument +"`h`", and recall the use of "`z`" to mean the number of blocks. Then +a block number `i` between `0` and `z-1` (inclusive) to operate on is +chosen as follows: + +```c +unsigned int64 h_top_bits = h >> 32; +unsigned int64 z_as_64_bit = z; +unsigned int32 i = (h_top_bits * z_as_64_bit) >> 32; +``` + +The first line extracts the most significant 32 bits from `h` and +assignes them to a 64-bit unsigned integer. The second line is +simpler: it just sets an unsigned 64-bit value to the same value as +the 32-bit unsigned value `z`. The purpose of having both `h_top_bits` +and `z_as_64_bit` be 64-bit values is so that their product is a +64-bit value. That product is taken in the third line, and then the +most significant 32 bits are extracted into the value `i`, which is +the index of the block that will be operated on. + + +After this process to select `i`, `filter_insert` uses the least +significant 32 bits of `h` as the argument to `block_insert` called on +block `i`. + +The technique for converting the most significant 32 bits to an +integer between `0` and `z-1` (inclusive) avoids using the modulo +operation, which is often very slow. This trick can be found in +[Kenneth A. Ross's 2006 IBM research report, "Efficient Hash Probes on +Modern Processors"]( +https://domino.research.ibm.com/library/cyberdig.nsf/papers/DF54E3545C82E8A585257222006FD9A2/$File/rc24100.pdf) + +The `filter_check` operation uses the same method as `filter_insert` +to select a block to operate on, then uses the least significant 32 +bits of its argument as an argument to `block_check` called on that +block, returning the result. + +In the pseudocode below, the modulus operator is represented with the C +language's "`%`" operator. The "`>>`" operator is used to denote the +conversion of an unsigned 64-bit integer to an unsigned 32-bit integer +containing only the most significant 32 bits, and C's cast operator +"`(unsigned int32)`" is used to denote the conversion of an unsigned +64-bit integer to an unsigned 32-bit integer containing only the least +significant 32 bits. + +``` +void filter_insert(SBBF filter, unsigned int64 x) { + unsigned int64 i = ((x >> 32) * filter.numberOfBlocks()) >> 32; + block b = filter.getBlock(i); + block_insert(b, (unsigned int32)x) +} +``` + +``` +boolean filter_check(SBBF filter, unsigned int64 x) { + unsigned int64 i = ((x >> 32) * filter.numberOfBlocks()) >> 32; + block b = filter.getBlock(i); + return block_check(b, (unsigned int32)x) +} +``` + +The use of blocks is from Putze et al.'s [Cache-, Hash- and +Space-Efficient Bloom +filters](http://algo2.iti.kit.edu/documents/cacheefficientbloomfilters-jea.pdf) + +To use an SBBF for values of arbitrary Parquet types, we apply a hash +function to that value - at the time of writing, +[xxHash](https://cyan4973.github.io/xxHash/), using the function XXH64 +with a seed of 0 and [following the specification version +0.1.1](https://github.com/Cyan4973/xxHash/blob/v0.7.0/doc/xxhash_spec.md). + +#### Sizing an SBBF + +The `check` operation in SBBFs can return `true` for an argument that +was never inserted into the SBBF. These are called "false +positives". The "false positive probabilty" is the probability that +any given hash value that was never `insert`ed into the SBBF will +cause `check` to return `true` (a false positive). There is not a +simple closed-form calculation of this probability, but here is an +example: + +A filter that uses 1024 blocks and has had 26,214 hash values +`insert`ed will have a false positive probabilty of around 1.26%. Each +of those 1024 blocks occupies 256 bits of space, so the total space +usage is 262,144. That means that the ratio of bits of space to hash +values is 10-to-1. Adding more hash values increases the denominator +and lowers the ratio, which increases the false positive +probability. For instance, inserting twice as many hash values +(52,428) decreases the ratio of bits of space per hash value inserted +to 5-to-1 and increases the false positive probability to +18%. Inserting half as many hash values (13,107) increases the ratio +of bits of space per hash value inserted to 20-to-1 and decreases the +false positive probability to 0.04%. + +Here are some sample values of the ratios needed to achieve certain +false positive rates: + +| Bits of space per `insert` | False positive probability | +| -------------------------- | -------------------------- | +| 6.0 | 10 % | +| 10.5 | 1 % | +| 16.9 | 0.1 % | +| 26.4 | 0.01 % | +| 41 | 0.001 % | + +#### File Format + +Each multi-block Bloom filter is required to work for only one column chunk. The data of a multi-block +bloom filter consists of the bloom filter header followed by the bloom filter bitset. The bloom filter +header encodes the size of the bloom filter bit set in bytes that is used to read the bitset. + +Here are the Bloom filter definitions in thrift: + + +``` +/** Block-based algorithm type annotation. **/ +struct SplitBlockAlgorithm {} +/** The algorithm used in Bloom filter. **/ +union BloomFilterAlgorithm { + /** Block-based Bloom filter. **/ + 1: SplitBlockAlgorithm BLOCK; +} + +/** Hash strategy type annotation. xxHash is an extremely fast non-cryptographic hash + * algorithm. It uses 64 bits version of xxHash. + **/ +struct XxHash {} + +/** + * The hash function used in Bloom filter. This function takes the hash of a column value + * using plain encoding. + **/ +union BloomFilterHash { + /** xxHash Strategy. **/ + 1: XxHash XXHASH; +} + +/** + * The compression used in the Bloom filter. + **/ +struct Uncompressed {} +union BloomFilterCompression { + 1: Uncompressed UNCOMPRESSED; +} + +/** + * Bloom filter header is stored at beginning of Bloom filter data of each column + * and followed by its bitset. + **/ +struct BloomFilterPageHeader { + /** The size of bitset in bytes **/ + 1: required i32 numBytes; + /** The algorithm for setting bits. **/ + 2: required BloomFilterAlgorithm algorithm; + /** The hash function used for Bloom filter. **/ + 3: required BloomFilterHash hash; + /** The compression used in the Bloom filter **/ + 4: required BloomFilterCompression compression; +} + +struct ColumnMetaData { + ... + /** Byte offset from beginning of file to Bloom filter data. **/ + 14: optional i64 bloom_filter_offset; +} + +``` + +The Bloom filters are grouped by row group and with data for each column in the same order as the file schema. +The Bloom filter data can be stored before the page indexes after all row groups. The file layout looks like: + ![File Layout - Bloom filter footer](/images/FileLayoutBloomFilter2.png) + +Or it can be stored between row groups, the file layout looks like: + ![File Layout - Bloom filter footer](/images/FileLayoutBloomFilter1.png) + +#### Encryption +In the case of columns with sensitive data, the Bloom filter exposes a subset of sensitive +information such as the presence of value. Therefore the Bloom filter of columns with sensitive +data should be encrypted with the column key, and the Bloom filter of other (not sensitive) columns +do not need to be encrypted. + +Bloom filters have two serializable modules - the PageHeader thrift structure (with its internal +fields, including the BloomFilterPageHeader `bloom_filter_page_header`), and the Bitset. The header +structure is serialized by Thrift, and written to file output stream; it is followed by the +serialized Bitset. + +For Bloom filters in sensitive columns, each of the two modules will be encrypted after +serialization, and then written to the file. The encryption will be performed using the AES GCM +cipher, with the same column key, but with different AAD module types - "BloomFilter Header" (8) +and "BloomFilter Bitset" (9). The length of the encrypted buffer is written before the buffer, as +described in the Parquet encryption specification. diff --git a/content/en/docs/File Format/configurations.md b/content/en/docs/File Format/configurations.md index db32e86..9e21955 100644 --- a/content/en/docs/File Format/configurations.md +++ b/content/en/docs/File Format/configurations.md @@ -5,7 +5,17 @@ weight: 5 --- ### Row Group Size -Larger row groups allow for larger column chunks which makes it possible to do larger sequential IO. Larger groups also require more buffering in the write path (or a two pass write). We recommend large row groups (512MB - 1GB). Since an entire row group might need to be read, we want it to completely fit on one HDFS block. Therefore, HDFS block sizes should also be set to be larger. An optimized read setup would be: 1GB row groups, 1GB HDFS block size, 1 HDFS block per HDFS file. +Larger row groups allow for larger column chunks which makes it +possible to do larger sequential IO. Larger groups also require more buffering in +the write path (or a two pass write). We recommend large row groups (512MB - 1GB). +Since an entire row group might need to be read, we want it to completely fit on +one HDFS block. Therefore, HDFS block sizes should also be set to be larger. An +optimized read setup would be: 1GB row groups, 1GB HDFS block size, 1 HDFS block +per HDFS file. ### Data Page Size -Data pages should be considered indivisible so smaller data pages allow for more fine grained reading (e.g. single row lookup). Larger page sizes incur less space overhead (less page headers) and potentially less parsing overhead (processing headers). Note: for sequential scans, it is not expected to read a page at a time; this is not the IO chunk. We recommend 8KB for page sizes. +Data pages should be considered indivisible so smaller data pages +allow for more fine grained reading (e.g. single row lookup). Larger page sizes +incur less space overhead (less page headers) and potentially less parsing overhead +(processing headers). Note: for sequential scans, it is not expected to read a page +at a time; this is not the IO chunk. We recommend 8KB for page sizes. \ No newline at end of file diff --git a/content/en/docs/File Format/extensibility.md b/content/en/docs/File Format/extensibility.md index f9fd61f..4d91d4f 100644 --- a/content/en/docs/File Format/extensibility.md +++ b/content/en/docs/File Format/extensibility.md @@ -5,7 +5,6 @@ weight: 5 --- There are many places in the format for compatible extensions: - -File Version: The file metadata contains a version. -Encodings: Encodings are specified by enum and more can be added in the future. -Page types: Additional page types can be added and safely skipped. +- File Version: The file metadata contains a version. +- Encodings: Encodings are specified by enum and more can be added in the future. +- Page types: Additional page types can be added and safely skipped. diff --git a/content/en/docs/File Format/metadata.md b/content/en/docs/File Format/metadata.md index cd8f8f2..0e5e19b 100644 --- a/content/en/docs/File Format/metadata.md +++ b/content/en/docs/File Format/metadata.md @@ -3,6 +3,7 @@ title: "Metadata" linkTitle: "Metadata" weight: 5 --- -There are three types of metadata: file metadata, column (chunk) metadata and page header metadata. All thrift structures are serialized using the TCompactProtocol. +There are three types of metadata: file metadata, column (chunk) metadata and page +header metadata. All thrift structures are serialized using the TCompactProtocol. ![File Layout](/images/FileFormat.gif) diff --git a/content/en/docs/File Format/nestedencoding.md b/content/en/docs/File Format/nestedencoding.md index 3304365..c855ddc 100644 --- a/content/en/docs/File Format/nestedencoding.md +++ b/content/en/docs/File Format/nestedencoding.md @@ -3,6 +3,12 @@ title: "Nested Encoding" linkTitle: "Nested Encoding" weight: 6 --- -To encode nested columns, Parquet uses the Dremel encoding with definition and repetition levels. Definition levels specify how many optional fields in the path for the column are defined. Repetition levels specify at what repeated field in the path has the value repeated. The max definition and repetition levels can be computed from the schema (i.e. how much nesting there is). This defines the maximum number of bits required to store the levels (levels are defined for all values in the column). +To encode nested columns, Parquet uses the Dremel encoding with definition and +repetition levels. Definition levels specify how many optional fields in the +path for the column are defined. Repetition levels specify at what repeated field +in the path has the value repeated. The max definition and repetition levels can +be computed from the schema (i.e. how much nesting there is). This defines the +maximum number of bits required to store the levels (levels are defined for all +values in the column). -Two encodings for the levels are supported BITPACKED and RLE. Only RLE is now used as it supersedes BITPACKED. +Two encodings for the levels are supported BIT_PACKED and RLE. Only RLE is now used as it supersedes BIT_PACKED. diff --git a/content/en/docs/File Format/nulls.md b/content/en/docs/File Format/nulls.md index 5327c0f..ada3d17 100644 --- a/content/en/docs/File Format/nulls.md +++ b/content/en/docs/File Format/nulls.md @@ -3,4 +3,7 @@ title: "Nulls" linkTitle: "Nulls" weight: 7 --- -Nullity is encoded in the definition levels (which is run-length encoded). NULL values are not encoded in the data. For example, in a non-nested schema, a column with 1000 NULLs would be encoded with run-length encoding (0, 1000 times) for the definition levels and nothing else. +Nullity is encoded in the definition levels (which is run-length encoded). NULL values +are not encoded in the data. For example, in a non-nested schema, a column with 1000 NULLs +would be encoded with run-length encoding (0, 1000 times) for the definition levels and +nothing else. diff --git a/content/en/docs/File Format/pageindex.md b/content/en/docs/File Format/pageindex.md new file mode 100644 index 0000000..500c797 --- /dev/null +++ b/content/en/docs/File Format/pageindex.md @@ -0,0 +1,85 @@ +--- +title: "Page Index" +linkTitle: "Page Index" +weight: 7 +--- +This document describes the format for column index pages in the Parquet +footer. These pages contain statistics for DataPages and can be used to skip +pages when scanning data in ordered and unordered columns. + +## Problem Statement +In previous versions of the format, Statistics are stored for ColumnChunks in +ColumnMetaData and for individual pages inside DataPageHeader structs. When +reading pages, a reader had to process the page header to determine +whether the page could be skipped based on the statistics. This means the reader +had to access all pages in a column, thus likely reading most of the column +data from disk. + +## Goals +1. Make both range scans and point lookups I/O efficient by allowing direct + access to pages based on their min and max values. In particular: + * A single-row lookup in a row group based on the sort column of that row group + will only read one data page per the retrieved column. + * Range scans on the sort column will only need to read the exact data + pages that contain relevant data. + * Make other selective scans I/O efficient: if we have a very selective + predicate on a non-sorting column, for the other retrieved columns we + should only need to access data pages that contain matching rows. +2. No additional decoding effort for scans without selective predicates, e.g., + full-row group scans. If a reader determines that it does not need to read + the index data, it does not incur any overhead. +3. Index pages for sorted columns use minimal storage by storing only the + boundary elements between pages. + +## Non-Goals +* Support for the equivalent of secondary indices, i.e., an index structure + sorted on the key values over non-sorted data. + + +## Technical Approach + +We add two new per-column structures to the row group metadata: +* ColumnIndex: this allows navigation to the pages of a column based on column + values and is used to locate data pages that contain matching values for a + scan predicate +* OffsetIndex: this allows navigation by row index and is used to retrieve + values for rows identified as matches via the ColumnIndex. Once rows of a + column are skipped, the corresponding rows in the other columns have to be + skipped. Hence the OffsetIndexes for each column in a RowGroup are stored + together. + +The new index structures are stored separately from RowGroup, near the footer. +This is done so that a reader does not have to pay the I/O and deserialization +cost for reading them if it is not doing selective scans. The index structures' +location and length are stored in ColumnChunk. + + ![Page Index Layout](/images/PageIndexLayout.png) + +Some observations: +* We don't need to record the lower bound for the first page and the upper + bound for the last page, because the row group Statistics can provide that. + We still include those for the sake of uniformity, and the overhead should be + negligible. +* We store lower and upper bounds for the values of each page. These may be the + actual minimum and maximum values found on a page, but can also be (more + compact) values that do not exist on a page. For example, instead of storing + ""Blart Versenwald III", a writer may set `min_values[i]="B"`, + `max_values[i]="C"`. This allows writers to truncate large values and writers + should use this to enforce some reasonable bound on the size of the index + structures. +* Readers that support ColumnIndex should not also use page statistics. The + only reason to write page-level statistics when writing ColumnIndex structs + is to support older readers (not recommended). + +For ordered columns, this allows a reader to find matching pages by performing +a binary search in `min_values` and `max_values`. For unordered columns, a +reader can find matching pages by sequentially reading `min_values` and +`max_values`. + +For range scans, this approach can be extended to return ranges of rows, page +indices, and page offsets to scan in each column. The reader can then +initialize a scanner for each column and fast forward them to the start row of +the scan. + +The `min_values` and `max_values` are calculated based on the `column_orders` +field in the `FileMetaData` struct of the footer. diff --git a/static/images/FileLayoutBloomFilter1.png b/static/images/FileLayoutBloomFilter1.png new file mode 100644 index 0000000000000000000000000000000000000000..3b21738ec7d67f3ce68b48bcc6d2ad36fe59d50b GIT binary patch literal 44025 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:Ni@|` z=pg&AohaJ`&EtGeemCvnZ-6?*OYOGTi#-vsggi|lh5*hl>vg4y;&I~WOuzDHdz|m! z84JI3fLya3U^Qvoo*)K@nx{@)>6RV4#A@UVCf)}=J{yCtVW<1K5PkdWea@o&`SDog#{5k=gsDZ`t5*-M{5=Ba zXG;9RCkaVn!~(2Yobs^t`<3Z8YPbpM@iit1J^_OVR~}A=`?$#14u)-G9A0m`L~R5O zLh5NAy#n8g(Mi)I-#!ihsFT-&M~FMKAMfOvQj5{UdSh|^9JBL#^wuX@^@GxZO**A| z_f{y;x$*WPrJNl2(X$jy6y-w38zcFvAFQIREMU++rCLJ0LkIMQSW$Pe9qny5mLsAb zOIE9WpnvqfL}L6jhD6251Y=F2_xu!B9xQhwT+`by<^o6D6Ib|HFcg_v?2GzLf|I2z z{Wab73N=lUV(U6m>*k|L~fv|*^UlS+z?+%A4PoOnnN?KAlY%g%46 z$i}ZscYXRKF=S#cC`v8+&VWRBt`QeHH_UzAgt;ohL@6*SzMnLU{WFd|#_W8cO=gEv zw;ySvvdcfwocBgRckw{v#swm`>!uM0tb+Whf?U$QX7iHJp8Tg82ceupzoI7hU(K4$ zU72bFl5W0=eYc%f4tji0t;;H2gZCjD4X7g>zwj|o z={KG@aFskb2nbcY7bQn0bVYAEn8k^e`UgEuZ{Xb*q;6)alrIm^G)MinPw-s z8wa-Ty6GewjS=ZCE&|<*a&`YCbcz+)od0p|;+JkW?HIN(84#0CAQm;SHxebAbsWgF zl7$BYC<(HEb^HFt=U&~SbyZyu(s_xXn7A^W^@=~vWKmKoi{t(u?uYW{{moo$>JCvs(fA`{UUp^tw zwaV{7Modp093FT!U97Q4xwAC2DF57YVixv#)azEC2iQOm0ArA(_fz3>^6+-41Dou0 zTK{TQ6nmrdL8ir(JHhc=!o(#WC2q(^T>^lE4mgkNatfruaaQaMUxBir#59d~@`~Jk z6Ms%ms}H&@E2ZG;03;E+-1_1K{n&>U6*n6^5Q6)AhJ}8imUTjJO9?^AS!q4|2 zan{ug@i5`lbuxAjE+toetI4&!?bD+Q4th~{ zYvfmQ4Unj!Pu;m`2@iGWC}v3-PZIJ0La(m?6JTNnr#JLNo15;9f0_R7CW)j_8E_|u z(Xv}$3PQw4k|@=nP2nnDQrsm4IT+!qW6~-y~L{R4|PL( znZqZzKc#S9v#(3xpu^CCXPWQ4-1qzFcfxTYTg?~NIhuRPUKuVf<&8TZ$ZUU`QOHIZ z#y`h0fi4Tw1vDNF*A4n{>Z1J=seIrk5*qDa8Bypk+@@5biy+OfT*zx<9J>4ayIPLC z=uevZJ+JW$^;XS#B+cWd4B!lBwmUSGW%dLVoq#~XSxsBQnm^s@_lV>Lt3C+i({1LT z2}V9{qC=Oac9|*)ecJX`XOl7{g#0cK84ZtuOl*lQO|&)T;{Ubg14`pMin&v3K+TOk zUC`lC-Nf|G1Vq2duUSOrJzkn*Wl~}LCyxY3aC*h#rK}0cPSzRfB5{m8$N&ZGk4t_*2j8^0 zKS(Dh7;@ArT7K+aw1~C*rt^G^sX23*7qWD+zKEB&2dv%^>$hODx$1`hx!?t6sp6IV zlm;Nte|KY~*raZJS}nsv?-yl4bVgU#ApGauiru+vobYRWSQI#^n-`E3moiin{8no+ zzE(N>irFY{z)LLQcAbpr(ZXJY{_o>naKmmIh!gVBH}Ug0Htj<;TyhIi*b^ewl7rH6 ze9;N8>5gb-YBe>XH1RWgM6h^o6(KHNw;MLJUCD69dwML?ltS{b4T0=EHVq(7ZsSe2 zYN%hk&OoE~AqY3bmS<;8E$BbXZ?3)5tR{&YX#fZz~0`-27URe=SZ4WXgIK2VacKa-x zZ|4x~T!jA6WYb$29pHes=^Fx3TXS?+JB>O_OBFane&!??>`6O0 zYFqwEi0|TamQKn~Yl1c>+w{Is=v@6e*)oT*lB*><0gsS<1Ti2Sqc^X^N!qyY>csZp z99#BXn=fSrj>iem9HcrpRHFlssEU=2yODv;$K%>I($4BFD5%4p6%##iWu(4@Cm>V~U zXde5f7u_OfMfq`Ld@dtUi*6O94!X%7a=K4y9Da$Ey3$AFY2T`W=db1RLFJ9FU2Gj0 zkA0PDNyaSB3R^2}o*UH%#QRxpJl82avWJJ)q8A(>S4ldzM$^ru*$GOnVj{mPl-Kj% z${!gCgbv1{2Bdio1z6ffBor3@i`!M{CrY*O5~uto(?@kB>f75dJWd@~_#q?cxC6WZ zdjbor@CWWg0!(~AW{gepKH13=i9XX$Y0Ts5fer8^a(s*{d?z7m zi@9elWDkEV=lR-6?|FEp-=d=^78`L}09)@lW*I8?Kxr@8#IvVeZTn+sM|MUgb0l4b zkBAnne?Jk=YKUaxI(svJUH`#}TrV}Toyi4v>T@$g*QKV^s1=4&c>d`=ovB+-Mqp*Q zuS9(2=0UkoyRQI~-BdSvk6C6=_DH*fuBk4=@#mt&$YiQuxTVMitBM3HH$z`fZM=R4 z?vAU+=W#p}lTph%7N=V_cjW#)A^1?8tj~KCdv-^%H=RyJaO0PxO~x53j>5Lv^rsTL z?GIBeCQ9g7;#XX(pnMmRme1CSltYg?|usq+pDm4;a9@!kt z%9z%&wW*vx-^=*hrNqYO%SN}F`A0c@6KTw9dFmhPm2MQLTT@qy|=$#h)TPjH+cS+4HBF+#%Jws_Zgp|edSTPU{}Ke zV>67vl3vx~E091P01Y16H5t#)2H@?*JxxKz;d$39(~K>?d_Hpt8(R>wee~v`)NY^+xt*%bSGO}Unn{{)#AcYHHM;uwrz6Z>T-uQ8K;k=Kx)Hfhg~UZ zACYw*T?0((P*bA6!-h?AG(M{`;AGddH?Dz<8bce(b0&V7hHXrJ^!yK3@+W1s>z}rp zTcbiZeULtM8tQ)ofgFGP>NKG`eoZ!ER`M9B> zw75~X40I!LRO!7}UVOglJ6a)hl2Hv_LXMD!c_v_`dTvhBEK21po2U~6r$1KgSXGZt z4$-D>CV;v8)WulTi~R~tRu3_BJw;fjWnqzXFpayTtzG05@OXxr zILLwhv^+z{apcbp3z`l8+i5q7D&Tef*QSZM8!QjtLQ~#ewN6tIkPnxGkuGmd9jDio zR(do8Tk*dK2zfm69mwMw=r|2=1Q#Q~QKgJ}6{|66cO+El521LH-x?92amd7jiGbkE z&t^OdI}%>rf!LiM*~n41v9iJ6^C2Cn6OgvUbvO9*e#e zty1WVA~d>=qgqXk>>bD3296}hZvm+>0XEY(9#u`M*Xh9Z428&6Vf;>>Ii?37{_zDH z>F3?gxT7dw7gZ9ND}5cA1}i)~mUmr|}dbP2nbZE|E3}19L_OYO&G95K;GO>D<9y#P3G%wC1m6DZXeQviVHeCA;ODs8Fdk)|dgms^a@IsvVWy1^ZpOsabcIlcIIcxl@q?>O<}p3s*|!kIs- z6hEYM0uFGH8=tx)Z0RUzul1CQKionb?hPBgD=FCcg!n3LeoJS$7I4v+b$OM~0%xl! ziIIwL-52*q9`cKG9U$)I(7wm2%D_OUWMs?Gmn^XItGJ2wfD@e#3Gg5P`ID;H zs7_DnUVDl#hAJ@2q{A)UF~^F0{NHGPXPnQ39Z|Rv8b}1Q)}Pdt7FW+vwm-f zlAre#labkI2IeK|4fNHhy??#U`d8$xY^0A~cR-m!E=87R?%(`IF*Zd)w$!A_e;YIx za&E{^{Jqrq?irZ3bej3{V*B^^EY315+gNL}dUP2Oa}LRDc3Qw}wt4perWqDzG~1YZfBzY`_^(F`0EKmMJyt*Jmq!41^3o;pp+#9ALq07AHY=AV~8 z5BoN5H)kq~y8r$L1**Lie&lGn{b!}!QL7Axe{YBh?tqQis98$aAwjF!eHYpxg&>{9 zO}_+xUiP{b`P?DmU#G$3P(4})#s|#R*4BR3dbBLG8}S@{HL#?AqfMaZYK}VI%cFAq zS&}*Hv?8LPKUr?s7gl9I`u;aYKMxo?w8eL?N@*A>(9eCUC|5n;v_>`s)ZcQJd|EFH z-4??HsKCXcx8KCNrPD%pT;4U$guEc@eF^B+G!#savw@gqcVKMqAA>|Qv3A$EUYL%q zwhsR$f(f3)$L4_3Pl**4h4z)`!ZiAz2-S=-t*b#tykmJkmuq_+q93Bd3B*#FKQ-Odh=v9R<9&mPElYozFK6ml4b$_+zLC8&bK6 z7k%kaoN-I)RB@PV@&-$bsqII=qi+Y@$m`dGo@0WKzprhFO@cDBAp}E2)*QVMQM=lB z8(``lT1(mS;8x)Oeb%b0PoyDFj@vyI2w1`J#xOS3#5cx4U~U$NJUaUQQ*G4B!=YX5 z%f71GG`;bNzzB3lKe{Y=vQ|FWUH#nr+VsYD($9cqtV`6qIjXIR^yrnp-F(TAAm{2Y zx)aC`rh82n5~_iR}5&^ZZy!<-Fplne~rNdmn(&QOrI2P2+C=>fWZtDLV|+r zU=OSekF>Zu9F74DVj|#77Kjn0?Sy8c+C7H zi;1eMQB1bdb(W+gbK97EN-x=Lw)nndw9TU({mMgd2N@DIV;I1A6vq<=+P*Jf2IO^8 zT4A2XnU^$3jVbrtsj(3B*dciA!6d0d1l6{ygTp$Fg!eAAn6bh{sjQm%*{6d!palUw z4-?bmT7?W+#9I(=qyMTZ5T8y^-eS*99at}ZVUr=g`%T8l1hx=Yj2_9-1{&;9CE%I$ zyH23`F-x)bioD!i)hxRH^?%e=Wkr`QowjG&ma)hu{E7^d-|xJ*Z)9X79&qY=sf*X4 z9~h0ffYYS_{{XPgO^W6R0eZT+DAw-eI}maUwYN(w)XN=-VB?~zV;^uG_lp{jS3W}u zgQP8jNHhr+Rj}n>du}`#G)z=q?d5|b13)tj3Y8f`f4m7^@6dBcvVpxTN$KTb^f?iN zjEsHe{KO4Z`J=qg5Gr3f>xi$lkGJqg?(&&B`2^PHh&O8ifj;u#^x{xwai9(AIHg)IW(m4woNhLNO^x)}ksL4DjbE~w zHK9F9=+CuPO?p|XjMmw8+84b8q_li~(Rv^4ED%0${IMn%e!b1_cvmS`?J1XOvC6_? zxCwIhge}c|V0CC{sA>IsRtG$8a_3Cd9HsAH(L<&Eayjfe13H`(0*50zHlOW+IlHVH z`1$c|Stzi!ByV-444V8=3fj5qC^yhU!f5+N=z`0ak* z2HNa&;)T8P&XVACc+z|S&J0lf>XkO|myQP1k0&J{8$jcKK4m;_!EK08#?qbk2bXot}bi>7GPq)~TW%(52c`Lkr zlh!|JdG5}U2c`;q7;-CCv6)Y{D>_1%hS2R7Nb@b>Ddi&-H3J{_6b7VL>66U2qedA} z;{G#xQ?y&J&)gs=58v$}p`0j4)nQCS6}Mi|zKlsETEAk*MMHCXjy~)SQQuV06etIhbnWj&(a% z$+ls0H-ef^i_Eyp{FPcq-Ihv9I2d{Bg|-#myT7;R<|W*77?=s2AM;I@Jli%R4aijj z59&8NA3Mepc^B^snpsp7`8~BMquwj$ zczecb_7srtN5@_BYtUF7hdml{VC~5(@<*r8zaPHDFH3_hajVJ25#Eh~4I>eAV}cH& zMl%*-_OaJgrg9_28oTZZunqPRY>@_R>-i3;oyE|z4Qcz6;6%J#%6>a%W^m<6?utAuFX#qdyQ`N*;<{rL7=N3M(d_%JZN$diOn`LogoV+rjtya}`E#ANoV94u;~Wc|zK{mLmvWwe@dfna1JI>PUy zd8#mU9ee(sR=4O}RK{E7TdO(;g-TV_=6u0~wv9EsI1wx%W`up=(OT$aJVxy&=K#kK0{?sY58l$su^K2ov(>=xkoM^!Umv9eE*0q`}C@S(7Bbz#jIp|h|a3NL2A7ba&CT+r%7ox-L8+lc; z-{#+rc{RUKkj{^~{G|(yKOJhOug>bYn2+8Yl^+K3SpS`^Q zvG5)<$H+9CTiRup(90I$6KrTQ(}WHp1UCOfx3K zY#j1xJY4uzDWNmfS5E%1MU!A&?q+=Ut2Duqom@Qt$N#$FHX|$(Fyo9| zvs<)+JMezfcLT-TGPQKllN^pdv;DzTEas_9Cm!7cWW`Jcf2JNjKtLYKeobkJSq|zl zY*D0RzR79p&;uGf=fFVQY~9_qa7xZEC)OL{V21aUKJdC+FpXY>SquDYKRqsyL6-C@ zET$&Y2duJj83z3b)A_{``Y%-gy|vL^E+J8S_L%%hFgJJd33Kz2E$7)w_Q>a0Avs-{ zQ7(m$i_PeYh)h@* z*9>JY4oi2B3i=g}${!8{vQC}c&^(v$1p(zU7?q9AZ4&jC-&Ue%jKo5DM!vyLgM~}QVJuK~UZIt+F{3dzt4$rKs8)B*Qv$~rpU2r)R;&8dx z%;XX;sf$}j*PJt#>DY;nJ%2{OM$221en|u>FlAMx*ZUs>qVH<@*=&)>xY4&}r!oU% z2R`UAI@u#pc{#N{0;tL{$E+Ge6CH4RXLn%?5!+e!Yaa!Q@$J%8t|Y1LeJ+NDox^~) zn~k_!RnPd$+KE&4=%@Emz%Uj=ef@;fu?g8k!b1>T?bPMx=TET)oDm`M-+-jWba!rp z>pnlFlgiLI2L1!a`u2;UqQNQoBmW0^*Hx8OudwZhAJ2Po^BN?Ck}#&PmRsc z0WhCm@fs)O{s|y;zw!(6zmi<}n8hJIUdy{%VEKzh77Au2E>jXOKtXB6Aq<4komF5q z2}*j$OR}@7_FP~@R+d9~Qm^n~wBUkKwR7gswCBfkR|#rod(hy!4JM0rTM}k-f+=KK zXe;2>dDHURP(2nF=Vv8ZDV-3*mB)q{0vAx~qF`?hmMU$JVql1(72$0J=~~>VXD52| zgOSJ|m=y*!64`^5J)A$!3wzz#Iq8{q@=0}a`ZG&9R0j;lcu@L*n){5SbbaJUs{fY@ zmq=6>lRlsie z1FFczRT7Lypnj|Y6h$g6^um1G%eh0Ov`?Y3q3TUCwKIGeUFZI(h2PeZa3HPi1KI2 z^0kqw!N6tC-lIpvEq8wR9c})sqcbgL8vrJ`%NRa>e4_5*vFFh>$oDH-C}$`a6Y^0}58l3)HUK1l<}T4g z-wlo2dGz@=I%$W<3c}(EuTR&}pQ;;9l(W){oB!O15cbsZ1(g!9+xHGJPSZS$mLJTx{3rCN+JC}ioSn%lT^A1q^ zg%vk8o(9N8?%bKUA4v8CS(f6|AV$#2_U+sGmbJEpe56TTw`5X0r2{wruiEzHV) ze|&d)kQ;S}Vrzd~k~jQEWiA$C;lhw>n-)lr(GheQNfwnhs3)1dWR~-Cb#tHhLLP3T zO~sqZ!vPiU?50gIu*OrWr|PSI1v zOqatbFj{0jf-zo)38V$z95dy%pvX=>?rc{@KFd=%Et|@o)lm{AA(x#l8;V$mU_Zuc zaSiD~+sYn0GONlc@iK|@tUP|{&f}we_F~g9@etZFNvSL0DfZ=#jiYYc@XWAqtdM-6 zvhMviea^^KjZc+wX-FFB z5|H1AhCI+;wCu*`S7Gx&K>|Hc)JIK}9jKs10WjrAeWyx9Ldh%!5i1@$|0$JNY_nMB z0~T{EGJJO@aj|vgNJB?gz#wBOnjiPIEsw6D>^>UlJiBUMl6e+5QEVzPPg;8U>8m#{ z!|q&#f&jft-)&|XNN&Ga&);A&h-iiQI@IUdL2sPpB~DaPc6nnD|oC!aZK9{CAnJwm=3~pYWFHtrYlq z7EBeffNX^N`BT5A&i@PomsCh!{V2DTYAe>`dO;m;Sg*iX^-<}r2>sHDCSn1nr&Zvc zmTDXAHuv=>^GT~A{BFISjUcx`*FgxKtEg(AX!locEq}Mt!2RSU_jUQ#H};Hyjz$wh z#iyptE8ww>0trwiWRGN{IBq>}Hw)%fq|<$nUmvkc%h3v(k(rck0)O&v0}=O0HxW{+B47qjk zEjJ@!`l1W(yBj}>yQNFj){xv;>Us8n+ES#iQ^Ydz-mWRhDsxAtSxO1xqkGfI9wU&il20N#g`l4^Q z#!Xo~3T(L_A4`}D6-|u!$(p|%T#xP*N+TIEH*U3ymNpmOwX?`LdX{#@cs_c*N@nn> zaa6Dt^`gMq>Sm7mn8X`B6>Y&%`q@`s1%(=}bdcx&Fbwf+6V^!-3D~E*SV}k$*;(df z%&_0O?MyFaZIIySR#-@0$cxzSZIK@;!tN% z4|tARN<>Hlht2U7SjuETiv;Rci2^MRM+H6aFcO5<0)& z4>vA(A|)EK4kqRfW;Ad)z=7II;*Pccj*xIs&}n6ysb-*1UImr(66oR4r-iLYh*|^MU*}J1k_Uxb6Cazk{7%b2jchKEV&H7{n5NFn9;sYcL*`{jxh*K7$TIdK3lS+!d_4dhp%j< zC~c_ma<9~{eE!$p?xYV}fg`t!Y~j=|a{sV2<`{kg{Iao(OzX6Rv>{j1^rW0*rz`|UFaZd_v8f1z&q#Kk29^AaP5iiyrTH3RFkEA2#PTi##~8k(T=ms>20y&=dX z4x*0F1}^Ljn;>DG1=5a9M%vnZZB>I(Qsp*_G{zJb7wj66%&lhb_2f_vqo@5~DlQ=9 z-H}C`yWUJ1c)CO#iyRar1TIsJerFQh^0M*!AskytntBvDqN;I;wl2RlR4GPJzb?2--4-lzeG!};TS42^(w;I(xI~o7cLS*`|{0mWdcl(FAoMJ`hVSJ z^RL-LJnsY-U~blXp(d2SagKH1*poaAwqa6xQC$!@muMDwv=y6yoDYbsJy3*a15TTK zJPGPmm4ZR`Vbbja+Cgrg=O#K}&z~nyx0@~4zwlZ1DxTnbRpL*E`&_tEQSUyOd?`&6=JC+e_@U{9(l1Eauhz{RL(F_fRqyeqSi< z-A8Zl+Nn{+b4O+A8!rpnn2vQ>sdH-OOTg27Hd>s{`h?2eeutVZJrvvdHD7L~ zK&zH^LxH>Tqt$mnAD^Zi4u`Z5O!S5$`VG3lR= zSZ6M`zcku77imACmQvPXAMOFY+{0aaJ944x!0>RUi-tJJ7$6MUG#!P{dA?;q|W;?bQ(R+vsW zI~>N$MDWd8e+gc*ii}>PVMMaZ0yexMjKGJ|`Kr)A4jyu_<+g*brSMC-U6oc(z(wDp@D7Y~y^t?mVp0jEF z0m^}EjTv85Yr@bX(Sbbjg`0)XW+RP4EL+F-_`5#1R7Y~sWP{&!YikyJXlXh^51D>> zO{I11>grqcKqFD*QH;$j0S-S+ss%$iPt55eqgZM3PjyE9iSz`y3FS}&+5 z?wXe1@Yh~0r#`^TxiMaB()3x>myub4@?zbw^|yCYXBCW6Ol|z~pq)xSn*_Ys>wW$_ z%N5pRMs3Z;qLRs^7bC>nnwlHF*z%5#$)}T(Rkyyt6&>DmfCjyakqsNi)MDOCnsPf= zx@H$Z!QNSQ?Gk~bT3~nrBKd)UTyNg<&4L>Km~q2B3aQHwx5!X?H1~;Hvav*6__QRI zb*4|CLf&_j)CB*t!k{z8^h8HyDMZn478}-R*%VIuf7vCqoc|4S%v*qLYnEc%;r&WH z0Q!|o!G70>=@P!1jK=G-?(Ko+SW}PRm|vXrX6{bb-{cVYZ`>L;df~C0E1p|&*}SGa z*)Tz#+*%r8$PulptCpZ0XJ3GI=^5vSQwrs@uiIP+Z62p1jvB>V%kH-KDN|?9@SQ)} zYS%cZ1tLc9mluAO7$r-EEa)WU-L7J377uubV|b@(Ey331VHD$hCUp(Q%SXqUOM@cH z8Lfcr4=(vb-5Z>I5!V_(iL?4%jRB3Ar+vNm-U`&tb#P+57RX13t*)+4(Ew`%Iof}t z{;rX+I+SZ@20?_QI+W<&F-G`2;&#A8sA~Bt89=d5{B0x`yl&=51&a885Q-S?-3F8|Z4vNUf}QX9 zx@7KR449&lwnyj95W`1CMyP!VY7o*8P=b)g*ceFn$J)G2)XOU> z+8_m4X29H-wDNX&K4TB@m$pD7B0?ZIaNExI^&P(az5Xw1i!^ehdT%cgU8R%e+t~HH ze>h;>7DiDgW0wS?3ju=F0CXt^oIo%7pZto7%zl2+cdlM6BYghSm#OP$+4EsYhmJZm zRu~6|^vl4TKB4!5gz=7gNFPvqcmsOQps?Rl-EbWN0*aY$Ya&hb#iTnolCcruy5^Pe zM#O4}-(nPjP4+9kt38OBYJ`+!^onzOs?bO%V&PZtiqjSIBDLS#y><^tmoJa7(z#IP91cB;^#Za;+&@7 z{b)t6Y(&caKMdo6g&zlNqllgc?>+C6vL3DzMa{zAZ@9Gp`a@;Pg!I2IBZE;xLs>uc zo``aDY%bf&{tY^1_rqOY;hvd)4J8Y3e^c0ffL40xCP_u zK7L4Y@QLx9Y=EIaUZR3p+5o(%2v8dut;&DzY@Uq${CNllA;>UrAsru^sm5H^6#RH) z@CT1{u^Ub}SiwIJOQB%~&W{oLSr5Q$6;G_bF7mAKF+XnFQC?ch_+FSK zRs+4ZhJCG5Nd3}j)A*>jw*I;evD=hZX0~@vYMqYOW}}$T<>H3l z?}wvapoI9%DW)Dg1I%~Nql6>ZyhnUi8}H>tC9m}JoZTz7*f6bZ6K}b@9$ph7;ur}@ zeCyAZtv6*+&<0!Un+7G0f2?&d;J{Xi!8U9hJqK$^)wmJz@YfXT>@#~VZ!yPlTZ z0qFKMn~UFXEIkI1x}PHU^BeiuIvk|3f!s~La5(?T(2X$gHPLLC7oRRJeUtt4V= zQx}P;wyJJz9o!F?OL<@Tir4-s$MmrIXfL_!(Osx*j89hKt6ejtMcFiywCn6f z*p5-G-*&UIU-7CX*>tPK@!{W&idIfOz6kpebyqD3X7t-iCGIV27v0_F%u&9+yr8eV zP+h3eW57NPj?NZAe^VQ!z`Tu@lI@B-WxgGBNn6?zto4y|PiQhlD$jFh8|KTe@QXiz zvgQfsr}6!N?OpjlRBanaXhlR4WwIqD`!I;dl8`;SkZo*@EQu+MWJ}qFhA2X0$*9o7 z5XnA7n~3cD&M<@V-p8~&@8|vD{R7_j{B+D`oO7Rh?sMJO^}W8|>+%D!UyGYUgu6UQ zv9lcI=EfM>+A6;}KoN4`tA;g88NzE8%o21Kium>|sD!&AU52GidyO)$1d zp6(S{O)<76_dU9KtSah~O@ht({OZ1yuas(6a+pe(Hk>WKGPajYmR!8#KpyO3PYYZQ z_@^N@E}PBqdb)^AIccMc)L^JQKndx!EKYB z^kENXQcHb(Nj-G?&RZP&;2jo|)kJ+IQU`={ugrblSbCEuYT>l$-? zL_sBK(M7sBJ3z=KJR%`c;i^z^Ru!axyK91ba6@GE<4J zWY0zZU&L;{(U#C}-@e^?sJ~vaO)kNd2auN52P1fk{U>vjSEfEa9|pzR-^<9ztSkod zwUFOy@5h`pgm;Mh9O%B5dg?J!L$5^O_qCifziqw(xcnrjJL{*sny+774qAm&bdmS( zM3LzTpCM51JxCgm@?^uAkKN2?D<3$Z@2!=z%FXP6Sy|(EIXWgR z188K;AK)o|d?_c>J?kQx#=@DnjYu;y+anWYIv5))ocGpDDMn9yD;qLUW*2z8-l;VY zcWA)dXGM;PPrni9&AMtl$;n~==SOx<6>-tyOW$sJ)&-mu%`~pqqcT&mnG|52vnHjz zwO_4Y8S(GV)t!U`1{x3$t$vc=n3(L&!vuieu_hvPyTNv|VVesC^nrI6naI~2Gy9D~ z2bzt;%zsa{NHi-$z6H5iKWGULW}Nck+5mn#hGz}DVyIjj?c{1H?~x{J%&Hk?b#A0N zaUc_D$ao}y`B;OJlWV|+C_lxvV(dXUzI|zFdH&GbEi_+shoExz_;s(5ruKcMkd1`M ziokFSw!{f@pZ9lE32p*$VU*{dRw4G!mqOX?!*=BQRGY-witB|gbD^|BV0E_%6ooDmF5t*brC^#zoZ-7i>)9u>7 zEDtal1_jK71Tc3A^~bfjjO8b>NfG7JvAeeGft=%jMr6^W9XGUE8*HxQj2 zaXcz}8id0j^3Sw76fQe(KRYjT&fLq6*RL=B*rgy_DE>cP!m~-t#3=P%xW&6xY<&!a zQeC$WQ>6IwRIeu2QT;X`N;r_EAk#b~oR+d4FHj}!pU2%MxJUNE=;k!`xn@~SkyY97UJ%c%4b(UfplQc8>nL&rPgDi6 zuw&XhV%GEO)zdSvzBgu?2<16Zev9+OKA$p_2%fr_`HYr63UDQkvO%f#+FYYnoWY~>XV7ia$hM|}iaoQS z^#|PixIlE2lR3fRDd(a)YQ%>4_6<+>c}}NZ2eb>`Iv|FJW%>mR(f6~3E<BaV?(vEWSD9%8rwq%uDQ_41 z?=p0KSlCEdGR!r_wjWN5M8|21BpU0Zb(|2=b{b2nG8|7vS2x^jj$vIRGFdeXo)>|I z#6=!weCvep&PW+Zu0vo}pWg}^llWvwU$buc$|P9LB*n>=;!R9Nh5O1;48D)8r@0f` zL&{U=0u!5wPRL+?!<-)1^qU0VfYB?lC zTwl29hO_M7b4O`4U~1ic0m`QIqAOxdt@*0qEv{Dd6_u3NB&8~nZ%8f9wxFn?QO7qm zx2+*CxSj&gna!mt8vYv6@IWS|uAz~&Sj!3|k2`p6gC1?pKg$W~XsEHmKmO6m*Z`FZ zKCiB>{uI{2zb{K64_3WrAw1*&|9j&HToT4!M`V5em)o>l+pX; zv5B+~vu>hVjVpPkOC510+rrO>GXz3cg>5;OS7~fl68qyd9l_U2o_h6#9n28 z(RPp*pQ#0fNuN%h*>Z?KLm!1N(meS@`{wK`3#q;_GSJyoC6D*$-P$9bb#H+$VY~Xb|69zlxE=8G?Nru}5=kukY$0fW-OX#GeJSavl z#0BKwH>DInj4!>5MVYU!Z;k-5If-bHg{EiwV1IqIQ>;A4@G(ht#g2*p$RS604WpD!d=mm=SXuu-~EhiMCa9{rWH{niW^m6uJ z5$=h+3|J?Udp&vZ+h~cd+}P&g=$B^R3yX;HH0uZ$KEUoLtOG`!L~Gqm|LrIA4`m*H z?IVEu_A4XsZy(3EuwP-k*`mFDkZhQOobN-xM>>qs(;RnB1g z(U4?h7gw~Ub%8f;$8!O9162ID&5ueAtqN8*Q-dN&_u_4GT}3iHB3(1&y|-r+W-{}i z#4W-GP`as?%df*-Q@jWo%Tr_6>Y3d@E- z4Z5p{=@YlAn7yi}3a*kq=36|=Sb8Hxhy*)b$LGq4tmN2TJ&w2bh~c=2y!5G{;$cWj z)!z>9-+cfWMSBv$Be|3icfw*-&Nw=4f8)(>u05q?`h>8pGJRs>B2J9L)Y$MQ9V54! zcw^XPaesA9Ul4|JC=)8@uXn0y7odWvZIn58*y3%g$=Ir$a>M)yrK|l85Ll*)oGQUbv~6lVE&*3Ur;~$iZ}Um>aP+0 zj?BPD_}f{9P9ZfAgpNQf`#0nU-Dy68hUF-`M|gDp%tCqb&jEBr{}hyguNz}&zF@o` zoBRbt{qw9)3Ki@ebU?@2T?)wy!13D!2j{=jkKpu=LkgD8j&7d%-&E-oq%DV5F;%$+ zZj|(dhQ&p(umP>R0blV6GINkWbXndx0ciIuBme*a literal 0 HcmV?d00001 diff --git a/static/images/FileLayoutBloomFilter2.png b/static/images/FileLayoutBloomFilter2.png new file mode 100755 index 0000000000000000000000000000000000000000..6bbf77018993952a5bc21be330908b1aca7a3c92 GIT binary patch literal 34018 zcmcG$Wmr_*_XZ3Iil8D7A|NFoAl+Re-O?b<5YpW+pd!*pHz?gL&43~~gn)E+=TJkw zX9o3oe*gD+KfZjL>&%&b)?Rzk#xxQR+U{6D$-Il>0K$;wmU8w^~q8(0*dx z2Cf*m5mlj}_@T&%i>kR#Y&BuW;4deZHWR-t>Gu2l5H0Po-4ATJ`=L>v0yC)aLNi{x zi^RpRw3kuKPzJFYH{Q#57OJQ<_o4Id?fDlkq7)CsX;an+lJs}5 zaFKuOmQO2lbLyV=rf|ZB7`JDd∾o3rC&qkl42nfBpLPI_iPk;Hb#)`jEMofMHApYgDyM|L z!@!W3^Sn_?c(!4)j zmF}{iDx7!WB#`-CgTrEbf#alxc8#rGh5P;jX}rGYdSSjv^F)K&?riqpWkZ!v1pSYj z0V-;K7JHZhldM#8|A<2laha&H@Es%gKAG~0?dm%LWKYMRH}=5BLSS~B?uV+Zz5(OS z?|S_#H-rFJ`JQ!32_H$wBfEa(do!IWeH}#8`la3kS#$Ba!;Y;#6_Xx}Qrbo6dcIaZsTc6!n zdX9QI#JKVRYM$cIUY#u$|5(Vwxm7dr>sO-&{jAJ{)dvZ2#2?o87&0NxiNay0BNR8btUta#Znpl-7Ee&Er|G<1Kh@VM+bQY{U1=P=2wI620?uJQ{g-X8d_y znUnbiPO%Hse{RNa?AZWOeAch3By_YYkWN>G8G_tr&g{2` zM@EFfofIE0cHZ70J7tlmRuDhE1S03sI2UtPpMF+U=f({FPcr!zSMwLJ{%f8Fftm=+ z2qKOZ0)bN8wDgr1*Go4y9W&i=-5jxji{2qU>}U%i&^fYMWi)_XC`pkx{OBLNgmCqm zU&8Q^Mvn8Oyw=emHV z9j-3myL4Hkc=bsJ-urE(E}J9UZtExeHPodzH?Fl%4RGF_xips|_c^p1Ez-^mbbVK( zQ?qj!tt1Rz6(CRLv|7b^^gHGWQj)rNk1d9BY%~Q040alJA*Anb-=ByI-V5>8ys8UE z`lu>A5fR@NP^Z;?bxpk^jWfNbXs|g>+}2|zC)r~*e;b@g%LVz|JL+styE)ynat-L*>unGiS`9FG%U zbo*vy)J&aEcBX3-lDW5Wf=xzCZv%In`HliHr(W^oX75#C>+YU+=-4$KT|fWS)-~-m zd#O>X-vmwtH%H_UEv45X&EMMX*&WL57m$l*zGTTRcOS2H03GZ{_@-F0@^mFFq&M8$ z6|uK9_7ON>e%b(mqVgC!&1KSuoq9i_MdWL zl_3p#6nje*etC|k$ZJ&i->Ve)7Z7%%@BYQIY05X|X61!$0anFfGuO^BVe~(5LC#x6 zEqr&Rc+$?iH|Z$c(fpC&?-?wrz%Ofv?Hcz_f>ZwvAfI1ce0ll(1NQajUw_OB?k>9Z zfOpRAWX5Z^nZfzr$?ByG`&3W+USD>X{u!W*ac8n-SETgy*9{+uzCRX-TMh|&u6_A< z<#>5^B%AW*=1(LEE9V^~PCX)Y&3{K_&&$bK*#&mO64TMqQFrp+oA1dipQQH*!g`ow z|6a@sm0v#D4q>iei^ux+qP+C-iIS#)&yfg&)xYBwdY$Y{5-{tY-jV42W0;!lE|5%1 zcbl)Td^HC{(QcwvB1KZWLG^804MVAD>Z*4GKE_QkH6}a9EUF?)fu{bnOs~ zI5!=979yMY$K1S7x#g48e%~wD_2*CjdQw7gWeu^LzOw%vlpY2gn{_th6{gn(fq(Dp zd}}d6=Dqi=S@)}DteYqIpJ0eutQ#Me5;;@eJ+%H~79$4`An^<(wF~%d&_70rduDr- znfIsZK;XT0SCxaNf9|GqvCtRZDr-$MXa-+;Va5NkI50(1RTXv)95q6@Z~odLZIgrn zoGo@NudCM5V;KL$G%it;*-*>dTL!w7X1(P2|6Wgg1q^cRe-|%Jv*@os{Tl>l^?`%5 z?*a~+RV(;=-9#72=9?eM!KVzsmi9FG!v1HPVOJJ$z%jjDGpgq{T^JnmuaWU)n}N7g z;40f`emm#ClOma#_pm{nM&3t-2Gd!Bf9>z=;hgLUC4!x{hY=T_J^8%>v842p6nxGO z;U7zVFE_70v;Mtb(k5xs($W%q9q$W|Pu|$vY-+9i^Kko6CD?aA)LZ)c5O25!b=O~4 z?@#~Al!}B&lKe=zv$H1 zHYai0Oh__7+J8S^0wlNq?Jd6AD81V7^$06vyYa1b&B^Sh-5X)VJdlh= z!rwvVYlYBhTGa-8*#p^VlKf~XPrPOm>rs7B)U1CrASM4tBsPECkw4_n8@ z7Kr?OOesep`IuyMW5(xXT1T@;Yu^Ct!=JU&d_nPNIAy=E-&Z@qbS;; z_w1B!GL?lCDzi2lcg~QS1O81uz!)RM(7O2&__ea%&1Gf3lZ`Ad_`!0Q%cx$B9HJ6< z*(vGc7q%o?~Q?&72&ILYLn$pQVb$`dz^IN1*)o&JP6o2|(;T#p@_xCI%d?;Rs}S z8lY%U40u4A1YjiF_3l3~P;A~*ly0>3o={(VIot&XlGOK048Kg9rK!dxir_9|Nr<;FzWf~{bTKGY z!nrAqvg}SPJzKCWndqn?MFA!t>}?%^oMbvgC3(+WP+jf^oyk^KwBm#UJ1&1gnHmU4 zd#QKHp+>@S?>|#`6~)g}Nrm@36ErD%t)u;5JA+A$nE@l(C6rX4T4o^EhVkQk70V9} zmX^l$<4UrTjy(Wpn=Zbgji?UVfeLvZcIKFS07)D=)4>^QV?qWYo@nRKd_ubY`OIs| zp~Fm2iL6>zU8_vCStFFyUvPi>EDaelIHZs^Yo# z6D_nxm*Wl6?w1y&5hG6LiAZ2aTQk8gUVx6FB+frYcikUZ8=y*}MKV9TJ1&}#$4V)O z*csUqgnB`X9yypSMkMSc3rVGolB4?XrUFo?A|1BrHYFxreuq!Rpt$YMG>LZS&1nR? zW$&qQ71Ojx8+)5ItluU>Yjj-hw)O&@=f|-NmBM$v7m+L9M-AV8@kT5(GsFWltH6cY zXLn2F!PESEv{fOR?V1|ZcSY!bTv1~>VX|%pW3fS(oi1K|v#(CJiiYWB7Nao$fNL;F z={S_Fjo;|-VXYl~OW^Z&Prl2#&2(FtfVA&Pp?hS@2A)#B?Nn7AO*`O2=N$>r{qRb& zB$o}f52qihql!P*y=lQviWka&3Z=-b8dzA$dbjA!`n`QSGGzF5GgXa3l@ z!3|J`gn#Dk6?tNzw^OcW5WNpP?|!zG5^z zz#K=e=L!qjjJF^dQft8GoNm^ZlE>5Y2MOuw$Te6HOh#x0yc%pvm=AQ-ot=zB>xp>S zXl}5VcI4kOn3J=!)8i&30X|sj8i$B2B|Zo;<714r0VNw7z*_GNsR)H{HjVSZw>c1b z^La}{tF~C1Vja zuO*ctj-8escH`!Xoj2Hs1}~t{p4UonbHWE*RaZfgs9;+Nv(z#X;44n*kq@}Soylf z0GYyWas}GfY!otOASbGY%8ksnz)Au40IA_W&qzXnbtb2t4-pP2c8O5EMx+ejhD8~J zJ9o=ER6zXI-Gzv{2QX+qO9_=*67^W?IVB}vLVL6@BFT(_z61u+dexbWu5j4RG@1a( zCG}XO9Z0GLtpMPtn5_PB%nAlF$T(+XGmuiA%mC5iC9j4^N)qBGB7EbZDF6UQDQ8NW z&ieq6FB+Srv25rvm)G-f&1C-j2lbBL1U9Pm$r`&>S8+vw?JDaFZS&Mvg;uYC4liIj z5kY`4h&A1kLer&-RZ}3E8K?g?Jds3T_@kN+3itzUi%l6}Ibv$HUy>cbr=yVLuS>w8 zDtjA;EJZyKfYsBiO!y-VrH$x71P!$0(o4{xZz+0Tt%hef(eLPS_I{IjH z)axH(!0*5^AdHB-6!lx}OHFopuV3eA>RN0K9BI)ywsq9n<;D^kq-MIhVj++4Rz&3^ zP3tLHw91|)U&p8_cIBAQXc;s{lyp5Sks@O?e8J5!yebn-V`?1yiABGWH<d>;^TqZs1=qJ}d`@OG5XNhOWszq4RbpDHc|;C- zx8Z*w;e7K-WBER6pQb-K3)o{Pq=wflg;kPYWEq&t3pPd%A@C ztdS0N2OxWBPRdibtVXs*BoX1|u0%U~ND@SjnmiQZ4+4RBj;tb*?{K@wFY;;^GdWyL z5p08I_r*-AOaXvoGei9Gy1C%e&k}*Z#{1C;jlvpeRDFsCMQb+-3M&ep$Ewg*1)4e2 zO0vV=kxZw-U{pQ5xQ6ZJ7mY2Hi{*`j`ntDt75w-Hj1#L^n)`A_fFrU9MKd6cjYOc< z`n|pUd>_oKp5Png>`R!O+*+6F_CX|XxTY0$>xsm9t@v{7VmLJXsL|1Sg^;uZ%>2zF zO~1O#(ACK17mD&2SWQ=U4g#1PC~T%_bJF?{!@w{=2KSkFtV z>QE>vxXX%vJFd=oT}6pM6o|QUb+n%SP>>1awJbH>-9F8ak@Vqwv1mQD7kgTYYA+H4 zpd7|y0Pq`qRh->{rLNH4!8!chArUI{q@nTsB5!=^&mC`_1GFAbLIe0Mi+j0D@HEb< zNI6quFZW{CB2yn=k>!}1FAl7|GSNuTNSYiE&f{%*MY_YeSxH-A+x?o8<95K~1n-4Z zSAus$zv0|2kI=STc0*DIbY&=1;rq`izTdqE$z6#Ov{S;ZwYRK?g-$iZ!b* zCM&JzGvBDzLx(|eu39FHgp;aRVuNKR-Tas(r4`_O!k=qbgy7cj2B^CRg(qVUdIeax zhnYuzL~&y5osD71iZ)Uct1I$P;{y0k$>Zm|Cfwq2rtOO}2{gWN8U3Gi`A<8RE=(x^ z8|yQ|lehG1eS>JH)C@~R$pz|5jwe2T~iLM@#! zSx@2(o0SsTv*!Z>x8A#(iomYXwm;j%M(l~1Wo|dNU*jpeno<&uwYm_12HNq8qahyk5Tubx?l_ZM~ z8BMDA&`3HY!&@0?bLPjiJajX=wTq$bi*Tc;6HLdi=8YT%oun#IHs0CC;iG{jx~0VU zpzv8Xa?0*%Wx8xV2a!Aak*5zWu9Wgzz5A~7l7OHCOZ7w!B}8l+!6{mXk3~98K7r#1 zu9eCzYGo)zRDM9r1fd`S*m>ehy1P zad@}dTZ-6SHR68x&sMx5mm*{uDL)LC)YychbnJDPG_Wb?lMpwU5ul1cNsO~J!*n-I zetA2yMgi;*JBkSdQP_05!TO+7o5AFgu*nYgg0JOuXg#d$9SX#_F5qXTdhj$^cu7C} zXx~?Jt0Un~kW@DV25-Sor@+wDv6})JLulM8;=1RN9O%&;B^Im5Z4InvB0COr80yNN zvEpuPwUt65E6W(X1{R?kwmO)sA~b_e0Y~DeB-3RG7`ADgIY9yik%4PN*KxnEU8RUr z4+#X46Hm(d<$rI7tt@_2m>?b0+uj-6>OZx8!*L#Y*}r#6K`>DK$S^Kst^@pKun0Io z5uk^MAxzKB43VbmQSbm{h}R_ji5s209)*LMK1Xme1uAebio%hyzCI(zg(qsufNIvH zE2aZaIq8N0ua_Pt$aRQ1dt7pBi`m|C{*W>g2lHeJRIFnLF} zxoKMbeH7ma;O{-0bJrJwRR|3zBx^!G)#Mo{}9D4Xqipr`oRz4!D=(jD5AxUU&x2oE{;ms z$iGVwFA(j%0F#juV0ZZ#aUFK)68Q z{)RZe3s(fDNjs!#0YD5HHo)Wpzjq(ZMZiuk#z(mOCjAIN10WQ{FVnWDTR)ONz7{0} z)oTUdknhN(Bfcp@YZR>S&uUswrS4t7qt@9KZX6dYGYAQB-Odc;$Zp!UDm;{Oe! z=DuU?eH2zZP0lCvKArFST+eUESW`OK+0i5}$W-#P<* z$7YGCVL29BO!F#9X+-I0+-(}=Mr$;cQ<;EVzVByrgRS69d@~0>GP<^zJpLxQFLt+7 zzO}5|Lrc+mv9NTfo-BYv`1-xvvY`F$8`O0c?%MOay4e8m;p!Z z^TVvXEy+Ar0G!3_)Mhf`YU)PD0DLRX4|apQ*($-##rjQ!du0!nwxi^_Gv595p2wD1 zhZQd~ZO@l}7TB$CXor5(e>zPd6EzVDB}_>Kj;L{CD!&pS#wMwixDg}sUC`g<$|H`ycc~5%2&#M+cwy!WSn`85o2yeAC0zD zt3d-92la&Q)q6hWzC`_H`c2)i!4jvwaW7P}OU8)HT5D~O*>GabD++&~j#T|aD{FOyHyRDeHQYNNar2E)SKfVHL0Ne3dM>xQGk|Re z&NRv45N;9KYtGYL2|eJxyeO8JZ1z4MjUJ8=N&aAw@Oa*=4t`YDnD>HXD?fgwbEZSE zJngHJaJsI~kj?$=f~k^k13ruML6E%?blVJVc2jCkXs+}e-7zZB3q7Q=~MwJS#X z_-tSJ8GZGAR8VSY!)D2Wy$P9isH~l|N~a0r+#Z5PVjLv+!Ma>;K!P7V_PDCL!Fk!0 z(rTY9e=&C3D4jATkVizYOew#%QY6z;$a?G!Y^A1{3$2GAbUr@n?7P|#^HAoBd+cP( z>59fUog#0)wTmjkyX-nMxR*VVHm=tZG+V(`mAnlS;UL`|7p{(N7P(T)93+O7r!RC6 zf&=Gw*=FO;&Q{c6h&{dDgBJRn^6Qe9Qgf7iDqErG!3;ZUxTT%66bMazxu{|yIsH!LoX{WvK3_p&;2n07jK@$Z zOTu>ZcL@~F)y_WApx5SG1)V%=3B-rK9K&tDs9vrS2%uVl?+hrX_88ddDENsby&OA$ zEm1QcgLDjTk?i8yjC??+45+$Av2rJHEH`!(rDn-<&hk8ooSi;9(xnX&MsKqW4)j>C z3mW}owqi=O-}FPUO5{qznAg`zSudCABDMUor{ArwVnLwG&Z>&`I(2C@_xB+|Cgf%M zGAQrhYGHhoQ_Ue#(w~O~s%EmT(z7R5+QO* zIxkCJQF6Ea6$k!I4mxiD)wuIwUunDrOns}nA4nMI9c&IjH6sJCz0s(*Za;g!_D_Q< zrp_;ndNx!^#s$ymPyVtN`6;w4Zk<;05q>JuP;3Cg4!;~xdYRy%wESs3({thpDjECI zdn*yK@5a+=ck@r#!jIGnQK(iG?y?SV^ij54*gsS^n&_Lowf$Lu^*rYC;qXlLqq#MV zmIG~;g|4emOXgS&$l?knEB^TD{5#X74>7V%n1YkRhmv+5)(ZM(u{OiV*)noPy=m1x zgGkhUkr;RYm{~w4ogII*mRrfEU7v#Rj7>oz|YnY}ej04ocv zt#k(qXw#^W`|3E{=WI<(Yc>_`IO%ii_O5#SqpIg)RpriUd9I@mA~!m_ph~`se7$qK zcNG*)9P6EXMSFjAjxyGnCFivq&$4QJ>P*=^biDl@7Gmw3*Cgq*daO+aC_|}y;_(0n zXN{gf@2HEDLNG@deyUNpGw51x220!YXDA#3f~QS{rUW3|*QXoY28(rSwqpC49vdoN zElR3NOXyO`xWv&jtN7JMxqH952knpcz4uR4yzkaM{LY6RwJ_!(HgY{@ZJhK>QbuC9 zL~wGw-2RN-Vv9hkbe{+I9bdmx+ngIYdCG|iJccrLzn>qh!yV+Zl zI{L{7fZ&&_3AOg~-?M-o7;T<4iIB%GTcA%*u<>6N*kZbPVQO2|M9WggiWh_{-&gY! zD7k;(Bd)Ib$COPBUf(b~{{s5hnc5JJVQt$_>U;{i3_VqBKFgeHZ#_);0vSiKRhN6+ zv~4Ygyd^)uU{717P(s!Vzlt>5$g39HAe<*mL)oZ%4rSo^wz0R0!t=PGQQ2Z!9&Kt^ z#Tj+Sc=iJV6s7`f83!gizAo8&ad!hcNU_WnjTZ1@GCYP8ya>JxfWr_Qb}LQ0H8q_5 z3W>N7*y=>@p?>}Iq13u!`f}a(*6O3rTL#D29J*uZx&U4$S#TW*&5$Y!l2dbA2T}H4 zW}h_}w_*JUq5;~Cy+cG$&6J}YyXCJup)}`sOH1L0;-CpiAryuBXcys*cp^=x;ew*RE_1om$cA*vyr!{#f zyO%e93nk)sG*=R{KIBGTZKI=-Bv5k!hOJ~Be#d4q*a;_~(SZAMvIeIwRrvRRWI1<`HfZ=o&QXX(4R%H@pF{}7#Q)1j^K(2j9>np`_Pj;m5%yPjh07Sy1Lw_2ni6xJR(~2;Q`|v*QOq`bnVf zSblLN-rd}c9{iObhRqsl@PlA|y8f%+Ru2bs=xGBwDtHBu){x{Sl0al;Y#O8894*!K zYk2)>!u|ROo&q-ObZVqYz5L0p0YHK~;|RsXaNC?cRSWo^2Y!}+vo2GGHYGDys0ml> zr)W@fW56K%HVtXgWdff}AJ~g~9BpJBX0yb$vbM9`2dKdo2U?4pc)4+CAO@B_!F|1? zI*;M~4%%#nlINNp>oX(~Qm<=Driv50cQYiG*Yln@O|uM9HZ__P9)vJ*kdNMSqAIE_ zk3-7Nz}^C?EbQ+hVKZ%_AltAfjo9vJ7Dh&5#-~04UJC-Xz2!K*ubc>2g`WM6D0UNCNV-0ad zZwMcwT{PtybhURhN^?SuPXiQKs1b!q5Cc@V!cmNU^-QP2g?)RYBfa-vd9pc8VMyx( z0R_PK7)k&wARiWgaF$jtCFK3tzf%RezMJ1o1~G<`Nqh$r$`k$41hz96Jy3HPobORd z)9Ymt2{+n`bBjzDc=+ybS+S3kUVOnZAEF$-m-`*cJEE%aGlI`nt(8CWjVWS$W5uL9 z|4vBHFY?t=W%)kl23~*j%pQ@4&qg*+5_L-;OY3P$=}bFk(fLNQtrg)+Q?+Z&(NOi; zSr5AipHW7I>7zO0efuPBFRB)<^>Wba6=!>u>g{`kpAqnDl)$i_OEX$FV2HZT5gxc( zLw@d1iB9uc!4MMgk~pn{o*_bM(mSMbc||fb(X33{jO2nxZFI zIYsu=GV_%5Zu{=FY`xa6C-+4pV>gf)FU%ih)?-)fzFr=#Mte;xiW84zi9{bxX2Au# z(C$?&pq<^T-5+jX`cIW#!>>CVf}ZZP^NX=D!peq7)9uGVqO&6hy{&O<^X-J4pUxpG zxU!w}yOXkh`SMg_a3i&J3xlapD6oU&I4F7nHR*RCpC9tIsJYc8bEqUYQ*nM_aGu)d z3!s4X+l@n@?)pUGDHZqV+mwmS+Isbb5nbj)2Um|-y>Z|YWaTIYo->BcVX*e z^reW@M@ru^Rn=`!7-o?Uw1cAB;wdV?-XRX~t@Y19N@>(YvsNEV2+u#HZ(#zWAbXpx z1?bc2LWmzg*D6t$MQ&91B==E1wB6Vc8LmmbVB)-Wj zNym>2v)ra?9lC&CwaU;ZT=eiBbK#*S_Czy-z-2)18GahO1W@&I%#C~B3x)=cEs>9F zjkpc!2v>*$%95uojf2eX>CS^PHr365tTVNAn#f^pwy7ccnY7~g1ZeWH94raSsU~9?5+M}@OzcfSOGLo(l-sP& zef3G8!_<6H=4$~pT4FrkM2I{$_jC-MY7~^Ex$z4^avG6~jpJT6jd5isamY#?0DrH- zRtD-%#asfx0_rc3|Y8Aq0DZ(_%2I zXnRX!L{8uh&g}io`h#wUN^;zT^R~al)LdU@IOqEbIX_&%tnzY?NNy9tAhD{93?j79 zs`Ak8jc2Wh28+8CP(nZ`qWKv(^;z`&ldPk>%y8Kqz>D(i+AC@FE%FG#u3(7bpqvq% zm8B(+%5C*>ViXeh^=&o9SNVQ>eO!qEyQx|>E0NaBOKXA(8RCpfIQhMY?h`;WG7e`E z2YSLKC(!9pbj}T35sC`AP#Fl{nFJb<`bOHEWA)OM_?Ba=6TJz_Bj7V*Jon6#69cNt z`c6gPb_*{qoP#{6)sa~ZnN=kNvd2dzK*mlOyewt02(^#KM%iHtAueh6;?Au}hIxmP z@Hy64JmktsI4R0}J*uB0YNkzw|H{9vocX5*n`CWfDupjx)={lWn_GpX6<0D2FLw5g zNJf%@>sPBVkcb)}_TITw&=KgOmcRm(wDP({9gyN<(x=CPT)UCSV@f?@67de59^l!I zYIf$FFS5GZQnzoiU!xp&Z^+=8ruRNW!xF%R)#@$J>&#v%I|3(bln3^X0^+EjZf5}~ zvyqZ&-BrXX9#_~%gi$-hO4qvxY^gw1NP`nPn^+3HDNa|gZMD}wbA)80_?mcgjWGbh z3%7V^N}nA&oegl*l20;I@0oi$^Yqn}9y~Gn!CP&iv~3p#P|4NHc3b#*Im8XsJjWi( zXSnVrNiI(}htU(}iz2#NCUbrh)4OaqC2*r->G(-VIU_XQ?%ETPni8|BKk_~u?I7Wy zue%=Dr5$2POwD#oa>~_<`C7;{3au{JT?YCnQv)^!8EutNb20*#nDy$bj0pAY*RkZ= z;z#p@OLXhlljG(+P$i2p80>-0*a>yN%tHHR(mdGk(pb(Lb7$N>&2Xs*vQ%}jh1XS* z4tH6<_kr{VKIqEa911g; zC=q1mL3#mtp37ggsd@cl`_-&rDkSPt0=quXqoKJ5UIN5dsb}dXt)-ClYLlV<*#i0+ zHzw`Krrfg-YmsKtbK9Y^seS_=WL9<6e$c8dycxQ&Uzt4H^@B7Kay9Z{e3cLkq;s?F zTp@}UHX*3!4_H*sfp$QY`J*{kbJL_mV96+qI`J~v?&svu2OLrcDVr{FkwrdwNuVN+ zpXhU6y{jvk;)=j2glHJpTp&GyP*| zav0-~Yd#&l&Moia-qn3y`(z%VIeSbV!G#VIK$Y`>jwcfnMNmiZ=|w~QvyO0n51u+x zJ!wbpoF}^D(?rUqyiig7eqlFD?i82(G;Sq;PWs|`(RCM(g!WHOmv zj?M~Z6A8j1g7jU=`MtBTyaAdTd68m+zbb7K!;gN3ce}Q8^(c!L>*7p)^M=p&TKFyt z2d{%t?}aqTRz9evnD}mgY;kqAVF~SZyA1b9Ne|!tQb4jDyz75bmFqZp+?H90(9MAt z9iFxbc^=CKJP=^SjtW6n(F54n6kuH<)%^RL?akhEu24Vb%eI8FcgcX-%?`BbT0G{9 zFLbr3%}BNve9|F4(dQaP(73S1!JS$N!N5$}dUla<&xMlUwdcr;7R}4PJp>iW1jsVf zgm=T2H5+KgfdsEN_u%K{$p>WD1fn1$-bN!8eV)IT20rG~rhfdz1Wl4<+>{^9YbuQ36%2%icWB!p<=tedgrjpo>EiYm`F{fIpslxf#VM z#2D`BPL@flNKk?BEb0y?n!FpR020WkZdkHzN_gOo;0u}i{OOr9f^`Q;pA2Nl%EzyD zGq(jY4E^j)DzNz~g~vtHGC=kt#q_5SU%ep*&P#a#3*uHHrDUQ$E8Sb6ep1A5yabPB zP`R=8gcmbZ;51rDm;~UF43u2~)RhVCA79J&L&Y8@h8NJ!(`cx0KomPmqsduCC4tP2$JSFS#qzLKs;FBUC&r`&@## zyb8zMl{I1H4{Q9|$=+uDMcHt4WElIOpd?4cO7UMCZ$IBkSO z?dt=TxoA_K|NXuUfNn)71h>iF9_IaP;Z5mN$JQ(KuXh*_@{`1>-B1sp5Z$zG0>vL- zIx|1-Bj#u(olGqJTRc88W=gM4P?Y!r_=tXD(zkkJKZkF_MvJg#IHp-Yb zD{F0%Xws6Hzt`={Z%7KPMNJAEXrn;NTsI4Yoc0&(B(rMZ+u!n62JitfadVp_IzVK) zxemb7o4PYq!J_^50RJ^~MqX7D6BP_!&Z;t&;6qgLu3K+B&rW7{2~l%=s=j{ROc8Fn zIQyl#JW8APoW;oix_Y`_Z1C8vZzdi6RL($FR;PykW-bVA>> zHr_|WdZVrO?W?}_`6(aQ7loi^y4F1DGN$J@;1xk3B@Z(6p4+&{TYp8NvRC6^X%?g_ z*3l#jctIhpJRbIHJ4JwpZrVXgo3f;qlFkQ~OdeJpF`D3;S03c$ zyIMG{W4YEH043nU7HTtpZhXz2X4K>vyPB=Hno@a!)^ny!cJ44W(bT?atTW${TX+6`znWgoW13rwMAQ+b83Nnal zb+XG|QyV{F2P;HmrjljhT=g%PW}~Q=KZQ{b!XSM6Lip2Tag_32O_@v`4$%$5h*Js* z3Vvxl2wLdUQ+>7Rhxq=C^%();RJoWeP;u8!3UMFGem;o1{3*5!*I{U(kZHsT3bqkz z(V|`4sV@{HNtAjFXgE=i*b{e!Q%X@jYEddt=vZqyM?MhE7AoFm)~ieHeBCIu;cn_R zmWxTd(2Ik!rAoiE)t{%2Lwx+L5pH7@hEmx#20rGRo`thfi$^uzKNdPqX$~4Q$F#h# zKj@?)-@48-u9RO1GOe5%tFgx3Haj2d2hdY>gw679MDtMIVY~NM?kQUUx$&u2Pfa!i z;xX)fLzn<1BSvjos2of;_u*XLaey<>$a>8Hlh0uPPBet|x(J?`7fmE0+*E`?KMsyxxw+?vcA)Y$o$KzkME ze&51OKMr?Ru1D;A(T+L*R`Yn+W#aoR(PaOH_bMX;B>JLS((7PW28`s~Z<;g}5@S}* zZ5-rv>zyswtwxHL`mZngD}Bb&cj|yLI8Xv;oQZlx#}o@&T7KXWwvPL%z{}(91Js>^^ErI#exU0p9l8=F(b4$@CQXBJJgAmiUHCKm%LO>uGKD1o8(N^zxJI zlnMfC4|;@6MZ~|>Fk$d|qLz7>%9TWG2aF$L`khp~*{dgKG_mJSegUNznSMDVqj# zDC#$0HQzlKr9#&%9?ssyUn7(nPQNMDY8Vk*R1^c`G*<6my93!s?A_q z8W2gDs1cYuBGH0uCKUm1C zZ8+Y^qB8YMFZg7IuZ1z$NjS*DKVWTJF6Q zTy;GpMGQ0}g`-d<=7tIgMGx%$x_-vDQmdSp#|#vvgV%F!6Ms=QOOZKQSC}jZ$j3C~ z(w1~uf_YVX8UZXSjD8%AM`N}r?}-glM*$8&%~#A@$A@68g!uy!OCSV~sdBx~ zRDtyPdi77KsxeuIe1R@vZFSxp(A8Rrd>gl~7*jp7ralZ>1?bIA+icL>0%$$Z(AkRn z20exO7gm|FpFj+NLTUh!rJcx}Q_c53jXFE_sFLh;Bitne60(^g?4uY``0*tJ(oC(j z7V16y=JfS&)4|KconMXSx`E84Y)pFjFyI{FJr;G&U*R`Kkbk7zE1VrQD+z?dv%ou4 z^oW+A8^vde4?STAil`Jy@21-yBv|X`1eFY`y;;ZVb=PNzmpL&l z=vE8XHVb4<*VfRTgr?>#wrjl?Ih>bI(xw@HQ~xF%z`^5=F+4!15!&VCTlKQ-7ghEZ zyuO^4@bfyESssx7aL=ttc+PLZ&fI)rcIV@ko$cw~JhC+?9k3YR!NyvUr)j}VOTL4v z-ha~%cf1yx<6TnoB8OfsY&xZ|m}6(72WZiCBvCgEplaC{9%-uprCl@v$nHGlWbn{( zoy`I0=#ZI(__#G3yEOyoZs?mjvcNkQK%Gf8zcVD1D9bpkL){JhVp_&vFbTAPpx1yG z^>_EPbpFU)wL|_Jn;E7NCc{P;H+RmKaq8%J%4cm%09q8KmYQ7^@m!t#y0~Q z@_xxq)_;{T4K+ZM6Ts#e5}b+xEdZ=%G(ZLF{xS3hxtE|ISTwIgWmTT$zw!f;`xKz6 z926Xz0xclvR)D+g6$YfZ)TcwayTaC!)mfZww(!f9UYYd|1g{}eqykZcPW^R2=pj45 z5QHXk>qV-?2%E#!Sb5i!S_*I>roMjqW7CPgiYI*e;9QPbMwUUN%Db+|X|s68;6GwY z0@@VtKN(DVlen<#HM`4sOc1>D0uXFCU`@a}>z^yZ>yso4SZ?Bqwn& zbiKXi@Y!qBooDOAh2FWVpY#eEV$nk9Y-jaL9yg!cdhlj6db+5b4aRpH5iTYKSoz`3 z)katSN9SrlNp|htPSg5~;x_OzJ26?4)Yn_3ej(T~Hh!mf-#yD^vwJ!z|AP6oT3UDk z+vp`b(;(C~n0gIllu$XYj? zIyJK$iEu~S)N5=BsfgIcKq|2hWL$c*N}nY zbh-Qbe|JS844gDU)6Syc6!t&EPAx|`c@d`j%BvKj*XC4nALp{=q_P{fp!^F^-C59U zeUsdr@E0`hma*l4{%F&{;kT>pN1HYNYY>$2zk?2=yXz-;{U1pLdoO@f^?$EXmf7Ge zZv3BXduCLvAG612lKvglUhFm*`O>lTg%zLGAa~>b#~$4`s9^TqX9$ms4T%Epm)z|5dW4^z{@<$=C^&T6;9HFU>py!m z`O(!5r1FF0V~`6N!rU^Nt&I%E8=fKreN2jsXb4Uok%h9`o@rr*RO}H)Gujj-pwByB z0U_K-%#zE8RQ?eiq`#x46HPaHrHQlYSi=waCnbivw?O=&2uc1=8-N>PE0yl_vJDWb z7HyR0zDIQ5A||Q($W_hz$~x&Q5D^Id8^J~ZN6vTBReE6-X%66JAmCj8d$TjDenTbD zr+|3F=&v7AP*&~ShsQ`iBd7Q8sm0RbQrAC)diDZv1!B>kBi~7}9~g_nn=`Vg-q{9> z`4bGl@k%9ld%ZJtw_g#K1sI0dV87>=NfX;WdVJ%OKdHooFP6%sn(SioqV0`1!0z3hwv(R-x zS}>NqI(K$r9qcl0@XqKhWMCj~L9PvfhTp7`>c4c-jo(aAXNIUg@vHe60I~prpFXey z*hGM!34Ye1)O09$@B>zQPX3h*YY+0SgKRp%OgCwjKN-bIUJ#}l9sQ;Cfm}GC&AKw3 zAQaMQn6BV?lF2}Y)WoG-uxkpSRGKOEmtSVFfi6$p+z5j_)}C~H^Gj@9<(Z0o`g~nF z=Swh!J`T?<+Ne9D7iH7et%3lm>k_@ZViZ6{2*I=f3fv-7dI4m{hI=@tm5Bej9E%*lS& zbBM`1)KhmAM}u(+R8lnY`W`kT4<_)?t`O>a&b*XD9KocRY4Q;V(;^%29g^gSvh=Nu0VtXpZx$0|cxfn8NEj@L2fOy; zK#U8$7bF7kw^8eB7^>PXeJts&{(??Dk{TZUY$qku3>7Cp7sBMz77|!yGB;(&=>b_# zM1fnUz=06Z<2-(jkVJI2C%Y;ZuiwMnSh~Q3d$aY3ZIU&F%}T2Xv`7rCon8d}L#vUp z7H)+r_L!_R*d%hoJA?0>{X^PAKoT1C6?($C2SS-sLlEEdH-%>%lUX@zhBP73A( z#sr{G8(sC$v-YD119P$mi9C?}q)uN1$6^ur$tC3ni=FqLJm?q(M3+|Ej$xofa(0_v zJbuykaA`h)xV2$)#B4kC5J3OLIP{NkWBQZ)SS#nX<6cWi?7_jmvsJ9^pyyI|R0(NaoDRxuJ5 z`47lC)T`ew3Qj)ZIX?rsntzow>3T+`$C-g!&3CLdm`r zm9loShe2guM#jF3sT@wHPzf=ERLDAI>~5+ zUazKUn9t|FKlgoK*ZX>3+hB&ej8yY##s#j7>-5;JR*WDT$;+x-b;Ur&T@v&8WiJ4~ zq}shv1p5+jo~|aAgR4jV=c>CHV=4M0Cv-vLUg@#6aF4J+8J>7w((h+VexJH4r?*!f zHkUD5OAGnMvTLtXeBu%MUb9B2*Q}c;TQhsz*7IjE8LDS7#l#MmG)b|2wtYm!K9X{a zebC2Ef%QznY)W~1gKTj)wM!`P=g9cfs;4{R;^^%=Wh3t1Z-h$7UdF6n-+lo#FYAfX zx@>*HG{(lwPC)UYh=K3IN2ra9k6c<&lW1(qIMg)z z`)#o%eX#y;3EBrv-sz9+Q^1u^6lxSKMN&*)J6_v%D-!d?xFIJSl^P_si3~Y zG+F4sMR{uV`OUO(39fSfN89~J=|o%9^OgjCE^y}{@1H7u>3y+9omeSHQU06OUaj}Y z`L8Q8g?P0rIVkL3O8Lin{rRpwa}@s`jq^)+XLBC-&kz7-&rM7|L4a+u_oR7&DL4Q? z`!@^z@L2Yo!%G^N4p*6ML9$224r$^Z2f!`={b6h6d3d%hH-_Y&5uY3F@;1c*r_8_A z_8ob{`Cv_H09*e3sZAwoUZ~64`sd>WGvvh6rLJbr?SA*HTtnvY&xjPxLw5VVlrG%5 z)KiuM5t2mOOqt&{=6CsNHUb6@7;=l(h8nW{Ro$yEB={mYzD25BtmOhcd#%t#_E)P7w0|V-|IoleB#()^C?;NdUR=*UqMVh1n zrs#VgnrU2TzM1%aUBFESnDCTWWA!Tq;vD_j>$CD_td(qmWK?-Ckwb~uoyY$SDB>K` z(GXn|pCj`c4-d^?tb0hfC41l(?%IA?!u(_0KqLGvA?WIvn-S@%7I=$Yj5| zJft~~n`#-^x$HA!(=#<@4+@u+x`+L1)%Yc7{>+LT(VnNg>+8vkW`h0>H-EIG4kr%H zkhz?Jlvej>{WhijXD{H5Y^7g#PIJJBintyId&pe;ip6WgBg6}Zc`~Xpgh$ER&n#c0 za`e>U98RoVNnnXY^1d#dX-r3qyKeW$UY~rDF;QhM!=+?O`n2kKIdr)LNc!lVvpcoO z-F4i&^x<)V86^*yfHx4S_aI8avts1;5r9|8Z0AhuTm-PO$TcmBs1Jzcw;Wo#d6R^grV+T>Un$eFcx7n;C_i^%USOkDgm)U~%X zGjI@OO(X(U{o>5Fhq;|?Yb&kcJ+ylBfAD5M3}u}Rj{Kw|Acr*oipsZ&xh)!cOdEhO<=YDtibZlXgDkxE^}JxevPG0kJcYeMFYX1U zIa2O&ST~s;-uy|o`tJRrbcW#+A!q=q9R{odv9OhK{~A((hYV$mXT<;FbUaDEJ*gpY z=0BBjP`}^DQ!~>r*N*SEsy-z}FwQhH0{I6@a>dJWE_+Ya2}%VT9KjRA#)t54vb@eG z-70n%S7H=-TR-Ne=|s9pMgXSE68_cYpS(J1I8R2ZtG>Z5#Vo+{k2Aj+cPC8~fhXA^ zcT{7rGXBNL7e9*|dHJ2YL*aaf_R$*clDfK*QhmEu>GAvgsa=a{@?93891Ddvr_O9O6Nid|i3{ zZQ~WP0i!bEr=XY({lL>k^c5+eIU*^3W zGbgX$P@~B^*Z;CJcDRXZvKB;J=Ko)JzRnxrnYRWe&dU`# zy+hkqhVO0DTztTcI~(UlK=H6x*CbVIHEM2sd&#+O*~<6TdU0fQlv`tf-yRk`kfZoY z(}6iz7#83REHGP_m8H(<1U=7gWNGfbv+20pM@@PhixTLd8U6+`S7vLA|FZRo-&4Mo zv{MZStwoFfa^`a@YRCa&$I(SC_&y9MN02_Maf0K?1|t5Iz|4>H3fxI;+5H^pd*W!l zkd-L4z@knh02_IdKr^jzuP7al-UJD3S2F;6UGUq;1cho^4C0WcHh?7VEi&Oy(%jrh z;K(?^k%otJeB>T)0yn~xO2nEp4mWmQnJENn%N<};a8izJLG&-KJdxqI%pfdw%sNR|6F1&U^>DnAXj{#XTJidBPXhvJnde7Pu~qzj6FG z4j@HDd-G#zYWrEieRtG3LD>&a?Z0^(G5OfGIr4OmvPFpP9^&z&&R`H+669g7oLVeH zP+)r+aD$!85+_e)>Z6{{)jsdkiTMrEB}2uX=`hW2-~=PZc=UkiY86Rh0%P}wyu!oF zAUH5<7pYY4;CnYwLCuXR#4}Dtjt@WM4c=J)vt~VBP`_vYwZBI`(0$QQRr%aBpnrYa zS;i=ijU&?ag`?ucO!q&N|Fo0VOEYb&UOji@*UKnTHi(YGEq@WaWzc;)b^31j=qj;61fg2L#GRC}6655ikiJG__C{?kNMZ8P z4*J@>o9Ha@$@VF?VkH-pIiy2PcFy$fAMJBM<=q^|x@FH@y{zIWnsdX@@|WgIb90tv z)$AC*IZ+-h5ECX=Eid)u_j99qe5W4}#tT{tSshbq?#Xu|7)M}j&{|yf2q9a5j17QQ{1!t@Q2pmYb3|{w1Y}~XUBzjV5L(} zjZymN=R5msg6S>3J#m5eihE%$`GB@K&}KHq_DNf34go66ORtLT;T)T*8*1Y z%~kK6kzeE+_@jO_?C#go91R*AMH^jqgBd`eo=mG+F)syGw#GsX}6tcr81oOOD- z(`b9Gy=0lU?QZp+@ev!$olkIT5pqjkrK1WQj9LT!c(cW{18Pv7x4%o!>(0Q+d2-+m z9%{-+pL0RRn1ME9LjCi<)<{|Ga-296pR|1Mz-0=A$1CUEfCW;G}s zQ%+7*qESFO%dkk`m%*-oc3l6=t;DR0iI{7)Gu4{?L`l$^`{F1luCZWp&Tp9D14^20 z=yQsoF8}Db-GmG%9F?)IP(6!uO*8nLz>GV~IsuAXwtQcjEWolGa&hN@?&GZ>r>CVh?ZOR5D+6xz zdEYJ)y|HW1`@Ka@-ZK>kapI4BFNa6sL9x@FqV^L9YWiN8*yZoztqZTC%{)nI*hu+K zJ-$pOyN#IxH;W$T}=Ks9d*NA~d9LZkm3cU`t8K053ah%ym{j_zBO~s``@7d(Yl|#gXJ3L?8A5hk0IzW`gP2qY z2Sl6lkoxifViR7BO9%BQ>s1=2GgbN;o(_FGw60V77~eXx{#B7a@Xzgc9BRQ_dkYGy z{=t;9E1yEQy<_1)DAbrEycDYx8T>lZs|YsB*Gt8k%vxMne?K)S1Qg9SGXZtcH`9aqJnH-0$?L@LPe#a@ho_Zh|9qrS z>{~nAm?(^jqOmt`n56euE-Glyf4jLfs{88(bz7!p@zL2b_>n^D?DVn)UVvO^8&wO$;al>(`C)h%FHXmUpA~vRGfMC^c@JDs#KP}$O8v54dNxn|6 zWtNL~KZsflylBDQIiBlZ?``AH_vtUUBqpC>r4$zzGfmMdKC$hZ9uD6MV`Esx#w(E< zbjPSpUO!&X$X+aae6VOZMC;<84wUs9fgRE*_+&sbjCb7_6d=7BzX8_iP5&udq{&SoftYwlLLWN|<3+$#rw~Vfnf%UNv?M z@~Gp$T2_xn)cWVm-aa#R_K@z(Z#_W=Fx37@TheI4^dQC4pr^U&1iq~|s;7AgHz_sJMOq3yLq{&)P2`CUh6ouSD+s|$d zr9R)cu3xdJqd~(U@)`XVna?2@#T36}!*|AJ--~N>XZ2p15Qw9?>o{!rN9UNcG&eoZ z7{>Twuj&1P&;kX|#apgoE|Sp7P#wz{E4P|ZpZkdN%$XOAu`0nN)1$3xi?FU*nSK%i z8f&YYg!-m_N0Z(Ys~yaSh20fF8DWDzdX}fWv+c_q&6A9(GV{jst0joE8vSTvsuyEk z&q-fUukS_T-Lx()Ycp#WFKZJ*P1u^x=bx%bn80zu+<6`DHZ&VdK4X_br_)(Yu0J-= zq6(+lJAksLveFP)<8e1VxP;q^UntwfJg3%uLo4%1GAfxm zyzr;Y7j{1#S+%H?r1(uc>Vp8bISd*FEtj^Dd6F#A8%;oOHbg}<`;BDr`Yl-}=kl+l zz*oBumMJj~UxUbhC_y-8r>nDtVdfLPrWcCqReW05U3AQRBCXRLbKS8#Wv@ed=F#+a z^szqZS9Lb&SUYsV7FPFUFKW9JgwHA4v_(67XfCvk&aTPMq|$7rUA zSwK~?|L83tE0_#xKX+;6kAmXRYbQ)z%JEd{oYzQDim0l?*4EX@UBoSPN|-=Mvu-bf zm(YfaXGFZm%Cd7+6A+}JAy!@wBGkSO;6O>SG3j4q zY-AoMLom)1u$d@9FgRu=ed&AH_h_=e52Itp@R2B9_xrwKjl{h_1dT|c*TVfJge`E` z1udGI(GODSm$?Y_>tQiCt%fgMIjR<51?= zU9a+hsmtjxku%P!AZ98WoNO4~?79jzlkb3yPhaUo^p4>L-(+a!WW`=XAy07Qn_)I0 zHX>`27nOM4*@vT#+Dd9TgeA_W)v9DEI#=3L(jt3ggA9jFLX5jB60<&sM(VkT#muKo z(UlLv)<0gl`Czc*Bwad0=F^^l@T}6@g&Q=jui=l4gb?w%Ecry6r1p%X=t$b4i>`-R z{A<3xLUd$qk!`Mb{Sou>6eq`zK0VDUT|Fh__28>0rdGw4&i4HJfcZ7gd~*T>-h^X^ ziFdy!uEt)OOML_xMszfjB9_h!CKaRR^+0vw%v4 z{iV_KI%?88Cc6tVGeEedImmR6s2?UCVl}vKv|QB{L5TYm^B+JZZ5?Zk@xBVUV<1Sa z*QE&7#g4b3D;#FV_?p8RLRZ#OL)w%n7G9KM?PNg$T%DTc7dT9~ z=Lu9z_dpe*eyEUzW;WWFa*)-qGK7&5SC5M+5Wdq+Why)<_- z$FZtG$;^BXcbRqPyYknbep35t~#bi_u*GTRipmqxf*T!60hMEo!M3l!}jpkGH1Q zuScw)5*b;I1f`2Y8s7EbkFt5y-;dXbw*fqaf{Cu&&6hPbtc>ySqW(;=+$TdGf?6UA zFPRfy1jS(uVpIV5wqRf2n{xON?2LWo%mnDxvUz!4ySz11H20;W=hipq#`n9sy37Z| znSaBPw5cSgC#+QxMt#19gABJv!7v}?y*a=CggFa(R9J!(_=7*!sQZq@Gzg)$u87ej zqg9y{v1uAHPeFf9NSpz-j|aT2$!_`GUklp({mAtC12B%L_p8X8f13Sq_xr;}Be(k! zOWO6IptvU}tN2<3m7<`qxnkvc%bH5(F6Ch+(6r=?jqjx%UDWSp5AXgkZ@U>)n)xvM zUh^ z^L=|*NLMQ;OS&IcQ$Cm>=)5r#o1hi^d4E&=20XGLQt)=iQfZ(Z*#w^v^2*ab#JPK= z#hTB7yPZs;M@ZO6hL;eqPgt5Uno9RtJxgUjruoZdJ_Oa)3zLr@ioXKUiKz4}wC~;H z6N;&3l;^*9ZEL@GEQ>y$DTyY`{djHp8jJPRT5)16Kj80YoIIum!kSqj>$6K|A75r+ zt39VkZ5Nz19e;V;n8M5ZjthTG*?u(8bY{vOO!rfw-LWE#9`dI$sP^l9D0Gxp+&npI z76JVr$+BV1nwyn{M_U)V#}@K6g+bV@Zm>R0G__l9^NT^>h+Mzfi?$%)^5rQHY)vqn zb+%llxfFa|>I(ShAVUJ4Kaj<{~|b5py9%(Z2zgSl<6mMhq^ z>mMBZBO`d!F3R2WedqL~-CEC9&nETP3cg{!GQPSJ}3@!TDibeYwl|J z7hf~-(@5E2mvrxfIz}f;^SX8j-6x{cg1JwERq52xRpVB#wS(!FTvWaU!T4!f zK&B@>`D^FG^?aZS4cmw9eAUklR8ood_dWGs_wUf=p7ITM=1j>R3wa9}sM5lo#OFZA zC$>xaRtD(JUBF|ZZ^xF8+`d0`mDkUf+FMs*>Jep|acpGU?lRMvHssuI1b4yR2e*)j za(PllA*jjQ>E|Yc-rp8B6|!xHDY>Fo7Si0?4d48b`Ix%*heZr6N7ldP`9TFU?DwnN z{Gfj6l>VM=evy@TZ8NS@)cG{vI5s1ZGJRq{Fk9b=x&+-kg zZ(9%E{DCXl8^H+Iy&lOB<4-^e7cNXr53K%q?VaH;aqpP$4au+{SD9W=f~YBm9zhH& zfwne@p%8d@n3jl4ESj%CLZ%CicK+<)*r#g`k@q=8*_l$FOvlhEm)yiWtdZnu52F~p zl&o(qe-`s~38T8$(bRKxh(6VuJZjpsF@bwGJdElp_l9w?TcBq*=$BKl|FqSS>FH^9 zKd^69*APz6)&g)ycE~nAj>XnC`N~MX2szn((1Kax)6_Az<7C!Z%9_lb?3PPb(l4bW zWR6qd6^Vg!YTCJ}kW=`#&^u5kXgIVn^;2GS{TiR8^e^M9g_NpV`=PXiRoE&pShbQEdIuTQ5+ZbR?McYrHBgXMvrJ z!XV6x50bn}V0v(M)$F!(264@{r#F60!v#;GQWp%}9Az4S4pv*NopMpoi~t(g8uTE@ zyrA~*)Fxh`>iaVq=xQ;GcU>9m44L(Daw=I(a%CKjgV=jg1~cEPc!veks}^=9aLs>k zMjuzXfO2Max|GPe=|C)N1lY=apP)#)*KKH3>$YLm!UX8~VmA8ao!N_4f3Y_P21*b~ zklKQl z2b%*4kz2NPV(U~dZm1L3?e(FiS4={?j^1MjFFK$ATQ@c{GYhMfU)U4N6Pa%d z7vbu(7qwQH(DBr$f$r|b)-+|W3?;3wi0*iC&3w>COox-V4<9$$4R<@#sh~_Z-O}aN z;o;%BTA*ss129db3W#3+5_|6cJVtvGR)Je{)>>;E+ ztsKaC3#%G4+psc_eRYoIpPIg!Y}dykKW=mBp|yH%%rwZlZl<Zd&5@4c0R{C6%TqMziaQ#8KF8Ph1n49|1PO1H z=#Q01A&x*_4g~}U>*7EM15fz8ME`%j$o& z5gc3*9$_RD044PLBFB+c6J;cAgeu&ZDRmDwu&IV^!^h%^24q9tMUGJ$Jc9ciwoyHtACL5OJ<$6mn3Gu?JHMYhttBVjVNhWBQ_yf969NO4ZxF z;`I^zzN9AG<#BYZ#HsY496Y~Jd4J~Um)SQAm(5<+RoFq5~JT57#(?OU?VAQY-~7sWzbZ^`aisFj(l(D zsF+>~!Jux28FiV5%JHn^pySswoa?36vxN_Ib=}N}n)whkW0U~D?`q2?Y-3!%DfCqO ziHzF#-TNcgDNVrkGkqsde=`@}J9Il?cVw%FL7yFxe0OR zra%1bA(3uI#Sn6i*AHJ&E-@J|1EDW_F3JE5zz7EeJIvGg(`Y5+erTf#1nW=}6d`nv6j&DZ_MO)LzUn``9~<&{1d}OklpOIYlw=jwPk1Om(AL%-RfXiL;sj^U zBwD$I#;Bz{EE3)!!YdLFOyp>4G@(`|DXR;5ANow%K4-FGpCNPZI_NQRvv01iWK-^R z|CbrMJrYWF6?>k~0FGZyLkV8*4Wj5I=&}9e4i70QW zrbNUu+FbSp(PtS$SUf1VhT?IuD7;x6Fp=SU6d5u3HIK~c8b=0Ar2@Obi?W9v6I4{U z9t;_c>-K`pr!|QFIY6N-JEC=mzAEPJ$2^CC{rqRoMro4^$7DKy;yI-1s_f7)G!*r6 zb$%F-9hvHz>+_j|wV?>nq3#r5glbNj=V(;~Omw=59H{`^ zu6)BD3LR0q&gd&EP!69z?YP>~P_?I8G-PwFRf#;%tJP@9R%*!GkLqIe4-F}BEeFE2 z?(V{FPB+O|&I*Pr9of9C^owr4;1}HxKw3IFfWA51w|vnPJ4vkGHX0ap{|(fF#kKU%v~o|qv#37_N}@8 zVA=#|F6UE}=!CZ0H&)hrWfC|`iqGAn6gX~7HV7P$3z5*UR#@CEo?Wc1$3pYc5Or zr{DElTbPK=*vxb+I45cyss-AwMfnu7ER?>nBN1W=s@s+}J$5h@lqI8rKs$->G;Do# z6%{QuO%xD01))8{0{i>1`}x0anELRo(=-0zuRv0FRbNJL4Fe*g0ik6Kz(X3uz;Rt( z#4D~{%7Z$DV!`9_Cl!G!L5XED>GaRG|*a|bQMGrwe6h|QxhB@pzaC9X6 zH5zabi$NBXC#c8t^J2zR5RBcivE-}U7I_7JUd@@;Z(@5LXjiuV?-7J-vNtRN;NZA) z{<`ViZGK#e0&oe6VLTzLb8`vsY?+`jygXzZgs=i7r0%N*6hI&Fef;2a!hiG>UYy>= z8ErhT-y~>$hXp8R;IQx+?iPg*qIVPWjAP0GE7KuFh}~luXBP3wb0EmB`&&)L2J8Ag zP&p_6aOP_3w;d@{x5*hn=t)-C)cgF|nFe6NDn#bt6FPjC&CTLAs!k?tT4hUwy!1Sx zbz+8l$FsaMoZg)WWAqYkLQHqsSCx2rQwR3kpuqa;eEr`lF0PWT;{+6r)U?kHKd`*r z{ETB4T8>WF6f~wOTi))hR)J_$q*3C_>!|0CHwi74U>jDp z)n!JM4C<$ip71H+AD+_GCN5HTf0at#5LavWH3RS;G-yqjs*yk;B3z<8+|*Uo-E4KS zM2%k4zGR=I4VQG;40lPUlQuPd(+6Am3UBhk8nOfIn!PAim@#RK9Jh1$ z+)zx$*tux+W7vfpnfCF;hTT~ChEgIE`eedE{1im?QZgN3L};6fo)23QFZ6E(ZP%U- z&8y+dpeyM#&o?}k3zM$B20EQcj8Af4C%dyIeM#v2lqUU-WZuFP*&kxOXE?{;k|4p_ zKG39W+=LG66p66lQR68QY%6kXN<&!{E1V&A3D}028VIBKtEuJ4-SEhCVJFtYA!u6qVT3maOf3xXM?Q9Jms#_`IX62l93B;XLzDBtkf zlc9wH*Kddz1EKvWBL$!PbHK>%drpf%m!4|C5Zk}|4+a$Xw(T7&k!z^tpX8Bulz+n? zQMk>o&jt>haXb*GSA4^B2{S|C!-(!@+1R)8Ro?oGz?X&y;8AlvtM7)0^wzWDwJ7#6 z`C*)$vH*;P20#Al9cs?%*tYpzk~<(a2KlIbj@|3YXDgpt>WG@?{U}IkN#F}x_ zBE%Mk_OdWqDZqBAKSK17Rp?5Wg6rxK2PQl9F@Y`Rz(x(C6OGWF)92_5*KrqeQz~=> z0@PI(ZC~OF0b_zx4_-u=_t|q6Crnc#p-N|}+TuRE?j6_GhP?Q}v+@GVvjrj`9IrG7 zP5du!oNnzHHr}D!e%#m=`AXkRrmUs#tBZfJ9P#+C3EDw-{PW*aqkKgd0Un0d`Wxk) zYwqdzYExnU^J+RV`9poVh}DOCw5v9*Pdj4T(f#KGslF#FLJt!++=g5>tCTH1hCqj; ziu}!-k6D4!58+w)MUXJ2a%r*uK=(F3UWcmg8??wETrJY>&4A$v?Yyeru2)H4_w9Zz zF_;y01()E@99&~OF@%tUSZnce3Ki!Jlk7y2`uAk>R}3V(znjz=ua(bIWtr9BuVvNkTD*Z0=uc~TT_H5EmDN2@zHJG3ini)u1%|L+-N4p+{Wa@#_et+EU;~i~?>_B&TNXi+nmZ&Yt<1git+Nok=`rGN%P4*hq!VB1<~5Uqjs-gLul@{04$xdmOMn) zrQ=hjj|Y`Y6GfiWkDa@B9{<)QWCmCo-by^6*;1~d!rdN8Pswd%uR(}4kJ>R+d~2^` za(0ty{|jaMXO;p*PJqKm0M2pLNx1O!1dqHfILs1s$UrYRP>;I=G@n5tO0@~QwX;^9uB#D8BF=cxlnGT-746K4F*)sYXaq;W1lCbt ztj@jaeLQNEv2m5lV~2;mH7R_uk5eAz#|RMeN|k-&o9u3}6@??uLM=Aio;vgnk3 zw6d|olXB#$R&~P@2krn;3bGevmIc93+hj9BCgj=|VM8BW?~&HhiCrRgF~%vjsl>vz z+YN8-Kp=eS*DhVO2=#qi{zkRDwtPyLX!xR)?Qh~MLDLwp_rgF6Tjp2Q2d2o`o#Uk2 z#T9tux=T5|Ro)?Uu&R~U!BG`I?2&lw9S3WHd%lN6ygKcC4quqA+}9Ap-%q}}twfl^ zD}o;;6r6igX>4PO9SMsy@Y1!FciQ#yiEfcS9Pb;K^#OqwKOxsYZ)Sew8?LMS9~kNQ z9)ck!R0JY(6Os{l1q-{79rJcQZYS7uiaY?IP5#(AB_N)}hI?H8*Eit%z=q_;oc!}f zCKLkms}A2h6l z2eUXl1e`J85S-?sQQ(K?c-lBK<&GR&2*mtAIFTlQjg|B3gcGYzC0C!qRR_#1^O~)O q<|gIe8POLqbQ3}^__ML_<-#oqb`GiQ5{ck^%Ol60#`DAj)4K~M*qY7;!$FYfpJ@? zEH9(yXR&)tlt4TF{^uJNS)N>}I%*a|9fDX4n(n$+PN@9h*sqkTSOop)!vp-N7vO%} z$9qh;IH7mAc$8=;w``E6X_)=o{FUuX1`K;<9QM7#zOTr>p=$Q1Volvw-K!^>u7d+% z!Kn=HJ0VXOJ1(miJ+sTsD)SpP?5_LE2FkuxY*2XEW<2s2JX!NUUehh+%yX!^t4qGO1O4rRgz@qJbYPgDg1baTYil>*?yP$Lp)N0CvaAJ-8Y8SoYql6vuxLb3bA25+}tdA zTPuHukZ=qCC`_`6U856U&M=1R3C>Lpl~tzz@l-$gL$B*8EtRFJs;b09VztYQi<#Nk z&g(soAL+sbTMZ2l)t)3>yu5yBZe`|?X)+$+&Q7N{6Q-FVnp?`=74m`WP#1)3T#@ldOxkw!P^rhq2zkcQOYz2RLr-V95t)zbBi#k) zkYES+%owXz{!vaW%5lFJ-a}^iK-G#(tzEW}hG^hyiO00Tk#lfqDW_-~->Zl8(yaiM zYUUZOTNsyX8V@Fe#0rq$s+Jp6e&W6|I^I!T#qkLklk@@~<+P#RV7Aan_}sa4dx6r3 zj*|7gM>K%Py~vO^Jl`07TrWhD)^d>Ta>te4%6E#7#3ULIPAyN}QtPLci1Lo7w-CZP zN(~L*SsCbBR>J96zSuDz6}j*A<%odQx%U} z!26Vzuh>Xw)XJAB)*uhp>^lGFm)oBj>gy${*E>p72pR=1EFvPJ)ss*M2M0^?0*7zu z5zi33RaDK?j2bta=3lKRO`;R}6dpHih=<$DWTl%jlVh#&V~}X$(Q+i%ZpN*Pzb#Zi zg#P)&oB6}R(^E$`JE-PqH?F$A^eA@9iMdi0DngG3F0aRetP6o9){aNKxDv;o`#hxb zIc!LhGQ}X(@@-Ce5qrzw^&wgf8{U#t5eOyor4#ZMbGxh68 zz4t_G34@v$Zu1EebUN*zn%DfKjw#nXPNd|fq2`*hs<$%PpQ2RDAwd{QS=~lM3Yv)I+Y0d`NO%pP* zT-u<98*OG`Uq397OqD>mpKqe`j-x-Ij&fsBT7#J1Xtm4}tm}1ch)(fH zn-0YUwI3PxLd-5J!@Pk3gv{cIc-v958>IvW1S|@Pf!oj^f-5b@rs}p*l`njZA(q5j6m?()8S$KFR$^{>n zILcL2aJV5im9?L_EFJ<42ET z!`0SX<2LDBj51NGsl4NQaSHfB`?FHX;S$(@m6a5M4WYf-l)6u&aHef@^aE`5BT$oe z!|!PkSeNnl`WHU0R&|d{y2@YhTHnNnZb4;$HElD%eI8ZFit}_8secfZ`^l}-o7-$$ zz(4V+sO&CfhVO!Z`T#LI+$(WO)hn!2!|Lw2ddhf?{1n^krs844o8hnC*1mWq(S8Xe z2uWFpnX0Ha@&4U9lB1jwl;dXaTTz6Y*3$6tZ3j*OgDU4{OFT4b%2p z*$-XBdqMm6ty&68Sy^=c7>Qq@P$(0)&vm}kWa;K6MBVNPJB}%5XO`=?j1`2usY{Os zshER;eOdTiVtBz`bbiQfW0|<2X4_g{p#9a7nv}FjhlxzIB?m>dc1c**lWb_=Kln{V zsygtj986@bXaPLmJ`I}fq9f?c_!N1clINo2TZVXG+%G+?`C9`dQ;}!dRJ{Qc9VuB8 zKLZ47W=cAa2jd7{mwh?6k;6)wY{UCa;-HOr#)iigyWEA<8Dq99r4rXak<4#j_wq#0 zB}yKjd)$qmkVG^c9+?9~9?~ZF<-ZCtd14hC@WcOfX--P&#g7rZHMQHya{GlQ;#SaT zs<%yFjH(E&i7O>!t#zCW@{dsTmR{k+nw^;t&C#PI5g_IhL^(t4b`Hw_*%z4a=65EH z*^lx|7q~bRL&5U6;sU2S5h%}RyqAw(TFW5fADvFww1h=UH!+c#jf3?Y{U; zYUCJ>YP>q4-|?Zr@!|Y7?}u~&Y%a=dX?R$B-VxLl!W@8OY5dQZ23GTC-Cb37FJ}GH z{l*aT>`3==Dyswjp58|pBQZbe{1~+%6*SHyB`+rTNjBQgVy4dyP^8RE;g{{0TU&!I z#ox1-nOPz2-N$22X9U$jI1k;9aMJSlA4VMa)wu{?Pf0Qn8#RtR(gIJe{Eoh|q*Rrs zg)WkC^TVAZUI#Y1kN^IF@0^!11^>Goc252#&dX%2_1y9v487hRBf=P?dJsD+^6*bG zS7vz6O2qYLz1Jh@rY@bR%jf~hDclWPcRM2iL zj&mQ1pW(?4AIL>M}e;xtlXZsggub2n2KmPh-gyIuuQ~-e^pqzRVb)3u*4hqhWKi@pI?_0}pAR1k#1zjd8 zzJJ#!n4OtXP*5TegvehI6k=%Y zi_coOf0%MH%7LeSY%sCp3ZdIl+k#(V8cUf`ls=I32to6;=nYLhiSQD33g1$L>-5Ov zWF$wgUlJ}mb6^EdGqhP6dTKf!nCne&W)^vVdwn1^Iu~%453w@>N}3AGL@C{dYF^6= zhTfcH4{kAy#!KCZe#l(zCXyP{6Jv)aD zpM9D(u@E$6uhdG#b#^DJ`W}|g{4I5}s){!wB5k1e2tuG6^eJh2<{1T}Z-;ef;iBZC z-wHcAJ$dzeY1!P8!W^b^%bE5#SiEd6;VYQVPnv|rh0?5`87z`jw$lk%L9t7)awYIe zJ(Ogqx67R@YI0qKixV~R)MZVD!16Xdz0Pb{VbA;t()FuR`*+Dre4Mq&nwIeL+o`EE zmUN9EoT`8}?K-gGRa<{q_k?B1`iZu=l0T6(>Ky|`D&JJhtH<#J8NpF*z5 zT!%U2GLX4!pAddq+$zJvH^cpiXz*C9D&_xN0G7Jg%ujdboih0}(YdwH z_1WC2q_FgLDUdARd@)Nfwjl++uCpbI<7S6bVbN^v*8Z5#Q@*&oWM#zKA*YF{3{?y9 zW@qN7F2~&bzC9D>9rLDVLJE_PyK<4zHogZtCAHT8uVI28@k4xvTiuSMA~Yg3dsC?r zY~!MI$Kja>hwF5W-M4gM#hQaBv$YQKwl4usIjenUBv|Y~Ua+Hcd!b`tRrjgFxE7AF zuX!`9?G2hf5Z2Z|xSJ>E<=u2aFBw2Onw!h`-i;~w)GFg3{dLj^77-NcT*mT-bSmHL z`hzS7B9+gw!{$pIaQ-~8AAFhg;h~%CrFGB1WX)J1!kP&_I&a9%jI{fJd7;nt)QO4A z?`WkbeL%-=l%eWwdKvkyZ_jHolX$;`HX`FzpS=;ixVShd`Y`O}md-0KW;=;?@iV&V zjZ-UNMf@-uqQSD^j401fx)4cQgP4)Ck5$MeT*Sx6tE#U^r{kPc&|qa{ zqSO6Nzu!wTuIlM@wP|@D24X%4iZ#=5#4kMBm<|JuKZ4m{y9c|k`%Mb-doL6fXLyHm zFeRJ#w~cNuMnn-n=K1)n`A6>Wk8Q^TrtTeoqUT$y^FIx#j7jI9`sCSq^)9MGRk5Y9 z@eUOh4u%ji&sgu$&|nC;=-*7F3AIabdDdFkhw#&SW{R_@B0lG9YD7FctP=jkypWNy zA&e&wsPH_w>&K*+Ug9XwD8HdmGpCNiGG&Jc=f(a0$X7~Yv@gd?O8FB%HB&tByT8== zG&&cF|8|ULdnV?e(#GyRKpK?seQm?6`536@@)^RxilkhIRb#M8NMG1D69gzf?uUhp zmX(y3!|$JfTUKfPO+WmQWyONwd1)xJkn-4)wgLkD49L99XC&B^n&ohiud~85o(|vD zDIC=@uYidVsj%eZS+JrGMcPH1Spg}>Gs&i-2kU;S_bO2>J-tj=HZy+d-hHf5Dodfm zZESicG{v^?cSL|CXMIG0`&c;k2yM|oEG~0Yg_d@@7n_c?13{h?>pE#(S zN=0cq6kniFrDOnJQ1o{Z)+1OcRtOw6(}>)1VHzjLj~>GJS4Q#Tbg&3CI!SV$tjY)= zo|Zq)o{29UCC@r|W$SG2@rda7qDDDr}XT*Z-7v3(TlT51g zSY+(sgoxStERCR3$q}vbo(md}F~Y<$$8gYW>-$d%OZgwx-EC=)ojXGGN|bZ&f^viD zvWJ`#8JxFKn<;^(yIrK&B?36-Yq39m@FF-~_dj^n$JnR=rlY4%m5VcVyjHp^?7ig0 z965&%^V=g7>Feqhs!L(P^I3W{WR56UPtcu1u-(7EMrlK5Voo9t6X#d>WCg4=&Bw=w z*9eK>6jaxn*VQFcP-w&iZ>Q*EEUp0!=CZQZjj%+COYpb2$SStI^jdl^V)+kEWi&~gzu8*7q`$q=4$KuyA}+KJE$eNB|TK^K8$kwF2sbt4x)6|dj}=j&BDmH z^R86Ak2$&CXd>lD@J{f1Z;z|7j9nf7z{hRWyl+Yaql8G_cjEItvNV8@Rkf1ip2jdI zl`#KFH!Ko)0x|d&`z}g!;m1cas#$2P=3x53&E1^RAlDE} z%j}|+uJ|g;wa1w4w+E*!=UaoCF41$7chPmYfg|1l&yUzzuluKfghnGL5yaJdDCIA| zEux1JA+~W>-iz@M&6sdr&{zI^w;?#**bwUTfXyzz#_>EeM4wsP+S>a0QR;qkrrT`n zzTLU5BI;~(?gHmCOPPt8UObP6R;Ul@nSmAZyc6Um?)Q!G(`(=-it?vh==RHOySng3 z#?sPusC~fWysPq39{y9s1Y6A3?Io@HB$I*s2;yy&m-%~q&prV$b9@Q7rY2F*`B+%I z7!Xv>)1I?z`~Y(Q#MV&&=>%Y!2&ce6iDSE-GzR*h0-``hKsLw2`HJ;qo=Zj#^gVzB zvsPWy?&8;0I+@25g3R$}(MwuE&pJptep#XlWZ`ySM3^ibEzbOWxtT8F;j@v=MgS{& z;v&Hd$nArB3k1TGxQYPNp?(2b@6}lGW7g3(G$L7n`_1gpb?@E_*t}Y6yE+~;v<$Ad zouKfs!l~Q^UQwf86%FFo>mDx#B#=UG)ap~oLYtotq=!#|Rb=qGbM`SZD}G>5UH;PC zyY$`u;O4DYByG(@Ovp=^Q7IB6LI4CDASDzYFGGU3l6{wsj-IItC!nBc4Ee6^hPTxg z8l_;q-5;3q$-3qH4&*ygTe0IiMSP=tPWE$1nf*tpsbgNWf%lx6Enzg=MPH46^mk2g4=W-%`-+;R3^yn>$6}GR#t{h9d~= z-rphx>vF;Y_ghxbht{=6L)zCBkkD&JgyxJ90ewND^uf1^B%bM|4c;cSrLcdWs5BKG z4*>Qo8a%I;Aos6(6+B+x$l6Db;QuWDP80>L_>2V2YHlH5l<$2EWIH}4ao}SpcdM>{ z;KUeAJ}77T9(X`el@=5hkpX0GN;ARp>jNU(YYFv`J7@sR*&nThoPU*&Qyu%}jT0w9 z8RPFGjidijL$oRQ6b@^`k^6vJGM|UiisqC~gu#rW^}!3Rz8{M`o1hiRE`)z4&0@bI zZ+XPydHOjQ6nM&n1W_;}n@zwzOL={ak$WiO>ju3B5XIw3cOVT;dLQgj(6OLjrDbUD zo%}Vx1=jDjm>mBrbGIbcrg{0`_U54Q1zJ;3(h1V1;8Rq8ZYeeGdCN}KsGcAGtq5BV zbp**BBBDVlgg|oEE9*I6!>le3?)-Ngo z0kA_-k@F@hXaCG3kD8T5iOaKZ1{>#={+IZ3ml0X$l?v2sD@OYx)C_i9Fd{vLFul?w z=yA-2(vpj$uhc>^FO#=cGr zli?dVhI6a!y&$I-nX5QcACJDr#-HpEt3quRmgLAHy3idQJcDg~uBSruSFV!_2(E$_ zXofr8Tn8+&LS6c$6`1!mttU(Z&hx>!9_qSS9oNkl#6V6wg@|E_oZ|=czL`X{2fi95 z1<=A`T4vOdh0nCz3^w}21N5Xgj35Zz|I(4-O3HL z&yL$M{UTDk|D`Ho0Hgn-jaSgElno~sZ^3Vs5QtwufT*{Vn6wPk_`?fqnZHZ-f>AcnM5pkYb4FW- z@1Y#-OcR`N$60H8&Ev_MO}@Hxr|n~OxtGAOJ&jm@7!9Tm(sF-|;pyT6sWT%tHg6;Y zttBw;p|E_k6~Vp5>i|Gy&i47Wdl^y3!0%;r1(VmTxi|U6IK^CK;4Xa%2*@<*fg{ih zz5CT)216BIH6y9_Zekh+N0O`DbUsFiJMvmc;INa=jIQPrM53eXmrM zPAa*j=Vc zW8!e_wFH_26!}@qvuWtuvt4zybzhSMMJtMi*n*=!R1x!EoPt~xs3Gs41e{(=XnmE` zHIdD7qt{dP$QC|mTI?9F}NgR}(zjsYs;1R~ZrTCtIZ z1>TsolnWrZk4x?`a`Z8Z)POt|+KhGoFm$?t<3hQEZ&TCgZU&O~pDa9_LXfciLfT@5``b5ni7yTGd|*dLwc9^WK%mH1II%KV z1MJyHxR2_gTSqt>LFW7|ZTi4lDp>T%?HL!i5^!%IqyRZ!7p#dgR~)`RKY}|^bM{0; z6#Y&r*g1d$H(&0zZv4m&T~9V#@I3jZxx2vg+e!L!18DX#(yfoL(V^o@QeVgi*2O1J zi5q@)q$V9y+wwpTxXOF6f$0HZJK8nxRo`tU*74h`pVULJtOACagV>#^SJf56mq2Fx zDt+pF`N(I96K@_-?_`SM3n=1EPpbs=c*2F!{F<4j-G8+M_)`<0Lr2lm>QdnB!oAvI z7)kh#xh;#sV?LwN>a;gq53PTGeLsV(UYGv^*k78Q;k3q)xEPe6aZv%GydnyS-O7^X^Ng+t8DY%tRS@0?NKBAx* z6c|sc@t{!RaIW}tb+sypk~cW8_MLAi(dXCa39+6m?YqUEx6R1-~wTY*rrA9ujeNsp;xnp7Num) z0xDis+{amMiTwh#7JWKu4)flY)k(U~H8YZ1MV+Ic*YNo#NGU0|9RE9W5hxxwxAaX& zez7`%4@iFyjJ_#c?I)7jeB>EJCb<5c)Ad^*Y22Jw1V_vM?xn91*r(kvJ6Gs9*HwOC zkZIn@XFH@QDZ$}PNeTS@Do8jmZg(;E(h)Z8!+KP0;M_?$^K~Tnjzg^_XesPq}}iB z@sT}A!=JTh3pU&Paa8id5+$3)=&6Pf14;S2zV)Kb=JO80X0Cdc=i z@Z?lzOOncxq9ch?9V~5(U=m^aH`)JhrFln!pAqs3mX?6s4OLTm3D^ru7ZP+Y$!ZGm zzYEg;8K$cZK6U5yC>^@bz>)$ui>}G5@2XPYplU0cP0-zIbD<6w}+XlD&peQE(j0wp^d@C>%3goYI@9%ma zUT)(+oClVwPkQFkMiJ=au1Vi!+!24TURFsrPKw&+y z*)oEdXHqM)q3^GX*?NgXAUJ4EB!OHi@UV8&SGxQA3a{Pa2c0@Ay^qzBmxsHfo6=oc z5O{P2=I7}-620(iNIa2Y3K8bC4!ycQ2wmi$i$qt`+o!Askc*3p2g$T14WLlF(fe$^ zYO*d0FM(rYa8jF@nOTr4dYRkZU~_9Lk*}IW-oQBI zk`O&IqA=Ck=c2~F zz+A)X%w1(udtJ#3d{ZlRSqmhC8ubN{bY$q~DRqA>h)HCPv6W?u^WYSK@>OkK)B4X` z*7Z;*X)sG1&fH!O1C)^UWsk?3>#FEktic^yMIW*Pj+NOAoMnmPv9+_Iw6{&C2Mf{% z$>*VFoond!3x$q!Jf|X)_#p~~v2A>QzxrJS9SEiVY`4p^Owd(^@9e?eqrPGu320ZA*8m1vPwX_0QJcL|QyK2oBn~UHQ8M zX<@qH^X2ml$%wt|0C-zxHT-E1OB7ayeR^3+K}dMji&0g~ zcC()9RfIu%P*YU}@C_XA6(mmVp}dKJ^@)lDVc?~`?$pgwjyB8o<|bmomFv*P$q3%> zK34JvF?`PV9)#cikhm`SaeKl?H~uHe$sVjBB5;5@RaQ902wrL_VZnEJro|pxx+ao1 zyc!zAu{-HwL!qMprK*0ms^At8^=JGrr@Z^{4MhFkVcu-Nz0{rc>Zpn$Go3!N@R^uf59f?`OMXTwgfgY~*Aj};td^dV~pLe~) zQ5qDgo~SSmgU*ePhG8cN))<6Q&3HvDdVhTHd7QoQ2Msns!uC)fL_AV_9GP^e#>%`= zNA3fUMRY$fyjkKG*5?5Lv9yN9#{4rMZ*RuEg~A%Q*@s)GKCq4gxiICVlj802fpEE~ zCszNo?)kjjDu?UsSlH^fU#nNTkL>R6!pzCWib1AB-mAy&n{nY@=;ItMvbWz4J3Hj6 zip4E4;(W)wC$IO9*U_7fgNefYV17Fjl}V1|5qm_3UByX;jV-1%))AM|Ydv5ox+E;m zz6hzF$&isRK>1j5D1Mk9|8Vo?l(pX;U!zXmSqn54pI$0t?jGwa5pDeAK#QeD5o@>SHNOSofG- zJ&;1IYB0FH zLO?kSZGHB&dL&Gg6H5YqPbN6TW?A-tRMWSqRs&Ew5~TQ~8t}Xr!!H|#RY5@;8vp&x z5l={5ysXp~SUg#eIJ`Dtpy_Sv;q=Uj;^SYQcdOFcF71Kn{QkFW%8Wd%EOc50{%ccP zeO+ns_U$L&8MSDrnIE+vm01Jf1ax-Awdz&EKqqOOZoxm(OkWy&vjrzU;&iK z#{;cog|p1M$AzF)tZ#&3YtoRYFqkMMt$B5A@sSjs$9#)E=W6B(>nHE6H2}$C>zb)| z5q?qwh(tFJB!W{K>-)M`Vl6=ua=JHLTuM7>PI35kasmMpO&ftxstS`y9xJl{XHbmt z($rK*vBH;oK1)_QTc`-j;N&;=Lr7EQc;8uBTg&Q(1BI5I1bo?{St)VAuej+=oQ+3T z{V$zgjX)jE!1Es6K5*KK+(e;SAwc+65#V5c2Bd9#qTVJJ3L>{_ioBL8)|`ux%~!bL zw4S-xKn|GBw2SItpGC}PYcLf8=q-s3)d6WEn!T~*l-5G=SS9kEF)gt;;|L(#I+!0o zJyN&r4C)>8wkoihLVUPvL^c6>z7xlLxLd8Jq2bIKP$2jZEXK=&NEnzc;0gyet0E2` zv&=Snn+h!352!Jk>#${M>1bxS0S72804aV$p=H>yY|NLjoz~cuI`U3u#=DNW1MO)Ba#^isXIp8S^a9lsZ zW;$TW{6Hx@ulOnAjPswUct=i7?k~0%7F~?4xYqPT%W8fWQy*$$CNm(VQ_ z&%9O+@eSbIDF9J0^QcWdh78gFS?x{LoK3%{!+9bY**vge)qZTK;8WaU-v zH?2Z5e<%X6VyS)RRpav)0pdurN$>lrK-yf!aU|)(x|c1umQaa3;c5EkR9W>}N>=f# zUXi)98Z>#0kVtL}bxx4;A@P%JNQ{?@7OE7)4e3Evikh_0L3imK^eK`SZuA)fdkeJ&}?@`P<5IyBDvm`;2Mt}zJ4 zo!2reO$8Z-gxYO+*tMNfw6wGU9Bl9ViVhCNMX!;pG2bb7HM@WYUlJZSm2d=f*YSv= zlvEb5YztVE1$KiJrw!u{XGr zJ`LoPZQ+%Gud_6PI+HG4ZjRRn8O0Jh<&=xAHXx2$305v|!~%PJdmreNe7xRMwxry6 z6bJ|U_W(~5XqMlt1^5P!T($}UVNRO#z2hKPuCCdckhGoK!OEoi7MK6Fl-3i(qVxdB z6lcu8p75d>FI(EILwUkyjV+@{0Hv_FoIP0}7^BtQ3RlXP`wmof!QR_#(6v@*?6gx1 zU&0gQ92)RwbuU;Bj*bAP14m#fpAWbaY(?v{jk z&PV0ev?)dUp9z6#bOrJS)wM+Hd^oLpVXgvb?rq4-r<0BBE2Z0x*2AE+KA4^ovjEQ} z+f$CPQm>`wivf$3`yHk}Qumub7Exq~O9Ho6Hc_XqRMwQhDP;2pYE{{(QGf4WTx_ec zf`Al`8we>6IzZr#$ewwQz537v|IqCR&Rj6j(YLiCssnk=p&<;IIl@9_pLt1> zKb=r#B_2Z5p2_Arw9s%42X5^8k-(-Zk#ChWm;uY;WnWM3f*&O3ARPYq`5_ zZ|VYxP)Dm@5}yNSV*e%P8X?AU$uka&HK|tuV6wRWX=d20OQ>%z8+$?iOvuisJLe|>l9!AKrf6>a$|i8h;syh zm>(2^G}Y7`%P_{)M96u^2G)J8^n~H$kUy_DPFM~0={uDMmnO)%`^cTBWL4vzV7~i8 zS}T~RU=4II_~}yg=O&Qu_TfR@xUuc?BPLkFKs}>3)7eGB0)TB+aA*%&^G&JI0UN>I z&wkQv;mcmsrW&82-wotS-?mYd`_7#7lQ*88fg8cjFaK3cIfx>#wA1YtplJkbv=ffa z4VJPX4ZIp1^ymPiQho{!VZF4C|6$iv3g0SBweVk0Zk!7eS^>yitaHT4gaBs1oIK2Y zwG>vmchaW2hyxW9f?sR!_1015Sd+g$vAC3o)fO1~7DUpU)9Ci9ps-C1QNa|$(%FT` zT-mgx7J;lNV~Hbo5{C3!R-XTOv|2{$?Rf7&0&r8pWq=`hn7ltE{4{H0(;A3R$KURa zypK!2eoa~HX_K-uaw@^LX2a8b4^-aAWL(|#j}J9{f-9UYo$gr&M=THc?Q{ejG6)vl zY2m8Fwl1EIG}@~DSX2BgIDrsrx?`6>BKZRSGE}3Jid|jr@)y)dHtUcf&7rrRH^Tl4 zAYN!Q2MJ3QP!7MFv~ylm~QLdMTMa7SRG^`HZ&4L@@Jc^6w! z9bf$JwH**B#3t7ZQYA{(v}xY6pK&`*F0Y?ic&V=CfU<*UCx-yXNQ`!yDfY?f9`xvA zzaP5e8?#LVn1<7D=+&p2Yl5FYqym1G&^enW&e;E*ZLieQUw-o18EDfY>m0%RW^GML zhOdP)0g9)xQhjZvNLa?s>6oS>;8=zA;)jHjmLDVEJt(*VVwuc$@4)S1Wd6<9$hXc4$05J0J{5XU;}FVxrUu6aFR12h~hG`2+f&guqm z0i_s?%ps(Lw+aI=AP%d&Z#?DyeZhjwc0l^&&db5XaJ52^4cVW2BqRG=JLt&fMh-E4 zU2kTRmCKBihqsHT$fjGI-+%>S%7mQ*kahjGlS~}fe_psP8}i__Ca??E2-tbx;$_x^ z#1mJePP)jHy*8>fv&P~OakLGTZlg3M{}fD!diP81;7MhVugtk``V4Yq_uB2DWdmT8c>!4PnZ-@i;V!}u|AG0 z_bCJy+cfMP@WuMqPKt4c-w(#Rp=M%`eN<}bX{|{oIe>2zd&i{l!)4KJ0R-6ZSzuVdm4sNGykNVf_s8r4s z?S=)msixB%`?RsrCL9_7}^rN zz_>OxHdW8^qhk0vjLzgel?MNrmI(c*vpDi_$|k<~ewEGUg!1DN(FG0*Ci}%s8-TF6 z?y~$TfiIFPejvL|2!JKf)S=5`w^OknbakCaOnX_A`Vak7^kjd-j5hc7ya~;1DlFPf zL{#t-?jLI$ksubhepGZ@)gWo|!D8F01;rU82}W;o>m%q`!4>|*?uFP z_xxzZyw%4Eq9d@2VoAW0;4fv~cXjUq`g1Z!5F6+q!yVnL1OER1H1+-;y}!G%O80Uw z@5$mZs=vTh!($A8fJx2I7=CvI+YuH1zkbZg!sYhpV&v(mu^ZG20fs*Ug#Xho)glBZTtu{~sX_;RJ81THDgQQ+Ek&QNBI6$b zzCt``V5l`B;Cbb&6aoX$G;-P)tg{uE&;{;R19wqoPdG>X;Fkbp^%P)u&Py_?Gb!T+ z0RUHbh;6#SQbvE*>z~_*YB+u&{U$dY6iZ(0YjTF7y7&8D2#t>KJV>l}JEtnrQ8?~d#wVm)R%y|a`=%fO>Lu+lW75^ERfm|1 zr1C|y!^@irt#7SSI`=4%ZjtOSan+oclT>-DH#G0$mzT$MvcK(3pak*W<8R|e3o%st zGvke+_?&dJ7r=QL8jOCLlUO;BrvC@R@x6z_(pB?AfxLqQn_@4E_=q(sRsn}FP4D|a zGS}X8(wtw=#`j3N0HyfX3F5@Ln4!`mc!X*1?BH6BhMnT}i9~8R28NglXYn zxN0hJecwh&$q^X(Dv_kCY*}6|?%en|n)2BCRpHI9Mp1#q&B)S>$@bCf%vz5{P3^My@mqwZ_rZ*g4 zbXZxG>xYb3R~S`)%7RqV z&M*Np<>IR8U=XHNT&z&+iJ^vk7+F{VFMv|R2L&HKJOwz@CcmjjW~9Tz!*SI<$$;Et zviw$}frg)f?<+#L`@jZiK?^l@s@2){e_^!*Zi}|GGgDyo8 zxBt+dh2kk9`4$d*Kj2~MU#Op=?e9oHLPA2#4*?U3+5sfO zy^vjjat>x!N8P_)bKrliZ*9Ed^AF}_QDi37_^JqJIHTaLf zAJ>sC*u-}8ZNta zaL^e#`>-6AZ;`9620UYn!pb0<^n$N^hWxQfGI9khWi3WIFw}xc`^Cg535L_(t&*rh zVdCU?Ypez{2uPz{;$iBKErM@qc1a%;&M`=WVpFC?>qzr~!61 ztu8gZLNwslrd{@*SpD$fb1eZph;rKb2`v(Wbn2Mh_H#eE%9|=DH`4wP< zxSFOB-)cbs!3*9=)AqmmeW7aA7;`(QczbHOxIPV!hL@*4w2}r@g(GOuhef>$MTYnK zK(b?bc}uHD^Pit=J_ikMeM$i(+kh|W-|++TueOXRYxM05wQS%Pa_Sre($Y`|Q2`m`u`^WR|i*>9}Gqx<=Q5_#1 zy1xq_&`eSo<+H4QXr&?Aj-1p!%W9JmPz7t0_BFbCWue5zP zn9rhx^mW+6f`ueVDer|(x--d<@De`gRr($lmEgXS7Q=l^p*Vj+RxM?+(gMsy--C7l zevHBfgrrlAnNKfv2sxvFZo_H6|vdRTsZ4iYg5-BJq_#F_bMVN0)mn4S9AnPb z7y}iFfD=%RPEAgZc0vVG>*e13{;=NRKF;OY+a#(bs5bxnoWgxYDQ#egHm&CTV1nH9 z=pIfa3j76NI$+&-;JcT6-?1+~65mK7R3|9=27D^J5hBh~svFCLyTS+VOHWzjQB-^4=B+n393J`(i)4JtVnG*aAZN}j;Sc2GoK#cmYk3$$3n-(Gj$#d z3kwgT+&xdecD1P5{3;$*>ez&nuXpeFmL^k86iyHbYg_}6-c%TK*a#ma&gwDP3|_Gr zl3|#jTMK$1@2^52W?ZvQ91cg+r|Hjsg?L8;WI zv-|oDg$612*b(ojD#^b>Ocu@CS0$`6RY62wwyWJ&y^o|xTJVgJ8Hb_Xz}h;*3o}&6 z;n2yxft4%$9>Eb4NaiN|ic3?+{>BfjkETd$A zPFNwvxWFCCLnM9Y{U$h%d}ckQ;AwEb8reTCtK|dL$=;%!G7>36croG*lV9G@rdE&PfAB#0f?_K*Z}gSzr)(M#c$$~$7H}q_St?`vuWQFtn;}7g zUmKp9xjT%u8BH#^=yKbv8DPJ5NP^BEwmv)$3QNlijS_MtaAsUimseBAV!2Zs)SMGS z=QiH_+NXyq=;GpHdGO=H4UrQ;gE%}EOY;UQENEBSOBo1K8}rY^OCd2ju8@3M_T`Jg z3Q^$=5@$rFc15#>_|8vpVQJ{WOL@9yM>CVh(>dSF-jUl>EVk62MMlS+-ey)cxtYm& zI*Nq;N>WntIStBeNYk-)I|6~Wy$-hLK}p(jXY0#ZA0%V`2YPs41Uv^6jkqoS5#@FY z2X1!y%H=xD5lwdLiMhSake4ugbGhmLO7dY`Yfi|m{VvbF$vO|WR~Jm)QDf&(sLP!Z zDnT&#Sb%l#vQA@P9*CFG)K(>9IL=n^kRj8g*YEEIRB;fPjdAPbv7(XVjjo;)ey}=yqHFVoi#Q-k3plCb6sc`{#+P8~7u%dgZ&$8J21nf=LhxF-JfvGfX+X{$Kv z)g`5Sc5I2xr61`ZL-T~D*GML=Et=q%K^k-kH6#T=&~ z<+Fd+vcNB8MCWmAdE?K;#+or*sf`9+G16S-Zvl}kkY0G&&OO z<;G}Vgntqd`u=wn0>4zyxgjn@d9K!cgyk2lRIO@5*WE<*2BBkok?S2(fGbYZVepZo zU-+Shqdt<)2RtH>gQ*s86?H~}h%?g^5=HhnvY*b5mFEi>RrC6AEu{YuR}d(&K3<)4 znCAvi9tl1d+|`)uc=j^~sDgx_%8GCc&_cODBPFV=((VQ>rL`doY1umK?w9vTaR)(? ztsZz89NmOl*@KF5-$u1s<*`SnfR}-;?zFU>X@Wl$CMzObM&Cb}Cn91>) zHQ*F?g0yM8p?Eo}XnAryvXU~&cVQD_9mJ-bkUq|LH;z`1jw*U^)A6bh>HlmoWFb0P z$x&Qyir|696#6UB$C_r+qnBm^jYPt zDq-+yRW6dT9)oyM#V_72=zL*BsdUpYb6n^Gc$rc6%2gR0HYqA&29rs775l-LlDY(D z-Fb#(GzhmGUgP0_|5Sa#=IL&juCHu_vW?Ykv|111Jt5$Alh(VEhG(6E5pNJD6aUBp z(DEQNK>o(*jNO7FxW{-KT7{8^i)pe_0k9G3NuI&=cieBF^G{%AZvJVn%R7whVGjL( z%%2+o>kY1t#C0doIjVg>!Z)pw6p;vgE9HyG=sOE#L!1i%!oT&_jsPO~z890VveHyr z_a(133bk1<(|~t|Jo*h(BrFkjdOKDx~MS-dQ5dw zUz(AlLgoWNni(xU-B$6m6rVe;L^8E7#^Bo(z)&&;emtkpy|f1pPcQB$T5B%(jS^?k zh1m3vA3r&u&=YY3J(wW7o(NTZV{5?&ulH;oaOQ+=jhJngB*DL(K{O(v~TnH-;V+;egflb;n01Ha=@uE zWjuXUyw)lRkERsQ>rjZD6xPJ?C9E&%T6tnr-lbHz7|Txh*pz1N?_SCoZO* z^aI8V&>bO>f*Jll2afPt&e<2}2pzfEdwJDo1w9$%ql&qbm-{k=_G6dy5z3-}Hu19{ zcquEI3o`8kjbYsd^Qed+a56ugQ3LQe-8Sj)7poD=pi-Rw+Psn1z?*9ue$7}Z*#_DF z$OqTo{Nd6mu1>NvQs(breytHx|G43Gm*?Qbi$xPjlPljP6L`>~KUk#$QyqTwr7PEE z`bK}ak0^&DqJ&PUe@pv7AqwMXza;s0WuRS|UtLM-$G!ZEn#)QPkZ5?%)#VLCyt!RT z?*y7{AA{b0oNqvh zz&z)vle4oWgN639R=itX4#OH|%f+Zy_qZ}Tqx4)nJowGz+EUHnOWx1sWYWW52hbV! zR@URFhi*U~6vyk`cFBNk!l~vd0I1wI@1jSE4 zh@@01f4}GiprbxbAd>O1iJOj_Kvpl*hh^DDP!$dhlS1|v2W9?!Fw3i{_Xc*=>pY~g ze!n_3u9g;=I(0Jg*Vpu@acBWv5Zr+!sG5Lnj_7ZZ+>1G%iSUP^@X5Se$80Nm3h_lwq8~=W*#3vY_a@b?? zE58{(4TNQ+vs5nPP}S{yV3o$y)E&VxYM@Tt`sObbrA}C=jokNP{YwTDh|)HU_yXay zow!Vdvs55O7p;%pA3Y()SaaAp2RvMj+D3h4rEWwIRVC>K&a`9nmYqHmJbg&C5TXm! z*B&cn`UM8V7Mx0LErs&Cen<=)^;ya%B9ej@DpbJ6lQ`cYA||%n%I{aH$?o_oWkTdt ztn{+l=;}%utF2?lZ|&US5t%H!-4CN;&J+=hhc9>}R?rgFln}u^*mHMyeZ_sZ)F$lSSo~W$7t^be?D@TU3R$4|2J+VK@skHk$ z7;mDQgLPMt020d#X18YD*|=4~cZZ3xhnHu&RSvN(GahQZT6#J_B4GYPzo%hn)3CyMf5>m=X;Kcpl^y1k9%ep9 z2M!WE{(CpiKETrE#={}D52Ck%@W^jqvf~*VF4&Rr&Di#c=+xh>cb`7$dA5||l4G|d zoVM48fbffkLHO{_8?f&>m4>C72)_)BHHwV`dBS1GS5ne_mjdhaNyia%ygvlg)d{-X zmdJ%Y?sQD4348w@WZPk57n);RNd>&2+`P6QzSoxtkbX4<@H?WD~$3JRG)d?7* zzTstK)4xO#NOoiK*Ac&uph=5QY~VBEuZluQ93pgSvIpJ74jrq zhCo$xvpZAy5zfyul>$k#^i@3f=KMi~3SxCZ!2JGx9xI}GlbDS@sCJ(3+J4O_ue>l* z4P3&Hxr$UM0{S~0ne#-NR`jcAA18Yw1fj`Dd;4-etq$VWmv&QF4ENfulq<)!CReiV zWMn-)NFXUj81w7Ka!-_GK;hDVs{Nz)V}#3El<$B!eA}^1Htt;%O%?n>?JO%OF2?S~3-tjgY_XeXd?e)nW>t&bQsNmPK;lkZ>M5S71J0yQ6~w_B%C{~M z$+-8ZX&+=#Pe2KJuI{nQ^ zl>HzgSm1!BmT@LP{!)<^RzKg5sQ$PfqCfKM_! zc!pV|E3Gvcvj-ppZcyGDWH*HF-Lpu9*^L!L6ru-FVFEYrGVQ3}pvuuoQ4UyQH_>5M z1)XYRUUab{b^;p83VJ+t6yM=`T3LR@@Xr^B0**iBq_zHYpRTBbn}^;S9nl{zE54rN z3V!*@(yDBaNP2XHtjLOE)6n!IPLJ%UJ#;*cNgn>Od4uc6%bzj2G)+Woc_SZuAZrQI zmRUq>(scA}`srIGFzj{PT74+_+(SRjdiMJr=R@1QJjwg zFAPzR;vF_3(`Mx$+Dm+HUs6q$>6+ahe$AOE<`$pQgP<3xZXXe9@Lp zioInd$f-5qxj<@?Pheyi5)$G4j)4p#UhIZs0~P5qr#=ix@f3cq7R26N2CUm5FAzhB z4%STbm&Z$guVvd?@7&oQ{>^9+W52bjYPGh+R(pj=N|l9|=s@Q$?rvV5*Xw~s7Cp)c z7<`p;8U-MmCWZ>#ot{UZ?f(6jtNG=s=VGA}#P-i;4tv@!q|4cUCe*L1;_OIaY%>1x zm3X%gIpCSl!5y$^03K_U*mKsH;3n@@4o-!tPjmM);$@71b4wF)+v24?p2HgF1CCz! z4narClA$s8i)oXjor%IP26kwXL=$udwK(8Rj6(@KkW2>^v*umMBg}3%wNq3lIrx2G z3)qrj&DyPSt!GqkvrBZ@7dUwmF2k8nuF@)MWG39tb^ST@QKb2I4-RZG)KLR4CYS^K zs>jsDHCAJQS0n|grpyU%a*sVgY#<~i&N=g+qeGAHZ~5nsBD0T*0k2~M5PCRU(_tT( zK(wq#!KE+3D0YJW;>vrw5iC=$5{Q^we0>?GWzZf`VKr7RA+;xAXgW;og`4A{#SoSBE#c%7*LWXwpn-VoUPX*xyW@2gu46b%46=8 zgDc6KdlX6=o}H7XXHnZP3(oJvcIGQ6ezRSgET5Ki?Fpq#fkcH%ZmuDz?(bhnU`iX{kw)VDb*bs zo$bt>&is)F5)F!SqV7-2NX;9hWa}13KSZ)(zP*V)da6*kCN-_FcFu@`@(rJ*34bx5 zrN=5z@^bwgDy*tf zLoIVi4|puDPR}T#8*}0@;~M>NV8?|9XcH`?CW+J5QddMi*vT4FcWpNkK|I zQNMvNtQB+J%3D%GLcc@(WLd#$ymo_t3A8*K1n_JF20OHaVFy-3XAAnDBJiIHQorh} z{!k#8nwmzB^J?QKS;1V#~H(dJcrl*&3>^l34T=(ExEy)J~YZ4SX zI<4@AydX(nV*8S@*>C{!E53>8nWiizext}-#M^b8<$C;|>)Y`!mCu@Wd z5UT0T#sKfCA9bQ}%w1fCu5Z!les%v9plw0|AU}icP|p_?qOxZI; z?1ZtLRerVRiLG7}Zi%5ja#2-{yHSH;n=QsY39G?_&$-{SzB$sRv}(e~GE*Wkc6!1$ z4`W#5`Q=MZNRoccT9<-@)EbhV<-|a zeqXkYXa~>k{h=+v0@&A-978ZdUIK~Lo0t;)ALu!sO!N>3tQ@d~J z@+i(s$3CLAB@W{-m%-Z3bK@E5PBeNTr}HneZiCpzE@AEMEZ_G=3qU?78~0X040E+d z2Wzn{|FkBTJ`|tQQc+s4;c>ft2a->liS=Xw1>HZBOo<}5=9M`0Y) zg+ofcQ`a!WT+V>^S-TfGB$Q;IFf@H5L_t9G)o~Or3@`1cu>V3pz&-U^<=U7&k>dps=^eU#iV?%}Eds0J` zs2&2H{9rzN(DCx@#!f2}C$&S^=Wm&gKg^8D4}Y~)jMA8Xh&O8(1CGptlCMJuq5VlJ z+d$*Oz2}~7^EG2b?hS9*N7$qA*IZo^EO+=JQ>66{a}xbj0kv$qKZL<+JiFy}KX`m; zt-~lIKV|BF4#Zti__8HN>D#HD3|?sVzxwXU z=sjHcHe)@eS$9|`5qqhSfIX=Uiq@_?(DZF()nlzdLxm+_tI@XpgH8j`E|-~I=rB*x z<8g6d;UP)&C1!V>mwy*}NR!9CC%nguY&k>D-J6~A{VZ^5&$#2N3v8&)O)cE8OF*&z z&-P~E!KqQl)VCtLTL@`3^MvZ=JC1f$$;ys?B(MHx5D;T3@J+ya?EJQL4fAgO-IAem z12xg^Bhc0O)yk0h$t@~z8=EJ)qmdW{bNR^$0X&DvPK+vEHO!5?Aopq zz1&`Dd<_O39DrK&vq}w6f(M0fDErYl^LR!PSMXl0CA>sCxlL=)tg%#e{iO`%+4J#v zG#L`MtoYU{;o;6jV;$8_Bi4ksW_r3eWu05Y3#+5xEE9fi_t?gKbH7Lnp^g=h{ zZ%+bUwgD~+pV&UQO+JZ-S-YZe?b1>Tg@%^4*57!J*oH)-VEF!;$ zCmDyW1aZ1fPk&%>(Zq13ikq1?WTRdG4RryuSB?YFA|9Tsrf|B(yM&JnqzAo~@UM1# zHo8Se?-VqLpHM~_P!A=0$PoAmgKvvwQATtlH;8W1Mtk}9eO@g9IOa%!UO~P>Vvu{Y z9xr@Ptvl3!Fvz9J)xg29A(FC;7w{hwI(521P|%`SsWUdc?fVU6#=QW}+gPWvT4tj( zlC%Y|4dlD0O_;xTO^V0lzN!77(K(SQb;r6+ZfeS)*boN*gn;BF*QnRISDsHrwDPsyWa ziPrTMu}H(^wbT5yC@05PfSv%Q>C)QSNibfT;!CUpP9hq}p)qfG76!o&C*oSjv@<}P z%gxfk+~=5X8ZH(R$=7c~I#_YAo91#j9GU5D#Z~G^mZ!E#I^CLreR=Knd}Rd98%`js zEDxPDv0(%9wtlTZYu+G_77|`MC#AWCPN=qWhu^uKI*IDe?<-s0g2Y}_ zgws>=25++Dt6b@oz9u0675*bNuYI*~b*i^75ZC7W{mBm;2rW>r^*ISPme5v1ON%eh zZE4n2*o07NX}!HUfFf99QdVAN4xvL$YID~3WyEqd9RHm!jPgO^(fFdOA;zOQO-r-^3TKNW5HJ1mi$@$Ih7#y+j2p4@ z*j2U%(jT84_v()359=>IY_JCmqq%3B3S-~#I5s1WqVQ0^_=@F~(+3XxXLYp8D^6GSmYONGNVWUc z>F0F5tdf|0%huP9f90)*U*&1=4m+7BE7;{SYT9{`}$sagFfKo%4bH5jQi-2lFLy zI$2240X~0!K?M}OcA;^{T%F)%p1iicu@Gp2<}W4%9Qt2Dii-E5pZw)V zyKf7?J}#c(NKuQ~G>q2CcL~|UQEv6*X}C<$UP?N+h{OeSZmv5}1Kv#g)MM-2M}F1y z0KygrN=U&qcKe9hb-8iSNf?Ruo#rz{Y*bmbV)y8llTSDK!2`((2vMtVeFK6 z0y|!fAS^tL`*?CyDgoiNDRCiyBNhU1?KFYjUe6lhSKtil**79+(gH}`4FH~WYgE=Y z16;05gCMDi%fcYFKw0S%Iq6~Ff6Mh`Ufj2`k@8e-c`1~=xLxZ+TqQlRh z$2Rdy`XnDS+7DlRpl4&`&fco8`QrOK`m7)<{Myja(By}}{^ zKTRg$d!E?=*s3Uk%;htlpztOA7YUw=h@BrYwhZoUqyOG9cJ5hW5QXsrm=$P8?Yh!I zTZ{R`U{BzD4-nwg3UnU=Dmw{vrYF~kHxUNf?~9~4^hFIr%^E`RQLYa@N;V1C>@fQ8 z|GDQIP6MFS}2%Q@omLW6bFD=v01MFh754q+V!3fS!e*i*316Xd2^C61URcuV;8!5 z*ZmbxI$2Rg4rByTaK*KHS^+3mfnxoOGa1ry>&a4!L9o{#S@?X=w*^$;DYdUtOx%v3 z2n6_(U<|-sPf?W^XqjcSK&YVb`0>gGvIS2d$did=f+k77Olv_kJ0<_t=hh|`UMTGE|XG69GpScUUqSBILxQ0cEwQ@fb ze*icHkU_|f1w&`h6<0Z?^QkZo_dT}J^ePrY`JE1Zxx!iqw?Kd4px1ypdXhXf!(h9u#fSD^TVS7%x11hh8AsgWcTH*mr<2h7Dr3#0K zkIf2au09E{kxlq>=E&4HBdKL6h<9S&E~UOS1&ABa_ehgOl=!g&`q3MVdHeXFRrN=B ztC4V#3u87k&sMm24C9)*Ao363Efg{`#V|u@MmLeV=;((s(qsAnHyPV|lSr}!e+OgK zM&wO?@tvZMn*aCkZ)#KV5ZO;y@(N@fk8y%*aRiEIsTFt~|m%2b78GvIJ+?4c7XjlCLD?F@iT z*t|!_vA0?TMN`yAIkfjy;c#PB3i&nq-+E_UpS?^&)z8{vr}M$nfkS(vu7^{+Q%+H; z5#evbso>j`c^E%a&U827MwGP~F%KWdLSMz)o)=;ck1A3lZj39%kVy(*t~VD0Z6My%%J!f>+)K1sVRB?0Zxs~2Kfs7E|GO)sHaCR zhZ_jy9*olF5y%RiFDvkCA%JO44Y;Af^g#wI`6d|Z1B!CtcRJdr{f7{)mMy=NT-z<* zMW$2}1T){cTyKUvWBxXvNuL!=z*={4vKkS{F;+}eh)hz{qdDx|T7n>L@(&uI{baxwyDErFU6H`=A-o)t?6+R18941gCDc-x1x|T7sP0^kDX)K~&*1pqsGkcSJ1dK6iHR#Qn)&r`n*H z$FltGM8g>Gl!{4F64c6(FW0mTt~ROByOw~eeXxLvv(Gys*1e-hHsV$x0q}{k3Cz{y z`@OYZLqdC2V&~^Got_Ut`}G^%)z<3ZfNl%V@Xl>%Dm>hY(l_;$mH*8K7I%k z_(KJu^}w!A07;(-kbap000&yKKJE6hOXWMXSzyh7fIKmw;9O-Jh>UV9KEd=rjXs`Q zTErv+_K~2awjwZY#E!kB?OYYFrxK3g83bKK*`495<-6uD~y$16TVfDIV|#+P&G6TPsvS>LVHS zxUiWh3v8v(>#R5=>>Q25^0K|LI#N*Hbmb2RvJ)On*V`n~l4j_FCBTrsA~n34+=0*d zf*3;2fk1CMlTLM?iUMTY?u@Kmp9Sr?2Hq908f7$8Q~(r9$c&Cxh6=y2y6U)z??kEZ zUvpb}I#TR?8>$(UjiK@s*z0=~wmG@H-1^B4d`~d&eANl+!bCfGjVzE-+ve8C zA-_9mQ$9s=orYn5mz%pLP&V@9{{#QH`5(1FjEM+X4>OW=lE;f)f3w|1O@B#8()D4>Tpq?OR$e$8SjcF zkqR(kG_|gGI)hCfr;PZN5|(twX+*2_3O*+e&gw~B_y9Z_k4!+y=O~Ho5CWYdMjb#v z%K3w6?3Rx}pJ9CG;MXfDlybMgZZ4c;}*g@})j z)4)Uvd9zw2)OKWbiE;oS4BG>lkNXNKpiwWtt;u*A5Iu8!gMr=t$XBb_7$xgU&rp~; zIXTUN&OcLb1tS+BSxBz_L1I!;^L%g;4dw>rQVre)vFg}Tb-en_T>2>JHtfu%4FHSX z1l~`qVkyn*0%U88p!0--0mxIiY6TY=pk{1p)E_Ex=!6)0bCBponGC z6Ing{c8tiR#|ocmP%HIqY?}&Qz3$Zp--Fp0=_1(S`Sy2EqClPR7K%SiNcTF3jYY<8 zhwr8i++Q8JDtTrz0xpNSo!#XMuoC&*0S50}K3V(vQt2X+5^@BIHzlxSh$Ub4er$EM z$-BgotTAjAy}46psR_l1*^m>H5BMy{J3r1??TX=2M8UDALSfUF_;mDjCSjwpphfRu z`HRo?{7=^L@8Wl{XeYr3T3iXc0O3zv$8PR8kDr`+6E$O2DiW{2sl0s=Mr8`b%J3_|Q7VPRN{qcI4NCP0gTCM&y&3s~&EJV)Dl-8HcyMw+89E&{azD}Yqk7wRD@40MgeD(^hQ zpg%>%%$&0U_*E(;YniyjFF)_R)FB&V2bGMSL#iU(gmEDz>G2EM3N~w^%pwzO$$|D> zYfj#Q=NY=$x~4jdNsojDbCi#0f6^IldmXoz=-zB=(JeB(2lrAP``$+JXBOJhPKDwM zQ;|^#N(;Eopq8C+Nl=yOpjzHn;9}>{KVJI$BA;6)=}pvfy-&*S54)STw6XM;=Lk{+ z#D#(r9M$|qyP{U5COgC3>&lnz$sX_gWwqeTzT3vbWZf^@f?HgX)RL$6!-V#)mHG32h=Fk-e@ue9uV&I!hNZTa7cw#)gN} z8Z;88z`Ahn+upQ()Yj-MWz(e&AInwtrc;W0jgYs`yNDvk$LZ`5v_GPgVA#*tzt8Y4 zerzc6cXfFw_1|N^eZo#xzOcaOkGyCgj_Wb?C=nPl@o}*x9^ybeTCcqgFcV|1*($5X zWvY_WYwBYqK>wz+yy{Goi`2aoi+Tay7J#3G*RnWI`13gK;(a{OfIf*<3}y}O5ul=9 zER`fRDp3LkUm*ko8brqKeN;yorMxq!kD~aiqYmE7n6n29^O7Vi{U$MUk1qfXYjSsQ z5LBO{qz6{h%yH}*LLdbRy&7xv8izEn62YZ`zBXJ)lZRJe2Vm}D`fID;q=k`>?p@SR zkPwoGg#PNh|1J+~YMPwPh}U9nS`-a&)#ruFGjnZ6=@j!&7^TR3Ah_$U_zZ~ceuDBy z1n?B`El2|!+M-<;(12@e_}(x})K-U#qJmq@-e^9B9B3HvC|iYinWfvYa~; zlv6`%(b~sK%z8n#JN#~8c-mR35sQw&nfbYRagev_zArSLG!=$&bALoxaFZF!^L+!- zp*8{G@}4Pf3MfUc6pngcUiI zQAvbd=I5~pYbcmYc}+bZ>9`-xmwDkg+aPqZI(@nAC1-A>d`oEJ!bGQ%4;spmwF8ue z*qrq8V^!%JNi--;s7q83GD~l?UhfC3hW5hU7iC|=!L+$Uf#$Y$y~EmaOP{k}XoszP zi$b-#3to<9&fht&o>mXqnBGUi@gJI5P-}i|eoH!R9gz95oz4ycbI&AS*b@xNyIc^u z$mjvtJivuw^V|14n)3%4|J{QLJIW=cw3BE#gCg~lRlQ4M*`lgU&ebLKqe;hJaZxJo zMx*Drk9t1qRA;JN1IWRSI&kE=s;a;tY30G}J$Nxs^hRthMU~pSIJNJ+r)YhE^Zuc5 zN%S4qCAko3c+2JLH@5 zsIRyCC^WTd&HX{y^{#+=mrw^l^Yah|5>4Mxr}a95*LgzpWcaq`5a2=a*N6?EyjN#s z*(TY#EHh(7l?#1qc;e;Bbs=>5^{dob`N#!DiROJa&6t~rc|C@6(T1fQ&yDorlmM)w z#_PCCZ=CgBIOPVJBjg9G@&V|&UH!vAwd7xgZ<|XV{!Bhourp_%f}Zx{axto;S5Ql- zqj7j<$Lsu1y4Mw(@b>Ebiv^F7J6gZ5=P+Cy{$^%CF&aBJma2Mn{4P6a0hok@TwyfL z#O550Xu422?@+Sd<-qImNBqw=G9t#WMeqBn9+yykmMlc$ z#U{2-%s!Fj!D38SAu4*gYx)o#8KZ(5TI;`*E;*d76$N5o>QdTEe(EHj^;cKDW5}~t zHE97cPo2l<9@RCSOB7i4GoXLw<%%tnILsU9TQm!TpLmsS6+#{^MQt*CixnwAhRhv@ zVY9V0KDg~R>Xn3y!DkcgIV7x)D`?r!4Ed?TCwPpi?e~QtBFfb*-`t$Syrb?lKsayG zKz9R7CwRY$w?O7A%Yij9;e>!gdpSsw+8>L&Y2Zc%RvA$D!a_q24iCF5`sQD}Z8rCV zY%d0gE~SqxXbLYf*;~52f56HPeD?7`Wrz9ngrH(sA$4Yb0PoFV#mlRexVPfsBY{<~w_C5!pLcG{ z`Am96Nq`o$)K3pCn7H0$1rf5<`{7%6T^rm7f#frlx0Pb*y~WU9$quE7$;)97ss=?c z<`J}^I6k*iEZNk!4bnLkOdyfffeqg_WJ{}6Lw#jGmg+v#8?XdJul(frnAr(`g2SZO zIr7Q7yeRc2$7l_AE6RB{dTp7Wdf{+ybAU|r+8Aa1W~Y9fauY-ry+o~XIB1`X<0{vL zWX87>$n4c@WHckKtg4a}t~XJeSoL5cROrEFOpiaTQ*;JoK*dC#9KQ~@yj$UPE}co$ z;LX0$8q`qT9mItWNh-u{LKy-8_Pzww*0K;AE*wfv0pog7(GXHMaRL>@XumqvwV4@U z=m=PKf&eBa;OLU}&#j~fi>@LruUOwYtS_OXvGmSm0NRHTJU%{d>iNcFz3LiH6GH-R5WZdqXBtP$r8Wr-B|00o zagEo&UWdN^A@m%I%=l5MZzBqDa8P8J<G$QK$%qK)xQtPnwMOz^4M@pdj#w2?~kb9Wp4YU2f!vemL8S&m6^cxI-iCU5tX@8 z>f_$>imC7Q0RUrA;4WBK*SYYZwKyaf@FwLuEVFr8CURr46czpgawqaA-uXRD_eq6` z2kbIN2B};ugbBqyDmm+(IeW`Ovkw}FbY2IM7o^M=*PnEUhkil%MGm_2LwH0E%vkI~ z@227*PW=#%AFMmhH_@rqhbck_^hCM_`h6~NMf1BfLDOk8-HJG}+=A1?gv)|Z#N7#hL_q8{(W)#ou1e9YSy z+-d;x!r?IZZj{!!C{{(O;51}Ozq-<74E5Q@3~^d9nc2}Fo2Ue z%`gXE5pGp3rCN1CRNu>^u*-mCz$TO~5(7n;-%|GXu{{lMymr>@&h`pip9`XcO(z~` zrs@qfd=D&byZbk3FXw^RxTx(90Cu&nrj>DvuHNl z0T(Auvo;(nB4~XCfTtJx1zyapH~=#KM=;-jCQ0t@!wLA!W$3*JrEn$>)5SgF=tRa? z^+^!OpS`S4BUiCe=#VLN3{SXrAl zVY6Y1H1aRbr-0Du1)Fd`Yf2ECj`Y@r+M=B2V-W?xDZ>W2=d4%ki`4* zUB|N}yP&nKQ&vnNGp9=r>6HQ=Mtw^fQ(vt2(&m`&R{2RO?%!t-c&l)Im$|Yig&!XX zy2jR`l}8F;@J0@=<*@tw6?-@`2r>Bu2O=8Z15xz_)3o(nh)k%A{wcGGisFwo7yW@H zY8zus{~tT20VZv+f&MO>;sM|F_G?a}Bmgk`kA}Im?S=PpDuQRM(DPxIdFgev>Rlc( zvky>jl4Jf30QCoq-l|*)eV&j7;osLrdImr!#gBZVeGoN65WHNm|%PzkON^kjVRUaw)W3rk*ESVnFS(OYwxe^jCB$h?bH2M-YJiBL&PSlS?by zG+GDT;WRGv-~I*AE5Uu1VIQD2+W&iv=Og{B50R%INFI&lME?4_>-EThAHck?F2mJ6 z!eiIA2S!}>n@{^CMTB}6Z=6X2bRn-bG<2vHMZ0LbC6hQG6gK{BU#ms-SH+-HnRop) zXon!Eeq>5>IkXI@p2DGWwS622$1%P-*vlZ1QZ;56F*Okl=y)%VLkxX>Ixqm(e|>r+ z%vNBgTNwB?e{UH$H@K9sF#kbTrwh6*FZyT~J=ZK4Csmtl__Tt%1r)=2>b#I}!0ZA+ zv%_)$cuZYtHUB0ZBu_zoVU3T)$oV@+Q}!G+Q>S zw;uo?T7PymQvW%43E%)vmZ67^SKA{Iv&j)q`+>0&IG0iFe1<$QyE0pbR%5F|v-l#$ z5DZfXP`kqoR{?#A!rxY_+=`@sq??T*np|xkk( zaqU+_W?nB6j1w)ImZ`pV5$3RQu|yHai17QutkfTNv(o3@}EO-U(t(k z7({rHYo7_qDQpWu=exX@$fb|1`GZw-432rfLe=n}iwqT=yE=e(52l6p z47EbkfS?V%dQjs{9^h&I(R{$6Fn9ErmE(s(RRTb}8oN(hdHH_;-E&(Q6y>H$M~AiJ z;fjOY)+Bz0DVQ#6$g-w9D4;9}CgG{59krqG5uW>|XveyYN?Hvv2ztK7n>XF|`X#x= zHUH5ij9FkVr4qoj@Aq7Ps~XM@A45f61^vKI9%DzG_)_~IMG1r}S(0qJ$0i-eCXZfZ=g+ zaYbjj3D&ZHx4An0F4S`&_)o{ZIRjG(I4#T?=2HyN)l(f}%o+&$P1CdzG-Tj0QA@+F zzClK}s*j>qmX_?V;`P7BU2cfy8CiHOn|R^}T6#C&OAZhT#AvL0iP+%o7k5Hqno9+k z(Ncp94SkDa1syory$x#V*v!60^>|Yw-L+9WL{~o$g~tb*J6|D`gZH|(*;4+m0AV!) z>F>N?r^LqfOtIBMeEUH&)(z zaRF6?_C>Y0#D$XwlZucsPyzJjvQemU-WAvN&*Rm^9qd{e4t`NwpFSPwPq3xbqxfUm z&+iGd;(JDyY*I*A!5*y{%F=trnhNeH~chrZlB~|X;FDE$fjT{SB&&xE? z0({3H)e9R;2KpuxN)gI*2WKdBxcv23w)L< z(T>Y3g&_%!_+^s)l~pUF->q(L8+Beh8@rZ1&H?PJd|0)?W4|qxhp+}CmjgtcXHlJ#xax55+ncR7ofkq*ZGX=xzV#=A0Jf&csfIkn z_aB4odTUo?>uMzJ{69Gzy~u%9hWpi0C;#|KWP1k(Z7*+Wcbr;UgK$QH@%LMTGQiii zHW>lkx0!^0KW$Yk8L2VGov#oIQSu=R7gJ9~-B!^`#{5_j>#s3+4v}lX9zM8DTV^|z zlO6f*TO@aMbl@nsGj7`}McV$e3gn}4S@SI*QuzEozXzonggRl(fTjBi#KMl~geW)) zVt28U?4V-IK4q$c|K}|YoidXkZW`$a*RS7m)ja7Y`Rnh+TwlGVi?5?AFP*>%*2Wk; zawu^7^QDgiInH1eG5?sT&!9X5YCFo5*=ItDWhO7mKH~k>bS=mgk>92NwSm(uE0s56 zF2(;16e!S5`V-(}y!hn@G`8rigkd}2cNc#= z#?_943a{PyH}d8oeVX1P)DAeV(E%UdMFp6Df<^fnikE`I+66Kgd2AC%B1t0gsXkyd zHgMzHCV)9a8-NiLw*XDuZecIqz(~HJCewuIIrj(+VsAe9J|c?FRev8$V#Y`qt+Ws~6DzA}*6vVDmDIS|h90}C_C(R=j%7D3i4h{^$_ zWT^27e+jl(8X&({Q#gRck0WTmmsxHzL4&C6s%N`U_;RhE+2N4{Q!%&8k0^wddY8>< zK&a+*lf&C?W%YcjhH242UFY?)p#GmT+}`k+`#U;u zvqx9Jd^@%~WMps9Wa^r`JF{F}U0V=LEY-v?Lv9bFkx0;>t6Sq)#6QS#zR9Gzj{e=V zc8wXQr6;A4Hef{84P%{V8Gz=cIaQm4&YFeVHKp8uq85p+NC~$S2F$fTmO)a&@iMX$ zWJKjv-q<8Gl}x=<_d{d?=quPKDmcjoXYr246^^PepivP%TTR=LqXre5Rt2)wEhBt* zXYi?+^!#w1pj#o;Hbh__v?{1oRl@{C`;DTY%Tr!y_`hdcNTvz%(W=y_Z06Nt#_`;- z5sZ(_2e$-{-k)|7Os^3Yk~kp}7wSB9(BCqwI$$&}G9Dw~2_PK}sjzmo$q&)FxhhVa z5D%Isbqv>3QTyT4!)5@0fes8v3R~vita*JPHed9WtSc`T{%YUhWSD}EyLhFI0{mcI zA2PSw+yq#3#ywY=ybCgPqhq?1g}z6VZfk-!sn9B2U+Bx_1$X&0 zK?!2PqdnEN^qeA(Wn>FBsEWsBW4GNv>y+6VZ&Np0S55h!``x#n6<%OfR|$D)-G$3P zAuXp4D%xCdU?iUV!dqUha=5}EsF;Lx=^@sMg9a}lSZKTASrFNKI^9hPhf!hhTQpsX zFJq>F$HS$1Wey)xt(%o$r^fIv}gp$Id zKf+RhLIce%R^;~NKr4C%^ndRF?_ZyZ1JcVkOeUGhq~ME;-FA`fU4n6mIkWlA&E&az zy&HdaC*|(8GJM(?wwmC83X0dRWGHByWN4&4eJ00L#0DlmPNnuZNtgWAWEsNpTzKs1 zslv;J%(qvpX;H4t;(eLq4`-XKMJ*%V((ZqL3Z`~VfG#pUV$yh5(SX3jAnJ9h9!#Rm z9VK)DoxGpDsJS1A#WkzE-9}SZ z(3!fqb#EYLPvmQ(9O^uOstq?M0X(e_xeeV-< z2I3qt;|ZVwO$Vu#h2c!(uPvmiKnG~dQPnBiuTDIO zv7E0V2(pK+R2rqv=Pet+;50&{Rk`y|KXOGUI9iF>`nQC9ZdkgClJnW?7q$oI0u!OU zzjQy+6~LKxNbK=G*(twCRKym2xEF)0DhA1=9gbGHZT_hdMxngC-&ZJ^orJ$=w*igL zB+AtgCnO__T^e|2|2@nzin+a%X@~fOFe(OL`lit*1h9s+hOMX%;ZZ99FMwNI3WmY0 ze^u$bg8OvCKOa<1`Sc@wuHOx=RG4q`SM3t~1|-etvuZ_c`ZxuFi!QOIFNx&JoWTbBt#g%ch=8X(LZoOVLth zvb13|@9UkofMF4!aEek8jB=ctdKb_nT@Sd%+RGJR@9PP&-tgHQd0n%C#A3uYihv83 zaEQq`!XyiNu3yT`U{9=Rymz-vhim|Rn75B0s1y6gaPq$cdbVCr{n%tpoK4?iJeJ9G zsWaEPwHWX_d^f0tb(NBu3FH#f5`GY_Aqj4Jng=hZ6>?+bJ${hB>|0hR4vaQswThGb~S?0}z5S&w)`!NG-nLAlx0DqtJ=Ga|O*Ul4w^sj_~O7?b4K`j3u zNa}koy;1)@{-_3L4LHF;n9z!$5&klp3>UPyyp(VC z;Sy~t9mF_>idVrsDIgai165EUiJQk0fd8)q-wV8`?NiInXwm&-bvHyEO{7=;F;%mf zFMqO-;cQ0-Xd|292RS@r%X|CsjDWW&(3nugqCtbJ#D9aRvq*!s2uZgv^%Fqq;p~W ze659+Me5DW0O;gr<}^Vfd+0Y%Bz!jG0<1*pyChnOE_hD^2kH?Odpux|lecxZ0qgg- zHUhfZW62Kj(8wow1G)L_mKNsD1iG$9%q)ou$62rSE@`2xaqMfWznn2RJ zfz}wR`1U?;Ao-jflD#V?-B1>~i6HF{Ao&@CM{xVlfX6!FL%N-C3p0Q>;txd-)tIxKSXNdivm0i z(S1@^A{VK1#IYYqf+~`Z_hloFZS|)CL*#4C>y8T<7_XFA0pQ;#-qUxsxVjY#o(ee} zWvX>j%D@-&+bl0eW9Ip7c2yWQ`>AC0xE-dI54@A@Sa|fJ6FDKK1+-GB*IMHthGpZD zhBM)ofBhN^s+g##f+u_sdki93e+$MlX74hoP5v)qz_bVP?yzsM1LlrHd)g*a&W;{H zwPo_`MZ-@*eNHf)kAr84%V}veM_)8t`Ii$AGgv)k$Fpmo>-w{=??ZOvz@-*UV8B8T zbmu_F{kFhiW+FkHUrfr;6h{llV$eu00LJhqnVgS{wOL!&B2&O1>``e@*PhbPhZr1M zy&UQcrg#LNKn(qAhw++R^`wk6nTeX}7$cTeprzqC^CO0F;Sx_3lDs(zv#w`g7`yz_ z`j@sv+=u_?qImfD)V@DRvG9JK1``TI4^J2PBV4g4?9`~P`-p(RmoCdTTdHoAQ0|kO zZzkj5{r1?1@Gwwjl-?6xI_YI?;gCAU!S=*5kFwn7Y_2!_$;DoyFQ_Rl`S0f+DFF;z zU#_^pG{(5h9N0Bvx^HdEcsLg$0^brVA&nN7RswZBs6%?qB!$+zABufqi$8s*#LN;C z@Wh|sS|f#ieV#a%9OE?*Bm}<56n0&9b4Nqc~?91_;w}kIX*elwrIDq2Vk6V@30)HocUlvm3@Nf{9 zfw~y4g?60elNo4&vmyF6IXO8#YD^NK8Cn1=TOFlYS*UV~NdmqZ8oK=n2PFoN(&7uF zw2H1Rg+1eJBO)T=`y80(|FTSvDKHdaH%)of->G^bdTemCH3@o$V|f2Oumgsxt1Gc} z4iDu^PKd;v?qBuIE$)V!&YkJ(zb%U(z;S?HUBYCK1WY_t{R+ivFo_O5mP|XNmK4Q! zxeaiR45BoY8v&)RprYAU(M7xDMOcYOsA;RI@mgCQdsZHNrxfk0ftxHJp^Ie(h_AGP z;W?FElc zTJdGN`_*4K)Zv2H4#}<{0dvibggUSPHW$kZH@NY^;;TdUja0Boj<_qS^H zA9G3j%o8|zo!B!WKFxIKKT=U&Uxfhz{y*|cf-}-z*>)(G}cw<_u9jtYjIN`%J zu1Ek3r-1zRp|^DV$aF!4x0eAW;65A37(^BJ5|UY6II|h{bwEoqLFE4|@zd!dA`=MD zVU7fg*ufv{GX?&#M!i=pR+7UEu?Qi%&gV|_-h5RE{TIfd1s71Fqo4~Y8@RNUzg3WcRky0N?M?QzsokFIel3IV@b9<7 zZr84zb@u(KpHEK1WHO4`o{?di&FD^81T)(Rih{YZ6WYY~cxr*r9NEr`{zI>f0I3`Q zvEF~_3_8dRa3#mbH$2g>ZvxJkkF>v`x?&jD>8eMO5ixfBLqvG>r#BC|O5Q0(JOAG; z#Q;=IMS?~?z;*R0{ej`1Z&Amus95YfZ>PYglAtczi1!zVeSvKGzoi+FfwZv>jlHSDEVia+RL2ULt zj=UQG2FTrlz<(u{n$3HGAlzT8l0i=fUfy_H1C+0F7o&GgjY}k9R^Y-mZe~RoCPTQD z@KMpQ=BsSjcwbGBo!35YOYi?Jc)AlT=sXC{gg5u`em8`4U=oWW#Rb~EIKNw7DF6KD z7mn|s5e!4)rUAKSd3Zgqn$m|eYSsFecQQc44r7$MZj(wS3hni>HkD9#FOB02zdRv;a|CNBu^9=i_&M?#NZ{gpN#KG$7ZKP6^r z)noJxLCE+2_%=UJp${2NZ}R>?C(wZZ?^EdTS?*4Vs$2-a=D;*-yuiy2m%ZI&3$P;jg;r~@OjabvIY$XB!INH4=Lh;DKwGH7hrKK`H$iVM(9!}6FOWxK z#ozVbbXLLCxSgiNw{hh{!Vb1LE$w=XKXT7N_1l89o-oM?(SU}ng@CaP+Q&9@jb#{P zvK%9QWJSW>G@NmkYRGZ zHcXPn4e^5|G3l_@L`57rlnSiS$g{IEr#6FYpsVv!x2X-ficT#qRmobuJb_Pd&7h?W zE{WB<=cM=T*K}2fh@bgV7+IE+Uc6h*e)dmBn$~Vh)FGilM7ezU&YyWYBTXbXySyc0 zRp)C!$Nf)v7kBJtaf$Pb`i2l@OjgW(M3RPYGSRDAiaaOrxOY#sg@Lw` z2fsWfw4aG)sC}7}|)6xOs8rWi9X2ancHGHwldwl^)qKeH& z@teG`b_l5kx*bXeTLV8`ZN3_oFD_oQIjiN4flMO)HAwp_q^;11Y1#hCNfE%M!J~OC z)8Q6Xaur2V+HF21H=OD=R6ATjwspuSpJT|nfzjd6O21hOM8FlN?aV2iMtrt7K^yTy ztv(`0F)OFvQr%lSg8tVpJzU(T{&kzs>hBo^y~NaBaj<>Fw2eXB#^fCMlv}QZgD@af zrkH2^`zZ-7!1O+)H<|8ehljlxuO!#Zzy-~wht~CeC`HfJQ@dV{W7v(#yLaHrc)WS? z)DnAKd@6}TamcixXQH~VWa`TTcU3n`K~hy_!_ivZdz zw;c6bZEr^l0g3L;MUc@p8XF#7K3CRbm>3#Dp}aUOuMZ2*wE$GC@vi6v$uJ z7Y+HP&0#%&KOfrI6lO9vi_mudBMnG2AAJ(l3>$83xwTj|243$c;lYg?a-duBU6Xrt5Ou#H@G=Q@^#(J8G<`-RAOE zop%6FKgz@i;{`z}YweoY#R}-d2yHpJdU?84@48kvtUqTZ2~agEy1PWD;C;Zb#e)!A zn3f;YWPyr;0@!Mc>E$v_x5l51s)Ce6N*K5s(s=|!GET4poE+k$&t=97H3VNwxG*d1 zW;ce~mZwe`3N=O{o8||VMSy-MfNIHc_?Rx41@8kcX{{1TdY|EYh-DTsr#rLFMh(9D z;-I>bt~!hSY8 zBj4>%#f2HJY}V^Aq7UTf!1N#k`Ott+cR3mwFu)6T*!P;eklE720k0Gd+p}u8{`&>1 z>^OWiV#BiSlkI^@to3@cm#wM~@rT%Udd+W*>iy8~6O`up zecfUwID4(lmUZV2>P=QZ0?$pgsyNvBgStIKPdn4vmJokyHB|aH1$SOcU7&vkV-Y+a`OhrHRgr~-E8V< z@iAV*z@S<(+27Q_Gc1q&{yof*ZWCkVtxv0(F@endgZpXlonCJO^Am-S(6#XphdNp; z$@2iBL{9F7SioTMdlL)}Faf#?KnMmLpRU2rOoe_^X+&T*B^_w?CszHs#+u*0v+|O7 zu(0m~#Oyl!h_Z!=zicIxYlN<5dXe?qS2Ms310D#wAS;*7%}Lq@-xRbcWFoF37)-TX zgZj4pkJrP6aY8FHfo$iXs_{r{1bY$45rd9MD$IrVTe!gOC+*+<>m+}_odeWuzt4di z=PtO}>k~!xF%9+qFuHP|8SJmo%$;G!xX+v~CY|(~tudU>Bz$qv=ge8F9ZeN+`{ER4yJN`l?me!Hn7D#nOHO#_X8JJV&5qd47e`2@! zZomu5(p}Eh3F3aSIAg$1XZn1$gWUUgkpmjihYNbmPCz@km4@#c0kd}w2?fQVDnK{) ziDEcS8hGk#FDkEgA4$8apWsH2M843UW+`(S>X*v`v)@K|t81C|y}8+MFbVIsg_&GF zO7s*eB+fbeX7%EU#U9;48Pka(4(^D0rm1scWc#^zdwz_^YN58skHbvJmGVBW)LtWRlCaVo|xrJM2d*ZneQ>tDZn7gh4Y5@AyC(S_}spcSco00wZ z%xISYmD?7sJ|8F#Mc`W<{h*O2+%9q3;R8yjq1~2@Hn@3|B`#v|$she{+F<%SpaQrB zmpgJCuqW(gm>z2PV=%J5*7e;O&Lw&7gQn-Pc~@kbEb#0Lk*Sq^5ITPhy4=O0tvO{@ z2VqTk*f8!CidBvKPMZ2F(g%x*LQsB!8D!g%*xZf4JgtF4H)4gV+?T72yaw?f$J1Wc zh9V)LB<+rEsQ2!)$1Of52P9bsmjpF zoHIK=bN&l6MjAHI&4I34I~1nfuRju#hqX$O0JW-wNFd<0%gK%3bx~A&7yo4b+q4Y4 zg2}i(*ak3+5w;Dy(R`Ypz=W=&e;sXbug~DmraMbSuT##_M_qwGU~4$s9KZXN98|C{ zT77wmm@+1+_(BH5ZioevMx)=G0JuCY0hcE*0ygkaVNf=xbP#`F7PUymNh1#4_&3(2 zpWOihtnCAC51>ILOn#u!Bbtu{Q=s^Nz0DtD{mwxHM(D}dbKaR22qgWEP+^uF`aw*< zRtBa>T>oI74<2N6L2CCm3dh9)DqU~PcwuS^djxJ$Tl=Oc8DK1ouR|v&`3qZ85RA)T z{LlA9;ibrfZ({soQb0HZVEVLd^f5IkU?!CXkRT~(=ehF5o;b-Lt05x*zVlM;V@tlq z^^)%r+scW!3S!NEPY1ij{ny4qTbtkFN|^lp8|=&S5D;Tu3DZp6d<`3n?K)yK|L0M?P{rTUCE8*m0;D|kIn~;WHX;aD@1AR8h)8gZ zEMgEFhUF6?mZdC{b49JVaYZ?!Bps|8Aa;+HJO?bAy-&M3gC=iBG+543TZ%i&BGR|` zqja_3)Yv!$*Q^^nslI6}>ID;DEz|=Go2>5gSxsEHrO#rf^cmJ64!FhA6QA+jK=U8uSnf z80k>R?LMC@N;QNU{g)(_8wuArFtk;;OxQgtu6C25!=DN_SfpZ}J3+tYcAME+(M!I3aOFxgtcxcJB0+aI9d`M>q& zv6b-YPV;h-!(%X|f?1N#-d-7S4}QO;NdNDL6bLNdeRpX(US`FN5lnn0SM(Gf zS}E_$LI6V)Q0)##EgTxfq54#f{QF$Eg!0F``iZ#eq>_aVZ>ojLwsD>ime zSV3F0>lEM>w;MlDY0gWK$jtMhKDFdTxYhtLji&aLSa^DK>vci-*uu~sp5R)s0 zSkR-&o)A~3i0yq)rP+>%s;re$;EcJquvncfgsvVn^6JlSz`_YItuj=sZk1k?id$`C zy!@6*E{=NukVzg8x`#1Mf|A1<(MBF1)ZEmhanx>?JQR#8(stuZ2Yrx5@wxacFWc#a zwb7p?c0Zz1VbxiqKeIoPmh+t0nqZ%!{G6Zs^xA?6qM|_$YPbuoC;?r?uoQ!x5tvA# z#srDSFegG#Ye<6Tv*v*?Pe6HP*9#FoF){g)Yv+xqWYTfRd>5S}No?{`qLk-ymjc;` zeI<>|1TGin5- z#{;uVZS&?qTe7~_iLsRtuE(8(eS`lLcN$!w-&xqVHaeH1J?8U~0dRvrtk9uc7SrFq zJ_AT%rp#k|FqZDS_yXQ7DWI5qf85qX(;L5WH+gl1%etDVD))!ie!eKeS+x`@k*vU0 zhjU2Cfkp=?Gc@Dc8dHCuJ(fo6D?l;Zc(|v#q5L=!4Kse=CaG=c97`gfnMLIDx%6~E zpaRHPh(|Y;!%|DOChw7qo53i)j*5>^z1D4 zg2bj$mPO5!%b*t;qZ)~I{V_69vSaoO)n{K*giNsRA%o^eSnthmj!LM3nU7G0DP@kG z9Ry*WhUw6+0Y(|jkj46ap)qCJT8-8|nhBnZaeV<^pj+0l5i2_dPGGHfd1s_razJ%i zVsJVsOVwS27QiDot|?^?8eG6b3hd2HhiReaR+}_XOkeeoBW2NCFNh`-G-sSo9o1!F zN@~I7)|oV*Vfp<8+_%uvD?J2sY_|Xd@p|}BLkb+In-$-2yZY6mM<3$*|1w^ThDr!b zOnAGX4z-PVO?lLZmkyv-WIUCeiHHrkzQ>JY3JZz{xEqX5K;M7xFpw=2@ei68h@46F z)W-9`LOT5kfT`YFmp+bCx`i&vlip5N!a%}EFq4|B(X-V@mn$KkRv6Lwr1fK7!c*%8 zEl^6Xdy&N^Jnhx^q{~Nc*c`N%=sh+7sr1@3_+hbQlj+#j6ck?+9RURA*gJeQD!aEZ zGz@Ep)H%DO40A&dxmyAASm{FN&~qnC^w{9l-)$-h?kJXQ-}33q@TEuz!e2&XaL%Y? z8LK4JjyrlO{JP&oh;99-z-KaBRsOB6OPo+Y4<#wM>GizAqO~<0`C`&Ag3tHnoX3hl zgQa9BVV;@fdVihXPHUCPYX_9xK9olTd?mJejOyMA5DCj5eA~+*8p8%|bo~8x4JB(G z#@0M!S;NVh4Z*p4b?{_ozG2@Vx897P`J^|hHG?){Y_tuk1c%bweea;Z8`x4s_dsEN z#C#w=1J~-am?jL8URpEq+Q@_G#^FBNH2SjCO81^j{f0|3?kLmN19Kx$@FGp1KSnAI z{*AYE15t*2+iiQ4(1t^vpg1uEHI|MlB0gjxyTq6<4N8ej;&(`vH&pW0Ns25nD!4*L**7I;wTTCDb67{AOs< zHyF&|^afBDrCW(>5qOBEJ#r=5It@Bi=;ipt^t#E=#Xw&BrEeS_@lc|iWS};n$p<=K z@Bmy(dw^1|QYz`2&w4^kF$IqHO|&qH{grsrC^k?~$g9rd+6wYzgD#vuI6~+Cc|7~) z)ReVi$Iy+-$=3oK!8rNwJnz9Ic4dw=w>5}d6p#a%DgGD$j9!y`f`ZxK6v13{YcTkk z6!sqPHHbd#a6{g1C&*;ZP!W`rX+c``kTwgr_$$ETnIrP(CsF;CM}5{KIcY49AV4r%K--^nz-%a)v&)tU}r)^@8 z3)1qCkTp_FtRgG&NTM~e-fH!0jPT&_BPx*fmD~Tgx9kxg3Ho1z_boefQn3Bz_v{x8 zHIxkpDBIb?x8F+aEt-*y_;nfOcl~5%@j!p{xuNa)60bi%#l*X+tYP5MCv0#ub5L?3A6=L>X`Fkpu=`s|PJ)l|k za*5(r<>nor7@JL%cgXuTMettSB+h@aSK_baBw6yK25_mK*yz~Wy-+IKvwp~B;FbUy z(P=1@4Cb$+7_+@>9znsARXGk%Fkr?*f?q_m-hOdqXe=B`UOTTj^o%$`d(aDI?%Fbbt~{s{>pNhFjQR6Y{4AXp9ZrjoTzDO z4|STHMyqXyiH&sQLvA(N7(C+?jHm85@+~OR$cuK2Wh&XRQF#9CM=M5!Em9~5{VDoh zH1imorAXpC1j~#3;G=V#)TzTiY|5XD9qXZ1#v=t)0K4}fAsnc5-35Mle7~AYe4Xy= zv!2gYWVWk5yX~(0y;UD?5}T~@qsT6}Iqbq{79ru~5^>t9JKF-&E!`>#ds0@ES{!K>HS6Y#J@15{oyWhz^ z#2V|-Hhi1-dGn0neifO-ny<(=TirwUiBLx{sAS+xOVT}1YO(UU)!i9)R7CWZD2&XQlDd-~l)5|DS&Zq_U%(Dn%lPgPs9;Wp+aV4r0@VUiIVJ!a+|Az54(D z1AYQnK3Vb!_P^S3Q2ZlK@0$!;17=(BWzxTF;kpbs-xL1+)o`gMcuxODQ>{P0Mk=$1 z(x6dgu%V8DLW84JCS+0009ypDy8zq^PGTGs@EqZ429A!U_4VGv1-gKk^k+v5i=7>! z9H{vRT!}>MHZ{Aki8hBufRU@fCl47gQxt=N7bRjswljdl*k{WhtV0CsS)+j@v2k^Y zvxfv)un0)v*4EY%&l&lQ4Gsp*u7lYK5DU>%3|olnR)Ptz&v+i^=N&P`>hp8KIC~%o z{wgS_)E=yj*&opW#UIBIdIT9pz%K~3542T*C?DbzJ|zII|Cm=TafF{^WI~;-=Voe`h9}u$X}`$rr4z*o}Z>o08flCfxKc)cfFo^wEK|8$d#uz$~P$OG7o#pV| zcl?gx^ip@-5=Lk7-Xf3SL}2*RiaoGCj^>Z$StrEWNrwpBtAC_u@_WOrcC=$#g9%X$ z_~TvAFK0}uZt{C|7OZ!S*y+v`w+n27DLpT+z7g_8xIC#O=T&`Ss{RsAM*}s_SX=04 zcj~6Oww+a(6v@V{+*>P$Qvc_E5`#Kp115mUE*PHl? zRI5dR(LfSfX^ro#X8igXfFXzZS%($;cX2mLh>zcr8|oBs5VPF%`0x;XMLV&>q@At*0)fw!WnrJ+f5nUNewA~Iy*VY zPynV|vt4nUV1O}N6YKY4014}a=g}l+o*y$0z>bs>fGcpQ5RVJZ+h8knP7?x?KgilE zUuq(wGLH0p8n^6gG-R)tWoc^wV{Dm!e5brW#0}^C>PepH6dxkBH@WGzFf4V}Sz_kokO%&#~3Tun>BS)!q|1h4w=Ti61V-ZCk{EOHIaVGP^ zJ8emisLVHGY!hteV?b6P5J+MBi9r=NU_rm&;IkH<7+%&jCq4-I=CTDP_9_9> zb??~N7B~>zf0;n(g!uRhz{8>Lx%=ka!G>lYln=8Ja&f`?vH$h{*RFu< zxL|E-$+KJG9YkggtRvu7yiGyz)C!P}x54Z(H3lRc2gU{lGoaCS*&*MEc&}uKE>33; zyv)@Kz{VAe1bfKi!j6tDfeU{xZ#d8@%?C1|Oy9wb$ttJy%j3+%nocyD6o{vo9h@Kl zldo-v=>uBABrg%p;i+h;qBpx?yN1>yax^ihu73d$Eboq&Igh4Uze4=&L(tC?zbwdehhgq&|4#M(Sww*AR<@5~qiT z=(U@vkS?p%7dy3>&Vm!uZ$KMHcYJwN@BQQM@D99sJ~=OfgtWiR37kgTD{IaTsYGS@ zpgeBER%YV7kHS**j6S=}dt7z8HLk_{=xicz?Bt^zdD>d;a2tEI`GT_K2vl4F06$3I z5pv$p@My*a-lL`y;nSd>)P2xO#Y73$nRiB@9`xo=T~l4YEwy~Y{tatuyR%zt1J&or zie|Dmu_JNnltOUqXE%%ROA?*TB#h7?4AR-sf}~>!axMujcMVD{d(qISFzJ&KXQX$7 zGN%;3Je|Klke9v(X$3VHr{r{XXmccdQR+frQ0fYMZxG^4Z@VnI`XmsMES0|DUFO6r0`Vf zjgZsNzU3=YZ0RxtFpdl|fU)(Si!q?oK6H4LB-BWp=1u@FF-)zfiWp+AW&g%%*`x=@)k^2*d$6bYDS>FP-C6@TKMt;>SLLx4 zNZ_7jfqj>&z0Iy5-Hf&oe2r$L``c^!j^60MJoZJc@%mv9fDT(~X$PE!RDG)+_w#AX z=Z{jX;WlbNwb!1h^HqbA5_#iE!2hhxH#jup3@WM13s~m&5XHGhKgj_!Ve4+u;Uiyo zbG$)$^DrQMfs>cF^xVbkmCY~X0lMp@F(b~*e|yKFQFO<4VO6Sx+u~IR0hW($-9_t2 z3{zP_m)4W-t#61rsWo$d-5LmJ328{txW;z0@O6E0N=Iop*b=1jxfnj;#b*i6xZw`@ zkYzE(ZUj^Pv$eropp!{|v~(5HNGC&-Plwl^xryoH8~RX5&({Ab$xGQ6>gvP6cnq}D zSf;up82Yy;MOnoLhwR|U1w^MyOcV_affTyG%EV~@RaJz^ItY#|m<}A-Wc|gsqR2`5 zup3FJJ93y0cE5p^1vuK^xBo1(B{W&crQmdq=+@DJ+hlCxXPe*R2z12r@7@c8Cb??R zqy+Im4{MWzzP{EM$T+P%Fi>P2PyRX%%+U`yj@p0^HrsDF+%KXVU-QCtu^BRVqDY4= zUnVsHa!8kXuD4umJ~#Hz^i}O#hV1$`#QzWMuAapTaU+(qPdnQ zv)gb)oeTj3uN@1)X!(}2_`3AferzfDbE|tW3{tpruNDK}R1_`H9 zz>8nk8Hcm{=Yt)9#vbH_X;wj{PwCgM6oU4WFV=554_upM4h3ny`^)Z^C(Ey1y^5$? zPVp!J*_ZEK>|OtQ5+{WDsd1ZnPv8Y#e!!u@`J<);LU3*0PP@CiK}~Zym@%jZnwJ%P z0slQF7M5%R5b;itR6jCKA{LHc2M43_)ie^gNRMq4j1`~#3Y@HV8J9=>yTRuE^LkPe zf3%y0817Te69HQSh8?AMQCIMG}7j7he zuL7u51?L7L;a}XyfA>Wd`CDyhI_hs>P}|^Wz&c47zK~c)Y1r#zE8{r78uy@_smKxP zAtJNvjEzVf!P=v2L&pjw$5Wdj`Nq>EK7t}i{-Oqpl{);+oi0}tJXP%1ZL|?tuk)RV zS?O=8X*9PJxGJ}%?zWGmguD6~a>(&mjucVx zpkbFPkKmir0r*tO38=0?!TEYYZERf}v&*jJeY9X=QUj`9IK+6pUxMCm{h@DL~s@ zEqcH-H5`&d{QG-nUiQZMIrSannn^H6HY`Zkf{P;MczAJ^K!p!#{VCXUcM{~i05hgu zt@}aTZI7;wJ0Ur6f7T=+-Hk*~KQ>VWW_I~KIw{o*mKB%fyhmB?+cV?zRXG%Y4e^skYJ0jey3 zo=ONH#q%$n_bA<3WU)hXP++T#XXb8TEQmjj+tE5tKrIR>GBBK5aLGq$?dzG=t+;qb zJiIhCBYld^!FH&8!FImi@qejnWdOI^k-wjbEp#J4-XFk zQQP7BrKN92+vSmdA9EChf#s$SLK$Hqo(bfi$cv3j^)R_ylMAs{$$E$=->N|sCHKJ} z%n%0=bGepOudJcU=a^E4^pBwGs1`Kms(uOHvkCz%_QGqzPR z^X%!Ql;8s0t*z$0htnPwmmO~wL+o;Dw@g+)&=BeLm7Z^m=X@qxVd+|VLRz8bxZyLZ zw;5X5oN$r;RpzOZYNiBzoCK<3ig55EGzFabk9a6+0&vl|tLHi!$gkrq!m+O${pg=3 z`3aZkSD#$Y>N|y>ncBtMp!V$H*uj+JgWSRicQuR&`1MGeAum~1g~XgYhNaS%>3GEa z{=j>BsHor({v+2+CV=YI!`)r9!ppO{%IT=I{D?xt9MdV}qt0Bg4>m3rZ^L6`QiDZ? z7#r2w%4dp|5{Xk&Rd8f?Uco!(uZ+QW`hE(lrzD-(8_c=d>!!TS+Mc}R*B`&TLrus| za%H3DPtE+?o~dhQWMt&y!#AMg0OyZJF;N2M2GOgN9-FaJ8Qq!1c{ipU>_5^!X9_mX zm&m{gF@#ytwo>1HL(#i*RX9#>%xkyI=9Z=fK|%QUj3PhKeUO`*`{2)c(R$HFeFp?N zJzj?;K+wGoa-Ir-48!bOtV>jmhXm@s_pU-(R@bzZ9^bKE6=(1y?v|GGaK^Tm<7gY@ zd5cypwjrk+v|BwG1psvaBUpk)Ae&QIc#FNfvXTVxi{WGyFa?JyE)$L36B(aP|L74D z^N{=6rEY8|Ti~Vh@GAswSqkn-{Deke;ISG_-jNr7(YOhz1U|vY7%1@)7zY^xP-Av$ z$r%(665Gt=WM(GwPnIs%oncW37+^|=eEdkH2=Msp5Ad0vk8@`8^_l!nHHI%<8#Tg0RTuQ7rg2`_{&r`e?9o&Li&g{PNfE1O^X^f4~`7IW6- z^lRRiT|IJ=#T2M7Gsic~W1br|_kZE28S3B}}l( z6|Q4rPgWFPx{2hA%bDx<+mxzWczYRYS<<(~74!_n58 zghN|GX}Nj)#1&L$mET6O>@^wB6^iuC3NC85FM5F-%wo$za^Qme?&xTEXlUx^l=UKa z0AxvFyYWVCMw%v|g;4R{17VylHsQ;sXkw0}GvqN}^a{QmR$&yqO(Zh=`O+*+*>mmD zS+~BMU1prN`^xLXTuscP!5fF0=RpUI?|ZPZXw=21%0VIaN6{y0&q_3{Z8&QcDs#a} zi=2#VvsPQ654kK)rxXn_>i{b?i%xAtS#fmGJqF9puX*-`*BXKqof~2p=)Z*gsP*kd(A*Z3}Y+cGLm>oi{<#tz;B| zN0k^mp@Ge6*fJPcJ^EkOw7Dlm)e$j1kem)!h;!DymXA6OwDo~^-sp0CYJN31c7M}n zETC;dd%5R>|LF|}+xtt85gZ_vOQA# z0G%rhq)?=mQ54fnIa)&!aRja^P8Q?5(?0kz z_*Djet4E)G^%zlJDOv?~x@!xYLhksjs9W{=kDf$B%Xe7N0K4i7Xz%j%YR7m>cgmqY zPYLV{zJ|&}MMQb@Sq4P?l8pknPpK2Xe(sih(JJ0e-@p6g$7colsK^sqdvsx(tHP^@ z^B;-Y2PuFk}g8=9_8e~8H;2Xi5Ntq{Oraz0dg94OBo$YQ#*owZfbTth|(ldNx~ zf|&@9wCFo7fTz{ySWOb~a0azSE9mi9DrBmI_X`WcKCd0lH2S+fT?d_oEIBNpn|KV5 zSDc*4C{Wd|e694nP8O@G?h(8MymSX!$Xh(l@`dZ(o#|u5>s7<{l^MP7>TTmJdoZQ) zVp=nwXzT0uq~7l#5V-t;Pg*f?(JQK_Zo3e6{d;%;npkM9;%ny<-b|XyU?!Q z40*;621c8lPURL<$=U>B?|fRKE292X&A%d7y(3Zzb?S0U>#%~R@IHsqOV;0@WSzBAPuHNL^ z=jP6~pOKEa;kKV}fh)T^Un}%gjOpXlNM-l_yOtEkpn+fmTU+d#0937!`A7!cyQDg4 z{Zz-mO(-XJ!mp0Mm^JYI`JRi{vWxtKo8IGtgLHv+Onq{ZNI?(?kYOB)X$EI$eugms zdK&j(_7~|bc}7FTlEjI8-pAe-Pfs)mKtta=2(DBocuT7=Syup05@1Lo@P%*t!d*J# zj8i`K#@u^nM!fdp82^=+VAPsnX}-*8aNi`^l)L%#NWJIILF}8-Z|xtK=n8GLKg9N& zkA{g+h@H)IOl0JCd*xnD+|u`)Uy^&ez|bQ`mFVa*Yi?Z3G?0@=NlN8;b!Q;)nU{E3Fz(bp(0w zbUXq3XoN?kR4sE8WLYBo-rWQ5D90{_>bHZsFTX|gHyF|PXQdyvz0d75^sW4Vc(#?XgBcU}Pvx98$M)-*@Gc(|s)7YqzsHf#34rNwMo~ZF z(eyj!J7$W~_X;8qKgb3VQPGmwc%AgH=|^PqI~SBBS=sG^wIrhf2xwt$4#->5y)OwPt`6%D(vFu3ZZ%nE@o8WeO!Iu}fcrEG zwb2&fdUWNFZ4K97I+ZNfd|!P~C=JCHk74knR9Rykq-Y<(M9x*}G2}m81&*54zg^CC zm)>mpA=f=|@XF+!7z3MZFhlZ(Ed$Q9FO9i;HfDTQ}bL4pO5Q4zGR?^xdL%cL?=@>W=;uq*fwN0*HUF2uf~H zCnaP(Ub*^O_%Q%8+al-V^ML^|?uYX&k_jR#snMi8?V4KJZ?q(&D}9o_ei^|hl^zpH zLuF^ud?%JIeEi`j9G>#+fU2nFA8{#Xv$K`e=$hTQVQZf zd>T3s+;9tn)3OL(TIq(vxlCXqaQpG$6;VeeR3pzx`Q9pjP_%!U8Sf>FMbJ zKO9wqm^~v1fwS?%)mD7vB-_Cw-GClx_v61@>q3?o#l-^sqU9qO8`t%0&u3SMjl}m^`>lq#=J!$R7X@g4?l44HTjjPX}SWUdzdV?!#x71@j(DwDU`?KXL z2b-i=tANLl+q{nF>yPxFJ)_w^l;ORMc%Y=(+AfUqJn(kK%7Wv$jBx|lh>_q`9>6oG zR;cHBykp3k`rDmi#=kg#hyZhQRqWC*OLA+a3SU2k*smw)9Uk%^3~U*1rbY{ind>1~ z+#4H8_s$R&-MdxjUE0lCK!xm`NNA=P3H~9}=ktANNQ=yHM3^u59ll>pd4M}(#=YW( zKj+hhCr-TL`$n$dTdFD?gbb4#;GPi#c52)Pj}EA@09Sx-ux_zY;HqnkHs3s)l>20r z(^AayT;Fx{qABcH5p|y*FVc;G|8^Prw3NO?XHq{XCMx{vw2Z*yazkn})%!fKS~Z3l zk`eLZ4r9p5#?Kl1aMsPhb1zijf?@ zx3Z>ipC4jDurZ0DB<}hW{n%gvKm=F@$7JT#hv23^%A>KGBu$I0H1Tult-8#a4v==j z6AEwTA($}CRrR7r1sC|7wtnGDx>wMfIdD2@zl5x3Z1i;S+7D)sR)E+echcc5O$@4K z(ek1CCl_ncqff)>W)Te)|8W3fh~8)l_$d*15CSc3l{LX<)6&+a+joG!9e)(aPEPKv zN&OTN3LNGPblo4qGCmjYw_7yCcN66-Ges*3B+qvk|KM6r32Q$_5N9`5)Cq11S-7Ju7eHcJ%(!?b=iAS<`; zG8m&nJ1g-z>R-Qb=159P3Z?##m1AJ$u#?QG8r5@LBA1xtCCY848}lYW?Kl-|ioCAQ zQ!!pDs4>A8IBvaMz)^*lIjfo3_r00kFt6Bw1G7Zf3@}LhI}5bhfRbkJ>Z;L^e!3Hy z)DS`Vx=P6Zq=$9QTk2Q+XN|HFY$EfE;ZQJ3Nv9Vs>Z8Nq_;eBb$>~Ac!2#IaZW)uU z)8<|8<9A;~_){F!t`K!*>i7B)i4fk_vqt3jQr`Pd`Wm7&A{I=u5+fx4-K| zU-W(rp|ENs*GKbfNKQs{kC5V3lw3RNfEi+*xna#<814^?&eI^QH7u+#I1_6G@!D|> z=i0jx@(WBZ_1>4-S9NC-+RuP(6*)W^SNNvQnq0YkZ!{e-^f}8Lg%4%L#Y)^_`ZK=! zXOE2h<~iitBIM~6Q$;6-hhNz+u%7RWU6rVY6RXU;(u0REVbWhiB|C=NNGYMt0}~SN zV(Z94ah+)o%7XqHPk&8SdIykP&5<<(eS1=3quox(8kM767Ts#<1r?PyzRIcVI>k7* z22{k?ohRC7+15jF@s+d1yp~SbyK{d_8h_w;M%3?oPvv;HnvTAk`Wn%w&gA#N!6v4m$6l6= zTk~+x;LUy1Q1{WFE}Pr_fKD>yxA4b~|Lw4$w46%=*ey2L zZs~l^&D3~kc%uCd0MooE2_cPj)SgqLJo~KIjMIsOaL+Ug{a&A7)HEo>-y%Y*xu@{@ z;nWo(Mrt0$=161heDi}Ge%q~Ag>RiEE!-#huO^AU>0g%NPZ$tuYl6(B^a<#pdjI}C zAm};34CfCE3kxJ$&5@wE3WwUveoo8MErqZYFm@Y4sKUL zLs_&89|V5~2JlG{*A+1o6cm{CbgHVVo+F;%uIR>4JWc$ZpYM6LS*~lxgP^MJoBM1) z*Lla+Cm#m-a{gnl(S1F zGga=UR5akZ&CSgXO4E~w){ORMX40aAiT01rf=A%IXK(6<0U5`tF zBXoWHynEYqPJ>UEcf-Qdv-YsOhN_PaXEl+15+Y*M2s|~_JkV<%QX@6H8+|u{)*fd4Qbj@!wfP7LcyYA^y zqD_angLo!9N{3;N2(P!nMo4p>9=Jn8Ipf<*poY_6%xqBDf zlm-##Hk@8gPG2OK(hDkAd0!09@I+>q2mZH|iXuHcndVex{{w?#g&!leo{CL@Y-59)9Ld;X`zpPf<7bl-VL9`cb{ zssK;C*sFPBV4ww+#;yH8Ql1&^fB1+GOdZ>E(&xL^pGm=k54Cvkz#o5)E}>`kOo|V~){+7!H`_myw^ZfPV7vc2?GwusrLY z08W(stN-CC*mvsa2k$SnuL`-VvgPSri4WjPbRaL}JzkLi;G6D=t)ilG_wL=}u{irW zM<=J*7Aj<;8L`WBYFOsxKUF7{CO{juW&Q2W(IEmS&#yOUldLt5J!mJjZ!6s@6G>0uQ&Ameytq z>!Od)OiTN=k*+@*gm|Zr5bxgvY(EyV71tuB-^NIweWV-ZkKdE{=8ZBwxta3~ImH<7 zm@WWRMY8lO!^6VDy1SJb#v7}vk6f-N_L2N29{=MtI{~-6>+@%Nba}PZ=PR4LJ5BDqebSM`$RMe#tSnh` zZNzvaH7Fg0s?>G63;VCIpfZ)*3lFK2Dq^1^hat|qb|W5KhG!MkI%Z|iH~ZtO%B;5P z?bx0i)pnbY{hq;kDf)I6RCYS*wn^GuUXl$>m!B_OaM_`C(&p|>b;YlEG@b`i-s1{Xkudc2-UdKz% zoVHIHnQfJM>6&S>zG@RS9DS*XUfo*Z4foAnA$tSIds&LNiY}>Ka=6p$8!l6Ssrr?mA%E5L6j~kI1SM!}3iJXnLl}`{3Iz9_)T{!a?~A(#k$mjmPyP@@ znP3<^L*TN$jSZ24{Msp6vjXFUhA3?##*QAfngWdXtd3Xvo;h}8bTWGONZdBCe`u1d ztob8UyC6opW3yg;;#Ag9N`H()oXMGH!I=4hDe7i@zI#J`*vfLat+I2Ks41bLj@XT5 zrQO)QykZQuja88tBxo-|&cU62TW)dl4a4@EcCWzK5C62>m8YutmmaB3+`MyVY-)=B zguuCDO5Lk`cv2k6w|*s29xdiASsr=;H7x%FPkl<2MRRz zPizL_u&aPxvb0Y7(*6dU`6Z5K62)SwtE*%0eF}f{2tym~LQ>x!C`D)iD<$y7*4Eax z{oQ&!@v}hy7@M=2MCmGHn=jCzNoHZ_nlvw~BVj}!<6m)7Wootf-QL$?*hv&Xe9McQ znLl#HpW*VNqF9MIy{`we#vA>i(k2cY zgrIDL84;h#0W0(8fyR!U^&5}s@2II8v3jksPXTWw!h{Mu+;SY>D!oT+Qyzq`o zL}@acFLNwIlJ3aCgOO$?I<;vkCO%EEmqyh@zDigNjRlmCH8eE(`}&fEG1KgRh0pe_ zxAeo(GD*)*AI~P=v9fAi+jEI~{*ckkS&K1Qr#j|-s~lrCRnu`DqxbeM?`|)4-f>$S zbLxnjiZ-npueq=6^EuGM(y6Ui@BJHn(w@rZRkjR8>AP2(ai5PJUIyj1ls0|FbT_Bv|PhMRIZ&x}wL^68K ze0u3faO4o>SLRmYbjEUjHU4n*Hhc8X<=@h96K1*xlwX9eM_iw9Q7?a`T-+Ls<9+{bwGkGK7 z4*G>CxHj^b08k(&t?{Ob5Z$BpL0wmUb?e6`LK ziC$V@&pBw)vV&T2zIO1&fn8)*XqZnQCXId$T$RE*JR{hpI*dZM7Y}U9I=Tnz_vtMC z0of}8GY*}A6d^`|<*&n=Y-D2-v^Pq6jI9yJHWIK0WRVPhe));Kgx{p7y~`zNiCi5i zsk@+(^eYGoNjPn)(BerOUk?%q_Q-c6w$QcSU~yodkUPl~MeJD`oIhLXeB0Q>1k06? zoI0uYulx86d%{z2L!0J&a$zCYxR~Ro4_8CEDp=A^ys}W`+WMCGn6zI<+=pP#C_)~< zb*Rv8)kZ``iKqasE8h~kP9lHyzaEM(F`HCcgc!k0o<3v0rKuV4p zQ}2RhyXt54IQ28rYvQXA1gfZnlh_=aEsc}8iJ3Xgm2ugf#n9x9-`pXAEwXSj7F8RtuoPgQDs@9c~?Odn*qD`aSrl3YSuiN^eK|91297-Ug=bzruEx_XvlsAG<7;u6A z9sqor=O4z{%Z$cfKs2GCUT!K?cS|k~6Y}bjJIR6Pz%amtR7CyjR>FL81>$|6-NeM? z<3bwk!K*~Vc+v^qBY2lBQGx#r^dB7pD^xyvU1p(>+w14#V zF`|n|O#Foo2=xHV24F})XxZ7>+adDz9{43lpqEASKBenwK)QSiXzzc&eJWIdpC9u@ zI1T%g9>kGcVsh5XA#@MQaTfvbSf^beHzpKm!2HX?ISS)zUWAD(VBnGiPaZ(*sgLPU zTzy^^ZOeRvG@x4y|GzC*o+o9o6)3r5?+Niiy~BMvIrY3($ng(qh|ho&uja{Zj+`Z0!tv@a`Gp3P1NiA0k#6g)tM^rSgq=g}uNzAXVlptob^ zO(1_l@i`>sB>vUoHb|KXlF}_lRD4Z98td;kf zeeV^xjDQkB9G)L1un$4wyjL$@qEbc_NmwJ5t^q0n=Yz80yD;#uxs`0y@*lk4zkd%D zTO?ySgS@n#)pi7VtE8w#%ScHvMBI-4qxt#y#7}4cSw9-xgKd_*bW8i)QlCImB&z=H zrwv3bEm_wig~B)@V`7>XYW=AWcYYD5824AAhri9w@6M=H`JubMk`yzcU-La%)mQ~* zUEJTk@`#uiQG5gq#lx*Ea}0Jr$cH4XF`M3HPG2<9QHJSFJ)NE7 zOSWYVFX0#>fQJ}(=vvpwVd#=FPC<016-8Tm^NnDf&^@R+DK!mT>Jna{KCM5f(Ish^ z|L_<-O{MkNdm!*iq#nuCf?kUyK+!r$aqijU3576@54kLa;o{QesW#I$v^792Co1a zL4y(&o(Roz`nIPv`w*j=SKf0q1}Qo#=ah5JeMS*a6PxXOw2t+c!?aJVoz+)>YJP4# zS-I$)iNQ0z)nNWeB9D)XoLr;Axp24a2m=F1SD$;G(y0jmXm-5(%kBofeUvU1Y?#2V zugXrK54YXfB-1o~)Ng*oBG|MCY>fT$Az%XG%M8TtFCXLY7Ve)+!{;V%*;xzHrK7To z)w``TBHt7?d??8dNH3I$K0Srs{6hQQUBbrnW|;q3u2<&=beFS<;r98N85zZ zmA<|fDeDe2bBgk8+LdJBx&MPx9%BF=h)7B<(I4%ranD%`gzF&HH;GAcae#FoGvsZ8 z8++`mI$XX7f1N@E2T5O9k{~7~PA=XEeUB7=qQp{4W)>E>@20QYWb=eI-yC6^oteos zA?94s`KVac}I7l zEMeR0adh-BdSFS7|6=FhAk9l*n$^BD5dc^EuPYTJhu@z1M&laHMF?G;PumA!FS0jB zFDLRn#%Q=-GTQyx{;JX#cXf4NaMKx7!&|InZ!k00dCrzjm7PM_{v*pa$^ z0$vd&VzPh6P8fC0rFDkNqDVOhooBfjf2G29@@CSr5?9L)dig(Dv1$at!qJYye*!;gG+t1=7R?(&U84U=RmbD_<{8Tm(@+%TfBU^>~#z#7|6f<@eq&+y+f zzZdM3Um%S1k1*+@MhD}Hi#RwGQIMd1%l+4+s&Il)@D-)$;nf^~@kT9cbdS9OS@1lE z3*8GxmAnFZ(M;&EOgxGY;?nql<-C$B)>+_Dhl@yE$wfpYzCfi_)pn+n;ZhVwwX-jl zv^A8J{Ly8e^P-0Nk-;oOMzfa1#kcsU*x_OxZrMHT=)_$$M*8Rl^W_8;7x)%Vmq#Jz( zlD-``YG&rQdYs&{|Q=c#+$w1`s-pD zXIHj_o&z!~;CAr_W||>m?~!OB&j62|tquQA^hfoAmi2(l$0MqimXQ%mDiYY0HP>Gx z8{m)X%D2o5+k<-j7xVW6&dU3Ks#B)|ZJtce&ie0qzTdwm9!wTCKLkxPN0X-#};(`6@YnpVn`~iS z6AE|V>o$cram3P64Au+nF3Gx%5|`rkZDoChu7#Pdj6!_7yJB@+aYyc+QPR|recw`c zFS+9ff}y14U19{Eg!YMBuwQ%9P*OGZXhS95bopGISxVbT*=unM2hPN%}D zA*4(t&K{}g;PUlT92WI=1i$>vZp;{hS)nY3h`zxZ#f6KG|Lgu`h6VR^GL$9b#@Uz1 zf9E!MpNk!Hs_*Si;?XB$ql*>bv_#tMfMraYPc_o#H?eaOHFHcE68jw$Rl*MK8T&4m zn%kUm8LIa>P1A-l3-Jvvcfn>FyRJRPgxsKV~8=u7YHIVMCbfyk$`?UEU4dl{R-()j^f#(s}^#)bT|63VSJu>_ijLG%}q%qU1Oy=y|E?z z=}dRm75yUmAa)uy+$_5*b|XiwuiY&gO7}x5uh*rerPYLP#1aq@BhUuYv-H#Y%gRGx zqO-G8bPvCXMfd(~k7R-al7I)3b|tVAuzZC)O;S6)JG$>3JAE1~>&j@}9mDI=ePv&~ zbwnfxAv}au%AjhQrl^*nb^S+B``;9xht_7>Y`2KRD_QOe^g#o0-P7rIl}?i_K*Fcs zv#OTaHz#S{cLB^8+RM+1VDx#vg)P2;c}9O-)Tb?iwV(q~0esCh;65 zF?1GRXXLE_orY3B2~9nRjpp$8Y#wS_cE!_IR+>0eKUcX|;T;A`3l-e#>?pJSy}b-z z8X1lvCux)*!dIrLi7`Zy^lT^;lB!KTEA|arJ`K&C_Qs4ybp*1fot1j&Og1}TD)1FS{(N>Y!hPIXSN`|L_=9@7yd>=SD%n4)!1xO0R&(9CY5CBN$_dp;aMDYQb z{&!(WUL`9++?+fzKW||!fo9q7zSvE`{E`W%SRd!hpDcX zxdwI5)Co(t*K!D8!a%+Ml;a|3;SXS538>U3v7L0h9x!|H#i(PU;S7lwsTLnD=yq2a zwZjBoH)fI=67JHw)bp#FTZI$wVSev!r5t8}_8bjMa-7Lo^ zftN(L2=^E5dc)TC?%lZ#SwU|Dq^Utff)=&_$>1J%1(u*k((@v*!$BM1vWOsKK1uk4 z$?ca2*7I>uN__v9^G&~(IDE~id}n9IW+_cM@X9}uv9Qc`o(MNr<+E|~+(wgz{8nYp zUR!#iAN>;w+S53>Qi8$NtD?6i7vNU=jlMl|hVMZlGy!>uikv?+(gZRO&Oa{z%GC5U z!~D)2AaIbAlP9x@BRj~i13!GDdq-Zm!vtO7I^lhk4&~<3GCR7GZ||hjBWLbSt2i$) z&Q`8-Oq%{z)*UJ8FKie8sRii}1-e z0(4VoJ2Uln_GBz2+WXR3F2==GG~g?HZ6a1om*T3v#pJnXx<@fS!+pPc*g6II{m)cf z7W-VJ%;jYIhKK$DGyzPN^y_+icOC#KeR)(^gUjrkf>=lRBRdDaEB#mA#u{eN_MY!y z{9YF>uq~#lqcy8CqTPHig7Nyj$BJ#8tMggvOiD9@PB~u`N*I@7_XKh*dLdx1KjxDt zgv(5jnUyuz-L5zBnh0swpr+j~#r$J`7%*T?GEf)b+{m|tXOqZBoZGiSIirqTMsv6I z)mas6r{*=w#x>6mZ?<0(-wszQ95wgI%04?xMVLxqpr&)){j}-LSia=Ar%2=2fuTVT zO6w7$Nr(`J09_!#q{jRC#zylX`2IX1VsX0*vhV(WCU0J-X@HS{+aoCc=_FY#n%UprAVh&~_W5?VcI^@e*a&0uXlH{N6`kY&aA-6%ox z2ThgZLqjXtschHn{X8$;gYZBKhNApOpuN?uXK*;&Fjz_TWDhZ#S+zW z`~~ol5N7WIy|w0bpT^!iArbMq{0MTeBC_InO&&~$dQUJLJ%p+-i2A9Gs zdPWte%$y)0T!;AqH5C=3E94&!Fa{8Ukw|4h&DT?HyB?kbvQ!qZqatzPftN(X-5QBk$_!zyQ5U)2?*+Q@Vxt*tQ^wz;P=3--JX~ zN*0)1c$=Uh95RS3I+PxNHY2HhZv0~~U{}s9s3^bx#%aW|lKgaR&jV#Hz|0hYvw66< z&L=>_%<=HGQ*on0p>*~x<4qb=F5{)%Hgbx~8`7j2P8vGrX-{V^KpPRzxfM|ufB$Nv z2Jx>O$0Q>ogZ`oEZ{I>}FgUBdk6U!OUIpq5`I$L1Y(OeIz}XJ3^~a|m=DOy67D^@?7Sq-OWZTlTPf(EUhP)3F{z_w$8Hh zT?soc-ybh#4?UUrOCgb+Wmy{yeS%u6=EvoI^gce^Qfv$9y8Uh;oKX~AU57_|Q@dEl zQJ1u4GI_a$hArU5K~4;UZ_jUGVK^EaOKeM3s(fjEb$<+O_EjmSZD>#C#5Wv?4++ zi-*Oyhl5_N32p=!+z;J0F@{$BeU8rIT0uofgJ*%^WT#*vB-eR390F`?FGg*V;BY@k zv5kTt#qGhGmgC&o%1l^|kcLtq;wgSROp>nFJ4IQ?dSs7a>(>XIv0>&Xx;H<-K+bah z`wrz%DnD0&FC*oz%8l>dg~k*2AFtd&Z|;1;zAZO8`qL=Vea}LS;%{HgShJs*J^`r& z->3AryTg<|w_$JwkMeC}sKMEb5WJ5*1FeL3!4Hv6cgWqbQSL~F;rwh!mox{!TQg6u zZfj`c%HGQ$si#KcXaSr*gC=jqQ?nW4ve%CPYJ#NLsy&C_K#Mfi0VXax`tHMr51?J6 zuAq<)?g&dP;8*LDnu%@s*S;bc4g;QNWCU02`8mlLi3`D2RjN?%cxS{(w}=02KM#Xw zGAq*AmD8m^T~%sWu+i_NwBy#MT~j?*q?l=TNXD8{t@x`y57+Ns+yuhy5ioKOrO65s z8Jg#}>OL&)V+wv_T~TTE;?Ga(ZrlyiVoW>whL2TWfhg|UIPf{XfqQ$pFjF;k`kNs#-L43tpJL3dLo*dh3!;=>#D~7Qe>7KJSV$xOZ z8F5kkXI$ru+CwYlqtsQ3mNc&xUOrje@NLEM>7}DOGu^p=Z&b zbWzX^&!jmmvmx;I8%H2}89R;cx`zU9I>Bs)*I3T~&*MWpH$62KSc{YUZu0{q=*gM~ zB;$i4#TsiEZ)%2?Wfq+xhhySl@A{^qH|vg;5@)ErZTD{3=;sWmmPc1Q)TBH^v*_$2 zTbX;&u=YZ?OGYq9wJ{(6>+J*^(g1zWZk3Pmk4`{Pejq+UK!gQ30~U3j_evbQ0W|R= zRGsN>z4^ze1`uB%{qX0_F-y_rQ}R7}**hHwVq8VT#Euia2fqTmG3spR^>3)SR&I=8 zYf8(n63`zUVCG2RdJv;q4JlO85@GcO2NL)QcJI+?VneKDe`4QTuLVgt37C@@s~BS3 zh&JNm9>fT^bcsj6y-R)bddDU8Iim`LB^^XNTDegCAq*A9ij3no!4Vgm5u4 zGb1h3m{-Nc#ew!NH~(w`BC&jr{Tre{qGb2IqZQ@XP+=Pfx|d1MwYccr)X^D+YDp47 zfIfR~Utg32EhG--fhSIUG+kdkHsF8y3UJqnsl3FKf|rh2yg}-?C5SJIsI{k>&UCzq zmKtPYzwa(n+-iKXMFRn0>kQM?L8G$djMp+eSwZ-QKBjPFX^CI_VPW<4wnmYjNd#F+rpy+2%9+ z3BrIl(o5dzp$;cJt$($f%N*6&3z{MlIA6+Np&S^dK#@uSQAWm)5ZLDO&*N*@(wQY8 z5bCqHdP;XSEF<|z^%2&AdmXiNR2s`8SI)fCsCMg~-^<8!A-CCJkM`yzNp@S9pm!hL z{QXVsM@1q$3u#A2wB8C3@Zi9ig4_gZZ}RsLFamkUT(&6|VknTp-fk*DR|mBO)fC0; za`fZGbXESFnW0ja&o&{keX~8l4{{KRXBaYLwdD%qFS|{j(Ysc9KkC@Z{4+m|XbyWM z$*Wq{>n%urB8dOlQ<1#3dmMCC@^ zc!7@gf`QxJHeAuyw6^^np1F@ob*y4wzjxf1jA)j198-QrVhWiO+WSAk$^EO^@B;Kx z5DGz^E&$yO-m{n6e%^5oqZwsdVTOJ~GP*PPxwg}Dx8qwcwBAd^=6`YH1wx8*>^A0I z7r!gAPp0Y}!nj%S@t#|26JdlyF66Uq%*5Z3D~~I6iuYG3N3={zY3%KW*njNF+1vTS<-RhV#XD`hWv>$OB$9lM4)5=!GY%lR z9KjqHB7@*3H4a&*_Cd)y1k3m62mV8eq<7?>J4I=zy+<#B_&FqZU=N&}dV%_L{w>qb zJ0!|boK~Q7?$y>cKkS#5bLAv&PEc;HSAFjTF`JujHL89zR&73+cJxm++8w`8A@|pb zPFTiWeE*dEQw;A*zudS&*T z>6_$HQ}-j6jozQUsQSYBtp=uvnLTi4XfeQxT}sU;l&3%1-4XPw1;7*w4fnH0-%Or6 zX}PuDIzpwDeNJ|;%IuR4Rcl?&{jWd#-IucaQh%{(8LuIiOH5G5$+ZdX!_m-|Q&XN0 zgZa9Q`{4C9t*ObN{l88+T0t^xYhUX$Ch#N_THi)%D zA97$qm9!hS+&#VohbGMN6fC4KR3-42o3EaXb^rciy|h)ZLUwm(!!6Z6@Rt=aecunF znK4vJ*OW9T7@IR*mqsqf7Y*KvPWR3qjG^gxP-_(xYj&}5rZ=omDCOu^QeAm6*b+&g zJc-iCW%gfn0p@V+=gsyz&(u(_f82NP$hF4gQej{46`M#>+M9^28eF43Z0{Oc{`Kvx zAgLT2;Bb=0s1uFu>VQf!n1MxP^V^is6*@)UudWV4Vpf~JbnHG)adPYwDRLq??3v_E z)wpTyF=Rz<&DX1!ym^+OS=7dow)~w(FH;MZ)on7xK5Y6-ul!1K{jS{@zMCEwi|FpV zr9Wd7t6ln6emim`volP%Y-zNCr;$E&=*4HCg65%}XN%0(rsEU~3svc9X&@rgdrrLR z_PKxW3W=PR-IUIyo!l61x-YXynN%ym>@JLYeL|#1(<4o)Ywe<^eVY3`ZVKQpe;jxl zInti9+M;v+qg`FoTd&M@&n;c;uS&9{Q2{InZP6n;YS4Y-kztQg#1=skjT;3oMFlqL zQ1QQh%6`{yUpfq;Hv~5(s&$f`XzS@ILcC%Kj_r84a~VeL3}|-P)4wfTE?9^h$3ZAD!jQhoO}Awt=_uo z=4o{$MUDDWP~YkO){m8+uzJ~(akQRrcSTm3UvOPSG5UsuLDBZTLp3(9$*8cO>KH z;u6F5d{5B#u;#H7yJM~FW$BDxA~XmUQk4$kIw>Qho`oPyKjS*aAbBAotm5k}&@3(7 zb$~(W2R6TG!Ec^j ztB5m`9dwl$jx*lqa6gr)BI?suW@yoZ9TnYL_Oy%m;oB9JEL;sV?W$f2P;pb5^faxCl z=w%{OGc@w7aM_^A&c-rAF1nbU+JtOOH7DAC`~KI^S^@2>2;-~{;5sn$?*Qh1+EaSx zVYkfS#S)A#Ph^)hU}N&exhnfAfZ?DF_=#0gD!AhTpn(& zz7pDT(S~M1KN+mIkQ-MrNq?l;Yok&Fg*|@I_-F_t+95c7=j~}`_0*sONeDAb7yD)> zyO^b2CxvDsOXCVpYJrFziIu`ctBs(uQHw!Ej>wRq`S7`k@L%mC=>1VYhhY4}Mc{f7 z&3>;v4j$%2S&72}kjdy;*u}10Lw%osVWBXf?PpeGQ8Cx8QAjyI<>Yh z4$SwouHs(ynMn}k_!Jjgv1R>Z>_O(;w0?eSq9j+qrzM#0y?wF3&VgeIk%>z6P>_@oGB)o#FU6vlr z*@jfX{A1?S&yIG_MrqZ!rWY$0ylf49gNS1Qka&&^tbqa2D> z%Qs{aYq!;MzME;!Db_%5Z`UzD^rbWvZKsZ>+=hHz&>xpoBOF?`SOPUeb{LY9SXrr! zU3cX0G~`4axRJG$p6rLjkM8EDW2-o#W*Rsv7I3SaOvbSSA7{X>6rb*1m|cjUFIB}D z&Cum*p*#O%_=s6^<;jgV4~EZ?x)`JcG5oRLuymHhIJX&wyV)U>#d~fOWd*xaV^k+) z4RaIn2>BziF2)p>59=bO~L*S66}<{nne_qOPU?Z_he zZYq~M9YO0!+tYJ%cP%Z$MQRWsIkDsaW?J=Tqx^eLOM)BGOPh>4*jCETyVv=Yywte- zNkZe<6+VXi8CmrmQORPD6B0ijDf0{hnnWkW~Oszj( zeYQwm^|%r|xP0}=J{Sl?f?X|Su5X_Fa&+GT5c(y)ZiwgE@fLkdp7l>)6Hx?o9$Nq_gxA3h%z^!}&hoH_2v*Ya01Fq_=m#N@e1<)+WmCt1kJ zLJXIBH_?FMe% z_S@_4l@Bs@y#4D-=QWN-R4;X&`S0t86v?Ih>0a_Kq?zxxDxqm7#~k0ieeMpDB|!1V z2jwA&*!Ky^zm3g5f9MFI{p{>)a^U~v-$9uWW4V~2;FoPls6Hzu=jKFI|37YLx)&%$ zB7A3Rir-i1iC_V(s(Fi#qO;VcjbjRLd}%NV_oFWyY+_~+v_o4uo^7n|wthE*5kGPP z?`K)o^jdT1qOU3;vtrtxmg$$Rp+s2spbtfWvX}cj4~ew^uDs@XRoY6gB&t-Nd_>?L z!xNGDb-Vn#+{^>Jc}Tx(jRBo@ElU>y4Dg4&Rc?>=cIu(#e}x@F_b2XgD-6TY_FtT$>5u>>1DGO`PsN4-Gsi<0GE3oznu^>znPQm9Q`J9 zdJuMpR=3Eg&t)jKgxr~|B9cExCI0ELyJA#S`HWd=QZs`$xbaHD%E**n2>8BiXAb@i z^bt`ztqUFQ*J3slNqGfNeYB+!4wcF1fZGp6I(jx^({4KhMHB7}Kf^|~oY482i>MS+ z&4y*TMcHXhjB^6aX6gNC3-^j0=KXAW<#Ci_`$I@t78H-#www zDcx%2x3pv}=^}r|%bhJ~Qq+SnQu!6w4d5i)(rpc5mrKcd(0onKN#u;r8g{{LXSG7s zfg^W%tE8Pt&)WqQ@y;4543=genJpsN9Zay*DlmUj;-hY;GV?U`jIsvKfFI+`{q-Cm z^QH?s5gk)vT)6mWfJGwKoW3w6$D{GN&nzlhB}Y9OXKqqx@B7e@_GVXL&phT58#_DE z*BXg9;;SP#ST%rG8PLA)5~8)_dj7l;eu>-vy*wMVvaNdV z;c~t2HjaZ3UP3RbB%{daF#)zf5scp-Hi^E0RrWvNv&04^aF~evCulL}z$}ma_??TE z^kNMGU=WH0awkOzc-~^{6IJlgF&O-o|NEg{xB1rx-2WQqqMV~%2z5l*8hv&K-fI%Q zug!Y)8(2;O?CHs2eo%I~r5gw(TY-Z_=wF`&L8_l$AqW~;4Hm+Pqq6mnbn!7!Q9-oS zNe?hrtN)izG`%UDtsdd-`BH7rWJi_9+2M#_MLgjtnoiN9~Gt#X5YA`_e0`zJ4^M-6c` zO1ZiWEe~ig`u{;biSBhwd6K1xG~P2y%Lozk7!T*(Ib=VW)&W`@Ax7UB&}?qam&(sg zQ|-FNn7DCNo}c%OR&MUSVb9+5+R|h{CJJq)L~q7lK-|zZm~?^*&DEr75QC*iiykAbO9mhZGd)&$x~Hz8~Hhv~*jEW|zUDPJSmq zs7lH6^Va_pRnFM89BA+(MHw%v8!F%{gu8!~dph9)U<|R%1s~P z;%fqL$ypcJ`AyV+{t8V6fN5dRT*s$h#fK$8s{&ITv1i=vXP`K&nkV9-yLnrYP~GNuc6{9CHIMd=h+$?4M7ibdI@xH!~7x2+@>90}+`i(3L|(Ubdl!b${4G zdi(0P=jWm?-#rc9Vo4N};hF&5gRWVj$G?eJ9?;ViLSKUV|D@0lB6%{Th^KyOiPf`o zZE=y zFElS;W5cp+zO?E`MpaP4HOw@U<;&FszkeqAM*!tufk}r$<;oc{POrd*L;_Tt8dO#% zt9a6;YyLtjM@nBm2oe8vo&hCQ=r+gB_p;+f?%!&2DD%h2YV%4DL}lKL)?g3b^;AC) zqG6bSgj87bpht|6V~OfMw0DEH#;s;%2bRi7Hzs3->f_1gkMJH{l5Sv&XwFssvd*6* zdyRvFpwTv6OFeh`T%V3w#f_Z8{SgcHNvbwvBY~FnIh%HR3|XJ7ZmuORRB%B-dRCZO z&~AKtE&LNmmRE}hzdXt^eivh2gL?VX?EXNAeSj$R>87ZTNcu6PuGziXcm9-a)iFFy zEJL=A&$_e1E&`t>*cD@kb9Za2=A(-)9xZaJ@yTIl-Kd$7IXN7oY1ff$Fudtv$3B?D zp8Woi$2Z~DZt6mx_I{a3%v#UrnkEOnyEZ6KPmmO6DO!O`?YPI)MX7b8s$LQCh!i-v zV>i&>J;hw4AfC-Ns;tS3Ps28JdgX_HJbY)aaXp|!g*((qxbxN5ZB2?nJ!Tipo%#3Z z8gFhENq*r~ZhcM6ns)XBg@|d1Rl;GL)gkWaR|c=xU4O;!N?UkfdMy&kb5*oxL`=No ze!85O!qEoQ3OSbJV$YryR9H87(komlQ)W!f(A@)Uuvf>N6?%uw8Rvh9zOG~)^v&?OwZK_%qwkA-CQBhhT5ODc#QS=q zxvtFive^640rqdHGI|Hu^zq_qy=4b}t?j3bW`Jt#jEdb@Dd`u?dWV}d-Ts3w*0QsX8nkj4 zjy=d?YS+Bs9IAf4)%Qj}PDelN+g@Myx4We`-peZ4TZZ}M;pD2T5E|bv%uOti-bw1U z^vKI}AbtLB#A>AK83v_kPqa;4)*YfvUo^^l3cW%K8~m|?>xOP}cX z$JynJ)~R(H`RKjK$IVD|TV>&ojc<*fPCkAT_=B{{U~=K%Sgtpg!){}1Jynk1BG#BCmEzX#??MUtJ{OglDCQ+(xPu?z{`bB6 zA&sbQ+$@&22XEAG-y^vG`OflfVv)y3L8e{l$-W6l6sWWt@meSz3xGrbnb>jPQr_Uz zHMoI08SZs1{KO&xj)qPC;Vfdz)JdAcEeIC|mv)~Y-0)4B4ra&9+s2zgc6g!T2THOY zi~UEK`?*l(Lr+CV?Zs0a^Z5r}n@FhreP7V%XoQXcWMz5{o6?itC*yVU4VxdjY^V<> zDGscDxQ2g!>KfH)DyneV00NQMVC;d50r0g%W~vu!?DOZ(Z$w|#f{bk2(=HP+-pDq+ zig#1LLMMWWh5O4BC05#X;wK3~hWh=(x$Yh&(nxKAd*<-`gVyzD018;Hfq|$2NZ?TS z80eKmOpNQ&M$i-wV>3WwO~_^Z@tTr!s0idodu!QR{Vm?K`xI`UWBi8i35ZE|v~Gc-4n%^IE-=(2&Wvn$Gy~N2wD0IauRJ-?!LmJDIbC$;^5u~A6hj)GTOHjkcRe^Zj+#Y^ zyZqqU+qcIl>&B;7<}w~THCa=h>3Xu&Y++U{(p=TubBQ#S6>iD`3>=uevcY?$;W2@{ya0zGq77Co zi6hfs#;~Q&7cVUIa?IpCYuB}}_F}JiW1d^^&dti7usWywqzs`4GtHQ5P z2+^fni)82$=9gJ{{2kZo>y_eeuHnb-LPid6Z@KLflh@HJ8GjO}u)kl}{aFK3<9YY= z8%;nGAo{TW5+1j|qYbh+d;C)M59Z?a z`WX)4=_{?PPfu5n)6`$lRlDr4nc7?JdQR;bc@kc@#hq+Q?MO2NN^DyrnQ*hpa~bKb z-k;k3^&%tTH;+K?=(8(7reG{_PT6`NY+l6L4K3XElp^4+;9&!+?Xl7OCm<|!hFfjE zjZ-ltzJ`6Mk#m1+3ITyE;najoe9Uy~Mbs1lrLU#Ag}ybn?bX_CjJq{jF&x`&l#SCh zS8prXHiX|irhpbTBV2+L*OBSGe)Y`UDr(};mN}cTP?!4Yino#Vq5*GZCRx<#h1gKO zRAk^~J=6^#Gh_1_@GQo1IqZ~2Lb^q1I{pUyx47C}oyd3`#^rb)7|bGMwYLLvn^L9$ z*gpE{2^j< z(GVK0bFY`V%t5Hqy=skA$ma(T19q00x!=wskO+(>f9N@>m5E7h4N)e@VD1N#HLS5j zD8ak}0t17CxOd7;Ixe`@y?vnFG2q&tRaE;Ny6_&`#idnsbak*$m-OUp@v9#vpILSRHa$W7d)VTQKvnFwNye0=~j<&kwh{t}J{1G+yW zHeHDZvFYy?rG3B(e?yQl#(j6Cx0!qmI(F_|)Odr_p(i3y_fS9lpIY_7kZyTW1V}!Z z(w&Bl?BV{XY%fK0_>qH;h@_*y*B=h@RsuhF_>sVL4>0uy{~@6Sk;UOhk{FRv`2U+< eU+uE6vq#bC`>?n-QSS)+lN7rtnk}OH;Qs(TYCTE- literal 0 HcmV?d00001 diff --git a/static/images/FileLayoutEncryptionPF.png b/static/images/FileLayoutEncryptionPF.png new file mode 100755 index 0000000000000000000000000000000000000000..b7046a16d3521d6cb0faae901ace16a18a795949 GIT binary patch literal 79304 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 literal 0 HcmV?d00001 diff --git a/static/images/PageIndexLayout.png b/static/images/PageIndexLayout.png new file mode 100644 index 0000000000000000000000000000000000000000..83c5b02f2bbdc112f21bd91e87ef9f285a4746e2 GIT binary patch literal 7442 zcma)fcQl+`_x3P|s7dr_@enmi^p*$`qDBaU(R+y@dN4{1B5L$b^g6oHTl8K>8C~=e zbr{C{JiqT->wTVgeSduSz1F?XI(wb#-uvvcuYH|w8tRIqM30F80061d+t-=^0It*B z*oTnd?z^KNaSQ-3%qhK={opx&kj|^hW|$fr_3DX!&8xrPCl5j&629gLr6$BP`$dR{ z8*n#6_$zcS$U^aMfETFNXN89=+gf8nQ6*)D*ROt}R>i6i?%5ss5JvlaVf1rmS%}c| z&6%H@p{{0jQ)6NA_0(0vXwfMJ?%mJ-zn^ekgM$MX@9UYR*1CGJcMNSyOJw&vWyB6X zUEud-*4O9ZAbaI9N1EoBtTMdzOD-;2S_~<8Ia0bW-1Dq4hR*O!2sR5t+6_Glqvu~$ zBe&gkdSz?ZO3dgbY!sbO9S8Geo5yKqt6W%eG+cdNFjRikhjpl_pTt>;HEg>LTsIgP zyB;p8A=4U_^!U z1%wB+eUMkPuOCF;=<@;)eCy`~BlHs2nQFRUmvt4q3zy5Msssw=U4}j$B(YK%wN_Nl zqt(5ooVUI?*e(~@&5$B?oyzRX?3UfV4JNHiFm1#4L+T}$^YoeaA#H`f&5RIBGY$0W z)?-^a8_&SUKb5R25`-!b|sTv7o3~+D6-Uy-7uDVf3w5rmMQt?d(pPn=SX!;IsFXfUx#a zMTmW&c2;@kT8`jb@QM$w%p#c1Ona*WH~(k&$=j`)vQzE2Y)3X|gdrA8$35tIWD%Cq zm{?3Qw=C(deQh0g-%n@tk-_uLTCl`;L-CNGa&NusI~qad$;JY6!=@No#H{|qqZ0O5 zw4q~_s;5y!-r_u^Jg=!QW?hB}^sc7i$pNi7DB+{+eLelibNqhY2FfJB4rgV2_tHvvoaodb={XZ&ilax={3;~njc>?o1-+xqgO=W1myf8>){Y(m%x4)`p5H>kg* z05oc-;b-w3VfsE3x7_xQ%UT47_K_XOn_CS8eEeGPj(9S#a&%Y03)F@@3;c+{n5wM3 z<;KUpb}PG#B*^52L_}LJ7KVv{CA2|hq|6k7iNR6Fa|bXAH{wA(&&x)E&p$EgBp}sP z#d#VYEit7uW53S!+RtkXN}jX4D^uM&u^Tsoheo%D8eC!QeECJAf*M5uB{HTfk+IiA z5?BLWxFL_)v?MJ&Whi4yhy8~zJ^;F|A+rCGr>u~mEqf+c$YZ}!P#HXR>&~lo6l}3l z=f*FK@+~k&eSp6y&CBA7wV-QinYsF*HEE<`cXf=8qJt+i-C7^qCEGxs8j0oOfG&Qz zJasz^XtMIbr?;rW63y*_h*H-c8Tj}vPX=dz4;}(hGkG~z(Y3!IZoKbGSnOG@&vAkE zMLth@c4n2~u^)6U;*E+Wt@n9SB0qj&XFrdPl-My@NpMwdzE$)veo5XqUdfvmk@u$p zzk=%4Cw=cU0nCRn_=wfWP)xz~?|lEh2cwp3>=RG>ffEER)w+$3L=haekPPKPn1cgS z$@B_-CkSa!)yv%KjJF&}R$p*Q`%DYwxPac;KkIX+VQVr9STLg|Pt!F?y0(((~>;hw8`sDt$&O zOTnc_b6NzB+)84`uBD?uKDUwLa<`R3p1O)R#f`n>=r$EYbCpKKBOuM>RJ=+T{UO@9 zjai!N8otD4YlnUaM7WyT_$^201G2VGEk7nPBrZVMDuQwQ&3VipCk|Ta4Q^_UafSIuC+tjVOynb;e zsvVNqTDYwb0DS4$q^_1oUPJqf!X^S*Q)QFL=5EYodwW*Vr>n=mtsRnX>qe|yv_uv~ z)?a5jm;J&-56dyT8u=aOkIj zm#q3`{-h;l!7|IcCXRn7HL=+DVXaB42aB zDNn|wFueR)YOG~C?%n=d#i>U}-Ytr}wb5KCB}Rkv3|TZ zA-9BdMekSk%dO8xFvn*f?fR&tV|Ac5!cMj&{>#|JPG{rCQB+3D+D^>dx66h8SJ^J! zyk#^tb3SWc?Vcvbzekdbq`Ir~Co;PaJXj2LQPLKBsrqT+-Wy1mn}gQz!BKP>_sN`g z{$ZL|6Y14peYfyOgx6Ao^v|7%`LMM;x5%9-8^iDwCK&o=2c&9QF@g5hnlG;8w#@qyPP_)%(>Ycd zI2d2Jl;MR)K;>ZiCO4$WI{WFX=-gQNFMT9d$w2$~_b}_0BQ%7!6QT!yVU25`q_VJh zhg}fime(Yb7ee(LSj$HO0(}?e^cA+GL@hp-Vli01k4sa81?*arIK+441@y3<~4>sq~U#)4E* z_eH_V`b0*ox$xkhMKhyt9$b@#vW=En91whBkW;@TCmUa+otj?$wWQMvSzM zogsrtyT=Yunus%7zftWevlR62L+g5Sf^z1&vRANL+1DPRp$mn-s`G1^|17d(yt-q0 zc5fhSc?aZ0z<1&CEgjyr-3i;}AYT*O2CB6sFo@E3~8YxAxR zHBH?Le79Ka-NFgV%dac1WoEXFNRihsZ34__;auITtlj6ZVre{WGDwKS;)wC8smE7o zqaB7LiwnpmEj(*^#Ido%?gC;_9&?I-F(%{-T=wWj5)j7Li^W1`bh-z zuqoes-K2OnqNAY56Wi422>U;w1S_*%8EGjrFfm<#tB35CYRh?FtRr3ca*UnJ?x{#1 z!Wk1vzGWi`=WO7%mgQhKhc8hjk`RerE6>4U053sT@ep^ul+nE zHDo1wHPEzarw)Q~^Y%PUbF==EAU9*kqDKFc_se8;ocR|Y{j)6_cGR&xO4IG?wW=0X z;=Lg_#%t$U2G|G%kK3?6x3;@NliZOxlso*f#DZC$!jC!BV6+?Z5Lz?6%jJTWkY-4F zUZ4*dH=-9N^6{y&Cl+N|%-2pWU(Ad${;DhV&Y@AXq$vx0SeulM zdGBPQ&S>iJ^1;J#DkxNuX(96dIiC6rg2*;XIX~l zMDs2o#YfXGL9mqE?1IqK!D$z6qv=5Cd1Q$|84ZZ|AAL(Y>|D)DO&|`}+s%-L_N~jS zMxg&14cp9)Z$=g;zG&4^oCz)0jP7o*ur9Zbk_TYy9k(DDMi{2~kOn_wJXa!h5S*OF z$te1l=XVnTfauXSeriyyk^o6O7xbE2_Wk@8c#?znAthkUUbaeIBW}LkU~i8>_PMab z?)`jEE-}&mik6qKzwM-T8zhW{*?bg=Te}_Ru+a-b0z#Cb4xfBo*j=GkSGb|w2?-w5 z<<8-E2x!y+_sl!xMY}L;NC05e%$OGkz+~`v+uwwia7L}8k!Nfkm+L~=H^KzqUoe|Z z1z_qhDw%9(ZJPyT^9<3unn(&jDFD(rRQ?EyKeSXtv8`1P4y8&a+a56GFl~nr0T@5V zd*x68GRzV>bHPwSR?^jmS=X1=ctC*X8V>`Jg(qLc#RX2+vPh`|?xKmW1|5h1fDLKs zZ0K&5rI{^MB4}z(6PFOBsFf4*Ayh3T)A+JEP1MfAuuW}HAM-6Eb2N^~M5o^0@tgg| z4=^x}QsrjmM2CYj>z+dp(hUyohZdNAcG$l6Js@TfkoPOWHXBQNRxRk1lYp~5WSWJ2 zbVhFA7{QeZP{#W{+4ZF27WC|Tl5SHsNY;tLW*narUk5(FS56>{18h&gNU+h~J}IvP z2!u*6F6ECwaZEZX&|X&f&52c)(ZBD`LQPtz0UPJK(0io$PKJU5?(~y{y5{zjFBkhyo)# zQ_pnBI7LM}j{5QJB!7>0CUr`71MuJGK2s-u)1F_G9Ctr2_25803&s^LM%t|fpcN{G zEhrArQwCk?TNkZJCgA$2Ws85r4*3S+m^2TiQvEfEhfhi9ovyWkz&OW4>6o5U64F0i zWTOQrMAce=emu#}qI4_g7D^Y@2>qs+9ZCf$@tnF(eI13xJ!Z1R2wK)}bLwdh444tvlnRo3%O z)Z6c3s*gk;rzt^jf&I6Xn+5FTcm zV`w}ILIRTY!Ra9dDq00X&L}pw@0Jm75<8UtY`PFt^fX!NQ@w-lWWa3qwo`S{eEgou zTYV;LHIe`^H5B?U;J{)MWFE=lUOSKWzbu`XfpbpF93$wSxkq$$&q(djrvHNdMe`90 zuRl1bYiS`z?cLz~mvbtJL+6o25ErBJluy-NAq$#R^Ta*Hf(+2=z_(|!I_tCF__d_AbyM;=@U z*F@jd^4b(+&uMySDyVlYXyG-lPU+O>NYW6?uIP8lW-C6cpLaXW@&@H$IJN;im-2ikS*v4(XA+E9DpC%iPHj@cf<<+Fmv5wpp-0<0|gVZ#!CDzzKMPUkcUt z0oIo!geLjdDO;^HZ))qx^OXeH$Bnh8lg+iy?M)H;W{|~ViJprH#J@gOyH5%t2BJbB zB*<+a9Q$nQq4sXwLYDzm-7|wvukL#yNkBeO{n*1ozj8b@{pu>ul;C4=ERows0=`x` z(&96HD5?T4KHtXVhUc~YxlazJ>FJcQ4$wo~3~0^tTL%G#mJ&xSOJa=m#~UFVo|EUh z4`F9|h_;y9-hoAko31(U)O`V`W4G0+@502&;x0hd_Vpjh&r0x3#&^fVzvZ) zb|AmkSS0aamgCu0@90LsSY4`%l69T@oBBTW%DQ=-91{oY%9&UPxL1o7e28Ts(Y)-Q908T6>p=P|s`@ zi1cVOrrPy@x@w!wM!|RVkJT?hmL9IVc+MtzKWR1T!GG%zuta&0a9i6-YPdnV{fplAmTByQ*GtlY_Lhm^ z6s?x2?vLrFJ|v(eY3rF%`mMIdZ*bMGe@}lAMn^3U8f`}Y*K-#N|Z!_fEj`HT;mlT*;%&No^Fr z&=bW9O}h>VM)WmyuGCI^)-e4ny^1D(grTN!q~fb*N$rDYBEm(^pXN2WUX@mr{t}?C zQi_G0H%xzZ=B|RspcZrAZGb#1HK!O6%dL;!E^`G};bdz^PpeFpT@wV9~ z@Apj?o9YIL*0^0$Kh|<(U>-Lyv7y!VuYM%~C(BO(gFGMt?Es~9?Ri{OWe`ERDgpaD zKRtsL_VX*637U#H9cNO|K5^|n(I=h{)ErNq-<{4m9iGa75-t)e?T7T1%<#K2lJfmt zm!Q*hw3|q!oOhh>ih`+0zTvH=0&wdtC5L)G@FXY9%Lrc6znk10WCsZ{pGS4SAw6U~ zLXHs{@Lk2WTf!r-l|S*7AFG9m65Sq4>XXkCnSPCNGpc=(#Mf{ELf}^7L|BeSRHuzX zc4TM!WnS)0;jflQyHPnB?>aa5jkigWt3fZZo%G`5Dz*_@U&G{MLel+vp9&R~1U}c& z#OU-llC|(A>sVk!lJoOejH(}372yxiZqDqU@tuiwR&S#{x-M07o)ZDaU+>>Bxg8T_|4&RklL*p3Z=&iiRKU`B60*i?=S=kMuXICJGN(TN-gcoi-+2 zmq2X@99g#Ep*d#S-{i-6-I6@Z6PY2m>lFH1Gui)SzSB80(qCuA_(p1{NzNj=+GCQl zm@z>T=<%okdMV=viGda4pF}%*tT?P(|G^=5JtFA}SIB0jZ6KebfozC8yRtYle%LGR?>zsPMl;_gUi(?>Y_WrD`t@I{T3g$#qFafF4ubzNje#EHi^3v? zxj*G7BM2$}C12L=v>n5Li0yA}=ZmB8F9B4Z)e2z!mvg!r#{Mz?ij$|1KUCq+_&my? zYvEQgrfKpb3I}wWX`YMCeA>W{9xVG`aXFXK#E9Y7FXm)P?_hlJ_ib9~jr!|yIg`Nu E0qQ*Jxc~qF literal 0 HcmV?d00001