initial commit

This commit is contained in:
jangko 2021-06-04 20:12:57 +07:00
commit addf0b55ea
No known key found for this signature in database
GPG Key ID: 31702AE10541E6B9
38 changed files with 423532 additions and 0 deletions

5
.gitattributes vendored Normal file
View File

@ -0,0 +1,5 @@
# prevent automatic EOL conversion by git
# on test data, because it will make test
# failed
tests/data/* -crlf

152
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,152 @@
name: CI
on: [push, pull_request]
jobs:
build:
strategy:
fail-fast: false
max-parallel: 20
matrix:
test_lang: [c, cpp]
target:
- os: linux
cpu: amd64
- os: linux
cpu: i386
- os: macos
cpu: amd64
- os: windows
cpu: amd64
- os: windows
cpu: i386
include:
- target:
os: linux
builder: ubuntu-18.04
- target:
os: macos
builder: macos-10.15
- target:
os: windows
builder: windows-2019
name: '${{ matrix.target.os }}-${{ matrix.target.cpu }}-${{ matrix.test_lang }}'
runs-on: ${{ matrix.builder }}
steps:
- name: Checkout nim-miniz
uses: actions/checkout@v2
with:
path: nim-miniz
submodules: false
- name: Install build dependencies (Linux i386)
if: runner.os == 'Linux' && matrix.target.cpu == 'i386'
run: |
sudo dpkg --add-architecture i386
sudo apt-fast update -qq
sudo DEBIAN_FRONTEND='noninteractive' apt-fast install \
--no-install-recommends -yq gcc-multilib g++-multilib \
libssl-dev:i386
mkdir -p external/bin
cat << EOF > external/bin/gcc
#!/bin/bash
exec $(which gcc) -m32 "\$@"
EOF
cat << EOF > external/bin/g++
#!/bin/bash
exec $(which g++) -m32 "\$@"
EOF
chmod 755 external/bin/gcc external/bin/g++
echo '${{ github.workspace }}/external/bin' >> $GITHUB_PATH
- name: Restore MinGW-W64 (Windows) from cache
if: runner.os == 'Windows'
id: windows-mingw-cache
uses: actions/cache@v2
with:
path: external/mingw-${{ matrix.target.cpu }}
key: 'mingw-${{ matrix.target.cpu }}'
- name: Restore Nim DLLs dependencies (Windows) from cache
if: runner.os == 'Windows'
id: windows-dlls-cache
uses: actions/cache@v2
with:
path: external/dlls-${{ matrix.target.cpu }}
key: 'dlls-${{ matrix.target.cpu }}'
- name: Install MinGW64 dependency (Windows)
if: >
steps.windows-mingw-cache.outputs.cache-hit != 'true' &&
runner.os == 'Windows'
shell: bash
run: |
mkdir -p external
if [[ '${{ matrix.target.cpu }}' == 'amd64' ]]; then
MINGW_URL="https://sourceforge.net/projects/mingw-w64/files/Toolchains targetting Win64/Personal Builds/mingw-builds/8.1.0/threads-posix/seh/x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z"
ARCH=64
else
MINGW_URL="https://sourceforge.net/projects/mingw-w64/files/Toolchains targetting Win32/Personal Builds/mingw-builds/8.1.0/threads-posix/dwarf/i686-8.1.0-release-posix-dwarf-rt_v6-rev0.7z"
ARCH=32
fi
curl -L "$MINGW_URL" -o "external/mingw-${{ matrix.target.cpu }}.7z"
7z x -y "external/mingw-${{ matrix.target.cpu }}.7z" -oexternal/
mv external/mingw$ARCH external/mingw-${{ matrix.target.cpu }}
- name: Install DLLs dependencies (Windows)
if: >
steps.windows-dlls-cache.outputs.cache-hit != 'true' &&
runner.os == 'Windows'
shell: bash
run: |
mkdir -p external
curl -L "https://nim-lang.org/download/windeps.zip" -o external/windeps.zip
7z x -y external/windeps.zip -oexternal/dlls-${{ matrix.target.cpu }}
- name: Path to cached dependencies (Windows)
if: >
runner.os == 'Windows'
shell: bash
run: |
echo '${{ github.workspace }}'"/external/mingw-${{ matrix.target.cpu }}/bin" >> $GITHUB_PATH
echo '${{ github.workspace }}'"/external/dlls-${{ matrix.target.cpu }}" >> $GITHUB_PATH
- name: Get latest nimbus-build-system commit hash
id: versions
shell: bash
run: |
getHash() {
git ls-remote "https://github.com/$1" "${2:-HEAD}" | cut -f 1
}
nbsHash=$(getHash status-im/nimbus-build-system)
echo "::set-output name=nimbus_build_system::$nbsHash"
- name: Restore prebuilt Nim from cache
id: nim-cache
uses: actions/cache@v2
with:
path: NimBinaries
key: 'NimBinaries-${{ matrix.target.os }}-${{ matrix.target.cpu }}-${{ steps.versions.outputs.nimbus_build_system }}'
- name: Build Nim and associated tools
shell: bash
run: |
curl -O -L -s -S https://raw.githubusercontent.com/status-im/nimbus-build-system/master/scripts/build_nim.sh
if [[ '${{ matrix.target.cpu }}' == 'amd64' ]]; then
PLATFORM=x64
else
PLATFORM=x86
fi
if [[ '${{ matrix.target.os }}' == 'windows' ]]; then
MAKE_CMD="mingw32-make"
else
MAKE_CMD="make"
fi
env MAKE="$MAKE_CMD -j2" ARCH_OVERRIDE=$PLATFORM CC=gcc bash build_nim.sh nim csources dist/nimble NimBinaries
echo '${{ github.workspace }}/nim/bin' >> $GITHUB_PATH
- name: Run nim-miniz tests
shell: bash
working-directory: nim-miniz
run: |
env TEST_LANG="${{ matrix.test_lang }}" nimble test

13
.gitignore vendored Normal file
View File

@ -0,0 +1,13 @@
# ignore files with no extention:
*
!*/
!*.*
# normal ignores:
*.exe
nimcache
*.pdb
*.ilk
.*
*.dll
tmp/

201
LICENSE-APACHEv2 Normal file
View File

@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2021 Status Research & Development GmbH
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

21
LICENSE-MIT Normal file
View File

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2021 Status Research & Development GmbH
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

17
README.md Normal file
View File

@ -0,0 +1,17 @@
# miniz wrapper in nim
![Github action](https://github.com/status-im/nim-miniz/workflows/CI/badge.svg)
This is a nim wrapper of original C implementation of [miniz](https://github.com/richgel999/miniz)
## License
Licensed and distributed under either of
* MIT license: [LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT
or
* Apache License, Version 2.0, ([LICENSE-APACHEv2](LICENSE-APACHEv2) or http://www.apache.org/licenses/LICENSE-2.0)
at your option. These files may not be copied, modified, or distributed except according to those terms.

14
miniz.nim Normal file
View File

@ -0,0 +1,14 @@
# nim-miniz
# Copyright (c) 2021 Status Research & Development GmbH
# Licensed under either of
# * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE))
# * MIT license ([LICENSE-MIT](LICENSE-MIT))
# at your option.
# This file may not be copied, modified, or distributed except according to
# those terms.
import
miniz/[miniz_api, gzip]
export
miniz_api, gzip

34
miniz.nimble Normal file
View File

@ -0,0 +1,34 @@
# nim-miniz
# Copyright (c) 2021 Status Research & Development GmbH
# Licensed under either of
# * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE))
# * MIT license ([LICENSE-MIT](LICENSE-MIT))
# at your option.
# This file may not be copied, modified, or distributed except according to
# those terms.
mode = ScriptMode.Verbose
packageName = "miniz"
version = "0.1.0"
author = "Status Research & Development GmbH"
description = "miniz wrapper in nim"
license = "Apache License 2.0"
skipDirs = @["tests"]
requires "nim >= 1.2.0"
# Helper functions
proc test(env, path: string) =
# Compilation language is controlled by TEST_LANG
var lang = "c"
if existsEnv("TEST_LANG"):
lang = getEnv("TEST_LANG")
exec "nim " & lang & " " & env &
" -r --hints:off --skipParentCfg " & path
task test, "Run all tests":
test "-d:debug", "tests/test_all"
test "-d:release", "tests/test_all"
test "--threads:on -d:release", "tests/test_all"

73
miniz/gzip.nim Normal file
View File

@ -0,0 +1,73 @@
# nim-miniz
# Copyright (c) 2021 Status Research & Development GmbH
# Licensed under either of
# * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE))
# * MIT license ([LICENSE-MIT](LICENSE-MIT))
# at your option.
# This file may not be copied, modified, or distributed except according to
# those terms.
import
./miniz_api
proc gzip*[T: byte|char](N: type, source: openArray[T]): N =
# all these cast[ptr cuchar] is need because
# clang++ will complaints about incompatible
# pointer types
var mz = MzStream(
next_in: if source.len == 0:
nil
else:
cast[ptr cuchar](source[0].unsafeAddr),
avail_in: source.len.cuint
)
assert(mz.deflateInit2(
MZ_DEFAULT_LEVEL,
MZ_DEFLATED,
MZ_RAW_DEFLATE,
1,
MZ_DEFAULT_STRATEGY) == MZ_OK
)
let maxSize = mz.deflateBound(source.len.culong).int
when N is string:
type CC = char
result = newString(maxSize + 18)
elif N is seq[byte]:
type CC = byte
result = newSeq[byte](maxSize + 18)
else:
{.fatal: "unsupported output type".}
result[0] = 0x1F.CC
result[1] = 0x8B.CC
result[2] = 8.CC
result[3] = 0.CC
result[4] = 0.CC
result[5] = 0.CC
result[6] = 0.CC
result[7] = 0.CC
result[8] = 0.CC
result[9] = 0xFF.CC
mz.next_out = cast[ptr cuchar](result[10].addr)
mz.avail_out = (result.len - 10).cuint
assert(mz.deflate(MZ_FINISH) == MZ_STREAM_END)
let
size = mz.total_out.int
crc = mz_crc32(source)
ssize = source.len
result[size + 10] = CC( crc and 0xFF)
result[size + 11] = CC((crc shr 8) and 0xFF)
result[size + 12] = CC((crc shr 16) and 0xFF)
result[size + 13] = CC((crc shr 24) and 0xFF)
result[size + 14] = CC( ssize and 0xFF)
result[size + 15] = CC((ssize shr 8) and 0xFF)
result[size + 16] = CC((ssize shr 16) and 0xFF)
result[size + 17] = CC((ssize shr 24) and 0xFF)
result.setLen(mz.total_out.int + 18)
assert(mz.deflateEnd() == MZ_OK)

7689
miniz/miniz.c Normal file

File diff suppressed because it is too large Load Diff

1346
miniz/miniz.h Normal file

File diff suppressed because it is too large Load Diff

150
miniz/miniz_api.nim Normal file
View File

@ -0,0 +1,150 @@
# nim-miniz
# Copyright (c) 2021 Status Research & Development GmbH
# Licensed under either of
# * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE))
# * MIT license ([LICENSE-MIT](LICENSE-MIT))
# at your option.
# This file may not be copied, modified, or distributed except according to
# those terms.
import strutils
from os import quoteShell, DirSep, AltSep
const
minizPath = currentSourcePath.rsplit({DirSep, AltSep}, 1)[0]
{.passC: "-I" & quoteShell(minizPath).}
{.passC: "-D_LARGEFILE64_SOURCE=1".}
{.compile: minizPath & "/" & "miniz.c".}
type
MzError* {.size: sizeof(cint).} = enum
MZ_PARAM_ERROR = -10000
MZ_VERSION_ERROR = -6
MZ_BUF_ERROR = -5
MZ_MEM_ERROR = -4
MZ_DATA_ERROR = -3
MZ_STREAM_ERROR = -2
MZ_ERRNO = -1
MZ_OK = 0
MZ_STREAM_END = 1
MZ_NEED_DICT = 2
MzLevel* {.size: sizeof(cint).} = enum
MZ_DEFAULT_COMPRESSION = -1
MZ_NO_COMPRESSION = 0
MZ_BEST_SPEED = 1
MZ_LEVEL_2 = 2
MZ_LEVEL_3 = 3
MZ_LEVEL_4 = 4
MZ_LEVEL_5 = 5
MZ_DEFAULT_LEVEL = 6
MZ_LEVEL_7 = 7
MZ_LEVEL_8 = 8
MZ_BEST_COMPRESSION = 9
MZ_UBER_COMPRESSION = 10
MzMethod* {.size: sizeof(cint).} = enum
MZ_DEFLATED = 8
MzWindowBits* {.size: sizeof(cint).} = enum
MZ_RAW_DEFLATE = -15
MZ_RAW_WINDOW_BITS_14 = -14
MZ_RAW_WINDOW_BITS_13 = -13
MZ_RAW_WINDOW_BITS_12 = -12
MZ_RAW_WINDOW_BITS_11 = -11
MZ_RAW_WINDOW_BITS_10 = -10
MZ_RAW_WINDOW_BITS_9 = -9
MZ_RAW_WINDOW_BITS_8 = -8
MZ_WINDOW_BITS_8 = 8
MZ_WINDOW_BITS_9 = 9
MZ_WINDOW_BITS_10 = 10
MZ_WINDOW_BITS_11 = 11
MZ_WINDOW_BITS_12 = 12
MZ_WINDOW_BITS_13 = 13
MZ_WINDOW_BITS_14 = 14
MZ_DEFAULT_WINDOW_BITS = 15
MzStrategy* {.size: sizeof(cint).} = enum
MZ_DEFAULT_STRATEGY = 0
MZ_FILTERED = 1
MZ_HUFFMAN_ONLY = 2
MZ_RLE = 3
MZ_FIXED = 4
MzFlush* {.size: sizeof(cint).} = enum
MZ_NO_FLUSH = 0
MZ_PARTIAL_FLUSH = 1
MZ_SYNC_FLUSH = 2
MZ_FULL_FLUSH = 3
MZ_FINISH = 4
MZ_BLOCK = 5
MzStream* {.importc: "mz_stream", header: "miniz.h".} = object
next_in* : ptr cuchar # pointer to next byte to read
avail_in* : cuint # number of bytes available at next_in
total_in : culong # total number of bytes consumed so far
next_out* : ptr cuchar # pointer to next byte to write
avail_out* : cuint # number of bytes that can be written to next_out
total_out* : culong # total number of bytes produced so far
proc mz_version*(): ptr char {.cdecl, importc: "mz_version",
header: "miniz.h".}
proc deflateInit*(mz: var MzStream, level: MzLevel): MzError {.cdecl,
importc: "mz_deflateInit", header: "miniz.h".}
proc deflateInit2*(mz: var MzStream, level: MzLevel, meth: MzMethod,
windowBits: MzWindowBits, memLevel: cint,
strategy: MzStrategy): MzError {.cdecl,
importc: "mz_deflateInit2", header: "miniz.h".}
proc deflate*(mz: var MzStream, flush: MzFlush): MzError {.cdecl,
importc: "mz_deflate", header: "miniz.h".}
proc deflateBound*(mz: var MzStream, sourceLen: culong): culong {.cdecl,
importc: "mz_deflateBound", header: "miniz.h".}
proc deflateReset*(mz: var MzStream): MzError {.cdecl,
importc: "mz_deflateReset", header: "miniz.h".}
proc deflateEnd*(mz: var MzStream): MzError {.cdecl,
importc: "mz_deflateEnd", header: "miniz.h".}
proc inflateInit*(mz: var MzStream): MzError {.cdecl,
importc: "mz_inflateInit", header: "miniz.h".}
proc inflateInit2*(mz: var MzStream,
windowBits: MzWindowBits): MzError {.cdecl,
importc: "mz_inflateInit2", header: "miniz.h".}
proc inflateReset*(mz: var MzStream): MzError {.cdecl,
importc: "mz_inflateReset", header: "miniz.h".}
proc inflate*(mz: var MzStream, flush: MzFlush): MzError {.cdecl,
importc: "mz_inflate", header: "miniz.h".}
proc inflateEnd*(mz: var MzStream): MzError {.cdecl,
importc: "mz_inflateEnd", header: "miniz.h".}
proc mz_error*(err: MzError): ptr char {.cdecl,
importc: "mz_error", header: "miniz.h".}
const
MZ_CRC32_INIT* = 0.culong
proc mz_crc32*(crc: culong, buf: ptr cuchar,
bufLen: csize_t): culong {.cdecl,
importc: "mz_crc32", header: "miniz.h".}
func mz_crc32*[T: byte|char](input: openArray[T]): culong =
let dataPtr = if input.len == 0:
nil
else:
cast[ptr cuchar](input[0].unsafeAddr)
mz_crc32(MZ_CRC32_INIT,
dataPtr,
input.len.csize_t
).culong

3609
tests/data/alice29.txt Normal file

File diff suppressed because it is too large Load Diff

4122
tests/data/asyoulik.txt Normal file

File diff suppressed because it is too large Load Diff

0
tests/data/empty.gold Normal file
View File

BIN
tests/data/fireworks.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

BIN
tests/data/geo.protodata Normal file

Binary file not shown.

View File

@ -0,0 +1,20 @@
The quick brown fox jumps over the lazy dog
Portez ce vieux whisky au juge blond qui fume
Съешь ещё этих мягких французских булок, да выпей чаю
The quick brown fox jumps over the lazy dog
Portez ce vieux whisky au juge blond qui fume
Съешь ещё этих мягких французских булок, да выпей чаю
The quick brown fox jumps over the lazy dog
Portez ce vieux whisky au juge blond qui fume
Съешь ещё этих мягких французских булок, да выпей чаю
The quick brown fox jumps over the lazy dog
Portez ce vieux whisky au juge blond qui fume
Съешь ещё этих мягких французских булок, да выпей чаю
Съешь ещё этих мягких французских булок, да выпей чаю
The quick brown fox jumps over the lazy dog
Portez ce vieux whisky au juge blond qui fume
Съешь ещё этих мягких французских булок, да выпей чаю
Съешь ещё этих мягких французских булок, да выпей чаю
The quick brown fox jumps over the lazy dog
Portez ce vieux whisky au juge blond qui fume
Съешь ещё этих мягких французских булок, да выпей чаю

1
tests/data/html.html Normal file

File diff suppressed because one or more lines are too long

1
tests/data/html_x_4.html Normal file

File diff suppressed because one or more lines are too long

BIN
tests/data/kppkn.gtb Normal file

Binary file not shown.

7519
tests/data/lcet10.txt Normal file

File diff suppressed because it is too large Load Diff

598
tests/data/paper-100k.pdf Normal file
View File

@ -0,0 +1,598 @@
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=10 M=100 Y=50 K=0</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>10.000002</xmpG:cyan>
<xmpG:magenta>100.000000</xmpG:magenta>
<xmpG:yellow>50.000000</xmpG:yellow>
<xmpG:black>0.000000</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=0 M=95 Y=20 K=0</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>0.000000</xmpG:cyan>
<xmpG:magenta>94.999999</xmpG:magenta>
<xmpG:yellow>19.999999</xmpG:yellow>
<xmpG:black>0.000000</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=25 M=25 Y=40 K=0</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>25.000000</xmpG:cyan>
<xmpG:magenta>25.000000</xmpG:magenta>
<xmpG:yellow>39.999998</xmpG:yellow>
<xmpG:black>0.000000</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=40 M=45 Y=50 K=5</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>39.999998</xmpG:cyan>
<xmpG:magenta>44.999999</xmpG:magenta>
<xmpG:yellow>50.000000</xmpG:yellow>
<xmpG:black>5.000001</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=50 M=50 Y=60 K=25</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>50.000000</xmpG:cyan>
<xmpG:magenta>50.000000</xmpG:magenta>
<xmpG:yellow>60.000002</xmpG:yellow>
<xmpG:black>25.000000</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=55 M=60 Y=65 K=40</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>55.000001</xmpG:cyan>
<xmpG:magenta>60.000002</xmpG:magenta>
<xmpG:yellow>64.999998</xmpG:yellow>
<xmpG:black>39.999998</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=25 M=40 Y=65 K=0</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>25.000000</xmpG:cyan>
<xmpG:magenta>39.999998</xmpG:magenta>
<xmpG:yellow>64.999998</xmpG:yellow>
<xmpG:black>0.000000</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=30 M=50 Y=75 K=10</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>30.000001</xmpG:cyan>
<xmpG:magenta>50.000000</xmpG:magenta>
<xmpG:yellow>75.000000</xmpG:yellow>
<xmpG:black>10.000002</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=35 M=60 Y=80 K=25</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>35.000002</xmpG:cyan>
<xmpG:magenta>60.000002</xmpG:magenta>
<xmpG:yellow>80.000001</xmpG:yellow>
<xmpG:black>25.000000</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=40 M=65 Y=90 K=35</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>39.999998</xmpG:cyan>
<xmpG:magenta>64.999998</xmpG:magenta>
<xmpG:yellow>90.000004</xmpG:yellow>
<xmpG:black>35.000002</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=40 M=70 Y=100 K=50</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>39.999998</xmpG:cyan>
<xmpG:magenta>69.999999</xmpG:magenta>
<xmpG:yellow>100.000000</xmpG:yellow>
<xmpG:black>50.000000</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=50 M=70 Y=80 K=70</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>50.000000</xmpG:cyan>
<xmpG:magenta>69.999999</xmpG:magenta>
<xmpG:yellow>80.000001</xmpG:yellow>
<xmpG:black>69.999999</xmpG:black>
</rdf:li>
</rdf:Seq>
</xmpG:Colorants>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:groupName>Grays</xmpG:groupName>
<xmpG:groupType>1</xmpG:groupType>
<xmpG:Colorants>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=0 M=0 Y=0 K=100</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>0.000000</xmpG:cyan>
<xmpG:magenta>0.000000</xmpG:magenta>
<xmpG:yellow>0.000000</xmpG:yellow>
<xmpG:black>100.000000</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=0 M=0 Y=0 K=90</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>0.000000</xmpG:cyan>
<xmpG:magenta>0.000000</xmpG:magenta>
<xmpG:yellow>0.000000</xmpG:yellow>
<xmpG:black>89.999402</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=0 M=0 Y=0 K=80</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>0.000000</xmpG:cyan>
<xmpG:magenta>0.000000</xmpG:magenta>
<xmpG:yellow>0.000000</xmpG:yellow>
<xmpG:black>79.998797</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=0 M=0 Y=0 K=70</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>0.000000</xmpG:cyan>
<xmpG:magenta>0.000000</xmpG:magenta>
<xmpG:yellow>0.000000</xmpG:yellow>
<xmpG:black>69.999701</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=0 M=0 Y=0 K=60</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>0.000000</xmpG:cyan>
<xmpG:magenta>0.000000</xmpG:magenta>
<xmpG:yellow>0.000000</xmpG:yellow>
<xmpG:black>59.999102</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=0 M=0 Y=0 K=50</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>0.000000</xmpG:cyan>
<xmpG:magenta>0.000000</xmpG:magenta>
<xmpG:yellow>0.000000</xmpG:yellow>
<xmpG:black>50.000000</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=0 M=0 Y=0 K=40</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>0.000000</xmpG:cyan>
<xmpG:magenta>0.000000</xmpG:magenta>
<xmpG:yellow>0.000000</xmpG:yellow>
<xmpG:black>39.999402</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=0 M=0 Y=0 K=30</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>0.000000</xmpG:cyan>
<xmpG:magenta>0.000000</xmpG:magenta>
<xmpG:yellow>0.000000</xmpG:yellow>
<xmpG:black>29.998803</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=0 M=0 Y=0 K=20</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>0.000000</xmpG:cyan>
<xmpG:magenta>0.000000</xmpG:magenta>
<xmpG:yellow>0.000000</xmpG:yellow>
<xmpG:black>19.999701</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=0 M=0 Y=0 K=10</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>0.000000</xmpG:cyan>
<xmpG:magenta>0.000000</xmpG:magenta>
<xmpG:yellow>0.000000</xmpG:yellow>
<xmpG:black>9.999102</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=0 M=0 Y=0 K=5</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>0.000000</xmpG:cyan>
<xmpG:magenta>0.000000</xmpG:magenta>
<xmpG:yellow>0.000000</xmpG:yellow>
<xmpG:black>4.998803</xmpG:black>
</rdf:li>
</rdf:Seq>
</xmpG:Colorants>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:groupName>Brights</xmpG:groupName>
<xmpG:groupType>1</xmpG:groupType>
<xmpG:Colorants>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=0 M=100 Y=100 K=0</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>0.000000</xmpG:cyan>
<xmpG:magenta>100.000000</xmpG:magenta>
<xmpG:yellow>100.000000</xmpG:yellow>
<xmpG:black>0.000000</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=0 M=75 Y=100 K=0</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>0.000000</xmpG:cyan>
<xmpG:magenta>75.000000</xmpG:magenta>
<xmpG:yellow>100.000000</xmpG:yellow>
<xmpG:black>0.000000</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=0 M=10 Y=95 K=0</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>0.000000</xmpG:cyan>
<xmpG:magenta>10.000002</xmpG:magenta>
<xmpG:yellow>94.999999</xmpG:yellow>
<xmpG:black>0.000000</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=85 M=10 Y=100 K=0</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>84.999996</xmpG:cyan>
<xmpG:magenta>10.000002</xmpG:magenta>
<xmpG:yellow>100.000000</xmpG:yellow>
<xmpG:black>0.000000</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=100 M=90 Y=0 K=0</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>100.000000</xmpG:cyan>
<xmpG:magenta>90.000004</xmpG:magenta>
<xmpG:yellow>0.000000</xmpG:yellow>
<xmpG:black>0.000000</xmpG:black>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<xmpG:swatchName>C=60 M=90 Y=0 K=0</xmpG:swatchName>
<xmpG:mode>CMYK</xmpG:mode>
<xmpG:type>PROCESS</xmpG:type>
<xmpG:cyan>60.000002</xmpG:cyan>
<xmpG:magenta>90.000004</xmpG:magenta>
<xmpG:yellow>0.003099</xmpG:yellow>
<xmpG:black>0.003099</xmpG:black>
</rdf:li>
</rdf:Seq>
</xmpG:Colorants>
</rdf:li>
</rdf:Seq>
</xmpTPg:SwatchGroups>
</rdf:Description>
<rdf:Description rdf:about=""
xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
<pdf:Producer>Adobe PDF library 9.00</pdf:Producer>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?>
endstream endobj 145 0 obj<</Metadata 144 0 R>> endobj 1 0 obj<</Contents 3 0 R/Type/Page/Parent 102 0 R/Rotate 0/MediaBox[0 0 612.28302 790.866028]/CropBox[0 0 612.28302 790.866028]/Resources 2 0 R>> endobj 2 0 obj<</ColorSpace<</Cs8 117 0 R>>/Font<</F2 122 0 R/F3 121 0 R/F6 118 0 R/F7 125 0 R/F8 56 0 R/F9 70 0 R/F10 71 0 R/F11 61 0 R/F12 65 0 R/F13 72 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS1 113 0 R>>>> endobj 3 0 obj<</Length 8934/Filter/FlateDecode>>stream
hÞ”[MsÜF½ëWðn<>mU(s™<73>e{¥ÝñØkjw²`7ÈƨhhÒœÝ_±‡ù½ïe€&rl(BÑÄG¡ª2óåË<C3A5>úæ_oûáÍ·ß|óƒ»H.>Þ½)V¥sæ"þ§ËWq\X¯âØ¥÷obÞïïåÇÇ5þ{|ó)ú¥^×íxy<78>ºl•D<E280A2>]ÿE~gÅ*<2A>vMû¥Þè_YôþÇAÚ¨jqÕÙèÝ·?ób¾*¢]ýPïøW¹rÑØñ‰UÝ×mž©?ôõ04]‹»±\¹}ºüüñßÞ\¯Ê²¼¸NVIîd=ßɼöuÕÊp6wòñîN~¹re¢ßŽU;6c56c³®v¸„uì» gƒ¿ŠèSšü3Í>_áïD04í½¬îçQwñ#<23>*Îåã¿Èׇ}µ“ÁL<C381>%´ÇýmÝË_9f€¹˜ÜÊ0ܲ^YצY<C2A6>ÓN¾9nëpsìe)ë¾9Œ²òŠÃ&ò„|÷€O"–Ý~lÆíüýms¿•=2yT­×ǾZ?­ø'Ñ=ÊV÷Wø;“ù¨`L)·T0¦XåA4&ÅåÝq'×»êIGJd½×©Å·ÍC7bb©1QßíêðtÓrJ1EãÊ\ES·Ã±çR!â"º«dîwÇ<77>
?‰ÖÝþ°«G³ÞqÏ p§Û¢õÝ_ß⧫}}؉øü+.ÅDûöAèþ¹˜É¤$&þ¼
*÷vÐoˆ¼:UçTæ¿išÍksØô÷?ây'ÒÛVƒ^4Ñm]Oß½ëŽA½©Ä$xI;#<23>ŠúŠ¹4Õ.|ö®ëý®oîýŽQˆwÇv­KÊ,ăñ2kd‡6ÕX³,‰4#.CÍ¿ ²]ó¥Þ=éF6­õw¡âQD1ü{~Û´Õ(µ}ÒËE´œK_ßw•*hZ@CtûEAËgÛ/Ê)rjöòìJÿ´Ñ‡vS×è\a¼ #ŸxhêGý­FšæØ“õ¶ïöøØü}l¶<6C>cYŒh<C592>)ùª¨â(»·Ç<C2B7>TþæNšÒÉþ¨ñÈSb”²áû[,Ê”¥W%üÊ£MswW÷/S2²¨ÌXËGåO¨¥ªáï5Œ´Ìåþr>ë®ýû,ž„Ø ¼Îb`'<27>%ÉóÍÅE,Bþ>ö|$•G0§,1%ñž@ÜèÏT/¿2Ž;ë‡,žBQC)e¸‡™]…MÎR™Ø¶±~˜Rmê[Qž<51>¾<EFBFBD>
P  ƒ] î©QÉkO‡NFšáJ_¶Øù•É‡·Íz{θ‡C½nîš5”ÚÉ<ÂòeƒÚH²˜¥Q`S<>u/JCSI£cÛüvôf“F·M·ëî¡asÖ£ßpΪ?™äŸÆ²ó·Ý€˜'°#‘ó¡°ø;¥nåi*s¨ð#}ðêÞõO¸<C2B8>ß×ëmÕ6າˆY‚Â^<5E>õzÉ .R`cß­aôXg|_Ž½~¬á"ÒÜhjñ@÷þͼ ú,<2C>Îø=qrÐf²Î®½Â¥Œš40ÆP“Ûu}€ž`‘Ë@ ë;ÂzRìÏ—¶{í»¯u,"ÞM¡ØOµ&SÔ&´©÷"a™*W`è<>Õ"IˆF$—,Ñb¥OÚè¦És=<¦Ò#jáâå¬ú{ˆ~ñ›rå-"ß"· .êYF}V$¹[ù'=ù<0E>žªJ}ÛJéZÄgŽÂ6`v©õÆ&v—¬Àeøœ¬z|$Üã¥lUr«»«iÚƒþ]ªÀ³øŽ=Xê3M˜‰-ÉuÕ®<C395> ÛîQ/ç1y°Ü8âöî8ˆÑ@š®ôv…—å´pËÎÓ:c²‘Ș‰…€ei$ˆŸeTW=]C
Çè]•¼E³Á;ÍÈ»p×
åU{¯»Q*0÷5á.õxr"ÎCŽ¾ë»¡;l]uùñï³$ÍJĘC…8Þ÷22´Õá×@<40>Hr… ü4AïØÉð$[ˆ­Z«ë3‰£X+!M²·Í?86À[T°¢><3E>yúÙœh×<>ÝÒ°q ¢Pç$ð
ŒY¸p%«öb¥#XŠ5¡|b¥^Q*B;óN™º<13>ËJ:”à§3RÕÿüã…ò»¬Èå*<a_o…·©jØ"á ÕÒîvµw‡ŽT·xMÜ/GtÖRf¸àwÄî–#£TÖ‰ßλ†NÐKÂ"œ ®mú°0õïÿúî§ï¾˜ä½¿×ëQɽÀt¯A”mSjù¯õR.Ìÿ¸ijòüsêƒNR¯j¯©£]¥‰Jú̘.wŽ­Œ°áS½­©áLm¤€ŽZ JÖfT3^‡îdS½ñãX±F-ÐB¼ã@¯ú'½+Nä×ü}Àš¬Õ8¢÷ïP¢x´`t} æØHM[”Q}÷¶9¨Õf 4ð]ÊYR»4{$~çSd§È±x(àá3÷}ŠŒ±ÃžPKÿŒ?<3F><>ÐÍï`Éq"ßW<>ÍÄö†u²Ý´,•×<E280A2>²]<Ÿ2ƒÑ.\û%/m£ øfå-TïÑÁê|ДÓ1tbùOtúò—˜¢„åÖ¡¾3Ý ôl9½Ü2f¯ãòÿ¼0k]³‰a#ùâJݕʇǾ¹=pâ<ø1$÷Ý Œ¡hD˜ŽG-.8ÓYàÜp0æA?nuÃgâ·<<5F>;Î"í«ESÄíÃwûúú±ÙÔ2ÅLtÄTl¾Â<¨ópÓ` vû1Sdúj'¨¼YÌ<62><C389>UßtÇ!låÚ3,Èf|:Ôßñèßjý%¾j³ANAiWªæàï
UìšvôãÑqðQkýE€­ £ýý¥®dc§½½º%`ŸÞl%ÞýRÝ{÷J£?oê 8-㹟²DÑÎ_/ LÂWŠÂyÐùË  ®¥Ö1U#RÎ]q;$ƺHX…9”HæD Þz™÷I›ò\<Z"ÆmlãáOÑu«V“l*v\ @º8³§²«zÊç:/su•BðÈÄŠüQÀ?™Œ,½Ä!¼L^8dŒ"È%ìðIG-Kƒ\<5C>¸ƒî¹ëEhúYŽ·BšÎø0JŸ\x\+aJº07ë4>ðÄ›9"‰a½­÷x¼pNA
è
S²b' Uäp~tÜ…å6ûC×<43>äs$Œ<>t€Wh¿eÞ¢»+<2B>hªq², GFÙIHÆø[W5‡SØa<<3C>DèŽìßXÝî¦ÝSq-¾Í˜Ô1æ¨+£"G[»†‘!&f,Ý­pág âä|ùž‰ùç­v0EÂQÍ<51>`ÒŽIYZå)Ž+<2B>S ÄÔåðˆwMïï¹@Å]ÁàÚçG\¡Ñµc¬v[ŸøCÝ?0˜!ÿ¨Öâÿ8äÖC1Rµ<<3C>*—ªåùŸ`yqY¦ˆ!K5¦_¨Ñq7ß|èM ¾õQS:¦Y0âªްYuÈIaf>]"B<>ç] <-W½{0psõïÛ涹¼f^HãGØè¾Ñ¸ÍÆÁ†dV`)0¥ÉÐÒØYohjVÆBÕ訅ôù¤<C3B9>aRpvã)<29>øP¬¾ßO¢ûÓí%‰Ãâ̹ Wˆ-%Œ~©×— >ì-œ@¨Üe\‘Ô¬¸ ‡+pÌXÈËðI”ûRt/<2F>€·¸'* Ó<07>O€.©áXIMh=N`B—šû©epxcš_<C5A1> ±¾~¿»dâ¦~§žÐR„‡'%¤ÚWº( &­£o×·+,NyL'³$RxÜa9™KBˆ<42>YXW<>2¿ÆòÓ¨ò³/0Ã,sJý1yX>(f$ÆWò(»J
쇮ŒÃ<EFBFBD>D~äŸ1R­ÎáîûîQg#¨p©øpœ2 :}R·ŠHX0 <0C>â= ³#Î1pëë<C3AB>:º­]<05>³cö®ÕQ3&Ÿs<C5B8>ëÙÖ̤j¸¾×íoF?<3F><>¦ÛË8âV&Ñþ–Ó’™âñSnÞ<6E>#ÅÂ:tÂb0£2.£»±¡×žz••D-º‹;„¸+,ø=߃`®p©ð!jΰL “D]asÉ ÀäáF½cÊÌT óÊ\0ø¦>I/LPaªf¡¿ rF“´ HKìØ™e(ÕÎçO/ìe£ì;ex~<7E>ÎZôYï þPŽÉò3c³»d|¾¸Võ4ádOЇÒ)óñZ~Fë$¸Ö•K$tI¦‰@[µAuÆ0\¼d ™FdõÕZ¸sËj†?K~ºoXŽå&=xÕï ìØ6U8¬~.PTZ;@°WaNCnuÿ›ðùè¡ùPä(Ψ-ñ&âfM¿Ȳñ!<™ó±×lÿ×ÈÄømC ãåÑ5c<1E>Â^A®Ö<C2AE>—Y1xU2Ðg¦t´i¦´Mc¡¾%='0Ä>ÿâ·¢ÖÚ“uWHh*ZCw3ÿ¨ÌH£¶ÛVwAûðкÛa Hœ¯‰Êð“*^<5E>¶I˜Ø½SÄ®¡lÖ«p*><3E>Q„!:MÖ¥¥€Ml±µ<C2B5>™¡Õ²"rÙ9ù1LAéëm]X؆¡IÓ)ÑW”'Szó»¾S4CBå…lĉ‡™&6¼q“j¦ÈŸ©:î ·ŠS³”H+z·ý ãG?_KtÉŒb~£Ùî> 4=t£Uÿ¦® *¡8g2a¨¼Šj£DÖÒ&§üý_ß©Büô¬å{õ
 Åg­B$E»Ä³Mõt|G
þǨ>#!8ÂJM:<3A>>ž„3ðw•Îy².ê#®­Á˜3—Ÿ:0QãIó.Žµ8k±"tNÈZ}õGÍøØ%@i"çÜ·µL¥ž€·5)³½w?/Æ>Ñ+ú$´.&Ž¡NØô3ꔈ{[ª“-R 韹¡n<75> e›ã‰P 4~ð€z¥£åZÝË](œiæîð~ð|¢Máë 6A8°*¡Ÿî‰®;Ù:±üMãõê‡ùh!÷¥GÍ°þÁÖ#;ÌB­Î¡±jPëDía•¦h±¶S~¯È—wjyÇ¡Q£|¨ÃãáE‰½êQ÷©ú'ࢳ»ªX
Î|J1c@«Ø"ëA¾'cÝeI3ÈŠ°Z²G£#s>]žME÷Ìnó,ÓÑR\ÉFuNT':òƒnÉö<>jœD“JÁXI…¹<>gc÷ëq«¸Ðm¼†7óÌ°¬Ž5“zÚŽDyò®Öý¬ú¶<C3BA>F ÇAN;·etS?L°£óÙ…1g«<67>B†üÔþBÐ@¨Ï3V̶žºžuÙD»|±<>Ãonh®ÓAìJF*§ƒgyÆhL<68>¤“V¨<>²â±VÎBb¬eh£¿¯‚Ì×”†|é0*n7AHRiDª£ÆH§Ä*ÎH,puÉ¢—)?Ëe —÷°;šÐÉÍ<h¯).xžAœ0z]‡˜<6A>J­»!<?…Z<²6ã“qŸÕ0WšœÉ¢ôÍgt«Úl¸çG«Ö&î Ç8š8gÒf_ý]×<Y:Š[9ó$˜@îàËúå´ìåVüì<>X,æ"°—°H2gÀÙipä¢~Wð¼ÿÔ¸ó<ÿ²cÅ¢yIÕº‡áOœ|Y³+¿
*Tnn¦•qOiÓ&÷b$qðÌ;”¡þ<C2A1>­¹<>Ò¨îb.†ˆêX%8ì²ÉbÁHJ±<>ÞµÆÊ0 P-PJ!$ËÏRŠÂ¼bk­Fs/|æ±A½2ëbö<62>Ðè,öÁM•ŽèËû…œ•~µ
Iy|Á PPu9UšzFÄZ5εñ Cr6J´Ðn¢/·¡¾òØx=ØHÜ!Ïc<öÜQ÷—¡¢U:ÊS^†&7ãÊÏonBYw‰Äò s}W­QYêtÏÆa£ºÁú^AÖoÚ/r
5y<EFBFBD>Öh"Àë1/`•÷2gÊ&Zêå·O¡A‰[5H®RA
(O ìÕ-øE§ü2Øn¡˜¬ñ¼Œ&'i<1C>èºëtrý~ÐE€")ñÚ#g)°k­ñ
›”@êmS+Ô÷U¯.j½Å­ˆàõ µ{•À0zÒ'eÌò=MP´S•+5ÊK
§èçQÞæœF;ïø`ŽŒ £!žñ׺ÿh'pq*bY øP{bÙ€XÀ!²0[¦´'<27>ȱËó3Ä-sjärMÃ:7¾¦ì³Ï}i;<3B>tÏ;2Ùjݽ‚ÁbóÍœ¼¦~³S¯é&¨©hié\./·Z×S¾ä“ŠZ½aŽŠ¢f <>nŽêͬH±÷yŸvô{Ô?<3F>šû#Ü“#2¹¨v“Ðþœ³ŒNè%ÑÞãÈ!ˆ;NÜ—¢Žsšñ}.ÔLxFfèxá¨a/·Ø9€Ï`C†ë¥OÕ©(²Õ‹ü|FÃ8<>Pµ¶,ò<>”§2î<bÈ$€ß÷êCjˆ%›ÈqrÉí¨
V™†Ñ¨B6ùCíÏ+!Ô™Ä.”{
µÕ ¥Ù(
é¼Ïã2<C3A3>
«õVr}PUê»ß}*pÏRiæœóKÇäÙ³c"l®´¥8&æy©²ÇݨDoÐôš™iü@hr-Ùu8Sd)ÆeWˆìD
þúÁÚH˱¶MZÃs ŒXìUî©;<3B>cbøðC×éRúÐ$³L…Í÷ü·ŸÄó,Ü:»Ueé»StsÛûsê“à âØ×­O1]dX#»d? li \»I…<51>
TÝ4>55§îåÎܬÓ_눉8Û¼SíYéMÙˆ tþ¾mî4„BXIâÞŽA…õ•<.}ûú"!‡.ðüõÌd>?3Aq«ÝæÌxîHÁã—Šžt} lh*Qô„®ðLPô3ÉC{ËA+Í¥Þ[Ù²Ìü<C38C>½“Äþêz'ñw—/ýéÙKiž„·ŠsoÉEúú×óý$ö¤¡(ž
{giÉÿ´â0sä
úäIÌÑŸŽ¬â8õ48²'eö—ŪLL"<22>ã\F _¬BOù!¬óÑ'o¯=µ`$žjð† Ï̵õ4ËÝ©Â#,$Y¡·†×»ÛØãÛµì½ÈR²…Gíª,|{`²Œ§öWlÐŒš•/†¬Âpïí¿«aÕšÉ%ã/·÷Š—è[Ó$¦G¢RŸ"/ŸAØiôŒ£;F«ÓË6ä”+um`P­þ,ÎåÑ€À••¿¥‘ŠŒ^T½tÄÇfTˆ'Íã)É{.<2E>\¯Ur!|©ÖOÚÄ
ÛùÙS¹ªÔËvíÿ*
¡<>ó«…Å<E280A6>!Xwµrñ»»Fá,ÄûäýXÑ•vvºhë™0z +õ'wJ)s² üüî]hµízoá‰/1#œ—AËû-—ø+Æ/ÇÎ6ñ=ânò„f©Ý˜`7‰µötÄòåˆ<C3A5>/­-óÉî(þÀ†¨<E280A0>¿ežÍ>Ίe£h"ÙAOàä'Þê¡ñ¶yôám(‡K@ ®6®~J2U#œ
Òã<↲<E280A0>ÖãrñJqÃä¢óé[ä $ÊÓêo0-ó¸xf>f¥A´Q'n¼C*Ë9»Ṳ́Çœè VJ|×vœœØðª?2*“×( XŠ¦dø\îÓ0)IPÐù«sföèOˆœ§ñ.Í7Î'£N£
„àÅâ8ÉltGÖšÈü®,Ìœ¡Œ¬Kñ‰dîÆG´ÆdOšH^e1g³µpÆ5ö%Æ‹$æ$¯Aé¤/9hoZK¿Ä`_Z%SæBõPV<50>çß[þZ¦ì´P7ô/¬¥±ŽwV•S6p½O®´‡Quîl6à ×” ˜­F±akï׊¬'d§yvÕèyi¸ù*m4,Å<C385>>éÑ ÜG]<1A>ž“Õ 9D7ÿ"˜¶*™éœ¨ºWíAØh8ªD1¥qšuÄ51Ëc¯ƒ÷u«YÔéñתkÒæÌŒÏݱ+ezˆÝ¡80T,•ŠÉÀôäÜJµ®™*y+š¢Â”L^5•³F浿îzï¦ãV1àÜgª¼ì¡eþu×­µL[yzÝü#ä·<C3A4>¦cƒñŒA¬m“´×GôüDÛþL-d>ô©šâ{[sGžíÉ•,£ê5yþ¥i5,çiKàèäÖç ôv7eÈä™W
ïĺ‰ái´”[v¡Ÿªx~ÊÖe@Upžé<08>RDOÿï¢ÂUhâåV•F;€uCǾ4Ö&Èä!ˆÖ¼æ3Ð,§3xeÁ(ÏCH<43>ϵÍìŬ,Ì{Ë¢j ¯ðAsùJè6ǯBäõ OÆÌÏ€+œ}ø ɯp9)êÈeš;Á)¨g…ùäe»ÓrŸb­Z«Ã7N}Ç£4)[V~¥ñæšãóVû@õ‡¿©P?œe·ýÏ_~
—%Šø_ßþ ëæ¼-wQ[ž ól‡¯²6bÙ¤çåjc{޷뫾ÖÀs”ÈÉøLÆ2=éÂÿZ%ËH<k!+c5½“Z}1×Ñš3Ì@K @—5g!2n*"LL Ù°8<C2B0>¾­µº1—1™ILõ ÛóÜŒ4ƒ¡kjr‰»ƒoʃ‡(Òg«» UêÞÉ{XþeÅÕ0çÜU`ˆ™<E280A0>g­mó)¼mã¹Ñvç?î·>0èÛi4>v:ò26¿
#œDiæyé
m—È8#ˆuïK˜€àhÑæK#ziT”\Ýûá =e̽òݲ±ž%œ>â¸'o?þ¬¹Þ¨'{H4Ày±'<>ªõ•LŸ=ÇÌëÞ‡xŒŸ¯…ŸÇ»jí<1D>1|}óc£ª^i¾ïÝÉÕùtB×}¥[Ñ~<7E>¾„VÀ;-9¼l¯ÔNï§[pô#[rÂÙøùäë<C3A4>«s¨n!à†¹OŒEtôp·`ÓÜôÖí|v+bþ<62>EšyoXT€`Ûãz§Uw(#äE¸ ¥žRõm÷à3Oý•+´©-ÖÍBoU`úÇÆ{ÌmóŠäÎUÐî”0ÎvU0ù{òÜÕØÓ4AÔ#x/kqC8øÉ&(Ž£/^Ôs²äÓY×g2ê"@grÞ½É6Ò™™â6˜ÚðÕÑL9À9·.o³KùœMPºWtôu)="kúÔRfH©ûkßÊÓoØQΤļB[ÎHi}?ÜqísS<73>Šg“°©èxËOhï¢ý” ­S )·C¥Ìa)žÔºYð:ìk=<3D>ƱYóÅÑ—".òS²èar/{˜DÒ¦Lç¢t:µ h¢MlÈæÏÚ²KL¾ŒbxD®ºÑÌAÆ/­<>'V˜å¥#”_lÇ×wŨŽ{ù-“å™P3´¯°ŒaæÄÚç„ô09úpŒ,Æœ,†ÿsÕ<73>¾;Ð+šW!ÀEëÏ _Ehí¾çÔ­•D6•vÃ$ÑtxédôŒ¢ß&ÜwÑc£my82Ñ+pÔÕFO)ŠW%_6AˆgYý<ÈUÈ*<n½åø´Ä3êMœni5Ó½ÂqÀqb½Ãp}ã KäWégà™¾[úPuWõ°X¹liœ
&¡åÁ~& .XÒ9wuãøÛ÷¨K!^¼¿÷aëÀ#IŒ<—ùËs•'ÛõöÍýV˜þ©"ºÕšµòÜwh×oðäPªÑõ½?K1ù!<21>dª‡…ÏDõ¬éÂÄ!¦0ÙÊüQ. Ý·Žn@Ïú)`ˆ‰Î-† ½ÛðM<pRéÅiçŒOEð¡„
åáë<EFBFBD>ïfÇ(<ØIǨ…Cí˜ <ÛºñÕ~S=7½WŠ<57> ÷´¬ÕÐXbÑ•¢…yåè„ÀFTÿ~ÐjlÝû¾çEc§à!¦ÐùBä°üÐ <09>+Æ«ÀâhÀo*…cZ]6Úܬ½ª)<29>!oB9¼jv¾Aš­œ€ÿrªkŸ.«d)†¿pó˜õïkÕŽÝq£„ ÖË2…oÜu³hÐ÷ÞtT¿!N±ó]ÌÓó¡<C3B3>ï?¾ùæÝP\¬‡Uv1¬Û7è;Î/laW±µè3OLrfñ*NÜE_¿¹{óíǯ<C387>ßBY!ͳ‹àdKߊù@<>cžG°¦ÀXž' nŽ{ÄÂz¤ëéô0×ËšÑô$‰kS-}[ ³D3Zœ0%,?Œ¶p£w1ŽÙÁü ¨ˆÐ 'EgñÛ•`®zÚVo$ÑŸ‚—ÏѺmK•DwÇÝIì—¤þ˜Ùæ¨G·¹ï`vÌ´ÃQ[û|"ç¯2 “g§„`WG‰lôÔeégmÙ»-⬛x9¦Åçc—éçëßyZÛ÷­w‡'¥k‰¯Ï·¾É XÆANÖ4èÕmÍ´z<02><EFBFBD>y4Õn¥/ZXØY¥Ã'ªÔg¶@Hã¹ Áp ~k!"Ü¡ªŸù#£ÈóIÆ+}ºÔÙ"S<>.Éw-¾Ã3\¢¨Þ~lÌ®¢a였5(~u¹1…u%â ;ž«²1(œ<>7­n[fDæAîŽíúô£ÛŠ‡d»´'ßÖÚK þYm²×Ühh$5Â1«p';ûXõä{Ðü‰ä({½Oøó©èIß6õC½9'éQ¶Jt©ç{<7B>Kl&BöŒdeÁŠŸ†ü‰† ÇVÌîe%âH=ýVúÐËŸ<<).L²}Ü2A
\ O¥Õ<åmÕ©&PŸÛjàBXd`´‡®örq~V¯ ö&¼áQÝ•ä¢Ý®<C39D>_ªþId7LµÒ`§&K4ª “Ö*mŠÖΞu¢ ½ã!O­á! kZIÆVêzþØ`i2ÂÓÉ[gˆ'÷”a\<ÿ¦e¾XÏÏR¦<Åû“þ<E2809C>?y ±¡õÇ<C3B5>æJ8Âf“s²­qxYëf9{Ÿ„Wì€*ðo9<6F>¼. çˆ æÃ9´v_µ­fë}Êqò@齞v6ee°%´f™g uiPPVËy$[w e™Õä>:p|+ó<öá¬ðºîµ„Æt}8…,!e„óÉü4@áË„R\s!{ô>ú%!e
éÌþ¶·É0ÒZw<1B>?ŒO~cÇ=L"RÈ'mSQhkŸ£Y¯ð9
¨ëŸtË žÿ>·ç}½¯T-ŒwÆS0k Í»ªG ®‚Ý÷µÿKâËV6Uøg½<67>l×ûšç"ñªcéOGžQ¢ëe÷âtd=ÎÙyyÜ<…*J-VÞ©Òoq€ z[<5B><>áå…X@4¯Va`ñ) ‚º? Ù-aoN`,<2C>‡ÝiîšÙÀ´*¦Í<C2A6>…æ¿ü™v6jøidçØÅS…4DÎõš¸ :QßæÜð°ƒ>ü·Z¼l­êúQ]güÎõYêà"ÁïÍb}$ˆ âP<C3A2>™è‰òqŠc²¥ÍiGY^;ò;®äaEv0ÌÐqಙ±Þ•“¢º¢ -Œ…¡øª^ÌJ÷d49[ŸºaArë]½÷ îŒvFMTQÒ¨8<C2A8>ÃvǾ¹=2IžÇ>V´l“¹;öãVy Èg½;®<C2AE>¦Ó]á<>âŒ(—f„¤¬7#6vûæ7Ãã[M Å?oª} 2´
€£ŒCf© `Ü ôsthC“ÿ‰BV.ÿ]àXA™+YýýDZmGÓ'̇ <0A>˜ó£Li7<69>ŒõÓF©¾¥ðÿœè[Š½ÿ¨Ð¤§­ E¦¼¸.eÂQuù?ÿ姰ØwÝþp9bË¿¥÷„I±)ÿp6»ôøø¸:ìºA(?<3F>𳫮Ǚ
ÇtZzy]:œþ­j<C2AD>ZËM±—iœX<19>§e§ÿ«Û÷µúï=arÝ?`KhŇaÀ &ˤk¢¯%óûuÇÆ&e/þO€¦±.µ
endstream endobj 4 0 obj<</Contents 6 0 R/Type/Page/Parent 102 0 R/Rotate 0/MediaBox[0 0 612.28302 790.866028]/CropBox[0 0 612.28302 790.866028]/Resources 5 0 R>> endobj 5 0 obj<</Font<</F3 121 0 R/F6 118 0 R/F7 125 0 R/F10 71 0 R/F11 61 0 R/F12 65 0 R/F13 72 0 R>>/ProcSet[/PDF/Text]/ExtGState<</GS1 113 0 R>>>> endobj 6 0 obj<</Length 7551/Filter/FlateDecode>>stream
hÞÌ[ÛäÆq}çWì#0Ž™.uá‡%)YT<59>¥][K>`z03»M=Ãa8üþ^ç9Y…KO/I…eKÁª²2Ož¼Ô¯þí]öæaøäÓ÷Ÿüê7îMöæýý'å¦r®x“ÊáÒÔö<>Ï<C38F>I3óæýþ“”ôrñ~‹ÿ=ò!ùíp¬®2¿©ôê¦0~S$õUš øC^•?ø«Oöu•Yù廦Ço©üÖÝã*ß”I½Ý^eÕÆ&Í0´W™Ì"¹Ý5úœI¶<49>òn±É“n_ã¦KÆö°»…ë·».½ÜoxÅÈ8õî*ËäßÝ5~±xåñ*Ëå£Õ'»v<C2BB>1ˤ›«ÌÉ﮾}ÿ;Y×M¶É¼Á|.ë;ö ^Ë“»Vfhäý±}šr©“»g,-O°2—æae¶²r5Èœø<C593>¬ÇVF.“9<E2809C>z½h¾™ìøµLæ"Z™ÿI…éÒLÆå<>¤Éã˱ƒÜy]Cû#„“͛ŚÊÜèššZÌ·H,=<>
¿Ì=<>-·.Ï!þn<C3BE>çmrÛj|T&ÞõíUžb·!|ÑáËSU26ýS2É®ÖMxÁ<78>•Ìñ¶Ÿu¨¦ÁVe<56>ÆÅÝÕéøˢšÞÿ3Vù@Ínwøº“A®nŒLÇR ú‡›õëÔÇñ܃îÝɈ.¶œG´ÇQÅÒv ÃhÉy
•ßl{¡Júf‡Uù¤[Ì¢HºÃðI‰JãÏ­l‡3òÆQÕj×^Q7ó¢¶âÂçó*•Ï<E280A2>ížfá“Ã(~^zä ÞΚ<E28093>WNž>4?Œxˆ{ÜLzÛan2Âp<C382>Xé3^)ñ©BÀšñbå©jaØVUϹIïÌ,‡¡6œý¯~S(žT"¹#\„ˈ'N.r—åÀ“Ég¢X7NF…b<E280A6>¢ÙX`ßR¥Ä´ ѼÃØ··'™”LÎë†è-ÅŽT^ýÍ™ñu>€½<E282AC>1ïÚÃÃlyOFÝaûK*í à!KîpE<>ÝÙq¸¡UÅÜcÈðaÁA<05>[ƹ©>ŠªÎoÒ,{ãd~EšzÂ;$æÚŽØ!5zД<C390>‡þí»;H[6y§Áyg¢n:(âBôµ¥frûË„š ¡S3]%³ÄS™èCƒ©8Ž;7ÍœsÔUÞlªªZÃÊeT ø~Àë¸VX\|þû·ºQåÒ¶Ðñ|9Yu«ò/ðÚ÷úÚI Q&]->7k³ÂB<D?Ô‰6OnG<6E>íÚ qÖúàÍ%/@¸Ë Á.O!Øc=â£h'Ÿð´<C3B0>,•1Ãð˜ÿ¶å)rß(<ÖãIÇê1m¬&N ~¡ SO=¶øJš%<25>€™äáAéï ìisZÝÁng1ááX«¸¶Íõ%§Ð=5œj•ÜÜãÍvT= ì²%jMm
™ãÚágžöÏdÉ¡½× lo!ÿÖ‡Q­X<C2AD>³¾ƒÿ ÔhGQÐWûûîäJí4[™U7N*ÞŽîꞘi“Wˆ¿6k$QÐ ƒ:ȧZõh×Þ)°¯USFªº'ðV—4£§ê0qmîïâ-f…ï=ÁJñü>.k¤3Mn~Ôå7óºÚq£c•ÉûGhå €.€‚]Ó~Óäjuk»ø·ºƒ·W·õ 3ž'ªÂ6- S
0F(=8G;ŒqKkÕola»“§º7ÈÛ—ø†x‰¤~“|Ù( ¨e˜ Ööövнév'UƒÔ ÊøN J¼ïá;%õþ­fÖC=ÂÓYò.Â_³•äÌm…Ë?1<>¤‡çY ?f“¯šñQ—ÛÝ JÝLrßõ—¬ç®ë€O»AÅöÍ•`hÚö¡°zïÚXEo¯õȲpˆŠ"ªðN™²÷ÇF©ãžK Ë<>3oj<C¸ÃÆ<C383>:v™ƒ²Œz§± Vê æ4s<34>HùŽ»FïþÐŽúièhî¡ïNP0ÀQA ­£'ô‘˜Ê‹Q%_^½ÿËì#Å r£LA¨£wåÌUÈmþÆZ<C386>D'NF¼dá­×5“g„NyX´?Ä)Cë÷J;«åúqÇ—MœëÛA5wÅwê‡5è29ÅžÄ×ô‡¢ë¾X+Ŷkî5æ¹ôÁºÚæ0*|<7C>Q@><öy8ªo¯ûAA£D­ d6üvÉy船L{§`ÕaÈÒÉ$=`<60>.Ä;JEA§‡Nö<>šTøˆß^UñHß mÇÝ Öâ“ëK¶{_ouêí
S*™¹¹Í¡C+·9 öuôÐ7£ZË
s1@µ4)Ljƒ{ØÑ?5âÑè<ð góœ²z BĪè¾<E28098>ö“€Ø1eø èÅjE<µZÀ“\&¡…¦Ål )49ªkÁv5Om §r;”ávíuáÇ]§÷BX6y$§ ½k‡­FÈtÙä¢Ö=ùpÿa« Ñ ¿ãþŽqi´ìiƒ„ÓÄ°T9p}eW÷hTÊ×ÞS0^Åþ­ò8{¦˜XG¾D|áÉsÍ÷AOÇ0ƒ}Àd~žeQ<1F>ø /8ix<69>§]ˆÐeK°§?<3F>dZ n~8FF¨Ë¥‚áôñs#³´¥cØ·nß©„F,ûp#QÈ“Zh¶e= ÿXËöæiäéÖ ÛÓÇ+1© vóÙ§_jìYÂ<59>å…v<Û Áœ¨½)¿UKЈ+’ð< êú›öá ° Z3,?Ëè•v§AtÄX~<I,áM̱ÙéD¹<44>û¾Þ7Ï]ÿÝFŸ02n?Œ×z_ ëÐ~j>ÈôEwš~ÐðØHT<48>)æ&zñÎÝûlEë^ÂÑP¨ºÉ9×”Ý(¯ìëö ¡NVEßn¨²”QGP<>¬À7êà /.þû«<E280BA>Ò˜êIÕ$AçÒɇl˜gM<>"ïá$”!¹)ŽÂÇ,Âáæ¾ÛöT%ÛÜñÂþ>‰ë½ ±¤‚=¯Œ lW.á_æõæþB†XÀy߃A9¥ÇDqGl9õÇn€[°þgÃ%Ô6yíæÝQj»Ú<C2BB>"ÍÂÞ@²@êƒòH ~N·ÜÞ)56OI€¿?1š'©„Ðltœ÷"Þk}BwChh½}œ÷QxÅá.z@Œ™{È\e,à+¹Òbe²úŽ Ó£Pâ†ð˜± ¸AËœa^2½vêú„(ÚÇ[|aš™Œ
<EFBFBD>[Q†ÇvG<76>ç!ß&¿æJƒáÛrËÌGsHy!üÉ­Rm<P-_ìý¼k1¹æM&sTÎ}<7D>b¼¤lq§Ý¨X^Î[U}¢Â—@þ ò%<25>ª¸ÓeC<16>ùw·cÍ”\éBâ' Æ­¸ jî.:P|<7C>¾Áñך2Qž“¿l·§¾Þ¾(°*+ B+Þ8ª N8 ¼˜<7F>% Q°Ìíq¯-Y
pbÚ­»æ>Ø/· < +±Pª¯?ûL½uÆ$¥¦'<ܾ©ÁTf.`­¦rÛBH‡&Fâh»R<52>3Ú€ÀNp<4E>z¯Òùs³ \õ:ºdØ`j·{ù18æ c1;¶×ÄYL™1Üڧ&f³ŽÝ3y“åbF<1F>mx Ù'—#Šû3áÏÑ½É ü Yìš'*<2A>#ySåq9¢¼¿t Gç(zhïäþݵ¸¨qLû#FßÊÀ”¢Ód·Ê,”£p™&§5°ÈB¦QX·€rb^c,×
²pë¿Â­4ÜÂòõNîdᎩ*nýËÙK¹Ïâ[6]Å1HI|¨÷à€¢.\dŸªEÕ!æ¿;%´Ú ó©û—AªtÅÚ”ç<E2809D>ÀÉÞo¯•y™äSuiÖ³"NîÄÌ2Ro­µî‰¾üØ><RøˆD‰ÊO—V°Pž ¦)çç‰ÇõŸ”êܵOíxe5ÑÚésCRÇe<C387>k0o©ùÇalQÍÉ V5èÿ &÷þ‘‰yë9rx§Ú‡Ìf??Š×Ç\m‰Œƒâ…€\•Ôwwm€Ÿ* åKÖµdó}jt¤OPq»†ùi<C3B9>©Ã¥Ñ2<C391>“”ˆ×*(ÃóЈYÜÝtý¦fŠŠ/OãÇV»ÓŽ1?Â4qâ.U¸\¥šŒ^¦hÒ½Bõ# S@°Œ™ƒŒàƒ”<C692>“ùÒÓš¼$ºÖ!sà$`ÞuÏÊ¿rð„Š¼ô Úþ )ËU‰Ñ—¹&™V<>ÏÃLpm_««Ó@u/ÚCTp~k<_¾Æ<C2BE>ˆ*±o3”+œùÿ ·‰y¼ @ ÷ÑÀ¡".É>Óß#Ó-Ϭ±‚?ž¿'ÀðÍ•ä7^dÏÀ}8=<ÀJÈñ<C388>Wû‡·¤Ô½°Žé A Üp)a|áa°5Ö! œÊ2<C38A>>hÈhe“†*ƒk$W{3•EMY2ƒ<{J¹•²´ ŽfÉï»±¾Ý½@P• 9ayó<>Hf*ÛEКMC ÁzH¤u&j~D¾mõlòMòÇí â*“C7Æk\ȃô~x‰uªA¨nÃ:*~R³·>ÕLóEÙöÂ,èõJˆ¬e—hGl1³³$*•™œi”ocW,Ý=¶ý„*E¥œvasBœc>GY|Å72²Aœ£¬»öNŸô* ¡¶]ß7"·F“¼•zaù°r
³`Œ©¡’† <13>ZhÇB\é&À_@»W†,ð䫵GÛòyZFãú׫Ì<E280BA>Â
¶e %ˆÔ™¹ûÍÈ• :ê_qÇ&ŸÁ¿Ò §«ª\«Õûú»†ô¯<>Ýý ½“S˜HÚµ6>¨ã,è%·]NR ÒÎY YKbÌØÇfÊw[:^Ìø—ã®I¡é[úùŠL[`~¤)<29>CY2æ=+Ø$T¿çÌð¦K^>œ1윕fVàh÷á3× >
`ÿÐîe’ŽÂ'…ý§kežZ¥DÈ.)ìS-È*×Ú±,¿þâbsfÜ&­¼û[…ÀŒŒ0Qäb˜GÇ…ê3fµ"ñ±»Tzþ?.-gð÷E¨,ÿÛq¢6à:ñ¹Ò¼¸Dø¢`=<¢6l™XœÜ¶-cýö+\6C,` ­6Ý},°ÐR/CÇõžä¡õ‹ð6„¦EÐг¸žCV<43>>mðN1`-dnC LOêô?Û-“?]CÎøY.í"n"5,à )…8‡)e7[ %
´°%™s5lQœòrYx³èZ,"¾p¹ ?¦¯9~œ9ƒË!`€Ýç¨R9r@ø:ÇìüšŽMö½®æ<C2AE>4~@K`^!ÌAòl)±ôÊOmw¸³L¼8³h®œ@/ªokÆÄ“öš÷*ÖÜBÝ6àÚúW ¹é8ag*Ƙ°³Y̸9ëÖìA,gêŒaa÷Nóч—Kê´ y
ˆÙGù6¤¾ýôf )J²ý»€'Ú^çÑNï»a‡ÒÔ@©õ=-
[w®ÌÞI `3¢&"ÚBSݨ±SñšÈiHÅÜ—<C39C>h#ScÞɦÚŶšƒ> ¦Ðmah†Îq%‚«ÂqUHnÈoÆî†K5%‰»ø<08>&èb'l1´}`)Í4ÙàÅʘÐá H´Ý®{<7B>½Þ-?ZÄ>†Ó(ï³¼i,‹¯Ù ®Æ±Å%fH1ë̾<C38C>)d4lcˆœKgËÂËY€xaÁëOtuê¥K{™W­ú­Æ„mˆû<CB86>¢}êuB¹OIé”/j®ñŒg/ò$ÄYú«2<C2AB>ÔΗêShúP1eæŠÞîÃv'¨©ÀœFØŒ¾µÚœ ò¿˜z` r~™plT¯²=÷¢€çù1ëýG°43ö"ê€etÉËÀPøAþ×<C3BE>V`wK³ÞÿeÞV—}
€½æºW!Xá³)CÎKÛfœÓ0`•Ô#¨R‰Ž»¢ñ&4RB‡.lø¡ì±71ï <20>*xÞ„¶²“òxüíÕW{6Ý®|µ'\DŽâ<C5BD>¦{ÖUþ•1$Ÿ÷ÝÐÛ]½«|¤p“ÇÛh»®GLÄ3-kÓn…¦uPäíño©ìŠT)Ö<>ðk91Š¦Ðpî…)ˆ² ¯tóÂ,Vr[*6.Àck*ä?šÙQøÓ`û<w”5ÑE`Cz{˜<>!Èœ$a]E6íZÛULt¦Ü²ýà 3>úY\X­­^yµÔÐ<C394>h\´èú£ºÃØØ´šì&#þpÐÀ¥XVš†zßè=*¤ÊàÅ¡~ /ØœÖC"](¸þÉ¿<C389>ÉF¾Z,<2C>á°_ +9ŒZ<C592>¢VÃÒØ4}g\5(ÿ¿¤oP;€Äú6IùŒ)¼zDôHYr³_ƒ)
é;<3B>¨ÏQ¦ÓÉZ63ëôîÙE ®Ö†°)krA²…Clóýü"¹œS"
Ùl­,ðµòfÛ„2à„oi5qõkUtŽáS²Ù„[2FÒüðØÞ¶cìßuÏš|È3¾ÖŸ
#S7©cÁÚHG°[ »šþiáÇ.ãØMï2ùùÔ>uë8Lt¼È}T€cÓ<63>S¹:kyh¡Í<GB<>Ó ÔÙ" ]SvŒ-<2D>
#6­c'ûSôÔݪ\úõs;žFªî£`vFB>å”y•áQÀàNÝî”îa¯ÖÀ€<C380>lb©`æ«Ö¾z­dè \Õýä/vZÎ1²þÎC|ÊsÇlÑâ+©'!þu"Ù,Žïë—XeN÷2`8²P-Y<E28099>wÒRêU/hÚá´¿Õ˜<E2809A>çË,ï¾ÑæTÜÚ¶ýöÔŽ¡A¼ä>Fé‰Se(´áxÄ £ñéE<C3A9>6ªo×­s‡ö}_!ôNû½@Á5þFã@Ñ—Õb§ôwÝ)y'xsvä“ã~óD¾d³ÌÍaùB¯W¹"ÃV-f”IÿÕzáUyÁ¸”áÒŸerYŠ<Á˜<14>ÉC²áÂ0Ÿ8;íØGYk,1)ÝžºÝS¸<07>u K…Tò`<60>Sµ! iþzA¬ËW)™Y!!¢åß<C3A5>gÙ`I“&³.ªÚlv§…<C2A7>‡C
SM™tè|,ç1=€î¥jù+õÖ!¹$—°¡Ú-sYH<>P)
=€ò‘\™ª²Yfy6}†ÔmZUùl_™föRþ,äçc\,Jp#´ÝYãÛÀ1™Ë’ˆƒ†Ç!Ü/X2;?Å1çÎxRäPŒfw]—×V)‡Wy3öZ.&ã1ôVßTÚŽˆTãä˜È‚—<¬BnûòsY¸Q<>´(åÞѱs‡F©dÍ\n&«zPgÙ¦i<C2A6>²ŠI-üʲËS󢧲IF|ätn>¸`óL´Ûô\2ŽÆ¯s­j ìlºìÒuÌ¢„F*Ç8;p¼áٽࢠí^.›ü"ÀÖ('Æ™ŽÇÚèœÕ¾¥A]YÐ5‡i„T `‘“×^
çÙ¤}Š•öu”µ,v\bß¡㜠Êøœr_æ#
<EFBFBD>a“÷YÄâåK5y¯ž?2_ÒÃúâBŽíL>»0ÌÈ<C38C>÷Ùв2”TÚ´,äöûS­]*ûZûžðÀúï7ÉWï”M2MJÿy9Åâyû‚.ñî¸ýž©$†ƒ»®Ü3°ÁǼ™²°AÀ3í2‡ÆxÊKhŒùx6tª3|ûæöå#‰!XPq-c¥<JpFÖÝ&õçí ?—jõlDCèrNÌI4§<34>>Å_ïÌ[
Rì)<FjSu¬|vf{““˜Z°(ωÝÓ£
²]¢ ÇŸÌʯ¼Z´p[ç<>ý»7ÁœÕ·5²?—©<E28094>ÒÐÚô"0]¹³ø¨ r€{*aÞ“Š¥ýö½(]öw¨ðg?Yá7öµVö¶Lå{&'ÞŸ³G“¿ÓBj;T}jýy(܆”y51žœ'cu1Þ<`“ų—S[s<Ëk3@\ž/óÙì<C399>iyëcJây>?¶ÛGTà ØÄçØÍ;¥1Q[Õ=;mts9CºŠ<ÓxÇi_ˆ<>9xqy$ìò¢ ä ¯4r¨wìfcƒé[ßqó=Pm•ï"c«G±íªôÅÌ܈—ç’×™ <20>ãÛ+Jç<dÈœZΚÙÊëæ…_zݼж zx¦þY¹ÍÙÒrËT‰Æ惦}Œya¹ékÏNpo»Ó¨üÆ<C3BC>SEø§5U þç<E28099>´vÌãZýç*nÈ;%¦ÝÅÞèÂMm>X´ÞÍdZºÐŽ¤© m¿G·¹F¼å¢•P£êØhN^O;jòé,ln—ÏfwÍìÌtðËcÇ#Q…*çF<÷-¤쵊…ýkÎAro”äå‚0{ªlõ¹ØÀ2'FB'`,ú¯[
Mb <0B>7,¤ÿû!t™M½—Á®*L¸iWý^jôÚat¦ßQ8ZêÌÍDG-;FtÔæZø˜?•‹Þ•<0F>† Ïâ×ÇÂÄÝT>.‰pV1Ì”É*—a«Ò¶2Ÿ:0½à¤:¨lh³*%ÔºA[ïæ¢r`Ùýа5I{©ž Tmdžø9
mQFëæ¬ëLusWÄî íªšbë4²î%><63>eS¶Dí 8iHc˜C"‰]:ˆm˜ùL1ÕãeìøðÁhC3ˆvø, Î:Õ/ÞXd¤Iÿ¦-¹6µåÇ|±³15kÜG}1<>«c>ñ­¥—iwšG÷S&óZ{mr× Çvlôn¡¾‰ç\Cq˜GyWYö, ¦* ÖV«
Ã?Š˜Šì'ÄÄ#>È£h>ۼ纽åÚgö†ë¹¢Ð9˜©èÉ£œýñùR{yˆjÖð,Ä_ ë•gÉ#4¼¡'7¶ÿ³$v뱜<a»­0·H¬Q1!Ì”<C38C>¿lbóï{…P[ú)st¹¦9§pî²¥Í]X\ìëšú<C5A1>µ ,[DøÌF-NyHXÜww§PÂÀPá„5 ê•1qŽ²ÏB¦·îÑ")&Jî;…§ú°\úóô{΢Oq¡7˜¯Ÿµ';3W¯o.#Pè2«\ÉðŒ”J×eò…x"ž0<ã\Lû7Ìmüåtˆ%žD_BØ…¦·<C2A6>%2 žºª)b¢Eö?çBʈbØáiß×´®qQ1@5ë¯ñzŠô!4zdª©ß…]±“†~.^iáÿu|'üˇC>ÿ©èG>×­šrJkÙ!¤Y,Ëü!ј—ÿˆÎÄU?¹tVQ×%»Œ½Tyåbê7gÎþ¬è¨Ï,m 'ÕÔ.<2E>¨ºàL> £Ãã¡8ŠTrïBS6*Ÿ±wÚóˆmèv6Þ/2x¡dRfëµYì€V¡k-ŒJÏ}ÙîC\´Ð°eg>;ÀdìyÜ0U¨ >³a™!ÅfT 9+K—û M
VÏB…¼ ÑŸâN½7—y ÖÞxúU³csɆG$˜•Ï<17>åJìÍ/3÷<33>ÚÅ"ˆ˜>
DãvË…‚<4јÎ|Ø€`íܾÀyæl\[æ> kû¶¼kGàšSiø%<25>MB!‰MB¬™kŸ<>ñ Ë_´·Å_È•²þrž ]Õdª>Í™0— ê^þ÷Æ<C386>*_M˜ÿñ„nãgÃëx” îè«é rÇCH»µÉ4‡¨þ´Šp¹ÅïŠiLèÛÍŠêÍ<C3AA>Ø[é[(¨¯¿üû˜ý쬆Êüê§ì:{ÑÖ5“ü§Ð†NåùùysÜuÃöŠ4Y^EÚ¦ëÑ'ãxˆ¹¸º©\…³¤¿«'MƒQGó438Å€­Ÿü<>nwÚ³cAXâ÷ð€©°%_ ¹¯¯eóûM¦…É´×ï?ùW)Ý»
endstream endobj 7 0 obj<</Contents 9 0 R/Type/Page/Parent 102 0 R/Rotate 0/MediaBox[0 0 612.28302 790.866028]/CropBox[0 0 612.28302 790.866028]/Resources 8 0 R>> endobj 8 0 obj<</Font<</F2 122 0 R/F3 121 0 R/F4 120 0 R/F6 118 0 R/F8 56 0 R/F10 71 0 R/F11 61 0 R/F12 65 0 R/F13 72 0 R/F14 80 0 R/F15 83 0 R>>/XObject<</Im1 14 0 R>>/ProcSet[/PDF/Text/ImageC]/ExtGState<</GS1 113 0 R>>>> endobj 9 0 obj<</Length 4318/Filter/FlateDecode>>stream
hÞœZÉrãF½ë+t™pF„Q­7<C2AD>íðÒ¶¾´ú 7Ð(ZŽ‰ùŒùÞÉ—YÅÅ-M8&Ñ µdåòòeB_üóV]oÆ«×wW_|•_«ë»õ•OË<7×ý<1E>O3gܵ*ò´4>¿¾Û^e<aØÐÃÝÿ®>$M7ÕCµœš¾gs£UZ&z:Ôu‡Ÿ6uÉ×ßã<C39F>r©Iî“ÙÇ»oé`eäd¥R<C2A5>–ö½{{• ³»_ñRËËÔ¹L…Wÿ¯²°.ÍH¾ð. ïTXfËÒ…W_^.£Ã\^VÞåŸïø!¹<>Ä:-Ûýn×ÖÛºªá 7*R|ÕlöC<C3B6>_&õÉ­}}?»á‹Í]¸4æz®Rå}!-ûnÝ Û¦ÛÌæÚ*RIß-i¹6ŽWªéð#Oódz¨&<zÑ"é÷, ­‡j[úá¿¡<C2BF>ÝP¯Ö>o<>TËåžÌÑÔ#Ës÷w:¾Q-é¿ë'1EžTÓt™ñ¡®Œ4J¢Žõoûšå3ÊCÖ5ž
j1qtûí§)뺚H5c_Ý6Û¦­†öéæ$Ðz?ÐV´Úæ9­©Ÿênä+XW<46>u¢Ž³2Üö«ºÅ•,žð¾ û4ݲ݇¥¹ ÂÊÒŸx5¿­/ª±^<5E>ÎÞÔ.A“5e¹ÉuÒÖ<C392>u T®û-=“D:ùà²<C3A0><‡6î‡ø´Ý·SóX M5…=óäëfµb×'¡óäûjøÔ?žNÿ"Í-9NtN5ÁØ6Ã<36>Ɖ¶åWA'«§?⧧Ÿ"”ÍJz&<26>¼ûáÍ<C3A1>oßÉ€¡¹æãé¬U³buØìÐÜØlºfÝ,«nj¡DºF™4ÛÝÐ?ÖòóÒ¥0b¢S±Ö-ø,ŠÉ%èöêÅ(ÎíóQœÄp¡âªBÿ)†­³ªn…—síRE÷¸ ÉU5qdä3gA1>ô‡î~F¼º«>±1 ¦T2õ~{#Ábá<62>#‡INÖ O"wãNMGJ¿ ×*6ÞùäÍë÷çáIrÎ<72>Fô1R:m%d<>ƾբųÉè|þ?GÌ®eÐpÚ“ <0B>m³y`ƒ:$EŽ!ËáMt.æ\ÀeÃ0‹ãÄ‚ú(8s@„HÄ ·?¼ÂPFÖê]«…Y†dœšnpz¾<7A>6p×q¿ÙÔã$°ç<C2B0>èVÒ6Ay²çtèeœ\´žÎ”9óL#²à·¥ß„T“è „êvÕ05U %Ä÷ÛsàÎ3h¦éÖý° ²cž î6Øà[üÚ7'†.S&Ëj V7<<3C>Ô<EFBFBD>˜Æa{ÓÚâ,Š %ZB°Ðås<C3A5>s. <0A>ðŠ¬,)^rŸZc9Û~HîH)9ùÙÐï7ØNpÐØŒ]µOcŸ³Š-óXW `F°|»˜Í=é½éª˜  Ã+ÊZi%ñÐŒ´¢2º ãtZ3Ã.ë`sÚD—0àC5,ú¡‘%Eó—
¨Ø³ÁKhæÓ>Ä
á-bìJjcSœÄÉ*XœjA—G®Ý#lÈS½ø ÝÜòèƒt8Ò#8B„ጢó òaærzOæ#XS¢ó¯k
Žg²².,{˜<65>Ü<34>3 /oV4$i!UaO¾«Æ™¢Ä
Ÿ¦T¢¡Å™ÂÕa9<EFBFBD>˜£‘„,9ìÅñT€@@ŠlÞ=DTnÉË¢;z
! ¥€¸"<>1ô€ŸÍ8×<38>²år°¢-m®6SH<53>ÌØl‰8ÑîJpÒxP-=ŒF?:HO±Þ>ý1S`"@œÌÁQxªÂ=±3"êô–’ D@%V$ʲYhzØô,]-ã*`cÍÑh!ÚØ@Çã8ŠØº©q”¡Õ4#¿Ô:‡BÆ Ž±„[$j/>E<lù@[ÐÄcO©x"<22>Œ¦î!™nœÄt•ˆEñUµt ºv Å>N7âšt¼XàRžÈn<>ð¹Ä÷ÉWŒaª¶\bH'Ð&ëuÉT ´‡ <à/¦)x¹<>•D1 *僆y9bÛëʾdCámð<6D>W-î–‘ºü¦<>Ç+lkÞ“LÃ<3î3!ÌáJëç\ÁåyW0Z`PËsH0É¢ýI½d÷.hæsÕcÅ$mV ¬bxÎ×ÌÚ²å1:oιÒZ$~Åñ<C385>ĘüU»Ý ŽÑ“<C391>àPrD&S¼%ò«f^´8²Üú hm!;=<q<>;A€ÉA·~¬Ù8%€:„ ¼CR†´ƒæšúá«Sª¸fLPÆóÜ%>U`óMÝsxÔ"É44ÐKšàa!2Ü„ô0±B)ªIŒ‡Ó7,—Jvý(‘‰{<18>8ª8G;ã)÷í^<10>¡<EFBFBD> 6ô Ib=8=Ì »–¿Œ)´%$€9fåuÈ
Ç;Ü¢á<C2A2> <<3C>Ÿõ4ÍX=R, æä4B^2ˆòÁ:l©“<C2A9>P¯Ê(ï²ò3˜t"®'×TÌÎñŠE_Õ;#tZñ| u­$`Õ2`Pä žjv+böeDƒwwW¿]YhÇjNPTm§%UÜ\Ûkà<6B>ÊÜõr{õÅ7[uý¶¿úIŠ÷À¯i¯"“¥á1ïsJo^R[,Z-Wu*Ånt»|¨A‰RcX$W²ˆ$…À5ZuL磟 Ó?ËP#5ª˜—+U«A)8‡Y2P^r`ø”Y6q9Â1±ë\*rÉsà¼lR°ñ©ò¼`[.™Ïb)qŸ¼ºŸqUÇá^D<Ž.TØ[*/§¡âĉèDI¤
rѵü(ƒ6²âB¦ô\E†ŠúÎ2acôy¢1胰ûX)5¡¶™Ô[wýÏ7²ž2v»¯ãÁtRMbiË âŒUÔ#ù©eÚ¨$ÌÞ£dÂh3XòX×<79>3i±¬[_ad—ìváÑ0(“—Äg)®¼+àw‰Â²Ï}Ô’—[¸k.<2E>
bd˜|ΰ±
¤¤*ÇÓ…¶Ó‡$Mg(Ï£<C38F>O!¢Ña27¨âfþX6fæü*Ÿ_€
âåâ<02>lc^Œ60P•]Þäñd“ .OÂÔ(¿•ª4—ž·ªUÃà`
Ãl»ml ‰ÈåTualS0õPGþmOT +r<>sÉwì¡FÒb`¥ŒD^ÑOܸ)l(ï䈊ÑöRÂlòi<C3B2>!8ý<38>îÒ$·SäÕhù‰pÈ^Ìox^#™ýîöVv†WIA]cï8Ey},˜%T
ÃÂìö!ÏÛX {”»äÈCó{LL
x?WëgiÂæ{Ÿ,úiâî<C3A2>wDÖúsœh,
<Vœ÷'Ð<>ôdO <20>¬'}3ÎNu·¤¸æ+£jAÊ”"  l8¾³ìÛ~À%8å@V“z<>õÐR*5]È!4Ù^š¥œ!9¯ò0©8åɤRç(ãGÃ{ǵ¬Ä8<C384>µê·Í£3á<33>ý°
ççg[WgJ .˜ìêa»Ÿ¤c‡·Ç8W¥<0F>óþ"Ò‰9tL¥F)8ݪMRÕ„BÏ"m:épßélÅ$M¼àò?•ºÉˆ·èœ!ö´¸È0 /€tœ« Ðñý(µTÁ½©Ë¬,”]
x9Þ— -\žR±®¤0Ã"Ôáú¡²ùºoW±h[=çÿ~¬Úf%™¿Kå…M^A67 =-ÍÂx·ñX?EÆàþæ6!}Á<>¸¦ª4U¹7ך\£´Fÿ/@<40>I_#þ|Y
±Ís$‡O)H_œ“…9á~ÆpKxþ8òg­<67>¾8.€–`c“W¿]ÀƒœžU'<27>éî/j§RlDfbGvåÙ„àò”“? kÅ#Pà#â­–Ÿ¤§;6œ#ñÒ‡î-7­žÝÃù凇f
ÕD~ÜñI|_@-÷1ýKí£“C5ʾ6j8çB4ÝZTI\K² \༾Ì— 8'T;6àÊÐŽ×|Á{®x‡Q<ÑIDºcC‡Šè<><$º¸H <09>s99ú²³\ŒÆî°vÌ™¸rñTEWí^ &J#¢ÁiÎhãdœOÔC9¥qJ3È
<EFBFBD>>g=4èáI<C3A1>)ý=,AiS<69>ûAv—tòV Hº8éøé'
Æ.”{Ÿ¼fgÉ@—Þ Þçè3î%×1tÍ•_É}vˆ´ÀÐqØÏ2Ø>ÿþö<C3BE>l<6C>¯BM>Âd(§Öû.~Å)øE%Ó¢<C393>Ø8ê;­†æ<E280A0>TaW<61>brRÇÚœlûÍ ÁŽ´”™¿Øeʪ¿îÈvEiòk¸qŒw°F!mæH´ŽôÚË|aË¢Œùâ~õì[ÉPœ%T¨ÖE¤6Ì<36>ÙñFùåDë(äÄ¿Öj!sªž48Ù…ÓM Ö±<ÙøXï¤<C2A4>ËHW࢕ëÕ†Â5ŦœXÑÊãvä†ý ^â<>v %œ—
ã†OEЀ¸ßDÚ÷0yl³Ýoe¹“ø ú=¼)
ÆósVCuè„u˜³3WÕø ²¸p(wxJ4l_Eâ@£’‡[Xž'4íÔT<18>Ä\8&+‰Ô“ &! xd|0Œ0Â}G‰D}Ž@…:Fh¨<68>Ͼþd:Þ}Š\©è>áS¥FYlWDำp„|ò“Ö<Ê<>·æ1„¸b&ø¹`«DŸThcˆ
×m*‡ùHTÔ%#„2¼|ÐÊ;!óñs{)º¹).Xl¤3™„ZËÅ%ò~F¨†pÇâ¼ú€ÊÏ@Ÿï×Ö¤U*<2A>& ¤úÃ~ò^´$
E™Nn2îGÑù ÀÌiü¯+Å•—¢½<C2A2><C2BD>Ž½ Ùßq7šžtï|,ðÆXãóØEì<45>Û¾Ÿd¹âæ[Ëê崴‡èé)6ëF[€ÕB¼]ÛO©¼Sò)WޔϹ”Ðt<G\É|s$™Üëëeß­æÜ°V|ÍÙŸVHÓŒ¹ïø¸B.ßY,€ÿñëâçèo‰+MÚd”ûJFñD¿P¡ƒ‡¾Öš¤ô>|!¹GwÉæy$<24> Þó<C39E>è¬&ÃfäÞåtþ²™[÷ÌéL&Þβ„]Õq©Ö­BqM€V^Â=KÄõþgÌW#§64Íδ9ÉC€ä^ª÷©Žõø^¤ñ&“&Á?.‘Ê‘ò"Rëäž¹À;f<> þÇ <0B>QJÅÿ|ƒcÚ„˜.Tò¾®†gæJ€©<E282AC>1•k.<ëõºYrA!âÇP<C387>”É<E2809D>(Ck™h% Ä/M§ÏÔØö,þþ\®ÜH=§¤~fÈe/ˆð”£<E2809D>ñ·xóßós˜nFK&ðê‚à&‹†"bê‡ö<E280B9>!ÚRÄ6ÞÓŸþÂàÄ+â_øÓõDLøý%:HÅ$]é,V}ó%)SQ53㯜_üÚjÓÝrѤ<è:(¾”¥-m<>¯zžÎç­Í„ ¯¤¿‰ÅVpD
™ÓßÒŸò½S£øó9†þÈw"·óxàM‡"žøþ»oå3Q¼é·»PÝs¢×@æ× aßÖÁ4ä_øF‡û‡”°n\Š#ÑÒÍLû<4C>„¤Œd`gó2/]¿­º}øÓ(@“&R‰ïy aÇ éÛý]GžF“¿*òËÌöqä¦f‰†´¾V¢âØ0ÿ¯¹ à
endstream endobj 10 0 obj<</Type/Encoding/Differences[46/period]>> endobj 11 0 obj<</Length 214/Filter/FlateDecode>>stream
hÞTP»nÃ0 ÜõSt<53>mt4¼äµ›]hW@M ´<øï+)N <€GîH¹oò<C3B2>î0À`É0Îna<6E>pÁÑ«ÃÖeÔ“ò £¸[ç€SKƒƒºò;çÀ+ìNåÛkñò“ ²¥v}ùsŽD·xÿ‡R€š Bîß•ÿP‚̺Ù¯¡Ê}¹Y;ƒ³WˆPWØ\É<ÏnŠË ëfQTÇFÄÝ<C384>MªtÌ=<3D>^˜c¸|qŽ<71>Ì-áý)Þùä•Jü 0fdi`
endstream endobj 12 0 obj<</Length 117/Filter/FlateDecode/Subtype/Type1C>>stream
hÞbd`ad`ddò ðò ðÑvL) 0q6q5µ‰Šþ<C5A0>æËùÝ÷«ægëyþ+Ýßy…@ÜHꀀ<E282AC>Ÿ<EFBFBD>IHïû¢ï³¾ÿmXñ»Ärj.+ˆr@tEñâ¼¼ââ¼¼ÅÅ+V,^¼BŽ ÀªÅ'c
endstream endobj 13 0 obj<</Type/FontDescriptor/FontFile3 12 0 R/FontBBox[-31 -250 1000 750]/FontName/MPJMPL+AdvP4C4E59/Flags 6/StemV 0/CapHeight 677/XHeight 431/Ascent 694/Descent -206/ItalicAngle 0/CharSet(/space/period)>> endobj 14 0 obj<</Length 409790/Filter/FlateDecode/Width 2032/Height 1612/BitsPerComponent 8/ColorSpace/DeviceRGB/Type/XObject/Subtype/Image>>stream
hÞìÛO«+ÇÁ'àûÄlf˜Í+È:AÙ½Œ ÖÖÆzg6Yi“<69>¥ !Ûƒ<C39B>÷<EFBFBD>?€£p Z_o´t6ƒ áÞ…!Èp `4' ƒÁp¦¸<C2A6>vWÿÓ¿sԭ硸Ü#u—ZUÝ­î_U?>p6»ÝîEƒétª}ÆêîîîÅ æo-—Ëõz½ßïµ'À¥…K¯Ë³ív«‰FéÄ<¿"Ü]Jõ.'ÏóÉdÒ~=¦•Fé¼y~n0×뵆¸„p¡Õy=–繆Ÿ³çù>À%ÌçóÎ+±,Ë4Àø\(϶ۭæ8£ý~ßç2l:<3A>j+€ñ¹\žïFà¼V«•™7«)ÏŸN§ó.<2E>7ëõZ œK¸Bë™ç/—KÍ02My~x½ÏêÛív65ÝH. - p›Íæ ‡%ó<×hcrbž„[ŦH:<3A>ja€³X,µW\MWbYi4€19=Ïl<7F>-¦…N—çyíµÖd2Ùï÷fVܳäù<C3A4><àr²,«½ÖZ­Váݦ)úÛíVÓŒÆEóüÉd¢…N×”Øïv»ðîz½®}w¹\j:€Ñ8Kžn$k+Y,ZàDM×ZÓé´X Ïó¦‡%Ã[`Î’ç/—ËÚJÖëµ8QÓµVe-À <C380>žç7ÕpŠÉdR{¹µßïã2ÛíÖ%À¸5¥ñËårÛj½^¯V«p‡Øôp÷f³Ñ¼'
×Zóù¼²dÓ…Y¸rÓŒ#ДçŸh¹\j[€ÓÍçóÚË­õz]Y²ež†f<18>Käù¡N pºý~ßtÅ•çù) 08çÍó'“I:U €ã:å¾i2e`è.1?±Xì÷{m p¢étZ{¹µÙlj—_¯×µË‡z4&ÀÐ]"Ï7 àtÛí¶é‰È¦Uò<ïÖ®jÓ¤ƒv¹<?•ka€ã,—ËÚK¬ÕjuÄZáuM
0hMyþ|>¿kn$Ã2³Ù¬=Òozyž7]_ív»¡N 0\My~ÿ©õáÆ0,Üôd÷t:ÕȇZ¯×gv2Ô©a†ëô<¿°ÛíÜ9œKçS<C3A7>GujX€á:WžßRÕb±ÐÎýµÌ”8Q¨Yó Ôóüý~_[Õt:ÕÎý­ åùËåRó Ôóü éÎQ;ô7™L.”燚ó<×ÂC$ϸ*ëõúÅ%…ú52À<10>1Ïßívò|-‹Ú ªét:?DX¾¶žÙl¦†èŒy~Ó½g¸<67>ÔÎ}ì÷û¦ Íæ ªZæZ„·45Ààœ+Ïϲ¬é†qµZig€>š®©&“ɵ5MÑ_.—š`pNÌó·Ûíz½žÏç/š™ÐÓyøÑ<E28093><ϵ6À°4åùç2ŸÏ52@Ûíö¼$ò<oªp½^kp€a¹tžor>@OËå²öj:<3A>]çb±¨­s6ip€a¹hž*×Â}äy>™LÎ~MµÙlÌ»‡ËåùËåRóô´^¯›.«öûý)57 ¸ZKäùáž1Ë2m Ðßl6«½²
¯ŸXójµjºfËó\Ë ÅyóüpWnOœBpkò<Ÿ7Øl6'V¾Ûíš*ßn·`(Öëõü«Õêî­,Ë­¢ö §‡‡<07>Wîó,ûòåKí×ìÍë׿ú<C2BF>égŸ|ª)àš½÷λ¿ú<C2BF>é‡ïðæõk­5cuÿÕ«WÚýâ_ýÇ´(ŸgÙÃÃ6<C692>«õáûx f¬Þ{çÝpÖ4¹¿¿<C2BF>y~(ï½ó®9¢pµ¾|ù²x &¹Zcd>ϲй¿ûècãª4ùÝG—#ý"PúÛ×_k¸6ÅAúÛ_ÿæ¯_|¡AÆ$Ž®†ÎýòåK @ª˜ñ›©>\¡?þþñ ýðýÞ¼~­MF#thù ì) €‘ùêÕ«ß}ôq,ŸgÙ¡å³O>­Íó¥úp!á Çì¡3±Ã!_9Hÿò§? ~¯Ä›×¯Ë'äCWOGWîòðð aÆáó,kIãÏU>|ÿƒCSG Éï>ú8>tõßþú7•#4¼êü>»¿}ýu¹_]=ô`zúÕ¹£ñ4y~Œ•L…Ó<E280A6>˜çÿåOn:B¿ÏëÄ<?øãïÿ sÆê)óüß}ô±YúpºóüJhœ¿ùÓŸïïïµóÓ;=ÏÿêÕ«ÎAU<41> 0PýâJä~Déœ/„3*táÿŸgÙ¡¥çÜW¯^ií§ôåË—å.8¢g{vîÿ<07> 08§O½¿¿oIò?ϲ‡‡í gÔ9ˆvÆòÙ'Ÿjð'ó”L…óó_¿øB Èéy~e†¿$.í òü÷Þy7Úá'ö4y~èÜ/_¾Ô¹ƒszžÿÞ;ïVÂ"I>\ÔEóüPù—/_jägqé<?tn8çkg<>:1Ïóúuyõ?þþ÷÷÷Z.ªœç¿÷λáσÊoýaïuª<îth϶ ôè\81Ïÿì“Oc¨øÕ«WÚž@9¶ý<ËZ÷ááAØ{µN<!ßßßë\;1>zï<7A>wÃZùÓŸ4&<<3C>Sòü/_¾,òá¯hÒ+qâ 9ì •Î5Ì
0&§ÄG_½zõÛ_ÿFOì”<ÿÃ÷?(¯k$e€õ¸€ëwJ|ôy½yýZÂ;:Ï¿¿¿/Öúðý¼Wè”rèÐb­°{„ŽÖ˜ãsâtPàé<1D>燅Ã*Ÿ}ò©6¼N§œ<C2A7>ÿò§?0nò|œ£óüßÿà«W¯4àÕ:å„üÞ;ï†Õµ!ÀˆÉóapŽÎóß¼~­õ®ÙÑ'äû·4 À¸ÉóapŽÎó¹rNÈ´ÁàÈóÇÊ â#yþX9!ÐB|ƒ#Ï+'dZˆ<5A>`päùcå„ @ ñ Ž<¬œ<C2AC>h!>Áç<E28098>2-ÄG08òü±rB …øGž?VNÈ´ÁàÈóÇÊ â#yþX9!ÐB|ƒ#Ï+'dZˆ<5A>`päùcå„ @ ñ Ž<¬œ<C2AC>®ÄÝÝÝ·¶Ûíõl•øèP¡ûŠ~ ª5xòü±rBnÙ~¿ß6Ëó¼iÅÍfs÷Öz½•t~Ðn·+–ϲ,ü¿vyþÑBOµôcKõé—Ê,Viê&y>ÏNž?Vò|à–ŽVm`»Ùl¦ÓieÉÕjÕô»Ýn>ŸW¯¤ƒòü£Å½Vm®Þ¿_
áõårYY>ì é(€<Ÿg'Ï+y>pËÒD·=Ï_¯×åì7˜L&ÅŸËå2­·ÛÅf³YX>Ž„?+ѱ<ÿhíã2i®~P¿<¾ óÃë1ÃËÇ?C=•H_žÏ³“ç<E2809C>•<¸eEžß3wÝív1òÝï÷Åå¤w½^——o)ñd2)Gôqšwe´¢éBoöYøÐ~ EñVVŠFãàN¨­¼°<Ÿg'Ï+y>pËŠÜu³ÙôY8Næ¯ÌÇÎó¼˜ì]Éuc>Ÿ%yZ¬*Ž <Êóëõ:´I¹‰Ú»fµZõ©öÐ~‰ùüb±hªª<”#ÏçÙÉóÇJžܬ<Ïûççûý¾iòv°Z­Ò¨¿˜^ ù ›Í&<26>”kóüíÏúja3ŠµÂw<±•ž1>*Òõ>ß½xD¢g~~h¿ÄyûéÈBÜ…ÊQ\<5C>„O,Öê3¨<¬äùÀÍŠ¹kŸ…³,k™ÌŸF¸»Ý®x¥iÒxñî|><3E>¯”óü<ÏÊŴÿBøX MƒãGo…eÊk§¤úƒÈóû<C3B3>ËÑ/E{Îf³<C2B3>,ïE•<45>!ì9ÅB¹Gjóùòþ­¬>¨ò`4ç<E28098>•<¸Yëõºižvj±X”cóT%nÏÿërà˜ç‡UŠ ç©ðzebzܲÖd29:
¾þ<?>:Ñgû¡ýÒ™ÿ§OU”óü8·¿O<C2BF><>ÖK'yþXÉóU$±“ÉdþÖb±¯4åÞEÌ­˜Mgqǘ·©Â˜ÙÆ|>®RTUž<55>¿Ùlâ¬ûJ°Óã"Ìß"ÆÚá£c:Ý4½¼Óõçù±æ? M××Ú/±ò¬!-F…Êq•¢+=Ç\Ò)÷cø7~ñ°zèô8ÐgØ+y>Àà„ÛÀí/<2F>¥ÚpǺMê wµáF8¦ñþ:܇6ÝY×
ŸnœÃ-pyªa¹´„-íMV «Ç<$V¶Íì<>¡i2êYv¶güŽa»ûY9l9ñ@†¢itøihš;§ß§*óºÓé÷é¼îøJí4ìp:Š?aåSSL<53>ƒð<C692>ÒŠ¿¤ÇMí¾þ<?&êÓé4½ö8´_Ònª(ÏÆ?±GZžÂb¤_['”ÉóÇJž08•œ¼ånô ñÙó²CïC%娼ÿ<C2BC>uE¸<45><C2B8>w¬-jÃZᶺ<(вmϘ-_J㜱eÊ)Ç÷áƒÜÝÝ¥ûjüŽ•£,æ3Àø”õŠ1ßò€oåWæ)óü¦O‰ÁuyŠ~<¯†m®~Ýï÷§LÑ¿þ<?\Z”ûq±X”Oò•Ìü)óüC{¤óg·˜ð_~¦jÉóÇJž08ÊókãîpÚ¿†¦)ŽµZF
ÂýiŸì½eúbEŸ¡<EFBFBD>²rBrËFœç׎^”ç‡<C3A7>d^rÜ|Wà:í÷ûÅbÇyËo=ežßtb ¿éfÄójËÏküm=¢M®?ϯm¨òÃåÇž2Ï?´Gjw¼²xUcíäùc%ÏœKäù»Ý®)ÜîœK_8(Ìo¹Ã=4ÌïŒô<C592>Ø0<C398>±FœçÇÉ<C387>Gçù&ðà ¤gþÇl<ÌË?1O™ç·œuÓ8Í“S§äÀOúcݧc{ÙŸ2Ï?´G:÷±pa槇>äùc%ÏœKäù-3Øû$ÛM<C39B>Él6+f/—ŸyoÏáËSéÊâDè¦í,ϻ묭¼m§¤ã6Ö<?ì*és(ÅΰÛíj<C3AD>2y> Ô)y~LMÓ¸eît1\~bŠ?ãÏPí<50>ÔciÐ9ÏóÊ*-gÝ4Žî“÷©¹Épóüø8C¹×í—ؼMóÂë•YG÷Hgžß§fx”ç<E2809D>—<`p.ç7MW.¢Î2ôߤÅbQ¹GÞívéb•H$|Pšü‡ÛÕÊåtƒÓq‡Ú‡BýY•+ ÿ·áµ#1ݽMcÍóÓOO;:ìw%éw—çÃ-H“ÕÎyÝ•U:#ô´Â[Îó[¾ì)¿AG4re•ÎæM+”çóìäùc%Ïœ³çùiî] ·f£Ei˜ßãËQj´f wþìü¬°LSD¿ßïÓ1»é[p;yþ釡PF)ýQlí¯Iü=<3D>ç„xÂiú9+~ËÊ?7}R÷b­øÀc¿Œ7|£Oz#ÈóË× GôKûNÚ¶õHyšAçHØæ³ÿ.3Jòü±’ç ÎÙóüøPy ½ã fg>ÿX—Ž¶Ü`¦cåÁ‚bôùjñ~6*?þè|ûÚùü•§ Ú…ûñmIü¸PIøjóŸ…ÿWª-žQ,°Z­6MŸO õ„Ãò±òPIh™þO´lÛAÝV ûIQIøOø³eú'êEË”¿`gåíûj<C3BB>î9±Ëb¢ê/wel“ðŸâ•ÙlVy<¤ÒéÀÐ¥á|ùÅp^JW©<57>âÓì=ª<>|c%MQsí6ĪZ~²[¶¤Ó óü4œ?¢_j³÷BœcPþˆ£{¤iBŸ-<2D>2yþXÉóçìy~e¢ûr¹\¯×<C397>h¹gL³Ùö,zþKíy~Ëçîv»JUå(5­*|¯Î¦¨ m:ïºÒÅ}ýjµzQ'~ñðŸJÄÕ[¾þ~¿O·¶²z{ú*oª¡ÈˆúäùE/4mÃl6«]«Ož6¯©é
Óé´ç¨Gô¢KÜÚ¦é÷é~噫˜šVÆ銇¹Ây»rŠo…˯Ç3mz>ŒQä<>ç™J=éZå
ËçÕÚ<EFBFBD>ÅXíqÏ<37>c¸•ñCû%^¥ ?¢|ISîÚ¹q­J…í<E280A6>(ÆjýÜÐIž?Vò|€Á9ož¿ÙlÒ4>Ïói6{ô=f;Ô¶RŸ‰Óéýƒ¾Kšç·'Ò¡©Ó¡“J^é‡í¬hÕVf˜§Ã<1F>y~ûÆ·lCgžß¹y ÓDò| "œNk³ÖxLO2ñÔWy+®R9éÅçÅ*§ô¦zÊç™ðVåW ¾[9۔ϫáƒ*_*~V: ÑÓ•çùÅóqéëñ§ƒ#‡öËci(§|E+ÑÞ#ñÝ´GâZá­Ê—*ÿúŸòÀ7Bž?Vò|€Á9ož_‰mãóÝqrZçÓâ<C393>u1i¸«Í²¬6$iƼEdÍÒíé¹bq·~\óV¶¿3rO?«iª|Yÿ0¿%Òo™Tß™uz†ùµÛЙç´y-ƒM<C692>;ª<n\ñ#8ÍÂÉöî­ðŸxŽmT<>§ˆp/ÖŠ¯Ôžâ©#Ô\|PüñMãÜbáðÑň¸mq 3¬Õ”ÇeÂGT¶íE×t-®<Ï/~B[ÅoÄÙJ\¿<þòÇ«ø òÞRÙ¸pñ)a±¸måK¬´Gâ®UÔ¾~±Vù-½6€”<¬äùƒsÆ<?Ü«Vá8-Mk[ÂùJø_™aî:9ÿ}6©%©.niûLHKŸ/蟲¦ÍÛ(¡v<"F1-­T|µ°XšðÇ(<28>¸S¦š&j¦ÛP@ZòütÏ)}*‰SyÊÍØžç§ïÖÆYG Ö¤H [
±¡šòü°mµ­[¯ÿàp ZÎÌá´Ótþ¯×;†ÚšV©}\+œÐÒœ¹ˆCý¡ªÚÍK'{?þ2=®=ɇóðÑaþãÕçùYµü¶\Àôï—BhÛô篶mc<6D><6Œ§Óï †ï<E280A0>~t[#Ï+y>Ààœ1ÏOoùã i|=Êšojsìl¿e“:ç?—ãÓ¦Ûít{úßü¦Ðÿöôs+Ï5Ôå†Íó<Í«ËADÚei|”~J¦)¤QI¡ÓĻҕVJ§>¦ÛYžLØžçW>=I¿`Ӟг›:<3A>²tÿé\Šp)†\ço…ÿô|¾,œLÂùªX+œâ:,B<>a±bù°bÓð_1nß ×jú -çù•Ï
ßèˆÇÜ*ž1>
_omiÞÐq±GÚ¯Žè—(´ òÞRÛ¶¡Úbœ·ügŸ)ÿö•?+8âÉGn™<¬äùƒsÆ<¿2ñ¯2¼’ú†?[ªª<C2AA> Ø$|P¸«mº“­L§ÓôÖûzòü4I¨ÌµKç§-YÞ€J§„Õk1<E280BA>ÒKGj*i!<21>¥_ތʷ¨M?ÒÌ¿¥¡ZöðÚ¾«l^vÈ]ª<ŸJžvâ£'Ó4ç<E28099>2Ààœ+ÏÏó¼=×MgA·Ï
Ûn·iÜÅ7Mœ ]ûŒyËtýr¬}=y~g÷•g­7U7 ÿC¡afà÷œÜž.7£Rye(J·6~ÐAy~¨?<3F>Ǫږ4_QžœÅß¾þúó,+Ê—/_>ïÆÈó{
={-|©+ÜBy>ç"Ï+y>Ààœ+ÏOç<4F>o6òýÓã²ív»\.{û“ɤi~±…Å¢g°_¾óPžŸnXKž:¨O´[8ÿé³ÿ¤#Múú®AÓÖÞPéŠñ °ña¯hùÖOÖMò|àó,qÊï>úøy7FžßÓõ'œò|ngoç8ò|€Á9Wž?›Í:gYW™N¸bÜívëõº3Û¯<Pk»ÝfYÖ™íÇ)èéHDX·çf‡%z*¡²<C2A1>ÍóÓ »ÿ~<>¦×Sý7£§øeÛ*Ïó>ƒ8¡§*#POÙMò|@ž?Dò|n‡<¬äùƒs<?M¼kgYWòüö á-ò</&Û×NÑ?t˳,K7¬Ú§S»{ÖŸÖÜÛäùgÉóßõ|Ä#ôסû¤<8 Éó¹òü±’ç ÎYòü,ËŽdW«Õ)¿ßïÓœö¸14•- ¤±|Ÿiöyž=ð(Ï?_ž_hJû=tÜw“<¸ª<?üÎߊ<C39F>ª<EFBFBD>—<ÿÉýxâå boç8ò|€Á9Kž_;¿½<C2BF>é´¸^¯ËSú;“„°@KP\_o²\.›š"Ü7…É-Ò¤ú êKçùiÓµ RTÆMB[Õn@Ú¡…ô Ž¸•Á #æöÌóˡ†Z,“ɤv·ŒßîɺIž\Užiò|°·s%äùƒszž¿Ûí^œ 2<C2A0>¾²=åIòµZòêÊëÅ¢½ªùêéwìœÅÞMã⃞¸tžŸ~©¦Ñ“4<E2809C>Ï~¾<>K­vP eØ¥²…<C2B2>=~PC…^ØþRº÷†ïR驃¶Ažœ…<ˆ$œÜ{ûXÉóçô<?<3F>»~<7E>Ê\è4ÎZoÒO<C392>1{úÕÚãôÊSáÏwZ"ýôÓ+vºtžÿ˜ÌºošßÚo6>O.¤­7#´­PgZCøÄÊqZ*}«v¸OÜMò|@ž?DNn‡½}¬äùƒS´ö£ìJ&\NÔkµÏ…NÓÑ°@S¤^oÉÌÓ:lj:Cûñm¤¼\.+ ¯V«ö +>.#Øï÷iø_ Òûx<?m¢Ê·®­¡û§<C3BB>!„?+mNίlFúPF%uŸ6iÜÍÚçç·<C3A7>Õná³ÏÏO{=yþI8¹öö±’ç Nšç÷T䱻ݮòúb±hÿÄ49¯ÌÇ® çÓiX1ÎÍŸR‰ ëõ:Ö³ßïk— õ¯V«XUS ¤¹Ó-O+¬Ýø¦¹Ýäùi_Äõ¡Ãb¡_j¿re`"]¦i©¡RIí NhÒbä(T•Žïö†Jû7¼Rl^±…¡ªJ#tîÃgï¦tD£Ø£Êû30nòü!pr;ìíc%Ïœóü4­íL 7M{Ö½ÛíjsøNi [;3¼<33>Ú'jg‰÷Öjf¡ÖäùµÝÑ.<2E>:^;(Ðsÿ‰šbÿ>íÙÞPµV´mOÐMM‡aùQ`ÜäùC$áävØÛÇJž08'æùi<C3B9>Û'¸®¬þ¬,pD¤ß”™é·Ì¥?"Ò?.Ì|ª<ÿ &jj™Îþ
Ö¹=#ýétZyt¢³¡ÚÒ'è¦,ËäùpãäùC$áävØÛÇJž08§äùéÔît†|­4¹ UUÙï÷ý·- H˦N§Ó>õL&“tKRi:}܆µ{²<ÿñí,ýö&
-Óþ]Z"ý"!ï¹íãaKGú4TgÍÅwì|ºäBÝÔ4N$χÛ!Ï" '·ÃÞ>Vò|€ÁY¯×wGÙï÷ͦòbmH
UVlJÑw»Ýjµjš^ϲ¬2[»IøˆårÙ”Z/‹Ðý'Ò‡%ÃG7<47>8´aMÂê•Vêì¾´ýÓJZ¶*ÔÚ¡ÜÚ¡¹Âw ߥOË„eBýqõÉdjtèf”{*lCØ ÂÎptCjû@ew
Úûg隸†¯9/9ôa`¸äùC$áävØÛÇJžÀåìv»íÏš¢Ýž¶%'¦îçÝ0n“<ˆ$œÜ{ûXÉó€èþþþó,¥çbåòåË—Mkýíë¯Ö
o5­Õ´J(a3ݼs•rVöÞ;ïž½þÐ ×SþúÅåø誶í òáûÄoñ—?ýy(ýððàÔÄ¡äùc%Ï¢žAAe±ri™¬^žÓ^)-qSÓ*E°|èæ)Êͦc³åxi:0[Žeå¢=Ø¿üö׿)<29>9´®rÍ¥<.Y¤Ê<C2A4>—/_¾|®aåûûû¦Ušf\?:µåÍë×M«„·šÖjZ¥²m®ð€±’ç+Š<_ž¯(Š¢t^n<>÷º®å²üÀQ¥ô¼æt…ŒÕEóüÏ>ùTž¯(ò|EQEž/Ï8ÝEóüÛ1y¾¢ÈóEQyþA<17>M«Èó1¬<ÿáááÐÍSy~ÿãEž¯(Š¢Èó®Ö°òü#6OQäùý<C3B9>y¾¢(Š"ϸZò|EçËóEQy>Àõ{óúu¸iŠ¥çbåòÙ'Ÿ6­ÞjZëË—/+ o6»»»ívÛ´Êq7”"=PäùŠ¢(Š<ÿQžpõÖëõŸm6 Â-{óúõß¾þúôê©­ÿáá¡i•ûûûÚUÂëgÙ$¥ùêիϳLQŠ2ô1kåŒå½wÞ•çwnk €‹úß~øß&“¢ü×bqhÐÑBgÔ2딉dÀÉóàúÉóàúýßÿú?ÿó¿ÿ<C2BF>¢ü¯ÿüÏß}ôñAåÍë×Ú.m>Ÿ¿øÙÝÝ<C39D>€+$Ï€ë'Ï€ë'ÏžÑ~ÿãrùÝÿ¯(áÿáÍ)y>ð\v»&“ob˜_”ðŠHRò|àYl6yæe6{£} <½õú_µI~,«Õ½V€2y>ðIJìûö0¿(­ ’çOi¹ü®O˜ÊdòMžÿ¤Å  ÏžLÿ0¿(óù· ´Ûí¶Ûí~¿/¿(Ïž@žÿ4½9(Ì/ÊÝÝ?µ5k·Û¥oÕ&öåÓÐ^ž\ÚÑa~Q¶ÛkCèo¿ÿ15¡ìv?h<>JˬV÷óù·E ÿ¿»ûgKɲïtàhEö¾ÝnÓ·jûöwåùÀEív?L§?:Ì%¬žç?iIh±ßÿ¸^ÿk¹ü®r¸ÍçßJõ Yöý‰'¢Í&׌ Ån÷ÃdòÍ)ZQhLH<4C>¯,û>íGYx׈Øf“Ÿ~"ò¸G<>烰Ýþû,a~Q²ì{M
=3üJY.¿»ñv;ñ)¡ò,};!‘ç?¯Í&_,þ1ŸÊrùÝ~ÿ£6<C2A3>Ôzý¯žùØlöf·û!P<>K†Å4,7(üÐÜÝýóÐ ßásÄé¨O }aŸ ?yþ3Z.¿«Ü×O&߸µ‡ŠƒÂü<ÿ)¬þíÌ*ãÂp;V«û³¤Ðóù·7ۆ皜÷<7F>ˆ.'Üçn6»_
/îv;<3B> ”<ÿ¹dÙ÷Mw÷Óéß·Ûk"x¬öj ˱X8ˆ:W •kanǹÂü¢l6ù ¶áy'ç;\BžçYÍf³­&“Éb±X¯×Z yþ³è|sö¸qýÃüÚ@¬OzFíÌ-Øï<o
=<3D>þýñ¼“ócÙí~°‹œÅf³™L&/1<>NÃZš
yþÓ ·í“É7}nðÃbÂFnVÿy°-³[g³7<C2B3>GÙ~ÿ£ÖfôæóoÏžBßÝýÓIé,%ôŽ]àtëõºvþü—¦Óiº˜‰úÀP¼8<C2BC><ÿPyþSÏ0¿|/oäõœÛ>æŽ<>Î#n6{£µ·íöß—H¡ÃÁuSÏ]hr~Q6ÜŽ
pŠív[žrŸeYí¤µh·Û…ef³Y\Ë,}`äùO)Ïêœ-l$<öŽû<À²Ùä<C399>õ¬V÷Úœ»\ÝòtÌÈtNÎï[l_=ô‘à‹Å¢¸Ͳì Ãòq@3×o~šÊc‰òüvÅ?N‰MÂÍþvûo͈ƒ¥˜Ü:ërù]çñåàb¬²ìûCg݇0¬µÛýðØc,àFŽ<46>övè“ƯV÷î.§¸ ],G¬»Z­ŠÕÛ§ôŒ<><¿EŸD±OY,þ‘ç?iOF¬s"ëdòM4öÔçјP§#‹ñ {uØ·ûŒ©˜á—u>,3Ÿ;úf¼»ûg{#ô^ìì g!€£m·Ûâ&t³Ù±ú~¿w Ü&y~“õú_g óã-}¯U«öèìÐ0¿Vé<²n!äÖtÎ  ì÷?¶W<0E>öJÂo܈۰3‡ïêèX.¿³Ó!æùGO°w Ü&y~­ÎÉ<C38E>Ç•ùüÛ#RMžWžÿtw÷ÏÐwE1.Sk:ý{Ëžt£…;«Ð;ÚŸÑèÆ
ÇZŸz:™ õŒxbyg~åû×Ö~~ Å/;Àbž¿^¯<>XÝü|àfÉóSáƼ}^_œ!Ù9ò\•yÆ<79>a6{SéÄðʈs°#l6yûnJs-ÿè<¬SŒFç¼úp¸õ¬ªój¬cagœœ_è<ÅyPà8ÅMèl6;bÝpëzâô~<>çWäùO<C3B9>3ñBY.¿+–¯Í{oyV䘬×ÿj
…âÀcWä~b[õ9$ÃèF༹qg¬ÞÝï_3žwr~¡sœåˆ:X,Å}høOžçýW̲¬Xq2™hFàÖÈóËòü§>á|X¦²b}ßgJÿègEŽIçÔVMTØï¼tÌjè<¦FKrk:‡®}%ü6õ<1E>³OÎ/„–ï©·j·ÛÅ[ÑÉd²\.7MK°ϲl:<3A>ƵŸš¸5òü²åò»>a~íìúýþÇöYÊ'Æ2<™žÃ:fcڧž+ãêœp»ZÝßòî}CÍçßÆ$3ìÃáEûçh¥£³÷γÙÈNe—˜œ_è¼BȲïíƇZ¯×/êÌ©œáGËåR—sÐóƒOIžu†¡L&ß´çðMÞ9Á²i?×`»ýwÏG-ŒÈÚwøõú_ç;Y}Û~lÞÚŽšeßÿöÍ/ÄŽì<ðzôCD*a‡! Å&Æ,¤À;ì—ÆYðîãZ{`½YÖS/Æ »‚Ç ˜fÈ,fm‡d<ctB3a¼ZßØòÎ8šõ”¤-wãÛÕ²:]O«ë¶ºu{®tWw?éxŽÏÔŸïœ[OU}?Š¦ÿÔ=uêü«®ß÷Ûáíßç0G»<47>f•Ã_SCÉ*C_Êòå«·´Ülu}DÑs °,ëÔ2†A™ùA†á`0X]]…¯ð=~2ÛhÛ6üסçí<C3A7>Ïg û*
W%¯^çUBpÀi4¡´ÂóÆŠÛ+úf<C3BA>³ðý¨6»%•i%Æ4$¦pƒ®{KeóHL`iîwç…tïXgæNuÉùŠåS<04> "7ÃáÐqÃ0p“oY¼_k,GA„nA Úo†ëº±'Â0d?ö߈ž7E>ÿqÏNU´ØRÆÊÄÓ‰Ù†3šY:Es©ò¢XL¼Ñg§ÜËáγKiÆ|XzÞîKqÏHÖašë´<C3AB>Dg¤Ï èÁ"åÃF ì@ЧÒä|Žt 
oÓÃá^¨Wƒü²ÒëÂKý<4B>  ˆá0.ý_•-`YSúðÕqœ¬-<2D>ùü ˜ª¸²|IwREÜ=ÙF¢h¾TÎs隺¥H%aéYª=»dÒ—&õ£ÛûZ<>4øëûQÁKHË;£¬:9Ÿ<39>oJ¢Ç:ADKA^ö ¢‡¸®Û<C2AE>G<÷Þð wguunÍ4M~Q%ÿ°, þäû~͵*g/ôÜç+ŠÜÜþVš.‡ç<E280A1>é_èfQ—ùÐ$E9¸=ƒV­¿³òÅÝ4$ gåÊ|
EiK=~XåaÔêpX=Éù iü¥”ÀAQ'ð"¬"7~ãÉßþÜK¯fôg/<2F>ÿ! :Cžïa²{á©øž<>oÛ6ûÆ4M×u‡ïD€KC=Oî¹Ï—¾•3-EóÜ—<C39C>ºøҥ¤âÖá8;Š.Ô4×KO8o5Ð õgƒC±ølêÏÒ”ï(¸ 5Ï£5;>wà°íQ{›±žä|†t£ô) l ˆrñ}õ1ƒÁÞÍK/ñù8ýëO?ÿM8àG¯Ì?øÙWß~'õ€?µQל>}úÌ™3O=õ™«¶C]I]IèÆ“O>Ùê®ìÀÿžç±{IýçATâŽãÄ„ý°ƒb@¡Ï>_jÚ™,j®Ä¼Ab)¤K4]dAÕ§O)' < ·(<o\Ìç½CùÚ µÐån9îEjéÀ¨39Ÿ! ÓÎ; ˆ¥€·ìÁ`ÀŒ}lo;ühFÌ0À;l%V€û|(9ö§µ<C2A7>#¦ë/îÃ<>F‡Y>ŽÉ¬}ï ÛÛÛë<C39B>999¡¡Øj¨+©+ êÊâ ‡Ã.ù|×uSî ø#ëé_?|+<2B>ã8*ç÷ÙçK5»a\)%; g¸j€Ã÷£^5¾Hs,ù±ººGÍöGH9ÎNu—vÝ[ŽŽ©,¥äGj¡K<C2A1> ‡w¥Û7ÚØu&ç7ÕwA]%Š"ö®-bš&ÓõüE;‰a1ó_Äç_Ü=f®þüÖ~¼<ž">ÿÚ<C3BF>GÆææÑýK{÷6'íؽ¹¹ÉtÓññ1 ÈVC]Ù666¨+©+¢c>ŸIï,Ý ÿ„°;õ<¯ñªŠ[U¶"öÖ竸Ü»4áÞýkFjc(“! gx»•ÓóêU#<23>3â‡i®«Ÿì8;´ì4H#9Þx$®<>;\¤!°Šb|5ï­ ‚è*âÛhL×Ã[¶išü7eÁÉðU<Gå…WÄç_»sÂu=üx{úñùk;GpŽwu¿Eéú‡‡‡ÛÛÛ»»»4Ûëʽ=JE£®$¨+óÓ+Ÿ°;…»n¶žð?<3F>¸QÅÏ÷Öç×/R¤šÎ¶GýiÿƱ¬ ©í„s°y55ƒgÈ×<C388>âϦJwTŠ4ð—*ðaé€òÀÞ;ÉÎjuø£½HSå¡g«¸®4Öºà²ôi^Ý2. ŸÑg0ˆr~å1¢Àç߈Þ¾çRÜ“.ñù¢À‡ï®OÀ ±t} h äó<41>ˆg5¨ÜZß|~Í¥i«¥_TjQÊÝ@ Hý…WpðlØò{áÝÛí"M3æw·²²µººËEÖmŸTŠâÒÊS?Òou;ƒ¤‰åpBfMýOsq¢áW¯hkADgµ<o…oàGü•VLÝ—¾ðª€øüEÂÏŸßš )ú“ÙüÜ<C3BC>HL×' ˆ¶@>¿Ä ‰ŠŠ¾Ÿ>·†q¥ë²„Ì6zÈv<C388>«`ž´L‘¯ksé<73>ÇJG*x—Ê¥‡3U6¡´QáöaªÔà íLbyƒÉùŠÓ¶º¸ AD@:KÍÊÀç™l¥¼ƒã>Ÿ |æç/íÝC|þædvq÷XL×' ˆ¶Ð1ŸÏ2LÓ\Í€ÿ³±šMÕ•Œ%ç+¦è÷Óçã&°R¯%5l®{<16>ê©Jº²º5í!¸¿ª4Vf
®¾ÛÕªž7ŽÌe‡eÍm{¤®ô¡g)ŒU:èti@¡O¢f“óÒgJëÖ" ˆÚàÆ^c“õ<ùëâqŠ~‰ï°¸Ïçß»ú(cäæÑ}Äç_Ü=ÞœÌÄt}êk ¢-tÌçóç{*­!ü?cFêuñÿpzèó¥£R¢â“)<29>¯²i2ÇC9ìðý¨žúÀHƒ¾nWwKZm¡}jRʽHGfî8£J¤@ fÕ6þ{t£V=.ÌU·O­DOÎW¬F· 7© öø_µù|Qàßž>€ß >ÿÜ<C3BF>èdþ<64>ÿxíÎ õ5AÑ:æóyz€¶>‰8†aÖ{èóñ ùÒù¤2Ç4×)K¶þ®¯awúWT@†q¥žëG«¬xMv
T}#Åv8¼«É}2-A!<21>ÝÀ_ëi|­¶Ð:$ç3¤bx¦ÓÈ'<48><C382>ïûÈ_uðù€wuŸùùËãG#ç·&ˆÒ?™?<w#b߯íQ_Am¡c>? ÃÕÂTZ½¬ä|†ã8YŸíÏ—ŒrzáÝÞîuÈÏ츈f‡m<E280A1> €ÔÈB+ü3®­j€¾éàE ¢’?_|]
ÙJ<KŒ ´hƒC€EoyµUO,_YÙÒ¹%¥Kz=Éù i˜žRô ’À;,ò®Ê_À³2Ó¸p Å+#õùF‡ÌÏŸßšÀ<C5A1>—öî!>s2»¸{̾?{ý€úš h óùšcÛ¶tw@VbCß|¾&úBV¨'²Ðƒ}<15>Y<EFBFBD>þEÌ Œö6c#þ<0F>éïФÙÚ%î‰í
Q9jsËÐpßÀjìº·à—¾Á¼¨ÓÍV‡tå¯9[šâ®s³ã§þð(¾Ѷ; ˆTLÓdï¡A,ûYþ
œã³I¤>ÿòxÊüü…Ñ!üxóè>âó/íÝÛœÌø<C38C>= ˆv@>¿¦F°,+õã½òùRwQ§ý“æ ïR©T™Â µPVV¶ZšÔ¼©M%xZ¬þ“oÒ*nA%¶“•zHß<48>¤)뢅ú8Îô;ÜHë<¿tgVý= 'u)øþ<C2B8>!­RY<52>9 ˆ.Á-:àºnVZŒ(ŠÇaŸ2M³ÜšdùüÅãœüµ<C3BC>£ÛÓðýÉü!âóÏoMÄ®Ý9¡¾& Zùüz€fxVƒ”T]ß+Ÿ<>+ôš#£h.u;ôú_O;ÃáûQmUÒMè)¢g*¯´V:oyð¼q#a&•¥Oè8X<38>—ªrØöHÿ Mxì‰ÝEýµnºÑ³1ñ0DýÉù üYÓÈ& ý±,Kå¥uñ蟇Ðu]ñíð}¿”j¨øüçnDˆÒO¸<Öú¿”ƒƒƒõõõíííùœžS톺ºÐ<E28099>ýýýÖueß|~žç9Ž³òø`0DQTõuyfB*|"'¹±?>Þ£qwT¿<÷ýHê©ô—Tš#Í®¿ëñ*i¢<E280BA>‡Ã¬6žÝݔٓ†3©Íö¼qEW‡õPejÄZ²¸<C2B2>ƒ}ËÚ(EãWt¨¹»Úk€W¬Îmkê<6B>©gKRŠ>ADà•9öÒšõNšÜoÜeU#‡Ï¿¸{ŒøüG÷oOœßš¬í<1C>ÌêÜë<>9>>¦Ùj¨+©+ êÊâôÇçAKà†Q©!‡`øµÇñ}?öOÎâqƒçy<íÁ4ÍX”¡ŸEsÏÛöøFÏ 4ib#ÕÆU¤Îv7FΠ…g‡™:¨¶#WÐMåÄJÓtõL)×VúIãbz®HR<48>^ÃÜ—Åä&¦ÜFÕ°>”•<E2809D>ß"ùÌ<C3B9>.õ š^mCum¬0>¯)EŸ " x<>…÷YöÒªâóá6™¨V„>s2C|þ¥½{miü7o2Ý4ÍÚRgE¢( l[†™çya¡5DÁÇ>”QQæg‡»2uA`99G§ÔÐ<C394>Àöö6ôãÆƆJW€„̶m>ÎáG|ï’Ê(Uo‡Ó¤?,Õ•úL®>ø|˜#†aœB<C593>˜æ0;àÒ0UÅ<55>IŸ/ž2Ó4aš¿/îóƒ`S4ð£†Y妹®a¯t×€æ ÆÌá#mkÛ£¦f¥©pXÖFývEÚé
4i8LçÙ]]{n JÒlózrŒa­Æ[¯ y†»€E×½¥[w‡w¥<77>5¯¶éîY輡@Ú׎O ˆ¶†!“T¸ŒÍGŸ2ˆøüó[“µíññqÇ pEŽã  e¥kÆR7¡üÔ¡ÈÇ\EÑE÷¼+³XÊ7f<37>ˆçyÒr`̈©¢—êJXMÓDFiâS¥¶mgÝ£ÊÇYªz´…ÖÍÊ>ø|X½¹Ì‡o\×eòÀ`01…^
©ÿÉ >?ëƒ}~™¬MF)È»Úú
iv±VJ?¦l/ÆRy¶¦¹îº·êläd˜)u”6xæEëÓN7Tx{ÂðÓª1a"Hg<>1XÆa…YÊ™Ãx€6g|~L=ªÎÆGL}² ¡&ÒpFSA϶LpÍc ­7ºÅG úwÍ^Þ?øÁJ}þÉÉÉ|þË3Î^?@”¾´>bQYÀ pµTQ,õQE6ƒd9*>Ÿ—<C5B8>
(šR¯õà²EáÖ+V”ŠÏ·,KZ”ëºY>¿þ¶Â#Vbä(iÔsŒÒX­Ô?žÌp¦Ñ®yQ}ðù|<7C>‡I<E280A1>r
Ã<EFBFBD>íêJQñùYwÏç#Y¦ZüýºñthÛé¬ôó9ü¬¦®!yruuO¥ª ¦qJSôµÚ”¡ú®´†Ãáݶ,GM­5¥ß«8Ùz“µiØÝ1ô—äŠÓG‡<¤ùÚî¹#è61—Êúúúk¯½†²··çlll°d˵<C38B>#ÄçÿôŸßQ/*øœ§ÁÉT”bQ¯¿þº(óÇ¥+üõÙgŸ=}ú4bÍ ÉÓO?½š—<Léïï¿ï¥RÜëñÜsÏ<73>¿øE^mÛb ¡Ôƒ9ŠB¬W²¨Ô“ᯱ ™1+* ÏOýmõ©O}ŠWj5 xå£(ò}†™¨ôc%ðQú<C3BA>|$9D<39>XTë•W^‰ÕJ´ˆ q´Ç¦‰XíúõòË/wÛçÃá2?<3F>Mù*Rô“ôùŸ}ƹøýdÇOÞÎ|ççÀñûÖeÄ0<>Å<>ˆÇAÆÖ¸zêùŠµ¸ºÔõ=ÿç?ª¿Vâi*ùºY)»ÕÕŠeíV¡ø L(9®X+N긮|≷Têð©O¿Yb[áµJWRË÷ÚkWë¯U긶R±5×*6Úñ ó<>üÇ<C3BC>Ô*y2E67Õ³Šžÿ"KzëŽßý½·¾ýâ_Û¥õ¼qã°æZ¥Ž«_ûµÿ«ý¬¹V±ãí@2}` ×_«ä¸ÆèÅz¶íÿ_ ˆ¶¢°½¾¾¾½½<C2BD>²þÇÇÇðãµ;'ˆÏÿß?«•Êx<fç,U«>õÆo<ùä“<+8™<ÏÊ<C38F>Ó>ô¡qKÎä†ä•W^ɺÜp8äAÏóÄ?qS
ßdÝ \ÛN¸õ`Ž¢ë•,*õd^_b]+
†Sì|îókn«¯}ík*I¹/¼ð?-k”ž9s&«Vb~òÇ>ö±X­Mº¿¿+j0$cÌã7˜,**J½¨ÍÍMiQìœsçÎuÛçû¾Ï&r”ábgÖÓZù|n÷ù¸è{≷©UìL©åËJ)¯¨Vp¡u-knœÅ}
Ú•o¿¸„Š„3w>Òýÿü™ŸÖ_«Ôq¥(úšõùÒœØWÿþ<07>ûü ˜J§UjØ®ÎUô³Ï¼Ù „‡öYYÙÃ4×CWTúõ¯íÒ½ÐÚ<C390><qãJ1l׬Ïæ™uõ…½AŸ/<2F>ã|ô£ÿD>Ÿ ¢aò¤PÅ<50>(æçç;ßA
a)Žóù£÷—ÉlŽøüW¶"õ¢RáÙ± p**«¨3gÎdYúXQpEžkS<>Ü<EFBFBD>¬­­!µúÊW¾šü,ú|äa ó<>ÇΡ\ª(•ü|^žŸƒeYHQ| q'5?¿ž¶<C2B6>Í
ßøÆ7ð¢ž}öYƒH¥Ï=÷R+Q0Æj•lÒÔämÅ¡i½ª¨¨ñx¬R”J~þ+¯¼ÒmŸÏÆrßJ*Y;¹J§~Ÿ<>Ó\_4íóß~† ´/=ûtðù ó“ªôK¯UÎkRâá8;Ïÿù<C3BF>bÆUÑ®À§>þñ«_ë‰'ÞŠ]¨)ç#MÑOæi×P«Ø¸ Û×Fj•:Úq|æOÞhÜç[ÖÞãÜšÖY«d~ûÅ*îs)7ºîq`
ü…w ágŸy7¿o]þÝß{kY¥Ïùš×<76>¤kQƒOœØ¸:ÿ7?TYŽšõùxl1ù4ojm_<zyÙÁÛ6ù| ˆÜˆ¯½¥Èí–â >çìõƒ,Ÿï]ݧžªÑsª¸ž<ëtnHðBø D|>^žüœz!ø¥çy,hUMî5è9K­Y'óä®> ìB¸óç]œÚq0á÷<àèû>Rf <15>[‰µU¥xÓIÛŸ§7§ÖF5ŒmÖP0ÚkP¦„
¥?auƒ|¾¢ï6ëó¿ðÅ˸êI:ä¦ìJÍ¥º/©ôË­•ç<E280A2>kHËÇ,ÏüÉ0®Tì
ôÝgŸy7<x¾n³ÎGš¢ï8;õ×*6®p}꺷©Ujâ›\b;qê÷ùÒð Î7Þ¼Ys­²ÆÕ²a²")ôŸúô¯½vu©9ÕûÖ·~ª¾X1Ó[çÚ³[ºÅ€]M|¾tÛì ú|<¶©©(CjJSôùnvý÷K¡ úøü £C$EÿöôuVmp?ŸÌ²N%Š¢•÷¯è󹨴m;u,IMiÖ…<ÏãVÎ'«Ï)×çCænÖàˆ'dù|Q®ëò ˆã8QÆÿüâïe>6`ªÜ;T˜ å/;J¡Î©éýêíŸößóxÜ<>â}ÕÑyŸÏVïä¨F&~¹Q9i³çðù_þò—áµ”w<>Ž²>ÂÏažËmÛ£“““ØGøñàAú8põÔóÕkÅ<6B>ßú­©ÞŸþiØH­ MRÏç<7F>
(¦ô˪Õ÷‡{ð×4ùIûúÌ3ëçßÊj«o}k7G
ñK/Ý®´íùRô«®W0*Ô«W[­²z0Šæxmÿê¯nÕ_+4”T>ýëÿ\s­¤ãêoÿö<C3BF>ê|ðtðýBs0¦Š &Ÿ~úz<C3BA>k»tjÃí7þĉ<C384>+XT¥qê¯?ð'TêÓ¼Áµ}¡<>¢¸Ù›A
¼b§šØÜäöù—ÇSÄç_»sB<EFBFBD>UŽãàJVEŸoÛ6;MÔ¤e|>³¢¿å‰âYP3£\Ÿ¿ÒïSKø³|~ª æ<>+}<íŸìùV<|”ÂTâñˆ|íÏ£lbØDz<C382>΢R:ïóy Jú°`ë<,57{ŸŸoÖø~”CHÖƒÎuË"¦ŠMÌÒ/ˆT=5x@k8ÎÜlÍßçwñ(J2¹6+IÎýzÀ}ôní‰WضGMU .<2E>N Ñ|Ó-ë0ÍuÏ—µöªokb³‰/#•"Í͆Y¯áÓÀ—£:¥7©†í)]Þµ<C39E>õA=dYŸíÎÉ¥½{'ó‡·§Ÿ¿¶sDm[ܦ4ÞRŸÏÒ°³ö(šR®nD1Ë ÅŠYÊð{><3E>jážPºÏ<17>Ñö§ŠwþKè) <>ž~ä#_^T|>7áC™*£Ôó<¶×¾&ÛD±ýùlââÚ„; ø`†Fãµ¢¸Un&³ùÍ£û é¼Ïç#“ ¬sxŒªÔˆÏ¼¸a’««{ÍõÑžr§N¥×R·aˆÆô¼ñpxwñXb@ÅŠj?¤<19>-’ùŒ|)ú5 h ʽì5ð®†<C2AE>)­•¶v—³»øü…Éˈr<CB86>G¬K5(}i¤ÁÇ"¬“zúgm+†#]Þ5\E úÉR>s2cºþÂè~ô®îgùü³×ô¿÷ù|><1E>wwwÇažMg †Yj…ŸSPwsCbYÖJ1¾O^KÅ”ÞÔbæ3×G©J9kG@¬+<2B><><EFBFBD>³®ëºß7Œ¿<uêë:PCÇù‡(zï&Þ +
¨øü ²RvcJïLø§æñ á{1R{66r Ø¬®ä猼¨Þb0PÅý#ÉöϺÜ)±â<C2B1>óŒýÔaŒìh)ÒYY"7<>î³GÏÅÝB—ëƒÏç“šÅà|ßç9ŒUœ|ÎÖBmÊçãªÇ0®4ÔASü=º
³Tbå•>œ™ïQ4Ç ‰¢ÃG*Å©îXYÙÒYj¢<E280BA>‡Nšš×R4 /Jc[0<>´ŸâtÎÒæ0ÅRBÐàpˆûk®± ¹—Màf¥ж—µMƒ×Žty×y0AôŠ¥|þµ;'ÜØÃ<C398>F‡HŠþdöè_ “ùÃG÷Ù÷º±½½½¾¾þÔSOinòERefYJ4$80lŸ/5¥ISÄÿšª<C5A1> `%dù|Ö•ÀÉÉIò¯®û}ÍM¾x¬¬|ï¦|#'µ>ëÅ$ü÷7ÝûR÷S}~Ö~ të»T79PlVW*îþP_ñ¤Ø¶<C398>ƒÀã)Ü…&kË/-î@‰M@ žŒèÚجYY.w<>ÙsçüÖ¤H9}ðù !´„G<E2809E>9[.Mù|ék#ïÚ¸Þ±¬ ÍG—¢Ò‡sr¸©áð.®=³Ì´*îð3fʾ4aµŠ*¬sÔ†£aŠ>LêîwÀÃõÛ3if»¶©Å­C*Ò .›ŠGºnk¾(áku#ïYmc JÑ'hKùüÉlÎuýædviïâó¯ÝyäpÎ݈à{ï꾆Jssóõ×_oÌÏrõû|&íc¶GÝ”&MÏg†ord„BW2s˜š Ü"™ÏŽ0Äœd>?æí91ÏŸêóù†ÜVM,vcc#µ+ë÷ùl &CHê<1F>eÚó |hÏÚLiƒdueœ½~@ùùËÞi,ö„/ïUW¦Ÿ¿ÐOžKmd+Þ «PúùÒò¡ë¯0œ­®îåˆ#äÛ>ЊœgÞ2øíÔŸ¢¯aˆA}„ã³Æ÷#}*£sK¶XØÕ7<14>®®¶=Ò¿ u“çZð§¥èAp|߇Rx?µ,+öZ ¿´mÛó¼Š^®—òù÷k“ŸÏ¼
ÿñòxªS“?âðððµ×^#ŸÏá†D´µ"0a(rkšfêXB€îºnÒØÇ|óYÕHíÊíííÝÝÝÔ¿¶Îçö:¿Tw+ú|èYöhv±»c¿Lõùb¿ÃØpg0,µ^‰Å²®ÜÛÛË:§,ŸŸUN†Pq)ŽÅ8T¢0€“Iø0ìùÜasê·œ#€Õ
²º²tb<EFBFBD>æ"EuÌçóÑžu u˜°\ìØdó·æz6èó¥B²æŒDÜFjžÎ'RDéC§@³Ã­‡ëÞZYÙR—]¼døl¹7åûm<E28098>ª“ùp§Q¤ãnV<"V³õ•Zèúã %6f<36>BUjwKŸ\„âšYÅH†KK—ÓV,MZm¸“þw¡DLºs¤EÑg ˆŠ€÷PÑðH3¢KÑ^Öç¯í1mrîF´t}ò`'œßš°õì$GQCR»‰»ÇA©ÏgDQÄM<1C><05>+•:˜Û/â<WV¾Û"™oš/â·S…Ï_$RñiIû©>_<3¦µ“n0&îÔX¾ïóñPÊŠ'¥|ÏH,;ˆï…šºà0· ÉÖKýýåñ”?w
^¢o>_ôù YO‡k—C“:"nŠ  à°¬<C2B0>²Ä8”V<E2809D>*‰¢¹ç<C2B9>ña£U…+E«ýö&ç+N™zê/­,S­ <µeÍT_á̲zAºšµEÛâq(¸ÍÞV&7øÿ$m ôATAEÉl|àS%æs.ëó7'3nN&³9×õ©œÀMwUÓMâA¨‡TšÅ4ÍT£ÅÅc2%8 .Å}>ày^RuÏ <C2A0> %§Î è£ÜÁ¬ æ­<E280B9>ù†ñ—xrþ¢2ŸŸ´÷Ißåó<17>ÓÚ¡„TY-ŽÛÜ>Ÿoëƒ&P¥üŠ±}(Å}/TŒÏÙІôpL…­$F‡ì)Ï£W!ŸßÍú|ß<>4q€Ò\¸Ö)_é•~Æ•ÚÔSÍággÙ½15Zó<1E>ÒÑ$E¿íÉù \çÖ“¢/µ»5ç9÷
ÆêJ?uÓ²HWi¨O[ZO«”x­6 T7<h«Aý$&ó À—Sx'õ<oø~ƒüÞ¶mÑ9—¨ô—õù'ó‡\×_»sriïâóá„ÛÓüGø^Ûî<>¬ú§Úu„0 S͉ºÏçúE6Å}~¬G œ˜Û—V ­óÏõ?¢è]é<>Tä󹾆á”ü1ÖÅHGÀèò}?æö¹†…bWð3¡»“å%ó5P1<50>¦Cr@.5JS[¯Dß ÍÍsûŧO÷—¬äØó®î³GÌ[oïòùõÓ¬Ï_h“<15>kœVØÈ$u*}Û5òïºî-| %]\7¼¨Ô¡Õ“‰Úöä|ÅùâûQ¥<15>Æ7ÛWÜ^¢h.<2E>•µŒH£`p´ˆG£`•Öa"C·¨I)EŸ " Ë6MS=ëØ÷}.¾Í­zM}>pîFÄäÉÚÎÑÍ£ûˆÏ‡´w<C2B4>º¾
DÙ¥¢:y&¶˜·¼XÆçÃP¬ÔçÇîŽÙ²†}«©Èç/ÞŸ<C39E>ŸL×_¨ù| xD]jDQÄï]Ü„¢>JÅr·¿"lgJêvB<1C>Éü|ñ4¾ðo?)´Á<C2B4>|~#4îó=oÜø«÷px·KRE¤¥}TµçT$ g0œl{$Íiì‘êÇF/®%ëÉl/ŽÔ¯šæzu#JƤŠ'„¥Ì©R4µô*­#k"Ò5 +”‚ôŸJÑ'¢‡0oTRà|®ô“Tqrøü»ÇLžœ½~?">Ÿ<>°¶sÄ~<¿5¡®¯.7bŠ> žçÓ§ê>ŸU×u“c)‡]a™Øbi±a¿ì(í0Õù|Ñán?ÙÅ|„ð|û,]ÏC?ȨPôù¢ô}*ü^b÷¨>JáŽø®<C3B8>Üí«RlÇA û A dÿêyôOo/ΟZ\,´D<C2B4>Ïo„Æ}~Íñ×Õò¨q¯ÒöœØJ•¾m<C2BE>4tãP%ß<> [cz¶ÁMÕ!MÑ7ÍõfXÂaRÅZ<C385> ”îqhé.¡–²Ô² ψe—Aé^Œ–¦^㱞æÒõ°u<C2B0><<ÑÆ;"(Ϧö</ÇǹSOìGÈáó7'3nì'³ùù­ ¢ôá„kwNø<4E>'ó‡4ª@ô!Hör&{\ÑçsÏ™•¼<E280A2>îðZ¥F¸¸Ï—F+ú@u>?>„Rר¤xç]“ÞÉõ
YîÔÓþù5 Qúâ<10>•©8J¡pöŠ­´E|>û ´ 2 àº4ȳ·dÓñýbO?dþfèû˺VšNœY¹©¹ñù ™C³¬<C2B3>J[@úú_ƒ¨š*”¾i®·ÂÓÁÔóÆÐR ]i'žUÞ®p˜t5¨(I®ÐÚÝVãûÞ)±õPe`À9®{KºXµÚØhpwÍ®<06>W t¤)úé#¢WðW×ÜoÊ%¾Ãæðù'ó‡ÜÏßž>¸´wñù×îœLfsþã愸UÁ»õfR| ®(á›äþnH<ÏK;PhQbéôE|>ÿ¬ã81¥?r½\J «íTçóB"tê& Tñ.Xiðq©Aö©û| âÆŠ…mÛ΢±‘–:Èaâðñ§Èí{ùÊe&[ZO<1A>ë'¼;`p&ÿÊ.þÄ»Ð'wðtÕ硆zêàóƒ`Ú`~/ž[unsm”«ô]÷ÙE}€¾hÊw)9_eA¨(ÂhÛ£NÚݶÏ&ènÅUfYVð7 gЃ*¿í›ÂO<>o|ƒ@PŠ>A§í>¸vçäüÖäâî1|óè>âó×vŽàœ³×Ø<>ì#DEˆw+CüeVnsì489&Þ‹øü˜§…Y} |ß•Þ7*õù<‡<µÁSÅ»èâLÓ„Xßá^]Zlbæ<¿(ä±`Dª_ÊpB<70>É™RÄsŠS Ú‡54¯yj ­Ïˆ+Cê(bå/¼}àôÃÇ>ÿÝ"—#Ÿß[Ÿ¿<C5B8>½®V—~&¡•&6×>&÷ú“ß7¤<37>[Ñ$êRr>_¤Þµ\».Í¿íLT±<54>Àx<C380>F[²Lã«GRøÓÜuoUwi<¼Ïú6©4ç¡ÒV%Њ0 UW¾ï—˜«œÏçÇ@|þÙëpÂÅÝcöãù­ €J<E282AC>á³<>IŸ% }¾iš©þ¤ˆÏ_¤yZ˲báƒÞR©Ï‡^àIæÛg‰wX<58>#M8_Êç/;^1X<31>R²ò±ká° <52>+â9¡@¾a!õ¢©<C2A2>¶>#­¬Æ‰þÁ<C3BE>Þ`ÇÊÊõ"—ëªÏ_)@ õÔÄçK³|+J?ƒ·`üºËBwœ<77>ee &7ö©….]v/9Ÿ!ì†q¥ÄIÚqAkœ¥¡¶=‚©!ͩJõꞪ †ªv·wCADx6æ²öFÔA¥¤qâó/Œ¥?™ÍoOœ½~à]Ýßœh´ëàà`}}}{{{>ïÚ–íÁ``Û¶˜® ýëº.>ÞàS«(žç!% ‡CvZî<5A>'0¼á㢨1 nDºêpW¦ÎYF“Ù/S$¹Âð.Nþ ~ã8Ž(«aøÁoTƒX¬zWÂÉ0¤ÅÑWd£ ýðk!àu^ªý³&T[Œ^Á<>0¹:±*eVòÀ ²=ÇöW>ÿöKEêÜUŸ¯y=5ñù ™Ôª"O^jíªÛÐ ¾‰MmW˜®‡…F†šŽV'ˆöèY|<—î|ðÄãVg•K#_¶=*åBž7®çBDñù…oæ*å¨Tw×ÞPÅ…ÃpÖHV@=àwG>Ÿ ˆ^!戦ʱTƒ7´eeÍ•âó/<2F>§ˆÏ¿vçDÏ^ØØØXÌññ1<C3B1>ÉVC]I]It¯+ù^¶ÔÝ"¿ä pÿ½÷žÏ?|ËûŸEêL>¿-Täóñ¸<52>à6²í¯ÿD‘¦û~TÖµ¤á°Vï戢¹TÞoL•«Ð*¤A0•n¦(xtc¾ñ ž¼õ_´Æ 2zÞ˜¦'A½BLdeɇ®ë²ÔP2mÛ¶˜Ì ß—’œ¿(Éçßž>@|þÚΑž]póæM¦f3úOµÝPWv†íímèÇ<C3A8><C387> êJêJÑ®gn^¸¶jþfÈ|þïœú_ó%·¼!Wì@<17>Ï_(š×):ððm$¦ø¨.1g<1E>´:9Ÿ Ž´1 ¦RKwT±/‰(ô¸4jûèÌCGš*_Åþ¯F6Ôܪ©÷Ø<C3B7>=AKEmÛ§Ç4Í ˜²)ÅçÞÕý,ŸÒ¶Ž<><C5BD>IvêJêJ¢{]麮eY™ÉùÅÎËÎ{Éùÿj¾T°ÂäóÛBE>!³[%&õe½Çpx—¢uàIªe)ân'çs¤æZ;wá*ÁÒt-<2D>e9Ûu©»ñ¹Ïúr/‡GߪØß×°hÄþu<C3BE>«ŽA´ß÷Å×RÃ0à½53M1eùü £C$Eÿöôõ5AQ.ƒÏÿÊç¿â|³`iäóÛBu>_*¸Êrì•j:h<E2809A>(šã±*øk<16>Úw>9Ÿ!M3.i,]…|?¢ñ¬-ƒÁ¾4(¬rÀd<C380>ÇMñ)©aûà«P¹Á |6ué<75>íæycÛÁßPÈ<50> " CÏóÇ<>WTÃ0bÙøðKx]õ}¿ŠK—åó/<2F>§ˆÏ‡¿R/AåbÿÇè=Ÿÿó_ ¾[°4òù2 àF kÄ_Vçóµ$õù~„ Ú½N´Ïã#¼à<êIr>cuu¿Ù|û†pÛ ¬„45'™,½¬Æïvf5Þ8%®Ò¸[÷Â%A”åóoO >ÿÂè<C382>šš (Ãøerþïœúá÷ý(
•Ö1Ÿ·³ú˜S÷±»¨ÔçK5WÁsiö2¥ÅÀ4׫ÛêbÛ#<Ö·Æô¼ñ²«<C2B2>´ÌnÞÎ]iYêf‡ã씵ÑLs\÷Vé<56>°¢ÐAQeù|À»ºŸåóáOÔÔAD¢(bIÚžç…a(þéÔ©ŸŸ:µøð'ÞýwŸ¿÷ôóGýãéú/ÿïý§,AÇ|~7¨ßç/döluu¯Háø?½ûÝ@šBŸ{œKSa ÎÐ66¦a\Y*Î(Íù‡eŠÆp<15>ß·HqmkEm B¤DŸatˆ¤èßž> Ö& b0†qJÀu]þ×uúò^ŽÄgÍêöÿð¿½Ey®E>_Cñù¸ì*’ýÓr½Ah<y·ðÑžOsáêfPͻטRakÛ#Å¢¤³«mØm²vÁÀè³O®BÅcøž¾îm" ô¡DŸy<E|>ü•Z PÇ÷ýSi0¥˜ÌçÇÿøVž2ù| iÄçGѼ
 XÖFßR‰Þ"õƦ¹¾¬7îar>_”ð`E3 hÛ#¼ÏÓèm#A0uœ˜V0T˜Æ§¸ .Û™o‡v+r <d@[] ˆê(îó'³ùÍ£ûðÍíéÄç_RkAêX•êóÿõ¿ýhE/¾:Ëzâ|åïò<qÈçkH#>!ˆµ¬<C2B5>ezÞ ùŠ%mqÝ[åê÷~&ç3¤f<>ÀïáãÒ\eZ…ˆî! „Á˜Ï½nH7ÎІ; ¢:
úüÉlî]ÝÿêÛï\Ü=†Ï^?Ȳ+pµ6A¡H©2ÿ /á™rîFô«GYOœÕäyâ<79>Ï×<C38F>¦|~Lñ—ôe3úà¥^j†Ã»ÔãD—<44>f•Ã_Õ}Wo“ó9R!ŸLöýHªi":Œ4‡m<E280A1>r”,<2C>W„¥ö' ª£ Ï¿<žŠº~mçIÑ¿=}À>5™Íù÷ 2ŸÏÇãñññ1 ƒ¶ÓÛ®Œ¢h8AЙ;
Ãpmmmk ûnÙuÝ•ÇÀ7ðŠ* ; VßÃ÷ýê®E³2 tnRæhå?ðgÊ—Ö<0E>'NŽ+Ï×<C38F>¦|þB¦Îgg©Òl{„¿ø/[ A´iV¹úÈ—zé'ç3¤ .äƒ`꺷¤1ÄR¬&AhŽÊΔe£<65>Ò• 8‡Ÿ ‚¨Ž‚>ÿöô<C3B6>¨ë¯Ý9AìÊ¥½{ì#bJƒloo¯?æää¤íýÈåÆp8Ì}²hHÇQ¹®iš5H•^ueŽ~ ü7\HªÌ謓ù²@«Ô ÿH¾Å„ñ£ýJ8}úô/~ñ‹ÔàfùUØ톡2ìÕ‰¢Z@Û"e‰ ã” (Ú*«ÂâÌÎA* Åg%ôlòöÿèÏ^@ž2üøëËyÔ(ù|mW¹F|¾ôm]]ú~„eW:¯"‰ÞbYÅsÂ¥©þ=‰ˆ­®îá<C3AE>išëp,¥ñsì• ˆ«‡Ê¤€'µb<C2B5>*2&µ<AQ)}>Àä<—ÇÓÉlŽ–ó[8ÿÒÞ=1¥¿A677™nê@^wé>ß0 i9Aˆž­AŸß¥®TÇ÷ý¤o/Ýç*ùÿ¢z-âó766>ùÉOB!®ë&ÿE\Ȳ,ø†ý& CøQ1è Ülɱm×Aä”2©!3ŸÏÃ
©ÐèÊ"³’ ï$_Z{[Åç¿~9ÌqQòùÕ1Ì õ¦|þâQÌz÷‡*^Å$PÑééÿ–µ!-Dê±ûã¢óéúÒó“ ¢EÁTÅÀÃiÒ¢Td>M( ¢Šûü £CæOàøñìõıÀ 7<>î)ý Þûáááöööîînú±tŸø¾<C3B8>—㺮&>¿K]©3Û±äüE5>?U­ÄÔkŸ]ÉRôSãìB±É2öUR <52>X`Âó<î¡Y˜ZäF=YøÙ$±HA²aù„ÂSKˆ)}<7D>‡èÁÁÌʽ½½¥Ú߶mÇq`xÃ7I™ÿOþ¶ŠÌ‡ãÆFžÕ€|~uœ*FS>_ªáõÎÁ­¾ëÞ YYÙ¢BtÛåi…ál8¼ëûÌ2JÎçHã#9Ó\§-BD·Qñðµ<E28093>OE™/-‡  ŠSÜçÇòí×Çróèþâý)ýÔ¥P…ÏO͉ÉÉ}~ogn2/½
Ÿ/Í~‡¡RÏ LÃ*z*#‡‡HØ-gèy2æ¥68 CÑTÃ<54>ËNd±±hNgÖ±Øä|ô<>?¯"óÿûÚF¾
<EFBFBD>ϯŽú|xWysG¬¾JN`òŠ‰Þƒ\:‰<o óȶG++[˦ ÷m9ÎN¹>ß÷#¥M8` Êú¸¢Ì‡ÕŒëAD ÷ù±|ûkwNÍriïÞBHé?¿5¡.(…r}>ó<>†a …A žL>¿NÂ0dmîy^ìOåú|Þ¹xö;Óàüäâ>Ÿ<>._Í®EQÁò¨„eYxilG@ª<>W´Á<ëAʼn\|ÝÖÞé¬ R¥îç^zUÅçÿõ•wòÕ<C3B2>|~u¬‰>WýèQ÷fLHÆ>nYø§VW÷ôê*¨jØ+=«¼‡ÉùŒ(šã–ÊÌ'™O<xð w*}(g=—Õe~P¾"AQ¥x!nQ.<2E>§“ÙÑ,LàÎÿdþ<64>z¡8åú|®+}ßÏ*ÄuÝØɈT `ø˜˜ü$òÁÍsR;—ëóyçBwgƒ$v2ri¨ðð=ðº1£o €Ò˜ÌGª§±ÉòŠ6˜·pVÖ1Þ>bmÎe<14>tÔ<ª Èíýa|àô¯«È|8®Žþ%_Èç·…:}¾J}LŽÁ[?û¬ç<C2AC>¥'So=¡DM;\<16>þûŠŠ4ô…ãì´ÎäÍçsšM¥ó½ï}ïàà€¢¬+ŠÓ<C5A0>d>AQ'¥øüó[fQÖvŽàdz×Ór2(:ÿÍ íG+<2B>r}~Çq²
aÂͲ,nÀR%îè8†aÀ™mqŒ÷N¹>N<>zu1¸€\Ú󼤤…3³F,œ<> i¸Tí Àe~†©ù½1x|
ó"<xaÛ¶øûz|>r!ß÷EÕÉ€WÙéÐì¨f½‰$çøŸQôù{?#Ÿßqêôù<C3B4>/·•#åÕóÆRi0Þ¥Þ$úƒbëRLÏÞ¶gŽ¥ Ûñ˜¸zõêÑÑM%¢*azÑÌÃ7*!’ùADÍ”âó/íÝcåìõGýµ<C3BD>´0<C2B4>Ï<EFBFBD>? )×çÃ÷,íÙ0ŒÔ àÉÉY>Ÿ ÏTLÓ¤\ý|ð†M5´¥û|îÕ³²Ö™†eZ;µ´(Š² -¢ãx
zR°û¾Ï.
’Ž"$Þ$ÂkˆìIQAÑóËÅZUq"óÐIìBÉðY,z¢ÿ¨fõL­ÿÓÏ“=5V°<7F><bþâÍÉ] òùm¡fŸ_06ëpœêJ¢oXÖF¹ó¨ÏA±0œ©oy€÷¼qµ;¹<>|>Q
*±E˜20_HæAÚRŠÏ¿ytŸ»øqs2CdËÅÝc8¾Š!¢ ¥û|®×Rõ&OfÃ0Õ—Âï™q…¯pòð=àž¤mYu\X¨…5~ò¯¥û|îÕSÓàaxˆÁ…ÔÒøh<C3B8>ßÃil$À7¢|Nfl¨ÄJ¬4(J1¤èó˲¸*åˆ o"óé)–ÀûÚ<>Úø%\Ž§¾ã{ä>Æç^zUÅçÿýÛ¹«A>¿-ÔìóäûÛÅAä`8¼KÉù%²ºº'Ý+亷Â<C2B7>vCÄûpœ†d>A¡-¥ø|àÜ<C3A0>è«o¿s~kߟÌ"²… |ÑùOfM¿ÒÞòo:+Z?q·‡YwÀå†ã8«2¸.C|>ONfG/Þ­LȧúRn,“ZRÌÖ.˜ ­ÔîƸÎÔP¥=XÓem<65>àÝ}$ ܨ#>ñžk…“—ã%@·.Ò|>H©+ ÷Ò©Á¹àIìlcHê˜Ìîz¹Ï­àHcjƒñ,Öh©sñùð'îç=Ïã¿gÝJ íÆ?ükãðý>l£GÖþâ3ð¼øÒÚÁ<><47>X(Èç·ƒú}þãáq^íËò<C38B>ƒÁ>õ#ÑOT4%ç«cÛ£TÁíLŽ JÙ.D2Ÿ hŠ²|> jy¦÷³v&ÿñæÑÿgßÜ£âªÎþŸ?»Þµº^úÇûG»Ö»Þù½ï]ËÚMâ-È<>Üu !$$“û<E2809C> ¹z‰bÔÞMÆK<C386>¶VÆKÒX'*jm©£F£fLˆ¤Da A,r ad~ÏœÍl7ç²çÀœ3ÃÀ÷³ž•3‡3ûìËs2Ÿýœ+©ì3%ÃcÒ&jý†!Ê ëH|~$fSõÞ˜Ë7æ }©æTx!q²ê*#Ô<>t y—ðÎ7[°¢<C2B0>´ŽÜçÓ@k¼:‡Ybš*ìWýÙâêt¾¹#ÉNÜZÓ+ô‰•F˜iêAùüÄӠŧ«Ðwf$ÞÆœ×ëåÝÅvÄ«_d-åð]!êñ© =Þ….Ïd¿äæRrì˾6,àóÓ…”øüØ$±Á꣨ŒfB¡+%¯Ø³NII3“Ô±nwm   Oˆ‹¢„ÏEXnR…<52>>_äxÓ%‰r9ÙÝÅ®hìdåúÝá¾”]<>N2Ÿâ¨qý°×Nkªè¹ …Bx>?ɦÅ<C2A6>ŒŒtòùr<C3B9>È{+t³lôù4Ðý6Õëãû24UØ+Ÿïr¹Ø„±ßGà³H2ÏÍ4õðôùfM²¾<C2B2>õ;q»bxŸà`»ò«>9gQ<67>äæò豄j5áóÓ…úüØTIÈê‡B=D0š))iZ,­;·»–þ<00>8Á`v¤)ùü‹]½åRVÛ>®½µµµá£§ÓÌç6¶L\nø|¾Êxð_¹ÏçžÍãñˆ‡¹\.zNÂ~5ô¥|/€I­2¬F¶q(«ªªêêêÂá°þÝô’ùˬ™ÂâÃAÝw&pa.÷ùX= ½x·¯¼JÜðllÂðêë@  ˜WP×ì4Ì®e¸Õ絓š!ÖØkZeÑç»Ýnýæˆ(ÃéZƒƒÝ@IæªÔw>ë ÉUS¿Èž·³SrsÙ±ÿr"m†ÏORîócf(V¿¤¤ #€DéÓ²¢ðz/Ð1ô_Zh°÷‡ðû[ ó¤#ù|ÂwºÅL¹Ð[ÃáÚ«‰OßaõùVJsÍÖø|Âív3 Ë_ ƒ|〽bæK Kmé#œpû4U*<2A><><EFBFBD>úwÓ«>_èlÙ<C399>ëó­¬h³ƒõ>Ÿqìhbhž0<ý ;RÄårº}q(‡ Ù³upyNŸ¨—]A³a1,Ú`ÞŸÔ3b˜3;'<27>GÜ)àçO•Û—¯J±ÙlzÐ|з_äÁ<12>¯Ð»»¼Uâó7nUi3|~º0L|~lÚ Âê»\UŠÆ‰Þ|{|¾æ’’&ú—Öú<00>|<žzÈ|i‡s>¿¬¶]b]:®¤üÚªªªš+6¥“Ï¿‡|>/³ú?×ëõ²W¸”Ô?Ó[lGÀPìÛhõÙP==\~:ù|j­dŸÏ<C5B8>7Mö
M öŠ_h±ÙG+ŠBçä…úá,^K]]<1D>cuu5 å˜AÂ/p°—®ˆo
6 æ Ù3+îñx$OFØŽ8”q;“²Ÿcf(óL¹ñÉm¥èˆò”ïX"m†ÏO†•Ï<E280A2>»\Uq Œ%0ÜÈ̬†Ì<00>^8çóÏ|Ý-/<15><>Ãáò;;;£®ébeäLIµÓ‡|¾¢(ܲW˜ÍÌÌäÇH|>?I  wEÃD®<44>5ÃýCi](µnøGÜÑK•Ï<E280A2>Äü3¯`çÏ_ˆŠ8îGƒAŸÏG«qû|@Êdú|>9E».<2E>og Ùçeâ>ŸA+Ëï÷S¯jܾ¸r<C2B8>&ËW¥¾WhˆÛíV^vO(èÜV¦¯oU^ž<>HáóÓ…aèóô_bõÝîZŒ0ÜP”pFƧ<C386>ùÒç|~[OX"^JÏ)è|qÈç¬À>###¢ÊXv€ÏçãÄõù"Š¢ˆõâÅV žO•Ïçͬ )Á,«ø‡ƒJ&tQáêKLJàó%×(ŸŸüê,~ðD3‡‡‰Ï …Btul¼¬oX$ÃÇ7DgëYôTáÙc_ TDNxi|~º0l}>ÃÐêgfV+Jc CÁ.È|púº]¢ îðz½Ù*ÌM<C38C>ZœóùDé9Eâ^ºÃ}˜ÏváœÏ÷ûý\rû*ÖÕúR¶Héo @îܬÙðÞÖˆ¶û|>j4 xuºfˆõgãÛìY ^篟º|î%âë,ú|~uVßØÒ¬…È`|>ßÕûpÈ>Ÿš!¿3ÚÒ™ÎÁg”!*ÔUJɱï¬}Z¿-ë >˜S°8ÿÿþÇ5äøàĉ$4¾õ»ÝµÙÙçé_`˜C7k‰Ì÷xêÑE<00>†5<E280A0>*cHÎãDdZ÷§fµ¢±S¢_Î|Ý<>ùlÎù|EQØ<1E>Ðfffj~I²#YU¿!ðùC#îVˆs>?SÐ4¸\ÂkŠêõgãY|¦ÃÊg‰o™ý­¬??Â/Šæ­dŸ—.™«xúÉ×ón¡Ïû0Ÿoq£gxú|±ÜZË'ÿ;î°ä†Rx ½rï5ÎP"Í€ÏOÒÂç ½ðxê!óÀ!¬ø|+ßÇáó5ýé„Y­è—òúÌg»pÎç‰GC¹jè ¹54±ôbâžvÔÂÂl¯ÄQŸÏŽµA¯ŽõgãžÙåriäDuã­ˆDž¢²î±ycX{ Ÿ.¡³‰Çè¯(î݇®…¯¹1ñ†v—-<2D>éâß?og©ä†2v~säõÌ[ŸŸ.ÀçÀ ôJßë½€n€Ä<E282AC>Ïw¨?ª”–èßi<~nŽú|^KÌ…B⻆¾TttZ:{d†~àŸb¨CA\¸˜Õ „f8œðùïª7Þ†gëÞ½^/~Š~æD†ù<îSVT]z0äMbM½]¢B­åeùþ1ƒAó¨K$±¸N©Ï<03>ëgŸÏÇUÿð|"FÜà0“ùDÑJÉ eåüÒÈ'Þ[ŸŸ.ÀçÀ!*+ÿ]RÒÄ"êA‡€-Àç;ÔŸyž²Úv‰<76>¹ØÕ)m Žú|EQ$ÒÌ—jv4˜éPÞ±fäÎù|BtÚfÕéš³Ñaâ_éñx<ú¶ñ½Ãw­3(ŸÏ>—/‰‡7½Öe¾×ëMp!ëqjö0ÜA£&‰{(¾óÝÿœºp)ýð½ü·äV²»¼u磕ý½!Á{
|~ºPýÙgœ81ähooG@Ò€Ïw¨?íòùÝá¾ÃçÛ~qê_Ç.ѯ'›»$Çëõf«Xäfó×%¢wÈt³·hqéÕhFF†Çã1¬-VàþÓívëßåÃa¨-Ì£0œNü-3µ™R<E284A2>^ÛfffîJD„m@ <20>HwIæ§úPþ½(?Ov<hòÓ̼ú ²Y¿ñv±Ä<C2B1>úx>#ÙøûÞþ»äØt§XûÄѱóó%·t÷I¤1ðù€íÀç;ÔŸvùü†Ž+\­Ð¯»z<C2BB>s/ ]¨Œ<C2A8>š|[àeØÃÓÐJ…B|2ÈÏJú].WjL36§.õ-ïça¾w¦ß}àL(XÏožÜJJŽ}É~(«M¨î>°ø|‡úÓ.ŸßÖ接¦­‡^9x¶UâaºÃ}tÌ™¯»égß醎+I»öp8ÜÒÒÒÙÙ‰e•îÐP677<37>ž¡ …BlÙú|¾9”ï¾û.»ÀAÕƒ´[•¢?×ÃþÚ'ŽZù'›»i3|>`;ðùõ§]>?"üŠÆ¨É)¯ï<C2AF>¨æüŸoc¿ÒÁI»öººº*•îîn¬¬´f¥×ëåë å-·ÜboRÃdUúý~š´4²ìé þ¤‰žï|÷?ùmBîóÅhë 'Òføütáþ}÷rTöú|¾Cýi£:ã¿ôœB¿Ö´õHô ø<15><>ì׃g[“ví555L7¡D?Ý…C©(JFFÆÈ«`¯®®~óÍ7œGÆPjV%Ÿ´ìÑþ˜‰!cçç[ôù¼>?ñÛGÊ}>uõ ÝŽyG™!ù/Ðh `qþÿý<C3BF>kÈñÁ‰<00>4àóêO}þ™¯»¹ié÷QHT 30 Wø+»z“sííííuuu<75><75><EFBFBD>XVéÎèÊ@ 0òJôi(,X@×åõz1±ÓšÖÖVZ•MMMü~»!‚Á ø«ž…ûaw„¢#•»ËOY)ÎgO„%Bj}>õ -ç1րχÏ€t>ß¡þ´Ñç‹¿¦­‡^)=§H$L[O˜Žá¿žlîÂ<À
,<2C><>¤}V³<56>¡(
Æw$!ç³Û<C2B3>¼½äØìŽp×s/[)Îç·DH¡Ïû>?.ðù<00>FÀç;ÔŸ6úüˆ ðËë;è×ãM—$B† ü²Úvöëáóm˜çXAQÊ`Á`pÄ\Q(¢+¢1¸# ±Ÿ†Øï÷KdõUÙ³ù ¢ìØ3}~â<>L¡Ï÷z½ìs].u–€ÑçÓÏù|ƒŠ .  iÀç;ÔŸöúüŠÆN&Xžm¥_/võJ„LYm;s²¹¿ÒîÃTƒ¦8Ÿß Y¸ïþ;ȇ§J߯”Ü>v—‡ÄûH¤Ðç»\.&óñdŠDŸÿ<C5B8>χ€á |¾Cýi¯Ï¯iëá¾¥­'L¯øN·Hœ @‡ñ_éÏ1Õ`d ƒc¤ì.?Åîw=sÚŠÌçÏy%H
}>ûP¿ß?
§G(òx<™™™Ôô¿¸<E28098>'Àç@ŸïPÚëó»Ã}\³4t\¡WÊë;$Z† üƒg[Ù¯t0¦:Œ<42>¦8ßãñHd>Ão ÷Énwªã;Ålã8ARîóGáHü~?Ÿø|Iˆþ¹Äþ•°Äöl;|¾C>Ÿ(«m5Ë™¯»%Z¦¢±“Ž¡Ù¯϶bªÀÀívÅùŠ¢èý­ˆßïg÷]‡ë ´Kno~úÕÅ®ÞãM—ìz¤+…>ŸÕ<02>Q57B¡ïp<C3AF>ÇS©âõzãþa>ÿÅ^ ¿B ,>8ñ<38>Ck}@ #/ðí04D]o ðùùüîp_CÇ^3I?H´ ø5m=üLõQ-F¶Ýæ÷ûEA‡€Ä¡‰T#nÑïÈ# ú|>ZSôoJ.Ÿ
ÛH¼xFFFÿ_žð¸Ç$w<>c-Á`»í)(U>Ÿ’ž7âaRÊÃIÐçŽ@ ò=èÐGß"ÄÈ‹Ñö}
`ðùõg4Bé9E"g.võòcè_LõAáõz³UÁà<C381>æ¯>k†Äãñð?ñûýCn¿¢(™™™­×¦<02>€fñÒ˜²á°âÇ̦¡äÃÊl\hÂð?¬šsP(DÍàÏa‰óŠ•Ç]f¸Ýn‰»Î ú[ævÜŠn.K9¾¤WÔpŸO=¯¨È‹óé–ÔŸžr]•Ý#¹eøÊöM¿ú|‚åÀá°|Ÿ ƒÝÀ…ÏG àóŸH#àóêÏ$øüãM—$ræds;Œ‰}0(˜Ù³8ŸÍæ¯.Wü;u(2qC€‰GŸÏǬ5,33“ @ ®Ô9ÌWãÈ…¤•mv°&ÍZ©ëÍyÊkŒ­Ü&hÊÎ.qÈ1ô®ÖïPôA No6|Ôó†çaõÞt™løè_·Û<C2B7>[^ à[ôƒ¼[ú'Û…€½gá¾É-cìüË••—ímjj}>ßÖdÛ£•RFÀÃ&üBW=Ø¿…ÏG àóŸ£dúü9sø|[’¯½µµµººº®®.§û8Úî󉸥þ>ŸÏ.ŸÏÄ£ø
+ëµXó?’†Ò:L<>jV®>?nQ7¯ÁN<™ÐPVUU%2”š¢tjLI ·Û-‡gffêM¸uŸ¯Ÿ´Aî86` ßpéÑ[ú]9öxBÒ¬f(5;€²þ<áq<C3A1> ì.o•Ü2¾ó]꼑ãóÙƒ!ò‡ìʷÄA%+ 6úüŽýÑ<C3BD>fŒ¿zÆøçŒÿIÎøŸª™3þš™ã¯<C3A3>9~ìÌñã¢1nü¬h\§Æõ³ÆÝ0{Ü<>³ÇޤƄÙc'RÌ;iÎØÉs®¥Èšsmöœk§Ì<C2A7>ÆÔ¹×PL{ÍtŠyј¡FN42gª1k~4fÏÏœ£ÆÜhü”bÞÍ?<3F>Õ¸E 7Å-?¡¸U<C2B8>±ÈÃ<1D>…Ñø1E±Èb1<62>[£‘¯‹%ѸÚ,
î<>qËÀ¸™Ç<E284A2> æˆÆÜ<C386>1g`̳ÆÌ<C386>30f1Ý ò£ñ“hLSÆ”<C386>=0²„˜¬Iúc1DÞM?e±hB,T#W (&RdÞªÆsO>æÐ2ÏɺvF,¦ŒiÙј,Š)ј˜¨ÆŠ©ã(nŠÅ<C5A0>±¸A<C2B8>ëYLw],ÆGc¼ã(¦<>kcqM,2cñS5~ÇâêéÑBñ#5®šq ö+{ëêœh†añ!Õ°l<13>™ÑœÃÒε±ä3VHAãfõg!<]KJ7Ì{c,nÏQ,MMRÓOVY±”•=·?k©‰ëÛÜÕŸ¾bLŸÇ4©Œe³Ù&9MŸÖÌ2Û­²ÌfœÓX*Ò—Qš²š…ÔD4Ø\do:Òd¤¸IÉƼd˜<64>$©IŸ<49>Ì”>G¦©Üþ4õm¦¢pÇâXÜL1©?æÇb^\37s(&÷ÇìXÌŠÅÌXäPdQ\+É]†ég0yÓç1ÃT¦Ïf† í:]BëÏi&iMÙâæ·«&fÂçÀp#™>Ÿð<C5B8>nø™îp_2¯½ºººJ¥³³3ÝÇÑ ŸoX~,ÂJI÷KÌêÍëÖÏ9†Ò"\<5C>jÑ Ÿ·zVSt<53>H2Ip(ŸÝnÃfñêô“\¾”E¡‰*®ÍaüäfS7 Š HÐÊòÔ_©ÙÕ%íé ýPj¶ZLó‰2¾ÿCÙþoÑ%óªÛÛœBŸ?¨<>$ø|}þ5[æM{sÏÌ¿ì™ó×Ýó+vßZ±sáßv.~kgAåŽÂ··{Ž¯9V¼þïÆw¼[ßÝæ}·hû{E»ßÛzÛû[ï<±åî6ßóÁæû>Üüó7ýêäÆß|´ñÀGúxÃ#Ÿl8øÉúÇO­{âÔÚ'ƒkŸútí3Ÿ®=tzÍÓ«Ÿ;½ú…3«ÊªV=»ê•³+_=»òõ³ž?æùKõŠŠs+Þ:·¢òÜòwÎ-?þ÷Â÷j
OÔ,ûðü²<C3BC>Î/ûøü²Sç—~úùÒÓŸ/­ú¢àìÕµKÎÕ.©©]r¾vÉuKjëòëBùõ¡ü†úÅê7Ö/þ²>¯©>ïŸõyÍ ÑøWC^Ë?Q|ý<>Š…mþ[<5B>Ž ¹<>r/5F£«1·[<5B>Ë_F£çËÜ+ÑXÐÛÔa5¾Q£/·j"bi¼5ráÖ>Š,èkXÐW¯FhA_ݾZ5¾XÐ÷ù¾ó¹}5¹}Ïí;§Fuî7Ÿå~sV<73>ªÜoNÇâÓÜo¹ßœÊ þ87üQ,N.  Æ‰…½ï/ì}O<>wö_ØûŽÇõ¾½¨·R<C2B7>·õþmQo…]Ôû—E½o.ºòfÞ•?ç]y#ïÊëj¼w¥<ïÊ«Ñèy9¯çh,y=/åõ”åõ¼˜×óBÞåçcñÜâËGÔøãâˇ_>¤Æ³‹/?³øòÓj<•ÙŸ¹4ÝOæwÿ!¿û 5~Ÿßý»üîÇ—Dã±%]<5D>Æâ·KºYÒõð®‡t=¸¤Ë·äK.=Ðüû<C3BC>öýÊþ‚ÖK[,ý—oéW¾e;eÿô-kò-k|pÙ…—ýã¡Âú‡
CÖ>\øÅÃË?xùù‡—·|ph™}ríK¥kËJ×¾PºîùÒuò¯;â_ÿGÿúCO­ö© Ï<½áé§7øŸÞPúô†?<½á‰g6üþ™<C3BE><E284A2>?»ñ±g7<´é·‡6=rhÓÇ6?xx³ïðæ‡7?ðÇÍ¿ùãæ_ÙüË#[~qdËÏ<C38B>l¹ï¹­ûžÛzÏŸŠJþTt×óE{Ÿ/ºãù¢ÛŸ/ºí…m{^ضëÅm;_ܶýEoq™×[æ-*+ÞZV¼ù¥âM/o|©xC xÝÑâµG·¯>º}ÕÑí+<2B>îXñòŽå/ï(|eçÒWv¼²sÉ«;¿º3ïÕ<C3AF>^Ý™[¾kAù.÷k»nym÷ͯïžÿúï™óúžY¯ï™ùÆžœ7öLÿóžiÞ3åÍÛXPb™þæžœ¿DÓˬ¿F3̼Šh¹¹b—»b¥šf¼·¢_¹cI厥•;Un_þööoo_ùvñªcÅ«<C385>¯}‡RPñ5 m>¾mËñmEïnÛönQñ{Ñt´ã½¢<C2BD>ïíyoëž÷·ÞþþÖ;NlÙ{bË]'6³ìt/%¨6ßÿá&ÊQ¿8MS¿þhãmØÿÑJV¾<56>7<Lùêã ¿ýdý£Ÿ¬ìÔ:ÊZ¿<5A>%®ÒàZpíÓŸ®}öÓ5”¾Ç2ØógV±$öRÕª@4•­¤TV~våkg=¯FÙlÅÕ+„„¶âmžÓþ^ø~MájZ;©f¶Sç—?g™­@ŸÙ>W3[ˆËlߦµ¯(­©9­õ(›µ«ÙŒ¥².5ƒQîb)«ObYÈZ"êã‰È,iÒÑÉÜð‡æé¨?#©éh°éµþŒMJ¯y‰'%5/]æyéO&yé<79><C3A9>—žÎ<C5BE>—šòYjú6;ýv`ve§ýÆ JÙ¿ôk£%¤©eõj¦ªfªå_¨iŠâï<C3A2>¬8§Æg¿]qö·+ª]qZ<71>ࣞS<C5BE>z>yÔóÑAŠ•>¶òƒÇVžxlÕ{<7B>GãÝÇW½£ÆÛ¿[Uù»UoýnuÅï£ñ—'V¿ùÄš??±æu5^ûÃÚWÕxùɵ”¸OFWYéºþÜUÍ]ÑôõÔ€ôõ”š¾¢ì™o3X4‰Úô¨<C3B4>Ä:ÔŸÄöÿ±?<3F>ýú¥²þ<ö³#[îWSÙ½ÑT¶•RÙݱlv§šÐn{¾ˆ²Ùn]BÛf”ÓÖGÓÚv1­y^îÏl˄̯f6Š…±ävëkÑüvókÑä6/ßf«ù<C2AB>bÒC«àó`¸dŸ_^ß!Q45m=ɼö††¦zzú¹N`¯Ïg¢^_Ü+Â}2·úCöKŠ¢PK4…ÊLõX¬ÏIC9¨×v{}>\C1Ρ©"œH2©««£q¬®®ÂPŠ2V>sè]3!oq)ñÃ4åîq}>ƒ?ÛàL`Ý®ïsj¿fÔh‰%³>_3”VŠóy*»§¯¿$¹YL(èº'wS¤5hoS^Ÿo¹qx"yŒÅbö€Ï‡Ï‡Ï‡Ï‡Ï‡Ï‡Ï‡Ï‡Ï‡Ï€QK}~M[<5B>DÑ”×w$ùò;;;G†×çsÙ ÍNÂ<4E>á?ØX/J ËPÑHþÑ0”ûÇÌZÛëóÅQ6; MÍÁ &“!%ŸÀq-‰µâ¿mq)y×Å]4½ã®2+ð½ yƒC¡3ÿVR„-„Ãaq(­ç³¸³*‹Ž(’›Å÷Øüùÿ‹ô(ö¶9…>TŸŸŸŸŸŸŸŸŸŸ`È$Ùçw‡û$ŠÆwº#24ìõù¼VâEy ?7`z<>©(Šßï§ÓruIÇ»ÝnI#飙÷£?IÐsŽ`¨Yé÷;ìõùt¯½7; MÍ´1ühMY^ÃÏ£²²eS©"Ÿ|[Áâ6?^óŠÅ¥·ëâú|³쪡ã 7&Ĩ1ìl©*ê¶RœÏ·HˆïýàkÉ<6B>bwy«ë¿>ŒTØÏ…>?ú4D `ø½Îg©<oa>ÐÙø ¥…ÊÓ>|>|>|>|>|>|>|>|>|>|>`dC_ékc‰
}?¥/’èN}>qø|DÔ\ìêÅ  {}~DÐõ†g…¿™Ï§uÇT°!n·[#]éWf†322,jÞÑ ÷·Ô‡úwm÷ù¢®7<‰(üÍ>šŸD ·™NäX¹"Þf3­mxùŒ!,%®"5{^ úüÁ®Ûß!ôïR;™É§nIá½ÏJq>ï<>1c~0vþçÛļ<C384><C2BC>ÞYû"ç|¶·sú|6“iÖi&îC$îRZoá¿ðùðùðùðùðùðùðùðùðùðù€4…Õ1z½^ú2hXvÈtÃê3ïóO6wIDÍñ¦K”!`»ÏçºÒ°ZR|×ÐçÓÚäK/33³$† ìxW®1aòãÂ=ÏÈbÙîóy»áÇiÞ5<Ÿ-4èl&Ð|†Ä}ÃÊñ©• r´²”èöÁç5·>Ÿoʈ~°«FßÃâ}<7D>ÎÆþÐív§ö~g¥8_<Æã).<ð‰ä6qUvO ø¦HkÐö¦ŽBŸÏ&‰f^‰3œ¦"Ÿ<>~loÃçÃçÃçÃçÃçÃçÃçÃçÃçÃçF ¼ìÐLžV—‰E¡ëÙ$ßç·õ„%¢¦ôœüNèS”ÞÊÊá}æ"…ûZ•ñ`µ÷rŸ/Vàë?N¬Þ7ôù\0ê%0­;¾rù¤:º$»Ã} W†P;ã^ /Æ6Î|8¨KãÎ>LŸX<>¯AS½ox66ÜúàˆP¶mø¬ÇJŽÒOª¡!_J<5F>@€.™–~Ù¢Ïç.öê`W<>~ÐE+ˆÆp§;ÉX)Î<17>¡y"¹G”kÉø<C389>†ÈQG¾J$ÍçÓ Òœ·/i¤Jƒ•­[+îñáàSïÜÙ8£àóáóáóáóáóáóáóáóáóáó£
½ÐȱºL¢ôQ œ|ŸO<Û*Ñ5m=ádö@8T22ZÇŒþAí ¸×:Ÿ(í5KTý†>_s* |¯<>ý 3Evé)=»z}§[$Snøµ“Z+¿^Âmø®($­#÷ùi¯o —Òú³Në—cvZ³c×°Ö—’¡Øä]G7)Ã=:@|jLô¨ƒZ5†—/®VºÁÉ÷’ƒ•â|ºSkÿwÜ„ïÿðjúµ¦­G²F
´çו}üNÜ•2æóùÿO¸0l·kpõ÷6ú-<öÿ.Ã'Dìmø|ø|ø|ø|ø|ø|ø|ø|ø|ø|Àˆ‡1Šf^£VDáOßI¹3aEq¶#N_ãó/võ>ßVVÛÎ\}Ec§Dלùº;™=<3D>.2ŸÅ¿M†É ŸÏš¦XóºÜçZzEQ˜Ûd~X¿¢í]¡¥ç”´<E2809D>ù,žm•_ŽÜ7:áóyi®¦n\ÿºÄçe: q/y¸ù|ºïè éy×YA£Fµjä—χ&îXÛˆ_Eó¢•â|êÆy;ïgóÿd}sy}‡Ôçeq¥ <0C>äû|þTª|>k‰8p|kF“½nãü<C3A3>χχχχχχχχχÏŒ÷!z¹AÇð\.—¾Ÿ]E‰~r|þáómÌÀT4vÒ¯òò˲Úö¤]~8L#™ÏÂðB¸ ¢Q^,÷ùš:|Ž¦nßÐçV“þ<hòX?ƒYSm)ÚO#™ÏBRxÌ=­ÙåÃAw&p×*÷ù]>C_·¯?›˜±éÏý~ÿRnJ|¾ÙRr»Ýâ=H³:¬û|½<>Ôª1k6û+³A7|¬ÀÆ[‰x]mqG#:W<>}Á&ÿñ¦Kò§i¶>þñðù4
4hEðµC¯” »hbÔ¶0iÈØô¦>>>>ß:ðùðùðùðùðùðùÀ ï¼ü붙—q<>áJÓ!¹‘.$ÇçózËÒs
{E¢k|§[Ø1¬ŒÿàÙÖîpŸC û&J/™¯è C^Ùkñ`<60>Ï<EFBFBD>èÔ}ÄHòú|EQØߊÅÌt~:fPÒÒÎçK&|\6(Efv°ÞçëÕ}ÄHòžMLÚ\ì{<C·oh5%;¼…ܱ'¸Ekq)‰î]ì1£š™XºC62U3¨ `;¢·w»ÝúVIŠó©7®ÊžÍ'ÿÉæ.ÉÒ¸û•O~xJܶ—¤ùüá¿d6Ùø:Òï71ó¯y¨Ä<C384>†Ï‡Ï‡Ï‡Ï‡Ï‡Ï‡Ï‡Ï‡Ï‡ÏŒlÄâI³c¸zÊ0Ÿ„Ïç{žÑ@r|¾X<C2BE>ßÖ¦WÊjÛ%Ò†Ž<E280A0>öds—­
‡Ã---_]}ùüK<>õëÂ^ŸÏ— ׉úW }~D•“ôŠXÉ,ZJzËÆGcØPvvû=¶1”.!>%U>Ÿ [_L<5F>é_‰˜ÒÓyÌÔ.½.ÎøجÊ}BïˆBÞúyøÓ †O¦èu¨†¼jRèó©I| ú}Ãâ|·Û]xà^r/_­÷=úWþsCÇÛ¯eú|q&;núQfÓÒÆø|ø|ø|ø|ø|ø|ø|ø|ø|ø|À(Á°$R/q 5$òEr$ŸßîãæÌ×Ýô
ý+6¬ðòðù6+†sÈÔÕÕUUU}öþûJA<4A>1ÌM~ËÕenòùúj|}ž™Ïçús½§¥SÙ¥ôÙPÝÝ݆oºtðlë07ù¾Ó-4óåO£¤ÊçGtÕø†ûò<C3BB>¦#}>¥eQÿjž“š4iÒÐ|>o<>ϲÜã'ç¡õ¥Ä¯7AŸ?äU“BŸ/Ú`~Õ\ÿÊ‹óéÈüÂåâÖ­|<7C>î|ºV󗽤ÐçƒAútÉl ËífÛFl¶Ó»6îÃÂçÃçÃçÃçÃçÃçÃçÃçÃçÃçF¼"TRx,<2C>\ìŒÂ2<=Éñù<11>œoë K¤ÍÁ³­tÌÉæ.þŠMª©©aج®;<3B>pÈçG
|½Þ<C2BD>Xðù"<22>@ÀãñpÑ缇ñC)'…>_#ð5zŸaý£™Ûç{¯<¥¿ôÒK¥*o¼ñFe ®²+upÿÉíº¸Ù$<24>W<EFBFBD>kŽ·¾” {Ï.Ÿ?ØU“*ŸÏ»]Ó|¶È‹ó#÷vÅ'¹ôQt¤~ÿ‰²ŸËë;]_Éÿ<C389>A+Ó†­'˜EE±wvÁçÃçÃçÃçÃçÃçÃçÃçÃçÃçFV¾ý‰ßǃÁ älðù$ú|.çy]eé9E¢nÚz»zù¯ WloR{{{]]]ccãGç|¾Ïçã«IüY¿âD¿Ä\«Ù´ýé˜4”q[kç|>ßN¥i þ¬ox¶P(Ä&ƒYY¯f6²¡ljjŸÖn¼yµ¿•U ñ¢Ö—_âƒ`‰øüDV ß±±|:.4¸¼Ïé¾·"Þ… ˼ù<C2BC> ôã`EÍYÉMaÿß.hžó²<C3B3>´ðùìÈðh!|>|>|>|>|>|>|>|>|>|>`4`åÛ×)q¿<71>ÃçGèóõr¾¢±S¢nN6wÑ1϶²_<C2B2>7]Âü—àœÏkòÅZ}ýªM³|Jéä̺ 7¨†ï:çó#BM¾¦V_2¬\z9v³ÏÂl᧢.oæòV‰byPK‰þŠõ†æÒñù‰¬šäßΨø&ø[âë†ðm ñA­3åù¥ïWJn
÷má?w‡ûœ¸¨4ªÏ‡Ï‡Ï‡Ï‡Ï‡Ï‡Ï‡Ï‡Ï‡Ï‡Ï‡Ï¤V¾ýq#ÿ†È-%|~ÒÌ*—ó<15><><EFBFBD>†_eµítLy}Géæ9ó_s>?ÓGÜ^z½^ÃU)š(·Û-iÿÍ©À ÆZãÒ5}ë„Ï矋}Í õgã•üfíá—#),·xE¢aÎÈÈ0[ ➯Og­,%z<E280B9>F¿'âó‡¼jøí,™Ž—·Vó„ß+1Cœ6ü¹-Šæ²«%w„ÝåMOžúJ¼;8Á0÷ù4ÃùûÜèä4vÔ ùŽ¡½-™·~¿ŸÞÕÏy}þU3®»eÞø­ó®ß:÷†­so*š3±hΤms²¶ÍÎöΞâ<C5BE>=Ý;k†wVŽw֬♳gÎÝž3_<33>[väܺ#gÁŽœ…;)fäíš±x׌%»¦ìž¾t÷ôe»§bÏ4Ïž©«ÔX½gêÚÛ¦¬»mÊúÛ¦l¸}ÊÆÛ§lº={óÙ[îÈÞzGÖ6Š;³¼wfß™µýά{³vîÍÚµ7k÷Þ¬=wM¦¸í®É·ß5ùŽ»&Ýy÷¤½wOºëîIwGc"EÉÝïQc_ÉÄ{K&ÞW2ñþ ?cqÏ„Ÿ«ñ{nú¥¿Ú<17>_«ñhÜøŽßÆþXˆ…/ˆ¼/Å<>{c±O<C2B1>{nŒF‰wRÜ¥Æ^5îŒÅjÜ®Æmjì»ÕØ<>7EcÇM>ŠíjÇÂ+ĶX©±U<C2B1>-Ñ8°yBlRc£b±^<5E>uj¬<6A>Æ~Š5j¬¦˜<18>UB¬TÃj,W£P<C2A3>e±XÚP¨±$ùj,ž<14>¼X,ŠÆoÔøuÞ¤_åMúeÞdŠ_äMþùâÉ?Åý³îËϺ7?kŸ÷äg•,ɺ[<5B>·^ô;´Ì7.ŸF±aù´õ+¢±nÅ´µ+¦¯Y1}µ'«ÔX©†gåô+g,_9£P<C2A3>e«f,í<>œU9KVåä¯ÊY¬FÞªœE«r®î<C2AE>ÜÕ9 (Öäܺ&ǽ&ç53o¦X;s¾óÔ˜»vÖœu³f¯5K<35>™ëf嬧˜M1cýìéfOÛ0{ªS6ÌÎÞ0;kã“7Ι¤ÆÄ<C386>s&lœ{Óƹ7nœ{æþ¸>ó®Û4oüæyã6ϫƵ[æ]³%úïX5Æm<C386>¦—ëb&Eso,Š¦Š ”p¶EÎd5çDÃÛŸy¦ª1Í;‹¥ …rŠgÎ,žÉrÑœh:Šf¤y±¤DqóŽhjrDzÓ<C393>9¹j¢XD±«?SåïšÎËWjÊšN)by⚶rÏÔ•BúZË`ýIì¶hS#[HeÙEwd© Í{gˆ9Í0­‰™MLn,³í˜ÙÄ´&æ4Íx*ÛK\ÑLeœ…,'¢½<ËEšt´Ý(y¦#žÔ¤t`ËÀŒ¤IJ&%!/í<1F>—&šæ¥•ó’&5jSSüì´x@vÒ$¨_Å”>Gݟߟ¦î<C2A6>¥)1SQÜ¥ÆÞ¬;Õ¸£ ëvŠ¥Ù·-ÍÞÝjìZš½séŠK§lW£xÙo,¶©QT8•bkáÔ-jl.œº‰bùT¸ús×rž» ÒË`!ƒ±$¶l@›Á’˜><3E>-ZmœÊx6»eí·ÙL“ÐxN©Ëi<­M¥5}fËl<¹EóÛ&ãüF™?><00> ô}Sþ][<@þ½8èÝÂ($™>_/ç}§[$§;Üwæën§ 2GŽú|<7C> ÓT>ú|þbFF½ÎÍ3ý@¿r_dh¤<68>Å5+VDë{Þ ŸÏå¼™ 7<›¸Ç*¶™~æoy<I;­_µ<>Ï.ÞéZ*cÐÏ|[ÊìCy“èo³<6F>Ï ï¢D|þ<>W ¿<> áC‡†8¨£ø^ ý ö¿!b¡{Kï[o˜»¦Ir;øÍ¡jÍÓ[N<>wïCÙ/Cn‰~àÄhÖÑ@Ó1öÎ"¶¦ 7vÅ]3ýÚ·Ñç#ˆ‡|:”åз1òbø_ O¸K1ôô ×L³hðx<V<Òˆ'™>¿¦­‡ ö
7ü†AÇ·õ„Å_1ÿÍpÔç³hª#&>_\bÉñQ£®RÍ$˜s>?"d`C±lx6<78>c7,Ø–çGãóÙÇq (ÁìÙ¾
âbø@">È«†?7¡Ùksîíé_qìâ¶_Óíü¡­«²{ŠŽ(ÛÁËÇÿÅ÷é¾àÐu%Ùçk6ȬcoŸ?,ÛÝØÚ7ÜFtö°»ûÀç#ðù<02>€Ï¤5\~ŸåßCåUdâwöQ.“éó»Ã}LÈпì±ü^åõ¡€³¢±óß G}>Á©Þ‚šù|6» E®ËåJš0±¦ß[‰8ïó¹ú3ÌÀfÍ
q Í$¥t¹Ì<C2B9> Òç3|>Ÿ¦<C5B8>žãv»%Ë$®Ï§)Mg ‡a³ôùC[5lyÎç…BÔ<42>b'ˆ7V³®ÓtÚÅ®ÞÃÁOŸ=üè÷~ð<>ä^PrìËP¨<50>>Þt©¡ãŠs•dŸ¸Afe ‰æ§oðúÚbàë°hÚ'ó>Uàóø|<02>@ÀçÒ±T˜Õnñ·ÄÊ@IÕ½X,jïÃãéH2}>ÑÖ>ÙÜÅ«+»Ã}‡sðl+SÑØÉ~=|¾ ó?íP¥²²²$†ÏçKZ ñ†º1Éõض@­õûý|2<02>¸&ßÞOÔøç±jx<6A>wÒD«YãªiãÝóŠì{rï™PÐ%¹Ü´19W|ŸÏa'Íöœa°ÿ-¸Ýî$·Ð Ÿÿ¾{é  /8´~Ñ·1òbø [ÄgÃÙ÷Pú®§)hÔ—_*Š<44>âüHÒ}¾^~o»z:® >Êf,ãI6.Á(<28>ÝÔô¥ï)i†ã[Lg(rxŒë¿B…Ú%79+{s£Ð糇;4<>~H|~òÿ«à„Ï<00>|Øsßfè·ÖòÃF!)÷ùÇ›.I4ÎÉ殈±«ƒ€få¦ÜâÔÂwv|)Uš<55>@`L<Œ18SR¹7û;ß•=¨Ur¬e̘Ëɹ<C389>ú|ö ‰¾ÁiØÅjÒ|>'0Tôf^0d¾¦gRåó/võJLÎáóm# q¹\))èÃÀi&¤° ¡PHó|œÓYzÔå™ì;ÿ²ä.°p_‡ËÕœœkI¡ÏOm±âóYý›äÂçÀH"
ù|>úv™­âõzÍjÛDŸŸ™™©y´|4“rŸOøN·HdNw¸Ï¡Ïmmm­®®®«« ‡Ã˜ iÍèGX‰> eUUxq~òºEè*—ù.—MÑ`0èñxèNÝ?c[ƒÊÿ¡h—ÜÆοì]ûa2×Ô¨òùÌÒûý~ñE}ðÉ–ü Dø|<18>ЗtúJßXC¡zCd8øüòú‰Ì©iëqès««««T:;;1ÒšQ;”<1E>g„•ècUZ‡eïÔ>köÿÙ7ûà6ª{ïëOÊ þhfîTÓç<C393>Îô™¹£ç<C2A3>ç<EFBFBD>Â-5}á5¡KH€„„n)ÜR¨!ô¦´æ¥o<C2A5>JHÀ"“@J LE0o /Â/ØØoLŒ¯C­ŒËŠ…õü¼':9ìJÇ+k­]IßÏ|ÇcÉ«ÝÕžõ9»Ÿý<C5B8>p8ì<C3AC>gŸ}-L£ {Ge6<11>\:é”iIÿO¡¢«O¯Ì×ñÏ<E2809A>ÇãÔ² RÁ Sÿõt]$>saX<61>ohÚ½
ø| >¿óHZ"sZŽÏÓv™9Ìd29PÍÔmSêºNÿÂj é¬<C3A9><C2AC>jÇžžüWÎ
µ;µ¾³3Dû]ŒÅ‹³¦æglÃYúw2þå†1ÿÉ}¹Ý<C2B9>Ê#Wþ<57>ù#<23>Yqð)^ `JŸOô<10>í{n8× ´ Út±'ðù€ˆ|~:+«ÏlêNÌߦS©´am€¦DSÑu]UÕH$"YÀï÷Ë<C3B7>s0eËsSMŸbÏ t}ÒçË-¹S6?ëôE“¡³ïͽ®Ì·vÑçÓ1¡ÃeÇäÓbt0¹{/Ÿx<Î2p{O—Š¢ð?Ñ/ŽçG£Qö4<C3B6>|> âŸO4÷ê¥321…€Ê ºåbJßN%9w³´kay,ö™Ï÷^ã¾QIçÒ)ÓÑÕgæFb•ùâ.ú|>+ŠÂ\=;¢·WUÕï÷MÓœÝ:µ”üimÔq™ÏˆÌ·ÏÿäËáøKJâx:l¤ÓœO)]_O·ýÓ<C3BD>„ôé=žO(S3é3ÒŸÏ'F>Mö:6“FŒhcý<07> R¾ìûÌÈ¡/û†Œ|>Þ7<þ1åÆ?ÿøpj&_¤>þWªw4Õ{„r´7q´W?Ú›<Ú36ÑóåDÏøDOj¢çhú£‰ôGéôG“é<E2809C>Ž¥»§&»³“Ý_MvOgºs™®šJöð|um5v ê$“ÅÒ=“´½LHst¶¤º§g͸4_Î1IJ£Ï„4GldT¯(ÿbù¨p¾°—ÃÒŒHó?ö2,Íç³eÈFÍ–ÏÇ‚{%ÀÜ {ÛFGqü¾¸ºðˆÏo>*Q:ûOàÌ
`*W ÉR>pHà<03>€°¡Éï5<.éùoÚ®ûOÌíôWì»»èó™½b«ÏÏíó7^G"ëc:¨¹­šÝ©CMçfDß®àÖG eú|ñã< Þ?O=Ž-·K€¹aG#”„ƒ“Ö«úxºëóG&¦$V§¥?‰3æx<ÎÝ;s¹V+ÛCQ¾¼X†m¶{v·Kzþ³O„ξ7÷v¨b_ßEŸo<C5B8> ÁŽUq³§-Õ·ƒ§AÌÀq<C380>Ï¡3DòÀhVàó>A<04>ÏTðùót<Ýõù„Ú1*;éì4N~˜?"Ȭ2ß$ü øECN£L_2ÓÒŸlJ±¿Ê»ýo~gê·Ûö?ÛÙ921U™#àºÏ/HØè‡MK²÷C!gs°‰Šâs„J~ß9gø|<04>ÏGAàóU„Éç7”<37>uw}ÏÊûü‘‰©æ^<5E>Â\MëÁq‰ØéKfpòÀ<‡Mös“ù&)ØôAMÓ¸À?Ö÷ÅaIŸÓö…k>g¿ÓèP™ƒà¢ÏgV<tÑh”=U1-ÉFm§†lW.èD*s»ðùŸ<> ‚À窓ϧ[àP(4¯ÏëäxVÞçï:0&ºšÎ#i‰Û©˜Ï€ºB×uêÿÅ<C3BF>•Æ…q9/Aü¬ªªâûƒãÇx—>21µëãAIŸ¿~ÃÃMÿü€ýÎëùç}>kõëjší‰©xžµSCv0dS**ùeùqöÏÿ÷+ÎùÞƒ×Ô@δæ¯39ËFþCÈ÷<C388>çjÊÙùü€òЉ4äseãÕ?4ò£<C3B2>!ùÉÆйWQÎÛ¸ê|¦U4­º°iÕEMW-Ü4“E®ºxÓJŠòðL.yxåâGV^úÈÊ¥F.Û¼âòÍ+–ÍäÊ囯\±ùÊ•[®¼jËòУ˯~tù5<C3B9>.ûÙcË~þز뚗]ß¼ìÍWÜÐ|Å<>ÍWü*ry8rù-<2D>_¶æñËnÛºô×Û®Û¶ôömKŸXrÇKî~òÒ?<¹øÏ-ïyêû¶_¢nWØ®<´CiÚñÓGž¹øÑg.Žì\´mçÂgnßµpçs=½pOôÖèßs~ÛÞóc{Ïko=÷­ÖŸ¼S[êß6Oÿì5v ê+ÏÙ+dO>»ó‰Zò\>»fòö³Bv²œ{"Ïäót>;òÙ~î[¦<e¤…å¼™<iä !ÛŽçMž­ù<žO$ŸæóÍyÌÈ£B¶ä³ÙGòyØÈ&!MF6ÊCFþz"o<hä¢Ù<>Ï}–üå‚Yoä^!÷ùóñ´óü)Ÿ?
ùƒ‘ß[r÷L^g¹ËÈ<C38B>Bî`¹ðx…üÎÈo…Ünä7¬c¹h&ÿmä×íc¹ÍµBn5²FÈ-3yMÌÍFVçFJËæ ðù€ò¡Û@vûibn¸èóÛ†RÌÕ¨£ô2<C3B4><32>¸<E28093>¦î[¦¥?IËwI£í |D™O#©É3t]/8òš0<C5A1>#Üç³"s±ÏOO$$>åé{n¨üü,}>;VŠ¢ˆoÒU BûFW8¼±ÔÒ%vAØ,¢2—Oš¦ÑOŒXž&K:èóÿÏ/6¼ôk/çœòò×nó#!?¶ä'/ϹFÎrþ+ÇsÁ+·]øÊZ(mk¶­]4“[)·ÝúÓ¶[#—´­YüêšK<C5A1>,yuÍÒ¬¹ìk.ÿÇš+bkÅnY»åÊØ-+b7¯ŒÝ|Õk7¯zíæ«_[};Õÿ¹oõµ¯Ïäº×Ã׿¾¡<C2BE>ò«ßøÕ¯Þ¸7ÝüæMkÞ¼éÖ7o¼í­×½õËÛßþåoß¹¡ñ<C2A1>îz熻ÿyÃÿù‹{öÿ×½ïþ×}ï^¯¾{ýƒï]¿ñýëþàç›?¸ö±øµ<C3B8>þì©Žÿ|ºóšg»®ÙÝ}ÍóÝW¿ðQ襞U¯ö®Úׯ|§Å{ý+>üäÊîO—|`Ù<><C399>eƒÚ埼ì‹Áˇ–ŽZ2ùù¥_ /Î _RSß1_ÿó5v ê$Ÿ2rh&Ó,Ÿ-žÉ ƒB´|Œò©OŒô³\:“>#éÒ“ÏG—~EéÒe¤ÓH‡<48><0F>Ä<EFBFBD>|0“,ËûFÞËç]!û<>üsÉLÞ9©·<C2A9>¼eäM!oi7òº<C3B2>}KgòšØ×óiòŠ<E28098>¼4“c/]6“¿yÑÈ ç…ì½,CÙcd·<64>¨çŒìò¬<C2AC>3™¤<#äi#;.ŸÉv!Oi1ò¤<C3B2>'Œl3²UÌ<>i>ôcF5²EÈf#<23>y˜eÙñl2Ò´l²QÈCFþjäA!¹ßˆ:“£<ŒÜgä/È\òZø"ø|€SÐ-!ÝBì—<C3AC>>dbJ¬Õ¤wZú“½CËì?<Á~oîÕÑvP>4h²Q sªŠ¢Ì*ói=º®›>HC <0C>ÈlµÔoóùV<C3B9>ƒ½Þþw{?nkû½øÀ·2¸èó骆m—öA|“·Î¬‡zΰ§´Î
\8™¦XJÉ<>χχχÏGàóáóáóáóáóÕ Ä~™¸èó µc”›¶¡½äº¾`è¯}É ™ÌdËÜz6M¥R8 ª4e-5åáÇє•$‰PÿOÃe1EÌ«Äå2ßô,ÀÔ”ÔcóÞ»óHº¹S“ôöϼ¬5}p€ËÿŠ
}>këózǤô­‡º|èJ)°g:áp¸±8âã†9ŸŸŸŸ<>ÀçÃçÃçÃçÃçGÓ4º e7¤ûöq×ç·gƦ©;ûzž5-ýÉtvZ4Ben}`` Ë <20>Nç@5ƒ¦DSyVŸ "‘ˆ¼)©Ç>1Ùê_ŸHºzÊkí‡øï}ÉLž¬»>¿º®«ªª(
Óô‹ƒ•ù­ÓW
tÍààqžó…|>|>|>|>ŸŸŸŸŸ¨%âñ8ľ}ÜõùÖzû¦î„Dò¤³ÓͽºSE}}}L7¡¸ÚASÖ ===hJï`§2¿ Ì·6å®c¬ën~/þn×~þ/Ïõ· ¥ØïjÇh%¿¯7}þ¼ŸŸŸŸŸ<>ÀçÃçÃç#ðùï ûlF¹ã3Ö«w}>ÁÎþÃ9¡b¿`ú™öá£bI<39><C592> á4¨vД5C"‘ ¦Æ¡p³Ó”jÇ(ëºÛ_^ÛôÏ$ýü‡ï÷:øܶ$êÐçG"ÆR Cäàq†Ï‡Ï‡Ï‡ÏGàóáóáóáóáó  r±_çVßuŸ¢h³WÏ}½bßšÖƒãƒãÇøˉ)œÞà8eÊ|b¿}×<>;$<24>|ã¾Ïµ¾Qñn%¿uú|W€Ï‡Ï‡Ï‡ÏGàóáóáóáóáóÀ&ž#ÅfÕë>¿óHš«d&ÎNKT«É7•ôp
]×mÊü`0hs<68>|^Uã¾Ñ…kRN~ÏîvêØùK*ùÝ=âói7f-¯êKø|ø|ø|ø|>>>>>ì<13>FM¦>ß]Ÿ/
üÁñcôNKRb{F&¦xI?Óû¬P÷N{8¶ÿ]׃Á M™O Û\í»½¬Ó^rçxã¾QI¯uõóbþÖƒã>b®û|j2¿ßoçøÓÕ{fÂçÃçÃçÃç#ðùðùðùðùðù0+Lã¼M†Ïw×çç<04>ŸÌdé¥Xœi ýU,陘Âé "4ä‰3Ñlsöe> ¦š¦•°C;ý¿¹ûÁ³–ž¾hRÒ½?ÔúÁ´ñŒ`pü.ÎϹíómN€ÏÏÁçÃçÃçÃç#ðùðùðùðùðù€ÚE¢ñ<03>@8ŽÇãu~ˆ¼àóÓÙéÁñcLæ#SáÓÒŸ¤eÔŽãžíÃGqž#‰Pgnïì¸w ÅGr™_ÚÐy N[çó^r縤{_ÿä<C3BF>»GÏEŸO '^ŸÐ¥K£§JèB¨¡h?<Îðùðùðùðù|>|>|>|>|>0 ñíãŸo¥©;!q>´@ÛPŠý>8~ <0C>HÄ*äƒÁ ñKŸ-8bÚ”ù4àÒRt`}!¹î ŸoóI§LK:vÊ© ¾*]Í:‰‹>ŸÏŒP+{¬O*0/>>>><1F>χχχχÏð¦Ïo=(«áìKfh™Áñc#ShA@<40>¸ÕäÓ;6K©iÜ´érƒÁ ®ë¦<C3AB>ÓØ*DFb¹_ð[«}¾O_4)éØoÚ®û|ô]&]<.ú|¶Q:˜Þ®}ŸOgêóáóáóáóKn>>>>>Š<00>_Þôù<C3B4>íÓ6”BÃ@îë
Z4ùVñnEÓ4^>7™Oã/_@Q”ÛاÄnÿ_>ßzŸ¯ûÚ-IIÇ~Öò Ÿ<>vÉ+³Âfµ3™ÂYè)&EUUv}åHe¾é8ÃçÃçÃçÃç#ðùðùðùðùðù€ºnBÃá°µ(¿$¼éóÓÙi‰öiêN á ÷u í—OÓ >·/ói<C3B3>åk _
<EFBFBD>¹ûåŒ<C3A5>Ï·þÔG%½:å¤S¦ƒßz'—Ñ=r0+¼iö`%<1A>£¦g»§nÎåÇ>>>><1F>χχχχÏÔš¦Aã;ˆ7}>ÑÜ«KÌO2“-‰D¢§§g`` Ízê»4e=7eWWš²$TU¥ž¼¤ÒnÞóÛ<C3B3>F«Ì§wÄ<77>Øú<1C>Ï·Åù[ÏZ>!éÒWnóùrëB¹˜GÒEŸO<C5B8>XtŽƒ ++vX4'fPØñù´!É)í Ïÿ÷+ÎùÞƒ×Ô@δæ¯39ËFþCÈ÷<C388>çjÊÙùü€òЉ4äseãÕ?4ò£<C3B2>!ùÉÆйWQÎÛ¸ê|¦U4­º°iÕEMW-Ü4“E®ºxÓJŠòðL.yxåâGV^úÈÊ¥F.Û¼âòÍ+–ÍäÊ囯\±ùÊ•[®¼jËòУ˯~tù5<C3B9>.ûÙcË~þز뚗]ß¼ìÍWÜÐ|Å<>ÍWü*ry8rù-<2D>_¶æñËnÛºô×Û®Û¶ôömKŸXrÇKî~òÒ?<¹øÏ-ïyêû¶_¢nWØ®<´CiÚñÓGž¹øÑg.Žì\´mçÂgnßµpçs=½pOôÖèßs~ÛÞóc{Ïko=÷­ÖŸ¼S[êß6O]G<>¨úÊóFö
Ù“Ïî|¢–<—Ï®™¼ý¬<C3BD><C2AC>,çžÈ3ù<<3C>ÏŽ|¶Ÿû–)Oia9o&OyBȶãy“gk><3E>çɧù|s3ò¨<C3B2>-ùl¶ä|6²IH“<E2809C>…ò<E280A6>¿žÈû…¨F6äsŸ%¹àDÖ¹WÈ=Fþ|<í<Êç<C38A>Bþ`ä÷–Ü=“×Yî2r§<72>;X.<žF!¿3ò[!·ù<>%ëX.šÉùõEûXn³d­<64>[<5B>¬rËL^Õù„Ò²yE|> ßãé5Ÿß>,+æì<.===]©T
gBUƒ¦DSÄb±Ä‹
…¬+áÛeXSþô§O>ÿ͵­ I—~ú¢Iÿɺþx nëósùý‚Ó 8X¢/ñùš¦ÑgŽÐKëã$}> ¨÷ÏS¿<53>c R{Áý`n˜|¾¢(<28>åáH±Y O¯ùüÁñcù³ëÀ˜dæ0“Éà?«ªASÖ ÔŽ===hÊX,fÕ˜å@k ‡Ã¾R å ®G”ùÅÆÖ” <äó­?uA»¤?oÜ7êóåBgGro‡\?æ.ú|:°t0y•üÒ¥¤éŽÀöÍKºîbßÂ:­ƒþD_ŸÞ× Ø´ëFáó>A<04>ÏTÖúü2©üM±7<C2B1>§×|>¡vŒó?ô'G6  k4em<65>Ífë¹)u]<5D>F£¼>™~:¥ôK-˧M[]+ƒv<C692>/ ‹í!kÊo|Åç[ú¢$>É<7F>ã>_.ºZÉ<5A>ÄÜ=þîúü\)W8´d…÷<E280A6><C3B7>?¸T0<54>QŠ¢ÐvM¥ðùŸ<> ‚Àçªøüy:žôù»ŒIÐàø1ü;jMÓTUeõÏŽ<C38F>P´rfDí ãñxÁµE";2_$´tÓÊ Ý’Îü» ™ÀiZn·ûwîú|qÖƒ×|>o÷P¨Òs(ØUŠé>AàóAø|@A7• ŽRÌZÔ ^öù<C3B6>Ô6”¿ zÑu=KÊæm
sÉú©‡g¥þöQE²QîuíÎÈè<C388>ÓÖ5î+:ÙŠþäóåÂ竹^ÕõqÑ竪*¶;<3B><18>R*VŠ@gdµ1Сp¼>¨^¼ì󓙬Äç7÷êh>@õR° ŸëÜ2Ÿ5ÏÁäª 5JËØÙ½‰©]Æz¥û» »%=ùÊ c'<27>2ý‡è‡ô{ûðQw[ÄEŸÏŠó©É¢Ñ¨NÂbgfå…Ž‰u»ðùê¯ùüd&ÛÔ<C39B>P;FûzÙÜ«KDP:;<3B>T)&ß®(Šªª¦:ä9‰D$5ÿÅ <C385>q¶ä{×<>±|þçnüêköÞ|ÛÓü¥»-â¢Ïg¥¹ÂÛµïóËœ-27Ø%Šõ|>€ºÅk>¿}ø¨X~ß6”ˆ Î#iþÁd&KAƒª…H$Bo(rª${n&Ÿ=Jp\Õª£’Þ›'Ñôo-oìöȬ+×}¾³<C2BE>Tì0«Ïƒž¢%A¥ ­[ÿŸ nñšÏïKf¸çIf²âKkZŽ›>Ūú ~Ðu<C390>zò¹™|¿ß?ªvdbÊŽÌß²7|æßøËý‡'Ü=.ú|æÕ]ÑæÞ$<1E>ÓÉYlR|>ÅÂápƒ<70>¢(<28><><EFBFBD>š¦9¾¯ùütvÚT~/qAjÇ(ûTK½³ëÀÎ@<40>@ƒB(òûý¾9ACŒãeùŒý‡'ìøü—žòÝö?ñ—Ôÿ»{<]ôùHÄ;±ëÈe~>PÓPHãÑ< Ð`Î4Ðý{Á¿Òõ+Õ³Bï;kõ½æós9O?%:hdb*÷uw”Ìdqjh4ª(Šo®<02>X,æünˆäzÕ\F—÷Û<ZWSwÂ;Oc]ôùD(¢íR³Ö¹Ã™Uæçàó5
îâl»ù{ìæ€D¡Óe¼ØþJ{Ní‰}¾(çs³ÕyÒ_s_¯êgïØ!ÍŽŽŽ¦R)œ<>Õš²šòðáÃhÊbÄãqº»ŸsAþüú<C3BC>ÎÆ\o&o‡ÔŽÑYe~ã¾ÑážOø˾dÆõÃë®Ï'Ø3jßP(Ô(Å©Ç1¬x€V8ë´K´p±:Ïp¿]çÄL• ðù€Úƒ:ÀC6Ž €G<E282AC>(t±2?ÐU»yƒ¢ÒwªJ߃>dbJ4<âKkZú“ìS¦ª~; t¤Óiœ“U šMYÛP‡¯ªªX³77Eqv†× 2zn§Ÿùü¿/´Sœÿôs¯· ¥ØïjǨŽ³‹>¿Ø¤¼bØ1ðö·kgmlI:…\9¦=„ÏÔl”èx„b
=‰ð7ÕrŸÕwêžÚƒ>ŸhêN0ÉÓ6”_L:;<3B>³TõÛ¡¯¯<C2AF>™CW;hÊš¡§§§šn½©kUËÖŒñxÜô0wÎPo§¢;<1A>Ò4¾”lxq~‹ïÝ®íøü×^ý˜—ñ·÷BÃÁçϺ¤G.àóµG±<47>À© Y LŠ)tEQŠÉ|†®ëÜí8R­áMŸßzpœIž¦î„ø²`ú’Z&™ÉšÞ™•±±±<C2B1><C2B1><EFBFBD>¡¡!œ<>Õš²fH$Ô”ÃÃÃÕûâñ8/¤Ÿ›Ò§;÷p8\~5>ƒ† *€6:G]lçGWÿoÿÉwN[wß«‡ìøü—^îá¿<C3A1>LLy¡í\ôùH¤±œÒ;6}>?2ðù0Oˆ£°È|M¬%Rì¾Øï÷Óû<C393>@@òÙh4ê`µ†7}~_2Ã=O2“_Zà ;MUýPaâñ8ëÆKõùº®G"P($~¼Lh(¡uÚÙº¦i¦Y4ДðµßçZ|<7C>ÓÖù|ë)<29>û>ŸUæ¯ß½÷sñ¹­pÑçW:+ò𫎆âˆç†ê yŸ¨=h,¶^85#”O1…ÎއÒÏêº>—úÉ"xÓ秳Ó\ûtI/­á.¨m(å5;¨"ˆx'N<>ꬳ¨èæ]UUV#í ´B&?g<#w~·ÿÙRZ®Å¹î &ómúügZ»G&¦ÔŽQÖÉ{¤ëÄç_³$èÜpdb`ùÀçjêŸÅÙy¡PÈ#½.ÈÍæógõ5ïó‰]Ƙö™˜¢—-ýI‰Jf²9KU?N3ˆD"¢ù¤{ðY—ïÙ<C3AF>¶[ÒÔ­p8,~< ÆãñÒ¾y[ƒXœOùæw[¹¡{mkBÒi¿Öþ…±N|~.?°$EÑ4Í#ûŸ¨ah ¦ñ&ÀkSèlV;êóƒãǸo>*QCûO°Åø;ôYœf€Ê`ùòΙnÒYWï ~¿?
•¤[­»1—:ÀCÑ\O]ù}.óóy±qßh±þt$®y®=ãói7è2€ÏÚô»ªªº&ø9À£äG<ó|>
SL¡³RIºy—|£h4ZþžxÙçŒLLI|~s¯ÎcÚŸ^¦³Ó8ÍÀTâN]t±%u]…BΚü`0H[,Õôjšfz Ùm»úoøO¾Ëäó¿}F\Òc¯Ü0VÊÊáºÏ§vä¿àSÕiwÍ6çHy@%<25>Ï€*BÓ´˜£¸2™ß‡Ãaº<61>æõoôíèMúS±{vÚÛ@ À>^R)f1ªÅçjǨDñJ~¨¼ <0B>UæS¯ÎºwG <47>€†<E282AC>9<EFBFBD>¢¸ƒs/Ànñ…ξÜRœ¿~ášÏ%Ýõé‹&ÝxK;,•ß:<3A>ïvÎ<76>P(äàFÙD€9>Íqø|¨"Lò¤|bn” J ¿<>·ßÓ;Á`ÐYý^E>¿õà¸Dµ ¥ðߨ0¼šZRâN£ ïºË„¶
…ʶt]W…Fœ2 ³ãÛ~a•ù>ß曶ë’îúœ ¿òfkºëóÅs‰ÚE|ÈB;&Îì¨:ýî8ðùPEԆϧoA÷æüæ½ &ÍbZxîå”EŽ§÷}~_2#DMÝ üw*L4õ듳<02> Ö‡¼®ÓаÃêóO]Ð*é«oÚ®—÷ aqÑçG"¶]EQŠM¤sŒ=ñ§ŸuþŸ¨a¨·wk
9À<Q>_„®Öhè^ž¾ÝÈso/ñùÖæUÏ'ÔŽQ‰&™˜Â?À#°ør†§`0<>zzë8±Øg…Šóן¾è=IG½pMÊíQWò<57>\óù¬ü>ÈßÃùx¸C+o”Bg£G¦ÀçjêÛi à#õº°ú¨yølt¿ßO×?tgªiÿ+ýN×Hô>+oóøŒuºxw>—÷ùôÓÙÕåóÛ†RMD-im‰D¢§§g`` ÍâߧªAS¢)½F<ƒsÓøÔ«ªj<ˆ¦% úü•I:êoŸq̳ßÈEŸÏŽ<>Ëö<>ˆ.fÜ:] ðK#9<>Þ˜\Ÿ¨=èÊÁÚë:ÛÛx ºÚá&D^É@åæßËJß]ãÍG…Fuùü‰)‰&jêN”´¶žžž.ƒT*åýïДhÊj!<1A>Ú´£&ú`uUâÅbŸ56¾Xp¯èó÷<15>HER/×|¾ý ƒlÔvpÈæWDv@}>ÌÅzc”è VÑ4<C391>ƒA×Éû5<C3BB>óJuù|¢©;!Qú#SöW588ÈÌa&“Á?QUƒ¦¬¨{zzª·)y§jßä;åHiøSU•:óJóÅZ_eþ7¿ó˜¤^¹aÌËòµ}><3E>{lÓ<6C>@€ÖL;Àæ•Ð‰ËÃfÐOï8%ø|@íÁæb[qvj6€wàþ$<1A>Úüݲ<E28093>„B!º*òùmC)‰,¢¿´¶T*\ )kƒl6[½MIÃJ±ñb„ÃaG©¦i4‰“*vûÿƒÿ÷gÑ矵üo.úôE“ñ¸w[ÐEŸÏÎ;b˜owê Ûn àç!{Çtþ°K…J>'Ÿ¨=ødsu^{†+”9|Šnc]Üsºe…B´\ªÏZ¨É ¼#;Pu>dbJ"‹šºøwT]×™hµ u¹q'Ôv4!^on*Χ¬Ü𾤋>óÉÁñcžmD}>‹ý~¿ÜÛðrzûÕ rØ3 UPâ¬ßú<ˆ]¨Ä½ñ<>P{Pÿ/>—gPŸŒ#€Z¥Ÿ_ùÛvN±2Œ`0(¹e®sŸO4u'$¾¨/‰"m@E¡?<>º[Ÿõ¹­<C2B9>Rp£Ô™W¾8ÿ¤S8}Q”"éœç<ªb¸èó5Mã§G±æSU•-#Ó—‰u6»* Ÿ¦%ÙGJôáó5 õÆâÈ
…œêí<7ó%UŽñw÷¹˜ð)výV‡>?™É6u'ÔŽQæêÛ†RSÔzpÿ€òá–^®ßi1kA]1Á`ù÷æÑh´à¨A7þòêng‰<ô</Ë_rçÛvL>KKÒ-î¢ÏÏ Ã1+ÈTU5‡þ$§Šós…|>`½$`»çKø|@ C×Ô-Ãä æáwÁ¡PÈæGøm{0¬ü³ûe.Òé%íÝ¡Óþ‹ïË¿¬³‡ÎË>¿}ø(³@ͽ:½™˜’˜"µc”0™ÉRð(S/]l±d¾ýJŽ8R°jmêÉç÷Æ?¥ÍD@×'ýþ¹Ï_ÛªÙ÷ùÔ¥{³ÑÝõùÖ–-Hù“;DXi<58>¸N:
H°%áó8Ýut«+ë¤ò
 ím,ãû¦ºK­CŸßy$ÍEóóͽºD±2~ú)¾˜´j±a"<1A>Ú—ùjX¶]V<>ï`©vQDr-¾™:±­;nmá2ÿÔ›ìË|ÊÈÄ”7ÛÝuŸÏW,Å7=¸q¼¹Ãá°õIS÷t±º}]×ù¥-ï…–‚Ï€Ý~òHMÓ
.ÆnK¹<4B>¡_\™Ì(WètÃ.Ù½:ôùéì4A<>GÒôÎþÃYÔzp<g©ê€Y¡.WM$2_,à—C=¹©Ô¹šHÄs;ýÇ}~çñC¡uwp™O9kùßìË|q
•×ð‚Ïç{B'^ƒ<>¢(ô;SëŽÃÊ!诚Äã`¢ØÅU…<55>Ï@×u^ôΠ—ì.˜
…L ótƒ,‡ß)KÊ5YÉœµj.W—>ŸhéO2´ëÀ½Lf²³ú"kU?HˆÇãâ0á÷û•CÛ—ùÔµÚyj¬išjàÊ#æ¢dôÜ Áã2Ÿ2co7œõ°èóWnxß¾ÏgÏ[½‰w|~%¡Ë :ñL¢¾àîà“2<E2809C>Ï€Ú@×uEQ¼_0É<30><C389>äi}>‰À´ŸõéóyA>¯ílîÕ%ʨ/™±Võ@1¨Cæ½.Š<>üyë¬XÈš MÐÚh[ö?RQÞçZ|ñ?.PÎ….¸M×'é½è“/2Ÿb_æ{¼7vÑç³R|:<u4蚊ýSÐ/®Ô?>j ºå¤b¹É…B.Ö@Úñù9¡:ÎdÚëÓç<C393>LL‰®>'~I (wþ¬ªßD6M¥Rø¯©vДhÊ2‰F£¦é]ÅÆ>‘ùš¦ªEñJcˆäZ|úoN[Ǽ½ª¾§ë“<C3AB>÷Š2ÿ» O—äóÓÙiÏž~.úüªˆ½|> &¡kºx`RéR¤Ø$A€Z….‡"H8nhll¤ë"M>ß7vç>k%]ȱ%Å˹úôùDSwé ¶¡×—Ìd%ÊHíMg§Eço]áÀÀ@—A:<3A>êýêM‰¦,Q­óð4vÈ‹¨Å#­‡w¼V™ïÖÄ13‰x®ÅGQÎqu‰tݱîSqþÂ5ûìËüæ^Ý˧Ÿ‹>ŸÍ.ôûýè쟨=ÄÙÙv.'@… ìÎ]þp<C3BE>»ZKžºõùmC)f„šºì^~_0<5F>GÒ¢ógUý"}}}Ì¢®»ÚASÖ ===®4%ï Ý8S_Í°ÎJ$)¶!êÕYÿoš2æ…gÍ'HÄs;ý¹_äº3¸·ohØ¡õ šd>em«fßç·õòéç¢Ï§!žm—NEw<45>ý 4x¹¥àóµG8.8¯GÀ#pw éöY²$¿´ãJ¿n}~_2Ã¥P2“¥wÄò{kZŽç„ª~öRdlll```hh'dµƒ¦¬5åððpå7M¬¦iÅþd-™›ƒÌ'Lë¡ÞCŸÑs»¹<5F> ü'ߍ½ßÿ ¦%• #&™êMöe>edbÊ˧Ÿ 3‡<33>tV;ç 6gÄtršˆF£Þ)…ÏÔÅæÊojvãI7§Š¢4pÁB¿ðBww÷P¼qƒ¡P¨`9œ©(4dPŸ>ŸàRhÿá z)–ß[£vŒæ„ª~öJ¾̧Åhè¯<E28098>¯Šº\/ FèUs->}Ë7§­ãÞ>ý$Öúºµ8ÿÛg<aGãoÜ÷%õÀÔ{¼­Ý­Ï§­Ó%
Ÿ¾ACCqä<EFBFBD><EFBFBD>´iÎHAŸÏÞ¬ðƒ†bÀçj~g£W ÎA·œ¯…¸*g•ôÓõ{Ò‚Ž¨Ø—•¾³¶¡º|~ëÁqSgKR^ Já/û’ü<>ì‰Dlåó)Trhêu”±Îs(ªoùFð[«¹´‡ÿ¡ë“<C3AB>÷Z}>eáš}×né—ôÃk[ M¯ŠævÑç+Ë,FÁ€9@\æ³Çü ÜC<C39C>”èÃçjq ¾pdPÛHª(M>Ÿ¹×<>
{ú î³dIú
¦oçÈ>T—Ï'Ç<>q™Oì?<!ñH¬´©;Á^¶Å¿ À&Å*åæ,ó«æ‹/ÝÄu}CÃÓ;…ªôßôÃwo=T-_¼}¾ªªl…ôÝù<05>@8¦7é§Z
>P“ð>™€ÚF×uQwÓpÃï|M~F¼<46>uÚ º~õöœ¾c$¡¯ÀÊõÙtÕù|ÉLVâš{uZ¦óHš~oêNÐÂøOÌ
u¶öý*uÈ´|Í|wU}<7D>ú`p«®OF6·Kd>åÇ×i~ø–û&«å»»èóãñx¬œšcÈÎsÓåGÁ#À®¿T /N6lÒŠ}mŸ¨U¨{gw…ÑhG5õbá=¿7ïUéMnþ<03>@<40>·j÷ù9¡ü¾`àð%<11>Çih°)ó©ç¬%™Ÿ›ÞdÞï ÿ令>óµ[Nxõº¯ªå»»èóÝ]™Dze|¾¦iÖ§f6? ŸÕÝr™/Þ–ôù¹¯ósù_«Ð—eeawÓ+V¬X´hd%Ùlvtt4•JÉ·E Ðb´p%Wõü'£•Ôy$íÊ^aUXUE£ÑunWE#8ÕKN(ª½Ã<1E>·Rè—\F§_äÅù>ß‹’xmkÂ4ÆzùXµµµÕÏ/øe ¾ôùtÙÆÿÑèZm0´¿ò2}þ³;wÒ§ayçíw橇Á±E©½ÔÉE2 2¨ªZÐÛóù9CÚ°?)ŠRÛÇZÿf¥«««££C²<C2B2><E28099><EFBFBD>.ƒt:]l™T*Å–¬äª^éøDb“žüè°+{…UaUX•VÅ$¤ÕO\Ÿ¯dZsÍö;Ö½0Ì_ÿ|@Ò/¹s\Óæå ҟ쬊þjU[·n­7ŸÏ®ìÔçƒAñ´/>§’®Áø ûS]ÊôùâÇy@½žz[A<>ÚK<C39A>\$*ݲCÓ=©ÄççòÓÌ<03>ïìÔšvuu HVÒÓÓÃt‡¤Êqtt”-SùUýåƒ/$BÉ­½Âª°*¬ÊÅU½õÖ[gžy¦ØÑIV¥ë:Œv'v% ;{Õ××ôÔªb/uÎ*óC¡/½í¨¤û½ôÆ´g¿ uUÍÍÍõæóÙ/>Ó„a=üjÊ)<29>ôïÆ+óí;|ø|<04>ÏGAàóÕ/A7½/÷ùÅ>åeâñxC¡»ï†â:ÍÍÍkÖ¬¬$H IÉf³ƒƒƒ´˜DÌÓªv¥}½]Ù+¬
«ÂªÜZÕž={N9åîfý~¿ÉCŠ«Òu<C392>ÕÛ<>V<15>F­«¢-.X°@RÀìñÃNËïëúd`Á½r™ nU”îk·$%Ýïêu_Ü«±±±9ìÕ|¯jïÞ½®û|:QEaC³„W5s@Ó4¶BU°â¦#@ÿŸ}³’¢¼÷ýþ­JÝηêƪS™:§NYÇœh+˜_`xµ£øÆ‹´ ¢Øˆb≎c£¶r_0Û®q±MÜ@<‡ã\B¼$\“,îÞÅ°Í!ìÉ:=v˜0÷7ýì>ôÎKOÏìÌÎtÏ÷S¿¢všž~yúy~Ïô§ÍŽ§lýžÿmVö ’ðù|><02>@ àó~§q|>?£J Ûš÷uÈþφ\„RÛá<C39B>¼ßŠÅbÝÝÝ.žø\J\J'ªª:Íg(ÊzuË w•^E1ï¦h¡óM¨\é:­hq¾®ÚÔôKî]Ó{î¹><1F>ÊŠÏ°%QRW¬”ÏO<C38F>”賟š¦qÃωvÄûv¥vÊx”½Á
úü '|ù¢_ F|yÆå—L¿ü²é—_>íò¯Mø<E280BA>©¯š2aÒ” áð„©á˦O¾lÆäË®™té¬I—^7éÒ믾töÕâ W7^%Þt•(]%~ó*ñæ«.¹ùÊKn‰9vÜÊãŠKn·ÇÅUˆÌöoµ Û7íã¼ÉŽ탟}uæDèt®µÏÎnæ¤Ké4§<34>Ä´ðetîS™F˜l·ÆÕS&P³\9eÂS3MDñõ©©¹¾:m"µÅÄé—O°±h\ê9Doq‰·¸Ø[|Å[üëôË7¼ùZ•ÒšÿÇTV\^<5E>øW/1Ý-¾Rz\ì9¼ôÉ¢}»èqh
ÇDgL;——™±Ÿ_ã1u8¾žßÈWŒŽ+<2B>1…"“²âêÑ1itLæÎDxtL9”è2éÎÓx8²bnÌpÄÌáÈäÒk×:â:v6æ1{8D6Ñ°¸ÇH&¿idF¦!7çLI·äLOÎjôÄtq=Ÿ+³çPgÜz…c¶uœàœ-<2D>¶â ˜™GæG{Š¯Ï™%3¥}­³fIê]|Šdó#u{63ÒøºøÊKàóUBevoH÷¡Îåî>Ÿ×ùèLáóó2”:ëâ”6ˆåýVGGG»<47>{ý*¨p)q)9|:àÀ.ź®;=¼;…6•%ó Õç×û#é]R:fúíµÝEe¾ª~Lñ<4C>ßvɽsÖ|ðA—<41>Fe }>u-ï]±²>?wÔä…Ö©ÔîêÊç_zÿìðß
FÌØñè7ùÈ_¬^¦¯ZýŽòøÛ+ŸÞ|¿Úºâ•Ÿ,×ZýT[º­ùÞ÷__òÁ¦{>|uñîWýöå»?Þx÷^ZØùï ®¿ëÐú»¿¸àÈó<E280B9>½0ÿ¸:ÿ„:¿W<C2BF>ÿWu^ßóó>{~žõÅÜøssûŸû·g‡c w&ì8Y¹ ÍÒ¾h¿t~aþt¯_@GHÇIG»oƒüû<C3BC>òï^¾ûÿ¼²èׯ,Š¾ºhçkµéž_¾¾äç?^ònó·ïݬ-}ë<>eo´,ûñ›Ë^ýÉò oÝ·þ­û¨5žÝ¼âïkö5Ñco¯|tëƒÔ\Ê6åþwW-×W-yï¡Eï=´ðç«yÜÅâ«dâaŠù£cžŽ;sâ;n‰ÛFÇ­#1§<31>â[râf;¾IñËLH£bÍM#q#Åö57äÄì¸><13>^7:®Ýþè[ÿ³J™mÊxuþ)Œ_<C592>©Ùñ(<28>ibº{ìÈÄŒÑ1st\S(¶?:Ë×:âº|q}&ØE?ײ»ë6vðŽ4ªƒ±Ž7Ò oÎêœï?2‡ú­£;;6ëí¬ó;‡ÃÜ_d<64>ç8ZðóÕ F†sÊï­¾ÛŽEöØd±ø½‡î±cÉHÜ«¯¢Xª¯Z64œ—¿»ê>;VŒÄýÛV=°mÕÊxpBAÃÕH<ôŽ²:>lÇ#ï<¸fk&µã[[W~ëí•ß¶SÅ¿Ùñ<C399>·W>nÇo¯Œü,Of"“dÖmyà»#ñÔæ¾·ùþ§íøþæû)ýÐŽg6¯xæ§+~ôÓÏÚñ\ëŠç[W¨v¼ÐºâÅ·V¬ÏÄ}ÿþÖ}/½uß;6¾ußË?YþŠ¯¾¹üµ7—ozsÅë-Ëší œOٯŎ7[ýä<C3BD>eo½A)qi«¶t³[´¥?k¾÷m;¶6ß»-™ä©ÿxÉ{?Î$Ò_¼¾ä};Ú^_²}Å=;6ÝCif<E28093>ÿØ´ø?_[LY÷¿^[L³ eàÿýê¢]v6¦øÍ+>²c<C2B2>=ËP¢Þ»ñîÿ‰LÞþÃÙØ Ó¼³oÃÂý¶¿”I韼´°ãß3ÓÐÿ³g"Š?Ùó¥}óÅ4+õÐÄôÂü£/d¦š›øôôßê|š&(bö •™žì‰©²óQIpÄÀpd&Ê¿9²ßžL)¬áÈœÂgö¹PüõùyÿmŸ`¯}¦ì”ÿl·µC<C2B5>Ý&Ô8ÔDŸÚÍEM×a·$5é7,¤F¦§ßc_>KÒµ£ëH×”.ñ;Í÷nÉÌK©Ÿ¼þæ2êH/ÙS$õCêŸÔ<C5B8>©WS·§A£†Æ—ôÜ]ðù€*¡iZÞ{CŸÏ+Ðüå±é°##TdƒÁðùDs§å¢•N žÉýJOO3‡ÉdƒÈ×àR†îînºŽå]Ê,-éž'ùÄá…B>ë‰@<05>gUHZé<5A>átkS&ÞËÿkÜøÍïŠÊüpxK:£ O-^û.‰÷†e+ûRÖ„ú|>Sw¢¿³ŠÆêÉ…Þ CRKwæ…<1D>;’þà?i¨ñ½o>>>>>>>>>>àwxaýk_îâóùí$Ý]6rÓÆçï>~ÒE+ííÌû­D" p)ƒA*•*ûR:ý<ÍîzÐKA2ßT¡i"ë‰@½Ëü˜qøLæSlsW1Œ^AXï.óiË:•YûD´õ7ï¹$^å™ÄßOù¨ûÕÐçó<06>¿a*mfù¢/<2F>P ЯIÂ6´¾®ë.o¸
ÿé5Æ7àóáóáóáóáóáóáóáóáóáóÀYÛÆ5N^Ÿoš&¿£¤;h´[0|þ‰Á3.Z©¹Ó Øp»î.Ei
EÑ»Ì/´©,™_Ô”Ö˜C7ùÖ¦óoº4£÷GcY§Ä~²hq~4z„òmÏÀéôþˆKÖõcϯö#!UUiûÔó³S÷¦³·×h˜Ð<CB9C> þ"ý¡¤â
ø|ø|ø|ø|ø|ø|ø|ø|ø|ø|@0pÖ}I¤Úð{d^uæ40%½ßH|íó·êÿþþÚz0Î>n<sÑJC©³#Êù”Ó\䤮ëìe./ˆ¢X¨29«¼¿ÞßóÚ#s™¯-<2D>È´|$òѨu•ùŠòaW<É]}QŸOá£þSCŸÏºeI5ê%Áæú܉žýpªÞ~]f,û…χχχχχχχχχÏ˲²t½{Õe:…èhª½G_û|îºâIúØvxÀÅ)íÿlˆ}k(u¶gàt<™Â<E284A2> q ìª(J“gdY.$ó Ãð<C383>ÌOZéí"—ùʬ¹™‡·8W”çþ´¨ÌÅôȃT<C692><54>ú|<7C>°_/Õ{˃•7侓ŸŸŸŸŸŸŸŸŸŸŸ¨9š¦ñW¹ A7°†aÔÉÓ°7Ð]=°× \ŠNËÆ×ä· <>¼j4o°uø·Ô}}¨Ø A 4+Š¢w™ï®U)óä\×/yÅŒôV<C3B4>™|kÓyáYæ”óšÖÎW|òÖ¢2_ÖF/­LÉÓ»Ïßy,á£~RCŸÏvM¿^
=EûજËáóáóáóáóáóáóáóáóáóáóáóu®ëtÓš%pè¾UQ”ú1ù¦iºhüB%£•µú¾öù;<3B>%˜2R÷õ¥íÂ{­ÄÖI;ªúyÅ> Àhš&÷4ë¥Þ><1A>Rò¬Æ3ÖJ²Kb2ßxúÐÿ|ÌiæuýSGû´•ùì+î<>Msƒ½<åjèó öþHo¯ ü÷ ÚKĆÕ?ÐE¼QXðùðùðùðùðùðùðùðùðùðùàG Ã(I19Ëõ+øHÂ×>ÿÄà™,k´íP¿8Më4wZYû€ ÂiM²kíÙI·6iK'
ç¯ãZ^[X™=Ãøð/2ŸóSÚ,Éçûë5¨qðùeE Ô»(Šš¦E])ãYRÙ¿:œT¤>>>>>>>>>>|݉;o«%Ibeo¹*‰Ö¤åªªÒ:Õ<>N¾öùÄÆ1§œßÛ;èbvKÐ:»<>ŸÌªØ˲JzJÅ@É|ï|©å%I·¬Sü<C3BC>?pªþB!Ë;øW(mz—ùÍ<C3B9>¿šk|¾sãïÕé…,Ëðùðùðùðùðùðùðùðùðùðùðù€šcFØFÓ4<C393>_¡5ÙWj"pø µ$IÞ«ì,ËâV¿RúÝï>籄SÎÇ“©¢rÉYÕÏ*öƒ{(òn))µR X#(ʇN-‰|äü_Mk÷"ó%Iç_éŠ'K*Îg<C38E>P}Dà}>ƒ½#±aÄ~D¼A_{#ÀçÃçÃçÃçÃçÃçÃçÃçÃçÃç¿Aö~o8öÛɱÀŠóEQ,㻼â´"O"üîó<C3AE>r¾+ž¤%Í<>_Š'SiG‰éûŸö%>3N —T*ÕׇKðKÉ^VòòTÓ4ç PEQK÷<4B>¾ ÞÂœ¼ ¬×õOG7Q{Q“O!Š-¬žß0zé<7A>¶Ã%ùüß™'ü5*ÇÁçóòƒ1â½z¡X' <09>ÿ!ø|ø|ø|ø|ø|ø|ø|ø|ø|ø|(Ãçó
ùñ÷ùt;Ïv]Þý8ÿzE”ß}>±ñ@Œ¹£¶ÃiGÅ~ÞØÛ;Hëp+µÁøK{{ûÐЯéîîn·Á¥ ê¥Ôu<C394>)zú×} <§y!
Õä­ñ!S<>ÅÃèÍZîEæÓw™Ì—åì#ê1þÐþ‰¿Få8øüzCQ”
>ð|>|>|>|>|>|>|>|>|>|> ᯊ3¸œ÷øÎ8ÝÀVä¥õ²žíºì÷Ö+xäðù\à«ûúècÏÀi¿ÔÜiÑ:û?:gø÷w ®Ûïtuu1 ŒKéw:::r/¥3c»ˆV˲$Iò.óiâ ¯4Z {—ùì)€ª~Ì–\þYI2Ÿ=-õרl@Ÿ_àóáóáóáóáóáóáóáóáóáó HI˜îèº>ÎÏ<>Ay»¶, >ßɉÁ3Ü õ œ¦%îE¤ñdj(uüõ¡¿`@ù<>þþþîîîcÇŽ¡)üN,£KyüøqöÑ4MQ³$|Þ/RbÌZÓA\
)+R>ÿ©að(ó)týÓtæu°^AXÏ\9÷—^4þ÷ÚºYþøÈ_<C388>—ÒÀç<C380>ðùðùðùðùðùðùðùðùðùðù¤R>¿& yIÊøº¦i|ŸOl;ÔÏkÃ.ºioï ­Óz0Î>Òw1 ¨C(Å àE—$óiMÃ0
픿í<£ûäcÛ=Ê|Mkg_žpËc×µ}ztÃÞøœµn öÍöoÕÐçSߦž©SÓ¦iR …B¾~µ>>>>>>>>>>ЀÐ<E282AC>79t“ö†$I.õ™Õ†°Zâ}¨a\pUäv>>?®xÒE71í¿·w<C2B7>}l=Ç€ ÞPÅ£„/IæS¢+”9³¶C™¶®(i¥wI™H˜E×µ¬S¤—*óey_¨Ìº1ÝÚ”>U”ôMq—»cû_ýÛëjèóé7‰Ëë'NèwNM^-¬ uåó/šñÕK˜¸˯/¿næÒY×/™%Ý3sÎâ™w.š¹àîwËÓïY8mÙ]ÓV,˜ºrÁTeþ”Õó¦<2/üè¼ð·çNþ·¹“¿sòwN~òŽÉkîŽÉOÝ>ù{·O¢xúöIß¿-?¸3qõ3,n½úGŽx¶ÒAÛ¤}Ñ~鞺}ÛöAÒÑ>6wò·æ…×Ì Ó)Љ¬š?…ΈÎëþSï»kêò»¦-]8mÉÂéåéäéòÝÓïº{ÆüE3æ-šA­qû¢™·.δÌÍ÷̤&ºqÉ57,¹æú%×\{ï¬kî<6B>5séµ3^;uÙµSf±œÅu“½Å¤œ¸:'®Ê×_™W8ã¾ë¿/¾î!¾‰ÙYñÕûfoúek•{<7B>™Ërc…טPJL,%./öÅÊ_+þuo·_}#«ûåtÎ|}xT'Ïn£†<C2A3>µÑ<03>bª#¦9bº#f,=3³ƒ†ö¬kfÆ8Ŭ¸Ö×<>%O;®™=7äÄ<C3A4>#qÓ=,2É„Å7G2ÌÍgÞ2sFe¡[eâ6;n‰;ì¸s$æÚ1/3xP6÷ŒvÜeÇÂáȤ;Yž~·±ØŽ{2A&dbÚ½vP¶\zWfv X~.2¹ô¾SWØA©õ;VÚñ …<>uyP~h^&VÛñ°<1D>ØYz<59>=Ñð Ôým{ÞyÌÊçß±ƒæ 6 ±ˆØó›’جô];ì¹éÜôÄf¨ ÏPÃÓS5¦¤²'²¼Aè3#GûÃá>Ü6<ç²³ûž#èÜY#¬³Û„µOd¤Å¨õ¾c·ç·íùñÑ)òaûº(ŽYr…=KÒå¦>°xáð,I}‰Ol~¤ŽM]ýºÌ´8Æ×·M†ÏT ~^ö½á8CwâN¿¤iZQ9o†³pTQ”ŠI }>¡îës1Nñdj(u¶õ`|ã<>XW<‰<>ëç)õÊ<>™ÞôKÚ4M3Kæ»Ôðמ„™Þ.f;Åž"Ø0z<30>e~$ò_(~i•µé¼ôV<C3B4>öû¿þá¬Kj<4B>ìê«ÐÔTjèóY7öRfÀ~ øå×N^êÊç#ˆÕª4ØѶ¼ðño}@ýá;ŸŸ¹%Ï*@ ‡ÃÑÐj´<6A>×äó5+RœŸ®Ïo;<à"<22>ööPŸð¤Ä¼ºát¾¯äNIÛqy .ˆµÎd>Åïݺ®*ëK•ùô_(œ¿ÎxúÌŽŽfJÂ/
»½ý4g퀇óú¥†>Ÿí”Àãñõ”mšfÔ†þ(o ðù|><02>@ àó~‡n ™ýör/\?¨ªêQF9$©R2?\Ÿßw“NÍ<4E>V<EFBFBD>N€ A‰ÑW/Iæ»lGÓ´,™_Á[y²dþv1<76>,x´Î„õÑè†íuþ×°Ìß%¥3<C2A5>¡ÓsÖº=*½(œôP`^¿Àç×ôÓ®ÐÈ…ÏG àóŸhL4M£ûb­¦ö<C2A6>=‰…BM~ÅXÕçê¾>ïO¦0¨C,ËRm\¼ºw™ïîç)ÿ;W뼸Ü!óµ¥™o×õOóµá)IÒ½Ë|Ãèåß ‡·œ«Ø_:1³»÷Bì©<C3AC> ¤×´Å\òêç>¶Ü‚뺠†>Ÿý ðòƒ„½Ü¶Ñu<C391>ÿ.¢?r­þ}þSk×Ѫ“¯¼Šá¥_¹¸Ú»CT$èJñ«FW°qN|ÛÖwª4¢ÑÕ§cœ}íuEקuœ_Aú"0¥Ö[ò'(À_Ð=#+ݬ‡ƒ¡ÛUö|A¤°ºsgïT©d4À>¿í°[éÞÞA üˆ®ëe¾»Ÿ§¬ë\YQ”º>í|2Ÿ"ù(kEÓŒbKy2?<3F>ÑÅ;Ø=yËÌÌîh§´ë̳<C38C>ô/<ãT—l¢ýú»kÕÐçÓÔïe"¦_¬óÓÜÈÑM- ØÐ0gW„}Ìú 4FŸ?ÐQ9}Q /Vð¨ÿ~Ð@N9ÿÛ={Š®Oë ÌØw`J€FÀ4MfÅ¢(J­nÛëŠûü®xÒE=5wZ/øŽ¬Šú²e~z´Ï¯íZÅ) ósëó£Ñ#°¾l™OXÝ¿¥]諾Ìv—>4Ü2”ž¾ô¤KR½rî`<60>?)J }>ïØî]ÿtaº;x°B 竈ªªæ6 |>¨P¸<00>ÁwÀç7˜R ðp5]¡PCOåöù„º¯ÏÅ>Å“)Œ|DeþpŠPUIœò°I˜…d¾¦µ<C2A6>><3E><>=š|
Ql±¬Syv·K<14>*_LSÄÊÍKFýâ…gê¼!RCŸOЯ¶kµ€;â2?À¿[˜ÏϽ(Yï#Àçƒj Ð||~#€)<>®ëMeQïe™U&Ø>¿íð€‹}ú¯?õvtttww§Rûþ&áRþR:_ªªˆÌ÷ '¢Ee¾e<C2BE>åÞe>­\pw{äa™¿gT3¾ülÌ%<25>®i ïGem}¾ógL(¢Ù9:u~nû\œŸ†Ï5
 øüFS*ç­®(ŠtKÈ—ÐáAà«Ñ ²iš ÞnÁöù]ñ¤‹€Ú`ü¥Ý&H`ùšŽŽ\Ê:GÓ4“Ýe{¡KIßò(ó³¼_HZéí¢Ì7͸(¶x—ùYUýyv·?â¬Ìgüñ÷<C3B1>.étÎÚIòý¨¬­ÏO{{…~º8QÀçƒ Ð||~#€) ¿Á0 ¾œÝŠ¢è\Y×ufõ³7&Áöù„º¯ÏÅAíÝŸ1NÉd×ôôô0sˆKYo˜¦IIÆù ÕÝ”vwwÓuìèèp^Jï2?¨ï[iZ{!!o½°Þ£É§5iýòŽÁýu§Âɬ¶Ï{)뜚û|v ì§K.¡P(À•ù ø|PC p:ƒï€Ïo@€áR:ëŽ<C3AB>/·,˹Ü0ŒÀVrÛtAòùñdªgà4ûÛÝAí>ƒ‰D—²®ˆF£y=¼{ªI¥RÎKI©[Å—ù†Ñ[HæGÛ~-œ¿Î£ÌÅË:å}¿C©³”?)(£¦‹=<1B>ìÊüïÞÞÁB—Ò/<2F>¶æ>ä¢4;óW éïÀ›||>¨!P¸<00>ÁwÀç7˜R ÀHÄnÀ<6E>Åùi»Ÿ-§ûÁ¬¯p<C2AF>mšf#7]ð|~ÏÀiæ—vKÐÇ®xÒÅA5wZ>TMÓòJxZXr§|žUØ߀2?<3F>ñ™GòÊü¬¢}÷<>å¥îw÷ñ“,On;ÔbðŒK"åÑz0î󦮟߰Àçƒ Ð||~#€) 9=k9¿7Ï­Ã7M“ý—ÚØ?Òçó¹ƒR÷õ±%îe¥¬ôt(u¶gà4ûP6ykòiaîCUw4MóhòA(uã¾#ù(Þ¢ëŸ:Ú§™¯ª—±Sž9Y•¾Ÿ¿íP¿¯Û>¿æ(ŠõkÄ0 ZõÀΩÚÊ/ÎgŒ@>ø(\€Îà;àó`
ù|˲ØrºCÌýV(
’Ç.<2E>àù|giÏÀiZân¢ööÒ:ÄØ#€¡ÔY (ʆgcfÚ)ÔñTÞ‡…d~ÖkY $ÑÁäý_¿ã]æ ÂúhôÈè9¥ªG"Ñ.»ØÿÙ<C3BF>3º?åAßòuÃÂçûø|Pí~…‹Î€Îà àó`¸G.²ºÐS€†"x>?="ç)vKÐÇ®xÒE@5wZ´ÿH+c@P6š¦ ŠbV=­G,Ë¢ïŽQæÓBú¯àe¶ö*óE±Å4ãÎïÒGZÈþWw¸ì¥õ`œ¥DJ§î)Ô~
ŸïàóAµû.::ƒ/€Ïo@€áR:× 15$Bî·àóÓõù¼ ã<7F>[â^\O¦š;-ö7}
€š<10>F¹‡/
åv˲r7Â(ðÕdYR©êÇe¾,ïȪÀ7Œ^AXï\¡Ð^(%:ß`rÅ)ëÙ¨ß{ |¾/€ÏÕîWP¸è è ¾>¿À”
Æ0ŒBåš$±ÿÒuݹܲ,ܶ§êó<C3AA>Õ¤ñd*í0üycoïàÎc ö·º¯
'”TUU-¯ÞÞ#”<>EiòŒÌw®&ËrÞÕꎄ™>-º–,ïð(óUõãœUÕ/þó“Y¶ß O˜)…º?å±ûøI¿wuø|¿ÐñÉ'¿Ý³§ìèïï¯öB>ø(\€Îà;àólB¡¿ ‡Ã\=q½C+8ÅŽ,ËÁóØeHŸO8]}z´áÏ<C3A1>ÖƒñƒgøGZ
48ÌáKä¬uW«sK«ëº3<EFBFBD>…ŽÊÌWÅm}HK·6eâ÷nì]ækZ»ûwåI·[ÎKïÉÿæÂPê,øm‡ö6äEæSPõ{·‡ÏòÁ<C3B2>tߟß`J€`ã¼ wÚi˲¸<C2B2>¢?E‰D"¢(ò5«ZtZÿÕço;ÔÏ]=[â^b:”:»ñ@ŒýMßÅ€<02>¥JJ†”!)é”.*¾Sþ
•G
CÌ÷Mb<4D>é­Â°ÏßY0 —-ó-ë”(¶8Wxò™î»s
üƒgx.uÊŸðù R@>ø(\€Îà;àóx4MãêÞi§UU-¤†DQlðF ªÏw*©¡ÔYZÒvxÀEFÑú»<C3BA>ŸÌú
ð ©Tª¯¯/H )ʆ¿²äRošf÷¨ëº³ø¿(´2}%廬 ó)i.<2E>'™/ë£Ñ#Î/Fo(ôÚ¹Î_§¯úò¹ÝÍߘÍ<CB9C>KƒOüÊúÁ³g=çS À¨„ÏòÁ<C3B2>tߟß`J€FÀ²,UU%IRŹœ>æÚ¡p8Lë7xÕçÇ“)§«§%]ñ¤ŒÚv¨?÷+À/tww·Û á•InY¾ ´<>RD4­ì¾hƒ.ozöj­™¦éw™o¾ð…è+«-ëTîZÞe¾aôæ\Ó-|ñK«Œ§/´ß˜¸xœpÃ)
—´ù@ó¹Ò}J°•ðù R8åÃ¥_¹xîíw ê?èJñ«¶lɽèÆ<C3A8>ŒÓçO¾ò*ŒŽº<C5BD>1ú|4 /‚Æ |>42¦i*Še¹P<C2B9>TŸŸvT™î>~>¥Ü
MÕ}}ίl;Ô<>¾á#ººº˜9D‰¾˲¢Ñ¨Ç§–”K<>ªªçc„òpÑò¾àrN뙟´ÒÛEf×<66>§/Î_×Ôô£P赬µÆ"ó IÒÙ
ÒDÙÚtް̧ý&ݺKƒ+7[MMé%›â.i³eÛ ¶2ý»<E280BA>ŽŽß<>Jø|P)œ>áÇ€2jp²D1ÂQ†ÏG 9>%À>¿+žT÷õm<'SlɶCý.nŠÖßÛ;È?òo<C3B2>ú§¿¿¿»»ûرchŠh4ªªª,Ë¢(òÊöz80˲ò¾'UÊQE7Nç
…ü(ó­Mç‰_ZÅÍüè““ÌOgžžÄŸ¼ãVuÁÕÃ&Ÿb<C5B8>ì.óÓö£Ïž<C38F>ÓŸûüÙ/\ðw—„IñÉÎnZŸVλ<C38E>X,F£òøñãþ>ðù "ÀçC_ŸŸ<>@rê™ûü\ö6äâ¦Ú8køO žA÷õ<>iš4Š<34>?<17>%úUöNG(B©&?
E£Ñ™O!M”¹™W”ù*c—ùöGΙ|
úè MK75¥¯œ;è0<ß_ÓnUàóA¥€Ï‡2¾>><1F>ä Ô3 åóãÉ”žÚx <E28093>ëÁøîã'Ñ7@ýcšfQ+.IR­¯l“O(ŠbϧG9ö'o™Éͼ(¶ðU*#ó‰]Òð¾¶
飺÷c¤Ù ©)½r³å0'Üpªv=«ZÀçƒJñÛ={^TÕ‰5«`œÔ;[·¢72Ô=l'_y•S<E280A2>㤎=ZôÊÒ:HÈHÎ@h(ŸO4wº*ÔäáÔ<C3A1>Ah8+Š¢ëz­¸iš²,—gò[–ÏØfŽ]_õe§™·¬Sìÿ+&󉘑ÙÝ.)ó‡g ##ó¿pÁß]RedW­¼I>€2ȪwEƒPÿ8_@xQUÑ <20> @ÝÂýs¥²8*¥=ÄçïítT;<3B>%0Ä@m1 CUUMÓ<®/IR(¢ñKcY×uÓ4k{üÌä—<C3A4><E28094>é,YÏ9ª§·
ÆÓç¯ãržùJÊüråŒÏŸýpÂ%UÎY;@ëOÀçPÐGøøü ‚„  n<C2A0>ϯR{6ˆÏ?1xÆER5wZb`œ1MSÓ4EQh :S“ê·Û+:¬S( Q Ãh„+nY§B¡×¸œ×´v¶¼d¾e¥!ãó×´Å\RåEá$­¼ËŸ@@à;àóƒ
2€º>¿JíÙ >ŸØxÀÍSÅ“)Œ2Pm,Ë¢¡GƒN—Ju_œišŠ¢¸œHQ軾{x1Âá-\Î+ʇ™EI«d>Aס©)ýÅ Ýž{FvõÑ:¡ Þ#ÂçPÐGøøü ‚„  n1M3ZY<59>¥žHDÓ4þ¿¬;Ë_i¹eY<65>Üž èówK¸¨ª½½ƒe ÚH䮸iÊuu~º®<C2BA>¥ Ÿ™|JA<4A>„¹œ‡·d>'-ù¦ï—!ó5­<35>×öW
šššÒ³vKô¿´Ž¢ðÒÀçPÐGøøü ‚„ ÀwhšÆ{É=ý/³ú´¦a Þn èó{N»¨ªÖƒqŒ&Pmr58%%EQ(<28>ÕRÒu]–å±ä3h#ŸY¨ª$í/Š-MM?¢-ë”w™
½æ”ù¼ž_U?®à±ÉrÆç¯is{‰é‹ž¡uêþqS9ÀçPÐGøøü ‚„ À_XÅäýëEÑú\é£>¿Ñ|>¡îës±UC©³SÀ;ÑhT×õˆ<C3B5>ûÃDŽa$ɲÌÞòÅiVJã³lãñ±ÏÕÌÿ¨ÏÉÈütZžûS/2·É©px ÿ¯Hä£
XÊ0ZÂßvI<76>kÚbMMiQ ìX†Ï T <54>ððùA €¿PU•Ý€kšæñ+¦i²¯D"FnºÆôùm‡\„Õþφ0¦üE,ëèèèîîN¥RUÝå ¦îeY¦!“+·iI<69>–Η²«$IMÍýù…óR
…øwé0ÖoßøáKeÈ|VÞÏBÖ;öÇΙhtóóoº¤ÇÙ'ššÒ^nýÇmTVø|ÊúߟT<><54>ø ®J*¶geŸbP ½Ñ˜>¿+žtõcLùŽŽŽvD"Q½½8]Ÿ ~oLÊ¢¬ßéÒÇmÐKM>¿”mmmÎÇ%”¨ö.•ñî3c”ùâ—VO_<4F>îTÇr»<>Ÿ¤Œwbð ûO¦\r#Å/<C}ÜÃkpã4*«7Æ4™P:ÐGøøü ‚„ À_„Ãá2nÀËûVÀhŸ?”:»·w<C2B7>ÕÞÓß.ÂJÝׇ1å/zzz˜9L&“¹ÿkšfÔFUÕÈaŠ¢”4Xò"Š¢$Iº®û±©‰4M“e™=å¬,´ÿµéîî¦ëøÔSOeUõLæ[í[„ó×<C3B3>Qæ[ÎK·6¥wŸº)²¤×Ü9ܼ;<3B>%\rãÊÍÖ?N<ÙÕGwÅ“^.eGGGÞQYŸÀçPÐGøøü ‚„ À_p3ïݼú´®q|~ÛᦤööÒÇm‡ú]´UQUª<>eYÑœBž>:×O$…d¾³Ì»Y[Ë mŠ% Qi¼Ð1ÐñÐKJ;õ9<>$I^Ú§ ´ýR§¯¯oÉ%Y<>‚Ö¹iâ—VUFæSü^)û@6ˆeù|u_ŸKb|èñ¿<þîpæl=wßx*•*4*ëyPÀçP*ÐGøøü ‚„ À_(ŠÂnÀ#‘ˆÇ¯˜¦É¾
5ôLÇ}¾ eT,³Æ»â}SYUÓ¹¨žpjšÍãïþši¨çö˜ôñ»?Þ⢭Ú°íœ<Óz0N#…1 ÃãQÑšQW¼ËO^s>öM9<4D>*ï zqݯ ÇÎàQÂ{iy§ s1Ï>uò%Aç¨ë:°MÕ„¶O°Œ#¤ šõ‚€êë{Ìù<4E>'Ý^1™¿§ü‡¼8Ÿ½¸ä\]}Ñw?¼1Ÿ@@à;àóƒ
2¡ë:÷r^ŸeYÜ°ø³¸Ï/¯bÙ,­ì¦¼\_Z'÷‹n¸ƒ¨/\ð.æJÝ×Ç6Õz0ÎÐ×]ŽÊ‹ Î{Tå‰e/ºÛ㦼•ÇÿÎàeSÎÁ
…ø“øü<C3B8>E€e><3E>š¦it²üu¤êA]Žv4Æt>h ­•÷P .HZéíbÆ·ïýÞSÌИ^’Ì·‡Ã‘ŠË|¢¹ÓbÉmã<6D>¼ñÝ£Ná7^àó(è#||~PABà;¸­*j<>è†ÝYÚu¹.¸øüq¶Á7UvIöç>ÿ?¸‰š¾t -yâW†¼:1x&íðù ž³~u}nª<C2AA>Á²¬¼þÙù‰÷÷><1A>ñtø ʨ´Gºjc<rIø½¿öR<C3B6>솕{«C 'LãÙŠÊ|AXo½£GVoÅe~ÏÀé¬â|ç¼ñî«âù°¹Óòãe))"“àè#||~PABà; ÃpV,‡B!EQTU<54>Ž i-qš|Bmø0ÜçSEx—iº®G\ñ¢‚t<>Ü7Eûò~^ányŸÉ¨5m ööºÈ«<C388>Ç´ç:_¿zr8ŲeY\W¶æqSY=y,rm¶ìôrý-i뺈4ʨyéR}q£²ŸRh‰Ò¦è,|Ÿ<C5B8>êçd¾£>ß|sŠpþº¢>_×?ÍݤñáÑïüS¥d~Úñ¤’ç·pɇo:|¸÷ïY<C3AF>|>e}€ï€Ï*HÈüˆa%Õ£Bæ§>ߣþõ5]ñ¤³üžÂÅ_1ͯ°€‰F£”ÁdY.úd§þ5~ HZé­Â°u§?#­Ô©†ÿeYQ™‰|”³|<E280BA>ùÎRüÝÇOÒ¡ÔY÷âüWßèu>ܤõƒ:¬àó(è#||~PABàS,ËŠD"E+TC¡<43>÷¢ñ`ÓP>ŸP÷õ9Ëï7ˆ¹(¬ž<C2AC>Ó´Ns§Å>n;Ô<>jE >AIU$MÓ ñ°K:'Þ;UË:e½é„];¡¨Ì—$½àf+'óÓŽâ|ʇÌÌï>~Ò%®iuV#dBø|ÊúߟT<><54>ø˲4MË_ápXQ˜|'<27>æóÛ8ËïwK¸X,Z™Öi„ªTP‡ÔVàó´@)Â0 \OÕω÷]e<E28099>„õQÿ ¥hq¾(¶Ðú·|HK

10699
tests/data/plrabn12.txt Normal file

File diff suppressed because it is too large Load Diff

BIN
tests/data/randtest1.gold Normal file

Binary file not shown.

BIN
tests/data/randtest2.gold Normal file

Binary file not shown.

BIN
tests/data/randtest3.gold Normal file

Binary file not shown.

808
tests/data/rfctest1.gold Normal file
View File

@ -0,0 +1,808 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://dublincore.org/documents/2008/08/04/dc-html/">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="robots" content="index,follow" />
<meta name="creator" content="rfcmarkup version 1.119" />
<link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
<meta name="DC.Identifier" content="urn:ietf:rfc:1950" />
<meta name="DC.Description.Abstract" content="This specification defines a lossless compressed data format. This
memo provides information for the Internet community. This memo does
not specify an Internet standard of any kind." />
<meta name="DC.Creator" content="Gailly, J-L." />
<meta name="DC.Creator" content="Deutsch, P." />
<meta name="DC.Date.Issued" content="May, 1996" />
<meta name="DC.Title" content="ZLIB Compressed Data Format Specification version 3.3" />
<link rel="icon" href="/images/rfc.png" type="image/png" />
<link rel="shortcut icon" href="/images/rfc.png" type="image/png" />
<title>RFC 1950 - ZLIB Compressed Data Format Specification version 3.3</title>
<style type="text/css">
@media only screen
and (min-width: 992px)
and (max-width: 1199px) {
body { font-size: 14pt; }
div.content { width: 96ex; margin: 0 auto; }
}
@media only screen
and (min-width: 768px)
and (max-width: 991px) {
body { font-size: 14pt; }
div.content { width: 96ex; margin: 0 auto; }
}
@media only screen
and (min-width: 480px)
and (max-width: 767px) {
body { font-size: 11pt; }
div.content { width: 96ex; margin: 0 auto; }
}
@media only screen
and (max-width: 479px) {
body { font-size: 8pt; }
div.content { width: 96ex; margin: 0 auto; }
}
@media only screen
and (min-device-width : 375px)
and (max-device-width : 667px) {
body { font-size: 9.5pt; }
div.content { width: 96ex; margin: 0 1px; }
}
@media only screen
and (min-device-width: 1200px) {
body { font-size: 10pt; margin: 0 4em; }
div.content { width: 96ex; margin: 0; }
}
h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {
font-weight: bold;
line-height: 0pt;
display: inline;
white-space: pre;
font-family: monospace;
font-size: 1em;
font-weight: bold;
}
pre {
font-size: 1em;
margin-top: 0px;
margin-bottom: 0px;
}
.pre {
white-space: pre;
font-family: monospace;
}
.header{
font-weight: bold;
}
.newpage {
page-break-before: always;
}
.invisible {
text-decoration: none;
color: white;
}
a.selflink {
color: black;
text-decoration: none;
}
@media print {
body {
font-family: monospace;
font-size: 10.5pt;
}
h1, h2, h3, h4, h5, h6 {
font-size: 1em;
}
a:link, a:visited {
color: inherit;
text-decoration: none;
}
.noprint {
display: none;
}
}
@media screen {
.grey, .grey a:link, .grey a:visited {
color: #777;
}
.docinfo {
background-color: #EEE;
}
.top {
border-top: 7px solid #EEE;
}
.bgwhite { background-color: white; }
.bgred { background-color: #F44; }
.bggrey { background-color: #666; }
.bgbrown { background-color: #840; }
.bgorange { background-color: #FA0; }
.bgyellow { background-color: #EE0; }
.bgmagenta{ background-color: #F4F; }
.bgblue { background-color: #66F; }
.bgcyan { background-color: #4DD; }
.bggreen { background-color: #4F4; }
.legend { font-size: 90%; }
.cplate { font-size: 70%; border: solid grey 1px; }
}
</style>
<!--[if IE]>
<style>
body {
font-size: 13px;
margin: 10px 10px;
}
</style>
<![endif]-->
<script type="text/javascript"><!--
function addHeaderTags() {
var spans = document.getElementsByTagName("span");
for (var i=0; i < spans.length; i++) {
var elem = spans[i];
if (elem) {
var level = elem.getAttribute("class");
if (level == "h1" || level == "h2" || level == "h3" || level == "h4" || level == "h5" || level == "h6") {
elem.innerHTML = "<"+level+">"+elem.innerHTML+"</"+level+">";
}
}
}
}
var legend_html = "Colour legend:<br /> <table> <tr><td>Unknown:</td> <td><span class='cplate bgwhite'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Draft:</td> <td><span class='cplate bgred'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Informational:</td> <td><span class='cplate bgorange'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Experimental:</td> <td><span class='cplate bgyellow'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Best Common Practice:</td> <td><span class='cplate bgmagenta'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Proposed Standard:</td> <td><span class='cplate bgblue'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Draft Standard (old designation):</td> <td><span class='cplate bgcyan'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Internet Standard:</td> <td><span class='cplate bggreen'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Historic:</td> <td><span class='cplate bggrey'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Obsolete:</td> <td><span class='cplate bgbrown'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> </table>";
function showElem(id) {
var elem = document.getElementById(id);
elem.innerHTML = eval(id+"_html");
elem.style.visibility='visible';
}
function hideElem(id) {
var elem = document.getElementById(id);
elem.style.visibility='hidden';
elem.innerHTML = "";
}
// -->
</script>
</head>
<body onload="addHeaderTags()">
<div class="content">
<div style="height: 13px;">
<div onmouseover="this.style.cursor='pointer';"
onclick="showElem('legend');"
onmouseout="hideElem('legend')"
style="height: 6px; position: absolute;"
class="pre noprint docinfo bgorange"
title="Click for colour legend." > </div>
<div id="legend"
class="docinfo noprint pre legend"
style="position:absolute; top: 4px; left: 4ex; visibility:hidden; background-color: white; padding: 4px 9px 5px 7px; border: solid #345 1px; "
onmouseover="showElem('legend');"
onmouseout="hideElem('legend');">
</div>
</div>
<span class="pre noprint docinfo top">[<a href="../html/" title="Document search and retrieval page">Docs</a>] [<a href="/rfc/rfc1950.txt" title="Plaintext version of this document">txt</a>|<a href="/pdf/rfc1950" title="PDF version of this document">pdf</a>] [<a href="./draft-deutsch-zlib-spec" title="draft-deutsch-zlib-spec">draft-deutsch-zli...</a>] [<a href="/rfcdiff?difftype=--hwdiff&amp;url2=rfc1950" title="Inline diff (wdiff)">Diff1</a>] [<a href="/rfcdiff?url2=rfc1950" title="Side-by-side diff">Diff2</a>] </span><br />
<span class="pre noprint docinfo"> </span><br />
<span class="pre noprint docinfo"> INFORMATIONAL</span><br />
<span class="pre noprint docinfo"> </span><br />
<pre>
Network Working Group P. Deutsch
Request for Comments: 1950 Aladdin Enterprises
Category: Informational J-L. Gailly
Info-ZIP
May 1996
<span class="h1">ZLIB Compressed Data Format Specification version 3.3</span>
Status of This Memo
This memo provides information for the Internet community. This memo
does not specify an Internet standard of any kind. Distribution of
this memo is unlimited.
IESG Note:
The IESG takes no position on the validity of any Intellectual
Property Rights statements contained in this document.
Notices
Copyright (c) 1996 L. Peter Deutsch and Jean-Loup Gailly
Permission is granted to copy and distribute this document for any
purpose and without charge, including translations into other
languages and incorporation into compilations, provided that the
copyright notice and this notice are preserved, and that any
substantive changes or deletions from the original are clearly
marked.
A pointer to the latest version of this and related documentation in
HTML format can be found at the URL
&lt;<a href="ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html">ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html</a>&gt;.
Abstract
This specification defines a lossless compressed data format. The
data can be produced or consumed, even for an arbitrarily long
sequentially presented input data stream, using only an a priori
bounded amount of intermediate storage. The format presently uses
the DEFLATE compression method but can be easily extended to use
other compression methods. It can be implemented readily in a manner
not covered by patents. This specification also defines the ADLER-32
checksum (an extension and improvement of the Fletcher checksum),
used for detection of data corruption, and provides an algorithm for
computing it.
<span class="grey">Deutsch &amp; Gailly Informational [Page 1]</span></pre>
<hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-2" id="page-2" href="#page-2" class="invisible"> </a>
<span class="grey"><a href="./rfc1950">RFC 1950</a> ZLIB Compressed Data Format Specification May 1996</span>
Table of Contents
<a href="#section-1">1</a>. Introduction ................................................... <a href="#page-2">2</a>
<a href="#section-1.1">1.1</a>. Purpose ................................................... <a href="#page-2">2</a>
<a href="#section-1.2">1.2</a>. Intended audience ......................................... <a href="#page-3">3</a>
<a href="#section-1.3">1.3</a>. Scope ..................................................... <a href="#page-3">3</a>
<a href="#section-1.4">1.4</a>. Compliance ................................................ <a href="#page-3">3</a>
<a href="#section-1.5">1.5</a>. Definitions of terms and conventions used ................ <a href="#page-3">3</a>
<a href="#section-1.6">1.6</a>. Changes from previous versions ............................ <a href="#page-3">3</a>
<a href="#section-2">2</a>. Detailed specification ......................................... <a href="#page-3">3</a>
<a href="#section-2.1">2.1</a>. Overall conventions ....................................... <a href="#page-3">3</a>
<a href="#section-2.2">2.2</a>. Data format ............................................... <a href="#page-4">4</a>
<a href="#section-2.3">2.3</a>. Compliance ................................................ <a href="#page-7">7</a>
<a href="#section-3">3</a>. References ..................................................... <a href="#page-7">7</a>
<a href="#section-4">4</a>. Source code .................................................... <a href="#page-8">8</a>
<a href="#section-5">5</a>. Security Considerations ........................................ <a href="#page-8">8</a>
<a href="#section-6">6</a>. Acknowledgements ............................................... <a href="#page-8">8</a>
<a href="#section-7">7</a>. Authors' Addresses ............................................. <a href="#page-8">8</a>
<a href="#section-8">8</a>. Appendix: Rationale ............................................ <a href="#page-9">9</a>
<a href="#section-9">9</a>. Appendix: Sample code ..........................................<a href="#page-10">10</a>
<span class="h2"><a class="selflink" name="section-1" href="#section-1">1</a>. Introduction</span>
1.1. Purpose
The purpose of this specification is to define a lossless
compressed data format that:
* Is independent of CPU type, operating system, file system,
and character set, and hence can be used for interchange;
* Can be produced or consumed, even for an arbitrarily long
sequentially presented input data stream, using only an a
priori bounded amount of intermediate storage, and hence can
be used in data communications or similar structures such as
Unix filters;
* Can use a number of different compression methods;
* Can be implemented readily in a manner not covered by
patents, and hence can be practiced freely.
The data format defined by this specification does not attempt to
allow random access to compressed data.
<span class="grey">Deutsch &amp; Gailly Informational [Page 2]</span></pre>
<hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-3" id="page-3" href="#page-3" class="invisible"> </a>
<span class="grey"><a href="./rfc1950">RFC 1950</a> ZLIB Compressed Data Format Specification May 1996</span>
1.2. Intended audience
This specification is intended for use by implementors of software
to compress data into zlib format and/or decompress data from zlib
format.
The text of the specification assumes a basic background in
programming at the level of bits and other primitive data
representations.
1.3. Scope
The specification specifies a compressed data format that can be
used for in-memory compression of a sequence of arbitrary bytes.
1.4. Compliance
Unless otherwise indicated below, a compliant decompressor must be
able to accept and decompress any data set that conforms to all
the specifications presented here; a compliant compressor must
produce data sets that conform to all the specifications presented
here.
1.5. Definitions of terms and conventions used
byte: 8 bits stored or transmitted as a unit (same as an octet).
(For this specification, a byte is exactly 8 bits, even on
machines which store a character on a number of bits different
from 8.) See below, for the numbering of bits within a byte.
1.6. Changes from previous versions
Version 3.1 was the first public release of this specification.
In version 3.2, some terminology was changed and the Adler-32
sample code was rewritten for clarity. In version 3.3, the
support for a preset dictionary was introduced, and the
specification was converted to RFC style.
<span class="h2"><a class="selflink" name="section-2" href="#section-2">2</a>. Detailed specification</span>
2.1. Overall conventions
In the diagrams below, a box like this:
+---+
| | &lt;-- the vertical bars might be missing
+---+
<span class="grey">Deutsch &amp; Gailly Informational [Page 3]</span></pre>
<hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-4" id="page-4" href="#page-4" class="invisible"> </a>
<span class="grey"><a href="./rfc1950">RFC 1950</a> ZLIB Compressed Data Format Specification May 1996</span>
represents one byte; a box like this:
+==============+
| |
+==============+
represents a variable number of bytes.
Bytes stored within a computer do not have a "bit order", since
they are always treated as a unit. However, a byte considered as
an integer between 0 and 255 does have a most- and least-
significant bit, and since we write numbers with the most-
significant digit on the left, we also write bytes with the most-
significant bit on the left. In the diagrams below, we number the
bits of a byte so that bit 0 is the least-significant bit, i.e.,
the bits are numbered:
+--------+
|76543210|
+--------+
Within a computer, a number may occupy multiple bytes. All
multi-byte numbers in the format described here are stored with
the MOST-significant byte first (at the lower memory address).
For example, the decimal number 520 is stored as:
0 1
+--------+--------+
|00000010|00001000|
+--------+--------+
^ ^
| |
| + less significant byte = 8
+ more significant byte = 2 x 256
2.2. Data format
A zlib stream has the following structure:
0 1
+---+---+
|CMF|FLG| (more--&gt;)
+---+---+
<span class="grey">Deutsch &amp; Gailly Informational [Page 4]</span></pre>
<hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-5" id="page-5" href="#page-5" class="invisible"> </a>
<span class="grey"><a href="./rfc1950">RFC 1950</a> ZLIB Compressed Data Format Specification May 1996</span>
(if FLG.FDICT set)
0 1 2 3
+---+---+---+---+
| DICTID | (more--&gt;)
+---+---+---+---+
+=====================+---+---+---+---+
|...compressed data...| ADLER32 |
+=====================+---+---+---+---+
Any data which may appear after ADLER32 are not part of the zlib
stream.
CMF (Compression Method and flags)
This byte is divided into a 4-bit compression method and a 4-
bit information field depending on the compression method.
bits 0 to 3 CM Compression method
bits 4 to 7 CINFO Compression info
CM (Compression method)
This identifies the compression method used in the file. CM = 8
denotes the "deflate" compression method with a window size up
to 32K. This is the method used by gzip and PNG (see
references [<a href="#ref-1" title="&quot;GZIP Compressed Data Format Specification&quot;">1</a>] and [<a href="#ref-2" title="&quot;PNG (Portable Network Graphics) specification&quot;">2</a>] in Chapter 3, below, for the reference
documents). CM = 15 is reserved. It might be used in a future
version of this specification to indicate the presence of an
extra field before the compressed data.
CINFO (Compression info)
For CM = 8, CINFO is the base-2 logarithm of the LZ77 window
size, minus eight (CINFO=7 indicates a 32K window size). Values
of CINFO above 7 are not allowed in this version of the
specification. CINFO is not defined in this specification for
CM not equal to 8.
FLG (FLaGs)
This flag byte is divided as follows:
bits 0 to 4 FCHECK (check bits for CMF and FLG)
bit 5 FDICT (preset dictionary)
bits 6 to 7 FLEVEL (compression level)
The FCHECK value must be such that CMF and FLG, when viewed as
a 16-bit unsigned integer stored in MSB order (CMF*256 + FLG),
is a multiple of 31.
<span class="grey">Deutsch &amp; Gailly Informational [Page 5]</span></pre>
<hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-6" id="page-6" href="#page-6" class="invisible"> </a>
<span class="grey"><a href="./rfc1950">RFC 1950</a> ZLIB Compressed Data Format Specification May 1996</span>
FDICT (Preset dictionary)
If FDICT is set, a DICT dictionary identifier is present
immediately after the FLG byte. The dictionary is a sequence of
bytes which are initially fed to the compressor without
producing any compressed output. DICT is the Adler-32 checksum
of this sequence of bytes (see the definition of ADLER32
below). The decompressor can use this identifier to determine
which dictionary has been used by the compressor.
FLEVEL (Compression level)
These flags are available for use by specific compression
methods. The "deflate" method (CM = 8) sets these flags as
follows:
0 - compressor used fastest algorithm
1 - compressor used fast algorithm
2 - compressor used default algorithm
3 - compressor used maximum compression, slowest algorithm
The information in FLEVEL is not needed for decompression; it
is there to indicate if recompression might be worthwhile.
compressed data
For compression method 8, the compressed data is stored in the
deflate compressed data format as described in the document
"DEFLATE Compressed Data Format Specification" by L. Peter
Deutsch. (See reference [<a href="#ref-3" title="&quot;DEFLATE Compressed Data Format Specification&quot;">3</a>] in Chapter 3, below)
Other compressed data formats are not specified in this version
of the zlib specification.
ADLER32 (Adler-32 checksum)
This contains a checksum value of the uncompressed data
(excluding any dictionary data) computed according to Adler-32
algorithm. This algorithm is a 32-bit extension and improvement
of the Fletcher algorithm, used in the ITU-T X.224 / ISO 8073
standard. See references [<a href="#ref-4" title="&quot;An Arithmetic Checksum for Serial Transmissions,&quot;">4</a>] and [<a href="#ref-5" title="&quot;Checksum Algorithms,&quot;">5</a>] in Chapter 3, below)
Adler-32 is composed of two sums accumulated per byte: s1 is
the sum of all bytes, s2 is the sum of all s1 values. Both sums
are done modulo 65521. s1 is initialized to 1, s2 to zero. The
Adler-32 checksum is stored as s2*65536 + s1 in most-
significant-byte first (network) order.
<span class="grey">Deutsch &amp; Gailly Informational [Page 6]</span></pre>
<hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-7" id="page-7" href="#page-7" class="invisible"> </a>
<span class="grey"><a href="./rfc1950">RFC 1950</a> ZLIB Compressed Data Format Specification May 1996</span>
2.3. Compliance
A compliant compressor must produce streams with correct CMF, FLG
and ADLER32, but need not support preset dictionaries. When the
zlib data format is used as part of another standard data format,
the compressor may use only preset dictionaries that are specified
by this other data format. If this other format does not use the
preset dictionary feature, the compressor must not set the FDICT
flag.
A compliant decompressor must check CMF, FLG, and ADLER32, and
provide an error indication if any of these have incorrect values.
A compliant decompressor must give an error indication if CM is
not one of the values defined in this specification (only the
value 8 is permitted in this version), since another value could
indicate the presence of new features that would cause subsequent
data to be interpreted incorrectly. A compliant decompressor must
give an error indication if FDICT is set and DICTID is not the
identifier of a known preset dictionary. A decompressor may
ignore FLEVEL and still be compliant. When the zlib data format
is being used as a part of another standard format, a compliant
decompressor must support all the preset dictionaries specified by
the other format. When the other format does not use the preset
dictionary feature, a compliant decompressor must reject any
stream in which the FDICT flag is set.
<span class="h2"><a class="selflink" name="section-3" href="#section-3">3</a>. References</span>
[<a name="ref-1" id="ref-1">1</a>] Deutsch, L.P.,"GZIP Compressed Data Format Specification",
available in <a href="ftp://ftp.uu.net/pub/archiving/zip/doc/">ftp://ftp.uu.net/pub/archiving/zip/doc/</a>
[<a name="ref-2" id="ref-2">2</a>] Thomas Boutell, "PNG (Portable Network Graphics) specification",
available in <a href="ftp://ftp.uu.net/graphics/png/documents/">ftp://ftp.uu.net/graphics/png/documents/</a>
[<a name="ref-3" id="ref-3">3</a>] Deutsch, L.P.,"DEFLATE Compressed Data Format Specification",
available in <a href="ftp://ftp.uu.net/pub/archiving/zip/doc/">ftp://ftp.uu.net/pub/archiving/zip/doc/</a>
[<a name="ref-4" id="ref-4">4</a>] Fletcher, J. G., "An Arithmetic Checksum for Serial
Transmissions," IEEE Transactions on Communications, Vol. COM-30,
No. 1, January 1982, pp. 247-252.
[<a name="ref-5" id="ref-5">5</a>] ITU-T Recommendation X.224, Annex D, "Checksum Algorithms,"
November, 1993, pp. 144, 145. (Available from
gopher://info.itu.ch). ITU-T X.244 is also the same as ISO 8073.
<span class="grey">Deutsch &amp; Gailly Informational [Page 7]</span></pre>
<hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-8" id="page-8" href="#page-8" class="invisible"> </a>
<span class="grey"><a href="./rfc1950">RFC 1950</a> ZLIB Compressed Data Format Specification May 1996</span>
<span class="h2"><a class="selflink" name="section-4" href="#section-4">4</a>. Source code</span>
Source code for a C language implementation of a "zlib" compliant
library is available at <a href="ftp://ftp.uu.net/pub/archiving/zip/zlib/">ftp://ftp.uu.net/pub/archiving/zip/zlib/</a>.
<span class="h2"><a class="selflink" name="section-5" href="#section-5">5</a>. Security Considerations</span>
A decoder that fails to check the ADLER32 checksum value may be
subject to undetected data corruption.
<span class="h2"><a class="selflink" name="section-6" href="#section-6">6</a>. Acknowledgements</span>
Trademarks cited in this document are the property of their
respective owners.
Jean-Loup Gailly and Mark Adler designed the zlib format and wrote
the related software described in this specification. Glenn
Randers-Pehrson converted this document to RFC and HTML format.
<span class="h2"><a class="selflink" name="section-7" href="#section-7">7</a>. Authors' Addresses</span>
L. Peter Deutsch
Aladdin Enterprises
203 Santa Margarita Ave.
Menlo Park, CA 94025
Phone: (415) 322-0103 (AM only)
FAX: (415) 322-1734
EMail: &lt;ghost@aladdin.com&gt;
Jean-Loup Gailly
EMail: &lt;gzip@prep.ai.mit.edu&gt;
Questions about the technical content of this specification can be
sent by email to
Jean-Loup Gailly &lt;gzip@prep.ai.mit.edu&gt; and
Mark Adler &lt;madler@alumni.caltech.edu&gt;
Editorial comments on this specification can be sent by email to
L. Peter Deutsch &lt;ghost@aladdin.com&gt; and
Glenn Randers-Pehrson &lt;randeg@alumni.rpi.edu&gt;
<span class="grey">Deutsch &amp; Gailly Informational [Page 8]</span></pre>
<hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-9" id="page-9" href="#page-9" class="invisible"> </a>
<span class="grey"><a href="./rfc1950">RFC 1950</a> ZLIB Compressed Data Format Specification May 1996</span>
<span class="h2"><a class="selflink" name="section-8" href="#section-8">8</a>. Appendix: Rationale</span>
8.1. Preset dictionaries
A preset dictionary is specially useful to compress short input
sequences. The compressor can take advantage of the dictionary
context to encode the input in a more compact manner. The
decompressor can be initialized with the appropriate context by
virtually decompressing a compressed version of the dictionary
without producing any output. However for certain compression
algorithms such as the deflate algorithm this operation can be
achieved without actually performing any decompression.
The compressor and the decompressor must use exactly the same
dictionary. The dictionary may be fixed or may be chosen among a
certain number of predefined dictionaries, according to the kind
of input data. The decompressor can determine which dictionary has
been chosen by the compressor by checking the dictionary
identifier. This document does not specify the contents of
predefined dictionaries, since the optimal dictionaries are
application specific. Standard data formats using this feature of
the zlib specification must precisely define the allowed
dictionaries.
8.2. The Adler-32 algorithm
The Adler-32 algorithm is much faster than the CRC32 algorithm yet
still provides an extremely low probability of undetected errors.
The modulo on unsigned long accumulators can be delayed for 5552
bytes, so the modulo operation time is negligible. If the bytes
are a, b, c, the second sum is 3a + 2b + c + 3, and so is position
and order sensitive, unlike the first sum, which is just a
checksum. That 65521 is prime is important to avoid a possible
large class of two-byte errors that leave the check unchanged.
(The Fletcher checksum uses 255, which is not prime and which also
makes the Fletcher check insensitive to single byte changes 0 &lt;-&gt;
255.)
The sum s1 is initialized to 1 instead of zero to make the length
of the sequence part of s2, so that the length does not have to be
checked separately. (Any sequence of zeroes has a Fletcher
checksum of zero.)
<span class="grey">Deutsch &amp; Gailly Informational [Page 9]</span></pre>
<hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-10" id="page-10" href="#page-10" class="invisible"> </a>
<span class="grey"><a href="./rfc1950">RFC 1950</a> ZLIB Compressed Data Format Specification May 1996</span>
<span class="h2"><a class="selflink" name="section-9" href="#section-9">9</a>. Appendix: Sample code</span>
The following C code computes the Adler-32 checksum of a data buffer.
It is written for clarity, not for speed. The sample code is in the
ANSI C programming language. Non C users may find it easier to read
with these hints:
&amp; Bitwise AND operator.
&gt;&gt; Bitwise right shift operator. When applied to an
unsigned quantity, as here, right shift inserts zero bit(s)
at the left.
&lt;&lt; Bitwise left shift operator. Left shift inserts zero
bit(s) at the right.
++ "n++" increments the variable n.
% modulo operator: a % b is the remainder of a divided by b.
#define BASE 65521 /* largest prime smaller than 65536 */
/*
Update a running Adler-32 checksum with the bytes buf[0..len-1]
and return the updated checksum. The Adler-32 checksum should be
initialized to 1.
Usage example:
unsigned long adler = 1L;
while (read_buffer(buffer, length) != EOF) {
adler = update_adler32(adler, buffer, length);
}
if (adler != original_adler) error();
*/
unsigned long update_adler32(unsigned long adler,
unsigned char *buf, int len)
{
unsigned long s1 = adler &amp; 0xffff;
unsigned long s2 = (adler &gt;&gt; 16) &amp; 0xffff;
int n;
for (n = 0; n &lt; len; n++) {
s1 = (s1 + buf[n]) % BASE;
s2 = (s2 + s1) % BASE;
}
return (s2 &lt;&lt; 16) + s1;
}
/* Return the adler32 of the bytes buf[0..len-1] */
<span class="grey">Deutsch &amp; Gailly Informational [Page 10]</span></pre>
<hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-11" id="page-11" href="#page-11" class="invisible"> </a>
<span class="grey"><a href="./rfc1950">RFC 1950</a> ZLIB Compressed Data Format Specification May 1996</span>
unsigned long adler32(unsigned char *buf, int len)
{
return update_adler32(1L, buf, len);
}
Deutsch &amp; Gailly Informational [Page 11]
</pre><br />
<span class="noprint"><small><small>Html markup produced by rfcmarkup 1.119, available from
<a href="https://tools.ietf.org/tools/rfcmarkup/">https://tools.ietf.org/tools/rfcmarkup/</a>
</small></small></span>
</div>
</body>
</html>

1146
tests/data/rfctest2.gold Normal file

File diff suppressed because it is too large Load Diff

864
tests/data/rfctest3.gold Normal file
View File

@ -0,0 +1,864 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://dublincore.org/documents/2008/08/04/dc-html/">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="robots" content="index,follow" />
<meta name="creator" content="rfcmarkup version 1.119" />
<link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
<meta name="DC.Identifier" content="urn:ietf:rfc:1952" />
<meta name="DC.Description.Abstract" content="This specification defines a lossless compressed data format that is
compatible with the widely used GZIP utility. This memo provides
information for the Internet community. This memo does not specify an
Internet standard of any kind." />
<meta name="DC.Creator" content="L. Peter Deutsch &lt;ghost@aladdin.com&gt;" />
<meta name="DC.Date.Issued" content="May, 1996" />
<meta name="DC.Title" content="GZIP file format specification version 4.3" />
<link rel="icon" href="/images/rfc.png" type="image/png" />
<link rel="shortcut icon" href="/images/rfc.png" type="image/png" />
<title>RFC 1952 - GZIP file format specification version 4.3</title>
<style type="text/css">
@media only screen
and (min-width: 992px)
and (max-width: 1199px) {
body { font-size: 14pt; }
div.content { width: 96ex; margin: 0 auto; }
}
@media only screen
and (min-width: 768px)
and (max-width: 991px) {
body { font-size: 14pt; }
div.content { width: 96ex; margin: 0 auto; }
}
@media only screen
and (min-width: 480px)
and (max-width: 767px) {
body { font-size: 11pt; }
div.content { width: 96ex; margin: 0 auto; }
}
@media only screen
and (max-width: 479px) {
body { font-size: 8pt; }
div.content { width: 96ex; margin: 0 auto; }
}
@media only screen
and (min-device-width : 375px)
and (max-device-width : 667px) {
body { font-size: 9.5pt; }
div.content { width: 96ex; margin: 0 1px; }
}
@media only screen
and (min-device-width: 1200px) {
body { font-size: 10pt; margin: 0 4em; }
div.content { width: 96ex; margin: 0; }
}
h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {
font-weight: bold;
line-height: 0pt;
display: inline;
white-space: pre;
font-family: monospace;
font-size: 1em;
font-weight: bold;
}
pre {
font-size: 1em;
margin-top: 0px;
margin-bottom: 0px;
}
.pre {
white-space: pre;
font-family: monospace;
}
.header{
font-weight: bold;
}
.newpage {
page-break-before: always;
}
.invisible {
text-decoration: none;
color: white;
}
a.selflink {
color: black;
text-decoration: none;
}
@media print {
body {
font-family: monospace;
font-size: 10.5pt;
}
h1, h2, h3, h4, h5, h6 {
font-size: 1em;
}
a:link, a:visited {
color: inherit;
text-decoration: none;
}
.noprint {
display: none;
}
}
@media screen {
.grey, .grey a:link, .grey a:visited {
color: #777;
}
.docinfo {
background-color: #EEE;
}
.top {
border-top: 7px solid #EEE;
}
.bgwhite { background-color: white; }
.bgred { background-color: #F44; }
.bggrey { background-color: #666; }
.bgbrown { background-color: #840; }
.bgorange { background-color: #FA0; }
.bgyellow { background-color: #EE0; }
.bgmagenta{ background-color: #F4F; }
.bgblue { background-color: #66F; }
.bgcyan { background-color: #4DD; }
.bggreen { background-color: #4F4; }
.legend { font-size: 90%; }
.cplate { font-size: 70%; border: solid grey 1px; }
}
</style>
<!--[if IE]>
<style>
body {
font-size: 13px;
margin: 10px 10px;
}
</style>
<![endif]-->
<script type="text/javascript"><!--
function addHeaderTags() {
var spans = document.getElementsByTagName("span");
for (var i=0; i < spans.length; i++) {
var elem = spans[i];
if (elem) {
var level = elem.getAttribute("class");
if (level == "h1" || level == "h2" || level == "h3" || level == "h4" || level == "h5" || level == "h6") {
elem.innerHTML = "<"+level+">"+elem.innerHTML+"</"+level+">";
}
}
}
}
var legend_html = "Colour legend:<br /> <table> <tr><td>Unknown:</td> <td><span class='cplate bgwhite'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Draft:</td> <td><span class='cplate bgred'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Informational:</td> <td><span class='cplate bgorange'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Experimental:</td> <td><span class='cplate bgyellow'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Best Common Practice:</td> <td><span class='cplate bgmagenta'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Proposed Standard:</td> <td><span class='cplate bgblue'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Draft Standard (old designation):</td> <td><span class='cplate bgcyan'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Internet Standard:</td> <td><span class='cplate bggreen'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Historic:</td> <td><span class='cplate bggrey'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> <tr><td>Obsolete:</td> <td><span class='cplate bgbrown'>&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr> </table>";
function showElem(id) {
var elem = document.getElementById(id);
elem.innerHTML = eval(id+"_html");
elem.style.visibility='visible';
}
function hideElem(id) {
var elem = document.getElementById(id);
elem.style.visibility='hidden';
elem.innerHTML = "";
}
// -->
</script>
</head>
<body onload="addHeaderTags()">
<div class="content">
<div style="height: 13px;">
<div onmouseover="this.style.cursor='pointer';"
onclick="showElem('legend');"
onmouseout="hideElem('legend')"
style="height: 6px; position: absolute;"
class="pre noprint docinfo bgorange"
title="Click for colour legend." > </div>
<div id="legend"
class="docinfo noprint pre legend"
style="position:absolute; top: 4px; left: 4ex; visibility:hidden; background-color: white; padding: 4px 9px 5px 7px; border: solid #345 1px; "
onmouseover="showElem('legend');"
onmouseout="hideElem('legend');">
</div>
</div>
<span class="pre noprint docinfo top">[<a href="../html/" title="Document search and retrieval page">Docs</a>] [<a href="/rfc/rfc1952.txt" title="Plaintext version of this document">txt</a>|<a href="/pdf/rfc1952" title="PDF version of this document">pdf</a>] [<a href="./draft-deutsch-gzip-spec" title="draft-deutsch-gzip-spec">draft-deutsch-gzi...</a>] [<a href="/rfcdiff?difftype=--hwdiff&amp;url2=rfc1952" title="Inline diff (wdiff)">Diff1</a>] [<a href="/rfcdiff?url2=rfc1952" title="Side-by-side diff">Diff2</a>] </span><br />
<span class="pre noprint docinfo"> </span><br />
<span class="pre noprint docinfo"> INFORMATIONAL</span><br />
<span class="pre noprint docinfo"> </span><br />
<pre>
Network Working Group P. Deutsch
Request for Comments: 1952 Aladdin Enterprises
Category: Informational May 1996
<span class="h1">GZIP file format specification version 4.3</span>
Status of This Memo
This memo provides information for the Internet community. This memo
does not specify an Internet standard of any kind. Distribution of
this memo is unlimited.
IESG Note:
The IESG takes no position on the validity of any Intellectual
Property Rights statements contained in this document.
Notices
Copyright (c) 1996 L. Peter Deutsch
Permission is granted to copy and distribute this document for any
purpose and without charge, including translations into other
languages and incorporation into compilations, provided that the
copyright notice and this notice are preserved, and that any
substantive changes or deletions from the original are clearly
marked.
A pointer to the latest version of this and related documentation in
HTML format can be found at the URL
&lt;<a href="ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html">ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html</a>&gt;.
Abstract
This specification defines a lossless compressed data format that is
compatible with the widely used GZIP utility. The format includes a
cyclic redundancy check value for detecting data corruption. The
format presently uses the DEFLATE method of compression but can be
easily extended to use other compression methods. The format can be
implemented readily in a manner not covered by patents.
<span class="grey">Deutsch Informational [Page 1]</span></pre>
<hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-2" id="page-2" href="#page-2" class="invisible"> </a>
<span class="grey"><a href="./rfc1952">RFC 1952</a> GZIP File Format Specification May 1996</span>
Table of Contents
<a href="#section-1">1</a>. Introduction ................................................... <a href="#page-2">2</a>
<a href="#section-1.1">1.1</a>. Purpose ................................................... <a href="#page-2">2</a>
<a href="#section-1.2">1.2</a>. Intended audience ......................................... <a href="#page-3">3</a>
<a href="#section-1.3">1.3</a>. Scope ..................................................... <a href="#page-3">3</a>
<a href="#section-1.4">1.4</a>. Compliance ................................................ <a href="#page-3">3</a>
<a href="#section-1.5">1.5</a>. Definitions of terms and conventions used ................. <a href="#page-3">3</a>
<a href="#section-1.6">1.6</a>. Changes from previous versions ............................ <a href="#page-3">3</a>
<a href="#section-2">2</a>. Detailed specification ......................................... <a href="#page-4">4</a>
<a href="#section-2.1">2.1</a>. Overall conventions ....................................... <a href="#page-4">4</a>
<a href="#section-2.2">2.2</a>. File format ............................................... <a href="#page-5">5</a>
<a href="#section-2.3">2.3</a>. Member format ............................................. <a href="#page-5">5</a>
<a href="#section-2.3.1">2.3.1</a>. Member header and trailer ........................... <a href="#page-6">6</a>
<a href="#section-2.3.1.1">2.3.1.1</a>. Extra field ................................... <a href="#page-8">8</a>
<a href="#section-2.3.1.2">2.3.1.2</a>. Compliance .................................... <a href="#page-9">9</a>
<a href="#section-3">3</a>. References .................................................. <a href="#page-9">9</a>
<a href="#section-4">4</a>. Security Considerations .................................... <a href="#page-10">10</a>
<a href="#section-5">5</a>. Acknowledgements ........................................... <a href="#page-10">10</a>
<a href="#section-6">6</a>. Author's Address ........................................... <a href="#page-10">10</a>
<a href="#section-7">7</a>. Appendix: Jean-Loup Gailly's gzip utility .................. <a href="#page-11">11</a>
<a href="#section-8">8</a>. Appendix: Sample CRC Code .................................. <a href="#page-11">11</a>
<span class="h2"><a class="selflink" name="section-1" href="#section-1">1</a>. Introduction</span>
1.1. Purpose
The purpose of this specification is to define a lossless
compressed data format that:
* Is independent of CPU type, operating system, file system,
and character set, and hence can be used for interchange;
* Can compress or decompress a data stream (as opposed to a
randomly accessible file) to produce another data stream,
using only an a priori bounded amount of intermediate
storage, and hence can be used in data communications or
similar structures such as Unix filters;
* Compresses data with efficiency comparable to the best
currently available general-purpose compression methods,
and in particular considerably better than the "compress"
program;
* Can be implemented readily in a manner not covered by
patents, and hence can be practiced freely;
* Is compatible with the file format produced by the current
widely used gzip utility, in that conforming decompressors
will be able to read data produced by the existing gzip
compressor.
<span class="grey">Deutsch Informational [Page 2]</span></pre>
<hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-3" id="page-3" href="#page-3" class="invisible"> </a>
<span class="grey"><a href="./rfc1952">RFC 1952</a> GZIP File Format Specification May 1996</span>
The data format defined by this specification does not attempt to:
* Provide random access to compressed data;
* Compress specialized data (e.g., raster graphics) as well as
the best currently available specialized algorithms.
1.2. Intended audience
This specification is intended for use by implementors of software
to compress data into gzip format and/or decompress data from gzip
format.
The text of the specification assumes a basic background in
programming at the level of bits and other primitive data
representations.
1.3. Scope
The specification specifies a compression method and a file format
(the latter assuming only that a file can store a sequence of
arbitrary bytes). It does not specify any particular interface to
a file system or anything about character sets or encodings
(except for file names and comments, which are optional).
1.4. Compliance
Unless otherwise indicated below, a compliant decompressor must be
able to accept and decompress any file that conforms to all the
specifications presented here; a compliant compressor must produce
files that conform to all the specifications presented here. The
material in the appendices is not part of the specification per se
and is not relevant to compliance.
1.5. Definitions of terms and conventions used
byte: 8 bits stored or transmitted as a unit (same as an octet).
(For this specification, a byte is exactly 8 bits, even on
machines which store a character on a number of bits different
from 8.) See below for the numbering of bits within a byte.
1.6. Changes from previous versions
There have been no technical changes to the gzip format since
version 4.1 of this specification. In version 4.2, some
terminology was changed, and the sample CRC code was rewritten for
clarity and to eliminate the requirement for the caller to do pre-
and post-conditioning. Version 4.3 is a conversion of the
specification to RFC style.
<span class="grey">Deutsch Informational [Page 3]</span></pre>
<hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-4" id="page-4" href="#page-4" class="invisible"> </a>
<span class="grey"><a href="./rfc1952">RFC 1952</a> GZIP File Format Specification May 1996</span>
<span class="h2"><a class="selflink" name="section-2" href="#section-2">2</a>. Detailed specification</span>
2.1. Overall conventions
In the diagrams below, a box like this:
+---+
| | &lt;-- the vertical bars might be missing
+---+
represents one byte; a box like this:
+==============+
| |
+==============+
represents a variable number of bytes.
Bytes stored within a computer do not have a "bit order", since
they are always treated as a unit. However, a byte considered as
an integer between 0 and 255 does have a most- and least-
significant bit, and since we write numbers with the most-
significant digit on the left, we also write bytes with the most-
significant bit on the left. In the diagrams below, we number the
bits of a byte so that bit 0 is the least-significant bit, i.e.,
the bits are numbered:
+--------+
|76543210|
+--------+
This document does not address the issue of the order in which
bits of a byte are transmitted on a bit-sequential medium, since
the data format described here is byte- rather than bit-oriented.
Within a computer, a number may occupy multiple bytes. All
multi-byte numbers in the format described here are stored with
the least-significant byte first (at the lower memory address).
For example, the decimal number 520 is stored as:
0 1
+--------+--------+
|00001000|00000010|
+--------+--------+
^ ^
| |
| + more significant byte = 2 x 256
+ less significant byte = 8
<span class="grey">Deutsch Informational [Page 4]</span></pre>
<hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-5" id="page-5" href="#page-5" class="invisible"> </a>
<span class="grey"><a href="./rfc1952">RFC 1952</a> GZIP File Format Specification May 1996</span>
2.2. File format
A gzip file consists of a series of "members" (compressed data
sets). The format of each member is specified in the following
section. The members simply appear one after another in the file,
with no additional information before, between, or after them.
2.3. Member format
Each member has the following structure:
+---+---+---+---+---+---+---+---+---+---+
|ID1|ID2|CM |FLG| MTIME |XFL|OS | (more--&gt;)
+---+---+---+---+---+---+---+---+---+---+
(if FLG.FEXTRA set)
+---+---+=================================+
| XLEN |...XLEN bytes of "extra field"...| (more--&gt;)
+---+---+=================================+
(if FLG.FNAME set)
+=========================================+
|...original file name, zero-terminated...| (more--&gt;)
+=========================================+
(if FLG.FCOMMENT set)
+===================================+
|...file comment, zero-terminated...| (more--&gt;)
+===================================+
(if FLG.FHCRC set)
+---+---+
| CRC16 |
+---+---+
+=======================+
|...compressed blocks...| (more--&gt;)
+=======================+
0 1 2 3 4 5 6 7
+---+---+---+---+---+---+---+---+
| CRC32 | ISIZE |
+---+---+---+---+---+---+---+---+
<span class="grey">Deutsch Informational [Page 5]</span></pre>
<hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-6" id="page-6" href="#page-6" class="invisible"> </a>
<span class="grey"><a href="./rfc1952">RFC 1952</a> GZIP File Format Specification May 1996</span>
2.3.1. Member header and trailer
ID1 (IDentification 1)
ID2 (IDentification 2)
These have the fixed values ID1 = 31 (0x1f, \037), ID2 = 139
(0x8b, \213), to identify the file as being in gzip format.
CM (Compression Method)
This identifies the compression method used in the file. CM
= 0-7 are reserved. CM = 8 denotes the "deflate"
compression method, which is the one customarily used by
gzip and which is documented elsewhere.
FLG (FLaGs)
This flag byte is divided into individual bits as follows:
bit 0 FTEXT
bit 1 FHCRC
bit 2 FEXTRA
bit 3 FNAME
bit 4 FCOMMENT
bit 5 reserved
bit 6 reserved
bit 7 reserved
If FTEXT is set, the file is probably ASCII text. This is
an optional indication, which the compressor may set by
checking a small amount of the input data to see whether any
non-ASCII characters are present. In case of doubt, FTEXT
is cleared, indicating binary data. For systems which have
different file formats for ascii text and binary data, the
decompressor can use FTEXT to choose the appropriate format.
We deliberately do not specify the algorithm used to set
this bit, since a compressor always has the option of
leaving it cleared and a decompressor always has the option
of ignoring it and letting some other program handle issues
of data conversion.
If FHCRC is set, a CRC16 for the gzip header is present,
immediately before the compressed data. The CRC16 consists
of the two least significant bytes of the CRC32 for all
bytes of the gzip header up to and not including the CRC16.
[The FHCRC bit was never set by versions of gzip up to
1.2.4, even though it was documented with a different
meaning in gzip 1.2.4.]
If FEXTRA is set, optional extra fields are present, as
described in a following section.
<span class="grey">Deutsch Informational [Page 6]</span></pre>
<hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-7" id="page-7" href="#page-7" class="invisible"> </a>
<span class="grey"><a href="./rfc1952">RFC 1952</a> GZIP File Format Specification May 1996</span>
If FNAME is set, an original file name is present,
terminated by a zero byte. The name must consist of ISO
8859-1 (LATIN-1) characters; on operating systems using
EBCDIC or any other character set for file names, the name
must be translated to the ISO LATIN-1 character set. This
is the original name of the file being compressed, with any
directory components removed, and, if the file being
compressed is on a file system with case insensitive names,
forced to lower case. There is no original file name if the
data was compressed from a source other than a named file;
for example, if the source was stdin on a Unix system, there
is no file name.
If FCOMMENT is set, a zero-terminated file comment is
present. This comment is not interpreted; it is only
intended for human consumption. The comment must consist of
ISO 8859-1 (LATIN-1) characters. Line breaks should be
denoted by a single line feed character (10 decimal).
Reserved FLG bits must be zero.
MTIME (Modification TIME)
This gives the most recent modification time of the original
file being compressed. The time is in Unix format, i.e.,
seconds since 00:00:00 GMT, Jan. 1, 1970. (Note that this
may cause problems for MS-DOS and other systems that use
local rather than Universal time.) If the compressed data
did not come from a file, MTIME is set to the time at which
compression started. MTIME = 0 means no time stamp is
available.
XFL (eXtra FLags)
These flags are available for use by specific compression
methods. The "deflate" method (CM = 8) sets these flags as
follows:
XFL = 2 - compressor used maximum compression,
slowest algorithm
XFL = 4 - compressor used fastest algorithm
OS (Operating System)
This identifies the type of file system on which compression
took place. This may be useful in determining end-of-line
convention for text files. The currently defined values are
as follows:
<span class="grey">Deutsch Informational [Page 7]</span></pre>
<hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-8" id="page-8" href="#page-8" class="invisible"> </a>
<span class="grey"><a href="./rfc1952">RFC 1952</a> GZIP File Format Specification May 1996</span>
0 - FAT filesystem (MS-DOS, OS/2, NT/Win32)
1 - Amiga
2 - VMS (or OpenVMS)
3 - Unix
4 - VM/CMS
5 - Atari TOS
6 - HPFS filesystem (OS/2, NT)
7 - Macintosh
8 - Z-System
9 - CP/M
10 - TOPS-20
11 - NTFS filesystem (NT)
12 - QDOS
13 - Acorn RISCOS
255 - unknown
XLEN (eXtra LENgth)
If FLG.FEXTRA is set, this gives the length of the optional
extra field. See below for details.
CRC32 (CRC-32)
This contains a Cyclic Redundancy Check value of the
uncompressed data computed according to CRC-32 algorithm
used in the ISO 3309 standard and in <a href="#section-8.1.1.6.2">section 8.1.1.6.2</a> of
ITU-T recommendation V.42. (See <a href="http://www.iso.ch">http://www.iso.ch</a> for
ordering ISO documents. See gopher://info.itu.ch for an
online version of ITU-T V.42.)
ISIZE (Input SIZE)
This contains the size of the original (uncompressed) input
data modulo 2^32.
2.3.1.1. Extra field
If the FLG.FEXTRA bit is set, an "extra field" is present in
the header, with total length XLEN bytes. It consists of a
series of subfields, each of the form:
+---+---+---+---+==================================+
|SI1|SI2| LEN |... LEN bytes of subfield data ...|
+---+---+---+---+==================================+
SI1 and SI2 provide a subfield ID, typically two ASCII letters
with some mnemonic value. Jean-Loup Gailly
&lt;gzip@prep.ai.mit.edu&gt; is maintaining a registry of subfield
IDs; please send him any subfield ID you wish to use. Subfield
IDs with SI2 = 0 are reserved for future use. The following
IDs are currently defined:
<span class="grey">Deutsch Informational [Page 8]</span></pre>
<hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-9" id="page-9" href="#page-9" class="invisible"> </a>
<span class="grey"><a href="./rfc1952">RFC 1952</a> GZIP File Format Specification May 1996</span>
SI1 SI2 Data
---------- ---------- ----
0x41 ('A') 0x70 ('P') Apollo file type information
LEN gives the length of the subfield data, excluding the 4
initial bytes.
2.3.1.2. Compliance
A compliant compressor must produce files with correct ID1,
ID2, CM, CRC32, and ISIZE, but may set all the other fields in
the fixed-length part of the header to default values (255 for
OS, 0 for all others). The compressor must set all reserved
bits to zero.
A compliant decompressor must check ID1, ID2, and CM, and
provide an error indication if any of these have incorrect
values. It must examine FEXTRA/XLEN, FNAME, FCOMMENT and FHCRC
at least so it can skip over the optional fields if they are
present. It need not examine any other part of the header or
trailer; in particular, a decompressor may ignore FTEXT and OS
and always produce binary output, and still be compliant. A
compliant decompressor must give an error indication if any
reserved bit is non-zero, since such a bit could indicate the
presence of a new field that would cause subsequent data to be
interpreted incorrectly.
<span class="h2"><a class="selflink" name="section-3" href="#section-3">3</a>. References</span>
[<a name="ref-1" id="ref-1">1</a>] "Information Processing - 8-bit single-byte coded graphic
character sets - Part 1: Latin alphabet No.1" (ISO 8859-1:1987).
The ISO 8859-1 (Latin-1) character set is a superset of 7-bit
ASCII. Files defining this character set are available as
iso_8859-1.* in <a href="ftp://ftp.uu.net/graphics/png/documents/">ftp://ftp.uu.net/graphics/png/documents/</a>
[<a name="ref-2" id="ref-2">2</a>] ISO 3309
[<a name="ref-3" id="ref-3">3</a>] ITU-T recommendation V.42
[<a name="ref-4" id="ref-4">4</a>] Deutsch, L.P.,"DEFLATE Compressed Data Format Specification",
available in <a href="ftp://ftp.uu.net/pub/archiving/zip/doc/">ftp://ftp.uu.net/pub/archiving/zip/doc/</a>
[<a name="ref-5" id="ref-5">5</a>] Gailly, J.-L., GZIP documentation, available as gzip-*.tar in
<a href="ftp://prep.ai.mit.edu/pub/gnu/">ftp://prep.ai.mit.edu/pub/gnu/</a>
[<a name="ref-6" id="ref-6">6</a>] Sarwate, D.V., "Computation of Cyclic Redundancy Checks via Table
Look-Up", Communications of the ACM, 31(8), pp.1008-1013.
<span class="grey">Deutsch Informational [Page 9]</span></pre>
<hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-10" id="page-10" href="#page-10" class="invisible"> </a>
<span class="grey"><a href="./rfc1952">RFC 1952</a> GZIP File Format Specification May 1996</span>
[<a name="ref-7" id="ref-7">7</a>] Schwaderer, W.D., "CRC Calculation", April 85 PC Tech Journal,
pp.118-133.
[<a name="ref-8" id="ref-8">8</a>] <a href="ftp://ftp.adelaide.edu.au/pub/rocksoft/papers/crc_v3.txt">ftp://ftp.adelaide.edu.au/pub/rocksoft/papers/crc_v3.txt</a>,
describing the CRC concept.
<span class="h2"><a class="selflink" name="section-4" href="#section-4">4</a>. Security Considerations</span>
Any data compression method involves the reduction of redundancy in
the data. Consequently, any corruption of the data is likely to have
severe effects and be difficult to correct. Uncompressed text, on
the other hand, will probably still be readable despite the presence
of some corrupted bytes.
It is recommended that systems using this data format provide some
means of validating the integrity of the compressed data, such as by
setting and checking the CRC-32 check value.
<span class="h2"><a class="selflink" name="section-5" href="#section-5">5</a>. Acknowledgements</span>
Trademarks cited in this document are the property of their
respective owners.
Jean-Loup Gailly designed the gzip format and wrote, with Mark Adler,
the related software described in this specification. Glenn
Randers-Pehrson converted this document to RFC and HTML format.
<span class="h2"><a class="selflink" name="section-6" href="#section-6">6</a>. Author's Address</span>
L. Peter Deutsch
Aladdin Enterprises
203 Santa Margarita Ave.
Menlo Park, CA 94025
Phone: (415) 322-0103 (AM only)
FAX: (415) 322-1734
EMail: &lt;ghost@aladdin.com&gt;
Questions about the technical content of this specification can be
sent by email to:
Jean-Loup Gailly &lt;gzip@prep.ai.mit.edu&gt; and
Mark Adler &lt;madler@alumni.caltech.edu&gt;
Editorial comments on this specification can be sent by email to:
L. Peter Deutsch &lt;ghost@aladdin.com&gt; and
Glenn Randers-Pehrson &lt;randeg@alumni.rpi.edu&gt;
<span class="grey">Deutsch Informational [Page 10]</span></pre>
<hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-11" id="page-11" href="#page-11" class="invisible"> </a>
<span class="grey"><a href="./rfc1952">RFC 1952</a> GZIP File Format Specification May 1996</span>
<span class="h2"><a class="selflink" name="section-7" href="#section-7">7</a>. Appendix: Jean-Loup Gailly's gzip utility</span>
The most widely used implementation of gzip compression, and the
original documentation on which this specification is based, were
created by Jean-Loup Gailly &lt;gzip@prep.ai.mit.edu&gt;. Since this
implementation is a de facto standard, we mention some more of its
features here. Again, the material in this section is not part of
the specification per se, and implementations need not follow it to
be compliant.
When compressing or decompressing a file, gzip preserves the
protection, ownership, and modification time attributes on the local
file system, since there is no provision for representing protection
attributes in the gzip file format itself. Since the file format
includes a modification time, the gzip decompressor provides a
command line switch that assigns the modification time from the file,
rather than the local modification time of the compressed input, to
the decompressed output.
<span class="h2"><a class="selflink" name="section-8" href="#section-8">8</a>. Appendix: Sample CRC Code</span>
The following sample code represents a practical implementation of
the CRC (Cyclic Redundancy Check). (See also ISO 3309 and ITU-T V.42
for a formal specification.)
The sample code is in the ANSI C programming language. Non C users
may find it easier to read with these hints:
&amp; Bitwise AND operator.
^ Bitwise exclusive-OR operator.
&gt;&gt; Bitwise right shift operator. When applied to an
unsigned quantity, as here, right shift inserts zero
bit(s) at the left.
! Logical NOT operator.
++ "n++" increments the variable n.
0xNNN 0x introduces a hexadecimal (base 16) constant.
Suffix L indicates a long value (at least 32 bits).
/* Table of CRCs of all 8-bit messages. */
unsigned long crc_table[256];
/* Flag: has the table been computed? Initially false. */
int crc_table_computed = 0;
/* Make the table for a fast CRC. */
void make_crc_table(void)
{
unsigned long c;
<span class="grey">Deutsch Informational [Page 11]</span></pre>
<hr class='noprint' style='width: 96ex;' align='left'/><!--NewPage--><pre class='newpage'><a name="page-12" id="page-12" href="#page-12" class="invisible"> </a>
<span class="grey"><a href="./rfc1952">RFC 1952</a> GZIP File Format Specification May 1996</span>
int n, k;
for (n = 0; n &lt; 256; n++) {
c = (unsigned long) n;
for (k = 0; k &lt; 8; k++) {
if (c &amp; 1) {
c = 0xedb88320L ^ (c &gt;&gt; 1);
} else {
c = c &gt;&gt; 1;
}
}
crc_table[n] = c;
}
crc_table_computed = 1;
}
/*
Update a running crc with the bytes buf[0..len-1] and return
the updated crc. The crc should be initialized to zero. Pre- and
post-conditioning (one's complement) is performed within this
function so it shouldn't be done by the caller. Usage example:
unsigned long crc = 0L;
while (read_buffer(buffer, length) != EOF) {
crc = update_crc(crc, buffer, length);
}
if (crc != original_crc) error();
*/
unsigned long update_crc(unsigned long crc,
unsigned char *buf, int len)
{
unsigned long c = crc ^ 0xffffffffL;
int n;
if (!crc_table_computed)
make_crc_table();
for (n = 0; n &lt; len; n++) {
c = crc_table[(c ^ buf[n]) &amp; 0xff] ^ (c &gt;&gt; 8);
}
return c ^ 0xffffffffL;
}
/* Return the CRC of the bytes buf[0..len-1]. */
unsigned long crc(unsigned char *buf, int len)
{
return update_crc(0L, buf, len);
}
Deutsch Informational [Page 12]
</pre><br />
<span class="noprint"><small><small>Html markup produced by rfcmarkup 1.119, available from
<a href="https://tools.ietf.org/tools/rfcmarkup/">https://tools.ietf.org/tools/rfcmarkup/</a>
</small></small></span>
</div>
</body>
</html>

374300
tests/data/tor-list.gold Normal file

File diff suppressed because it is too large Load Diff

10000
tests/data/urls.10K Normal file

File diff suppressed because it is too large Load Diff

BIN
tests/data/zerotest1.gold Normal file

Binary file not shown.

BIN
tests/data/zerotest2.gold Normal file

Binary file not shown.

BIN
tests/data/zerotest3.gold Normal file

Binary file not shown.

14
tests/test_all.nim Normal file
View File

@ -0,0 +1,14 @@
# nim-miniz
# Copyright (c) 2021 Status Research & Development GmbH
# Licensed under either of
# * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE))
# * MIT license ([LICENSE-MIT](LICENSE-MIT))
# at your option.
# This file may not be copied, modified, or distributed except according to
# those terms.
{. warning[UnusedImport]:off .}
import
test_codec,
test_gzip

91
tests/test_codec.nim Normal file
View File

@ -0,0 +1,91 @@
# nim-miniz
# Copyright (c) 2021 Status Research & Development GmbH
# Licensed under either of
# * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE))
# * MIT license ([LICENSE-MIT](LICENSE-MIT))
# at your option.
# This file may not be copied, modified, or distributed except according to
# those terms.
import
std/[unittest, os],
../miniz/miniz_api
proc decompress[T: byte | char](data: openArray[T]): seq[byte] =
var mz = MzStream(
next_in: cast[ptr cuchar](data[0].unsafeAddr),
avail_in: data.len.cuint
)
const windowBits = MZ_DEFAULT_WINDOW_BITS
doAssert(mz.inflateInit2(windowBits) == MZ_OK)
var res: seq[byte]
var buf: array[0xFFFF, byte]
while true:
mz.next_out = cast[ptr cuchar](buf[0].addr)
mz.avail_out = buf.len.cuint
let r = mz.inflate(MZ_SYNC_FLUSH)
let outSize = buf.len - mz.avail_out.int
res.add toOpenArray(buf, 0, outSize-1)
if r == MZ_STREAM_END:
break
elif r == MZ_OK:
continue
else:
doAssert(false, "decompression error")
doAssert(mz.inflateEnd() == MZ_OK)
return res
proc compress[T: byte | char](data: openArray[T]): seq[byte] =
var mz = MzStream(
next_in: if data.len == 0: nil else: cast[ptr cuchar](data[0].unsafeAddr),
avail_in: data.len.cuint
)
const windowBits = MZ_DEFAULT_WINDOW_BITS
doAssert(mz.deflateInit2(
level = MZ_DEFAULT_LEVEL,
meth = MZ_DEFLATED,
windowBits,
1,
strategy = MZ_DEFAULT_STRATEGY) == MZ_OK
)
let maxSize = mz.deflateBound(data.len.culong).int
var res: seq[byte]
var buf: array[0xFFFF, byte]
while true:
mz.next_out = cast[ptr cuchar](buf[0].addr)
mz.avail_out = buf.len.cuint
let r = mz.deflate(MZ_FINISH)
let outSize = buf.len - mz.avail_out.int
res.add toOpenArray(buf, 0, outSize-1)
if r == MZ_STREAM_END:
break
elif r == MZ_OK:
continue
else:
doAssert(false, "compression error")
doAssert(mz.deflateEnd() == MZ_OK)
return res
proc toBytes(s: string): seq[byte] =
result = newSeq[byte](s.len)
if s.len > 0:
copyMem(result[0].addr, s[0].unsafeAddr, s.len)
suite "codec test suite":
const
rawFolder = "tests" / "data"
for path in walkDirRec(rawFolder):
let parts = splitFile(path)
test parts.name:
let s = readFile(path).toBytes
let c = compress(s)
let dc = decompress(c)
check dc == s

25
tests/test_gzip.nim Normal file
View File

@ -0,0 +1,25 @@
# nim-miniz
# Copyright (c) 2021 Status Research & Development GmbH
# Licensed under either of
# * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE))
# * MIT license ([LICENSE-MIT](LICENSE-MIT))
# at your option.
# This file may not be copied, modified, or distributed except according to
# those terms.
import
std/[unittest, os],
../miniz/gzip
suite "gzip test suite":
const
rawFolder = "tests" / "data"
for path in walkDirRec(rawFolder):
let parts = splitFile(path)
test parts.name:
let s = readFile(path)
let str = string.gzip(s)
let bytes = seq[byte].gzip(s)
check bytes.len == str.len