pax_global_header00006660000000000000000000000064127166541360014525gustar00rootroot0000000000000052 comment=ab40ae7f0b43fe223a39b63cbc0529b09f3ef653 bitstring-bitstring-3.1.5/000077500000000000000000000000001271665413600155435ustar00rootroot00000000000000bitstring-bitstring-3.1.5/LICENSE000066400000000000000000000021271271665413600165520ustar00rootroot00000000000000The MIT License Copyright (c) 2006-2016 Scott Griffiths (dr.scottgriffiths@gmail.com) 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. bitstring-bitstring-3.1.5/MANIFEST.in000066400000000000000000000002311271665413600172750ustar00rootroot00000000000000include test/test.m1v include test/smalltestfile include release_notes.txt include README.rst prune doc include doc/bitstring_manual.pdf include LICENSE bitstring-bitstring-3.1.5/README.rst000066400000000000000000000051401271665413600172320ustar00rootroot00000000000000================ bitstring module ================ **bitstring** is a pure Python module designed to help make the creation and analysis of binary data as simple and natural as possible. Bitstrings can be constructed from integers (big and little endian), hex, octal, binary, strings or files. They can be sliced, joined, reversed, inserted into, overwritten, etc. with simple functions or slice notation. They can also be read from, searched and replaced, and navigated in, similar to a file or stream. bitstring is open source software, and has been released under the MIT licence. This module works in both Python 2.7 and Python 3. Documentation ------------- The manual for the bitstring module is available here . It contains a walk-through of all the features and a complete reference section. It is also available as a PDF as part of the source download. Installation ------------ If you have downloaded and unzipped the package then you need to run the ``setup.py`` script with the 'install' argument:: python setup.py install You may need to run this with root privileges on Unix-like systems. If you haven't yet downloaded the package then you can just try:: easy_install bitstring or :: pip install bitstring Simple Examples --------------- Creation:: >>> a = BitArray(bin='00101') >>> b = Bits(a_file_object) >>> c = BitArray('0xff, 0b101, 0o65, uint:6=22') >>> d = pack('intle:16, hex=a, 0b1', 100, a='0x34f') >>> e = pack('<16h', *range(16)) Different interpretations, slicing and concatenation:: >>> a = BitArray('0x1af') >>> a.hex, a.bin, a.uint ('1af', '000110101111', 431) >>> a[10:3:-1].bin '1110101' >>> 3*a + '0b100' BitArray('0o0657056705674') Reading data sequentially:: >>> b = BitStream('0x160120f') >>> b.read(12).hex '160' >>> b.pos = 0 >>> b.read('uint:12') 352 >>> b.readlist('uint:12, bin:3') [288, '111'] Searching, inserting and deleting:: >>> c = BitArray('0b00010010010010001111') # c.hex == '0x1248f' >>> c.find('0x48') (8,) >>> c.replace('0b001', '0xabc') >>> c.insert('0b0000') >>> del c[12:16] Unit Tests ---------- The 400+ unit tests should all pass for Python 2.6 and later. ---- The bitstring module has been released as open source under the MIT License. Copyright (c) 2016 Scott Griffiths For more information see the project's homepage on GitHub: bitstring-bitstring-3.1.5/bitstring.py000066400000000000000000005040321271665413600201260ustar00rootroot00000000000000#!/usr/bin/env python """ This package defines classes that simplify bit-wise creation, manipulation and interpretation of data. Classes: Bits -- An immutable container for binary data. BitArray -- A mutable container for binary data. ConstBitStream -- An immutable container with streaming methods. BitStream -- A mutable container with streaming methods. Bits (base class) / \ + mutating methods / \ + streaming methods / \ BitArray ConstBitStream \ / \ / \ / BitStream Functions: pack -- Create a BitStream from a format string. Exceptions: Error -- Module exception base class. CreationError -- Error during creation. InterpretError -- Inappropriate interpretation of binary data. ByteAlignError -- Whole byte position or length needed. ReadError -- Reading or peeking past the end of a bitstring. https://github.com/scott-griffiths/bitstring """ __licence__ = """ The MIT License Copyright (c) 2006-2016 Scott Griffiths (dr.scottgriffiths@gmail.com) 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. """ __version__ = "3.1.5" __author__ = "Scott Griffiths" import numbers import copy import sys import re import binascii import mmap import os import struct import operator import collections import array byteorder = sys.byteorder bytealigned = False """Determines whether a number of methods default to working only on byte boundaries.""" # Maximum number of digits to use in __str__ and __repr__. MAX_CHARS = 250 # Maximum size of caches used for speed optimisations. CACHE_SIZE = 1000 class Error(Exception): """Base class for errors in the bitstring module.""" def __init__(self, *params): self.msg = params[0] if params else '' self.params = params[1:] def __str__(self): if self.params: return self.msg.format(*self.params) return self.msg class ReadError(Error, IndexError): """Reading or peeking past the end of a bitstring.""" def __init__(self, *params): Error.__init__(self, *params) class InterpretError(Error, ValueError): """Inappropriate interpretation of binary data.""" def __init__(self, *params): Error.__init__(self, *params) class ByteAlignError(Error): """Whole-byte position or length needed.""" def __init__(self, *params): Error.__init__(self, *params) class CreationError(Error, ValueError): """Inappropriate argument during bitstring creation.""" def __init__(self, *params): Error.__init__(self, *params) class ConstByteStore(object): """Stores raw bytes together with a bit offset and length. Used internally - not part of public interface. """ __slots__ = ('offset', '_rawarray', 'bitlength') def __init__(self, data, bitlength=None, offset=None): """data is either a bytearray or a MmapByteArray""" self._rawarray = data if offset is None: offset = 0 if bitlength is None: bitlength = 8 * len(data) - offset self.offset = offset self.bitlength = bitlength def getbit(self, pos): assert 0 <= pos < self.bitlength byte, bit = divmod(self.offset + pos, 8) return bool(self._rawarray[byte] & (128 >> bit)) def getbyte(self, pos): """Direct access to byte data.""" return self._rawarray[pos] def getbyteslice(self, start, end): """Direct access to byte data.""" c = self._rawarray[start:end] return c @property def bytelength(self): if not self.bitlength: return 0 sb = self.offset // 8 eb = (self.offset + self.bitlength - 1) // 8 return eb - sb + 1 def __copy__(self): return ByteStore(self._rawarray[:], self.bitlength, self.offset) def _appendstore(self, store): """Join another store on to the end of this one.""" if not store.bitlength: return # Set new array offset to the number of bits in the final byte of current array. store = offsetcopy(store, (self.offset + self.bitlength) % 8) if store.offset: # first do the byte with the join. joinval = (self._rawarray.pop() & (255 ^ (255 >> store.offset)) | (store.getbyte(0) & (255 >> store.offset))) self._rawarray.append(joinval) self._rawarray.extend(store._rawarray[1:]) else: self._rawarray.extend(store._rawarray) self.bitlength += store.bitlength def _prependstore(self, store): """Join another store on to the start of this one.""" if not store.bitlength: return # Set the offset of copy of store so that it's final byte # ends in a position that matches the offset of self, # then join self on to the end of it. store = offsetcopy(store, (self.offset - store.bitlength) % 8) assert (store.offset + store.bitlength) % 8 == self.offset % 8 bit_offset = self.offset % 8 if bit_offset: # first do the byte with the join. store.setbyte(-1, (store.getbyte(-1) & (255 ^ (255 >> bit_offset)) | \ (self._rawarray[self.byteoffset] & (255 >> bit_offset)))) store._rawarray.extend(self._rawarray[self.byteoffset + 1: self.byteoffset + self.bytelength]) else: store._rawarray.extend(self._rawarray[self.byteoffset: self.byteoffset + self.bytelength]) self._rawarray = store._rawarray self.offset = store.offset self.bitlength += store.bitlength @property def byteoffset(self): return self.offset // 8 @property def rawbytes(self): return self._rawarray class ByteStore(ConstByteStore): """Adding mutating methods to ConstByteStore Used internally - not part of public interface. """ __slots__ = () def setbit(self, pos): assert 0 <= pos < self.bitlength byte, bit = divmod(self.offset + pos, 8) self._rawarray[byte] |= (128 >> bit) def unsetbit(self, pos): assert 0 <= pos < self.bitlength byte, bit = divmod(self.offset + pos, 8) self._rawarray[byte] &= ~(128 >> bit) def invertbit(self, pos): assert 0 <= pos < self.bitlength byte, bit = divmod(self.offset + pos, 8) self._rawarray[byte] ^= (128 >> bit) def setbyte(self, pos, value): self._rawarray[pos] = value def setbyteslice(self, start, end, value): self._rawarray[start:end] = value def offsetcopy(s, newoffset): """Return a copy of a ByteStore with the newoffset. Not part of public interface. """ assert 0 <= newoffset < 8 if not s.bitlength: return copy.copy(s) else: if newoffset == s.offset % 8: return ByteStore(s.getbyteslice(s.byteoffset, s.byteoffset + s.bytelength), s.bitlength, newoffset) newdata = [] d = s._rawarray assert newoffset != s.offset % 8 if newoffset < s.offset % 8: # We need to shift everything left shiftleft = s.offset % 8 - newoffset # First deal with everything except for the final byte for x in range(s.byteoffset, s.byteoffset + s.bytelength - 1): newdata.append(((d[x] << shiftleft) & 0xff) +\ (d[x + 1] >> (8 - shiftleft))) bits_in_last_byte = (s.offset + s.bitlength) % 8 if not bits_in_last_byte: bits_in_last_byte = 8 if bits_in_last_byte > shiftleft: newdata.append((d[s.byteoffset + s.bytelength - 1] << shiftleft) & 0xff) else: # newoffset > s._offset % 8 shiftright = newoffset - s.offset % 8 newdata.append(s.getbyte(0) >> shiftright) for x in range(s.byteoffset + 1, s.byteoffset + s.bytelength): newdata.append(((d[x - 1] << (8 - shiftright)) & 0xff) +\ (d[x] >> shiftright)) bits_in_last_byte = (s.offset + s.bitlength) % 8 if not bits_in_last_byte: bits_in_last_byte = 8 if bits_in_last_byte + shiftright > 8: newdata.append((d[s.byteoffset + s.bytelength - 1] << (8 - shiftright)) & 0xff) new_s = ByteStore(bytearray(newdata), s.bitlength, newoffset) assert new_s.offset == newoffset return new_s def equal(a, b): """Return True if ByteStores a == b. Not part of public interface. """ # We want to return False for inequality as soon as possible, which # means we get lots of special cases. # First the easy one - compare lengths: a_bitlength = a.bitlength b_bitlength = b.bitlength if a_bitlength != b_bitlength: return False if not a_bitlength: assert b_bitlength == 0 return True # Make 'a' the one with the smaller offset if (a.offset % 8) > (b.offset % 8): a, b = b, a # and create some aliases a_bitoff = a.offset % 8 b_bitoff = b.offset % 8 a_byteoffset = a.byteoffset b_byteoffset = b.byteoffset a_bytelength = a.bytelength b_bytelength = b.bytelength da = a._rawarray db = b._rawarray # If they are pointing to the same data, they must be equal if da is db and a.offset == b.offset: return True if a_bitoff == b_bitoff: bits_spare_in_last_byte = 8 - (a_bitoff + a_bitlength) % 8 if bits_spare_in_last_byte == 8: bits_spare_in_last_byte = 0 # Special case for a, b contained in a single byte if a_bytelength == 1: a_val = ((da[a_byteoffset] << a_bitoff) & 0xff) >> (8 - a_bitlength) b_val = ((db[b_byteoffset] << b_bitoff) & 0xff) >> (8 - b_bitlength) return a_val == b_val # Otherwise check first byte if da[a_byteoffset] & (0xff >> a_bitoff) != db[b_byteoffset] & (0xff >> b_bitoff): return False # then everything up to the last b_a_offset = b_byteoffset - a_byteoffset for x in range(1 + a_byteoffset, a_byteoffset + a_bytelength - 1): if da[x] != db[b_a_offset + x]: return False # and finally the last byte return (da[a_byteoffset + a_bytelength - 1] >> bits_spare_in_last_byte == db[b_byteoffset + b_bytelength - 1] >> bits_spare_in_last_byte) assert a_bitoff != b_bitoff # This is how much we need to shift a to the right to compare with b: shift = b_bitoff - a_bitoff # Special case for b only one byte long if b_bytelength == 1: assert a_bytelength == 1 a_val = ((da[a_byteoffset] << a_bitoff) & 0xff) >> (8 - a_bitlength) b_val = ((db[b_byteoffset] << b_bitoff) & 0xff) >> (8 - b_bitlength) return a_val == b_val # Special case for a only one byte long if a_bytelength == 1: assert b_bytelength == 2 a_val = ((da[a_byteoffset] << a_bitoff) & 0xff) >> (8 - a_bitlength) b_val = ((db[b_byteoffset] << 8) + db[b_byteoffset + 1]) << b_bitoff b_val &= 0xffff b_val >>= 16 - b_bitlength return a_val == b_val # Compare first byte of b with bits from first byte of a if (da[a_byteoffset] & (0xff >> a_bitoff)) >> shift != db[b_byteoffset] & (0xff >> b_bitoff): return False # Now compare every full byte of b with bits from 2 bytes of a for x in range(1, b_bytelength - 1): # Construct byte from 2 bytes in a to compare to byte in b b_val = db[b_byteoffset + x] a_val = ((da[a_byteoffset + x - 1] << 8) + da[a_byteoffset + x]) >> shift a_val &= 0xff if a_val != b_val: return False # Now check bits in final byte of b final_b_bits = (b.offset + b_bitlength) % 8 if not final_b_bits: final_b_bits = 8 b_val = db[b_byteoffset + b_bytelength - 1] >> (8 - final_b_bits) final_a_bits = (a.offset + a_bitlength) % 8 if not final_a_bits: final_a_bits = 8 if b.bytelength > a_bytelength: assert b_bytelength == a_bytelength + 1 a_val = da[a_byteoffset + a_bytelength - 1] >> (8 - final_a_bits) a_val &= 0xff >> (8 - final_b_bits) return a_val == b_val assert a_bytelength == b_bytelength a_val = da[a_byteoffset + a_bytelength - 2] << 8 a_val += da[a_byteoffset + a_bytelength - 1] a_val >>= (8 - final_a_bits) a_val &= 0xff >> (8 - final_b_bits) return a_val == b_val class MmapByteArray(object): """Looks like a bytearray, but from an mmap. Not part of public interface. """ __slots__ = ('filemap', 'filelength', 'source', 'byteoffset', 'bytelength') def __init__(self, source, bytelength=None, byteoffset=None): self.source = source source.seek(0, os.SEEK_END) self.filelength = source.tell() if byteoffset is None: byteoffset = 0 if bytelength is None: bytelength = self.filelength - byteoffset self.byteoffset = byteoffset self.bytelength = bytelength self.filemap = mmap.mmap(source.fileno(), 0, access=mmap.ACCESS_READ) def __getitem__(self, key): try: start = key.start stop = key.stop except AttributeError: try: assert 0 <= key < self.bytelength return ord(self.filemap[key + self.byteoffset]) except TypeError: # for Python 3 return self.filemap[key + self.byteoffset] else: if start is None: start = 0 if stop is None: stop = self.bytelength assert key.step is None assert 0 <= start < self.bytelength assert 0 <= stop <= self.bytelength s = slice(start + self.byteoffset, stop + self.byteoffset) return bytearray(self.filemap.__getitem__(s)) def __len__(self): return self.bytelength # This creates a dictionary for every possible byte with the value being # the key with its bits reversed. BYTE_REVERSAL_DICT = dict() # For Python 2.x/ 3.x coexistence # Yes this is very very hacky. try: xrange for i in range(256): BYTE_REVERSAL_DICT[i] = chr(int("{0:08b}".format(i)[::-1], 2)) except NameError: for i in range(256): BYTE_REVERSAL_DICT[i] = bytes([int("{0:08b}".format(i)[::-1], 2)]) from io import IOBase as file xrange = range basestring = str # Python 2.x octals start with '0', in Python 3 it's '0o' LEADING_OCT_CHARS = len(oct(1)) - 1 def tidy_input_string(s): """Return string made lowercase and with all whitespace removed.""" s = ''.join(s.split()).lower() return s INIT_NAMES = ('uint', 'int', 'ue', 'se', 'sie', 'uie', 'hex', 'oct', 'bin', 'bits', 'uintbe', 'intbe', 'uintle', 'intle', 'uintne', 'intne', 'float', 'floatbe', 'floatle', 'floatne', 'bytes', 'bool', 'pad') TOKEN_RE = re.compile(r'(?P' + '|'.join(INIT_NAMES) + r')((:(?P[^=]+)))?(=(?P.*))?$', re.IGNORECASE) DEFAULT_UINT = re.compile(r'(?P[^=]+)?(=(?P.*))?$', re.IGNORECASE) MULTIPLICATIVE_RE = re.compile(r'(?P.*)\*(?P.+)') # Hex, oct or binary literals LITERAL_RE = re.compile(r'(?P0(x|o|b))(?P.+)', re.IGNORECASE) # An endianness indicator followed by one or more struct.pack codes STRUCT_PACK_RE = re.compile(r'(?P<|>|@)?(?P(?:\d*[bBhHlLqQfd])+)$') # A number followed by a single character struct.pack code STRUCT_SPLIT_RE = re.compile(r'\d*[bBhHlLqQfd]') # These replicate the struct.pack codes # Big-endian REPLACEMENTS_BE = {'b': 'intbe:8', 'B': 'uintbe:8', 'h': 'intbe:16', 'H': 'uintbe:16', 'l': 'intbe:32', 'L': 'uintbe:32', 'q': 'intbe:64', 'Q': 'uintbe:64', 'f': 'floatbe:32', 'd': 'floatbe:64'} # Little-endian REPLACEMENTS_LE = {'b': 'intle:8', 'B': 'uintle:8', 'h': 'intle:16', 'H': 'uintle:16', 'l': 'intle:32', 'L': 'uintle:32', 'q': 'intle:64', 'Q': 'uintle:64', 'f': 'floatle:32', 'd': 'floatle:64'} # Size in bytes of all the pack codes. PACK_CODE_SIZE = {'b': 1, 'B': 1, 'h': 2, 'H': 2, 'l': 4, 'L': 4, 'q': 8, 'Q': 8, 'f': 4, 'd': 8} _tokenname_to_initialiser = {'hex': 'hex', '0x': 'hex', '0X': 'hex', 'oct': 'oct', '0o': 'oct', '0O': 'oct', 'bin': 'bin', '0b': 'bin', '0B': 'bin', 'bits': 'auto', 'bytes': 'bytes', 'pad': 'pad'} def structparser(token): """Parse struct-like format string token into sub-token list.""" m = STRUCT_PACK_RE.match(token) if not m: return [token] else: endian = m.group('endian') if endian is None: return [token] # Split the format string into a list of 'q', '4h' etc. formatlist = re.findall(STRUCT_SPLIT_RE, m.group('fmt')) # Now deal with mulitiplicative factors, 4h -> hhhh etc. fmt = ''.join([f[-1] * int(f[:-1]) if len(f) != 1 else f for f in formatlist]) if endian == '@': # Native endianness if byteorder == 'little': endian = '<' else: assert byteorder == 'big' endian = '>' if endian == '<': tokens = [REPLACEMENTS_LE[c] for c in fmt] else: assert endian == '>' tokens = [REPLACEMENTS_BE[c] for c in fmt] return tokens def tokenparser(fmt, keys=None, token_cache={}): """Divide the format string into tokens and parse them. Return stretchy token and list of [initialiser, length, value] initialiser is one of: hex, oct, bin, uint, int, se, ue, 0x, 0o, 0b etc. length is None if not known, as is value. If the token is in the keyword dictionary (keys) then it counts as a special case and isn't messed with. tokens must be of the form: [factor*][initialiser][:][length][=value] """ try: return token_cache[(fmt, keys)] except KeyError: token_key = (fmt, keys) # Very inefficient expanding of brackets. fmt = expand_brackets(fmt) # Split tokens by ',' and remove whitespace # The meta_tokens can either be ordinary single tokens or multiple # struct-format token strings. meta_tokens = (''.join(f.split()) for f in fmt.split(',')) return_values = [] stretchy_token = False for meta_token in meta_tokens: # See if it has a multiplicative factor m = MULTIPLICATIVE_RE.match(meta_token) if not m: factor = 1 else: factor = int(m.group('factor')) meta_token = m.group('token') # See if it's a struct-like format tokens = structparser(meta_token) ret_vals = [] for token in tokens: if keys and token in keys: # Don't bother parsing it, it's a keyword argument ret_vals.append([token, None, None]) continue value = length = None if token == '': continue # Match literal tokens of the form 0x... 0o... and 0b... m = LITERAL_RE.match(token) if m: name = m.group('name') value = m.group('value') ret_vals.append([name, length, value]) continue # Match everything else: m1 = TOKEN_RE.match(token) if not m1: # and if you don't specify a 'name' then the default is 'uint': m2 = DEFAULT_UINT.match(token) if not m2: raise ValueError("Don't understand token '{0}'.".format(token)) if m1: name = m1.group('name') length = m1.group('len') if m1.group('value'): value = m1.group('value') else: assert m2 name = 'uint' length = m2.group('len') if m2.group('value'): value = m2.group('value') if name == 'bool': if length is not None: raise ValueError("You can't specify a length with bool tokens - they are always one bit.") length = 1 if length is None and name not in ('se', 'ue', 'sie', 'uie'): stretchy_token = True if length is not None: # Try converting length to int, otherwise check it's a key. try: length = int(length) if length < 0: raise Error # For the 'bytes' token convert length to bits. if name == 'bytes': length *= 8 except Error: raise ValueError("Can't read a token with a negative length.") except ValueError: if not keys or length not in keys: raise ValueError("Don't understand length '{0}' of token.".format(length)) ret_vals.append([name, length, value]) # This multiplies by the multiplicative factor, but this means that # we can't allow keyword values as multipliers (e.g. n*uint:8). # The only way to do this would be to return the factor in some fashion # (we can't use the key's value here as it would mean that we couldn't # sensibly continue to cache the function's results. (TODO). return_values.extend(ret_vals * factor) return_values = [tuple(x) for x in return_values] if len(token_cache) < CACHE_SIZE: token_cache[token_key] = stretchy_token, return_values return stretchy_token, return_values # Looks for first number*( BRACKET_RE = re.compile(r'(?P\d+)\*\(') def expand_brackets(s): """Remove whitespace and expand all brackets.""" s = ''.join(s.split()) while True: start = s.find('(') if start == -1: break count = 1 # Number of hanging open brackets p = start + 1 while p < len(s): if s[p] == '(': count += 1 if s[p] == ')': count -= 1 if not count: break p += 1 if count: raise ValueError("Unbalanced parenthesis in '{0}'.".format(s)) if start == 0 or s[start - 1] != '*': s = s[0:start] + s[start + 1:p] + s[p + 1:] else: m = BRACKET_RE.search(s) if m: factor = int(m.group('factor')) matchstart = m.start('factor') s = s[0:matchstart] + (factor - 1) * (s[start + 1:p] + ',') + s[start + 1:p] + s[p + 1:] else: raise ValueError("Failed to parse '{0}'.".format(s)) return s # This converts a single octal digit to 3 bits. OCT_TO_BITS = ['{0:03b}'.format(i) for i in xrange(8)] # A dictionary of number of 1 bits contained in binary representation of any byte BIT_COUNT = dict(zip(xrange(256), [bin(i).count('1') for i in xrange(256)])) class Bits(object): """A container holding an immutable sequence of bits. For a mutable container use the BitArray class instead. Methods: all() -- Check if all specified bits are set to 1 or 0. any() -- Check if any of specified bits are set to 1 or 0. count() -- Count the number of bits set to 1 or 0. cut() -- Create generator of constant sized chunks. endswith() -- Return whether the bitstring ends with a sub-string. find() -- Find a sub-bitstring in the current bitstring. findall() -- Find all occurrences of a sub-bitstring in the current bitstring. join() -- Join bitstrings together using current bitstring. rfind() -- Seek backwards to find a sub-bitstring. split() -- Create generator of chunks split by a delimiter. startswith() -- Return whether the bitstring starts with a sub-bitstring. tobytes() -- Return bitstring as bytes, padding if needed. tofile() -- Write bitstring to file, padding if needed. unpack() -- Interpret bits using format string. Special methods: Also available are the operators [], ==, !=, +, *, ~, <<, >>, &, |, ^. Properties: bin -- The bitstring as a binary string. bool -- For single bit bitstrings, interpret as True or False. bytes -- The bitstring as a bytes object. float -- Interpret as a floating point number. floatbe -- Interpret as a big-endian floating point number. floatle -- Interpret as a little-endian floating point number. floatne -- Interpret as a native-endian floating point number. hex -- The bitstring as a hexadecimal string. int -- Interpret as a two's complement signed integer. intbe -- Interpret as a big-endian signed integer. intle -- Interpret as a little-endian signed integer. intne -- Interpret as a native-endian signed integer. len -- Length of the bitstring in bits. oct -- The bitstring as an octal string. se -- Interpret as a signed exponential-Golomb code. ue -- Interpret as an unsigned exponential-Golomb code. sie -- Interpret as a signed interleaved exponential-Golomb code. uie -- Interpret as an unsigned interleaved exponential-Golomb code. uint -- Interpret as a two's complement unsigned integer. uintbe -- Interpret as a big-endian unsigned integer. uintle -- Interpret as a little-endian unsigned integer. uintne -- Interpret as a native-endian unsigned integer. """ __slots__ = ('_datastore') def __init__(self, auto=None, length=None, offset=None, **kwargs): """Either specify an 'auto' initialiser: auto -- a string of comma separated tokens, an integer, a file object, a bytearray, a boolean iterable, an array or another bitstring. Or initialise via **kwargs with one (and only one) of: bytes -- raw data as a string, for example read from a binary file. bin -- binary string representation, e.g. '0b001010'. hex -- hexadecimal string representation, e.g. '0x2ef' oct -- octal string representation, e.g. '0o777'. uint -- an unsigned integer. int -- a signed integer. float -- a floating point number. uintbe -- an unsigned big-endian whole byte integer. intbe -- a signed big-endian whole byte integer. floatbe - a big-endian floating point number. uintle -- an unsigned little-endian whole byte integer. intle -- a signed little-endian whole byte integer. floatle -- a little-endian floating point number. uintne -- an unsigned native-endian whole byte integer. intne -- a signed native-endian whole byte integer. floatne -- a native-endian floating point number. se -- a signed exponential-Golomb code. ue -- an unsigned exponential-Golomb code. sie -- a signed interleaved exponential-Golomb code. uie -- an unsigned interleaved exponential-Golomb code. bool -- a boolean (True or False). filename -- a file which will be opened in binary read-only mode. Other keyword arguments: length -- length of the bitstring in bits, if needed and appropriate. It must be supplied for all integer and float initialisers. offset -- bit offset to the data. These offset bits are ignored and this is mainly intended for use when initialising using 'bytes' or 'filename'. """ pass def __new__(cls, auto=None, length=None, offset=None, _cache={}, **kwargs): # For instances auto-initialised with a string we intern the # instance for re-use. try: if isinstance(auto, basestring): try: return _cache[auto] except KeyError: x = object.__new__(Bits) try: _, tokens = tokenparser(auto) except ValueError as e: raise CreationError(*e.args) x._datastore = ConstByteStore(bytearray(0), 0, 0) for token in tokens: x._datastore._appendstore(Bits._init_with_token(*token)._datastore) assert x._assertsanity() if len(_cache) < CACHE_SIZE: _cache[auto] = x return x if type(auto) == Bits: return auto except TypeError: pass x = super(Bits, cls).__new__(cls) x._initialise(auto, length, offset, **kwargs) return x def _initialise(self, auto, length, offset, **kwargs): if length is not None and length < 0: raise CreationError("bitstring length cannot be negative.") if offset is not None and offset < 0: raise CreationError("offset must be >= 0.") if auto is not None: self._initialise_from_auto(auto, length, offset) return if not kwargs: # No initialisers, so initialise with nothing or zero bits if length is not None and length != 0: data = bytearray((length + 7) // 8) self._setbytes_unsafe(data, length, 0) return self._setbytes_unsafe(bytearray(0), 0, 0) return k, v = kwargs.popitem() try: init_without_length_or_offset[k](self, v) if length is not None or offset is not None: raise CreationError("Cannot use length or offset with this initialiser.") except KeyError: try: init_with_length_only[k](self, v, length) if offset is not None: raise CreationError("Cannot use offset with this initialiser.") except KeyError: if offset is None: offset = 0 try: init_with_length_and_offset[k](self, v, length, offset) except KeyError: raise CreationError("Unrecognised keyword '{0}' used to initialise.", k) def _initialise_from_auto(self, auto, length, offset): if offset is None: offset = 0 self._setauto(auto, length, offset) return def __copy__(self): """Return a new copy of the Bits for the copy module.""" # Note that if you want a new copy (different ID), use _copy instead. # The copy can return self as it's immutable. return self def __lt__(self, other): raise TypeError("unorderable type: {0}".format(type(self).__name__)) def __gt__(self, other): raise TypeError("unorderable type: {0}".format(type(self).__name__)) def __le__(self, other): raise TypeError("unorderable type: {0}".format(type(self).__name__)) def __ge__(self, other): raise TypeError("unorderable type: {0}".format(type(self).__name__)) def __add__(self, bs): """Concatenate bitstrings and return new bitstring. bs -- the bitstring to append. """ bs = Bits(bs) if bs.len <= self.len: s = self._copy() s._append(bs) else: s = bs._copy() s = self.__class__(s) s._prepend(self) return s def __radd__(self, bs): """Append current bitstring to bs and return new bitstring. bs -- the string for the 'auto' initialiser that will be appended to. """ bs = self._converttobitstring(bs) return bs.__add__(self) def __getitem__(self, key): """Return a new bitstring representing a slice of the current bitstring. Indices are in units of the step parameter (default 1 bit). Stepping is used to specify the number of bits in each item. >>> print BitArray('0b00110')[1:4] '0b011' >>> print BitArray('0x00112233')[1:3:8] '0x1122' """ length = self.len try: step = key.step if key.step is not None else 1 except AttributeError: # single element if key < 0: key += length if not 0 <= key < length: raise IndexError("Slice index out of range.") # Single bit, return True or False return self._datastore.getbit(key) else: if step != 1: # convert to binary string and use string slicing bs = self.__class__() bs._setbin_unsafe(self._getbin().__getitem__(key)) return bs start, stop = 0, length if key.start is not None: start = key.start if key.start < 0: start += stop if key.stop is not None: stop = key.stop if key.stop < 0: stop += length start = max(start, 0) stop = min(stop, length) if start < stop: return self._slice(start, stop) else: return self.__class__() def __len__(self): """Return the length of the bitstring in bits.""" return self._getlength() def __str__(self): """Return approximate string representation of bitstring for printing. Short strings will be given wholly in hexadecimal or binary. Longer strings may be part hexadecimal and part binary. Very long strings will be truncated with '...'. """ length = self.len if not length: return '' if length > MAX_CHARS * 4: # Too long for hex. Truncate... return ''.join(('0x', self._readhex(MAX_CHARS * 4, 0), '...')) # If it's quite short and we can't do hex then use bin if length < 32 and length % 4 != 0: return '0b' + self.bin # If we can use hex then do so if not length % 4: return '0x' + self.hex # Otherwise first we do as much as we can in hex # then add on 1, 2 or 3 bits on at the end bits_at_end = length % 4 return ''.join(('0x', self._readhex(length - bits_at_end, 0), ', ', '0b', self._readbin(bits_at_end, length - bits_at_end))) def __repr__(self): """Return representation that could be used to recreate the bitstring. If the returned string is too long it will be truncated. See __str__(). """ length = self.len if isinstance(self._datastore._rawarray, MmapByteArray): offsetstring = '' if self._datastore.byteoffset or self._offset: offsetstring = ", offset=%d" % (self._datastore._rawarray.byteoffset * 8 + self._offset) lengthstring = ", length=%d" % length return "{0}(filename='{1}'{2}{3})".format(self.__class__.__name__, self._datastore._rawarray.source.name, lengthstring, offsetstring) else: s = self.__str__() lengthstring = '' if s.endswith('...'): lengthstring = " # length={0}".format(length) return "{0}('{1}'){2}".format(self.__class__.__name__, s, lengthstring) def __eq__(self, bs): """Return True if two bitstrings have the same binary representation. >>> BitArray('0b1110') == '0xe' True """ try: bs = Bits(bs) except TypeError: return False return equal(self._datastore, bs._datastore) def __ne__(self, bs): """Return False if two bitstrings have the same binary representation. >>> BitArray('0b111') == '0x7' False """ return not self.__eq__(bs) def __invert__(self): """Return bitstring with every bit inverted. Raises Error if the bitstring is empty. """ if not self.len: raise Error("Cannot invert empty bitstring.") s = self._copy() s._invert_all() return s def __lshift__(self, n): """Return bitstring with bits shifted by n to the left. n -- the number of bits to shift. Must be >= 0. """ if n < 0: raise ValueError("Cannot shift by a negative amount.") if not self.len: raise ValueError("Cannot shift an empty bitstring.") n = min(n, self.len) s = self._slice(n, self.len) s._append(Bits(n)) return s def __rshift__(self, n): """Return bitstring with bits shifted by n to the right. n -- the number of bits to shift. Must be >= 0. """ if n < 0: raise ValueError("Cannot shift by a negative amount.") if not self.len: raise ValueError("Cannot shift an empty bitstring.") if not n: return self._copy() s = self.__class__(length=min(n, self.len)) s._append(self[:-n]) return s def __mul__(self, n): """Return bitstring consisting of n concatenations of self. Called for expression of the form 'a = b*3'. n -- The number of concatenations. Must be >= 0. """ if n < 0: raise ValueError("Cannot multiply by a negative integer.") if not n: return self.__class__() s = self._copy() s._imul(n) return s def __rmul__(self, n): """Return bitstring consisting of n concatenations of self. Called for expressions of the form 'a = 3*b'. n -- The number of concatenations. Must be >= 0. """ return self.__mul__(n) def __and__(self, bs): """Bit-wise 'and' between two bitstrings. Returns new bitstring. bs -- The bitstring to '&' with. Raises ValueError if the two bitstrings have differing lengths. """ bs = Bits(bs) if self.len != bs.len: raise ValueError("Bitstrings must have the same length " "for & operator.") s = self._copy() s._iand(bs) return s def __rand__(self, bs): """Bit-wise 'and' between two bitstrings. Returns new bitstring. bs -- the bitstring to '&' with. Raises ValueError if the two bitstrings have differing lengths. """ return self.__and__(bs) def __or__(self, bs): """Bit-wise 'or' between two bitstrings. Returns new bitstring. bs -- The bitstring to '|' with. Raises ValueError if the two bitstrings have differing lengths. """ bs = Bits(bs) if self.len != bs.len: raise ValueError("Bitstrings must have the same length " "for | operator.") s = self._copy() s._ior(bs) return s def __ror__(self, bs): """Bit-wise 'or' between two bitstrings. Returns new bitstring. bs -- The bitstring to '|' with. Raises ValueError if the two bitstrings have differing lengths. """ return self.__or__(bs) def __xor__(self, bs): """Bit-wise 'xor' between two bitstrings. Returns new bitstring. bs -- The bitstring to '^' with. Raises ValueError if the two bitstrings have differing lengths. """ bs = Bits(bs) if self.len != bs.len: raise ValueError("Bitstrings must have the same length " "for ^ operator.") s = self._copy() s._ixor(bs) return s def __rxor__(self, bs): """Bit-wise 'xor' between two bitstrings. Returns new bitstring. bs -- The bitstring to '^' with. Raises ValueError if the two bitstrings have differing lengths. """ return self.__xor__(bs) def __contains__(self, bs): """Return whether bs is contained in the current bitstring. bs -- The bitstring to search for. """ # Don't want to change pos try: pos = self._pos except AttributeError: pass found = Bits.find(self, bs, bytealigned=False) try: self._pos = pos except AttributeError: pass return bool(found) def __hash__(self): """Return an integer hash of the object.""" # We can't in general hash the whole bitstring (it could take hours!) # So instead take some bits from the start and end. if self.len <= 160: # Use the whole bitstring. shorter = self else: # Take 10 bytes from start and end shorter = self[:80] + self[-80:] h = 0 for byte in shorter.tobytes(): try: h = (h << 4) + ord(byte) except TypeError: # Python 3 h = (h << 4) + byte g = h & 0xf0000000 if g & (1 << 31): h ^= (g >> 24) h ^= g return h % 1442968193 # This is only used in Python 2.x... def __nonzero__(self): """Return True if any bits are set to 1, otherwise return False.""" return self.any(True) # ...whereas this is used in Python 3.x __bool__ = __nonzero__ def _assertsanity(self): """Check internal self consistency as a debugging aid.""" assert self.len >= 0 assert 0 <= self._offset, "offset={0}".format(self._offset) assert (self.len + self._offset + 7) // 8 == self._datastore.bytelength + self._datastore.byteoffset return True @classmethod def _init_with_token(cls, name, token_length, value): if token_length is not None: token_length = int(token_length) if token_length == 0: return cls() # For pad token just return the length in zero bits if name == 'pad': return cls(token_length) if value is None: if token_length is None: error = "Token has no value ({0}=???).".format(name) else: error = "Token has no value ({0}:{1}=???).".format(name, token_length) raise ValueError(error) try: b = cls(**{_tokenname_to_initialiser[name]: value}) except KeyError: if name in ('se', 'ue', 'sie', 'uie'): b = cls(**{name: int(value)}) elif name in ('uint', 'int', 'uintbe', 'intbe', 'uintle', 'intle', 'uintne', 'intne'): b = cls(**{name: int(value), 'length': token_length}) elif name in ('float', 'floatbe', 'floatle', 'floatne'): b = cls(**{name: float(value), 'length': token_length}) elif name == 'bool': if value in (1, 'True', '1'): b = cls(bool=True) elif value in (0, 'False', '0'): b = cls(bool=False) else: raise CreationError("bool token can only be 'True' or 'False'.") else: raise CreationError("Can't parse token name {0}.", name) if token_length is not None and b.len != token_length: msg = "Token with length {0} packed with value of length {1} ({2}:{3}={4})." raise CreationError(msg, token_length, b.len, name, token_length, value) return b def _clear(self): """Reset the bitstring to an empty state.""" self._datastore = ByteStore(bytearray(0)) def _setauto(self, s, length, offset): """Set bitstring from a bitstring, file, bool, integer, array, iterable or string.""" # As s can be so many different things it's important to do the checks # in the correct order, as some types are also other allowed types. # So basestring must be checked before Iterable # and bytes/bytearray before Iterable but after basestring! if isinstance(s, Bits): if length is None: length = s.len - offset self._setbytes_unsafe(s._datastore.rawbytes, length, s._offset + offset) return if isinstance(s, file): if offset is None: offset = 0 if length is None: length = os.path.getsize(s.name) * 8 - offset byteoffset, offset = divmod(offset, 8) bytelength = (length + byteoffset * 8 + offset + 7) // 8 - byteoffset m = MmapByteArray(s, bytelength, byteoffset) if length + byteoffset * 8 + offset > m.filelength * 8: raise CreationError("File is not long enough for specified " "length and offset.") self._datastore = ConstByteStore(m, length, offset) return if length is not None: raise CreationError("The length keyword isn't applicable to this initialiser.") if offset: raise CreationError("The offset keyword isn't applicable to this initialiser.") if isinstance(s, basestring): bs = self._converttobitstring(s) assert bs._offset == 0 self._setbytes_unsafe(bs._datastore.rawbytes, bs.length, 0) return if isinstance(s, (bytes, bytearray)): self._setbytes_unsafe(bytearray(s), len(s) * 8, 0) return if isinstance(s, array.array): b = s.tostring() self._setbytes_unsafe(bytearray(b), len(b) * 8, 0) return if isinstance(s, numbers.Integral): # Initialise with s zero bits. if s < 0: msg = "Can't create bitstring of negative length {0}." raise CreationError(msg, s) data = bytearray((s + 7) // 8) self._datastore = ByteStore(data, s, 0) return if isinstance(s, collections.Iterable): # Evaluate each item as True or False and set bits to 1 or 0. self._setbin_unsafe(''.join(str(int(bool(x))) for x in s)) return raise TypeError("Cannot initialise bitstring from {0}.".format(type(s))) def _setfile(self, filename, length, offset): """Use file as source of bits.""" source = open(filename, 'rb') if offset is None: offset = 0 if length is None: length = os.path.getsize(source.name) * 8 - offset byteoffset, offset = divmod(offset, 8) bytelength = (length + byteoffset * 8 + offset + 7) // 8 - byteoffset m = MmapByteArray(source, bytelength, byteoffset) if length + byteoffset * 8 + offset > m.filelength * 8: raise CreationError("File is not long enough for specified " "length and offset.") self._datastore = ConstByteStore(m, length, offset) def _setbytes_safe(self, data, length=None, offset=0): """Set the data from a string.""" data = bytearray(data) if length is None: # Use to the end of the data length = len(data)*8 - offset self._datastore = ByteStore(data, length, offset) else: if length + offset > len(data) * 8: msg = "Not enough data present. Need {0} bits, have {1}." raise CreationError(msg, length + offset, len(data) * 8) if length == 0: self._datastore = ByteStore(bytearray(0)) else: self._datastore = ByteStore(data, length, offset) def _setbytes_unsafe(self, data, length, offset): """Unchecked version of _setbytes_safe.""" self._datastore = ByteStore(data[:], length, offset) assert self._assertsanity() def _readbytes(self, length, start): """Read bytes and return them. Note that length is in bits.""" assert length % 8 == 0 assert start + length <= self.len if not (start + self._offset) % 8: return bytes(self._datastore.getbyteslice((start + self._offset) // 8, (start + self._offset + length) // 8)) return self._slice(start, start + length).tobytes() def _getbytes(self): """Return the data as an ordinary string.""" if self.len % 8: raise InterpretError("Cannot interpret as bytes unambiguously - " "not multiple of 8 bits.") return self._readbytes(self.len, 0) def _setuint(self, uint, length=None): """Reset the bitstring to have given unsigned int interpretation.""" try: if length is None: # Use the whole length. Deliberately not using .len here. length = self._datastore.bitlength except AttributeError: # bitstring doesn't have a _datastore as it hasn't been created! pass # TODO: All this checking code should be hoisted out of here! if length is None or length == 0: raise CreationError("A non-zero length must be specified with a " "uint initialiser.") if uint >= (1 << length): msg = "{0} is too large an unsigned integer for a bitstring of length {1}. "\ "The allowed range is [0, {2}]." raise CreationError(msg, uint, length, (1 << length) - 1) if uint < 0: raise CreationError("uint cannot be initialsed by a negative number.") s = hex(uint)[2:] s = s.rstrip('L') if len(s) & 1: s = '0' + s try: data = bytes.fromhex(s) except AttributeError: # the Python 2.x way data = binascii.unhexlify(s) # Now add bytes as needed to get the right length. extrabytes = ((length + 7) // 8) - len(data) if extrabytes > 0: data = b'\x00' * extrabytes + data offset = 8 - (length % 8) if offset == 8: offset = 0 self._setbytes_unsafe(bytearray(data), length, offset) def _readuint(self, length, start): """Read bits and interpret as an unsigned int.""" if not length: raise InterpretError("Cannot interpret a zero length bitstring " "as an integer.") offset = self._offset startbyte = (start + offset) // 8 endbyte = (start + offset + length - 1) // 8 b = binascii.hexlify(bytes(self._datastore.getbyteslice(startbyte, endbyte + 1))) assert b i = int(b, 16) final_bits = 8 - ((start + offset + length) % 8) if final_bits != 8: i >>= final_bits i &= (1 << length) - 1 return i def _getuint(self): """Return data as an unsigned int.""" return self._readuint(self.len, 0) def _setint(self, int_, length=None): """Reset the bitstring to have given signed int interpretation.""" # If no length given, and we've previously been given a length, use it. if length is None and hasattr(self, 'len') and self.len != 0: length = self.len if length is None or length == 0: raise CreationError("A non-zero length must be specified with an int initialiser.") if int_ >= (1 << (length - 1)) or int_ < -(1 << (length - 1)): raise CreationError("{0} is too large a signed integer for a bitstring of length {1}. " "The allowed range is [{2}, {3}].", int_, length, -(1 << (length - 1)), (1 << (length - 1)) - 1) if int_ >= 0: self._setuint(int_, length) return # TODO: We should decide whether to just use the _setuint, or to do the bit flipping, # based upon which will be quicker. If the -ive number is less than half the maximum # possible then it's probably quicker to do the bit flipping... # Do the 2's complement thing. Add one, set to minus number, then flip bits. int_ += 1 self._setuint(-int_, length) self._invert_all() def _readint(self, length, start): """Read bits and interpret as a signed int""" ui = self._readuint(length, start) if not ui >> (length - 1): # Top bit not set, number is positive return ui # Top bit is set, so number is negative tmp = (~(ui - 1)) & ((1 << length) - 1) return -tmp def _getint(self): """Return data as a two's complement signed int.""" return self._readint(self.len, 0) def _setuintbe(self, uintbe, length=None): """Set the bitstring to a big-endian unsigned int interpretation.""" if length is not None and length % 8 != 0: raise CreationError("Big-endian integers must be whole-byte. " "Length = {0} bits.", length) self._setuint(uintbe, length) def _readuintbe(self, length, start): """Read bits and interpret as a big-endian unsigned int.""" if length % 8: raise InterpretError("Big-endian integers must be whole-byte. " "Length = {0} bits.", length) return self._readuint(length, start) def _getuintbe(self): """Return data as a big-endian two's complement unsigned int.""" return self._readuintbe(self.len, 0) def _setintbe(self, intbe, length=None): """Set bitstring to a big-endian signed int interpretation.""" if length is not None and length % 8 != 0: raise CreationError("Big-endian integers must be whole-byte. " "Length = {0} bits.", length) self._setint(intbe, length) def _readintbe(self, length, start): """Read bits and interpret as a big-endian signed int.""" if length % 8: raise InterpretError("Big-endian integers must be whole-byte. " "Length = {0} bits.", length) return self._readint(length, start) def _getintbe(self): """Return data as a big-endian two's complement signed int.""" return self._readintbe(self.len, 0) def _setuintle(self, uintle, length=None): if length is not None and length % 8 != 0: raise CreationError("Little-endian integers must be whole-byte. " "Length = {0} bits.", length) self._setuint(uintle, length) self._reversebytes(0, self.len) def _readuintle(self, length, start): """Read bits and interpret as a little-endian unsigned int.""" if length % 8: raise InterpretError("Little-endian integers must be whole-byte. " "Length = {0} bits.", length) assert start + length <= self.len absolute_pos = start + self._offset startbyte, offset = divmod(absolute_pos, 8) val = 0 if not offset: endbyte = (absolute_pos + length - 1) // 8 chunksize = 4 # for 'L' format while endbyte - chunksize + 1 >= startbyte: val <<= 8 * chunksize val += struct.unpack('> (length - 1): # Top bit not set, number is positive return ui # Top bit is set, so number is negative tmp = (~(ui - 1)) & ((1 << length) - 1) return -tmp def _getintle(self): return self._readintle(self.len, 0) def _setfloat(self, f, length=None): # If no length given, and we've previously been given a length, use it. if length is None and hasattr(self, 'len') and self.len != 0: length = self.len if length is None or length == 0: raise CreationError("A non-zero length must be specified with a " "float initialiser.") if length == 32: b = struct.pack('>f', f) elif length == 64: b = struct.pack('>d', f) else: raise CreationError("floats can only be 32 or 64 bits long, " "not {0} bits", length) self._setbytes_unsafe(bytearray(b), length, 0) def _readfloat(self, length, start): """Read bits and interpret as a float.""" if not (start + self._offset) % 8: startbyte = (start + self._offset) // 8 if length == 32: f, = struct.unpack('>f', bytes(self._datastore.getbyteslice(startbyte, startbyte + 4))) elif length == 64: f, = struct.unpack('>d', bytes(self._datastore.getbyteslice(startbyte, startbyte + 8))) else: if length == 32: f, = struct.unpack('>f', self._readbytes(32, start)) elif length == 64: f, = struct.unpack('>d', self._readbytes(64, start)) try: return f except NameError: raise InterpretError("floats can only be 32 or 64 bits long, not {0} bits", length) def _getfloat(self): """Interpret the whole bitstring as a float.""" return self._readfloat(self.len, 0) def _setfloatle(self, f, length=None): # If no length given, and we've previously been given a length, use it. if length is None and hasattr(self, 'len') and self.len != 0: length = self.len if length is None or length == 0: raise CreationError("A non-zero length must be specified with a " "float initialiser.") if length == 32: b = struct.pack(' 0: tmp >>= 1 leadingzeros += 1 remainingpart = i + 1 - (1 << leadingzeros) binstring = '0' * leadingzeros + '1' + Bits(uint=remainingpart, length=leadingzeros).bin self._setbin_unsafe(binstring) def _readue(self, pos): """Return interpretation of next bits as unsigned exponential-Golomb code. Raises ReadError if the end of the bitstring is encountered while reading the code. """ oldpos = pos try: while not self[pos]: pos += 1 except IndexError: raise ReadError("Read off end of bitstring trying to read code.") leadingzeros = pos - oldpos codenum = (1 << leadingzeros) - 1 if leadingzeros > 0: if pos + leadingzeros + 1 > self.len: raise ReadError("Read off end of bitstring trying to read code.") codenum += self._readuint(leadingzeros, pos + 1) pos += leadingzeros + 1 else: assert codenum == 0 pos += 1 return codenum, pos def _getue(self): """Return data as unsigned exponential-Golomb code. Raises InterpretError if bitstring is not a single exponential-Golomb code. """ try: value, newpos = self._readue(0) if value is None or newpos != self.len: raise ReadError except ReadError: raise InterpretError("Bitstring is not a single exponential-Golomb code.") return value def _setse(self, i): """Initialise bitstring with signed exponential-Golomb code for integer i.""" if i > 0: u = (i * 2) - 1 else: u = -2 * i self._setue(u) def _getse(self): """Return data as signed exponential-Golomb code. Raises InterpretError if bitstring is not a single exponential-Golomb code. """ try: value, newpos = self._readse(0) if value is None or newpos != self.len: raise ReadError except ReadError: raise InterpretError("Bitstring is not a single exponential-Golomb code.") return value def _readse(self, pos): """Return interpretation of next bits as a signed exponential-Golomb code. Advances position to after the read code. Raises ReadError if the end of the bitstring is encountered while reading the code. """ codenum, pos = self._readue(pos) m = (codenum + 1) // 2 if not codenum % 2: return -m, pos else: return m, pos def _setuie(self, i): """Initialise bitstring with unsigned interleaved exponential-Golomb code for integer i. Raises CreationError if i < 0. """ if i < 0: raise CreationError("Cannot use negative initialiser for unsigned " "interleaved exponential-Golomb.") self._setbin_unsafe('1' if i == 0 else '0' + '0'.join(bin(i + 1)[3:]) + '1') def _readuie(self, pos): """Return interpretation of next bits as unsigned interleaved exponential-Golomb code. Raises ReadError if the end of the bitstring is encountered while reading the code. """ try: codenum = 1 while not self[pos]: pos += 1 codenum <<= 1 codenum += self[pos] pos += 1 pos += 1 except IndexError: raise ReadError("Read off end of bitstring trying to read code.") codenum -= 1 return codenum, pos def _getuie(self): """Return data as unsigned interleaved exponential-Golomb code. Raises InterpretError if bitstring is not a single exponential-Golomb code. """ try: value, newpos = self._readuie(0) if value is None or newpos != self.len: raise ReadError except ReadError: raise InterpretError("Bitstring is not a single interleaved exponential-Golomb code.") return value def _setsie(self, i): """Initialise bitstring with signed interleaved exponential-Golomb code for integer i.""" if not i: self._setbin_unsafe('1') else: self._setuie(abs(i)) self._append(Bits([i < 0])) def _getsie(self): """Return data as signed interleaved exponential-Golomb code. Raises InterpretError if bitstring is not a single exponential-Golomb code. """ try: value, newpos = self._readsie(0) if value is None or newpos != self.len: raise ReadError except ReadError: raise InterpretError("Bitstring is not a single interleaved exponential-Golomb code.") return value def _readsie(self, pos): """Return interpretation of next bits as a signed interleaved exponential-Golomb code. Advances position to after the read code. Raises ReadError if the end of the bitstring is encountered while reading the code. """ codenum, pos = self._readuie(pos) if not codenum: return 0, pos try: if self[pos]: return -codenum, pos + 1 else: return codenum, pos + 1 except IndexError: raise ReadError("Read off end of bitstring trying to read code.") def _setbool(self, value): # We deliberately don't want to have implicit conversions to bool here. # If we did then it would be difficult to deal with the 'False' string. if value in (1, 'True'): self._setbytes_unsafe(bytearray(b'\x80'), 1, 0) elif value in (0, 'False'): self._setbytes_unsafe(bytearray(b'\x00'), 1, 0) else: raise CreationError('Cannot initialise boolean with {0}.', value) def _getbool(self): if self.length != 1: msg = "For a bool interpretation a bitstring must be 1 bit long, not {0} bits." raise InterpretError(msg, self.length) return self[0] def _readbool(self, pos): return self[pos], pos + 1 def _setbin_safe(self, binstring): """Reset the bitstring to the value given in binstring.""" binstring = tidy_input_string(binstring) # remove any 0b if present binstring = binstring.replace('0b', '') self._setbin_unsafe(binstring) def _setbin_unsafe(self, binstring): """Same as _setbin_safe, but input isn't sanity checked. binstring mustn't start with '0b'.""" length = len(binstring) # pad with zeros up to byte boundary if needed boundary = ((length + 7) // 8) * 8 padded_binstring = binstring + '0' * (boundary - length)\ if len(binstring) < boundary else binstring try: bytelist = [int(padded_binstring[x:x + 8], 2) for x in xrange(0, len(padded_binstring), 8)] except ValueError: raise CreationError("Invalid character in bin initialiser {0}.", binstring) self._setbytes_unsafe(bytearray(bytelist), length, 0) def _readbin(self, length, start): """Read bits and interpret as a binary string.""" if not length: return '' # Get the byte slice containing our bit slice startbyte, startoffset = divmod(start + self._offset, 8) endbyte = (start + self._offset + length - 1) // 8 b = self._datastore.getbyteslice(startbyte, endbyte + 1) # Convert to a string of '0' and '1's (via a hex string an and int!) try: c = "{:0{}b}".format(int(binascii.hexlify(b), 16), 8*len(b)) except TypeError: # Hack to get Python 2.6 working c = "{0:0{1}b}".format(int(binascii.hexlify(str(b)), 16), 8*len(b)) # Finally chop off any extra bits. return c[startoffset:startoffset + length] def _getbin(self): """Return interpretation as a binary string.""" return self._readbin(self.len, 0) def _setoct(self, octstring): """Reset the bitstring to have the value given in octstring.""" octstring = tidy_input_string(octstring) # remove any 0o if present octstring = octstring.replace('0o', '') binlist = [] for i in octstring: try: if not 0 <= int(i) < 8: raise ValueError binlist.append(OCT_TO_BITS[int(i)]) except ValueError: raise CreationError("Invalid symbol '{0}' in oct initialiser.", i) self._setbin_unsafe(''.join(binlist)) def _readoct(self, length, start): """Read bits and interpret as an octal string.""" if length % 3: raise InterpretError("Cannot convert to octal unambiguously - " "not multiple of 3 bits.") if not length: return '' # Get main octal bit by converting from int. # Strip starting 0 or 0o depending on Python version. end = oct(self._readuint(length, start))[LEADING_OCT_CHARS:] if end.endswith('L'): end = end[:-1] middle = '0' * (length // 3 - len(end)) return middle + end def _getoct(self): """Return interpretation as an octal string.""" return self._readoct(self.len, 0) def _sethex(self, hexstring): """Reset the bitstring to have the value given in hexstring.""" hexstring = tidy_input_string(hexstring) # remove any 0x if present hexstring = hexstring.replace('0x', '') length = len(hexstring) if length % 2: hexstring += '0' try: try: data = bytearray.fromhex(hexstring) except TypeError: # Python 2.6 needs a unicode string (a bug). 2.7 and 3.x work fine. data = bytearray.fromhex(unicode(hexstring)) except ValueError: raise CreationError("Invalid symbol in hex initialiser.") self._setbytes_unsafe(data, length * 4, 0) def _readhex(self, length, start): """Read bits and interpret as a hex string.""" if length % 4: raise InterpretError("Cannot convert to hex unambiguously - " "not multiple of 4 bits.") if not length: return '' s = self._slice(start, start + length).tobytes() try: s = s.hex() # Available in Python 3.5 except AttributeError: # This monstrosity is the only thing I could get to work for both 2.6 and 3.1. # TODO: Is utf-8 really what we mean here? s = str(binascii.hexlify(s).decode('utf-8')) # If there's one nibble too many then cut it off return s[:-1] if (length // 4) % 2 else s def _gethex(self): """Return the hexadecimal representation as a string prefixed with '0x'. Raises an InterpretError if the bitstring's length is not a multiple of 4. """ return self._readhex(self.len, 0) def _getoffset(self): return self._datastore.offset def _getlength(self): """Return the length of the bitstring in bits.""" return self._datastore.bitlength def _ensureinmemory(self): """Ensure the data is held in memory, not in a file.""" self._setbytes_unsafe(self._datastore.getbyteslice(0, self._datastore.bytelength), self.len, self._offset) @classmethod def _converttobitstring(cls, bs, offset=0, cache={}): """Convert bs to a bitstring and return it. offset gives the suggested bit offset of first significant bit, to optimise append etc. """ if isinstance(bs, Bits): return bs try: return cache[(bs, offset)] except KeyError: if isinstance(bs, basestring): b = cls() try: _, tokens = tokenparser(bs) except ValueError as e: raise CreationError(*e.args) if tokens: b._append(Bits._init_with_token(*tokens[0])) b._datastore = offsetcopy(b._datastore, offset) for token in tokens[1:]: b._append(Bits._init_with_token(*token)) assert b._assertsanity() assert b.len == 0 or b._offset == offset if len(cache) < CACHE_SIZE: cache[(bs, offset)] = b return b except TypeError: # Unhashable type pass return cls(bs) def _copy(self): """Create and return a new copy of the Bits (always in memory).""" s_copy = self.__class__() s_copy._setbytes_unsafe(self._datastore.getbyteslice(0, self._datastore.bytelength), self.len, self._offset) return s_copy def _slice(self, start, end): """Used internally to get a slice, without error checking.""" if end == start: return self.__class__() offset = self._offset startbyte, newoffset = divmod(start + offset, 8) endbyte = (end + offset - 1) // 8 bs = self.__class__() bs._setbytes_unsafe(self._datastore.getbyteslice(startbyte, endbyte + 1), end - start, newoffset) return bs def _readtoken(self, name, pos, length): """Reads a token from the bitstring and returns the result.""" if length is not None and int(length) > self.length - pos: raise ReadError("Reading off the end of the data. " "Tried to read {0} bits when only {1} available.".format(int(length), self.length - pos)) try: val = name_to_read[name](self, length, pos) return val, pos + length except KeyError: if name == 'pad': return None, pos + length raise ValueError("Can't parse token {0}:{1}".format(name, length)) except TypeError: # This is for the 'ue', 'se' and 'bool' tokens. They will also return the new pos. return name_to_read[name](self, pos) def _append(self, bs): """Append a bitstring to the current bitstring.""" self._datastore._appendstore(bs._datastore) def _prepend(self, bs): """Prepend a bitstring to the current bitstring.""" self._datastore._prependstore(bs._datastore) def _reverse(self): """Reverse all bits in-place.""" # Reverse the contents of each byte n = [BYTE_REVERSAL_DICT[b] for b in self._datastore.rawbytes] # Then reverse the order of the bytes n.reverse() # The new offset is the number of bits that were unused at the end. newoffset = 8 - (self._offset + self.len) % 8 if newoffset == 8: newoffset = 0 self._setbytes_unsafe(bytearray().join(n), self.length, newoffset) def _truncatestart(self, bits): """Truncate bits from the start of the bitstring.""" assert 0 <= bits <= self.len if not bits: return if bits == self.len: self._clear() return bytepos, offset = divmod(self._offset + bits, 8) self._setbytes_unsafe(self._datastore.getbyteslice(bytepos, self._datastore.bytelength), self.len - bits, offset) assert self._assertsanity() def _truncateend(self, bits): """Truncate bits from the end of the bitstring.""" assert 0 <= bits <= self.len if not bits: return if bits == self.len: self._clear() return newlength_in_bytes = (self._offset + self.len - bits + 7) // 8 self._setbytes_unsafe(self._datastore.getbyteslice(0, newlength_in_bytes), self.len - bits, self._offset) assert self._assertsanity() def _insert(self, bs, pos): """Insert bs at pos.""" assert 0 <= pos <= self.len if pos > self.len // 2: # Inserting nearer end, so cut off end. end = self._slice(pos, self.len) self._truncateend(self.len - pos) self._append(bs) self._append(end) else: # Inserting nearer start, so cut off start. start = self._slice(0, pos) self._truncatestart(pos) self._prepend(bs) self._prepend(start) try: self._pos = pos + bs.len except AttributeError: pass assert self._assertsanity() def _overwrite(self, bs, pos): """Overwrite with bs at pos.""" assert 0 <= pos < self.len if bs is self: # Just overwriting with self, so do nothing. assert pos == 0 return firstbytepos = (self._offset + pos) // 8 lastbytepos = (self._offset + pos + bs.len - 1) // 8 bytepos, bitoffset = divmod(self._offset + pos, 8) if firstbytepos == lastbytepos: mask = ((1 << bs.len) - 1) << (8 - bs.len - bitoffset) self._datastore.setbyte(bytepos, self._datastore.getbyte(bytepos) & (~mask)) d = offsetcopy(bs._datastore, bitoffset) self._datastore.setbyte(bytepos, self._datastore.getbyte(bytepos) | (d.getbyte(0) & mask)) else: # Do first byte mask = (1 << (8 - bitoffset)) - 1 self._datastore.setbyte(bytepos, self._datastore.getbyte(bytepos) & (~mask)) d = offsetcopy(bs._datastore, bitoffset) self._datastore.setbyte(bytepos, self._datastore.getbyte(bytepos) | (d.getbyte(0) & mask)) # Now do all the full bytes self._datastore.setbyteslice(firstbytepos + 1, lastbytepos, d.getbyteslice(1, lastbytepos - firstbytepos)) # and finally the last byte bitsleft = (self._offset + pos + bs.len) % 8 if not bitsleft: bitsleft = 8 mask = (1 << (8 - bitsleft)) - 1 self._datastore.setbyte(lastbytepos, self._datastore.getbyte(lastbytepos) & mask) self._datastore.setbyte(lastbytepos, self._datastore.getbyte(lastbytepos) | (d.getbyte(d.bytelength - 1) & ~mask)) assert self._assertsanity() def _delete(self, bits, pos): """Delete bits at pos.""" assert 0 <= pos <= self.len assert pos + bits <= self.len if not pos: # Cutting bits off at the start. self._truncatestart(bits) return if pos + bits == self.len: # Cutting bits off at the end. self._truncateend(bits) return if pos > self.len - pos - bits: # More bits before cut point than after it, so do bit shifting # on the final bits. end = self._slice(pos + bits, self.len) assert self.len - pos > 0 self._truncateend(self.len - pos) self._append(end) return # More bits after the cut point than before it. start = self._slice(0, pos) self._truncatestart(pos + bits) self._prepend(start) return def _reversebytes(self, start, end): """Reverse bytes in-place.""" # Make the start occur on a byte boundary # TODO: We could be cleverer here to avoid changing the offset. newoffset = 8 - (start % 8) if newoffset == 8: newoffset = 0 self._datastore = offsetcopy(self._datastore, newoffset) # Now just reverse the byte data toreverse = bytearray(self._datastore.getbyteslice((newoffset + start) // 8, (newoffset + end) // 8)) toreverse.reverse() self._datastore.setbyteslice((newoffset + start) // 8, (newoffset + end) // 8, toreverse) def _set(self, pos): """Set bit at pos to 1.""" assert 0 <= pos < self.len self._datastore.setbit(pos) def _unset(self, pos): """Set bit at pos to 0.""" assert 0 <= pos < self.len self._datastore.unsetbit(pos) def _invert(self, pos): """Flip bit at pos 1<->0.""" assert 0 <= pos < self.len self._datastore.invertbit(pos) def _invert_all(self): """Invert every bit.""" set = self._datastore.setbyte get = self._datastore.getbyte for p in xrange(self._datastore.byteoffset, self._datastore.byteoffset + self._datastore.bytelength): set(p, 256 + ~get(p)) def _ilshift(self, n): """Shift bits by n to the left in place. Return self.""" assert 0 < n <= self.len self._append(Bits(n)) self._truncatestart(n) return self def _irshift(self, n): """Shift bits by n to the right in place. Return self.""" assert 0 < n <= self.len self._prepend(Bits(n)) self._truncateend(n) return self def _imul(self, n): """Concatenate n copies of self in place. Return self.""" assert n >= 0 if not n: self._clear() return self m = 1 old_len = self.len while m * 2 < n: self._append(self) m *= 2 self._append(self[0:(n - m) * old_len]) return self def _inplace_logical_helper(self, bs, f): """Helper function containing most of the __ior__, __iand__, __ixor__ code.""" # Give the two bitstrings the same offset (modulo 8) self_byteoffset, self_bitoffset = divmod(self._offset, 8) bs_byteoffset, bs_bitoffset = divmod(bs._offset, 8) if bs_bitoffset != self_bitoffset: if not self_bitoffset: bs._datastore = offsetcopy(bs._datastore, 0) else: self._datastore = offsetcopy(self._datastore, bs_bitoffset) a = self._datastore.rawbytes b = bs._datastore.rawbytes for i in xrange(len(a)): a[i] = f(a[i + self_byteoffset], b[i + bs_byteoffset]) return self def _ior(self, bs): return self._inplace_logical_helper(bs, operator.ior) def _iand(self, bs): return self._inplace_logical_helper(bs, operator.iand) def _ixor(self, bs): return self._inplace_logical_helper(bs, operator.xor) def _readbits(self, length, start): """Read some bits from the bitstring and return newly constructed bitstring.""" return self._slice(start, start + length) def _validate_slice(self, start, end): """Validate start and end and return them as positive bit positions.""" if start is None: start = 0 elif start < 0: start += self.len if end is None: end = self.len elif end < 0: end += self.len if not 0 <= end <= self.len: raise ValueError("end is not a valid position in the bitstring.") if not 0 <= start <= self.len: raise ValueError("start is not a valid position in the bitstring.") if end < start: raise ValueError("end must not be less than start.") return start, end def unpack(self, fmt, **kwargs): """Interpret the whole bitstring using fmt and return list. fmt -- A single string or a list of strings with comma separated tokens describing how to interpret the bits in the bitstring. Items can also be integers, for reading new bitstring of the given length. kwargs -- A dictionary or keyword-value pairs - the keywords used in the format string will be replaced with their given value. Raises ValueError if the format is not understood. If not enough bits are available then all bits to the end of the bitstring will be used. See the docstring for 'read' for token examples. """ return self._readlist(fmt, 0, **kwargs)[0] def _readlist(self, fmt, pos, **kwargs): tokens = [] stretchy_token = None if isinstance(fmt, basestring): fmt = [fmt] # Not very optimal this, but replace integers with 'bits' tokens # TODO: optimise for i, f in enumerate(fmt): if isinstance(f, numbers.Integral): fmt[i] = "bits:{0}".format(f) for f_item in fmt: stretchy, tkns = tokenparser(f_item, tuple(sorted(kwargs.keys()))) if stretchy: if stretchy_token: raise Error("It's not possible to have more than one 'filler' token.") stretchy_token = stretchy tokens.extend(tkns) if not stretchy_token: lst = [] for name, length, _ in tokens: if length in kwargs: length = kwargs[length] if name == 'bytes': length *= 8 if name in kwargs and length is None: # Using default 'uint' - the name is really the length. value, pos = self._readtoken('uint', pos, kwargs[name]) lst.append(value) continue value, pos = self._readtoken(name, pos, length) if value is not None: # Don't append pad tokens lst.append(value) return lst, pos stretchy_token = False bits_after_stretchy_token = 0 for token in tokens: name, length, _ = token if length in kwargs: length = kwargs[length] if name == 'bytes': length *= 8 if name in kwargs and length is None: # Default 'uint'. length = kwargs[name] if stretchy_token: if name in ('se', 'ue', 'sie', 'uie'): raise Error("It's not possible to parse a variable" "length token after a 'filler' token.") else: if length is None: raise Error("It's not possible to have more than " "one 'filler' token.") bits_after_stretchy_token += length if length is None and name not in ('se', 'ue', 'sie', 'uie'): assert not stretchy_token stretchy_token = token bits_left = self.len - pos return_values = [] for token in tokens: name, length, _ = token if token is stretchy_token: # Set length to the remaining bits length = max(bits_left - bits_after_stretchy_token, 0) if length in kwargs: length = kwargs[length] if name == 'bytes': length *= 8 if name in kwargs and length is None: # Default 'uint' length = kwargs[name] if length is not None: bits_left -= length value, pos = self._readtoken(name, pos, length) if value is not None: return_values.append(value) return return_values, pos def _findbytes(self, bytes_, start, end, bytealigned): """Quicker version of find when everything's whole byte and byte aligned. """ assert self._datastore.offset == 0 assert bytealigned is True # Extract data bytes from bitstring to be found. bytepos = (start + 7) // 8 found = False p = bytepos finalpos = end // 8 increment = max(1024, len(bytes_) * 10) buffersize = increment + len(bytes_) while p < finalpos: # Read in file or from memory in overlapping chunks and search the chunks. buf = bytearray(self._datastore.getbyteslice(p, min(p + buffersize, finalpos))) pos = buf.find(bytes_) if pos != -1: found = True p += pos break p += increment if not found: return () return (p * 8,) def _findregex(self, reg_ex, start, end, bytealigned): """Find first occurrence of a compiled regular expression. Note that this doesn't support arbitrary regexes, in particular they must match a known length. """ p = start length = len(reg_ex.pattern) # We grab overlapping chunks of the binary representation and # do an ordinary string search within that. increment = max(4096, length * 10) buffersize = increment + length while p < end: buf = self._readbin(min(buffersize, end - p), p) # Test using regular expressions... m = reg_ex.search(buf) if m: pos = m.start() # pos = buf.find(targetbin) # if pos != -1: # if bytealigned then we only accept byte aligned positions. if not bytealigned or (p + pos) % 8 == 0: return (p + pos,) if bytealigned: # Advance to just beyond the non-byte-aligned match and try again... p += pos + 1 continue p += increment # Not found, return empty tuple return () def find(self, bs, start=None, end=None, bytealigned=None): """Find first occurrence of substring bs. Returns a single item tuple with the bit position if found, or an empty tuple if not found. The bit position (pos property) will also be set to the start of the substring if it is found. bs -- The bitstring to find. start -- The bit position to start the search. Defaults to 0. end -- The bit position one past the last bit to search. Defaults to self.len. bytealigned -- If True the bitstring will only be found on byte boundaries. Raises ValueError if bs is empty, if start < 0, if end > self.len or if end < start. >>> BitArray('0xc3e').find('0b1111') (6,) """ bs = Bits(bs) if not bs.len: raise ValueError("Cannot find an empty bitstring.") start, end = self._validate_slice(start, end) if bytealigned is None: bytealigned = globals()['bytealigned'] if bytealigned and not bs.len % 8 and not self._datastore.offset: p = self._findbytes(bs.bytes, start, end, bytealigned) else: p = self._findregex(re.compile(bs._getbin()), start, end, bytealigned) # If called from a class that has a pos, set it try: self._pos = p[0] except (AttributeError, IndexError): pass return p def findall(self, bs, start=None, end=None, count=None, bytealigned=None): """Find all occurrences of bs. Return generator of bit positions. bs -- The bitstring to find. start -- The bit position to start the search. Defaults to 0. end -- The bit position one past the last bit to search. Defaults to self.len. count -- The maximum number of occurrences to find. bytealigned -- If True the bitstring will only be found on byte boundaries. Raises ValueError if bs is empty, if start < 0, if end > self.len or if end < start. Note that all occurrences of bs are found, even if they overlap. """ if count is not None and count < 0: raise ValueError("In findall, count must be >= 0.") bs = Bits(bs) start, end = self._validate_slice(start, end) if bytealigned is None: bytealigned = globals()['bytealigned'] c = 0 if bytealigned and not bs.len % 8 and not self._datastore.offset: # Use the quick find method f = self._findbytes x = bs._getbytes() else: f = self._findregex x = re.compile(bs._getbin()) while True: p = f(x, start, end, bytealigned) if not p: break if count is not None and c >= count: return c += 1 try: self._pos = p[0] except AttributeError: pass yield p[0] if bytealigned: start = p[0] + 8 else: start = p[0] + 1 if start >= end: break return def rfind(self, bs, start=None, end=None, bytealigned=None): """Find final occurrence of substring bs. Returns a single item tuple with the bit position if found, or an empty tuple if not found. The bit position (pos property) will also be set to the start of the substring if it is found. bs -- The bitstring to find. start -- The bit position to end the reverse search. Defaults to 0. end -- The bit position one past the first bit to reverse search. Defaults to self.len. bytealigned -- If True the bitstring will only be found on byte boundaries. Raises ValueError if bs is empty, if start < 0, if end > self.len or if end < start. """ bs = Bits(bs) start, end = self._validate_slice(start, end) if bytealigned is None: bytealigned = globals()['bytealigned'] if not bs.len: raise ValueError("Cannot find an empty bitstring.") # Search chunks starting near the end and then moving back # until we find bs. increment = max(8192, bs.len * 80) buffersize = min(increment + bs.len, end - start) pos = max(start, end - buffersize) while True: found = list(self.findall(bs, start=pos, end=pos + buffersize, bytealigned=bytealigned)) if not found: if pos == start: return () pos = max(start, pos - increment) continue return (found[-1],) def cut(self, bits, start=None, end=None, count=None): """Return bitstring generator by cutting into bits sized chunks. bits -- The size in bits of the bitstring chunks to generate. start -- The bit position to start the first cut. Defaults to 0. end -- The bit position one past the last bit to use in the cut. Defaults to self.len. count -- If specified then at most count items are generated. Default is to cut as many times as possible. """ start, end = self._validate_slice(start, end) if count is not None and count < 0: raise ValueError("Cannot cut - count must be >= 0.") if bits <= 0: raise ValueError("Cannot cut - bits must be >= 0.") c = 0 while count is None or c < count: c += 1 nextchunk = self._slice(start, min(start + bits, end)) if nextchunk.len != bits: return assert nextchunk._assertsanity() yield nextchunk start += bits return def split(self, delimiter, start=None, end=None, count=None, bytealigned=None): """Return bitstring generator by splittling using a delimiter. The first item returned is the initial bitstring before the delimiter, which may be an empty bitstring. delimiter -- The bitstring used as the divider. start -- The bit position to start the split. Defaults to 0. end -- The bit position one past the last bit to use in the split. Defaults to self.len. count -- If specified then at most count items are generated. Default is to split as many times as possible. bytealigned -- If True splits will only occur on byte boundaries. Raises ValueError if the delimiter is empty. """ delimiter = Bits(delimiter) if not delimiter.len: raise ValueError("split delimiter cannot be empty.") start, end = self._validate_slice(start, end) if bytealigned is None: bytealigned = globals()['bytealigned'] if count is not None and count < 0: raise ValueError("Cannot split - count must be >= 0.") if count == 0: return if bytealigned and not delimiter.len % 8 and not self._datastore.offset: # Use the quick find method f = self._findbytes x = delimiter._getbytes() else: f = self._findregex x = re.compile(delimiter._getbin()) found = f(x, start, end, bytealigned) if not found: # Initial bits are the whole bitstring being searched yield self._slice(start, end) return # yield the bytes before the first occurrence of the delimiter, even if empty yield self._slice(start, found[0]) startpos = pos = found[0] c = 1 while count is None or c < count: pos += delimiter.len found = f(x, pos, end, bytealigned) if not found: # No more occurrences, so return the rest of the bitstring yield self._slice(startpos, end) return c += 1 yield self._slice(startpos, found[0]) startpos = pos = found[0] # Have generated count bitstrings, so time to quit. return def join(self, sequence): """Return concatenation of bitstrings joined by self. sequence -- A sequence of bitstrings. """ s = self.__class__() i = iter(sequence) try: s._append(Bits(next(i))) while True: n = next(i) s._append(self) s._append(Bits(n)) except StopIteration: pass return s def tobytes(self): """Return the bitstring as bytes, padding with zero bits if needed. Up to seven zero bits will be added at the end to byte align. """ d = offsetcopy(self._datastore, 0).rawbytes # Need to ensure that unused bits at end are set to zero unusedbits = 8 - self.len % 8 if unusedbits != 8: d[-1] &= (0xff << unusedbits) return bytes(d) def tofile(self, f): """Write the bitstring to a file object, padding with zero bits if needed. Up to seven zero bits will be added at the end to byte align. """ # If the bitstring is file based then we don't want to read it all # in to memory. chunksize = 1024 * 1024 # 1 MB chunks if not self._offset: a = 0 bytelen = self._datastore.bytelength p = self._datastore.getbyteslice(a, min(a + chunksize, bytelen - 1)) while len(p) == chunksize: f.write(p) a += chunksize p = self._datastore.getbyteslice(a, min(a + chunksize, bytelen - 1)) f.write(p) # Now the final byte, ensuring that unused bits at end are set to 0. bits_in_final_byte = self.len % 8 if not bits_in_final_byte: bits_in_final_byte = 8 f.write(self[-bits_in_final_byte:].tobytes()) else: # Really quite inefficient... a = 0 b = a + chunksize * 8 while b <= self.len: f.write(self._slice(a, b)._getbytes()) a += chunksize * 8 b += chunksize * 8 if a != self.len: f.write(self._slice(a, self.len).tobytes()) def startswith(self, prefix, start=None, end=None): """Return whether the current bitstring starts with prefix. prefix -- The bitstring to search for. start -- The bit position to start from. Defaults to 0. end -- The bit position to end at. Defaults to self.len. """ prefix = Bits(prefix) start, end = self._validate_slice(start, end) if end < start + prefix.len: return False end = start + prefix.len return self._slice(start, end) == prefix def endswith(self, suffix, start=None, end=None): """Return whether the current bitstring ends with suffix. suffix -- The bitstring to search for. start -- The bit position to start from. Defaults to 0. end -- The bit position to end at. Defaults to self.len. """ suffix = Bits(suffix) start, end = self._validate_slice(start, end) if start + suffix.len > end: return False start = end - suffix.len return self._slice(start, end) == suffix def all(self, value, pos=None): """Return True if one or many bits are all set to value. value -- If value is True then checks for bits set to 1, otherwise checks for bits set to 0. pos -- An iterable of bit positions. Negative numbers are treated in the same way as slice indices. Defaults to the whole bitstring. """ value = bool(value) length = self.len if pos is None: pos = xrange(self.len) for p in pos: if p < 0: p += length if not 0 <= p < length: raise IndexError("Bit position {0} out of range.".format(p)) if not self._datastore.getbit(p) is value: return False return True def any(self, value, pos=None): """Return True if any of one or many bits are set to value. value -- If value is True then checks for bits set to 1, otherwise checks for bits set to 0. pos -- An iterable of bit positions. Negative numbers are treated in the same way as slice indices. Defaults to the whole bitstring. """ value = bool(value) length = self.len if pos is None: pos = xrange(self.len) for p in pos: if p < 0: p += length if not 0 <= p < length: raise IndexError("Bit position {0} out of range.".format(p)) if self._datastore.getbit(p) is value: return True return False def count(self, value): """Return count of total number of either zero or one bits. value -- If True then bits set to 1 are counted, otherwise bits set to 0 are counted. >>> Bits('0xef').count(1) 7 """ if not self.len: return 0 # count the number of 1s (from which it's easy to work out the 0s). # Don't count the final byte yet. count = sum(BIT_COUNT[self._datastore.getbyte(i)] for i in xrange(self._datastore.bytelength - 1)) # adjust for bits at start that aren't part of the bitstring if self._offset: count -= BIT_COUNT[self._datastore.getbyte(0) >> (8 - self._offset)] # and count the last 1 - 8 bits at the end. endbits = self._datastore.bytelength * 8 - (self._offset + self.len) count += BIT_COUNT[self._datastore.getbyte(self._datastore.bytelength - 1) >> endbits] return count if value else self.len - count # Create native-endian functions as aliases depending on the byteorder if byteorder == 'little': _setfloatne = _setfloatle _readfloatne = _readfloatle _getfloatne = _getfloatle _setuintne = _setuintle _readuintne = _readuintle _getuintne = _getuintle _setintne = _setintle _readintne = _readintle _getintne = _getintle else: _setfloatne = _setfloat _readfloatne = _readfloat _getfloatne = _getfloat _setuintne = _setuintbe _readuintne = _readuintbe _getuintne = _getuintbe _setintne = _setintbe _readintne = _readintbe _getintne = _getintbe _offset = property(_getoffset) len = property(_getlength, doc="""The length of the bitstring in bits. Read only. """) length = property(_getlength, doc="""The length of the bitstring in bits. Read only. """) bool = property(_getbool, doc="""The bitstring as a bool (True or False). Read only. """) hex = property(_gethex, doc="""The bitstring as a hexadecimal string. Read only. """) bin = property(_getbin, doc="""The bitstring as a binary string. Read only. """) oct = property(_getoct, doc="""The bitstring as an octal string. Read only. """) bytes = property(_getbytes, doc="""The bitstring as a bytes object. Read only. """) int = property(_getint, doc="""The bitstring as a two's complement signed int. Read only. """) uint = property(_getuint, doc="""The bitstring as a two's complement unsigned int. Read only. """) float = property(_getfloat, doc="""The bitstring as a floating point number. Read only. """) intbe = property(_getintbe, doc="""The bitstring as a two's complement big-endian signed int. Read only. """) uintbe = property(_getuintbe, doc="""The bitstring as a two's complement big-endian unsigned int. Read only. """) floatbe = property(_getfloat, doc="""The bitstring as a big-endian floating point number. Read only. """) intle = property(_getintle, doc="""The bitstring as a two's complement little-endian signed int. Read only. """) uintle = property(_getuintle, doc="""The bitstring as a two's complement little-endian unsigned int. Read only. """) floatle = property(_getfloatle, doc="""The bitstring as a little-endian floating point number. Read only. """) intne = property(_getintne, doc="""The bitstring as a two's complement native-endian signed int. Read only. """) uintne = property(_getuintne, doc="""The bitstring as a two's complement native-endian unsigned int. Read only. """) floatne = property(_getfloatne, doc="""The bitstring as a native-endian floating point number. Read only. """) ue = property(_getue, doc="""The bitstring as an unsigned exponential-Golomb code. Read only. """) se = property(_getse, doc="""The bitstring as a signed exponential-Golomb code. Read only. """) uie = property(_getuie, doc="""The bitstring as an unsigned interleaved exponential-Golomb code. Read only. """) sie = property(_getsie, doc="""The bitstring as a signed interleaved exponential-Golomb code. Read only. """) # Dictionary that maps token names to the function that reads them. name_to_read = {'uint': Bits._readuint, 'uintle': Bits._readuintle, 'uintbe': Bits._readuintbe, 'uintne': Bits._readuintne, 'int': Bits._readint, 'intle': Bits._readintle, 'intbe': Bits._readintbe, 'intne': Bits._readintne, 'float': Bits._readfloat, 'floatbe': Bits._readfloat, # floatbe is a synonym for float 'floatle': Bits._readfloatle, 'floatne': Bits._readfloatne, 'hex': Bits._readhex, 'oct': Bits._readoct, 'bin': Bits._readbin, 'bits': Bits._readbits, 'bytes': Bits._readbytes, 'ue': Bits._readue, 'se': Bits._readse, 'uie': Bits._readuie, 'sie': Bits._readsie, 'bool': Bits._readbool, } # Dictionaries for mapping init keywords with init functions. init_with_length_and_offset = {'bytes': Bits._setbytes_safe, 'filename': Bits._setfile, } init_with_length_only = {'uint': Bits._setuint, 'int': Bits._setint, 'float': Bits._setfloat, 'uintbe': Bits._setuintbe, 'intbe': Bits._setintbe, 'floatbe': Bits._setfloat, 'uintle': Bits._setuintle, 'intle': Bits._setintle, 'floatle': Bits._setfloatle, 'uintne': Bits._setuintne, 'intne': Bits._setintne, 'floatne': Bits._setfloatne, } init_without_length_or_offset = {'bin': Bits._setbin_safe, 'hex': Bits._sethex, 'oct': Bits._setoct, 'ue': Bits._setue, 'se': Bits._setse, 'uie': Bits._setuie, 'sie': Bits._setsie, 'bool': Bits._setbool, } class BitArray(Bits): """A container holding a mutable sequence of bits. Subclass of the immutable Bits class. Inherits all of its methods (except __hash__) and adds mutating methods. Mutating methods: append() -- Append a bitstring. byteswap() -- Change byte endianness in-place. insert() -- Insert a bitstring. invert() -- Flip bit(s) between one and zero. overwrite() -- Overwrite a section with a new bitstring. prepend() -- Prepend a bitstring. replace() -- Replace occurrences of one bitstring with another. reverse() -- Reverse bits in-place. rol() -- Rotate bits to the left. ror() -- Rotate bits to the right. set() -- Set bit(s) to 1 or 0. Methods inherited from Bits: all() -- Check if all specified bits are set to 1 or 0. any() -- Check if any of specified bits are set to 1 or 0. count() -- Count the number of bits set to 1 or 0. cut() -- Create generator of constant sized chunks. endswith() -- Return whether the bitstring ends with a sub-string. find() -- Find a sub-bitstring in the current bitstring. findall() -- Find all occurrences of a sub-bitstring in the current bitstring. join() -- Join bitstrings together using current bitstring. rfind() -- Seek backwards to find a sub-bitstring. split() -- Create generator of chunks split by a delimiter. startswith() -- Return whether the bitstring starts with a sub-bitstring. tobytes() -- Return bitstring as bytes, padding if needed. tofile() -- Write bitstring to file, padding if needed. unpack() -- Interpret bits using format string. Special methods: Mutating operators are available: [], <<=, >>=, +=, *=, &=, |= and ^= in addition to the inherited [], ==, !=, +, *, ~, <<, >>, &, | and ^. Properties: bin -- The bitstring as a binary string. bool -- For single bit bitstrings, interpret as True or False. bytepos -- The current byte position in the bitstring. bytes -- The bitstring as a bytes object. float -- Interpret as a floating point number. floatbe -- Interpret as a big-endian floating point number. floatle -- Interpret as a little-endian floating point number. floatne -- Interpret as a native-endian floating point number. hex -- The bitstring as a hexadecimal string. int -- Interpret as a two's complement signed integer. intbe -- Interpret as a big-endian signed integer. intle -- Interpret as a little-endian signed integer. intne -- Interpret as a native-endian signed integer. len -- Length of the bitstring in bits. oct -- The bitstring as an octal string. pos -- The current bit position in the bitstring. se -- Interpret as a signed exponential-Golomb code. ue -- Interpret as an unsigned exponential-Golomb code. sie -- Interpret as a signed interleaved exponential-Golomb code. uie -- Interpret as an unsigned interleaved exponential-Golomb code. uint -- Interpret as a two's complement unsigned integer. uintbe -- Interpret as a big-endian unsigned integer. uintle -- Interpret as a little-endian unsigned integer. uintne -- Interpret as a native-endian unsigned integer. """ __slots__ = () # As BitArray objects are mutable, we shouldn't allow them to be hashed. __hash__ = None def __init__(self, auto=None, length=None, offset=None, **kwargs): """Either specify an 'auto' initialiser: auto -- a string of comma separated tokens, an integer, a file object, a bytearray, a boolean iterable or another bitstring. Or initialise via **kwargs with one (and only one) of: bytes -- raw data as a string, for example read from a binary file. bin -- binary string representation, e.g. '0b001010'. hex -- hexadecimal string representation, e.g. '0x2ef' oct -- octal string representation, e.g. '0o777'. uint -- an unsigned integer. int -- a signed integer. float -- a floating point number. uintbe -- an unsigned big-endian whole byte integer. intbe -- a signed big-endian whole byte integer. floatbe - a big-endian floating point number. uintle -- an unsigned little-endian whole byte integer. intle -- a signed little-endian whole byte integer. floatle -- a little-endian floating point number. uintne -- an unsigned native-endian whole byte integer. intne -- a signed native-endian whole byte integer. floatne -- a native-endian floating point number. se -- a signed exponential-Golomb code. ue -- an unsigned exponential-Golomb code. sie -- a signed interleaved exponential-Golomb code. uie -- an unsigned interleaved exponential-Golomb code. bool -- a boolean (True or False). filename -- a file which will be opened in binary read-only mode. Other keyword arguments: length -- length of the bitstring in bits, if needed and appropriate. It must be supplied for all integer and float initialisers. offset -- bit offset to the data. These offset bits are ignored and this is intended for use when initialising using 'bytes' or 'filename'. """ # For mutable BitArrays we always read in files to memory: if not isinstance(self._datastore, ByteStore): self._ensureinmemory() def __new__(cls, auto=None, length=None, offset=None, **kwargs): x = super(BitArray, cls).__new__(cls) y = Bits.__new__(BitArray, auto, length, offset, **kwargs) x._datastore = y._datastore return x def __iadd__(self, bs): """Append bs to current bitstring. Return self. bs -- the bitstring to append. """ self.append(bs) return self def __copy__(self): """Return a new copy of the BitArray.""" s_copy = BitArray() if not isinstance(self._datastore, ByteStore): # Let them both point to the same (invariant) array. # If either gets modified then at that point they'll be read into memory. s_copy._datastore = self._datastore else: s_copy._datastore = copy.copy(self._datastore) return s_copy def __setitem__(self, key, value): """Set item or range to new value. Indices are in units of the step parameter (default 1 bit). Stepping is used to specify the number of bits in each item. If the length of the bitstring is changed then pos will be moved to after the inserted section, otherwise it will remain unchanged. >>> s = BitArray('0xff') >>> s[0:1:4] = '0xe' >>> print s '0xef' >>> s[4:4] = '0x00' >>> print s '0xe00f' """ try: # A slice start, step = 0, 1 if key.step is not None: step = key.step except AttributeError: # single element if key < 0: key += self.len if not 0 <= key < self.len: raise IndexError("Slice index out of range.") if isinstance(value, numbers.Integral): if not value: self._unset(key) return if value in (1, -1): self._set(key) return raise ValueError("Cannot set a single bit with integer {0}.".format(value)) value = Bits(value) if value.len == 1: # TODO: this can't be optimal if value[0]: self._set(key) else: self._unset(key) else: self._delete(1, key) self._insert(value, key) return else: if step != 1: # convert to binary string and use string slicing # TODO: Horribly inefficent temp = list(self._getbin()) v = list(Bits(value)._getbin()) temp.__setitem__(key, v) self._setbin_unsafe(''.join(temp)) return # If value is an integer then we want to set the slice to that # value rather than initialise a new bitstring of that length. if not isinstance(value, numbers.Integral): try: # TODO: Better way than calling constructor here? value = Bits(value) except TypeError: raise TypeError("Bitstring, integer or string expected. " "Got {0}.".format(type(value))) if key.start is not None: start = key.start if key.start < 0: start += self.len if start < 0: start = 0 stop = self.len if key.stop is not None: stop = key.stop if key.stop < 0: stop += self.len if start > stop: # The standard behaviour for lists is to just insert at the # start position if stop < start and step == 1. stop = start if isinstance(value, numbers.Integral): if value >= 0: value = self.__class__(uint=value, length=stop - start) else: value = self.__class__(int=value, length=stop - start) stop = min(stop, self.len) start = max(start, 0) start = min(start, stop) if (stop - start) == value.len: if not value.len: return if step >= 0: self._overwrite(value, start) else: self._overwrite(value.__getitem__(slice(None, None, 1)), start) else: # TODO: A delete then insert is wasteful - it could do unneeded shifts. # Could be either overwrite + insert or overwrite + delete. self._delete(stop - start, start) if step >= 0: self._insert(value, start) else: self._insert(value.__getitem__(slice(None, None, 1)), start) # pos is now after the inserted piece. return def __delitem__(self, key): """Delete item or range. Indices are in units of the step parameter (default 1 bit). Stepping is used to specify the number of bits in each item. >>> a = BitArray('0x001122') >>> del a[1:2:8] >>> print a 0x0022 """ try: # A slice start = 0 step = key.step if key.step is not None else 1 except AttributeError: # single element if key < 0: key += self.len if not 0 <= key < self.len: raise IndexError("Slice index out of range.") self._delete(1, key) return else: if step != 1: # convert to binary string and use string slicing # TODO: Horribly inefficent temp = list(self._getbin()) temp.__delitem__(key) self._setbin_unsafe(''.join(temp)) return stop = key.stop if key.start is not None: start = key.start if key.start < 0 and stop is None: start += self.len if start < 0: start = 0 if stop is None: stop = self.len if start > stop: return stop = min(stop, self.len) start = max(start, 0) start = min(start, stop) self._delete(stop - start, start) return def __ilshift__(self, n): """Shift bits by n to the left in place. Return self. n -- the number of bits to shift. Must be >= 0. """ if n < 0: raise ValueError("Cannot shift by a negative amount.") if not self.len: raise ValueError("Cannot shift an empty bitstring.") if not n: return self n = min(n, self.len) return self._ilshift(n) def __irshift__(self, n): """Shift bits by n to the right in place. Return self. n -- the number of bits to shift. Must be >= 0. """ if n < 0: raise ValueError("Cannot shift by a negative amount.") if not self.len: raise ValueError("Cannot shift an empty bitstring.") if not n: return self n = min(n, self.len) return self._irshift(n) def __imul__(self, n): """Concatenate n copies of self in place. Return self. Called for expressions of the form 'a *= 3'. n -- The number of concatenations. Must be >= 0. """ if n < 0: raise ValueError("Cannot multiply by a negative integer.") return self._imul(n) def __ior__(self, bs): bs = Bits(bs) if self.len != bs.len: raise ValueError("Bitstrings must have the same length " "for |= operator.") return self._ior(bs) def __iand__(self, bs): bs = Bits(bs) if self.len != bs.len: raise ValueError("Bitstrings must have the same length " "for &= operator.") return self._iand(bs) def __ixor__(self, bs): bs = Bits(bs) if self.len != bs.len: raise ValueError("Bitstrings must have the same length " "for ^= operator.") return self._ixor(bs) def replace(self, old, new, start=None, end=None, count=None, bytealigned=None): """Replace all occurrences of old with new in place. Returns number of replacements made. old -- The bitstring to replace. new -- The replacement bitstring. start -- Any occurrences that start before this will not be replaced. Defaults to 0. end -- Any occurrences that finish after this will not be replaced. Defaults to self.len. count -- The maximum number of replacements to make. Defaults to replace all occurrences. bytealigned -- If True replacements will only be made on byte boundaries. Raises ValueError if old is empty or if start or end are out of range. """ old = Bits(old) new = Bits(new) if not old.len: raise ValueError("Empty bitstring cannot be replaced.") start, end = self._validate_slice(start, end) if bytealigned is None: bytealigned = globals()['bytealigned'] # Adjust count for use in split() if count is not None: count += 1 sections = self.split(old, start, end, count, bytealigned) lengths = [s.len for s in sections] if len(lengths) == 1: # Didn't find anything to replace. return 0 # no replacements done if new is self: # Prevent self assignment woes new = copy.copy(self) positions = [lengths[0] + start] for l in lengths[1:-1]: # Next position is the previous one plus the length of the next section. positions.append(positions[-1] + l) # We have all the positions that need replacements. We do them # in reverse order so that they won't move around as we replace. positions.reverse() try: # Need to calculate new pos, if this is a bitstream newpos = self._pos for p in positions: self[p:p + old.len] = new if old.len != new.len: diff = new.len - old.len for p in positions: if p >= newpos: continue if p + old.len <= newpos: newpos += diff else: newpos = p self._pos = newpos except AttributeError: for p in positions: self[p:p + old.len] = new assert self._assertsanity() return len(lengths) - 1 def insert(self, bs, pos=None): """Insert bs at bit position pos. bs -- The bitstring to insert. pos -- The bit position to insert at. Raises ValueError if pos < 0 or pos > self.len. """ bs = Bits(bs) if not bs.len: return self if bs is self: bs = self.__copy__() if pos is None: try: pos = self._pos except AttributeError: raise TypeError("insert require a bit position for this type.") if pos < 0: pos += self.len if not 0 <= pos <= self.len: raise ValueError("Invalid insert position.") self._insert(bs, pos) def overwrite(self, bs, pos=None): """Overwrite with bs at bit position pos. bs -- The bitstring to overwrite with. pos -- The bit position to begin overwriting from. Raises ValueError if pos < 0 or pos + bs.len > self.len """ bs = Bits(bs) if not bs.len: return if pos is None: try: pos = self._pos except AttributeError: raise TypeError("overwrite require a bit position for this type.") if pos < 0: pos += self.len if pos < 0 or pos + bs.len > self.len: raise ValueError("Overwrite exceeds boundary of bitstring.") self._overwrite(bs, pos) try: self._pos = pos + bs.len except AttributeError: pass def append(self, bs): """Append a bitstring to the current bitstring. bs -- The bitstring to append. """ # The offset is a hint to make bs easily appendable. bs = self._converttobitstring(bs, offset=(self.len + self._offset) % 8) self._append(bs) def prepend(self, bs): """Prepend a bitstring to the current bitstring. bs -- The bitstring to prepend. """ bs = Bits(bs) self._prepend(bs) def reverse(self, start=None, end=None): """Reverse bits in-place. start -- Position of first bit to reverse. Defaults to 0. end -- One past the position of the last bit to reverse. Defaults to self.len. Using on an empty bitstring will have no effect. Raises ValueError if start < 0, end > self.len or end < start. """ start, end = self._validate_slice(start, end) if start == 0 and end == self.len: self._reverse() return s = self._slice(start, end) s._reverse() self[start:end] = s def set(self, value, pos=None): """Set one or many bits to 1 or 0. value -- If True bits are set to 1, otherwise they are set to 0. pos -- Either a single bit position or an iterable of bit positions. Negative numbers are treated in the same way as slice indices. Defaults to the entire bitstring. Raises IndexError if pos < -self.len or pos >= self.len. """ f = self._set if value else self._unset if pos is None: pos = xrange(self.len) try: length = self.len for p in pos: if p < 0: p += length if not 0 <= p < length: raise IndexError("Bit position {0} out of range.".format(p)) f(p) except TypeError: # Single pos if pos < 0: pos += self.len if not 0 <= pos < length: raise IndexError("Bit position {0} out of range.".format(pos)) f(pos) def invert(self, pos=None): """Invert one or many bits from 0 to 1 or vice versa. pos -- Either a single bit position or an iterable of bit positions. Negative numbers are treated in the same way as slice indices. Raises IndexError if pos < -self.len or pos >= self.len. """ if pos is None: self._invert_all() return if not isinstance(pos, collections.Iterable): pos = (pos,) length = self.len for p in pos: if p < 0: p += length if not 0 <= p < length: raise IndexError("Bit position {0} out of range.".format(p)) self._invert(p) def ror(self, bits, start=None, end=None): """Rotate bits to the right in-place. bits -- The number of bits to rotate by. start -- Start of slice to rotate. Defaults to 0. end -- End of slice to rotate. Defaults to self.len. Raises ValueError if bits < 0. """ if not self.len: raise Error("Cannot rotate an empty bitstring.") if bits < 0: raise ValueError("Cannot rotate right by negative amount.") start, end = self._validate_slice(start, end) bits %= (end - start) if not bits: return rhs = self._slice(end - bits, end) self._delete(bits, end - bits) self._insert(rhs, start) def rol(self, bits, start=None, end=None): """Rotate bits to the left in-place. bits -- The number of bits to rotate by. start -- Start of slice to rotate. Defaults to 0. end -- End of slice to rotate. Defaults to self.len. Raises ValueError if bits < 0. """ if not self.len: raise Error("Cannot rotate an empty bitstring.") if bits < 0: raise ValueError("Cannot rotate left by negative amount.") start, end = self._validate_slice(start, end) bits %= (end - start) if not bits: return lhs = self._slice(start, start + bits) self._delete(bits, start) self._insert(lhs, end - bits) def byteswap(self, fmt=None, start=None, end=None, repeat=True): """Change the endianness in-place. Return number of repeats of fmt done. fmt -- A compact structure string, an integer number of bytes or an iterable of integers. Defaults to 0, which byte reverses the whole bitstring. start -- Start bit position, defaults to 0. end -- End bit position, defaults to self.len. repeat -- If True (the default) the byte swapping pattern is repeated as much as possible. """ start, end = self._validate_slice(start, end) if fmt is None or fmt == 0: # reverse all of the whole bytes. bytesizes = [(end - start) // 8] elif isinstance(fmt, numbers.Integral): if fmt < 0: raise ValueError("Improper byte length {0}.".format(fmt)) bytesizes = [fmt] elif isinstance(fmt, basestring): m = STRUCT_PACK_RE.match(fmt) if not m: raise ValueError("Cannot parse format string {0}.".format(fmt)) # Split the format string into a list of 'q', '4h' etc. formatlist = re.findall(STRUCT_SPLIT_RE, m.group('fmt')) # Now deal with multiplicative factors, 4h -> hhhh etc. bytesizes = [] for f in formatlist: if len(f) == 1: bytesizes.append(PACK_CODE_SIZE[f]) else: bytesizes.extend([PACK_CODE_SIZE[f[-1]]] * int(f[:-1])) elif isinstance(fmt, collections.Iterable): bytesizes = fmt for bytesize in bytesizes: if not isinstance(bytesize, numbers.Integral) or bytesize < 0: raise ValueError("Improper byte length {0}.".format(bytesize)) else: raise TypeError("Format must be an integer, string or iterable.") repeats = 0 totalbitsize = 8 * sum(bytesizes) if not totalbitsize: return 0 if repeat: # Try to repeat up to the end of the bitstring. finalbit = end else: # Just try one (set of) byteswap(s). finalbit = start + totalbitsize for patternend in xrange(start + totalbitsize, finalbit + 1, totalbitsize): bytestart = patternend - totalbitsize for bytesize in bytesizes: byteend = bytestart + bytesize * 8 self._reversebytes(bytestart, byteend) bytestart += bytesize * 8 repeats += 1 return repeats def clear(self): """Remove all bits, reset to zero length.""" self._clear() def copy(self): """Return a copy of the bitstring.""" return self._copy() int = property(Bits._getint, Bits._setint, doc="""The bitstring as a two's complement signed int. Read and write. """) uint = property(Bits._getuint, Bits._setuint, doc="""The bitstring as a two's complement unsigned int. Read and write. """) float = property(Bits._getfloat, Bits._setfloat, doc="""The bitstring as a floating point number. Read and write. """) intbe = property(Bits._getintbe, Bits._setintbe, doc="""The bitstring as a two's complement big-endian signed int. Read and write. """) uintbe = property(Bits._getuintbe, Bits._setuintbe, doc="""The bitstring as a two's complement big-endian unsigned int. Read and write. """) floatbe = property(Bits._getfloat, Bits._setfloat, doc="""The bitstring as a big-endian floating point number. Read and write. """) intle = property(Bits._getintle, Bits._setintle, doc="""The bitstring as a two's complement little-endian signed int. Read and write. """) uintle = property(Bits._getuintle, Bits._setuintle, doc="""The bitstring as a two's complement little-endian unsigned int. Read and write. """) floatle = property(Bits._getfloatle, Bits._setfloatle, doc="""The bitstring as a little-endian floating point number. Read and write. """) intne = property(Bits._getintne, Bits._setintne, doc="""The bitstring as a two's complement native-endian signed int. Read and write. """) uintne = property(Bits._getuintne, Bits._setuintne, doc="""The bitstring as a two's complement native-endian unsigned int. Read and write. """) floatne = property(Bits._getfloatne, Bits._setfloatne, doc="""The bitstring as a native-endian floating point number. Read and write. """) ue = property(Bits._getue, Bits._setue, doc="""The bitstring as an unsigned exponential-Golomb code. Read and write. """) se = property(Bits._getse, Bits._setse, doc="""The bitstring as a signed exponential-Golomb code. Read and write. """) uie = property(Bits._getuie, Bits._setuie, doc="""The bitstring as an unsigned interleaved exponential-Golomb code. Read and write. """) sie = property(Bits._getsie, Bits._setsie, doc="""The bitstring as a signed interleaved exponential-Golomb code. Read and write. """) hex = property(Bits._gethex, Bits._sethex, doc="""The bitstring as a hexadecimal string. Read and write. """) bin = property(Bits._getbin, Bits._setbin_safe, doc="""The bitstring as a binary string. Read and write. """) oct = property(Bits._getoct, Bits._setoct, doc="""The bitstring as an octal string. Read and write. """) bool = property(Bits._getbool, Bits._setbool, doc="""The bitstring as a bool (True or False). Read and write. """) bytes = property(Bits._getbytes, Bits._setbytes_safe, doc="""The bitstring as a ordinary string. Read and write. """) class ConstBitStream(Bits): """A container or stream holding an immutable sequence of bits. For a mutable container use the BitStream class instead. Methods inherited from Bits: all() -- Check if all specified bits are set to 1 or 0. any() -- Check if any of specified bits are set to 1 or 0. count() -- Count the number of bits set to 1 or 0. cut() -- Create generator of constant sized chunks. endswith() -- Return whether the bitstring ends with a sub-string. find() -- Find a sub-bitstring in the current bitstring. findall() -- Find all occurrences of a sub-bitstring in the current bitstring. join() -- Join bitstrings together using current bitstring. rfind() -- Seek backwards to find a sub-bitstring. split() -- Create generator of chunks split by a delimiter. startswith() -- Return whether the bitstring starts with a sub-bitstring. tobytes() -- Return bitstring as bytes, padding if needed. tofile() -- Write bitstring to file, padding if needed. unpack() -- Interpret bits using format string. Other methods: bytealign() -- Align to next byte boundary. peek() -- Peek at and interpret next bits as a single item. peeklist() -- Peek at and interpret next bits as a list of items. read() -- Read and interpret next bits as a single item. readlist() -- Read and interpret next bits as a list of items. Special methods: Also available are the operators [], ==, !=, +, *, ~, <<, >>, &, |, ^. Properties: bin -- The bitstring as a binary string. bool -- For single bit bitstrings, interpret as True or False. bytepos -- The current byte position in the bitstring. bytes -- The bitstring as a bytes object. float -- Interpret as a floating point number. floatbe -- Interpret as a big-endian floating point number. floatle -- Interpret as a little-endian floating point number. floatne -- Interpret as a native-endian floating point number. hex -- The bitstring as a hexadecimal string. int -- Interpret as a two's complement signed integer. intbe -- Interpret as a big-endian signed integer. intle -- Interpret as a little-endian signed integer. intne -- Interpret as a native-endian signed integer. len -- Length of the bitstring in bits. oct -- The bitstring as an octal string. pos -- The current bit position in the bitstring. se -- Interpret as a signed exponential-Golomb code. ue -- Interpret as an unsigned exponential-Golomb code. sie -- Interpret as a signed interleaved exponential-Golomb code. uie -- Interpret as an unsigned interleaved exponential-Golomb code. uint -- Interpret as a two's complement unsigned integer. uintbe -- Interpret as a big-endian unsigned integer. uintle -- Interpret as a little-endian unsigned integer. uintne -- Interpret as a native-endian unsigned integer. """ __slots__ = ('_pos') def __init__(self, auto=None, length=None, offset=None, **kwargs): """Either specify an 'auto' initialiser: auto -- a string of comma separated tokens, an integer, a file object, a bytearray, a boolean iterable or another bitstring. Or initialise via **kwargs with one (and only one) of: bytes -- raw data as a string, for example read from a binary file. bin -- binary string representation, e.g. '0b001010'. hex -- hexadecimal string representation, e.g. '0x2ef' oct -- octal string representation, e.g. '0o777'. uint -- an unsigned integer. int -- a signed integer. float -- a floating point number. uintbe -- an unsigned big-endian whole byte integer. intbe -- a signed big-endian whole byte integer. floatbe - a big-endian floating point number. uintle -- an unsigned little-endian whole byte integer. intle -- a signed little-endian whole byte integer. floatle -- a little-endian floating point number. uintne -- an unsigned native-endian whole byte integer. intne -- a signed native-endian whole byte integer. floatne -- a native-endian floating point number. se -- a signed exponential-Golomb code. ue -- an unsigned exponential-Golomb code. sie -- a signed interleaved exponential-Golomb code. uie -- an unsigned interleaved exponential-Golomb code. bool -- a boolean (True or False). filename -- a file which will be opened in binary read-only mode. Other keyword arguments: length -- length of the bitstring in bits, if needed and appropriate. It must be supplied for all integer and float initialisers. offset -- bit offset to the data. These offset bits are ignored and this is intended for use when initialising using 'bytes' or 'filename'. """ self._pos = 0 def __new__(cls, auto=None, length=None, offset=None, **kwargs): x = super(ConstBitStream, cls).__new__(cls) x._initialise(auto, length, offset, **kwargs) return x def _setbytepos(self, bytepos): """Move to absolute byte-aligned position in stream.""" self._setbitpos(bytepos * 8) def _getbytepos(self): """Return the current position in the stream in bytes. Must be byte aligned.""" if self._pos % 8: raise ByteAlignError("Not byte aligned in _getbytepos().") return self._pos // 8 def _setbitpos(self, pos): """Move to absolute postion bit in bitstream.""" if pos < 0: raise ValueError("Bit position cannot be negative.") if pos > self.len: raise ValueError("Cannot seek past the end of the data.") self._pos = pos def _getbitpos(self): """Return the current position in the stream in bits.""" return self._pos def _clear(self): Bits._clear(self) self._pos = 0 def __copy__(self): """Return a new copy of the ConstBitStream for the copy module.""" # Note that if you want a new copy (different ID), use _copy instead. # The copy can use the same datastore as it's immutable. s = ConstBitStream() s._datastore = self._datastore # Reset the bit position, don't copy it. s._pos = 0 return s def __add__(self, bs): """Concatenate bitstrings and return new bitstring. bs -- the bitstring to append. """ s = Bits.__add__(self, bs) s._pos = 0 return s def read(self, fmt): """Interpret next bits according to the format string and return result. fmt -- Token string describing how to interpret the next bits. Token examples: 'int:12' : 12 bits as a signed integer 'uint:8' : 8 bits as an unsigned integer 'float:64' : 8 bytes as a big-endian float 'intbe:16' : 2 bytes as a big-endian signed integer 'uintbe:16' : 2 bytes as a big-endian unsigned integer 'intle:32' : 4 bytes as a little-endian signed integer 'uintle:32' : 4 bytes as a little-endian unsigned integer 'floatle:64': 8 bytes as a little-endian float 'intne:24' : 3 bytes as a native-endian signed integer 'uintne:24' : 3 bytes as a native-endian unsigned integer 'floatne:32': 4 bytes as a native-endian float 'hex:80' : 80 bits as a hex string 'oct:9' : 9 bits as an octal string 'bin:1' : single bit binary string 'ue' : next bits as unsigned exp-Golomb code 'se' : next bits as signed exp-Golomb code 'uie' : next bits as unsigned interleaved exp-Golomb code 'sie' : next bits as signed interleaved exp-Golomb code 'bits:5' : 5 bits as a bitstring 'bytes:10' : 10 bytes as a bytes object 'bool' : 1 bit as a bool 'pad:3' : 3 bits of padding to ignore - returns None fmt may also be an integer, which will be treated like the 'bits' token. The position in the bitstring is advanced to after the read items. Raises ReadError if not enough bits are available. Raises ValueError if the format is not understood. """ if isinstance(fmt, numbers.Integral): if fmt < 0: raise ValueError("Cannot read negative amount.") if fmt > self.len - self._pos: raise ReadError("Cannot read {0} bits, only {1} available.", fmt, self.len - self._pos) bs = self._slice(self._pos, self._pos + fmt) self._pos += fmt return bs p = self._pos _, token = tokenparser(fmt) if len(token) != 1: self._pos = p raise ValueError("Format string should be a single token, not {0} " "tokens - use readlist() instead.".format(len(token))) name, length, _ = token[0] if length is None: length = self.len - self._pos value, self._pos = self._readtoken(name, self._pos, length) return value def readlist(self, fmt, **kwargs): """Interpret next bits according to format string(s) and return list. fmt -- A single string or list of strings with comma separated tokens describing how to interpret the next bits in the bitstring. Items can also be integers, for reading new bitstring of the given length. kwargs -- A dictionary or keyword-value pairs - the keywords used in the format string will be replaced with their given value. The position in the bitstring is advanced to after the read items. Raises ReadError is not enough bits are available. Raises ValueError if the format is not understood. See the docstring for 'read' for token examples. 'pad' tokens are skipped and not added to the returned list. >>> h, b1, b2 = s.readlist('hex:20, bin:5, bin:3') >>> i, bs1, bs2 = s.readlist(['uint:12', 10, 10]) """ value, self._pos = self._readlist(fmt, self._pos, **kwargs) return value def readto(self, bs, bytealigned=None): """Read up to and including next occurrence of bs and return result. bs -- The bitstring to find. An integer is not permitted. bytealigned -- If True the bitstring will only be found on byte boundaries. Raises ValueError if bs is empty. Raises ReadError if bs is not found. """ if isinstance(bs, numbers.Integral): raise ValueError("Integers cannot be searched for") bs = Bits(bs) oldpos = self._pos p = self.find(bs, self._pos, bytealigned=bytealigned) if not p: raise ReadError("Substring not found") self._pos += bs.len return self._slice(oldpos, self._pos) def peek(self, fmt): """Interpret next bits according to format string and return result. fmt -- Token string describing how to interpret the next bits. The position in the bitstring is not changed. If not enough bits are available then all bits to the end of the bitstring will be used. Raises ReadError if not enough bits are available. Raises ValueError if the format is not understood. See the docstring for 'read' for token examples. """ pos_before = self._pos value = self.read(fmt) self._pos = pos_before return value def peeklist(self, fmt, **kwargs): """Interpret next bits according to format string(s) and return list. fmt -- One or more strings with comma separated tokens describing how to interpret the next bits in the bitstring. kwargs -- A dictionary or keyword-value pairs - the keywords used in the format string will be replaced with their given value. The position in the bitstring is not changed. If not enough bits are available then all bits to the end of the bitstring will be used. Raises ReadError if not enough bits are available. Raises ValueError if the format is not understood. See the docstring for 'read' for token examples. """ pos = self._pos return_values = self.readlist(fmt, **kwargs) self._pos = pos return return_values def bytealign(self): """Align to next byte and return number of skipped bits. Raises ValueError if the end of the bitstring is reached before aligning to the next byte. """ skipped = (8 - (self._pos % 8)) % 8 self.pos += self._offset + skipped assert self._assertsanity() return skipped pos = property(_getbitpos, _setbitpos, doc="""The position in the bitstring in bits. Read and write. """) bitpos = property(_getbitpos, _setbitpos, doc="""The position in the bitstring in bits. Read and write. """) bytepos = property(_getbytepos, _setbytepos, doc="""The position in the bitstring in bytes. Read and write. """) class BitStream(ConstBitStream, BitArray): """A container or stream holding a mutable sequence of bits Subclass of the ConstBitStream and BitArray classes. Inherits all of their methods. Methods: all() -- Check if all specified bits are set to 1 or 0. any() -- Check if any of specified bits are set to 1 or 0. append() -- Append a bitstring. bytealign() -- Align to next byte boundary. byteswap() -- Change byte endianness in-place. count() -- Count the number of bits set to 1 or 0. cut() -- Create generator of constant sized chunks. endswith() -- Return whether the bitstring ends with a sub-string. find() -- Find a sub-bitstring in the current bitstring. findall() -- Find all occurrences of a sub-bitstring in the current bitstring. insert() -- Insert a bitstring. invert() -- Flip bit(s) between one and zero. join() -- Join bitstrings together using current bitstring. overwrite() -- Overwrite a section with a new bitstring. peek() -- Peek at and interpret next bits as a single item. peeklist() -- Peek at and interpret next bits as a list of items. prepend() -- Prepend a bitstring. read() -- Read and interpret next bits as a single item. readlist() -- Read and interpret next bits as a list of items. replace() -- Replace occurrences of one bitstring with another. reverse() -- Reverse bits in-place. rfind() -- Seek backwards to find a sub-bitstring. rol() -- Rotate bits to the left. ror() -- Rotate bits to the right. set() -- Set bit(s) to 1 or 0. split() -- Create generator of chunks split by a delimiter. startswith() -- Return whether the bitstring starts with a sub-bitstring. tobytes() -- Return bitstring as bytes, padding if needed. tofile() -- Write bitstring to file, padding if needed. unpack() -- Interpret bits using format string. Special methods: Mutating operators are available: [], <<=, >>=, +=, *=, &=, |= and ^= in addition to [], ==, !=, +, *, ~, <<, >>, &, | and ^. Properties: bin -- The bitstring as a binary string. bool -- For single bit bitstrings, interpret as True or False. bytepos -- The current byte position in the bitstring. bytes -- The bitstring as a bytes object. float -- Interpret as a floating point number. floatbe -- Interpret as a big-endian floating point number. floatle -- Interpret as a little-endian floating point number. floatne -- Interpret as a native-endian floating point number. hex -- The bitstring as a hexadecimal string. int -- Interpret as a two's complement signed integer. intbe -- Interpret as a big-endian signed integer. intle -- Interpret as a little-endian signed integer. intne -- Interpret as a native-endian signed integer. len -- Length of the bitstring in bits. oct -- The bitstring as an octal string. pos -- The current bit position in the bitstring. se -- Interpret as a signed exponential-Golomb code. ue -- Interpret as an unsigned exponential-Golomb code. sie -- Interpret as a signed interleaved exponential-Golomb code. uie -- Interpret as an unsigned interleaved exponential-Golomb code. uint -- Interpret as a two's complement unsigned integer. uintbe -- Interpret as a big-endian unsigned integer. uintle -- Interpret as a little-endian unsigned integer. uintne -- Interpret as a native-endian unsigned integer. """ __slots__ = () # As BitStream objects are mutable, we shouldn't allow them to be hashed. __hash__ = None def __init__(self, auto=None, length=None, offset=None, **kwargs): """Either specify an 'auto' initialiser: auto -- a string of comma separated tokens, an integer, a file object, a bytearray, a boolean iterable or another bitstring. Or initialise via **kwargs with one (and only one) of: bytes -- raw data as a string, for example read from a binary file. bin -- binary string representation, e.g. '0b001010'. hex -- hexadecimal string representation, e.g. '0x2ef' oct -- octal string representation, e.g. '0o777'. uint -- an unsigned integer. int -- a signed integer. float -- a floating point number. uintbe -- an unsigned big-endian whole byte integer. intbe -- a signed big-endian whole byte integer. floatbe - a big-endian floating point number. uintle -- an unsigned little-endian whole byte integer. intle -- a signed little-endian whole byte integer. floatle -- a little-endian floating point number. uintne -- an unsigned native-endian whole byte integer. intne -- a signed native-endian whole byte integer. floatne -- a native-endian floating point number. se -- a signed exponential-Golomb code. ue -- an unsigned exponential-Golomb code. sie -- a signed interleaved exponential-Golomb code. uie -- an unsigned interleaved exponential-Golomb code. bool -- a boolean (True or False). filename -- a file which will be opened in binary read-only mode. Other keyword arguments: length -- length of the bitstring in bits, if needed and appropriate. It must be supplied for all integer and float initialisers. offset -- bit offset to the data. These offset bits are ignored and this is intended for use when initialising using 'bytes' or 'filename'. """ self._pos = 0 # For mutable BitStreams we always read in files to memory: if not isinstance(self._datastore, ByteStore): self._ensureinmemory() def __new__(cls, auto=None, length=None, offset=None, **kwargs): x = super(BitStream, cls).__new__(cls) x._initialise(auto, length, offset, **kwargs) return x def __copy__(self): """Return a new copy of the BitStream.""" s_copy = BitStream() s_copy._pos = 0 if not isinstance(self._datastore, ByteStore): # Let them both point to the same (invariant) array. # If either gets modified then at that point they'll be read into memory. s_copy._datastore = self._datastore else: s_copy._datastore = ByteStore(self._datastore._rawarray[:], self._datastore.bitlength, self._datastore.offset) return s_copy def prepend(self, bs): """Prepend a bitstring to the current bitstring. bs -- The bitstring to prepend. """ bs = self._converttobitstring(bs) self._prepend(bs) self._pos += bs.len def pack(fmt, *values, **kwargs): """Pack the values according to the format string and return a new BitStream. fmt -- A single string or a list of strings with comma separated tokens describing how to create the BitStream. values -- Zero or more values to pack according to the format. kwargs -- A dictionary or keyword-value pairs - the keywords used in the format string will be replaced with their given value. Token examples: 'int:12' : 12 bits as a signed integer 'uint:8' : 8 bits as an unsigned integer 'float:64' : 8 bytes as a big-endian float 'intbe:16' : 2 bytes as a big-endian signed integer 'uintbe:16' : 2 bytes as a big-endian unsigned integer 'intle:32' : 4 bytes as a little-endian signed integer 'uintle:32' : 4 bytes as a little-endian unsigned integer 'floatle:64': 8 bytes as a little-endian float 'intne:24' : 3 bytes as a native-endian signed integer 'uintne:24' : 3 bytes as a native-endian unsigned integer 'floatne:32': 4 bytes as a native-endian float 'hex:80' : 80 bits as a hex string 'oct:9' : 9 bits as an octal string 'bin:1' : single bit binary string 'ue' / 'uie': next bits as unsigned exp-Golomb code 'se' / 'sie': next bits as signed exp-Golomb code 'bits:5' : 5 bits as a bitstring object 'bytes:10' : 10 bytes as a bytes object 'bool' : 1 bit as a bool 'pad:3' : 3 zero bits as padding >>> s = pack('uint:12, bits', 100, '0xffe') >>> t = pack(['bits', 'bin:3'], s, '111') >>> u = pack('uint:8=a, uint:8=b, uint:55=a', a=6, b=44) """ tokens = [] if isinstance(fmt, basestring): fmt = [fmt] try: for f_item in fmt: _, tkns = tokenparser(f_item, tuple(sorted(kwargs.keys()))) tokens.extend(tkns) except ValueError as e: raise CreationError(*e.args) value_iter = iter(values) s = BitStream() try: for name, length, value in tokens: # If the value is in the kwd dictionary then it takes precedence. if value in kwargs: value = kwargs[value] # If the length is in the kwd dictionary then use that too. if length in kwargs: length = kwargs[length] # Also if we just have a dictionary name then we want to use it if name in kwargs and length is None and value is None: s.append(kwargs[name]) continue if length is not None: length = int(length) if value is None and name != 'pad': # Take the next value from the ones provided value = next(value_iter) s._append(BitStream._init_with_token(name, length, value)) except StopIteration: raise CreationError("Not enough parameters present to pack according to the " "format. {0} values are needed.", len(tokens)) try: next(value_iter) except StopIteration: # Good, we've used up all the *values. return s raise CreationError("Too many parameters present to pack according to the format.") # Aliases for backward compatibility ConstBitArray = Bits BitString = BitStream __all__ = ['ConstBitArray', 'ConstBitStream', 'BitStream', 'BitArray', 'Bits', 'BitString', 'pack', 'Error', 'ReadError', 'InterpretError', 'ByteAlignError', 'CreationError', 'bytealigned'] bitstring-bitstring-3.1.5/doc/000077500000000000000000000000001271665413600163105ustar00rootroot00000000000000bitstring-bitstring-3.1.5/doc/appendices.rst000066400000000000000000000006041271665413600211550ustar00rootroot00000000000000########### Appendices ########### Gathered together here are a few odds and ends that didn't fit well into either the user manual or the reference section. The only unifying theme is that none of them provide any vital knowledge about :mod:`bitstring`, and so they can all be safely ignored. .. toctree:: :maxdepth: 2 examples exp-golomb optimisation release_notes bitstring-bitstring-3.1.5/doc/bitarray.rst000066400000000000000000000302731271665413600206640ustar00rootroot00000000000000.. currentmodule:: bitstring The BitArray class ------------------ .. class:: BitArray([auto, length, offset, **kwargs]) The :class:`Bits` class is the base class for :class:`BitArray` and so (with the exception of :meth:`~Bits.__hash__`) all of its methods are also available for :class:`BitArray` objects. The initialiser is also the same as for :class:`Bits` and so won't be repeated here. A :class:`BitArray` is a mutable :class:`Bits`, and so the one thing all of the methods listed here have in common is that they can modify the contents of the bitstring. .. method:: append(bs) Join a :class:`BitArray` to the end of the current :class:`BitArray`. :: >>> s = BitArray('0xbad') >>> s.append('0xf00d') >>> s BitArray('0xbadf00d') .. method:: byteswap([fmt, start, end, repeat=True]) Change the endianness of the :class:`BitArray` in-place according to *fmt*. Return the number of swaps done. The *fmt* can be an integer, an iterable of integers or a compact format string similar to those used in :func:`pack` (described in :ref:`compact_format`). It defaults to 0, which means reverse as many bytes as possible. The *fmt* gives a pattern of byte sizes to use to swap the endianness of the :class:`BitArray`. Note that if you use a compact format string then the endianness identifier (``<``, ``>`` or ``@``) is not needed, and if present it will be ignored. *start* and *end* optionally give a slice to apply the transformation to (it defaults to the whole :class:`BitArray`). If *repeat* is ``True`` then the byte swapping pattern given by the *fmt* is repeated in its entirety as many times as possible. >>> s = BitArray('0x00112233445566') >>> s.byteswap(2) 3 >>> s BitArray('0x11003322554466') >>> s.byteswap('h') 3 >>> s BitArray('0x00112233445566') >>> s.byteswap([2, 5]) 1 >>> s BitArray('0x11006655443322') It can also be used to swap the endianness of the whole :class:`BitArray`. :: >>> s = BitArray('uintle:32=1234') >>> s.byteswap() >>> print(s.uintbe) 1234 .. method:: clear() Removes all bits from the bitstring. ``s.clear()`` is equivalent to ``del s[:]`` and simply makes the bitstring empty. .. method:: copy() Returns a copy of the bitstring. ``s.copy()`` is equivalent to the shallow copy ``s[:]`` and creates a new copy of the bitstring in memory. .. method:: insert(bs, pos) Inserts *bs* at *pos*. When used with the :class:`BitStream` class the *pos* is optional, and if not present the current bit position will be used. After insertion the property :attr:`~ConstBitStream.pos` will be immediately after the inserted bitstring. :: >>> s = BitStream('0xccee') >>> s.insert('0xd', 8) >>> s BitStream('0xccdee') >>> s.insert('0x00') >>> s BitStream('0xccd00ee') .. method:: invert([pos]) Inverts one or many bits from ``1`` to ``0`` or vice versa. *pos* can be either a single bit position or an iterable of bit positions. Negative numbers are treated in the same way as slice indices and it will raise :exc:`IndexError` if ``pos < -s.len`` or ``pos > s.len``. The default is to invert the entire :class:`BitArray`. :: >>> s = BitArray('0b111001') >>> s.invert(0) >>> s.bin '011001' >>> s.invert([-2, -1]) >>> s.bin '011010' >>> s.invert() >>> s.bin '100101' .. method:: overwrite(bs, pos) Replaces the contents of the current :class:`BitArray` with *bs* at *pos*. When used with the :class:`BitStream` class the *pos* is optional, and if not present the current bit position will be used. After insertion the property :attr:`~ConstBitStream.pos` will be immediately after the overwritten bitstring. :: >>> s = BitArray(length=10) >>> s.overwrite('0b111', 3) >>> s BitArray('0b0001110000') >>> s.pos 6 .. method:: prepend(bs) Inserts *bs* at the beginning of the current :class:`BitArray`. :: >>> s = BitArray('0b0') >>> s.prepend('0xf') >>> s BitArray('0b11110') .. method:: replace(old, new[, start, end, count, bytealigned]) Finds occurrences of *old* and replaces them with *new*. Returns the number of replacements made. If *bytealigned* is ``True`` then replacements will only be made on byte boundaries. *start* and *end* give the search range and default to ``0`` and :attr:`~Bits.len` respectively. If *count* is specified then no more than this many replacements will be made. :: >>> s = BitArray('0b0011001') >>> s.replace('0b1', '0xf') 3 >>> print(s.bin) 0011111111001111 >>> s.replace('0b1', '', count=6) 6 >>> print(s.bin) 0011001111 .. method:: reverse([start, end]) Reverses bits in the :class:`BitArray` in-place. *start* and *end* give the range and default to ``0`` and :attr:`~Bits.len` respectively. :: >>> a = BitArray('0b10111') >>> a.reverse() >>> a.bin '11101' .. method:: rol(bits[, start, end]) Rotates the contents of the :class:`BitArray` in-place by *bits* bits to the left. *start* and *end* define the slice to use and default to ``0`` and :attr:`~Bits.len` respectively. Raises :exc:`ValueError` if ``bits < 0``. :: >>> s = BitArray('0b01000001') >>> s.rol(2) >>> s.bin '00000101' .. method:: ror(bits[, start, end]) Rotates the contents of the :class:`BitArray` in-place by *bits* bits to the right. *start* and *end* define the slice to use and default to ``0`` and :attr:`~Bits.len` respectively. Raises :exc:`ValueError` if ``bits < 0``. .. method:: set(value[, pos]) Sets one or many bits to either ``1`` (if *value* is ``True``) or ``0`` (if *value* isn't ``True``). *pos* can be either a single bit position or an iterable of bit positions. Negative numbers are treated in the same way as slice indices and it will raise :exc:`IndexError` if ``pos < -s.len`` or ``pos > s.len``. The default is to set every bit in the :class:`BitArray`. Using ``s.set(True, x)`` can be more efficent than other equivalent methods such as ``s[x] = 1``, ``s[x] = "0b1"`` or ``s.overwrite('0b1', x)``, especially if many bits are being set. :: >>> s = BitArray('0x0000') >>> s.set(True, -1) >>> print(s) 0x0001 >>> s.set(1, (0, 4, 5, 7, 9)) >>> s.bin '1000110101000001' >>> s.set(0) >>> s.bin '0000000000000000' .. attribute:: bin Writable version of :attr:`Bits.bin`. .. attribute:: bool Writable version of :attr:`Bits.bool`. .. attribute:: bytes Writable version of :attr:`Bits.bytes`. .. attribute:: hex Writable version of :attr:`Bits.hex`. .. attribute:: int Writable version of :attr:`Bits.int`. When used as a setter the value must fit into the current length of the :class:`BitArray`, else a :exc:`ValueError` will be raised. :: >>> s = BitArray('0xf3') >>> s.int -13 >>> s.int = 1232 ValueError: int 1232 is too large for a BitArray of length 8. .. attribute:: intbe Writable version of :attr:`Bits.intbe`. When used as a setter the value must fit into the current length of the :class:`BitArray`, else a :exc:`ValueError` will be raised. .. attribute:: intle Writable version of :attr:`Bits.intle`. When used as a setter the value must fit into the current length of the :class:`BitArray`, else a :exc:`ValueError` will be raised. .. attribute:: intne Writable version of :attr:`Bits.intne`. When used as a setter the value must fit into the current length of the :class:`BitArray`, else a :exc:`ValueError` will be raised. .. attribute:: float .. attribute:: floatbe Writable version of :attr:`Bits.float`. .. attribute:: floatle Writable version of :attr:`Bits.floatle`. .. attribute:: floatne Writable version of :attr:`Bits.floatne`. .. attribute:: oct Writable version of :attr:`Bits.oct`. .. attribute:: se Writable version of :attr:`Bits.se`. .. attribute:: ue Writable version of :attr:`Bits.uie`. .. attribute:: sie Writable version of :attr:`Bits.sie`. .. attribute:: uie Writable version of :attr:`Bits.ue`. .. attribute:: uint Writable version of :attr:`Bits.uint`. When used as a setter the value must fit into the current length of the :class:`BitArray`, else a :exc:`ValueError` will be raised. .. attribute:: uintbe Writable version of :attr:`Bits.uintbe`. When used as a setter the value must fit into the current length of the :class:`BitArray`, else a :exc:`ValueError` will be raised. .. attribute:: uintle Writable version of :attr:`Bits.uintle`. When used as a setter the value must fit into the current length of the :class:`BitArray`, else a :exc:`ValueError` will be raised. .. attribute:: uintne Writable version of :attr:`Bits.uintne`. When used as a setter the value must fit into the current length of the :class:`BitArray`, else a :exc:`ValueError` will be raised. .. method:: __delitem__(key) ``del s[start:end:step]`` Deletes the slice specified. .. method:: __iadd__(bs) ``s1 += s2`` Appends *bs* to the current bitstring. Note that for :class:`BitArray` objects this will be an in-place change, whereas for :class:`Bits` objects using ``+=`` will not call this method - instead a new object will be created (it is equivalent to a copy and an :meth:`~Bits.__add__`). :: >>> s = BitArray(ue=423) >>> s += BitArray(ue=12) >>> s.read('ue') 423 >>> s.read('ue') 12 .. method:: __iand__(bs) ``s &= bs`` In-place bit-wise AND between two bitstrings. If the two bitstrings are not the same length then a :exc:`ValueError` is raised. .. method:: __ilshift__(n) ``s <<= n`` Shifts the bits in-place *n* bits to the left. The *n* right-most bits will become zeros and bits shifted off the left will be lost. .. method:: __imul__(n) ``s *= n`` In-place concatenation of *n* copies of the current bitstring. >>> s = BitArray('0xbad') >>> s *= 3 >>> s.hex 'badbadbad' .. method:: __ior__(bs) ``s |= bs`` In-place bit-wise OR between two bitstrings. If the two bitstrings are not the same length then a :exc:`ValueError` is raised. .. method:: __irshift__(n) ``s >>= n`` Shifts the bits in-place *n* bits to the right. The *n* left-most bits will become zeros and bits shifted off the right will be lost. .. method:: __ixor__(bs) ``s ^= bs`` In-place bit-wise XOR between two bitstrings. If the two bitstrings are not the same length then a :exc:`ValueError` is raised. .. method:: __setitem__(key, value) ``s1[start:end:step] = s2`` Replaces the slice specified with a new value. :: >>> s = BitArray('0x00000000') >>> s[::8] = '0xf' >>> print(s) 0x80808080 >>> s[-12:] = '0xf' >>> print(s) 0x80808f bitstring-bitstring-3.1.5/doc/bitstream.rst000066400000000000000000000012671271665413600210420ustar00rootroot00000000000000.. currentmodule:: bitstring The BitStream class ------------------- .. class:: BitStream([auto, length, offset, **kwargs]) Both the :class:`BitArray` and the :class:`ConstBitStream` classes are base classes for :class:`BitStream` and so all of their methods are also available for :class:`BitStream` objects. The initialiser is also the same as for :class:`Bits` and so won't be repeated here. A :class:`BitStream` is a mutable container of bits with methods and properties that allow it to be parsed as a stream of bits. There are no additional methods or properties in this class - see its base classes (:class:`Bits`, :class:`BitArray` and :class:`ConstBitStream`) for details. bitstring-bitstring-3.1.5/doc/bitstring_classes.rst000066400000000000000000000132251271665413600225670ustar00rootroot00000000000000.. module:: bitstring .. moduleauthor:: Scott Griffiths The bitstring module -------------------- The bitstring module provides four classes, :class:`Bits`, :class:`BitArray`, :class:`ConstBitStream` and :class:`BitStream`. :class:`Bits` is the simplest, and represents an immutable sequence of bits, while :class:`BitArray` adds various methods that modify the contents (these classes are intended to loosely mirror ``bytes`` and ``bytearray`` in Python 3). The 'Stream' classes have additional methods to treat the bits as a file or stream. If you need to change the contents of a bitstring after creation then you must use either the :class:`BitArray` or :class:`BitStream` classes. If you need to use bitstrings as keys in a dictionary or members of a set then you must use either a :class:`Bits` or a :class:`ConstBitStream`. In this section the generic term 'bitstring' is used to refer to an object of any of these classes. Note that for the bitstream classes the bit position within the bitstream (the position from which reads occur) can change without affecting the equality operation. This means that the :attr:`~ConstBitStream.pos` and :attr:`~ConstBitStream.bytepos` properties can change even for a :class:`ConstBitStream` object. The public methods, special methods and properties of both classes are detailed in this section. .. _auto_init: The auto initialiser ^^^^^^^^^^^^^^^^^^^^ Note that in places where a bitstring can be used as a parameter, any other valid input to the ``auto`` initialiser can also be used. This means that the parameter can also be a format string which consists of tokens: * Starting with ``hex=``, or simply starting with ``0x`` implies hexadecimal. e.g. ``0x013ff``, ``hex=013ff`` * Starting with ``oct=``, or simply starting with ``0o`` implies octal. e.g. ``0o755``, ``oct=755`` * Starting with ``bin=``, or simply starting with ``0b`` implies binary. e.g. ``0b0011010``, ``bin=0011010`` * Starting with ``int:`` or ``uint:`` followed by a length in bits and ``=`` gives base-2 integers. e.g. ``uint:8=255``, ``int:4=-7`` * To get big, little and native-endian whole-byte integers append ``be``, ``le`` or ``ne`` respectively to the ``uint`` or ``int`` identifier. e.g. ``uintle:32=1``, ``intne:16=-23`` * For floating point numbers use ``float:`` followed by the length in bits and ``=`` and the number. The default is big-endian, but you can also append ``be``, ``le`` or ``ne`` as with integers. e.g. ``float:64=0.2``, ``floatle:32=-0.3e12`` * Starting with ``ue=``, ``uie=``, ``se=`` or ``sie=`` implies an exponential-Golomb coded integer. e.g. ``ue=12``, ``sie=-4`` Multiples tokens can be joined by separating them with commas, so for example ``se=4, 0b1, se=-1`` represents the concatenation of three elements. Parentheses and multiplicative factors can also be used, for example ``2*(0b10, 0xf)`` is equivalent to ``0b10, 0xf, 0b10, 0xf``. The multiplying factor must come before the thing it is being used to repeat. The ``auto`` parameter also accepts other types: * A list or tuple, whose elements will be evaluated as booleans (imagine calling ``bool()`` on each item) and the bits set to ``1`` for ``True`` items and ``0`` for ``False`` items. * A positive integer, used to create a bitstring of that many zero bits. * A file object, presumably opened in read-binary mode, from which the bitstring will be formed. * A ``bytearray`` object. * An ``array`` object. This is used after being converted to it's constituent byte data via its ``tostring`` method. * In Python 3 only, a ``bytes`` object. Note this won't work for Python 2.7 as ``bytes`` is just a synonym for ``str``. Compact format strings ^^^^^^^^^^^^^^^^^^^^^^ For the :meth:`~ConstBitStream.read`, :meth:`~Bits.unpack`, :meth:`~ConstBitStream.peek` methods and :func:`pack` function you can use compact format strings similar to those used in the :mod:`struct` and :mod:`array` modules. These start with an endian identifier: ``>`` for big-endian, ``<`` for little-endian or ``@`` for native-endian. This must be followed by at least one of these codes: +------+------------------------------------+ |Code | Interpretation | +======+====================================+ |``b`` | 8 bit signed integer | +------+------------------------------------+ |``B`` | 8 bit unsigned integer | +------+------------------------------------+ |``h`` | 16 bit signed integer | +------+------------------------------------+ |``H`` | 16 bit unsigned integer | +------+------------------------------------+ |``l`` | 32 bit signed integer | +------+------------------------------------+ |``L`` | 32 bit unsigned integer | +------+------------------------------------+ |``q`` | 64 bit signed integer | +------+------------------------------------+ |``Q`` | 64 bit unsigned integer | +------+------------------------------------+ |``f`` | 32 bit floating point number | +------+------------------------------------+ |``d`` | 64 bit floating point number | +------+------------------------------------+ For more detail see :ref:`compact_format`. Class properties ^^^^^^^^^^^^^^^^ Bitstrings use a wide range of properties for getting and setting different interpretations on the binary data, as well as accessing bit lengths and positions. For the mutable :class:`BitStream` and :class:`BitArray` objects the properties are all read and write (with the exception of the :attr:`~Bits.len`), whereas for immutable objects the only write enabled properties are for the position in the bitstream (:attr:`~ConstBitStream.pos`/:attr:`~ConstBitStream.bitpos` and :attr:`~ConstBitStream.bytepos`). bitstring-bitstring-3.1.5/doc/bitstring_logo.png000066400000000000000000001504021271665413600220450ustar00rootroot00000000000000‰PNG  IHDR üdÀ¡RiCCPICC ProfilexÕYuXT_·ÞçLÃPCw§H·tIH‡ RC ÝJ)! " ‚ˆ !  &¢ ¨`‚pÆïûîóÝûßýçîç9{ÞYkíµ÷œµÏÚg½Û²[p°?L@@`x¨•¡ïAG^Ü € E.57RX°¶……)ø_Û÷ Äic’»¾þW³ÿYAïáF²@Ôîa¤_Ö!‡†€ZGäÃQáÁF?@0c(²@¿ÜÅÞ¿ñÊ.vÿ…1è_66Vº`X  vs õ€ ˆÈy#IÞˆ‚X†@r ăÖ ù¸yÀV„Øì ÚÅ}uÿ7?Þÿ†ÝÜÜÿñéææýþý[‘ÈÄzä°`·˜__þ/»ÿä~ýj HOèo¶fäZðpÓ3A>9‘k;ØÿẄÝ3ÐÖ‘íâ=îfæ°†W¨‚‘±Ep¸Î.FîänaóGžë£k†`jDžï¦ÿ×O…¯›ñnÌhysh„•-‚Üi­`dGAob}lìÿØ|õðÔû#‡a/²Ño˜n´;#s~¿ “Ý5 sÁŠÀøOB‘>HS  ôþô’À ¸!šHDüÀ[ #‚1Aæýc§ûƒ_㼑qÿÝ#/ !¶ÿÌù{6^dο>ÉÀÁånÈ»ºÝÕ…¹“ÿ5ç_‹]¿V#]/½(½õwMha´,Z­ƒVGk U/šÍ$Ñòhe´6Z­†èT€xƒxöþ»Æ]ÿÍ^‘EA1ªv>ˆv÷·»ÿÕ»_Öä¾ÿÇ yh¹eùï ÷ŒFžtƒ‚cBÉÞ>á¼Úȓ빇×(´w¯¬´ŒÌ®úÿMÛÍY¿ûÅêW.‚˜ÿKЀ2ÙÎÿ’¹Ÿ ]yöëÿ%.@rƒ/‚¤ˆÐÈßþл@…äBFÀ¸Eî³,Pj@ èc`l€pFö²CAˆGA:ȧÀP ÊA¨  ´€pÜ`Œƒ`̃%°¾ƒM‚p"Bl$I@²2¤éC¦ä¹BÞP ÅC)P”Cç¡:è*ÔÝB#Ð3hZ„>C?`L 3Â\°0,+ÃÚ° l†½á8N…sà"¸¾ ß„ïÀð8< /ÁßP…G1£øP’(e”.ÊåˆòB…¢Q™¨T%ê ªu5†šF-£6ÐX4Í‹–Döé~´-š„A'¢³ÑÅèZôMtz =ƒ^AocNŒFc„9ˆñÆDaÒ1˜Ì Ì]Ì8fó‹Å2cE°JØýX¬/6›=‡mÄvcG°sØo8Ž 'SÇ™ãÜpá¸tÜYÜeÜmÜ(n·N§à¡¥0 p¤¤H¦( ¸DÑE1JñŽb“’ŽRˆR•Ҝ҃2†ò$e5e;åcÊyÊM*z**u**_ª£TETW¨îR½¤ú‚Çãùñ*xK<_„oÂ?ÀÏà7¨¨Å©u©¨#¨s¨/RwS?£þB „ ZGB8!‡PGè%LÖiˆ4{iŒh€>›þýCúƒ0ƒ>ƒC*CC/ÃE êIÄb5ñ.qžË(ÂhÄèË˜ÅØÀ8ĸÂÄÀ$ÏdÇÍTÂÔÉ4ÍŒbf6bög>ÉÜÌ<Áüƒ…‹E›Å“%ƒå Ë(Ë+««'k&k#ë8ë6^6}6?¶\¶¶WìhvqvKö(ö2ö»ìËŒj$ŽLŽfŽçœ0§8§ggç ç7.n.C®`®³\½\ËÜÌÜZܾÜùÜ]Ü‹Ïmž÷¼L¼Ú¼þ¼E¼}¼+|œ|ûù"øÎó ñmò‹ðÛò'ó7ò¿ PðÈèXä< /X/ø\ˆRHYÈG¨Pè¾Ðš°ˆ°½ð1ááV#‘X‘z‘—¢QMÑÑJÑ'bX1e1?±sbÃâ°¸‚¸x‰øc XBQ‚,qNbdfÊžÀ=•{&%©%µ%#%ë%gö2ï5Ý›¼·eïG)A)G©\©ûRÛÒ ÒþÒÕÒ/ddŒe’eÚe>ËŠË’dKdŸÈä ä’äZåVå%ä=åËäŸ*(SèQø©¨¤ªxEqQIPÉU©TiR™QÙB9[ù FEG%I¥CeCUQ5\µYõ“š¤šŸÚ%µ…}"û<÷Uï›SçWwS?¯>­Á«áªQ¡1­É§é¦Y©9«% å¡U£õN[LÛWû²öGiP:kºªº ºÝz(=C½L½!}}[ýbý)~oƒzƒCÃ8Ãîý˜ý&ûs÷Oq‘ŒêŒVŒ•ŒŒûL¨M¬MŠMfMÅMCMÛÀŒœ>ðÒLÈ,ЬŘ™Ÿ6e!bbqËkiaYbùÖJÆ*Þê¾5ÑÚÅú’õw›“6/lEm#l{ìhíœìêìÖìõìóì§JL88àÀî@vhuÄ9Ú9Ö8~;¤èÌ¡y'§t§‰Ã"‡£?tfwöwît¡uqs¹æŠqµw½äºåfîVéöÍÝȽÔ}…¤K*$-yhyä{,zª{æy¾óR÷ÊóZðV÷>í½è£éSà³LÖ%“W}÷û–û®ù™û]ôÛñ·÷o  p h dô ì ⊠–NžQ 9²jZ…k gD^#D#Ò"f"5"K"ף좮EÓGFƈÇdļ‹5ˆ½‡Ž#ÅõÄóÅŸIÐN8Ÿ%º'ö$ $¥&Í1Åã%:%¥œ¥¥kç<Ζi•])ç*Ï*ÿQA®xzÞðüÍJáÊ‚*lUdÕÛj»êû”/ÔÕ°×dÕü¼xqºÖª¶¯N©®î祓õp}Dýâe§Ëà z ­W$¯œodnÌjMMﯺ^h6i|íÊu¡ë¥7ˆ72oB7cn®´ø´L·:´Ž´·õ´«µß¸µ÷ÖžޒN¦Î“]T]©];·coëî^¾ã}g®Ç¥çEïÁÞ'}–}CwMî>¸gp¯÷¾öýÛÔtVzÜ:¬2Ü>²o¤kTsôÎ˜ÞØ½'FOÆÍÆG&l'žN:MN?õxºðÌÿÙêóÈç›/޼ļÌ|E÷ª`ŠsªòµØëÆiÅéν™ÁYëÙs¤¹¥7ao¶æSßÞ¼ãyW· »Ð±h°8üþÐûù¥à¥ÍåôôJ?Š~¼þIëÓàÊÁ•ùÕÐÕÏÙ_ؾ\ü*ÿµç›Å·©ïß7×2×ÙÖk7”7îÿ°ÿñn3j ·UôSìgû¶ÉöË€`·P·_ï(¤‡½¼ø|yOp@j‡a¨h~׿,rBllí…–às(g´ú=¦[„ ¦°¢Ô§RÄKQï%HÐ(ӚйÒG0œ!¶1Î0S³h³†²5°/qŠqùr7ñ¬óéñŸ˜’>&òJLAü”IJ¤þÞ*©m'Ùvyv…hÅqe9•Õå}†ê?´¬´/èlè™è,ì—7Š3î2…h™Åš7YÌYÑ[«ÛxئÙUØ_;xÛ¡×±ûP›SãáçR—S®Én!îÎ$S%O~/‚ך÷ŒO?¹Ù·Ø/ÙŸ`¨Ä´<RšfÎþ)¢+2'Ê)Z"úGLlq9^9›0–XžäDç¨`2c m*]}:Ý1ÂqÊ tÆNæFÖç쥳9ÏOŽžÈíÉk;}%¿êÌÙ‚œÂ”¢¸³1ÅÉ%E¥7Î —Í–/W¬œ_©\©úTýñÂ‡š¥‹ µoêf.ÍÕ¯6Ð_ÑmLlj¹úºyý:îñ&O‹x«B›f»Ñ-ë÷Î订ÛwºzнÄ>ö»¼÷Äï+=Ðy¨Ó/Úÿi smðü#ÍGËC C‡UF ‘G£ec!OôÇÙÆ?NôN>õy¦ølçy÷‹Ø—r/—_5L…½Þ7)õš“™Û|so>ÿ­ç;Õ†…÷‹]ï³—ì—ù–?\ýûIg¿2¾Úð¹ìËõ¯kß½ÖžohýÈßœþ)·¿³ó+þPì€b@=@§cL°LØW¸kÙ”þT¶x=j9‚­(½ƒÑŽ1)•¹Š¥u‰žCƒ“ÌUÌ=ȳçÌ.pEð½°„ˆh­Ø’„äžPÉ{7¤5eŽÊÞ—Ç+˜*æ(¨U-Ôröõk`55µ"µku^èáõU Ü 3ö× /šÂXÌDÌå,T-U­ä¬mhl¾Ù>·ë¶¯>˜éèh}HɉÃiçð¬sŸKkº›‡»‰“´æ1âYï•æíì£D¦#/øÞö+ô Ðdüt;8'Ä1”?t1¬)<*B5âgdWTR´V :æAì‰8‹xbüxBaâ!$³®é=Zžœ’˜ê˜f˜.Œï8õñµŒÙÌÁ¬›Ù'Žç„ž<|Ê4W3OáôÞ|Ñ3üœ…,Eôg©ŠÑÅ[%_K—ÎM—M–T Ÿ¯|]µT½^ƒºHSËV'xIº~ßeƒó+žM‘W³›k¯õ]Ÿº±ÚµÒµñµËÝ2è8ÔÜ•~»¤»îNCOu奄ð»6÷dïÓß_}ðÉMåiƒ~,‡”ó ã‡×GæF5?)O˜ Mš<•Æõó|ùÅ“—·^UMx?<ã70þ&a>ýmî»’… ‹MïÛ—z—}xñq}Eeµú‹Î7ü÷¯ë ?F·*·þÄŸ:‹Â¨4z“ŒÕÀ®ã:)ŽQ:PÉáið Ô ×hÊhOÐ¥ÐÇ2Dcc˜˜ÓYN²žckdïãxÊù‘›À#È«ÃçÊŸ"P%xWhQ„FTFÌVdÞÉÊÏö:¡”C•3}²õT^nhžõi…|¶üí3o ú ‹NŸ,v(Q-eGNËñ²å%'ΧW¦V¥U»p¬&íbBm@ÝÁKúõj—ÕL®¸5Æ7]½ÞüèÚüõÍ›ô-­ûÚ,Û½o%vœé¼ÔÕqû~wÿ‡=w{ïôuÞm½wí~ËËûÏä f?JJyœ6œ;R;úpluœkÂh2òi峡ç/_YO|==Cžc}óíf1q¹wõôºànüsK»gV€„÷°;€%¢©µ@(¡8Ú° `£`¿4Ó/¨TôŸóh@‰p(lH½)ÔfãÂ%$‚n”‚žÂ’â4Å8%¥ e åG*eªªa<7>ßMÍHíK}‡ÀAˆ"ŒÓ(Òœ¥Ù¡õ¦¥Ó¦»F/N_à ÂÐHT#2º0~e:Á,Î<ÀÌÊÂÚËÂÎÏ>Áq‚s?–ëw&%/'ï¾>þ*,ÁX¡aQg1WqO‰€=1’{ˤڥ'eÞË~”{#ÿD¡Wñ¦ÒåK*uª—Ôšöµª÷iŒiÎkmèÐêŠéè{d^ÝÿÂg"kj Ô,Åü¤E™e‹Õ J[ »(ä¼ûì((ÚéŽ3ÁÅɵÎm™Äå¡éiïà}ܧ™üÁOÉ?#àubð©ÈùÖÉÝËç_›°“äsd&Ù-åušCúøq‡Œ­¬…œœÜsùìÆEÁÅE¥­eC3•ß/Ð\«3©nhoân®¼!ÑRÖ¶ÓáÔuëooæÝ>ýcägÌ=901ôÌõÅÆTáŒòÜë·© ›KüËÛ«WWË¿°}­ü®±ön£hSgkj;ôWþ€Îˆ€ ˆ%„ï±d„UÈA˜Ÿ *„#Ð\ D¨ ꂦ‘Ø ÃÆp0\wÁoQt(U”'*uõ͉>€TèWÑo0l3L¦©¾¥±þHÜßâ„p^¸ZÜ…EE'%–Ò‚òå{*Uª,ª×xy|þ µ&õ9êŸWÂ]IšBZ m$í‰nšÞþ=C ‘–x‰Ñq)‹Y†ù9K:«<ë[¶v:ŽQÎ".wn)À3ÎÛÀ—Áï-`,(#Ä!L!¼)òUô«Ø–a€¤Æ^W© é6™÷rœò YŠƒÊô*öªgÕÆÔ! aM-/íã: ºãú°¬¡×þsF“&̦v ÌÆ,h, ­’¬ÛmÖìí£v:bY8•þìbìZíö“d‰ä©÷Þr> ä?.ÿ€{A\Á‘!caòá…[Q.Ñ]±¬qñ÷’2¬'û¦¼J³Hï=®”ÑÅŸ]œÃr²Â!ݳ`â‚öA‡‘ØŸ‡î!o™ °*L‚OÀ­ð<ŠˆÒF˜›*Ôša#ЗÑóÌ!Lfa\ì±ÅØ)œÎw ·MaLQD±€0&'(ç˜çS­àÍñMÔDêêY‚¡“Fšæ-m)7]5Â[ô1¸a$ÞöL8¦[Ìá,Ò,+¬×ÙØ8X9–9û¸*¸“xH¼¦|*üâ|‚?¯´‡?|öåóŠÈW^&¯zq­ûò*SŸWûÌgO^u7âs_^Õ)_mÝ™WjZžyi_Õ#  9 }D\ä¦ ‚€ ”€€Î­ÙJ¤f–uÌ,þîüd~bÑ®13É‚€ Pˆ VUt£4BA@ˆ b/”šë÷B"Ij@j¡—¥‚€ ‚@¥`Ž˜bUŠI)W’„€ Iê áEA@H!­%¦‰$}}/ V„4iXÕ-D‚€ ‚€ vˆÂÑ€¨+DIûXþ¤D $› ‚€ Œ€»û€0+ÄÄÁ¿’A &¤&ºY)‚€ T ÄEûQ¡î‘b$" H{ExA@Rƒ@&X„ó@$ ‚@Í HÍtµ4TA@¨!˜`)&Ñ€T k¤HA ©ˆ’Ôž¾A@ @Da¬%DIA_ ‹‚@X„1i„Å‹”#‚€ )B€èÂp"`‘ø€¤¨Û…UAÀ@œ!”A@ZEà¸p1ÁªÕ$í®QD©ÑŽ—f ‚€ ÎäT8ëÑ€8w… ¤ p&Ž4µXxA@pØÛ’D‰H8="¥©@@Tt“0)‚€ $Þîp%Q°ػ’ P1D©´R° ‚€ På47„#€È9 U>P¤y‚ÀPDЇ|A@RèÛŽÂb‚U*ä’O¨2ÕÐiƒ ‚€ Ä€ÀÖ»ü¶‰*ÓÐÙÇ>ƒk.^³î™Ã )81ŸÅßWkC£4+õt ÜK•‚€ ÄŒÇ^’ ‚€ ‚€  @–*A@ˆ œJMªíÊg)ß›®24ß¹ðcÅ ©  G€È^"g GS¾ ‚€ DŒ€ ^MÕQ벩Š&§ 7ZòT»¬ç*O3´¹ÔþÉó¿” æ…Ét"À8 „¨lãSÂð¦³ÇGäšè *Ûúr"ýªo~ „ÒºÁµÖgã{Ej[ýFÒz9êñqc,±‰O\+|¾\3ޱÁ=…ߊyˆÕ­ù®Ëó-ׂ€ P݈RÝýëØ:º×±€€¼`²FIñ•S2R­+arF2èU2Ô\Vêó©uÌŠ +ø¾Ü‰o"€ôc"Ÿá#@A$¬ö² &ðÑ*›¶ h敇ªFjR}^Ò~=Ðõ*¯qO¢:å›O|']øÍÇ=“Çü¦ü§yÃÂïÇ µ¬:Zgô»)Ûv1¦§óÏ0f0¤²I«&Ìs •`ÄÿAÂÍ4pÝÿ{ñ7ÜgâÞ|r!5€ 5ÑÍ–ìÝw¯ªo´$DÆdL°R™¼\Ç*/¡lÇ\¼'' 4¢ÿÝ9pcØʰ›òUVЀX”'! QCÝÏ¡é=SoÃbdúÁoFopvd)ÏlÒD&€]R§ÚŽ| Žwëzï<ÃY Cà É Hßà–„zMÐa8$àŸê %ÈÓo ; œîô}D©3>Îë1ë¨o§êÍ#pDßNÞ²tTB*T ƒ§Ùªi”4$xËå›lí̇rÀs¨õÃxÓgö½ŸŠo­xÙ—mB†EÁd³³ÊÛ–<‘ŠV “©Cc ›ÄÏ‚TcAêÛP»Ð˜y@ñŒiªg‘øðE1ñZOS½»¯ÅÂ̲=.ZÚg] 5w².g‚oG3´G½!‚ŒCg~ÆüÕij'œ‚Ë[KÈn™z–RD¡ÑJgÞ?ÚO©¸Oúh<ç é"×^ÿ”eõË8Ýޱ㾠 ÀŒý³Ógþ w.¸>ζbŒMTzb‹òüC!e? ýÙ]¾iÞÛôO•ß¿QmîÛǼ'.Rwå¤rØVGÉÌ÷á v¦Kc0Ájöfƒ2îp)'Z~ÔúÅÚè3-@âé¸ê¯Õò,àyœ¥¦ §?ÍèhRD½A„¹Æ#A˜ß ÒOêþ&0ù2¡‘GgZ&tLÿÚ 7üºÆ»\ù(·ì 6 ¬²©Võv„¥QQv%ÎRò>HõMo‡öêhÏ3fX•@|ø~ êÏÒZ78Wº5 š|øb•´=n-h} Þ­EüŸF£’× ‘i„@ªŸ£IŸˆgôXhmŽÔõÍ©uƒ§ã²€‡t¥þZdJDÀ‡¹û–i‚ñ@‚PÛMZ ž$ Ú ]ð™ŽÓ4ìqãÂDð abRAÂÒÏÇÕ¹Xl ¾Y¼f/N¿Í,UDIÏÙäé˵Μo‚ãðw ôÿ‚â€aaal•6°yaÖŒÿ#æ† ÍÀäì;¼öŽ_#²ÀTç¢ß3’B\3ˆR3]m×PŸý{±KbG<ˆ “Õñƒ¾¦ç2¯Ö˜ªËc¨™‰Z’ PöåCv+K¯†ê¼ïc'6!F;a¢Ù+,¤½âºÄ¬G†­Iä‡àþ°K¯zäœ:¾È\h‰½B\°«¹UeßEèó€ŸiOÏ+›xl#€T.Qæ|űcS ¥[‚gÅMñÔã6°FC¹Õ§@àx+z eêž‹g7x‰Û¼¬û(Ûh9/ÖøãìêuÃ_R½Ý__—²`¬ÉÌ"€Ôd·—Óh'–ÂA†©L¼ÎšmqD·†NñJGR³¯@t£‰´f¡Îzö›§Ã²ñ´áBB©¸¡äç0B&Jebp>£q‰-9ø€p8j_}±þ6jΪ f‘H¹UÇpç¢*Q>a·]oæT;¡C³0ÅiqŸgg„ZW®=z½›†AøüàÉŽðñÆ”5խẦùD>®ºný¦˜gU扫†RE©†^¬dt`‚å^Cpzº{1‘—°iñ6ìêìÁÄzÀv½D&°û$±ª¥lÁ¹ ­m`͘3ᜆà¡H æMF+ß D^; ÇÛÊø$ó¿â·Â½”ÿ‹…7vQcKöå¦A¿ æie/L–Œ~ •@ÈÑ ]¥ÝËQ²iï€9dÉý‰ŒXä·CÓq1¢±½Yg¼9†6 óÞ—³ÀÇ×8wú;©uõ›yÓÂG o’Áˆ2 ¹>ĸßS ©Ãi‡»CmÆÎœŸX´ë J|ÃØ³¢ýëÁbù&dÄG$¸iÂZ\LŸ]ÊŸ ‘""ø'.®â­Îë±1@.&Xåk@0—’Êv¼§_|Lk:9ªvkbc†õÕÊÔ熧¦Z¿¨É¶+ˆnO!²TÉí§öeÊoz=×wà½zúÓŒ¨D&ðw¶Pî¤öŽ÷ó†ßH$“ÂTlˆô)ª˜”qD7[j̰Òç” Gt4¼l“ïatزf~|én7à„ºšˆ™ÙÊËޏ™ø3æMj:ŒIÁba(ÕØ•À¶›Œ}÷!Ü›oYô+/FGxë^¬Bõpå+Nzà£ÄG^;?·rú0<ÚV¿ZcÁ“ÔhWÐÈžgY7«’àc–Ûdæ »D\’úÀÁ“Ôü&Š]ÔCȪ}÷MéW{ÙŽ#ý /7›zV QÕ! HÕuiø ÂÞÖ½xWº 8¢§NuÁ£Â%–‰o}£1ú»L*ÉÒâ©ÖÓrØ;AB„™ÏQxó­Ôl¼¹gé\¶ðdå¬ ­ ]c›SAë,€M ,+ï<‡ InÆü,¦äà ÝNü(0ld¾jÌ“¼)»úù0—ù ÆÓé15ÓLa9š½j6o^´9tòXTzƒŸ–2kÐ)×€¨`âÌF³óèèæ¼Õ6ñ¥¤õû8âŘŸ’ªì¿íš–èÜêYHÞ&BÈøpÕB@j¡—Ûõø}./èþêuJODw Å› BñŠÒ?*ôpG3OÅ úL¼àž‡Ïc)wÆ,‰Š§*vX"aœà¸­¾N¬hf8eUA)&´olÉÁ Ýð|ø‘&‚؈eWÌAäÒ•ðóy}lÍCż{ñÏM8í}REøp< ¼í¯_ !¡^çš'ØWupÞàŒFõ6Ê6‡Ù4I…¶c| -+Ûñ ò}`ü¼’£‚ó]hÂTåy“qÈë$¼°Ì³ŽqÉ—®qöŒ_‡sš<œ×äáyÃë Ü}Âþ ¶˜5÷b“s>=øcåÍÙHã·ïÒnüÒ­hw·ÒOw‡y ´ åôp­æõ¡9à [ ØéÀÀU÷“O÷ùÄ7•Eœ”Ì¡xñ ‹#zúÑì䪌>‚ñ™0-9“¼Y'Að¨è|†zŒV²r: «òÄ•ƒsFâãÉQ™Ð})ìôŸ¥yâGIgÞM늜2^ˆÌ´ K‹_béǪ;ÿ‡dûßùé5ÁšQï‚Æ@,Ê-Ÿ©¹á8açÌg‡Œ×Ç©üÔûõm+üKW¤’ÿ˜´ùm§dÕ yáhlæMdÉ- f`1I‚™à@ê¿ÆÛ²ÿ2øÄ÷eÜ®‹†¯÷LiÍÁ|bв‚ÍnÜ0ë»nÔßm®A½!ß¹à]¸.)Uô…]’)ùø=÷á £1ùÄÃ`v°4æZ4îƒ4m̶îU] ;S¯n¥ü£ƒžÔ1qþ#v>EŠåwÊ®y.iÛ^½B×yλ…)³8qZ–]Y¨ÃЀH@€ÕT,¸`í‡}¸½HÀÿަɻá˜Ìü?˜½/…±Ì´(F冸|{ ðüܧüµØ¼üß¹þ-Q$Óo­M³H&cïÿaº†ù DŠ:)5¼06 £è´Øê@ÈéOQÛš¿ðÆù7ÆÆDB+.Ì!Í')åŸeÂrãÁ:Ú|Þ8‚ç _ #¤8NŠQ4 Ó´U ‘H ©X?æŸûûo•òYq„f^y¨ªÏÌZ>w.üq)LIžd!À›—ì„Ô»oX¸{×÷úáß§zqVÈÖ¿?:r¼ïÉjŒ 7÷oäl¦m.ûy^GØT)4`‚]@ï?€ý»1èx3íF8×éìTN¥–•m¼eñÆ!?X|AY;,ÈRI‚¥)Þ¡ü:nLŒàµ¢ÆN,¼vø„ï>î›Ou…éZä:9j@êöj[õJÊ5¯F#ŽŠ²˜cÌŽä Àù;jo÷ý4½H³i'šÕ·Â(f ž!ûÖQŽ¡¨ëÂüS õ=œÒ~’Y_D]’êû ç=­< ‡¾œákKÙ¦Ópaÿ•Dlï;+ŒH•å´ìÕxLa@MS™úsµâóð&™G õÇL³³uhEÀ„þ޾üwîë{BmÞ÷P9!Úœ²ØB{û €u¨|m†FXÖý™±˜›¥µ÷˜°¼ÓlX’<Ϙa9 ÁB<.IÊÊâb÷IÌè ‚´ž¦x§"$"¿Si‡Ú§vªíw>9òæ„#a’æaç<Üä œòuã™:·æ=ÚóÎ+‡Ì5/ŽGqvÌÕªÏÿNEË],‡>Å> xL¤¼rZ;$/ÖGÆŒfȽZøbÚMuuŸF[ß] íÜÆB(å‰/„†ã•ˆŠ÷r`ø£ ÍC#@‚JΜõ!>2õ'L@xÐNåÉ4uå~rñÓƒ;B®Ów.¸>œVˆËB(ÞòV­ÆI±Ö„6Û^0º®þcäéKPFãA³ˆmÁ!ÑiÏœ ®~îZì(ìo¹–dOa¢Óô“$vâ3ÐN`â†1‚0Ña‚zv¨ÍÁ™Øq¯¦”‡™’ý^œÖê£B}†CQÕü>¾‡»ý)ªz#¨'½> Ê!oÀ¯›‰ûñÌoÂ}øžð3Ø4è6Òhñ&cÝfü pˆ`4~K¢ß ¯Àä®á|Vãw˜AÓaÎoiú7è»&™6¦YÞ¡*«1B„š¤Ï†äƒÎƒUÊI2x—åŽxÈP/òdÏ„ôë3ÈMA Á`—¡xÕ‹Ëe1÷³&´ƒî¡rik-?^DoÅÆj´{zÒþ¾Àœg÷äûÐÄ+‚pž•ŠÑ•¬#ò“°6X4Þ¿¯¨]Ýßów.5Q„ª+qŠÐ’Ôe$6…ƒû-;ƒÖõ.Õ»æÒÝ A·FNxg·®šƒùé$X²<_„ö!ÈGøkeó~DÙÆý‚‘¹IÿÝ3bMïÀFý‰¦E€2@aŒTNñrß§É™7 ’@a]ÜJ—ß0ÒÎJ"€$b¨å €-ßuÖËÅ:2š“ÈÀÿª¡îìvÍïs1ë™Èpf£ûòóßYNû+™—Z>ÝJu ߯>Ƽð_q¡sŽ2†ú;”0qê×JŸ0o ÌœŒ¹ü%´ù®NÖJ_ißB³p’¤2;™ÀdÆl—ÿ×Wù/sçâ¿$ÅðXòS|HáÐÒð°p( Ç>Ì÷7@¼øæ‰?rׂœ‚/³†¢pbß5?1™©}EŽüÌÅðQx7„†æ^X +Èó)»ò8îZl<®šd"5¯c>6éß Ìšª¦ac5„©r†áýÂÇX<ŒöD’ >|LÆØmÁz…Bñ´K«Y³UW2´š‹vŽÀâu®n¬T¼ƒõf» 8¸%#QnÍK ||ô´dp46À¯Õ˜‰9;Nöñ?|Ïÿ@ÁgÂøN舵¾CõíÞÉ%:SnÕþÁ};6ç#üJ"€PqtBZ—[XnÀßWTßž«ý-K YýÉK¯¢Yâô:ö.ÆJ7æÏ_Á뇪·û÷¼e)B¤†›xÃG:Qâ2œ·´ŠõÌ÷CqqÖ‚¾:V‡£)>„"ÞáXL"ÈiÖš¬®ç¥88ò?ÀPyçÖLª¤ˆïçÿG»÷[ƒÉ| ¶¬¹Ô¬u=B(„@Š×ÎNÑ›Ž°eÇø(cÂe´(ˆý «¢As)ׄƒöжºÅY/…ñS…¢ñ+>/LÂTŸ»KÌõ_RpåÕ-È]8-: ÿ—K8,j‡ƒë‚‹y¢ : &XõN]1v¯ÿŒ „Ϫ®îŸÃg,e~6ŽÏ0§WÁ–ž£h§0£ƒ–ô×/?T}Ý¿‚ ºÐ1Ò˜.B· ›0?Suõ?B«O)_¹÷ Y¹èïeþB"µ‘¥´‡Z—MÕ^ÓåÔ@ïÅx@(åÚK8×°‚Ýü'ž¬ò˜j¬ö‚±ÎÈpcãóÑ-¿¯½®‘§ÿ±õL-Pâ•ÿ¦)j%Fm>ºj’j6´øƒU`*…šæ"$œØ >Vý5xÕÛMq o¦Ã—Î]öبLUðs¨’έ¾U¼Å®d®”¢)pDw@J©fÜN N}…3gÒ¦Í;U.ëÀ‰˜`à±ïfÊfÑwOÁ¿ãË8Âã‹þÆE[-Ѝ.’û€@(¨è¢30±Rê{~ÞÿoZtkR:ž7,} ïµW©ÆºÛ @¸LDA“pÊkp‘*SNÆÙ?Wá5}zÿ»;)ý •õÁúˆaz@ÊZ?X†…T„HXJ•-€`1ûlj¬7ÑHŒa—ÁO‘þÃ#€DêØŠ2‚©ð—·YÜ=Œ>xÈgzD©üvD=zLùùÇp~Âvµ½ggúÌ] #Ř+àü‰ÝF£e3vtʇڴ±$«R‚þ0 xlÁ‚õ³ª;ÿUÿ‰Ee™+ +*Y_ Á‰¡:^ ˆ‚HÆÉ&öý/bÎú¿ë#ÿ¬@ÎEò¶%OPvÕÛI{Îa´÷g†"*ÀhñUöŒ%¼–bþ-k#?"㩦’Q°L‹|å_§•7v…±šN|*™&m ÇÊ)¿ ‰BÂ÷:,TR3IŽžÖlhS[ÇÇPaÅ4Å0E?­…°qƒÚ›¿“«i‘7Ro™Y (Îéç‘ØIå=ÿñ}J·T”uŒMàÊ«TמkªóL Xñ»Hqùý)@ÂõÁXùBdVmÚócŒ•¾ŠÌ ç®E×Á2æçXŒ¿Ê¥8ìOÍ¥–eÓáDŸèÀ ”ëh§ì×@ð8ËiÌ»€5ˆ›0ÅÃF©­ä>Ū]xÑèï†|ÜÃòóÊç>5à~=îá3¸ž T„À— ƒPÁƒª(ý’óemª”/¹umþ g³{Ñ«h\={³ŒÍàõ¥·Jr Ñ 0–?8hh£´ò…C{å+9Pµ¯z5‘wÅ;á\aòÝ‹>ùœß¾­:7Ýf'F+D ‡f­h‹b€ÛàóìáÛŸNĘ•R¶Ãé9ÂXùþ>Å] o¶0^JM·À¼ö~ q¬'ìGº1V¯èçÅhßr¼ÇÜÌ K¬cÂh-ncŸ~ĵзÜVqË¡@#R"ƒ#eÓ=¤P#ìÿHZ[ 8MØ ’HÀ®Å bú/T6æù‘0“”J(:,M ŸG³§„ÑtLÊ[±pþ¸êºõ›Ì×¼¶™q`¡­\'Q°F#¬)¹ ŸkYùŸàÎE7 ”] ìÁ¥È¡¡M¥Óë“ñø9H^¼Ìï\p…r‰!Åùé?‚9ÏÇ]‚PÖ…¾´AÔÆìéÿƒpúo«DùƒËĻ̈́Wþ 3ýᕃ9Zã`~ʾîÛWa¬€#}]ÙŒ %81ŸjÎ\b(ò-*žÙ³‡&7¿>ªêÒP”‡Ò´e“yçÒ²T¦å¶Í4ˆ—гßTü02÷?Çùm—W|¨ÜFÆš§¢Û'§[ûj“HØIÛúÒ`ƒ’ÿ/Ðxt-6Ö5˜ŒÄacxóæt “½©.í+ît¡O­ŸW8'›C ›Ó‰@j¸‘rgüMz¥C³Æ$ 4° î{êéüOL´Ù1 *ø# ·óKöfÊZOd¬Ú²q÷œm~’¿ÕÇÅO#·fM$­­ê"A  Ì"Ñ‚v`¼N/ƒ¬j³vYÔÕÜ`ð(kÂ(cµõgÊ¡)/wOãï"¿sáoFú½¦ï‘Ävá'> ÆŽÃY >_áw-Xv ¬¼rˆ‚e6R«Ídróÿ`UˆŽX CÆÛs«f7SF¢P4åaÀ ‡ø‰T×ôk¬æ…QÞð20èwâ ùu¦¾/Ošž%†ïä¦ùçí»ËaÚJ lfs7@Ýöºr*’W~ "€ E¾TB·fæ‹u˜<Eì‹upÒ^®uª·÷Qµµo‹y†+ˆu¡èìê—¢þg»ÔƒµÉãø;Ÿ;ÞåRNµÒú¾zRÛÊâ2xX RŒ]ÂÞYfvµ$œŠ!Ûš`‘J§ö#è’<6a,°|ýDÂ{¶döp.È>lô=Œqp\ÉDÃ32O~+ŽïÆB‡rm?Åfù¼°ëÞiL«To÷—£:Á¾ä607ØšôB ÚSîF‚•bÃÄסs¬О‹b>Y20’±j ÙWNS[:Ÿa¾ÊDuˆ$á݈¸z^$•ET „ŒÇ!Ã6 d<ŠÉêÙûh ¶£µ˜ø ›eÜ&´¾ü‹yóâ»Ë «±¬ö&X˜ƒë%$zÿp L°ú¿”÷Élý-¯¢D綃9ˆî“èÆÊœÑ€¸¤¾*Ò€8ðÃØ˜¶@”]tU—.Nk|>`vu-Þ_/þ›ËwûPæJîé^…÷ó—²*Gë¤)ÛšÂ~âìí»NÕÕ;àÀgšS‘£\„:0+¤5©é8,އ×qPµÑõ8]W?Ão=êty›E±v$ÀþiW©à& Æ&HûB“°Î÷¡Å ý¨ê냱o?¾´,u§7åQS˪£u½÷‚ò¨†æÆ&Ç;DøŠÉAߢ`eyÓÈރʭ¹&Xš¶À«h†«+Ë”^ ˆgg†>€í® ˆi>-ö%¸Àêr¡³§ô¡ú|à]þ[˜Z½Çßð‘NÞ" Å¹ –ÉBl-€ðæ%#tá&Œ–Vvaû6‘³sLÌç¿ØÐ Mr0¶’*Ó| 8:!–ÃÎüñ˜GŽ×“› c£8¥¦–þ/iNdˆïëGLU*6°BÔ øc(5LÈèY§¶ôtÂT*/çzýÐ ¬^³«ï»”Q´y:•qyggŒ²­&°»‘Ö&XØ ÄÁ›RéœãÌxrðÁ¢´;¹;ác?,£ýê=á¶ÍDZjpÈàû4Ñ{Fk_¹÷->ñ¼Ë¾\.m<ù> –ï.ßÕZ1ààlÅë`ùùVk È;´"€X!eW¿œ4½Ãh7à¨Õá¢8ïÀ°£¶ÉÉ7 „*†f!h ”ÓpZžÅ7,ªïÃ)Ý¿<àÓ©­û6GâaÁ¯ Úùâ’Â(•0å?:ÊOr{}pBw9¾BK$,ƒ'Ù›`if@œ|@(2SÜ!N_´âiÖ 6EU¥ýàôaê"Å&€P{Ç<¬^>°ŠÀû~=l^ÅÞV™•/ÇœŠn"4Á>åÿ¨•÷V\Z¥¢È•VÄB/¤f ÿ^e»È„=d´ÈÞü:51^qÒoÏw.XoÇU¾vcZIÙ#Íæ‚U‚VèÞ°è¯VĵF¤•K^ %g‡Œ½D³Ë’«JF¬Á ”­§šËÜ7ÂÝtÜ"ª6ÿÓeþ>û¨| gŽÅ¬Øø¥R¦þl¤†²™€õÍÜ×ûZX 9ÎÏQ? ,lj³Ïñ4s>‹hY¼«Â¨û·Zêc}§cS"@ø±ËÃŽ„õäfü10©t¡ k{y,¬Û1Ky[{«1±´e‡ëýÌ–¶æè6îÚŒMûvó!ö´UEi/€ˆ ŽûÞ”^ ŒƒÄ21WŸD““9DØ'-Ñt"£ºú«!|´8R$Æ|ü[îÛzAú„Ó{'tX=” ÐIáÎ˶ìûm; ;è“Ôì §ØÒ ]ŒèÝ÷¡ïíw®Ha¢MDÚ!jŒa?ŒÑ®_#ÛçáôýŸý—ù½=GsW÷ÂÞ´·ŒQÄØ?q ¾gåÖ0ÿsÿµ|Ž@Ñ|Ïáà*@„ÍIè¶I³ém¿–Hs,eÅvõœÒÿìøúî’Híp!·¡…9ù[С8cíð¬^âÃr'Ø`ÐXh@œµè8£9ÖšiÎí­ÖôB Řß¡òãl€ðYϳO›ÚGlè­h˜×1Q;vë ˆð:Bt©þ¥ñn„˜XÕ¯Ô,hüêSëX^j£59 PãŒ%•Ž€Ù5´Ôdˆ –ó‘½Bâh@09Ú%N­|‡ì}@ªÒËɇ@ùÌ‘ 8éüY¤›VÛÛ¡TØÀ¼•÷© Sþ~oÚª2¾Yh@œ,ஃÈûÊ`sHVø.Ÿ‹CnÊ—T €{0Ãrˆù­É˜aE&€0uÿ»œ\À…Ö:8Ð[%˜%ižÝÐbs(b'³«n ’AE{±9"¦²S(0[˜kÃ;¶­§ÚÐU!½ât]µ éàB)>Äáùñ¹ Ðɇ³½2 Ñ3#õ™ÐÜ´uæúBó±™÷÷¾œ·/év-+.zcšš­_ÜÏÑš`€Ú»àÛ«ÝˆÏÆ®°Ãˆ«»¤^Rq— GÂr> m%·ÝyÉ9a– b‡3Lûzû&§¢™‰a’\ì¦-5'‰i|HŒ˜(X–‰$ ¯S(bVö¦¼–]6”°çà„ÎUh‚Åö¾AŸøÑ™`QëŠ#XÑ»\ÇÖ¿}¬òoämKÒíÓã7Ø›_uÄ> ¦N,êžÂÇæÚ&Aõ=EeN²¡š˜༓‚“«"uD-êu@ˆs¡ð‘ìB¬õƒfyõ'&»yÉâÎÖ^À"€˜îtò‰9¾w†£‹¥SQ¹+¦@±÷cÔ~º¬#;¢É#Ý.ùå#Ó€h/óq§þ+6ŠI}œ;§ÿ8 Önûqh@`lA8Ä%QƘaIJ}{ïva6“é@víw@ ê˺`– ZÇXîZóÙ©hgr˜´@`Ã.&X¦]¢÷°o¿MÎrãÄÅGD»UµßàöìT¡D+ÿYN½‘בeÔºúHl¾\äÄ+ˆ´æNÕÙŠ‰+/Îôì[G® êöcЀ˜Šý<_ïÒx8‹â`L´8ÅuÀ-Õ§NáKŸA›å(ç€W:HýüFFÚò"ã¬ïRFmÑúÿ´n¯KQëJHÈb‚åÔ+NaxSê„Îup@wH½=‘,¶8´ ÕS,ˆè¼Ã»õ@1ã]iO¿ßUûa\Xùï€Óy:èƒ@"7 ˆ¦²9Ç÷"¿ç&œ‘àÿÙø`8HJ!l­AO¥Î`‘ƒF8ÁÜ2a×%gIš²üÞû!¤AÁe—0.¦«\Ó{ì¨k ¾XöHp’sía6¼Åpb´÷Qâ­¥ýZ"¥> Jõ¹i@êûªNÁ´o­1¾jãcÒ_ÑD-Ë&âåôf×J𞺆;ÞáZNrè?'t¨¡¶,5Qk¬ÏG€ì1MÍ^q|r:B8)ØŸ[ AõéóA›­<-¹R±Mk¾â|°Á…hE?IÙs\ʨZRö6j§±j¿FìMrlÖRð+;„"&•OA fQ{ÖlÐì'(ÊÁlÅ{Çɧ @¦Ò©¾é¬%ØÜï÷ìÿh¥Y¶|GDû1i@L‡øäd†¥<ïÜhÁ–ÚÂ@;‡w9•q$,'^; æ,KêU­W&D³} ¢™(óÔ¾z†})µBio‚eÎã¡CWMª¤Fm§“ºh@àDS{6g€Ø¦*<½…ËÂ>ó+ÌyÿfÛkýtØ„üo¹|Sÿ÷ªøÌ(7¬|L> ðýë\:öW"€¸mŸï¤Ñä§ÎÄ'^o 7´}Zµµ·ÚÒ§…މåÊ+°šK¬o¦ÜŠç¸–UÕô}.&X@¦IO¯j|Jkœƒ –Ãîi¼%?—ÛaŒ©Ô€h Ë ÛDUxH‹Cl!A8£Š›¤™ƒÁß<{±Ù;3ŸzÖ¸”‘HZvÔ€dâ@6>z«Q+ZKêkZ!Œ­{ÖÔúà8øD¤NÁ€‹ól œÒÛ÷KÌÎ hBæÕÝBÙ5ÎñÚã{H*]³£âûö ©J7-ªòµ²6Á‚9F h4Çé¶G‹çybî*ó3+û熫Ub¡µKD`Â^†Ín×çõzÞ°äA»V&™Ê1 V÷ž²×ÿöjÓa82_Õ ÙðÏÃn—üj±Ã(·ê˜’ $c"@øÀÒ½öÌPúúœ{¬5 œ8gW:(yóÄs·Ÿ·/Œx\嵯ùµ|ºuðor üýö> @Dâb‚EržuûPÄ©uB·×€ÀÇ­â»ýQÏÅ¥§X×AXbMúEÖü üêÛ®e$’žµu^£RO\Qö)ð¡ Pìf_ç,kÑ‚81±}$,Œš6jý°›íaÔÍÞüÑ­xÞöÙV«©Î8Lþçm1…îTßøˆ—ëXC³¯´ß}¥ðÔÞÎ7ØŸbídËžZÔ†2Îd­Á‹ÏuGu(/iüF> °hIc“afj?Gâï)®m 8˜&Æ– ƒàqKÒ’Éâýù%g!cðÞßO?á§*¸ÅÖßm@Àz°ŒŒvïõ#ß/í®&9¤4¤’• Ç?l9 &,>ü([ú8è‚Õûº)gO›"ÊÎÅ?ÇÎÈ}arl´!и}˜êê×{ÙŽå¢ü°}A7Ì€ ¶L, hïAK䫇Ì% §ÖË:‚œ_&XÖæWÁƒPa¿:|ùá0é=Âé¡cµÖÌ·Ne$•˜T“k»lhÃ@º–Ü…‡õn¤KqD·éŸi|²@ÖµNŸˆRëmaÇb1gK›&:#¨á™^^ ž!ˆLÆéÕK¨®a½ÎuüˆÚV¿Â,n×jbk3,lüØïäV ÜœwЀ° 0ä³ ÄéôQ‚;¹fkte Y[ dc•6Áj¬;ͼÐ~ëZFRéµ"' ˆM»B@‚õ†âµ6Œ¬fQë 7 Õ¶r¡³GÀÛí$€h/}~ XꮳŒÚíiÓEÉ ¾ë•âsF¯Ãɶ¿§lÇzÊu|ŒÚWä*U_‚˵@Ð&ñÑ&Xˆ*‘àq käŠJô&,¿ M°9 }•5Á"}´ó(Ó|£s‰-ÀÅ‹Ëv@70„*€˜±ãy½ù´N^&-¨êiÚ²É4uå”àÏ\Ó²Ðñ±Æ%Á„8Pé)ôûF{Ó Ë÷íCñÂæ¾¥6Î)ŒîÍÿ'ÆÇÓöã£4J…9ìæ‚¸n½nïXK¹ÕÿY »XZiÎÅ‘°È!šOš1Ì»‹Üà¢jòÚÉ+}3#pŽýù9º ÏQñõc•|v´b'ì{T燀;•l]e“‹„¬ ìܸ Xñäë!À©°øhT<¡ª•¬ò)‹²³Ð³Ì„óØa(ÿ0EøcšŒÏ&köiV8§é‹„¥hýà6”s{Í…³@¬Ë(§¾¸óòæE›q àÿà û{QðA¦Xt.p>—Uó—tnÍoñòø¾ò·þ’7}fo<—‡â]y)æ•K¡½¼‹‰®R»óßå'YíäT‚Ç2ËtЀ8œgP&“‰Íž÷{UÆ2SCbÛc.&Xœ>åéiöÐÒ“©Òö—ÚPrñ¡í¥Vc“Ϭ%)Ûä&ØßlSwjh\Âð’²zoZ‹«ã€zý8¿ù3N¤¿§\ÓSX¨Ý‰Ó+¿³§‹ eH…ð1Rã°P=Ð}R×Õ?ÍÈõ0G¹`¤|©½·q÷ÃLÎtúü@œÌ°xNjûÚq)/ßµà2ÄÁÆ‹ýÙ< 'żr2&Â/C“ºÕkïø<"i¥N8ôÉÞ Ýh iF‡K øá¦ï»/—NÃcí²™™>,­!ñN¬“J‹ùÜÚ ꉊú¨C'ažw[ïúT•ý60žŒˆmb; ˆ[‡ŒÂ,BonÀnç(?{å¼_Œ?û(ãÖ_˜‚œÁê·²î¦Üª‡tî2yÇ×A5öôÌ ºUÖ%bêΩáú²9(3vÜç úZs—˜#¾Î}þ‹`¢Ø•”ÆM´>€yÇœ¶þUj[eÌ*S’|{ ˆi¡—wØÑM Dc±Yïà„®HL°\Âð¥OÑZC®Ò…,Û ÄTYd¢Â‹íÍ\Çš{ó›},ŸìœÐ+"€< ~ ‰A6‘Œ`¡s¢&都ìj[îÄ´ Zž{l™Ig$,ŸV5-€˜q›þ‰wû'ÀÄòk¶ã¦tDàPKï$­!ˆ¬ù´ Ï]‰zB-3o¯ ø¨ƒM{-§Þ>{m)@\4 ~úL°1Å^`¯R ¦äj@ê2âœZLvÌõEMâf‚eåR1Ägåd†5öqÖO»Öú—°Eÿ1µ~º%N^\êÆ6–µ‘5u&Xh¯µÏ ¹ÓS±°u%П‹|çüwú~þÅPá#’ZržË‰ØI¹Œ&5=³¬—%‡³‘8qÜsYPÄNÚîíí±@Œ¿_­'Ø\§>²?ªÕ”ÇáîŤ:7$Ÿ0¬ Á}»×:í*‹Zõg€Zs2þ~!Äþ`Ça‚ÖëÛê0VÒ¥ ÊÖíUJÁã KŸâÎ…ÿíoXð<¿Ï? FžËðB±û\bµ£f ÌnX}‰²k.5SÔ?8…÷tˆêu;+U;œKãyµ-€¸h@Œ­DŠR1l¾‹ytõi@TÞ:æq_mÄ,m»ã0Ë:Ò'—<¯Ý¤ù€¤yËÒ˜[¬¤a÷¸»ñ· ³ÝÃôw`ÇðOøü5þ~„{¿ÀßðûMø»÷á÷.|ڛ؄ԘcÁBB} BÈkB*²bÅ ´µ$‘°Ð/¬Á$%&Xà!|ï#ù ®À©êÇÂ}õ8¨Z¯0Ï«EQN$Bêë”[óZ§‚B#¶ßYŹ4n;˜¡µ!Ö‚ì£Üoo?k“CªÜÅD¥Ì ý°ºiæÙ·GÎ1d¶}Å•£Ô'ÓÚiüÿ*Ç\ÉngÀ\¨½¿¤ªûÌxnþ-ÚNbo·YbÀºóz¥Õ‰%fwÊA¢î€À’w´º Ø,ñçoP}û6@ ÚSnD—ÔqK®]y™£`çv$âɤNEÏ5‚A¹åÙæG]è+þ;¯æÎù¿µ-§ât¾p²ª“z‹ MË;—>cU@ D˜57صÌ2·çUæ/Tw|ñ ö wÍ¿Å/38Ôó˜µ]ˆçóB6Dø±B¨£¥ŸPëê Ì!nªÆ­X½azb“ñ‰ÝοdŒkýÞ%͹™í¨ëÁ’듌£"€ZÆ$k¡pŽó IDAT™ù£ÜêS:÷bfº/·è5~Às9IQÝwašqvÑ/hŠÊüLÌ;­ŠgV†«•ÊÔkû,c“«¶<Ö=í§, –C;]kÔm¨Åä 24 –ïA¬ivT˜»bñ>¢²:t©ã1Ç×cŽ·ÙMC˯…M„/l¸×Ê¿¦âˆòöÞÈÜÁM[í†QÑÝeNX‡fc­êÛó×ÀÄ«|¨C¡(Öý]fš[›ÿËÉâû«]Û:ƒXì4Bl¼–rËOæÎ˶•7ŽßŒ­¾Î­Ù‚EŸÝŠ™À$=ˆ2gVØÎ¼è!?sþ$äÁ ‘;Päx6r¶éõè¡÷á¹<3äjŠÃx·5ÍÇ•7£¿p±-?,Ðö6\¢ç< 54è¶Ï2qm ºí<ˆ­Ä4%Ï~C#XÇt]ñ´RKÓÔâqyuŠ¢Ç* È–ؘ¨žÛ&ž0n´eÐ7'”•Ä¥?J‚Ø,H1©ßYRæ2Á£ÇÏ󫙺§Áæû¹ùÎ… ¢óWq ÃÙ4ö‹¼qþàïu˜I€Múçœ"Ò ¯`Øw<‡‘ªÿž|†ý”¯ö~?0q;.!( v>4OÑKCÚ*—Ù­âÎßóy–ŸÏŸ†çòçXîTdÁ!d¡‰‡oÅh8DÖg›&¹v»Mƒpx¿£±N4Áš´]œÐÓf‚å1Žž‚R‘ù'æad­eƼ‰¢úÈÙOZõócƹ2Õ;œ‚Ž×é>³¶a,’¬ÑZØ0ghŒÔ©òþƒAƶ”èè°ØÙïZð!~¦{6¶·?™¦"öýX0ÌÓ¹‰K£kYé5a fXv‰U4¶ûvÜ@µi± j`ÝÇš$ï¨VäGý;¢h½šûúžƒ5ÀîÏä4Õ¬ßv¹¥–ç,—äë#]ÈÓOˈ ˆõHÙ‚Üͤ²Õ—°µ7AwŠÞW–›»ïŸ»Ê 8(+Þõ/;èf5ÜЇ,"F¾-‘ ¾ƒ4,£çÙ60.:ãHß°p)÷äOÂôzC%ø€}ûGë•(Û¥Lœÿb-€@âŒÄyØ¥}ƒi »Y.¡xY4 ƒàš7/¾‘aÁþZ<›aV áûRsªl˜e–QÖÖ2òœ•ôÉ߬¡;D0Á²M5n‚墱…<&:ì‚Û/¶•ª>ÿB?Xk@°>tÛ8)q»ô a‡„M¦S¨ýÊg;‘LR&ø€X&"+ó+S[$ˆêæ?c¡f=¹Ã¾pž%4±“ñ–EáDç Ðà[±Ø UÕhÌ& ¾üŠ±ÝŽ½¡ƒ D²MLm4£ÃÍѶn[ºB´5;j"ã") ­ü)ÓîcPõª°ª7æ‘*{ê9a•WV9>m,+ÿ°ÌZÑs†Ýª­¯¬¬ßQª¶M°"Ä2Ë)Jì°Û¯¸Zì{0* ÄìFk>‹„Ú¯¿ØµŒ¤Ñkb{$é~bÑ.ìlßn :Ìrε¥M Â…~‹÷÷ Aìú0y‚çH•=òýa–é\V~Ûh§•M *¸·¤Ë »Þì1ã\r}yì[•J˜vîËo˜¿Ø÷ù³Ö;9ƒÛ‹Èxñœ B¾[˜IÅgnGÍ]“ÃA„ªÆM°”rØò0E Q/­wûÑ̪4ÁÂ[ۓÓÿ+ס†þ¢ Nt-'Qô.eÿÞŒF¤É§lÇ¢t&µ¬:Ú–>)t¼mÉÜuë‹!†&Lž€ÏÇMXà0Ët)+…LjužŸ*Gt˜òtÚ¶5ðqÊ5´ÙÒ ]8pׂk¹/–BΑåð‚ze8\•Yʦ½Û±’³öc€Fu6µu_f­Õ“ÝIâ×¶„Âð¦m±½ 6«ªNBSWN ÞcÖý¡ÒµèNl49™ªb½5]Õ5ý§us“HH.&X ÷1x›ó@œpÏxç:Ñ'„˜ùÚ|¾sÁ|ß÷‡Åþ):3ñ“a•J9l™R%€¯ N˜ùâˆî„_HÄÆ7„ýü+!„8%„ç±f_ùÉâçàÌ"{D¨J,KA$Ã[JÆòèÚ5Á‚àŠd䬕äb‚U…&'<0htdB„ÆXý‘ëHÅYêLÅÇj4;˜`©¤û€˜†ç÷Üä²;—f?‘ú¡„WA¹t¤ßlî1éwbÑs” m%hÜ"a©t Ρx½¹•è)³|L¤,DJ¹²|Êaº>–1Œˆ¦Ö¦®¦x9_<¬%µóÕAS‚Ö€¼«òç‰%i:8¡ÃáºúL°¼Œ‹S>äßåü¢²G†ß›¿ºl¢a˜'gêFþȰ۩ý ­ý$kæ6ì"3Á¹{}ÿo¶„ð2Ï–6©tB>ÞBq€5;P:S—_y¯5î”2ÄÏ;i@´V"€X– öv¯ÁF™Û®œV±˜2Á—åï.ˆ`+ûÊ®ü—2RKKNèLÕe^N'ΚåàÿQNEñç5çü`s­Áž]}ˆ¯ìÐ ›ÜæÚ2;#Ðt3ßQ&ÙAÙ¡JYP5±|@p̆µïddˆé=§ó@ŒH‚vø–7ô#XìüÄ’|¤Ø‹c>m?ùû})ë20a™¶lrYD1fæÍKvb×§ÛÚ%ô¿D²ƒ®"Tf³cð§.…kÅ9zkZò4 ¦^ÒÞ"ëúÓLÈ*oÏ~ D¸·±f5ÑwÛí¯F ˆ¶7Á2æ®Ì_°>GËöye寖¶ŸïˆFRuߌ1ìz?+!|²½DÙ›,G*€øÊÑÄ«ŸÒ‰*‹O%v¿ Ø®Œá˜¤&Ò[]Ë …~ãú‡]LîÔ¤¦XLX¬Ûδޚ–H4 ÖàU†~ïXr“#½y×>cBætØæ‘WÔ¤ÄERË&XöÕŽ¢µÛn5 ÊIF¨kï±òr²\04æÊ3tö´+ì&ë$Q98¡§ÂÄ`M{oÁ¢ÔZÚE¬âs“ÔeañbNyç<½„ïZ&iý¾À%е Gzæ«zíë!ëb8k~ÛGýb1Á²Ç½B”º÷N%“ŠE#zL]ÿωwyŸOÜùB®žÉARÃ> uuŽ ˆÓ’|í¨ñãYpW_qÀÄÑÔÕ²]˜'û°Q³Ü’|+}9åV¿tÈÍô}±×€PJ4 &æ>¥·Øö „—y¶´I§ãóo„4íî¥ÔQªmå ’Ð^Gt­Ó BŸµ¯ßf:|ùáIè3ᡈ@O£F2>Ÿldüµ1žOÑmG}µœtѳµ‚wSí:¡÷zŽˆŸ„œvûq^¦ê¨´B]·}&`Ö¦âýsÞߘ.õ÷©µãÄþ{©ûtqBWl5RG ìn°­½<‹ZWiKŸt:Ïe.¾ýíÓ佦ÿ:ÎO_‘õÉ!'^[¼pÒ½½ÄT:A"aÙb_º­WXOª?ÌÏT„¯R íÛó!.§zš@¼ˆ²«ßPJ•Õ kD×®º§i@œÛxJü}Ö¾‚I}Æ |; ñE3G"0ù ÂÀôdòè7Ô²²-Œò"/Ã! /Ÿì±å7rD¹žâ©sm›tºà Bfç¨XLüŠD´•ò.‘°R%€`kËZôgÄ$ƒ¶Ÿ‰7h7“Hz¬¿¤¨?áD¿›5NNô†g³­‡ÿ®¡öÕD݆XêƒgªC½µ«ñúÜìJ:à)©vøÔÛߎ¥rKŒŽÞ°ðw˜ç4£[¨Î[K³ÖdÃ(/ª2Ìy&f®w¨Ïz³Î¥R;~7íù›ËA_Zéyv§„êÿ¿±£à´{ ` 'ÇÞâ>{ &¦Ã“tºû¸XºœüŽÂ5ù‰9ÃeܶÖB†Y'Ír™”áÄ›bºÇÏ«/†ÑM˜KêIé_PnÍ{Â(/Ùe8ø€ÔrÞ¾ºz·~M“„¬MeV’·/èvÃ*Ô좉W1h²êy–'¦,¼3Ú©oLUxÞÆ·ˆ£”†ƒMï N’Jý¥ð­ü±8ŸW>Uz(øÉÅOcñýW޵O¯r-Ù~ómëñ`ï³.§¾)=Z®îM.f/pdKO[­;4E„™ºg»që¨s«1õæßˆgïŽÅä˜êpì{¹ŽïcccFe&³ — \»Mnì*&s<ÌÖæFªê̯°àÆ…š~0R%Þáø1áÎ˶a®¼´DŽÇÍlsý-”[uÞ¸™“¡ÑSÝRŠ4 h(:ûÛöj®ÖU}n‚Ÿ÷¿j‹O?”گ쿎ëÓØX¢³´®?E~ &ªö?6Z·Uñ ö´B6šè|Û2¡á…1ÏëMÛz‡ÓA þÄð{N߉ބ—ëƒð YD):§§ä6ã ª’ó”1¾ ±õ w@°û5Ëöõ±µ@TÛ•Ï2¶x&ådx˜b}+ÓkmÛ1œëTà¢ÿѱBÚð IúîÕ» ä§ÈÄÏ¼Ö Ï›çDŸpbÞ¸pÖ0vc“žCíËžåV†;5,ÖŽèX¦kQîf†Õ^•‹:÷!y DË2X½Î¡âûyÓÒ'èC!åÎ…?ÆhdFË`yß"0xþ°ö¼Ût®c½×ÞñÊ®y3A; ÎiGÛœ,l^Ø”[ñÊ®úWK#&«á(XTàÄkVÓÖS´É$õÈÅ$ ÎÉÊ ç±å_ƒµi¨~:x·¿ŒTý}0_}k"µ!¾v@TÆÚ+Ǩ6‡Ôéö57£îÙÔmªy6t©¢áü¯”òœXF8Þç¡€ß;âJì«{­씲P¼J=è²ò‚ÆÇØŒ¢ß%Å…eW‚«O»Ôïûþ·\èäå®ù·MÌ?„Yîà²ðRmÇ÷K´V—(Ddå\Ý~#”àÞzr; ñ~Ògý”"¿B‹‰5åã9iDèÚIŠô$ü>™3#>43({úô@ Çhp¶â£•OØ-±ž«¸†5 ä¦Ñ*%Q°²'Ö?.-cõ™`i'ŸÀ_Þ‘ú7-¾‡roÆœô#ǾR<Ê:›6ßàlÇ%8/äRÞ´àoC2ÄùÅé €qkÄe½ä^,Ö»„èÌÙÔ¶z® 'æ‹¶B¿Ë…MLëF‰71ßoË™ØÚiŠ«ÍÊÉé‚um„;µ¦Ã¼‚”ù*þ™m[´ wâÙý»-}%èü®G._­DÙ#•‰ç¶ƒ¿—Að¹BƇ œ,ƒ9§µ¢å8dt¾]ûóAÿ.%o‚ ò¯xAŸˆ¿a‹<úçHuTä%ËdŽ1ݳ$O7™ï¨ÑÛ:¤<àµSÈÞÕ'€ãÉðì;Eü,¯ÿJËÍ ~Š ‘÷—–»¼\˜çž‡óBnѹ5?…Æø¹åQW(7‘£$m&X޾µkšW¡îHL±x‘ÿÑ‘™éÝÉ7íـ׺µ„Œø;鉵¿÷À°ˆ9–f¯<É¥ ¡µG@çV}ðzûŒ{_åB_ Z£qæõ&<‡OV¢ü —âÚ©ª6#tÔ€@Í•¤ÎI0^}&X®ç¢$ ÖH=wÎÿB©|¤ß\ïAÁkF½›2‡¦ø×ÔÞ1ϵL'zòkPéÜûw¼wÛ‡+ÞN³e¼ :œ0é´“ŠQ>‹[Ö\F•¡gEt(…>h]0§Ç=8HR)§ót]æ"k¬„Ð ³síåÖ| „XP$Â|¶^mìþ†K•¢å­ó»ØÏŸÍsÚvaÓ³hËÔÕf(^âÚpB'ÿp·çÓOÛ³7nsžÛÍ$Ÿ'ôá…&ä“B>:ü~˜ß±F{)´Â7@¹¦_ï‹# nQ°tï[LbÛy–’2~ V ºòyV„i"bu‡3»šv.ñ8åZ;¢§.«Û\àÂúÛqcmgI‹S`£lÓËþ½–E ¡ï–Ï9¸—¤ c!é%.?Q·sG„ø€¸¤‰ZüR£QN_ÁªÚ’«²?9Nè#u „O#Tð‡0·›ÔŠ%"Ç`­ó_4©i›×¾æˆ.øJlŒ9 ö¥²Ëng¼ô öÅdÌ!²yÑ£x#ºÙHêøOØöIÝ?f;Çø‘)]çc€ßëÆhθ?a"š¦2ß9nFÉàŒ@µ©QÝÌ繆Ô-ܵ ´8ò®üŒFê-œç‚_ãÜ‚”"³®QÄ׎ %¤¤ á¼D' žªÓ€@£z˜m׋ú‹­­`lë-—Ž7,ø3½mÝW.m¹ùñ.2›oDtÁŸccl;¢ ~ï©×WT3âê„þÏ}Ö&ö±i@‚ŽñÕÚr;hHþ*÷Á ùÃÍ]±ž5³8¾ä}k Ø}vªœ;óÎ~;0Õ‹éÐUnjÑ8ú9%uRûªçÁ ðzØà~;øùÆcÚEýÅŽÅDFn"°@P~.f—›"«Ô¶"ò#Ô€˜ùÖ%Qmj@”ßà‚<@â]‡”Ê<»Bh*©B “½Y©]…5N©_>Düçý³!„lŒŠ ¼›1A<ðžú_šÜ¼fZ×Q¶c1åVž¦v³žµ´y­¼þæîÛÑ¡»l;Ìϳ¥M ùnfXºÚ2Þæ²o­¿V½jkŒÝŒ¬Tyã‚{1©n/5ÿHù°8S7ëOô›Ü³CÀ±8•öu˜Äÿ •w 0>Ï®¤ƒ©0‡}€7-|äà_’{'ÿn箇_¯ùObÕ½?©œFk¶âh‚U«¡xI¹ Ø^NêøÌžG H¾ê4 ÀÇZ‚ŵ›uÇàΉà:0aíé~.ÆAäG੃@òAPSæfÊ6?…wÙ ^vÍ•8_äß(»ò8‡Z—ÍNkí‡é²XÃ?€xì¯_b3~0æÙÐ¥‰¡é·ÀIÉžeF|ý¸Óæýë9—Ùa¢ÑŠí:-ŠUµ¶Dè­_‚ÖÉŒ ïä÷RëêŸ`aû'[>j.À0aâ<„} &lØÔªé¡cÂüœ8~uèåFP ‰Ž…j>N³¯¼Feêþ/¸FPm™UD­q˜kU­j@ÈMš¾ÌAWvûÝþ€c¯ª|@‚Ml3vé-§. †â-Kw`ž| gWÍÇ秃 RËæ»á]m+L‡IÍ ˆP“p®©G·w<ˆr7`ëòYu!O'LÿÃKO´⟪sÏ“i,\L°Èþ@qÓþXÃv‹×š5×å&ÐçðÆ…ëÊ¥MM~s—C‚©Å4òPH1à}<ù ³ 1« ‘°~ 3âsþÛØ¥p@0Áx*Cÿ‹sPNå-‹7FÀvê« Yk²ªÎ?Î|§aOõšØô\ÌÁ粬 ³Æ]¼}´ßÓrŸ7/y¼¾;iÓb`6/1¼ç£<G$:%¶Û`qª3~bHަg˜íÒ‘Ü4 ~oui@Z'àÌ—ÝÑd; 6$‹fc”[ÏÌÕ˜/O-o”÷‹ÂЉ¨Óüᨥbí4H¾Ï5+˜ï…@²çv#þhŽu/²¡·O± Êçµj>e7¥àR½ˆO;ðaUW6¦ €qÃýäVHêÑ»ßÍÞ:LLs] Ä„r¨ªó~K¹å/äÎ˶¹”U-´ØuÓªeÂ,Ì®íØÑy6L Á¡Qf\¤àÀ_|X‚¹·®@ã!|ÜÊ{ùuE-Bjˆ¾H˜eýµþŽZW'ÈKaZ­5EÏÉ 9º“’±cø0†Ì ˜§zp6´C܃ö÷b—¬á÷bÜ>Ÿš{}ói~#“?omj:¨Å©»ôóêZœr°ñ°¨ñÐ(íýÂupoø5~/æÕÌž¯ùoIo4æzsØí7 ô÷W•Dyä`~ôxªL°†Qîüȧq[´!Ð$ȇgKÜwðj´'0gêÎíq)#~dóßoçÜ黰ز²Cƒì2|Ý„DÓ:j@Ð6ñ.4h°µx¿#D3„ê·°˜ù„kU˜ÔŽU\ÿgj]qoúÈ£®åÅIOtI:tVƒª¯oÀ¥î=Ø1ÆDèùÍØ{ž¤È›uq3&F\ÓdÍÉÔaL£ãaXSªC1šEN1aæè¿Œè}û~f÷ëyçR§ÝŸˆØ-»Þ´èV]dÂA³7ñ¤õ›°cfN*·š£Ëf`AtDû ª6’Ê@A þìæ¯zSË×ŶR[·V—$sQ<û·:æíÔãaÜ0èWÒìUߥŒ·ð~Šú•ßs—~¬kóâ2ÆøÉó˜âŒ‘aœŸ°‚'GT?[ïâyÎÒÔ•SøÉÅé™°úz¿Ä™úE@ßù Htá\åÕÝ ™÷c—ú›QuXXõ rÇ…hÃtî¨QÆ"ä‰þ÷Ø`uq1÷Q†2ó7¸«û]ÅOX%²Ø;›Ý­š?¢ =n=õ9ÊóÎ&æ³ñŠ=Z‚vôkè›Xˆ¬‚bîD½*îÝ‚OI‚@¼lY÷˜?ûÈ“°õ1!Ó”ÖÓÌg°IBjžÓ°iRøMM¬š2x! ³=Õ¤- :ƒ´›O ¥_锼yÑf\ÿµ­ù<4£ŸÀ¼xAÿoUþ™r zÇÙ¤uÅiß}æ1·õ¯ÎFÏ5ê/ÌùQ‹òêâ.~’>ìÞ%Ë.uÁ®~'bxÿ7vø»”ÓOkRúÖ/fò—ð†Eíÿ-ñŸšaÚ’éÁ)˜#íÃÂx!vÉqbzí%ækÍ<ò÷âßg F£ÅÙ¹G(_¥<žó›éð¿ÁÂLM‡Ùäd|ÍqŒiŽ™ÄŒI“Ú…|»!ÀàÓßå“~RqþqÌqÛT¯¿EõîÝÂ/MüÙ¦ý’j¢ðP²–Ç8hóáMSU£*Xœ7¢‡vA3mÏ;žqf_sÅ(yã|sñKL¨wbSÔ饃ÑŠUWÁ©÷1À±¾Á ?Ï›úT›§ŒÚ~Ï›<êo%ü€ÝãdØvö<ʹº,Dí¤8V¥F1]ã÷twP]Óû°š=Êš ¤[ ˆ¬eåMå·#RÖgö–0ÊÎbìžUvÂ\….Æ´¶ìú zö<ÌuͰ¤J§j;w³O!¼µ¯Šjú,.Ê@›ÌŸ$A@("PÔB°Væ¯*vœœòa–‹†2{°¸AørjYu4eèR¼üÞæ: Lv*–mr2C]}nÕÒM»ƒsg<ƒÅ²Õboç¡Þ¯YÕt¢<ìáÝzéÉ$4ÑLȈ¾ð– ÇÙð£ýBdÚ¸h‚}¹Že×«Âæ¡(ˆÌc¯e/"ŒÝÈìÿ’üíjŸ¾·/(ù¥m ³•δÁãHDÎ8¤ž›£qëÔ“ÁÎÿ}àßh ¬’1åFEÝjU@LDh÷^ü­Pw¯Àø5ÎÆ’A@ 8 (¢jþÂ[™èŸÿ /â‰úM°0~;öáÎèÿ=õŸ~Ú£`¡Œz¿àB/µéìPγ¡K†â’Lüç„$쀛d+;V´boz×­ŸáìéÆâÔJðLMÌóqzúùAùøA}ŽÃI=s—âºõ¦x0w4NÞFП‚¿E§nÈHHEK¿Â|Gá…„e¸{zE¤Hák¹wÿÞrù&÷¦K ‚€ Tˆ>8³ÿ aÕ2¦ª@úqá'íÂõÿ˜?”9¾tfMðF#'öçIågÚÐûAÇ g-³•‚Žœ…ôŽ*Ƴï/²:> È¥!-™ ”Sâ*·ìFÑ ègø¿†².»v[#\SkÇÛ¡Åú;Æw$!‘!7L…ô€?¤à qà5‡6eØ×¡?¿öï—q÷š•AKV ¯ß ±Ÿ‚¯Ç-±0 • ‚€ àçõ Ì•ß)8ãÃ)gŽáût¼sà÷bñᬟ0¼bF~ïqUž ?nÏý•—#ãrj_‘Sœy90z¾Ÿƒ÷óÄq HV†*0Á2€ú´6pY´׫ŸRs V•%šãÔ _'Ä‹¿_·T‹„us3·®2X¬³ •Ä„©D$¨÷’¦¯ÆÊˆuåîBì}²=­Ù.‘­ËCÆú±ß›_Λß]"™dA f(ú®š¶l²šÔ4 k¼é¹^pÊg,ž_²Sÿxu¤õwÞð‘Nðn›|±ÔãÈS!È‹aÏ… ÷|hHÜ,`* Œ¯è—*ܼ \jNëêB|ŠLéo8¾“âSŠÛØn–sµ¿±ALFb&XËP¨+S'€ð¹kÁÿx¹ÕGá{~2:£.Ü5 ˆ¥_K, IDAT‚ô`ASN½•Í Ác=¢[]­òû¿éoº|Kek“ÒA@¨=p^’Y¤š¿ µ×úÒ[\ êa4ïæoÅ@ès¢çãäΓY«çàþ±£j”J¯*Äœ>L¼íSbñ¥IA±K0'ù'?vÙcvÔ Ú¼åaÎf±Ûl§ë‚ƒ´ñùi8‹¤H¿kÏ"œ¦Û†ÊÞI…aU†Ù[asî`Ì &ÁìÐÈü@u-¼MÃ-I‚€ ‚@r0kbpÓú<`ÌálÃqŠ2'#øÒIx{ÍÅö&,C¨ë*ãqr;(61ˆA +µîlý@fPnÕ1ܹ¨jBBR벩:ÓœuQ‰:+‚ù ûu{Çz<,GÚ´‰9¥ŽèÅÆ"’’]ÓÙÓŸ‚mì;m0ˆ‡& ÈÖnæìê=QÛ¸b‚6ÆýÐ$þÆWùŸ©®}õÑħÔ*‚€ ”‰@1ã 3C*ž³•aD‘w˜f*ÖZðÃÁA™OŽñ ÅùLJ5á^ÞŒMx;˜¤˜ê«HqöQž1êDÑD§ÈIX{Ýd†H²™þ±@@wr²ÚR>7Å]wÁë1˜cá ¢4$w-Ñ4 ÒñGªhBÚèÅÄz/vƒnD†UïîM8ä4 ,< ‚€ 6ð†…ÛAgþþR*=eWPký¹Ró”ÏÏ?qн2n$J¢?ÓwÙ:Þ`—Ó _*£ý‰Î “£×81èëÄ ä#¯V¯´i•9šºr ?¹8õáûò ?†‹›qZêÕh×L<ÒFƒÝãŠy¦»/±“³Ž|¾Îpw)íß­:÷Ü/gv¤md¿‚€ Q# ¥Ì©Îý}NQV%€ðQ/±…Ô¹Xä¤.TëHm5({Ô…0I³JØ ~FmÚ(,Ó_ùÀ¡ÊªMQsÆøÜh_@r(±cñ;„>êê 4Ó…Éál8'!˜`Eú@îû@˜ µš „ô£=*ðÉ{ðýIgãó ØLá“G„MŠúÖ«®;6µIÙ•ï‚€ ‚€ 0>Ö‡I¦G=~ùãJ]6~-£äH”bxÄbd-d+š“Cyö sbó=£´7=·Û޼‹/ØìÙ%, [÷;ê R±v3‘#6;èU!€”qvÍN|¼‘ÚW}Ú+1öç™ûÉJî&X¦=~ç¦åªmÖçÔ.èÁ&ìëU[´Wôâ™7~’A@A "ðâk»É ÁÍ®ïîÄ ðùÓ›¤¥w‡öŒVê­éßKoôÁ9¡iøñÁwpgßîTS³5#0K ńǚ ò†EF[uÎ y!„÷B4y9>“ñ|¶1Œf› (Çü JK]Ë¥ ‚€ Dƒm_# [:Ø­A@A@H6”]q¬lZl¹ÄZû>[Ú~ºdì°ösƒO8öéö57ãòüA·Ë¸Ä)’´L›§e%*«ÖÞ20Ôh˱¿}!ì蓚fXÔjÅñqÁ‰¡|U¯}JˆŠ-V€ÝÔ²l:×O|‘fýBÈ"§ „ï1P›6„Õ}(s=Äœ‡!l<às0±Ü«ü-÷ó¦Ïì «)GF@`ÆŒÃÔDº@mØ~ ^€å¿·f΂¿¸ÐÚÄ †)VþZRÚJTvg'š]ò;LYiKÔ~å³IÕ¿ Lëäçý¯XG@_ãòb›ª@[Ï-sŽíÝ6ôi¤)†‘ý>x7–e8;¡Œ 8ÐL­øp|ΤÃÃcó\ã/0áêÅBa|‚váÉz×Ï`…³ †M*O›aµYmîÛ–fÝ`"I¼0Þí´ˆÆ 2{ø9Jë—!lö1x†²xÆÌóµ]Šð7ÕÇ?W]ÛîµþÑ~0|µÏz»š˜Y…çò5gÖ%jîì·©u›M¸êñSvæq*ƒPÞô…˜ Ö (rhÂ÷º_Ímù¹Ê«OªÎ-04ÿ o--1›¼w>„òÛ1Ÿÿÿ9qάgÔœ–k`\¹BmÙR¾v»ý°Šê^\ÏD=s)Î(€Ÿ˜Ñ”cSD‘ÿ[µaÛ_Їæ`6I‚€ ˆ€u¦S1”w@LÄ('*AL¹Ž3NɱŒ‡ó೿;v ¿Ÿ†ï8+á'x/Y‡ßEÞâw.8+Ém¥ìšwi­®²åÑ÷Õ[¹kþ·lé…NR„QŸv϶Y§ª:}5èïP=4_mÞl‚>ŒŸŒàÑ>óm:–"s)f ×+îýZÿØ?Æ/9æ´…üUXÓŸ;$?›hpþeªsÛçÇšæ´¼‹õÏ‚¶ný˜_ ¥ðÕGÕ†-+ÇÌf~lŸ}2¢h>JNû•ïPmØZÚÜÞ:½EÕ5®&`ý8µlFÙŸ._.åk[Z§LUuÍ—¢ý¿ƒf½¶‡GùYH :·æfìWX­Õ÷vOÁæ¨Ùˆ±NÉó1Mézäïh µ vÉϳF$FBj]mÂ[ †uö}c¶“ìľрX'ìøWµˆ50B(Ts[.‚f`+ì_Ts§N)¹yFh™Óò UG·€æ,¤/V ü š3ó-ã–a«í-€ðñUä-Eø0E¾»ø·¡N#5@qø¹û áÑšmËgUËÔÑë-йË>‚Â30ÓZáb¹ù6jʵœ>þR¦ðaŠkï_«F-»ÿ‡9-¯€ðqêùÜOø0T³ eϺAÍ9ßÓ¡‡NB_.UõÍО)@?ë%RÍÖÞòlÕ>ãyCoÊ7A }ÿp}†5ç¤ît>L݉@ØØ÷;h@0‹ŸcÌT¬ÁçAL#®q©ʬ;yã¢_¸” mo߃.õ°VÏq¡ZA@ˆö–Âû^5wÖ¿—U£æÌ¾sùwñ7ïƒ÷*žð ʺhÜræ~L›n œ3Ä"‰)Çû kF-cÚ´ÉØ)¿ ãy£æý‡zÔùE,ðß=b–ÜÌóÀ4$d´*ÆTrôTW?òûkÎì7é¦eøÖ±ZMÁ¥ØŠZMÁÈó¬VKFű}fBÊ/AèàzPæÿáïðw-þ;8 î-„bL·FN¹™/Ež£³*3Ñ¿@лY™ñ1V2æcí-‹Ô¤ú hÏ`jr1;ú‚åÜY_¥ pm3ŽG{  R÷)¹×ï«jùMH<”y-´ž-Ÿ0¼Ù–v0]"à |ñÖf´œkÛ¬²M§•Cg^h= ð¯ûÿí]|ÅÕ³w'Ë ›b[º“-݉5 $!j !„Ð „’ TÓ!@è†Ò€„ÞCï%¡·@ ôP­b«¹Ð .’îv¾ÿÛ½²³3WTlKòÌÏòͼy3»û¿½ÝyóÚõø¿n çås2~Y•'σ†«2SÓII±‰li‹@?`‚iS©>±è[P}ü4yrÿãe³¶¢1q3·`ñ·.öºnÂÂíj¬Y¯ì6ÔþbãßÁ‚‹í@¢sÝŒE<؆â™M%Îð4¢D´iBõ X˜Â×#T$-ÁKér,ð÷DÏN¨Ÿ€¿C\~Ó‘Ä.ýúù¾Db5S×S$ò$æ^3O/UIgtdª LØìJ/Ò=¦OPSÛ©øüÍl?ŸÀ]ž¥3ƒ"ÅÅTS3Vës"—àúâ^Ò+”q7¤¦öíñw0þöÄüÓ0ÑÙÚLâ£P·*k2 X´7H< þ¹˜sor寀/˜¤é¥Bâí:”¤¨†pq B¸°àq!ΣH¦gçPjˆïnœ#GdA6UwE#oažœŸM õ¿AȼŸ•¯Ÿ’+OÄ\§âïeª¯…ïž-凼¹XóØïâŠÁÉŦ?äú}JƒÌQxÇÿøË ™°+‚Ö×±“|`¡ù«@¯^åE`câ|,ØžÆ|õ:S°8wu1ÉdÖºŒ‹ñNsiáÛ"oNÃ-,M±ãÍþºðÁ ä/<õ?}ì÷ë‹Ioß»kHøð¹yÞÔ±?„˜U… [S'¯áQýÈS)pȹp†>cÖ¾¦’q ›ƒâÇ:+;–÷ž­Ó”žîÓ¡M0ER…-Ç |xÓ`1>ÓC7t®ãÓ É¯‡„9Ö Ò’³hQf×ðáO1{îÇDé] Àñb_-Bœ˜'L«]ßÿŸ0¿.|[G8¤jáÙ÷¥±îa-à{é'ø3Hù#â”XÐ,R8È@*ñ7ŠŒbß“pßû³c Böc¸çYd´JfM õì»Ã™TâEœç“ø¼ôs𹓧ùQGÙ–EÀˆ€C±£qg—¾·#óħå¼éêfD¾«o•!+€ ,(^²ÿ Aßɳ°33t‹˜:cSø}<„;!6³Äø+‘7â̱¬ÇºDïä˜Yd øÙ±#6UŠTÁ™Y`1“xŒØV½’â ÎX ag¼Ââ™åˆ«}Ã0†ÍJ’ñcΓp>¥ß+R¨¶ÿ‰ 0î)ŒK*3Kú çE ÍkÈ Íu>C»J¡‘|š› @{^¥£%„®ñÌ›ÄæÞG!|¼©ÑsŽÎ%¥y)ÃÂ9[¾Xrjmàý3¹‹Ö¢æ¶ëPG^Õ"›lW×€øfnºÀçËÔ<·+ÐÖ«^ñ­CØä&•«ý$´·ówôPäÕ­¯¨‚éšâ““!iuu-ÔÆç3»ÞÆbÿž\³ð‰ó­ŸèßK­¯Ï }^ ã`2'éØÝoöf B›£EÄÃèø¡‘×H4øÀ$k6Åoän°ÿ÷Ùøeê½óÅ9Eú ädb/ü®š°Qð,8¶ô‹"ȹê¸Ðgú{X,ÊG‘;z³þŽ_ÚãŠöØ?y ‚hag¤…:l–» sr?†.ç!ž V¿ÏAY H¿Ñ³—9BD<ÛovDfÁ¡1ñ=âüý)ìëÀ‹vÇÁ¢OLò¦`-F4òvF¯À‚$´¤1qÆœ ¨UÏ7 ùbŠŒ ú`ð.q*q$vt_Ãq7R†Ûy&×_4æ˜yZ$ÝI‹Òkƒ>3ÇVø i@üÅüc~¿ÄΜü5´ [À<ç},>Y8Q‹$]ó|SôÅ¢ëþSlh}Õó0¿ØSÑÊZyÊ'Ÿ, …¸ž¦ö#¨ù³‚é”Ýyž`Ūã,Èÿ®>ú Ø,Z&3òwù"MiŽìÍr‰FÖR×1OO´pέ­ cB7Ýk¤‰B>lzu¾g"_OážíÑ¥|þ*ÐZµ³OÌ?°p×µ{cwAaÈ¥¿„ŽÑûç*’™=BôlS¨Nø©ÄmpRg!|í~6M +ìË’ª»ÚÇ[1Wmb`°€C?›…U{σ¦,Àk«+,N4z–·6î'žùUºÇìÕ9‡´‚ÿÓý¸¦üì’o“o ¡Š¨»p¼NÇeÂ@N ûgl}µ¿üôÄ/2Ïò[$BKå'£.v*g9-ËÞUg3‹Æº'`¯þ%„w±PØiÏÁ6¼‹÷&O«0m’n:b:K¶çOÆŸÅø•Å#ó²CtÕM2/XØŒC"D¸°yŽ+ 3˜ÉX´­æ ”‘ãéòx˜Õk ç|\ÓšÙ> ã=ñWâ}’Üôº˜caˆŽfHÒÜyÎ+»€…y/øšÚöÀ®8ê!3o2¹’6§ ƒÁ{ÌÖÅùÿ…ŸŒ>,,ösƒ„Ô5 䘟ÅÉË6O¢Ccìû(Æ]þ"HD3ÁBôq© %<µ#zG(UÕ…‰%« 3üò|_•š4ß'„á{Fo´*ˆµ®qc W%É ]·),¥"&æ›3;ÿƒ{î;¸‡7¦–Ž{ò÷€+õM>Û¨÷Æâôe¸‡`ö͸¼ˆ2ÝI܇‡à~›?F°"3ª"ä›Án¯Î÷¡”,›ÍÙ?xƒÁI<ŒßÔnÆþ’D1ç~ž)¿(ÉfêäðÆ„‚Í3YˆáÃìóy!&Ü¡-8K±Ág¿…æŽbñôm.OØpýseá¥7½øü(/(¥<‹Àm©¥«צ.Òx2Þ­ ö¥påþXü!›¶X‡š:ï tÏÔýª i@˜:³}‹?Ó³Ĥ1-îy^ǰègz¸˜%–wI¦Æ†’vT-–çÃaÀ¡ £u’48¯ šï*“g–"èž#OÊUJÊc¿ì.|ÿÒð.”6ŽÓ‰Y2Üáª85wA.Æ>6ïSµV,ð’Ü™hñ4ÜO'R˼No¦°É`~z§pmLK/ºã}Í×þ]‰{züŽvıt3kYD’d-%L¬Ìe&æ<¡–Eİßåm}SÄuˆÄ¶Þ¢xyiꎅÀ f¬ Î÷Ïã¦çßßÐæ¼DbÌ'Ðļ ”35 Â-䥨8…§úüï㟙ôÕ}R’}@'SræAè”Ígb*_î÷T’¾1”©¢þâ}zùi«õûš²±xÎmýè¤Î³¼ÆÃÇñQ_ŽÍ¤¼…þ‰ïï‘íþÿh‘SéË«/‡±¼+üP®¯]6ÔûãE|´¿ƒ0p2^º{QC „>vuĽ¸¿+[zÓ³_‚s)ŽËù Ôç2/8_Ĺ[[¼›NMºúbÃß ƒ‰¿ÓÌ·LÓx 4¹è|v¼ÄÞ˜Ï7Yš5‹"q<žÕ/Po/Ì^Úÿ„1¹£¾{,Cœž¦¶_2•Ìdò'iЀäûÂÝìPá(LaŒI´„¸ü¦¾#¹±3KôLÞ8Dp¸ˆÏ­qÍ ‘ñ± F¿¹ÍòßC7XçïIˆïI^]Šÿ©4iz¯Euu«ª|†–¤-5* ¥­ó»òt!TwHD†âÜ+åŠpV/ÂÒZ„^ ;RßÅÂp_aHSû?iæ§_£Vì} W< õs5â"O@è`8³íPÏ °aÒ$ý~¿”m!ðD¯ ´õ*~HÅ?DÇ%¸ÈuPøw"h<Ï΢±ÑYx>þ4]˜2¶Ä¡‚€Ó0örë ä|ð@SÎ:ñ±Ì †Z[øáx·èÏy±´')º%ÆÞÓŸñƒ5!Ä#Ný&8Žƒ—ôÀ n„Ùr1íî%løtËoŽ£/ÄzáÀÒ»žòHìï¸B hú´ß•­'•¡‡'³m‹@1Rñz܇ã%¼?Þ´ÙÝ=ÜuØ!ðŠ'àÉ»ƒ9šÚî(6UžÎ;…Ž89ßV¼E¹èÄ»¶HŠg,ÈOª…®ó½nv²M&à E@°x»·È±!Lñ܃$ú½àð|Ý•×çë¦ û+4Ö݈®£Õnø®ÕÇù…öºGoncßØË‡v•IbW=‹g~‚ Vžn¨Ö`hãõ¥a¨G’æQ†Î†‰¼èÅÜÙÒÒÑ œ—€7d†ä…G÷¿‹oø3ßãF‡Éøž »ñ!.7ÒëB…ȸf]q彸·¶ ±NÀýr8h¿Ñ ͆ÚÃИP äkæk\‘p$t Bc‘˜<´³z°Á9c"Fáö‘€ JÐr½ŒóŽÄebþ•ª·ñ^µCkí¤Qø÷´Èý@£ëý~‘ï^çW)†¡Óö®«í]¸nj;GÌ­*ƒp ²$Ý«j4W†u™{Žsy6­4µÏÀE°üµÒÇ>YÉÚ-òúi…Î 6Ñ (ªIcT¸'‘D3™ØÁvÐ5…Õ6† ¢áâá2ÐóA¬Õó:Gx¼÷Š ‡R;ÝÏ ä| ¾o3ñ‹ çkІM^ÀÃap„ì*á¿‹ì:^ø ôd—ñxR¯ãò"{•ëºG¹Rnã.–SÜ–ã&¹-Ço•i9þHÙ|ܲõÄç­ð±Œ¿œát8ß÷¡ò3æ]½T¿GÞæü9á£ØâX€üÃóåÈEÝ1±²Í´å=ðø8Tª<‰ä¢U Ä$`Þ1‰Ò™¯£ëÓ48Ÿ³ó­xWUÈ&•Obá"·ÂX,0鈔뺳5^Àe:|BëTO(­\Ñ| …¢ èb3ŸpT~G=?Æ`BEˆ‚¥i0òÔŠã~©²-1Z]{Îàò~Wlæ Ð;|Š¿C|ºÖÍØö¦ËïfÒE´¸pB—Å™Ûð½®Ç¹À³Ùós;ß MƒS!Ùs³2$ÝñÅ Ž@=äH1­œó%¼DÇ©"L°,áÜÆpº§`¼aÑÌ'ÔËóžŸNW)F*©j9ÔjËäüOÐæ˜ÍîÔ±^Ë ‘dºcЀùÃ=´Hža H‹2gã|2B¶&Ý$U» ~˜%„ÜcœûÆó ú6É1â;Ó…díB„dbmïž ‘msé €4{ r®èìxš½K³Þ9ÐyÂㇼBéÅ/a¡jVS‡¯ÆÐÆØå"€ày, yþÎ_‡¿Â¦†Së3 fW=¸~*[{­Ïƒ‡à$N<ÂÆf™æã‘­'üí'G‚`5¡™§Ä‰ë8òL2þ.ì”9S±¾ _9 +ÉÄõà½cÂÝeÚ[#êÎ °­Öøe Å1…æ5deŽ&“.’õÊ|©Z¼¶Bóm”éù6„qniÿ°øl†VlAÏwÐ~[ƒàœÕTØ/ª!¾+L½î¡ªñ0;õ’D~Ëcå !¯Áïh/ÓPKp8w"õ3ÎCØkueÏÙÒ‡¼}i;Œ“+}êƒÐ ?gñpýn¿§Û˜ÞÔïñ„¹ÕªN$ú;Œ_Ø  w Ÿ&›¿»ÂS±l¡‡@}M /"ø] ä©# èM½s?¬h>x5µ;"jÿžÕE$Û<óîZ¡jM¡=ÙZ8G§ÊÖ¿ Êì­8c³&£¡öHÌ7ê’ÛaGœ…˜ÂÈ¡Í ób¡‘)ýÜáü)ÖÈj¢É»ÖÉÞ }Å›×dÇí5#ùÕÜÿB_ˆ°Ãq–×s z,7Òø)ܯÃ^DïJWƒBÊOŸ:– “X Ò¥vZŽ»€LxQgUpl¡’-T Ù–Ñ,}=_ýšbã×Á÷±¾6Nи–=4zÀf0®»'µt~$­÷öf(fXs:Ÿž„çŸ*ö¢Xüvœ‹É,©è¡²w“ìØ;¿È s³é˜²âãú7?‡QNoG³ç~žÚk·}ÒFõu{P”ózh‹£5€û OÆ¡b;ÌÛöÅ5àÕXA‘ˆ8ºñüÁ}Ua¤ d¬‹Ì'ܸá÷œB&S‘H“&çSÅ”ÿG„"IM±a.‘ërQ¿ÂÝfº>q˜!Ké¬B(ñ½A™‘§r6ùˆü¥'¤‡£Ýå™PñZy#ž±_à·òH°«l½¶vRYPÙIF&' cñ^[ Æâ6G.–G Æ\¦9 oÛò¥¹ÎÐö“.s«S`nõv ÅûuÐpÅ#v1þv†ð¡ïÌ-߯ÅÝ"P~!±iHcbE£3±¸x/ÿ{0ð좾…Ô|,ÀïE´©­ËNÆ WŽÂ"Œ ÁÁÕTlæë"ò[¼øÔׯDæÙ»…"|ð^4w\†Ú¡ùñJE«4Iè>ÌÐyKå3´¤|Â@Å;ÄÁ¿\1基B™W3 ñ+#=H4Ù‘ãÊÈíøoÍ\‡b*¢œßMv,²P”‚ò%SD¡@þˆà,¬mZ„t´î’>Å}óc,¨NY²îר/‘C¦XaS©¦öŸÀ\æ`°´cSé0¯!ùˆš´[ÙÄ‚lÚ×ܱ3´O¿Áõ|¢ÎS¢%é.Z˜Y™ãKßó­mO`ùÞ(qt}L==[VdÞÆópB?Žz.ÒäKfʶ¥)ÂY“„¨S;ZUÌ) >2n…&‹RšLáÂ_;.û{´tܧу„Ööp/4IÙúöyGÕŠˆ lŠçóÊyzÑ P1?«ÃcRSÖdzÿ|¼+šh´ÓB uß ³¬Èmtä™üWEÞÂæ÷ Œ'Öž,M³øA[(/Õ/ÿ+ù€(¯î/rÒ‘å7EÆ–"‹U.œ€ä.§‹±N+Ì­ÎÅÚ¦‚]©Õ>\ó§Ð†þ@¶×·uÛ²,{8|-'à㛆sôfE!v¦Hô ¼\î/šøŠM…R‰1Ï™š¡]]Èì€û§MiÄyè/_Á&R%LMíÇSø%íBlèÍ™ë@¬ \5ÿÉ;´íí‹òíb!L/vpWàä)Œ¦bµÀH}¶s’6£-7vDS‰â;élFAôCíÔ%Ìtx!\®ƒQÓ®²>›tÌ>N…;ÇP6öà‘Ù×¢¹ý;X ï¾¼–†…1’¥t÷zX¸cg¿¥[ÀÚy&))/Çß ˜Ü•îš:þA$‰q»ãˆœsâ-ŒƒOÕÞç›Þœw7˜Ö4"øŽQaá{·¹ýr$§äâᘿ=úBÍfDÒó;¸ AÖ…ßÀî9…ó$ŒSÏâ 0þ*´z•y vš—Ó¹´+å5_¹9zWaM›©,05oX“ V‘0¾ÚaªFB¿¯üŒóºæÌ‘唜óCˆí80_gŸ%aðÚßwùò®eõ<­¹óy|Ÿùv¡Ò‹ùõëå~'óZ-Tc£dâLïb³ ÷2L¾„Hâo ²‡·…DýŒmEý&¯z&ÿLn­À‰ßÛÒ^{F•цœ7ýK'9dáÛöñ<ñ™&¦^°ºœ}Rå®ÇÉ Š&VŠŒÇ“jRb\_ºð1Ué”eªLI÷|EUÙb¹´3pU!É3{VE8Àƒ}ó˜K€Í`ŽÄØæøÛ`ñó~Ž9ølPû4̶%Öœô§°c6ñÕ¨d>ß^ÿ.°òßà?{û_11ÿMš4žÆFVƒˆ³æÌáHP•=¼Á¡ÿüßø!ph?ƒdôGÀrpðo¼˜—µ_B½@_õÜIl Ô×­žd"!øUR¦LÁxÍT ¤>iotÄ¿ô3’î×Q:$ÌÏSñÍñ ~N¡+è9J3×ôd®JÑ^l–|®Q³‘V¨ˆîB=W $e4¿ Rű¸/2ààðá·Rzá={ ÚäFùŸÐö4u½¥ÐØ·/ýæ`ß¾õ1Þ\XÃ"#S}ÍfÔÚµB®‘<ÁCˆ3Çà [¥T¬?–­ Oª”¿¿|†»±¿S-ÝqBJøôOñÎ̉mÏ ÞîÐBFwÂà s øòï–‹î'çžYÙCrÐŽl'²hL|Â60—IÆÏÀËå\Ä”¿/—â;–ÉšM!|ÀDªXð¶'^"áVÈ·‚Í’U£ïÀçÞq8éU*þzÔ—¸¤ÃåçxQaw,|,ƒ„h ž^+2ýF zzŸ3.‚¥h̳ ù?^•hetä» •r"‘uµqLˆ0T¶ð΢ḙh†ªìǰChÚQ !*XüDô¿ù¢ØyÜÓòb[/®{q¯JŠLn ¸C&Gyı@+ÿ¾ù;ÒŸÁ!‘['±£/鷺= ¨'¶ "TpÏ÷ÿÙâ }J!×4‡…¹k³¥8ûÞ—³p¿à9ÁÑOHˆ{Ú«¿SÑdcŠdxEL ÓN…)]UbÕ0mõ·™cèé¾’FžŽfAêæ )n£†Ìû°3\Rñs Pï&£ÝÓª‚`s¶žlÚzÖ„±Œ¼> Ðè¦ï€f™¿W¿4&ÖËUóŸ9¾¼H~Y ‡®ªz9ß_®"`çD~ ¶³Ê±Ž”~1ù¬q4vÜ>ð‹>‚‡ù½1À‹…*ìmùåŸ/¨WáS6ˆ+Å3Èat\ø*m;ŽäÝ•«*åÏñ±SBbþÏ€}ñ…¯éÑC¿Áï@?fw ’½L§YÓÿ!¤•è@iǯ$Wž¨DNªäšS‰±(ý X}Ó"v'$šK"Cø´)Ûm°={ëø º@€Y$Ý€„’¿¥–.¼œP84clì1˜“s¨{øg>çßúž’D¸OÁIÒò|—ÁØ,€è~ÝØm%–Ùý:’# ÚV§(lÔÜñ‡¥t5ùBÁŽwF½ÈXáŒtE¦iž;Ï‹´Ó2Y¦9ìp‹¿ûaGYö‘‚@[Û'¸”Ûú9¸]$rîÛÕ0Ï$<Ë&Ád®³¢9cñiF>×Ó é]¬j„Ù‰ó•NAqh:ŸÃsñJû l¼|ŽØ kC09 «Ћt97Ha³ÈK*š€ÆM‹\æ¯kô y>¾êB¶&e‹BkíäMþ+~n'ë?µÈPt¯æ®×p}sq~“UF´x=Ä‚˜VÜr„DµB´ÂqÛ9$÷cÆî `J·t.kÐð÷ùÉ™•™(ð4†‰úy)£HŒ_„ôéÒ±úØ c¡H)¿°gßšÙK–}E,ú}ÜöKéë.\ÎïMéföFÒ=ì,žPè°5‹@`íA2ñ'c÷Å.ðß(ÝsÍš×Qr:Û—Œÿû#Œ|lƒë›3ÍÔúb½ 2¼Ìä°U?Yá÷MVNGç`u½ÒÇ ‰ÌÛIAC.ñìÅlbp4L~…]=6Çò‹ð´šå‰„t¦G‡Œ±É‡y72w Ç“«*ŸB,Ì·Ù„µì¢–᥺g¦ÒýV2±3„”Ÿê]ð±¨ÄäD¦!€ãÈ”¡Ï J{û|ZuÕ-iB5‡þ‰‘ÇDdgd‰Ssûµ¦î¢´®®O©aÊ·)í~ùÔòùÞb¢è€P›u”û~BClÓ"0h4u´b®Sú=Ÿt¡5p\üÖÔM*²qÀjê¸Ï’ï¡¶£r\ÏÜÁ/"tlž^le" ˆ}ÕM²í™ÏIYÀ˜;·¸†d|”7R`z.ò©0Ek'ãÝl´Fwè5…Æ›u äÎÎñ“4—îÁ9Ú!~‰œH#RSÏMPdÔøz(Æn‹Ï ¼IUìëVpégKãfÙÛ½l?µôû°Ÿó›†Þ\&¶åOãLØNò’·q&fi¿Ì)â«›$ë.f5 js˜'¦œ7…ªGí e1!²5ø«–ê·=.¾t7Õ¥°·;*¯ž2—a»-•!ÀŠ“ñ»poáGRtÔAx±]E½_e´Y÷Æ$îÀ˜-KDLFDÙ ÿh¤|Äi [°ÑÔyvü°»ÉxaO!QÃZˇ)g‚W!a.î£4kÁÇx14Ú¬ßT ¹–ËÏ£Bt17¹š¸׸:r~\Jv— çøHÆÂ‹õ¼Wà³ vž«|é&D3°@˜Õ?‡qüµï(¼ä·Ã ™fáÇÐw3²¸ÿ±ÏZ4>–¯‘‹¾<[,%àðÙü[¯[u UÅâˆàW ­E¾gÅ,t lJ¤â ¹ÏEÞ.<‹åPU„5"ccÀ14npörGœ¥ÍÆ›¹I"Ë ß©ð#šÇ¸t7}"cA ’¾ &\oæ§nL˜´®PëçŸåy†iEˆCb4mMöwÙÔrSlFoêD«×Z–—ƒ/ò-I=;@øè\–Ç5¿t–åôáXÙ| ý@¼ÃD½Å†'€°6„ê/Ú? íPý±]õ]P°Kaú¥ôá$ûÀŠßï«ÒusgM×M%ú0eax/¬•ÆRÛ6;Áó¨eZÍ×iœÀY[,^Fd¨ì£ãÿ òõÁ./{ò(˜ áW¡ÐM !5òÔÕTUý5.‘ Ð_„j]y‚”—á\UÄëtxÐ@üpUø`)š´Ÿ,ï¶q‚¬`\ûÅò?P\³€_ÅÃòEȃà(~)Å ÚŒ|g¶â8‡IÐ,¡ÌbUp™Ù~ =ð Q5¾¯Ë™4±úôóóÇÁâ›!b¼6/¤<>ªƒ‘D>ïTÝb`0:ÄbÂB~ĦG½d„b4 bMppØÒ4þZ±@x>?-¡Q¶i°ôߨCø¯²âù6 nÇ&oFðæiéâEš’g5¹‘œµ±îI4·Î‘¼Oá¸9÷Kä£óÏMÏÿ®ög>.3?«ÄÔÜö¾2©á„ó‰ß iCôÁ殣—ÿ Å;ƒ‰ — LC»&¦žµ 9ãjoªßç4,4×Bbir-ѰF#VÙ÷ÒÒÕr˜P ã)¹ ³‹üô”/LýK“6¬—ÜgÝñÈþf'¤§ÿÌ‘Î3j-Hþyy#_éïôÚò3$<•Z]¹,}*>1˸|à(O2¶'œ$·À l-Å8ïDRãÒxY´àa ›}D™Ùþ|ÙLB›‹Üˆ†?‡i€p×PÈœÙYÐ5Xtª¦F’žÁrèI…_’.€Db¼xÕ‹#ßщ!Jsç‹xù-ÄqƆzÖµ M·™×óZ‘U)Ð »9¼PoLÜ\öWyÅTDõùŽýK£ ”¬;/àÕ1h dÌ6í¾¥þ »Àó[Úò"ưPU¢È³a®öç z—àìí,4Ș+tàZy8S~a›É¿Ž§Ðä?[,¡‚g"çD¡~plÒxxøY›Û¼À¦ ž±.ÝO‹3÷—ÜHÉ]S:}Ìh_Ã3jbŽä}"™ îŽç$?;>Ã& Èð 3/?Œ<ÁÔ¥Ñ$}yUyÚiµëcÎQú¼RT4†Ê ¼!íL»ø\œgþÆi¼‹:˜x#& |%p@ ~ѰÁJ®.FÁ“ ç%«Aó?÷J8òx°ñ'0–Sœè¸*ÿl"ù“Â,(:0y†eQ‘îïeë¢éX‡â:—}Vu§Ÿ¥êì÷جð…o%ÇVü/{9Ó»3¸‹¯ƒUû)²ë¨mY¡ðb·Ç.EŒó­ýçPøaä™Å¬ŽÙêÀép&!òÓ¡Æ]iÖè%§bž³qw‡' ÁìÍW 9´1ƨÂÉ‹`:u 漌É3׌&XáøìÜíå ïö¥³À¦jP$tåJ:ÝdŒPqYHzAžÁ5EÄ/@ =DÄÏ!5àÎÄ5óî KÓjÖ¡ˆs4„•9¼†\@™ p6^Ì×ÔlEc¢×ã»ØÍÀa&IKR‹ÛÍ %¨3Ûùšl±XF*Í]/ãÒøoà…ÃÖ6$¶ÁršƒQ¬ªLèûª¬£Ð ŽFçf~†€"­á.c[4 ÂËcd׈ŽcØÌ—p_ÒxûIÀ¦°Dª‡Ã±.œà‡ÇÀ+4ÿÍV¼È \ò}Á†OÔß¾ ³7|yÿ!ésXß*gÐ÷÷Í ž|ÍAœq)N%;Ož‡ûä½¥xˆ¥25¾lHÐt‡ìͬ›i9þÀ¥™Yr©\€tðHƆàñ &ÞºâÉ…ØêÛWðòø®2&‘Aáv<Ž1øøÃÂ…—"’¶ ‚†”ÿòù8C0›Íl?ÑÓÓï á9¼d°8p©Aº9 p#WןÒB°ÉTéÒ6oΓ_jŽ®¥iéxdÌ»vB|Ø=!d1þº‘—ã´uáƒåÒÁùh^êQýk[8)[&½ à¯øupò8Bt¿/»×ê—ðáÑþo°X*G ¥ý¿Ô³dC x¸òAàdÇpÎKÒÒÅ5å ç‘Ò£nñ¸7ËÎr8r‰)›æ¼«Ó@‘bÞF›¡xƒ=!Ó™õ–·ðÁ€ / NË«gññ5>ùáP°^yòÇ©nó lwoËpG€}œª줯‚…úÔÓÓ¡$Í«äúRuÇA˜Q «Î³A‡D¦oæ0UËKðËØCáåõ íˆ)ƒ¾¯ÒGÄ•Ba{ܺº½ L¾‹ëc¡šïÀ 9TXÈqjR ^™¦P„|åÂ_û±ò“¡£°Ê°üf‡fMÕualmh¼z¹NÎîœJLŃäø)ô µMt$>•íù/é'uj%Z©j#à“‚ðÇš&Ö ÍF–é7Ê&) ÝV-‹À !à'‚ܦVxF;GÀ„ó‡x3Ýý‰Qÿ«Ö+óÉJ+9‘Xõ7Œl—7^*-›jŒR¼Š÷ƒ«ÑD@BÖšoh Æ:”7ðO¢Öé×âSß´[§;ì—$ü@Ä!Ë«Š‰ï–wcY7CÎ>þåŠZÆ¡‰€ÿ€F^ Ú ŽÖØÑÉØsŽMXó®Ð}”^r Íž_ÚÑЛ Iß0Y¨ÀæT^‡ü=øl…ÿ¤ÈîX(³ÏìK…³ÀF¢·€òmºHžAc䎘3›¬O¾€Äk{Pë¼NhF¾ÇR»Z`›ÎÐíÇËÿ‘ʇVQ¢áñ ;û‘N:ÕX‡º!í ‰]©¶vùŸÑm(±Z6UR¯‘Ù8re¥lª"K¼HšÚO€ÁJ\ˆ¯‚dÅK|(ƒ–â ¸U?êÔ3 òŸ-‹€E`è ÐÔÁ›ºÏâ=¥TÍFäz%xÿˆ žÏÙïùÍ®¾žµß4¼ëð^é©LáÍ› Õkë¯Kì"F¦’F/òOÀß8}G“Ji†‚÷YŠÂçg‹`Cx-’ þê-=OÂ~¦oйvÀnü£Þâ¾>¾ ´2ÏcÕ~ hGCˆéõ˜‹eӮް†`naÂ"µ¯º?¢‰²ô²¦F’pÌât…ÎÑ™F;ÀPì†s‚!TüèY燨¬ýèB¾5º‘ g_+ô³€T¼4µÿ’+ß ×—CáÀ çNù-ý{ Hô4^À×ÂïÆ ÅÑ´=‹ÀpGÀ>óÂ~÷žÓ¼ŠŒ„ƒ»¯}Qé¦ÖÄj˜_Ὡ1ˆçèOŽEú<¼´# Wt¤•¸ Ÿg¹-Ç7Åë0|±Cñ4 ç$gŸÚŽ…þZÜã n‚fæ™î–i9î+|¾¯a[KÖíO±è«ÞB¿Ò‹ðÃÜž!äf<ÈôßV*¾5è_Ó¦cµ¨*|XZÚ_„&àØ!Psœƒò­ÖŽ×i|DPúu^øàN!t*Ÿ^zž›ØÛ½—º bJ8ØM—ãØ sCóŸœð.„Øé>XÛBh{¤€V)Ë åoKp|¡$TXKTW§:X†X¼¼,,6µmЏùcнÉ̦”Î|yÈW– øÛß aàlÛ"`°T„4 á"ßSж%|óLÅM¿j"ˆ6B|@°.‚ÉÕ™æã÷—CTøàïjøi@pÒQŸÅ‡îdÊW´Œ ¾Üh;îqÝÌßhÖ‰OB(6uËèò‡Ïa¦NX…ªÆßé/Ê幈‘Î÷Né’ªûìa¯6ï¼`(/²Y]m2òfF¤¥d-ï8œæ5óÿ‰ÝóÕB¥‡ö^ShjÍ×a:ŽY¯ôJù}ÐX-{ïµtñ1ÕÒÔÞs#Ö†ÄÔ,¶+/lZ5Ya´¶ÒægÙN&ŽÄT¿!¶Å)¼3­w ²aã÷+D ÿ˜µ"åÐâ\©Ñ‹$ü)¼y°ƒåå‘0‰ÍÀÅ4»yθN?[,‹€E`pH¯Knd#DÜÏ|vzç¿ÊÐ鈤OKéç‰#Àî|}×°Ÿ“-‡aX¼„•À_hÖ¬;\yy÷r8…>rX ®ÏÂä€>_í À—ü†âêí½Ám;ùÊéƒ0³bИ:y aÞ5°ØÅ‡øãÏ¡ò;ìl?n<GíU­ ì×#è"„_½Ê{øñ¿>þøj\€¹7×ça[ljš >‹öð’XÊÿÑܹ_éãvO%î…ýA …C(¦âSAÐ59.?Ä-g WGªí¿éSÒÇ8ïÍB]f¦¹ýZ\÷zÀ嘮ùuo !ŒC®WÊǨ·cÏ\³¢O_€»¦,ŽMf™,‹€E`P`ß@¢G³}›’߱ɢ†‡É×”AiK&XÃKÁFø°2¹ ÖwÉÙ'}<(8,ÃI†¥‚ÔÏ v™Á¡ã=$1¼ÝM»·Éöé,³ÛõvöŽU݃ T'c_Xx ò1Ø!ÏhU}Èj$>$í¡åÖ<¿¯uxól!àvŒA ðÃÓ×€´rŠ·ø°a<œÂ**f§=™žˆÑÅjÞÙWÙ‡HrzQ{ A›8ùÎëê4· é‹ÑÖ¼¨¼…V70þ4â{aM奜WùL–Ó"`°X†œ‹)œ,‘ÏKÐÒ@„3o(\v©s€†c1ú_„nÿ!êÐÑ~b¹w©é–{ß°@àÉßc¹®3/IDATä4\ÒŽ%^bi!ˆ/úc8%Ýáºt"Y™Këà+ê¼ 5Ir"ð“€ÆBR ž4>çÃê]Ðþ çîÊ~lì¿á8lÂSUÊ*hØ„O5¹©Ÿ¸2EÇqD&µº^>‚½¼XN®ü+rÆ@ Ê+h'âíí‹ü!bAp¨W—TÚO!7@PvŽ!û)c•HâêuòPd‚BÄ*Zì;ìs¥I DO‹òBèŒüfsÇ`†v¾ÂS1vW WÁ 6|Ç7à;¾WöýÆÚšEÀ"`°ŒD¥gÑ8{bd&ߟßÄeN€yíÒIiàfæQ$2¤”oD˜VaüidhŠfõod-ïR'9€“–_/–CÏâãç¸ve(6´:W¼ˆìŽËdËô÷ÛX:QE ñ½a²sBË®›?Hn½ë}fœ \¸§ÓÌNs Ö:¤âçÁÞô¤ü<Å*Ò[<« sgìö`×…×½¡Ø4½ù³ÏŠ÷*Ü”§„øª\ö{ =îÓe§w癄\‡&MOóæ}$ëu ÿ(Þ‹9ZVé"%L¨´±1ª¯]Ëßç§ ‘¸ôñ´(f„¹›;[ðÿA8ö¡ï¸1ÉHþ“A[ì –½^±P‰A¶X,‹À ‚€ÿN¼WËxýá%Ö_‹œÅx.…’Ž@Y óV8%Ö ¼Éø&ÞÔ¯»’Þ@ôÅ×ivÛÛr˜øsTx™ Û°@à0? .@º|_ü”^ô°l?“£ز¬h¬Yšˆ[p8øTP8¸t¶ƒ]èÉÈÇS©@aMC*q#(»¨¨rèWÏa«ñÞÛ]F°aÍoøHöÂ\(dXXÀÞƒ¦R$–`m²Ú‹/ñn\€uÇdâøŒ˜veà_]4O¶œùyv¼ýÆ%Ó°@fÖñïÉúó¡”[­ÔùBèøxþåºòŸ´H>#çM/cêRj¶¼ÿSk7¦ˆóMü¸°û-&+ñCÔL橊Cãq‚¿X„Õªºð!©&pOcî¹øÃd‘«ŒB ̬âÿA²º»Á× Ó+ÌçØLâ‘°‡·¨OqèW‚ i ÈPT(¯«ˆC¸Ó˾FØ¥(Q¢ áÐnÚ=ñ»ú[;ÿ- ;Àï¤Ì$Å»ö©Äîðƒø@éãÀ$®WhÜàP„Ô[Fk’ÕÜÙ†¹{ÑRÂ…\7ËQúÃßy:¬4“íµX,‹ÀðE93ξg?üÎ|Ø XI8¢?È„Rê‡HŒð”›‘OQwïÓrÎ)s‚ý¶Þ|çpD6Jì a »£KE.Nö3‚[©1ñ_ìœó(.ÌÅ÷Ó¸‹êñƒt©ólO Èuúaqoÿws¤ü'GYâ~ð§‘ßã< jäàò/ˆ¦ôî1sâ#8²‹0Er[š‚Xl --€8Õlj¥7”43ãž nM#㛡±€ò00~ ç><[âoc}RP¤<‚𽇯n…È&P‰ ´°äÌÏBÎä.%g>åà¶a°X,‹€E@EÖHX²Ó"’—ƒè‡c ü4léž‚iÈÓrÖôŽaz9Cï´…ˆ@³p:®§a!œS=–?OIwТôÔÕ¥gÅö͉Tß žQÒyÈH}ªqröï…Ey8—3»r/<PP’¢šÌ•šÚîðÚ¹ÿ’ñß *Öe¹fþ3Ó§–y‡¶©«%¨ªº-ߟ«Hzs~;×4~¦3p~Ç)}¼ð—½uÔ<·K¡'{Ap»U¡õ©ážB3;ÎïÓü†ó½Ok™-‹€EÀ"`Ê oDœå¬hN;Ëìfbr9<ˆEõ¶ý:&/Úeû–äg˜.LјÀÂ[ìU  ÆæD²=¡ñ™’ñí!D<$yuáÚÔ¶ŸFê붱ῂ$¿.·ƒ‰JOÕ½ AÁ”+7È•¿ sy®©|&ë6Ę—ð6){˜f¶í¨ðæ©Zäq®¾cs¤²Ÿ’>‡³Úo¨©ó†²¼–Á"`°X,‹ÀEÀà™:DÏÔpZVø0€ÂšŠ†ÄF0—ú)ˆC•z?j¬Ý‘jj&¸‹“’‰›Âï¢Kz »éÿÀà‡!=˜}jmJ"S«p1e §§J ÙÂ9,VŠ!$®shޤ~f6Éçíð¢UÅ)ÎìÁâÒg—+©ºq û(lœ´©Mp¥0d©ºO1¶‘ŠÉR^ §ï5öTâ~œ£ê(žcâ0zDÏ£Ÿ³£o€9ã¹.åÓ•gBcr¶B+Ö˜6)N‘QÛÁù‰–ÄœØ(Ìû ¢o4“›Á±º^*+ ›ÛÒ-‹€EÀ"`° 1à9l˰F YÛ@"Sçû%¯ƒwë‰àÐ,n‚vä7ûº"DÍÖÆ°pŠ_¨Ñ¥l&JŸf†ŸýdA‡ÁÉÎDâ0mENm·<=,|p‡UùþR!áß“uzÏñ „Ê«$£·Èwvdëç¦Q>¿ìÙ›Võ"hº†Ä7™ÚÞãJ`Ž?T,|ð Yóp]ȶîÿ1Å‹€EÀ"`°X,#u'zÄ^æ½°ÆÄ¶äDÞÀš¼´ð¾|öq¨†SwcÝšá.j¨&ELÕè$Ï ¦ðdZBÇcç~^ä×%Âè"O—ëù1ø=ùÿ…øZ¾^º¢GÎ"9ß›·ô8Û”pahM UŸ/Þ ó>PnZ¥Ÿ¯MföƒßÇÑ Ý6,‹€EÀ"`°XòX$År®¤'ÀÇà)j¨ýaEg2-sº4~?Ú‡]…¯L”ŒELÂû~ZuÕ•”n!¶QÚÜðü>?¨Ñƒ„ööE8ï⇊G S¾Q rHÜP‘ô]ªŸ¨šG…X²M5”®OüÐ̪Qß×(œœ°nRJ£33Œ7w k¹»;xÍÈ“#rÂCBdªZÝúhä@±Ÿ‹€EÀ"`°XÌX,3.ËŽê…ºMü;ñ‡xD¶„ ò&ý ÉÞøÔ}5|_Š¡©0e¾û-Êœ‡¸s½ù8„m5…:œ«9£g ±M5”Ó TgZ¡ž«!A_ógˆÀT¦¸î“‰@*Ž“(PÄã¨o^h£ÆÑ£"cØät…l$k6Eæô€ “í”âî [ѺºÂÌ‘(›a}lç rw¡ï.â½ÑQ›ã{µ¸aòöBwBãñïŠ0b‰‹€EÀ"`°XV,ÔéŠu탵œ‡"v¶ÔQ&O‡Äs·ƒåG ›`çf䉨¯™úSJ7⇡mÎù:šÚÔLž¬™ ºÑšHOpä%µq´ y;þ^ u?‹ˆ:¨HË•³ÉÄ)EÁ)ÞMߌEÿ˜AÍÊMâdø¦¼ ߉û´ÙëkRެѥ„Ö¥W§kŒ ôô|@UUzODlby!föüvðݦO`)‹€EÀ"`°X,}AÀš`õ­R¼©ºãvv>Š?Ã"YŠÕëãÈGãbÏ¢® Á޳n°™¯ : _ÏU¤|‹÷órMísfvòå-3’µm€îkNT'TÆ7&F«Ãò­Âœ-]pfw¯Î÷ä*¬ R‰ëˆµl’•J¬…PÂGS4òØs¬ùO)OÕ’üå;C•¶y8.e}Pä 0»  dKO—>BSÙ¦EÀ"`°X,‹@ÿ°þcçä…s2~94‡g5‡Ã1üD…º2™ÓŒæ9©)PlûTÔ•<¼€“t¸4LªEÈÖ ÃdO»á› é]yŠ{lŽ~‘oæ*Žç÷á/Ä™M•FGÙ7Åàã‘›ŸRlVžx½®TMœ>ï>‘&V³³û:Ñhzáy÷ƒ¥Ø~äd­Ë¼à] —ß0‹jé4'4°Ã”- !ª.ošfâ±4‹€EÀ"`°X,¥Ž€Õ€ âšš±>îñ…ÀD,”ø| Pý*;™‹èsh”>˜[ ]‘z¢ðÿ™Â­ÝÔõ*âŸht! söô²†^ƒë,.°za~ÿÓJù!|Y7PØÁ;Ù ”™jåUI7BÛós\‹[ù pæübú4È2[,‹€EÀ"`° &Å”ƒy”¡6×´š¯Ãá{$\b2ÖH.çÎ…I΋ÐX¼„…mOÙSfMÄØ*„iºct~pHƒ‘ŠDŽóWŒ€’-¬µt6Zp†»äÈþ§QYIåɶ¤“6ÒƒD>Vc‚M‘V ’q½«äÛ³ç~ 'øWpNjÄ)öKIÆ/V0[Â<á’Š³ù—:†y$]fõÚ­]MÈ*þMrƲ9Ö®Fž0ÑËE"N„ŸËá.Û¶X,‹€EÀ"`¬8ÈÔ «Plü¯ñµF±h­ÿõ@¨s3™ø —Ñ‚%—³C_fcÍz©zÃÔPÚaBtA䙼¹‚óFÜEÿièQA«PrrâçàÒ|££·#Ëûø^´Oˆr¥yNSׄq$„¯Q}Ý4«ý) q¼»N‘´„.DH$ÿké€ÙW‘âGÖÚ#óú!¸þmÀÙ¨rËYÐ=M®{/µvÞ×g­‡:™mY,‹€EÀ"`°,g„i3{9ŸÓà>™Ø Ü+0±ž3£øÑfRoú§4«ë…%•@b=¼P5R.„v`¬ÂË&B½ãh¶,äâðœÕiøÚ)íîL­¯yckw„û…¨%MÛRkÛy¢'H›‡c…‰‡!È`Ž…Ã÷¦â0Á‚ãy°Hùgjj?"H‚@t%®ó`…løáœGA  ö}A¹µ´¿®’Ë´8l0khFI‡dçœ>E+3µí¶X,‹€EÀ"`Xþ„±ËÿŒû çCø¸ÓöEøà³h¤XäEbmG®° ˆ5áÓàäÙXˆŸc˲‰«ár›Ú.©×‰ÔÛ½I^øàÝ=oæÇ+NÈŒköŸâþdñêRî`ÌldLÕþD>¸_¸Ù¼z³'àZ‹/jUáCÊ9䦷ï³ðÁ‡â°Áíí³©©£Õ E°·d‹€EÀ"`°X,Ñ-€$ã¿Áêú$ã÷ÃÎÑ––š½º‰ š¹¯-¼ûyð#ŸF¶ø&T{ÑÌö3±àÖ…f Lkn¿ˆfÍëàj¾´}Ò†¹?Ë·sÁ¾!¡â’)Ÿ4t"=©Z˜ÜÐÆÄ4˜2±æE-,,4u=¦Ñ’²Z‘Ÿt‡FyÿžÀs —·R7}š»^Öæ´‹€EÀ"`°X,‘+€p.á\ ÃrÂãîˆÅõZö†Có¾^Ü}°€æ¤}j"I+Uãg~ ³¢Ì±ÒžÅ~L¨¶Àøx}é9oa|FŒ–æ¢qòí@#[º²°÷Ï8‡¹¯ MiLôøilŸ7bMEcÎY¼Zƒ6F"º‡¨5(š:N‡ÿÅàá·356ÖIâÌíS:½&0ý4ó5>K°X,‹€EÀ"`°‘ë’ª»¦Jû„¾å^h*6/º;ßPû#D©z0¿xÏ –ô9´S°Èö£c¥j7¡ÞÞvò³c縉óÞÃXÕäJÊ!àìT`*QK%þ„ñ¿V8XËÒÜMLH¸IÕý BÈmÚ¹æKÙ…>!vC>9‚¶‚†¾”ššÉ4FÖP&:ÎðóéËžš7ï˾Lay-‹€EÀ"`°XV\Ff¬©ÈÈ‹#¢TÈ?ZÊŠ |´t> çë;QÛC¹%M¤úšÍ@ãÈODM¯xŸúo¤ &*}œO‘Ѐ„Ý*¦úÚ5Á æÒ`ÍKªŽéç§¢tü…0È1K˜q5wì›kVüéçÒе/O`-‹€EÀ"`°XVdF¦ V´f,äu_WwªÎÝnš£eé%â|_'†)ÂdB5 ù.&†9mG¼k¤ ±‘ÞÔö;øhüÚÝtÌ8€‰òKrЏ©mŒ3›^k;,‹€EÀ"`°X,C`d ¢X~ÑZ®Ö9/€§Wã“"›;Dë)Xƒa,Õf"ÌÛóÕÿÂ$¯íІF:›:nBD­5!TüÞèÂ<ìË!åëø;hñTjn3 YÌk‹EÀ"`°X,‹€E`)"02M°„¨2bæ¸å¯WÊn˜6!ÏÅÕ9äµmheÒï3t8,€n"H8’ ÚXéâ\ BÄ Lè¾% #éžs)Su¦Í¥ƶ-‹€EÀ"`°XF#wWÝ•7é_ˆB¸‰Õô>Pâ»ÂêhCßcfè:I¸&íK5$ÖÕ™ Înù€±$‹€EÀ"`°X,‘€ÀÈMD8iÒx_Õ Íêú%g#{÷EÔ#nÅbÿKJN†oHd?Oø›:q"ÀÞžõiö\Ö¨”/ÉÄOqÌkàαÞÂ'2¤»oSËŽBÕ]~Ëa°X,‹€EÀ"`¹Œ\„¿³T‚3ßÛoÿ 6½"w$¼¡â[€ö±Å"`°X,‹€EÀ"`й&X|©Míàÿ£ú%HZ‚P¶¿ê“ðÁǴ£`‹EÀ"`°X,‹€EÀˆÀÈÖ€ä.9•ØÕ  QÃÛæúß9;2™ÃÉiîµm‹€EÀ"`°X,‹€E Ÿ¬ƒ3UŒ¦ªøðýØ‚Ȧ ŒR0“’Ãç>A½žfvþGé³ ‹€EÀ"`°X,‹€E`PXq \BŒ¢dm Ige„½ýŠzNêêZd±u‹€EÀ"`°X,‹€E`ðX1ÁÇÑÎh°X,‹€EÀ"`°T€ÀÈvB¯Ëb°X,‹€EÀ"`°,;¬²ì°¶G²X,‹€EÀ"`°¬ðXd…¿,‹€EÀ"`°X,e‡€@–ÖöH‹€EÀ"`°X,+€¬ð·€À"`°X,‹€EÀ"°ì°ȲÃÚÉ"`°X,‹€EÀ"°Â#`þ°X,‹€EÀ"`°X–VYvXÛ#Y,‹€EÀ"`°XVxþKîœ>ÞØ®IEND®B`‚bitstring-bitstring-3.1.5/doc/bitstring_logo_small.png000066400000000000000000000363711271665413600232450ustar00rootroot00000000000000‰PNG  IHDRÈ?¥Ï‡?RiCCPICC ProfilexÕYuXT_·ÞçLÃPCw§H·tIH‡ RC ÝJ)! " ‚ˆ !  &¢ ¨`‚pÆïûîóÝûßýçîç9{ÞYkíµ÷œµÏÚg½Û²[p°?L@@`x¨•¡ïAG^Ü € E.57RX°¶……)ø_Û÷ Äic’»¾þW³ÿYAïáF²@Ôîa¤_Ö!‡†€ZGäÃQáÁF?@0c(²@¿ÜÅÞ¿ñÊ.vÿ…1è_66Vº`X  vs õ€ ˆÈy#IÞˆ‚X†@r ăÖ ù¸yÀV„Øì ÚÅ}uÿ7?Þÿ†ÝÜÜÿñéææýþý[‘ÈÄzä°`·˜__þ/»ÿä~ýj HOèo¶fäZðpÓ3A>9‘k;ØÿẄÝ3ÐÖ‘íâ=îfæ°†W¨‚‘±Ep¸Î.FîänaóGžë£k†`jDžï¦ÿ×O…¯›ñnÌhysh„•-‚Üi­`dGAob}lìÿØ|õðÔû#‡a/²Ño˜n´;#s~¿ “Ý5 sÁŠÀøOB‘>HS  ôþô’À ¸!šHDüÀ[ #‚1Aæýc§ûƒ_㼑qÿÝ#/ !¶ÿÌù{6^dο>ÉÀÁånÈ»ºÝÕ…¹“ÿ5ç_‹]¿V#]/½(½õwMha´,Z­ƒVGk U/šÍ$Ñòhe´6Z­†èT€xƒxöþ»Æ]ÿÍ^‘EA1ªv>ˆv÷·»ÿÕ»_Öä¾ÿÇ yh¹eùï ÷ŒFžtƒ‚cBÉÞ>á¼Úȓ빇×(´w¯¬´ŒÌ®úÿMÛÍY¿ûÅêW.‚˜ÿKЀ2ÙÎÿ’¹Ÿ ]yöëÿ%.@rƒ/‚¤ˆÐÈßþл@…äBFÀ¸Eî³,Pj@ èc`l€pFö²CAˆGA:ȧÀP ÊA¨  ´€pÜ`Œƒ`̃%°¾ƒM‚p"Bl$I@²2¤éC¦ä¹BÞP ÅC)P”Cç¡:è*ÔÝB#Ð3hZ„>C?`L 3Â\°0,+ÃÚ° l†½á8N…sà"¸¾ ß„ïÀð8< /ÁßP…G1£øP’(e”.ÊåˆòB…¢Q™¨T%ê ªu5†šF-£6ÐX4Í‹–Döé~´-š„A'¢³ÑÅèZôMtz =ƒ^AocNŒFc„9ˆñÆDaÒ1˜Ì Ì]Ì8fó‹Å2cE°JØýX¬/6›=‡mÄvcG°sØo8Ž 'SÇ™ãÜpá¸tÜYÜeÜmÜ(n·N§à¡¥0 p¤¤H¦( ¸DÑE1JñŽb“’ŽRˆR•Ҝ҃2†ò$e5e;åcÊyÊM*z**u**_ª£TETW¨îR½¤ú‚Çãùñ*xK<_„oÂ?ÀÏà7¨¨Å©u©¨#¨s¨/RwS?£þB „ ZGB8!‡PGè%LÖiˆ4{iŒh€>›þýCúƒ0ƒ>ƒC*CC/ÃE êIÄb5ñ.qžË(ÂhÄèË˜ÅØÀ8ĸÂÄÀ$ÏdÇÍTÂÔÉ4ÍŒbf6bög>ÉÜÌ<Áüƒ…‹E›Å“%ƒå Ë(Ë+««'k&k#ë8ë6^6}6?¶\¶¶WìhvqvKö(ö2ö»ìËŒj$ŽLŽfŽçœ0§8§ggç ç7.n.C®`®³\½\ËÜÌÜZܾÜùÜ]Ü‹Ïmž÷¼L¼Ú¼þ¼E¼}¼+|œ|ûù"øÎó ñmò‹ðÛò'ó7ò¿ PðÈèXä< /X/ø\ˆRHYÈG¨Pè¾Ðš°ˆ°½ð1ááV#‘X‘z‘—¢QMÑÑJÑ'bX1e1?±sbÃâ°¸‚¸x‰øc XBQ‚,qNbdfÊžÀ=•{&%©%µ%#%ë%gö2ï5Ý›¼·eïG)A)G©\©ûRÛÒ ÒþÒÕÒ/ddŒe’eÚe>ËŠË’dKdŸÈä ä’äZåVå%ä=åËäŸ*(SèQø©¨¤ªxEqQIPÉU©TiR™QÙB9[ù FEG%I¥CeCUQ5\µYõ“š¤šŸÚ%µ…}"û<÷Uï›SçWwS?¯>­Á«áªQ¡1­É§é¦Y©9«% å¡U£õN[LÛWû²öGiP:kºªº ºÝz(=C½L½!}}[ýbý)~oƒzƒCÃ8Ãîý˜ý&ûs÷Oq‘ŒêŒVŒ•ŒŒûL¨M¬MŠMfMÅMCMÛÀŒœ>ðÒLÈ,ЬŘ™Ÿ6e!bbqËkiaYbùÖJÆ*Þê¾5ÑÚÅú’õw›“6/lEm#l{ìhíœìêìÖìõìóì§JL88àÀî@vhuÄ9Ú9Ö8~;¤èÌ¡y'§t§‰Ã"‡£?tfwöwît¡uqs¹æŠqµw½äºåfîVéöÍÝȽÔ}…¤K*$-yhyä{,zª{æy¾óR÷ÊóZðV÷>í½è£éSà³LÖ%“W}÷û–û®ù™û]ôÛñ·÷o  p h dô ì ⊠–NžQ 9²jZ…k gD^#D#Ò"f"5"K"ף좮EÓGFƈÇdļ‹5ˆ½‡Ž#ÅõÄóÅŸIÐN8Ÿ%º'ö$ $¥&Í1Åã%:%¥œ¥¥kç<Ζi•])ç*Ï*ÿQA®xzÞðüÍJáÊ‚*lUdÕÛj»êû”/ÔÕ°×dÕü¼xqºÖª¶¯N©®î祓õp}Dýâe§Ëà z ­W$¯œodnÌjMMﯺ^h6i|íÊu¡ë¥7ˆ72oB7cn®´ø´L·:´Ž´·õ´«µß¸µ÷ÖžޒN¦Î“]T]©];·coëî^¾ã}g®Ç¥çEïÁÞ'}–}CwMî>¸gp¯÷¾öýÛÔtVzÜ:¬2Ü>²o¤kTsôÎ˜ÞØ½'FOÆÍÆG&l'žN:MN?õxºðÌÿÙêóÈç›/޼ļÌ|E÷ª`ŠsªòµØëÆiÅéν™ÁYëÙs¤¹¥7ao¶æSßÞ¼ãyW· »Ð±h°8üþÐûù¥à¥ÍåôôJ?Š~¼þIëÓàÊÁ•ùÕÐÕÏÙ_ؾ\ü*ÿµç›Å·©ïß7×2×ÙÖk7”7îÿ°ÿñn3j ·UôSìgû¶ÉöË€`·P·_ï(¤‡½¼ø|yOp@j‡a¨h~׿,rBllí…–às(g´ú=¦[„ ¦°¢Ô§RÄKQï%HÐ(ӚйÒG0œ!¶1Î0S³h³†²5°/qŠqùr7ñ¬óéñŸ˜’>&òJLAü”IJ¤þÞ*©m'Ùvyv…hÅqe9•Õå}†ê?´¬´/èlè™è,ì—7Š3î2…h™Åš7YÌYÑ[«ÛxئÙUØ_;xÛ¡×±ûP›SãáçR—S®Én!îÎ$S%O~/‚ך÷ŒO?¹Ù·Ø/ÙŸ`¨Ä´<RšfÎþ)¢+2'Ê)Z"úGLlq9^9›0–XžäDç¨`2c m*]}:Ý1ÂqÊ tÆNæFÖç쥳9ÏOŽžÈíÉk;}%¿êÌÙ‚œÂ”¢¸³1ÅÉ%E¥7Î —Í–/W¬œ_©\©úTýñÂ‡š¥‹ µoêf.ÍÕ¯6Ð_ÑmLlj¹úºyý:îñ&O‹x«B›f»Ñ-ë÷Î订ÛwºzнÄ>ö»¼÷Äï+=Ðy¨Ó/Úÿi smðü#ÍGËC C‡UF ‘G£ec!OôÇÙÆ?NôN>õy¦ølçy÷‹Ø—r/—_5L…½Þ7)õš“™Û|so>ÿ­ç;Õ†…÷‹]ï³—ì—ù–?\ýûIg¿2¾Úð¹ìËõ¯kß½ÖžohýÈßœþ)·¿³ó+þPì€b@=@§cL°LØW¸kÙ”þT¶x=j9‚­(½ƒÑŽ1)•¹Š¥u‰žCƒ“ÌUÌ=ȳçÌ.pEð½°„ˆh­Ø’„äžPÉ{7¤5eŽÊÞ—Ç+˜*æ(¨U-Ôröõk`55µ"µku^èáõU Ü 3ö× /šÂXÌDÌå,T-U­ä¬mhl¾Ù>·ë¶¯>˜éèh}HɉÃiçð¬sŸKkº›‡»‰“´æ1âYï•æíì£D¦#/øÞö+ô Ðdüt;8'Ä1”?t1¬)<*B5âgdWTR´V :æAì‰8‹xbüxBaâ!$³®é=Zžœ’˜ê˜f˜.Œï8õñµŒÙÌÁ¬›Ù'Žç„ž<|Ê4W3OáôÞ|Ñ3üœ…,Eôg©ŠÑÅ[%_K—ÎM—M–T Ÿ¯|]µT½^ƒºHSËV'xIº~ßeƒó+žM‘W³›k¯õ]Ÿº±ÚµÒµñµËÝ2è8ÔÜ•~»¤»îNCOu奄ð»6÷dïÓß_}ðÉMåiƒ~,‡”ó ã‡×GæF5?)O˜ Mš<•Æõó|ùÅ“—·^UMx?<ã70þ&a>ýmî»’… ‹MïÛ—z—}xñq}Eeµú‹Î7ü÷¯ë ?F·*·þÄŸ:‹Â¨4z“ŒÕÀ®ã:)ŽQ:PÉáið Ô ×hÊhOÐ¥ÐÇ2Dcc˜˜ÓYN²žckdïãxÊù‘›À#È«ÃçÊŸ"P%xWhQ„FTFÌVdÞÉÊÏö:¡”C•3}²õT^nhžõi…|¶üí3o ú ‹NŸ,v(Q-eGNËñ²å%'ΧW¦V¥U»p¬&íbBm@ÝÁKúõj—ÕL®¸5Æ7]½ÞüèÚüõÍ›ô-­ûÚ,Û½o%vœé¼ÔÕqû~wÿ‡=w{ïôuÞm½wí~ËËûÏä f?JJyœ6œ;R;úpluœkÂh2òi峡ç/_YO|==Cžc}óíf1q¹wõôºànüsK»gV€„÷°;€%¢©µ@(¡8Ú° `£`¿4Ó/¨TôŸóh@‰p(lH½)ÔfãÂ%$‚n”‚žÂ’â4Å8%¥ e åG*eªªa<7>ßMÍHíK}‡ÀAˆ"ŒÓ(Òœ¥Ù¡õ¦¥Ó¦»F/N_à ÂÐHT#2º0~e:Á,Î<ÀÌÊÂÚËÂÎÏ>Áq‚s?–ëw&%/'ï¾>þ*,ÁX¡aQg1WqO‰€=1’{ˤڥ'eÞË~”{#ÿD¡Wñ¦ÒåK*uª—Ôšöµª÷iŒiÎkmèÐêŠéè{d^ÝÿÂg"kj Ô,Åü¤E™e‹Õ J[ »(ä¼ûì((ÚéŽ3ÁÅɵÎm™Äå¡éiïà}ܧ™üÁOÉ?#àubð©ÈùÖÉÝËç_›°“äsd&Ù-åušCúøq‡Œ­¬…œœÜsùìÆEÁÅE¥­eC3•ß/Ð\«3©nhoân®¼!ÑRÖ¶ÓáÔuëooæÝ>ýcägÌ=901ôÌõÅÆTáŒòÜë·© ›KüËÛ«WWË¿°}­ü®±ön£hSgkj;ôWþ€Îˆ€ ˆ%„ï±d„UÈA˜Ÿ *„#Ð\ D¨ ꂦ‘Ø ÃÆp0\wÁoQt(U”'*uõ͉>€TèWÑo0l3L¦©¾¥±þHÜßâ„p^¸ZÜ…EE'%–Ò‚òå{*Uª,ª×xy|þ µ&õ9êŸWÂ]IšBZ m$í‰nšÞþ=C ‘–x‰Ñq)‹Y†ù9K:«<ë[¶v:ŽQÎ".wn)À3ÎÛÀ—Áï-`,(#Ä!L!¼)òUô«Ø–a€¤Æ^W© é6™÷rœò YŠƒÊô*öªgÕÆÔ! aM-/íã: ºãú°¬¡×þsF“&̦v ÌÆ,h, ­’¬ÛmÖìí£v:bY8•þìbìZíö“d‰ä©÷Þr> ä?.ÿ€{A\Á‘!caòá…[Q.Ñ]±¬qñ÷’2¬'û¦¼J³Hï=®”ÑÅŸ]œÃr²Â!ݳ`â‚öA‡‘ØŸ‡î!o™ °*L‚OÀ­ð<ŠˆÒF˜›*Ôša#ЗÑóÌ!Lfa\ì±ÅØ)œÎw ·MaLQD±€0&'(ç˜çS­àÍñMÔDêêY‚¡“Fšæ-m)7]5Â[ô1¸a$ÞöL8¦[Ìá,Ò,+¬×ÙØ8X9–9û¸*¸“xH¼¦|*üâ|‚+)||ÕN)=ô8”¤vàÃÁ³ózrÊ*ÖÎÍ…½—j-~Í÷°A$ŠKîÔnN¹O…ısdrî~Þß[–Ì}ˆî¼Bµ]ºfW[F߇(K> ^ÉE¥üŠ%åuŽáëÁÖÏÁQf’rû(Û Ûo¬…°Åj_u9Ä—.'v¸Ø!D]#åE;ÜhõµAR¤…5¸¯(Ëå·íì*–tã@k`äR¥äžtw/YU“P£ª'þh©Ý—rvTÔÆîº}Æ^#¢Æœ$·¿‘©Ù»Uu"ãºD5O__9jö !k„egDšK‰OTûÌÖ ÜÎ’Þ!D|Ò¾Y HL“Rx>xe)Í,¡$’š?‡ýd¢:ÁÚÖK”¼Ã½DËFÅ2D`¬‚<{€¨©"Tl0 C„´W¨¦é€yIú}#NØ#ésbŽ©Lú$µlæ_<€\DŽžs€eYIYsã\,¶(`aUeYâ×N;c–öñþ8ÍP¡‚LÌÓåO¥àj[KÌŒzQµN¡Xa9|^µˆËñxËF¢âP¶šEÛ«oíH«ö;ƒ(uË+5ïCŒ×=Ü´„µ—sçE¦¤” –¸sSn[Â8K@j@ð¨SVdŒYvúiôûHíÑ¢Õƒ…”ƒ­51†g·‘>Û—çO$ øý,â˜ío>–ÉyG}¹‰LÖùÄ ¤:4 ܤmf¿ÅL÷·ïMžF_²S¥Âc™¸qOKF¾¥„*¤ýÜ%\ž $6‡I-¾B… plÙÖÐÕHŽ5 ]­¤üC!¤‘c«MÂ2ÈMÉñVrÞ…VÄ:Á€r¢HV›™ýY~ïÖúG ˜#X@§-‘ïO±ç…y»˜Y¼ŠcErô¥Ü‡šù=Åéûî êãrÔ÷÷WË~´©'øbÏ¥ünLŒn8 ‰uóÆt,c[kU¤t´Æ)θ1>bƒê̪Úf¾¡3=‘u×¶¢ñP¿dÅû5pÿ€çc’Ûᇙâß©F_½ 0Õ‡–Ë!GÍ*`ˆ}ˆˆWêÁG “ï3TÍ0KÆkn†‡eó b4É©D•–zy½^ÉVÆQÛ«aª5Ô¹&žéƒ!Þ‡XO0DzýµêÊõî³ÐwËò©@ðÊOƒó36Ê )íÛT§}{É·*QÅ2À âËf{`ÒO«'‘S ™ß{½°¬aVD‚“ælÆi¸Ûwâã”5âBÒsܼ0w=Á[±ŠïÉĘÓÀ¡¥;ÃN­Å_‡Xm öWÂöÒcÑÞ±N%b'TC8Ãn¤j±Üð#G2¨XY5Öi%„r +×Ã,eá‘ Éî Pƒ¯àdK|ž ý‹¤æÝÀL<3í$Á·šÈ2p®Õg¬qlÀÎ0ZÀëožö80úr‚žÑ¬äXAÕ2íu÷yïîË@1. ç‹–°ÕvJˆÚ%Iœ+»:ÄhÔÀXÑ õ“ÁmbÙOtÑ–ßãA»YDk2ž{»Å¥%õx…b­V[võ2Þïû”©èÜ* ïQåÙ>ƒhÕóÐG{%"ÖaÄxé("“×` &eïŽw¦AZŠA5†DÊs‰’ËBdh÷‚Ì\†LÍ?‡ò>æà=ÿQÙòV\ ¿Cò¬ìªlWù "µRó?£)Y&Â7ÛvU®‡ü;‹v.R¶}­j™ñte +¦s¬J´A@¸«©ºKeÔ5jÙt­‘tÔ²+×ÊÔܘ÷Oº€0Û2qîªeÖ'n^±;0õÒªy„Öïm6_Ã2­ä=iÛ¨«Væ=Ô÷Ub³½ÁÁTÈXd‰+iœ¼… ’Cô, òIJÕáän B£õ^1fŸ"AÅ¿ƒ;ñ¾]pZÈŸ•ÉÄr,”¥’8^ôCdSz­@Šjf­½X˜•Ì'ÂÇleÃhù€%4ÓÙ£”ÏêK̯KG]‰×K”A#§/1e‹Y¶¿¼mû»C.+=õ* ¦z©y(ÏyÁœ½¡+µayžÙ`ŸÂyò„™×cÜ®¨ôÁȼKç0Ôž5 lo;„9àÏfý"íRŠøàœ„ZêÏ‹$ýé°©Ì3ØÌÙ€Ê9NF«—Èäüˆ›³ RÂ]úÄîë†E-AŒ XîKÐ^,3H+c&»û÷–1PEgþîp°Øgˆ¥†\Q&ÓïA ñUïì§f:TÜÎTùà*–0€Ôî8*Ê‹|Œåb³§¶MpÉM£æîì÷5g¢LÝ”ò$ÿ 䫽ç½~Ó%Å8_º››ãü "e²ð.áR\ Üf õ%°M~#s? ¿—q¥Ìçaã¶°ý RdÃbX\œX§Òðþ”„) ø&WPx‰F‚Ò¾tkhÌï&f©h/F_Ÿ‚Ge‹ôÝšØ4ž°¯Ó›&×/AÒH(mÊÊöŠˆuq»¹õb™à%íâÓwÒ Ôp Ñkð²ýÕß;ÅuŽ \ƒaB@‚ F†)Õ%ŒV±ò]¦ávßÄÒÈ@¨ÏÆ ôž4Æ ¶Ð‰Ce4 ¦uÁ *VÀÜÒ«-)QaJ+ˆ]ùĤE¯>T4ƒx…¸[°Üî`ྠ¿LâÊ»@=¨l„gˆHqûƒ®Â‹ùA$9ïn9ì:Ÿ:Pğ̤ÿbf°ë3´v‡1ØêM\¥ÄõcÕ²ákØ#—áMó š‹f9˜µ˜ÿ”•¢I&æëmyêp î~aCypÖ-(ÑmFБxdú |;4:½=ß ì'3“¡âJúWýGÅËÙyg€ »ôt/ŸËU¶_‚vD¡(ƒˆôfƒð%E¡øJž*«âo¢šªpÛ–¥ˆËlxYžnGÂuzesÛß½t‰½™£ï:•îH: pJ¼U “Ân£$æÞïl+äæé¦|¡6ˆíwÃòBûÆ l·õ7M4aƒÞÒï ½`ág”þâ R°GLUúª›P>{‡R!$ˆj¿lDÚhÖÁ,šázôg¶­Î±3é£ùÞl¢Q{Û™Ì\ÇADW0kÿÑ,§ãÐP˜åwÚ-|LçÖ-ŒM†2ÉŽÎPwÊ*ÕêáTªvk|º«¿NÔ«ÓvóÔ½l[ì‰s5ýÌד«>žh%Æô`(Úz¡Ð 0ôn^¢7‘ˆŸ²åûÆ A#£)l³°ÑüDdöVLúÄ#@S]Ù1=‚2Õ+û—ý)Fu:ê“ þÙ€„¨Ÿ'Ùàf±]øT¶Z,pÓ]Ü#ÿ‡¨û£lÜÄõ÷.Äà ‡õÿ¾zÏ›_쎞¢Õ¬ô3pH1Žèš€qÚM–JŽH‘¿hÔCªeªfÞ+yW«Ñ“NÅ—rõ w‹¡žÅGA7³½¡¨´áã©À —I·l¯î™öì@ _Ÿ‚†15ENê  b•~u2š Ñ…j{m©JLZ}8νRÕ¨émQ¨z\ %kÌ6ãè1µ—€KÏ-ÄK3ˆÝ{‰"ÑëìR=Œ„ט R©¹ÊÌ+gÊú«/Ÿo|én¼Í ù`GwÏ'¶^LJ?¥6uL€‚Þw1k†2ê[ÀtŸ9÷æ!}6y{”d£hÑÛ&z,Õ{/“h@–Î –´ü8 ºÈö-ûY®zÚì©ŒÈ Ít¨¸å7Ò!|Ÿî» >&wY,Meš§_ŽJv«ùœ ‚gË×ûÁÐq[ùý~¯ HWi¾ YxæIÁ@þVIª~ðK&7šÈ0¼Çši3®Ç…½ž4Ô eõ‹Ÿc”×Äú&A¤¹Iиǔ’þ÷ªÒ¥ζê«Gv­¦Á?7a™€¿‰ûýͼãJN›Ì2]2ˆjþÁ ^e^5Qrïbë!&²bq{³˜M¬tŸ1ÃWðµâÉnºøÝÏ ¹ÓNŠƒsmécf¤mÊ NõJµšA7»0Ô£æSeÉKõz’™:nE}nXT¼ W&4*°oë(~ân]òYi•c"H¡L—LÆaOA£¾‰œ ççËÃ~‘v8Kãç»Õ…n=Žê©.ù%êõÜ'EØ)ë[uëpïú#-:ž©¿õ”íc$_h鲆B0iíkfòÝæ{fº noü…Ù?=iȨõ4ûànr_ålßÄ¥¿×W!3tÑèâFªô¨­âB¾¶žù“q#&×õêt JýÍ_‰?Å^ʳ¨ËƒA D’,dÝîÛ~È.R*À "N‚htÙÏ"óˆ9 dqJÛé‡óXœØ¤@ºH’ïÒÝ äh¹Û?§»Ï‚÷Mâ=ˆÏ$šƒœÓE‚p[)Í'¹ L³\tHK[tfpÓÅîÚIAÏ7ŸÁ$zïbNsù“LÖläêV\›XŒ\-5"Qµ ïŃ ¡WÞ³ÞD‚Äbé6DÐÚÄ™g.%<¢ QÜñK¡ÎÎnñè…hFüD^¸·å†vôg}á>ÆîY™˜s¤‰¼ .½osÜGáDlé\è–Òw1ÙL‡Ž·mfkºòŒF|3åðîÊó¶ûÜ‘^ÕáŽÊmx4Ërz…ø×Öºëõf©3†ä…xº7³×/TûŒî%Àm|/.L=ûm¶‰¾ëÏEGÑï$ø;ýW]¨s2Ð/©o$¸ŽÜ›l¬›ŽTs£Ù»ì–°ý°FJåw€fÒªýJŸÊc@zQBϨ´ý&ÆÕ^&ÆîËŠ<ÃDÓÈ‚õ\&³ÐÙ0Œÿ3Í7ò¾úŠ‹í\ m€Â…ïPÑ8'K‰}ôLÑ“›ÖW! ½>žV¢Y<À¶µ¿Û³Mt–˜·ÞöÉvl žÿÁ„é*Î#0<{ºÏY®¼†\ÜÝl.¬ywýv­¯•é"ÁÇÕÛçÇC¼ebìÜ}_Ïñ‚^Vë/1qt‡Inç¥-¤}3±¦À¾—([|M!"PeÔC¼£Nº·sS \IIv¼€¦À‰ŠzW0OÙ|k.&<•W‘Õgµlv 'Ž˜ šÉØC¸ˆ3öå8¦[y/_7«d\롇iVDNx…‘Î1‘´ó)>G¿ú.­ð ¢+¡²…ÜÂÖ3™ÊÚ!A•IƒöüþeˆÍ?óKg8ñÂø,øSÜLÛ™-·ÊhÅTšë¸<¹÷g@^↹vgç½¢ýzC¦S¿sFRUÅaG>ã@oqÔ9°!9vfo·óHD©_ªÎ „™ñ̶æêd›ÊIçªä{óuGÓ°ºž]°ÛĈ¯Ù&Ú.…àf†Õºù•V,~¥JÎÓ'9~ÆV2cÕhÛ²§s›§ã:°ô®ÿË¡l¾ù ±d#~Ǧ¿d>+5ž3hÿL9} L~;pÐÛrhÞŠÜÕ»–F6®±EÕúJ‹|já#Ö°HUëÔÅÀ.ÖëKª2ö5ì:}.Ö!L”£{ÄÑ]oÂô<5n‘‹L­UàK&‚0q}8µM¹°Ôòž—ÖD8$4ƒèz Ø›#©¹ƒø‚ôr-ùܺõÛ1°|¹c…'Ê÷\«Šš!d31ŽÓa§AÚ~LµÍТº¶ÂðaRRܹP9(´‰@ä¹K8Ë‘ê=x¯ u- ÌM"n£mƒ…þ©húèMÑPû+ðÝ.RC÷¦Î}Y8V4¯x†Ã·þ ¦êG{Ÿ Íä#Dí ”?žö¶?Æ‘:5ñ7Á½™ô `þÆ>^ôÝÞ¿qòí®Ô=K,mÿ ÏXí:FDcãEºóm±lÕNÞvøÑ¯ä‚<{à˜ÉNúùé¹›F±~°â~ßéXY7§ÎMïúÃ{fæÃžN¯a°qÏS­Ó ÄX°¼—ŽèÞÕ]Ø3XÕ?V¥·xR̃ٞ”U`”We}í—yÙ‹D}]#ׯ˜Íw‰]vÅùö:Ds ³¯ÍLû Lq1×MÈh‡„gÕç¤ÅÆãQgP$+Ï‚ìæ“ÖDÿ)õì*–¶]1]AüòÌ!X)׿¿H«åÙöÈ}ÀÍ Á+NlúäS±r%ç#[Ø7©wÈß,¢Ñ“‘C!Þã¸þ,äFÍ ØX‘ãÈ×êÆ×¸Eçæ6–V¯ãc¢e«–цÛÉÐ^ÁODÛš6Ô·ˆ¯¢«D{ûj‘Y¿'éßrqv1m²œ­FŠÆ6­^HþMH¢ZÆî|‹½ÃÍ`Þë¤çð,FŒØM$Fh<[=húäk×ÿ¢eC\äh6/àýzÍM»÷ph¬ùEtv¬[-E˜müAŽžwœLVßH‰=Ü'Ža/ÅTŒà;ܼ0wÕ4«¸ÓÂÀnU˜†A…Ýïtú‹N®^KWÜ+† ©Aåø%Dr¼Hÿ23k«ˆÇ Ñ]Ìóô÷>!ªo‘ jŒð馽}½¾b”g";ím!‚Õ´u8ªÒ‡ÌÈDß¿^«ÏÑÖ¾ÆéKC> ~7'îü0û*¥gälÐßNK5P´.ÿpÞB¿Az`ðe]F«?^XEl̲ŠöŸ ±ÎEªLîUðŸ"Z>ý„ò'óògqÿ«è´¿-–ým-ùSÁ;G4Ô]àôÉæ”Kmóè a^%›xöG·U÷MdqÖéÿMÑÌãÚøËúm{—õ- ƨ cG½m—P×שëQ˜âN±®Gí;š2b·ÝFˆÕ«7ˆÄ°Éäï*±»úœcJÕwÀ·»h”ÖlÒ‚>†Ð ‚=°ˆCºþÕEÁ}AÜa¬û¬êd¦Šs±U|\s| wžÉÇV»ewˆû¨¡»3B¤„†Ú£ ½(xPË[„É!ÇÌŽ6.nÁ?<¥œ¶*Â<ø·"ãùæCK’¸Xßñc±jÕzÔ¦ ØoPægiªà,tõƒ70³n$­ "µ0ÝMì+Ä"}Øš¢&Š´üºq‚CPÆ÷ضýïÌ2÷1Î…óP™*„¥í3#ÏÑ~»‰æv$…qÐÒö£½2Mí×—?h©$Äch”²iï¡Vƒêêî™z‘Þô¡CøîÃŒ}›·%”|>è¾¹a4Ý–Æü{©ö3Æõ|òZÄúÌÛ¢¤˜¬fbÛë˜t³*Ðunf|ßb¬Î†9¶ }Cµcqoðà]Ûú °.‹:ô5Vó Ñ $Ü(ìVl,5ݳŸYNÇy˜¼OC³éR*u‰›Öß©³Ò#8 ä>Rêÿž(¨ô÷ðåÕ}]].‚ºx–v1&G~‹8€Y°QØËïM‰©‘¸Aõ.õ83×mîá hed6‘¿Â߇g÷ •žÈ_q=Íà6°¤þºS‰tV]›yiÀ¬×£™Ëo"ÝÀL½„q&xoýã?§ìBѱå<àXiÞ4 VIDAT7a×sjäÓ5ïÄŠ•;eõOSûÕ^<;[ÿÎKÿŠd=uN—²Ò3ßo·ŸK—_ÀöïáPÆmH¯ÓRB'HñEâ:ñƵCÍ;€ô«NÚÿ3f¸SÈ^ù›ÎÒ¹î¯Íýð:‡F/6·™ÏÝxhÑM‹¹¥ÜÂæ WrèÛ¾…¸Ý•o›Ï¶z\p•ÖµÌâ·B¨‚ðïaÖ˜D=»ü7T¤£!ÞèÛÇq²ûµÏ3óãeá%íöóÔ×> üX6ë)k¨ûÀI·.ØÇyi2Ãif9ܧpÏ›¯ØôÏ:4µÏçtL´lXl÷â$uWÑ»ö¶TEç3 L†ê´±9“AkÀÃC¢†2{ Q?ìrfÿo3[ë…³‡H¶ˆXwa ^ƒŽG²ž 圞ÍÂÕ±Ñ}å!^½J !ùCz%û‰á‡£B!¦Ó§z‹a8«Ç{Å€·Iä™#ÿ¤ëË4µ/ðŠk©’ª…A:µgÏÚ>Z­’‰eÐm&Á ã=bï±,år‰¶²ÞéÌ+a>Cð#ÏŸ‹Ìï"Íþ#š`”…ôÜV³-œE¤Øut{F±‰PÌF×| ¯Êât:},¶ m5Éð=c *Õ8m3‹[òêœFë¿AÓ‹[rË{8†€ÕªöDÊþ#¸¯ÈÍîÚ›r/¶Çb¯£KÛ®õâY¢ÞK—#Ÿÿ¸’>Ð}ÀYÚ!°MBh#}«Ô®Ò‹DB—w‚ŸÛýdwCÀ Ú3±³N…¨ÏÅXÌRò/ÄÏþ3ÜãE4òù‡³N°ØQ¡¤dÁ©mªÐÀ^ > aþÿ[©ëÑ g‰úáÇàYÂÿžùƒXÊBX9”G „(IÅ …·~Ø0±·¦v}f½¿¦Ü‡H„ p—^Eü ®Ó‘ _b¦¿‰™>v$„}[-^í¸”ý?¡M$‚–'²øvŸ°ª¿J™Mb£µ$þt}nl]Ý`ÖfŠÔð‡Y]ÆÈ–ßÇ“”…ÉJì‰r(@ïF ÷d”¬ä»¯°‡h¶ß;zzªn Ño™Á;ÅF¶6TG_¨µûm DÛû@/N-Yô^# ¯Z½Ò;¦I1D¤7Åÿ‘ÌݨR{ñ‡‹1üá÷Á$ãù ó=o¿n4Êf=K½ë{¹TyzÞ1Hj(›ëâ/1ƒ¯¥íLÛãÛ@‰f¿Äìfë>D7´wa]á9ÑÙ¹;ÛfÓxv§ŽÅ†~“™}I-"LûBô+±/.e“Û^ëƒ XÞƒr¤<Ûvz§bÉèù0G =ÿ š'±ÞÃà=›ô~l>K°uúgs\ÓŠEŽ „3 oÒ¾¢có,QÑïQT(½âŠq-/-mÏæº8}NUÞŠs.Ó¹™«»f~9^m<½d‡/ð.¡ eW=W!Ap³iï‘lb‘ 7.S}Nj[ÛŒèGÝällb1jà ÑöÙ:ൡžîvŒ|N9VÏuz§bé]–ëU˜a!,Â5u"»Jw6Îéî¤êNVúuѸò/ŸkïÊ•—G #Ð;Ñ•&GŽc!í[0ǾÍþµ³·¦)/ÀŽ6½g­'åö”G`Œ€¶#Ê¡<åèbþ¡*âøÿ3IEND®B`‚bitstring-bitstring-3.1.5/doc/bitstring_manual.pdf000066400000000000000000015372461271665413600223670ustar00rootroot00000000000000%PDF-1.5 %ÐÔÅØ 2 0 obj << /Type /ObjStm /N 100 /First 804 /Length 1160 /Filter /FlateDecode >> stream xÚV]oÛH |÷¯àc ´ö{.I›ëŠs‹>¯íM,D–|Òºmþý åUœ ‰ †h‰Cg¸rdH:²¤•䉂¼#@”$4þ$ ÜpøæI”H$•\HIÒø@ZR€Ê’”v¤ RNR¤ ;¨np‡´“¤<éi¨nÐZ2¾ mÉ”%ž“U ²ÙM®@šK‡lrÆä¼YXI®´d yé"o$@ä=ƒ¨ ŒV¢‹ÓT"t˜¨_‡‘ ÐôWW,<†-ÀÎÌ)¼ÅU{ò˜^à&x "$ú—H"©dÉ$Z žoGàÝB¨È"p DšÚ”ÜA‰D†µfÙæc8@a3°@ +·G ÅBÀa­c" ›€ ‚5°A°J<‚pÐW`FáÁ áx\~ì¹! ¦ X"¼+ƒååÀ€’oÃQº/É‚i°õ¯ì‘…á;š$Â"YxÏİT°I‚ÝBÀ(94´¼G–‹€ÉÃ.)•à pSø$%;Ó¤äØ&ÕƒÊjàËËèÔBÀ9©á»$5ÖF@5©Y:˜' ?*y]‡Ê 1V£äf5à ´j˜‹÷ïélIgWí·–Î.éÕ>téxM>,^}¦ï}ìèKh¡~ýGêzö)vcöPߦm×n¶æöqª¶y'Æì¿è¼«â5}nR×nÃÓ'`‡ÕäˆýÚÅ.þw¨ú*Å~$ «˜RÕÜPŸ0aÜÌÂÔö¥ÝT×w \U©O¢ù–úˆýT5F†fCÿÆ}Öø6 6GðEÛ  ÃNÝgñ6‹ºþD;†]?åJéGÛÝÆ Åßa·¯gµ•£!‡ÝŽ{m*¨Û¬ã,.·[Vñg¤öš>v!µ}ÚÆæ©¦ã¢eÔÌÊä6÷äFã—Ï?–ÏŽ_@¬éÒj,ýmOÆÐº}û)\žàûà Æ¥õèrÛMЦNó|êÚb “6q]íBM/Ø uR=XUMèî^ŠU± µëôò¾ú1¶jR¼‰óóæƒp^OP]¥TÇ·gêT¤Ÿ­b }]·a؆}‹ Ôv«0qÇïÛ&6© õÛ«¶nw+ø·‰óü]øE«»iR˜E–ÙWuœZ/uZËpH-Dª˜lÕ?5ã¸öz|_¬oŸ63—×ã^´»}X'ºn»]HôìKql`îmìö]ä?Ÿz™æ†flˆMÊÊk1••µÁâNee1¼gÄ—UÌA=Mœª§=ñ#|·uXSäסÂÕ÷Ñt•¼¯¼f“úæ½ßÉŽ;±|6ót€ìé_†eŠû=·©êÒÅŽõÞ3lÆ×šõðbyƒ8nÇpëãºópíÏØýêª4Ïúþ÷åò!>Ý÷˜…Ëq™Élöx22¿85¯~ê‡/ôx7á-“¦ù\°Åé8Äÿéö¡j endstream endobj 203 0 obj << /Type /ObjStm /N 100 /First 855 /Length 1134 /Filter /FlateDecode >> stream xÚVMoÛF½óWÌ1 ›»³Ÿ@Àm‘"‡ iœ —\hi¡H•\µõ¿ïI”­†Õ„]‘ófÞ¼y\R—šJÒ¥#öX<KZ•4E!`1¤”¬–”UX©ÀX#ˆÖ5ºÐ×riG:"™öÄ8.‰âX¡†¬† i¶d$E^Ždœ’\d"Ú0Y…8ãÈZƒÕ“uˆ·%9ðÕÀ8%«!gQÛZrNÖ@.¢Žä¥¾Óäm(4îyüÎQ(…«G—øïÑ-0÷öÚŠÂ\£Ô÷¢Ô÷‘¢Ã iTYªBCUB+6 §ƒÇFjÄš•H61QT´ Ô”’::Šâ:Flt$Æ,è zŠ!?£OÅ&`ƒÌŒ¬Œzʈ´¸­ ²ÌÇÀwBA– 9´ÎW¹ˆÙbFÊ3Œ!)oå 2ûÈØ sÄ?ÆœT„ŒA©èǤTŒ²œ¥’´T Þ ßcZºŒº`#–@ŒyipÅÆ‹i@ƒ[ 6FZfÑSÎV „û,ýØŠ% cnðŠ-X†Ê˜ crÚˆ,Nl¡qEt4ÒŽˆn<È#Î(÷V³;Ï!³•v¼˜'‚¡˜ÛiS°ØØ1à˜ „Gu0ÐNtŽâ¨ÅQ,‚ž8ŠƒÅ\¡DuH… êýë|ñú5ÝÜÑÍ/ݧŽn~¦WÃö~H‹\wíµ»¶×êŠÞ¼)^ ›¦ÎWsÁz¼ØN„.VÕ&§þÚïc>¦jY·_ U?`CU»¤Ïí¦Z|ÿ‰J‡2~dtH°Ãmö9Îòp„ö€Ò ÉÒÔCž…éÓŠÛ߇®_W™†Üãß0›ƒ÷9>¤4×ß¡ÚEZ²ÞÍg5ûÈ·u{T­O›¦ZÌëfFÝÝdÅè'LÕ4³á<ŽF8¥sØ}äï]/=Ó_u^ÑýcNT5õ×6-iYåêeÿ…=ü}=,RÓTíãËµÂØø¯y•zz»mw×Ï;<ùLXíHÍôØýŸ©ÒløA¬ÜI…y:f ¨›ùä}‡\õyØ©{C©]î¶³`wh¤ëÅ(]sNÜCÓw›´¨«†Þ§¼ê–sÝèQÜ/нüšÔŽÛY¨>…âÙ·`;naÁþâŒ|š1ý1‘°M§3§éê~È£í¿”VõCžêð¥õ‹ú3KÅRYo›©¤Ó—ûg—g ùÓB‹nóx16œbq&N°é¦<ò÷äÕz:C=ü,Ç÷LñFË£]ß½£é!õ©:Çs-îƒÛÖ‹oçâGâø ýXçó]|:Ñ.yFãÓy6>Úë aãK²ï6ð}=y´Ãõ‘þmßW3ÉçÆírY˵‹igÈá?5v<&n3¾î·ù|c‡àŸð¦Éèî.ãCe=S‚ÿw{<Ñ^uOsÀKGoªrúi•èvÛ}3Ѻ[n›3U娔àªmî¨nA¯Ô!õgqz”p¨<ÿ­ö„Åoªa Í#{{ÆQ%Zôªø?NÐ8 endstream endobj 404 0 obj << /Type /ObjStm /N 100 /First 858 /Length 1319 /Filter /FlateDecode >> stream xÚ­VMsÛ6½ëWì­É¡6°À‚@&“Çù¨3Ó$S§=—¢àˆ™T)ʉÿ}$ÒfdF¶4¤ÈÝ·oß[´Ê"«22OÂdµ&opaÒ/µ¶x«i—žÒÁ’eE¬®†ØdË–XÏq–áê‰S ®LÆ Þpud<â î5p­ÚäX‹{§'Ö"7C]›‘(ÜÛÄïE“r@U<ðDÈéôß‘“ô>óøïeànÁ9³~b¥Ìƒ—Ëȃ»užB°uH ¼fÁ,`—JÀ7vI Ç.•€sœ5XÇ<xÇ|Z³‡û÷8`¼öq;w ƒ`q¨2i\nÒ8h`ÆDà Ñ|à A¸ñ¸_Æ@- ip‘*pФñ8hlRÝV™ÔŽƒƒÆ)?yþœŽÏéømý©¦ãWô¤˜çË66GšŸÒ‹“'Ÿæ‘^–íIÓä×T,òÕêésÌmÎi]­Z$ž·MÌ/ïÍ´ßU{`’l“Þ¬«¢-QoO¨Û†¾þVÄåb—yÓuœÑÉr«YYÄ}¸Y›_.c‘«¸á†È#½=EoéÑÞØNý?óª\®÷Çw¼?æÍª¬>ï í¤>/ãU¤ú‚^7y[¯Úy¬övêûN—u«¶Ì¿¿­õåVÏövîûÎÏ* -b~gïâã87 Âå ¼,WMèS,æUùßz/Ðø{QårZV`f”W3*­eÛûd½-§óº4£U¹1¾Ý+]×k*òý æ–Ì,bÀòl.ú!¦‹º¡iÙÒ*¶-¼ÜP,æ±ø2jl¯«-ê_ù}ÝîÓ„U¯É›õbAÿDÌ äü£\µus=’·žSo’ã´YçÍ56Âv޽X›gtÕa„)¨¼á3»²Óö}}/§±Áö U©‡ê ÈNé—yñåkÞÌ×ðþ/aôtQ˜çÕçQ•vpº%ó>~¥ ,Þuó¤nwz·®"Ž´­<ƒ^øˆêÅí*nšÙHsd·y½Ë«}ˆ‡ô·Bm×üŒMÞó¤|ÛÔ³uYÿZBíÂi¶qÑ3ôz.nÇM ©ª#sU­†x2ŠÇ‡àéÛ#lºà(oâ³ Žàj0zÀÄÖS®zr…3ý™?n&rÐ1Ö ÌNÛÏÇëv¾‘Àmvsôí!~jµô‡y?Œ:ŒðãGáçnùý‹Õo?úи“Ù-˜W±è¶(®ÒŠQaH2>I¿Sªók·?B©°»ñÚÑR }H6Ü­¬E[o¤P#ü8äw /þ¾B-°#ÀAºµwòñŒNzêðO-$îÒ9>t»ÑÑwÚQG²;:µÓ-¡“õçu:¤Ýhý ²Áæ¬Ã(ü¯Øá‡g³ŒÀÛÝE||èwÚ›“eýÄ7Ý":Y6å¢?´~?úTWPmXí£‡ð£³c¿û&øŠÑÈ| endstream endobj 631 0 obj << /Length 397 /Filter /FlateDecode >> stream xÚÅRMOÜ0½çWÌ1‘šÁA´U ¹µØÝ]±YÓ*í¿ï$NØÐªgÙ~ÉÌÏ› ¸ÊÄtJÞHpÎôÖm&¦O™@FÓêX¾ÞžŠ|@Ödd4”ÒòÄüâ’JyíÆ”%ƒ^$µdhþxvÝJ¸ŒÙw~æÂcű´ù!ñ¢Êξ‡%Ãüê¤7hHñ… PmàG~^”dDþíØoã!á6n^÷uÂ}Lç¶Þ?'tŒ¯SÚÃá¡"o†­~ v ­výKq_Ýp¤F¥íØ·ª‡2ÔÞ¤VÇĹ[ǾOðªÛ=dòŸBP¿]TZÊAëÂûJ¿ iòº{ÙÍZJT›§¤X=O‹˜''õ_ã@H¬vUO½›Oé$!õÀÍ>WoÃ& ´…`yän6‘ˆ¤žL<á1h÷gµON ƒÞ„¥ôóåéŽäæ;ùÄú•Òà4çÁŠÑÉr˜ßí 616ûz75®c;êùûe}v{á endstream endobj 627 0 obj << /Type /XObject /Subtype /Image /Width 800 /Height 252 /BitsPerComponent 8 /ColorSpace /DeviceRGB /SMask 637 0 R /Length 17079 /Filter /FlateDecode >> stream xÚí]ßv£¸Ó<ÀïÛÉ:± d¿Ó¼ÂÜÍž/fÛøý!ÀŽm„ 1Z¢êäÌ™MB*uWW_.€ûáA$'õç&ÉQ„Ÿ"úI*‚ƒˆþy«ì_öâÇA¼ïE°â·{Œ@¼äìKò—X1tz~%Ó.ü*@  †_%ø•ø¡è•_!~Pïd'ý•:=¿¢Ç¯¼äŒq¨åW²¿J1nõüŠœÌ(Æ  –_!?Ð+:ˆÛÁ¯ê ÄOùA€>ùÕñ+€>ù•Ü#~Ð'¿Z¦âWàW5üê ùA€^ùUüÕ)?~PïįzåWâ·ˆOB¦"9^ÿrq*äI$©ú—ìÏäöŸ¹:ùÙ7$'  !2Ä_": ™Ç:â³HÎ":bdxÔƒ(zÒ%©'S/Qz›â/U)REÍüŠä‰+$€F~%öÚPUÍø@3Úó+Xyô̯¿hïd «I€>ùU~Ð'|JüJˆ=F  _%‹±„  "9øU w€&~Ÿ üj w€&~EŠ_IįšøUDÊ"~0ÞÔ>þŠø(âÔdžL;7}{ };À'D°›“'?I=™Þ;eGÍ;0åä”'´x,ذG!"#Q±¢RýGDtÀ “MWñ‹À¯bXŒŽøhâ/Ãà"òða·*5ÃX?)áI´ ä´Œ{‘œò£YšçdQSø™\Ù•sQêÍ1#„Ù tKq†_Zä€_ ör‰ßŠV)û4ì½¹Ød´Mùð*/ ùÞþ’ÿyý_>ävpáWçüŠaL@dÈx”ÒŒ¥Êß;Io§it£s_µo‘#Ýyèbõ)ä—ˆN">ˆ$ûË1ÿK6í">eï²:GÄgu”PAæëPDp,´CsZ’•0Z±ƒ?]ø'¢r¥RóÚjçίfÙâÙ£D›‡Ü ñKÄÍïZ%0‚®^àµÀnT|ÏW#VP_ex›¡¢ÇÁ PÜtàW©ˆþãïʱÕ'ž¸ð)ùÁáÊ]³·@„G!Oʺd“G†Ü1½d²HN®°:·¿õ#Á¢ÕŠò“.4ö(ó›ErSÙµ ~ýêQFÙ\=ˆä”«&Nå_¢?( € Å m}¸yÏ_‘æ*óˆe*Öj’+â$O¹L1UQˆk°ô¶!VÞ‹“Wµ¯ø•ˆ>½ ¦/­£ˆ©üŠWüÊ'æ7{o—©ØT¬ÒÇþUÆfž3ùËIW|â'–xmè"ÁÊÞ>.'DÊ n“n€¤Á÷ž¥¬H²£ú¦`MÇ|ßÉ{ßòés‡ŠÚq&‘_½Ê4ÊÜV§/¯7~ewé uuí¥]¦?Õ¸%ç– ÃCT\+{S„Àšcœ™­cÙŠDqC¿rbÒRHµ—|ךuÞk8X—Rá¯äE’v k÷ϯ’£Õú+úü9½0VÙKqz²ƒîåK%Ù³/¨Å€Ì¯ŽÝÞ86üê7og'g†¨‹¤*a¡‚NÊ2ô•Sù°üjȼ9)Òád#Üרö’ê"È0{ÁÉyÕ yÐDtô•KÆàg‡’e!iÄÖAg;ð<«É\aP¿Å¦Ô{ú™Ò騋påQõ_ƒÆ¯<©ÂÀ^÷hчs>]ßΫ;*™_µV˜‹2©=ö Ïî(;ï`ံ‹@7‰ûâhÝõÇ¿ZmcP“髉û`«+QÂäÜ{F©¯P’ ëêS{—Ö6§?!÷žðè¡YXH`˜C·Z<Òõ‹w¨:E™ÖçÜÐ2-ÌðýøÞÇUm ÷2râãs‡_yÃò«SJ$Ŭâ·é^†‚̯bnüª·¤ÀÕÓ•ÍlÏ–èÞ qÝž•ECˆæÔ†=÷gî* ë¼ÖÞ­¯èm,LN ¥&Ë„øUûQñiZ+ÂW`´êuèã%ð^Né ±/Ë× š±¤ãù…Ëõ“,ˆî†.ú/7”ΛóÊô¥=·ëÀ’œš.u2ä<'s–ºý:þaÀ >ðºÄ]ÄÓønõtZÙ¿ñS&lIÊýô1{E«r Êœ?JUx?Î+qâÂ=/ïT¥Wå‹Vi~†ÍÛZmÎê+û÷õ9÷}ý[’ƒ3dCÛAT>.fDTH‡\>Î]“ W¨< ü2¯—NN-œâWÃÆ¯¨üýãï‡.4óòîŸjCéIœIçWŒÞn±úìf.!’¿y‘¬ïÅ .ö㯢ÅçÍ©uˆ âUn‘–ÞÂ)eïvo¸Ÿ¦sh~H)‰wÂ1 œÍ|{rF¥Ò~œ›ÞƱøÕp/9?x_•9¦}š/Ç'F×Ǥ%Þ2§Ó“ˆÈÍ}Ô$©gÙœWAçÕ^…•n2 w£âÕCAÞ,Yž>Q¬½×þç2¼­p;ÉÞŠEüÎêØ5äÞúè”ÞEÛæËÔ6u¾ž.Kk?{YÊÈyÀv‡Ôü`ô'î½Á–}µ·ÆÖŒù§º6R^à6¯,-ëÈéös*‘›‰¥Cx´²Šq×ük†»äàSKöö÷„Eƒny?ú£˜–ß¹#v[?a}òn\yØÖ/|MUKTõq“Ÿê|7Ñ¡#»ªÕ@ê¯h‡ƒW“ù§}šÜ´üËÖu5·¼(âT3Ruªsw¾žh½>Tþ Á€+¿’)%ƒã¸EC‘ðõ&ˆ ¥Ö·Qˆ“¼IrâT4±-ƒNu‚‹öÌ'†Ø&_çýqí%-çWBç«Uo¡Jê•›bY–T*Œûøyo½ÚnL²1"!¾c  ¬àèðPôØâ¤Ãb>ÂÚ%°æ„ã4YÏÓë“U•PocóOºþŠÑ«=Iü*×]&uÙB÷§N ¨ra›ÓSVh’׊ç’K&l’%¤½l‘´§ ~Ü^¿L¼§’G*£TÚoºßñ!ø3­l #¿ÒÙ—yßA§òe÷ó:yÉó‰¬ôŽ\`ÔBÇ y=àd™2¿âD¤ÅX/c›-ºN­¯Ü¼ôÕ 1뤒½Ü¦&T†'ÑK¸Ez)üêå"#U]J*u­¢ÕˆF›¥‚‡8¶ƒÌ5w)4N§Ò ¦I/-Ó´ÝZ…vO÷d%˜8aju~Ð8~UÖ"eOª§Ç¤Üðâ×¢ß\ƒÙªb]aæÕd­6Gò €^'@¹ ·æTêX˜Åù’¬^¡£´ÂgÓ yœ%"¢)‘Üh—&äç8ÁÁF£Hö¿Šºýaß^É~ÓØovDò^™<â7¯·&Ú[̬úK¸ˆêáÆ±èåäÕ~òÔÉÅâ¨rOÉ]w˜> uÅÇß!ÉÕOVþã¨g1áD¬[%q†Mòâ']øUÄhGD—Ѫh?üLÛw^÷ø´€TGãéĨ U²ä,† ¸N‚Ö¹*”Nî8œ|Eˆ_˜>É[ùIÙâÙ—§²D’޳Aggä9Ư’¿=YÕ«wÃQ¢FæWœJW¼ó€Ê?gÔ[ËVÈŽK"¡bV®x_ôµ¨R { $X@WrnÛÛQáb0¨¼ ?ï—Ÿ—¹é¯\<õX꿊¿zgV=ö²f—L}kõW^?«ìäò5Ñ|;v[@¦[ýÖ:µÚU“*[UÙ^´D:‘sÛ÷úr×)s *‚Áz«}‘N»À¯¢ÿzYøÁÑ Eÿ¸qâSh3ýêv –EŒÙûÒ÷óÖcå™´ì;2oë\ü§:Îä"^ê©¡'×!~“%Xpi˜JYÔb^Èã‹ËHa³©†‘™µuü*œâŽ~0ß÷£á±Çb—jq VŸÖNÑû bjéø÷oéÀƇ#We+Þ\m®‰_*RC"êm>ÐcªhDè4•Q(Å­ñqý¢÷÷¥£q’Ç.Þ쮽õˆÑ7^ïµÌ¯uAd#6M=„Ô½¾ðİü 3Y—m1€±U±Ý¨ÔæÜc¦Ì—“UÅR OæÓNnFœJC¬¤RãLÑטUjEÏî~Ï€Îxåu;žçÏÝJ‡Ujœ\$cznôïó;¸®%£ò+UCÝ+³º:` •è$ó«àÏT/Cà àÕ9ð¶wFšX¾ ý‹DÒ9xrI¬H²#vˆ_¥äå1¶ØÄ†ì/Êæì@ÎlrMĈͩŸñ0¾ï±N3ï¢8xkc²þª¿ëbOwÁB¡kpÀ´ä¾¿j_@’71³c3„t¬v'?HzúöÛ×ôí¬ÊÉÉ‘7®oh3^ÓŠ`ßKN°t—#ÕiRdzßSuÄ q¿âC¥Šv¹ò˜÷Wí3ÂÜAnš7{uP£HŠlÌ“_9°0j{SZ¥¤špŽt’1Ââ÷ë¯l„½w<Ó “Z“ ¬)—‘ðSˆ_ýG'¨Takñ(yç %§‡’T„nö8 ;{»%M†béaù«ø1­&Ög7fÝ8üJˆŸÞËÌJ9*La%Aâ«ýó«ð“¼‰ °ÅšGó¶¿65>_M¼9yù#¶²m¬)^‡¼ñ9£+Su½ÙîO¸[]+ÈF.¸kZüÊþ¨)ËÆ‹_Q»¾õ¼~Â.âñ¢ =×Y}Yñ{''(4"bCßçÞhç«1Âxþä}™gRCRTŠ—i9ÕËÚí¸®ˆ¨*‚£wMÌZ?„UÎáü?µôÊûXyR>c«cV§©ßâ‰ç†OÂ¥¡Ons*ì:ÛNƒ!ü3“Ãð±©{¡Ô¿ã"Y—(.ÏÒèk†*MšàÄ}»µU¢¾µ™Í×O»ƒ>!»;´«R£Íô/Å´ùÁK—F9`õ8ø§ÉO+âãïð1+›v!~y³t|ª_ó©üÊ…! zÐ_Ù"y1[ɦ”ƒ=~v'W2Í~ܺ“òùAj§øÜk&9­ ó6QI¾G<רUSFîíëzQmnä’"~åö U1°b)“Ç(ú 1Y|¼WÒ‚l*\hq¨í•Zär6dÜ·iO%ØCØúy B©ô*”:Ý„RžCš‡ç‡å²±û¯‘_ævË~ì€þ*µ4ËÆa„åÙÑþÔ\q ¿Cpƒ &¹b‚F„SM€ŒÜž¸†ô›Jµs”ò‰üÊ¢˜'ÙŽ þšÁ,]üÊOæô7?HÌä2çWÓ{¥æ6§i·Â%±L™-\Ó¿ÅBQ-5Ý2NÝÍÓ!^¨ÁIHd !7 ™Aßó¹%Ëfɯlu‘%MNæâ@ª"wˆr³n† ê½úä5˜rOÜ[Ï]=K V_/ÔÙÆâ,ò9Ëž+2u ?Ÿ¥ÞüiÔ]Æú…(¶2~Eíc%â³S‹OßëjvîÒLµ5?ðLbaÎ`o1½QŽû9‘±æÑÊ’Çù+›®æ”éKœûá\Z‹g'âÛ>i$3Ó_±‰_‘c¼£Íôãö¡ï7½KðЧk“Ø™lR>µÍ4\°úšÁÞÆä¬xÛi¡=üŠ||sÿ]ðÝ-­_Iýðg°’BÓÍCN¼_´Ó„rÜìÓ:¯Î<óYdã¾ÍPsƒÚ ¬^ƒ‡V޼ç¨@…zêa»¼Lµì;¿JææÏ`%…b¤%øãÌA¦÷â¿cf)eщöF´’¼"L€õDTˆÁC5žµÝÍïBrF8÷1¸á¬G/·ì@~Зvê¯6Ä=T²> yÉd»p‡uyô^DÄüàfÀ·˜Z’™‘CP£~V6ªàgÃb1÷ÝÝs©ëŒ a9íÒ`©8g<~eÿ-ûvÖ™ÿÙ¥•§ßEUÐ=<Þñ@²“á8ºó$X}¼•‚jºÖ/W#ŠLš™ɯˆ'ÁÅq^o¥ñ+;]ÐIn*üOyò«.†íÌÍ.ä”b¶W&ª3YÓ 8Ú¨'Ï^{"<Ô[ûŽb9ZWK? Ϋ_Œú+Kóƒ.5¼L§ÅÍ=EéËdmM#¨Â›!Èy[ÛÙU ±˜ÄþnL7jM„E{nçÞ¦ž£v "¢¦°í_ÉyIÎ,õûrL¥àM”•ɱÃq’û+L¼)ñ¾çôp³{y-¢?·Uò:ùÀØR¦D~ÖÁ>'A†‡_ofú+>‰!ZÉssQâA»Ç¨©O_ öž$DËÜóÐ%{ds³!¬iNa”+çdÚ[iÓžKUUYÙ3uÆÚ],gwò¢ù¸´ÒnÅ¥ÎMt/¯Þn‡\Ñ#Sn­uãÉËU†jÊíÃkŠÃrÞ“…Eñ¦çnµïF-ËŠS7bYž[gÛž¿Ò}{jc ˆÖyœ÷´œªŸ‹øøÛ¡œÇ†]•¿"î)¸÷6òT—¼ÍɺÅͺŠx-Exÿš¨ãædµeÜÜZ<“Œ•f§¿â¿JÜ‘(Ðû¹ôįâ=9˜:6¥ÇQÝ%Xö1É]´˜Ä‚+Þy1hÓ®À0ÒÊWfvüŠ"Žõ\ðu??ȼì‚\1zšêZ &vHGYU¸… ±o{ñã ¾²¿¸Þ‚„êïÊbA šÏXdUÞ`xôdê÷Ͳ”z!91·’~%Pà€ß&mn˙ůx$Ú²õdÚnÈ}Ÿ²©ÁÓ¾\É-X»|~FÈuš]ùU¶¹d¿+£ÁJç ¾Ê4J¶RåvWÊ¿’ü²)ŸòMê(¢­]¿û“õœîŒj_覛VË€^nü΢Z¡Åüœ—_)eïÍÌÿЉò–lÁ2÷k"‘Þú!9Ô#¤-³§wǽX³³ƒÈ¶Å¶â%½‡Ò<ÿrR¿Hüvûü¨ NbCåWV–• G±ngUlÈ»O4q~ZŸ/áúvîü*&6ŒXG]ÄDGlzˆÞ~å±´tóÉ®§š D6“• ·I%ç×K±ºD²=+°fC·Ñ®“^¶okYÙXóVÅryjü$•‰¦¿r!?x¶OŸ\ÊjMÕ’î{iÇÛí±,‰%{ä¦äRR%ìüœSɦš-µ“3'"zÿG%„ó0ôBPÛp¿Œ̺øù3óÛÑôíÌõíb¢n2ƒ=‚ BÄdSS{܃=–)oAW»)Ñ”dÄ©êû%ñjž[xˆ E&-—©¨xì¸3ÖWJx{µÂÈrI¤æåÏàYèÏ@ó€eÏù=9ÁFü8P×%[|Å=®–n#§óÆ g¥JWÏ2PìY(˜,':|”(ÕYS—–“µÄÁÁî-O³Š_Q<ž‘S9ëIÖ~º×§óë'©«üê;ÿÂo’ØØ«tn²œK^¬á'ÌØì—öU1Ôå®7sÑÚuØw88ûL§<4& !v(Þ±¥{;-4âô±ãüꮑ£Þ%ÂB®BVë½9âc&â£7ÉŒˆWÓÍínA˜MÔyñ+ ýhžñÙ¥GÐW|@„äF«Ö诸zûSúíNJ.u%¤–L$.d~•¸cø¯j:’ãÕéøÞ¤äú iyüŠÒRÁ…ü -xrÂ5Ooé©EµÜU}ûÈ7Å_¯ÞsXàÇôrý!Æi§_Õ»U›ºŲâÓØ$ÉYD£ÎXjXa{-ƒøI»_ =÷^Xð™ð+‡š.¨Í“üÞûòðzÇMz:/ÁÒ²˜eÑÚÁ3ÈJäå½3 k#<?¯VQ¬×j/ZäÐ&¶å‰oÚ‡þЏò°>Ù ù5ÉA5[ÀÉüʆh-)¿?þyšp‚bMè&îÎö­r~âZüª²Nò8,+·93œ3+©«OËo6µ.8IãW¼]Èù÷`ßß0:˜ƒ 1Þ˯‚½Ã. õÆ—Unv%„­Þ e.=¸×nÞÁð<Öƒž‘×yû3ºÙÄÂÈ9w~u¤íSüʼüã›±§Ç˜™Ž²}sÙß¹hô|önÿKýßt¾7-ŲÑugnX]N¦ñ€³7o5ƨz3{дí;²»pƒhn<}–Ÿ,Œ™ç'ë@^š¬àW’{¿¹Þ‚”¬Iù%žD\|ÚÇ9…ø%ÂOõSùéØ,8{N3…ÈK¨>ˆ¶©íJà꘭t¾¿{DÖg=¿"¥Ì6vÇëˆÊO•ËÔ¥’w@U$“¬;ìã6œj‰üêãïØW؇KCé>ûuˆè¿ž¯0PòCˆŠÕ†MpF#U…Ÿ5®™ÉÔöUv+UzZK{Žh©(ÖÀ6#6&¯Ç‹_mæ”dk#5wΗÖöúñ‰¡Orï”}é`vô>ºãÜw8kÙ½2BŒtͪF~sýÕ}F±þr_èX$©Î“Ζ’'m¯3vè]Ï'*Í(~æt³ òƒ´€O6çñ÷“É"H],ÜÙ¯á‚xz„1’özEH6é´Ç•«Š{ gõ+#l=æ–™æQãœàWÕìE^¨¦ëbÀ( Õ³EHË%I´Î¬ôí–…Íùg«‰-·zåW}»d¶¢÷7yE X,2¹÷Å©§ö%'ÎcÎ! “ iCÌNâÞjÃÃ뱬Aã™ô@¥í”#µ+e6^üŠÃ±.Asç¾ð=5"Á?ûO¬›¨éXrb•¡ ]|pì'&ÀØyŒIÓROÎK™3è®ñʤͥ?¹ð«ÄvÊ1£¨¬u^è¾[Õ42ß÷›ÕaÍa.£6;‹Åq’¦ÞýÒ•YV¾gýqbÐ I8t!ô`ÑÐçÉkÿR+*jDÎ#X¨$æ-çW´øÕôOÖ±j b°´çñïb'ÎÛ¥Á·Ä鈚à8æbõùbæeÌ“¸ˆþ£½kÛÖ:ÊOœ ºJß›«T¡7¯ø•ådÒ6ÿvÇbæÄú‚žo‡š¨*ößeÜúí“}û9Š.T·Ç(VÞpÏô]cÐÑœ9²\ù<Ò¨*EV—¹:ØK´§j­v…šWüÊ6}»KÝÄô%BJCKß9 ˜¬™-­T ßs•<†CO#.–ådç¦|ñíë¢!áç`3ól¯ ÓùcÎ+Û«u«í•‡ñ¾&ßd}™v a-™¬-]ET#B‡D)–šKá'ǹÁ_‘- Áj=¶Εƒ¥Œ}çêŒzÛÁíæW¿ìãW¶5ôéñ‚Ì‹ðÐIÀt`-Ò5Ñ\°ø;taµªÐ¬]8XŒ†ŸÔÁq"p¨Ëï`ï`‡ã‰½Æ›´¢u›™d6ÇìâWbqdòFôt>%¾àôëb'.Sž…„¥É.X!ïÊÍN¹ær.-ÆHlÙØ… C¾€l$îÉŒWüÊæbI²þgr~9£ºLÚ|ðñ2Ž·ÅÁ?h¹ƒÞ¾ aÙæE*–´Wfvé`Â3}~ȯ¢?1ùtà±}¡Ä>8Ø8¤“/MôÐŽµ´‹oí( )I`ÀAÎDŽØÃ¢v¨d¤ênÒk•‰µ+ÅŒ˜€ž|?ò©«Í’õÓá&¿éÜîD£Ö 6£ej×|Εoªă×!E8ü6!""¡ºUÙ¦)±ÛïzÔ± þ°rõ›Î}¸WÊ?ò«ó\òƒQÊj‚õýhø7äůDò·[ýǺžÐ¶1‹VÑ.b’ág¸øI´ž:bO¬=Ä ¬ö=­|[DûáWƒZM‡ÜøÄÁ·Íxòš¾lw09¿rçѽ¼ÆJfù/œ¡T¢09SkßÇyáÈ`¸)ÁêpW[˜|kð­ª0½Uêä½½²9Þîy†Ž_ a]Y–Šem˜6£$êÛmæWjqÊÔõìQ_y&g•/SòÒ;ž³¬ êÄÉŽ›éeùÊô2q³a•îŽóD„mkõ¼c]A™çš»8»•rk×a_E´TÐ;ã“Äuég¶†‹ä«wã”ÕÆ69HSË=¸ó+jíØˆ3MD‡(–;Eî7´a1C<éfˆÚžx$ VlÙñ™Z4í#EØ<¾ÈÍG ùIÚ ¿zšÉÙ-ŒËONŠte*ö•ªª±"/©¾AQõu½†Þ?žK¾[$ìV?ãÕþ¥¦x>•_ƽ¼Ô{ù5ÏE #ÒÂØJ~EvÙØ“"LRn,ò¹fjïÁo í&WôF™#o%yLûÜ;Å꼆OË©‘7›˜§I×™/âÕòÖ·SS'£;ФŸ×S±¬øÌð‚Å&å1ŽÖÉòZKÇàWDáÍô¦Ê«Orš5„ËhýœìÒéoì7N¬ÏL(ÖôüÊZ=!Y ‘L˯ÈsÃ¥ÁŸ¤›§è/Rg yY¤2 Ñ]°,J’ë¡ÄûàË)_qèB(Zú&|Ñ:4oRÇÃ)B(bs|]ë¶åݼnÒü Ù:€u…ú¦‹ðhÇ$i–¾UâDÒ„Ë›ë¬+¢ó«áC>'×îÞ aù–¨"|œŠËŽ‚‡ v.Ò˜:„Õ»þŠºJË/[§•±Ä6ñ+ÁûG~ÍÇéF¾-V¥°EIFû=’OF?¸¤QèÊ1KåPMÞÆqq·­‚ItIi¡Šðþý:w[Á&?ˈ¨çµwòÆ ôSðÑÞYgQ·nò ÃÛ)ˆè5‘Ne*õ½@ ¬þ® î#¢E®dg£œ$wR°'„E6#˜Àt§Ê³qêyB-Œ-³Z [7¦^©é±sH­º :ªg'ŽI£X=ùlmË'²Ȥ!úsa¿¢¹Ûq8D©ðÊ^ð©H·3{í;”Kºé‚Eí:BYŠˆ¾øK_™ÛVø ýBeûò‹‘>;»¿”yÂüª÷49~em$–ìÆ?éªNv,‰Y߈üЇ“@°÷FQTªg«TQ¶µµ§[VÛ£y޶å¢/2ÃǯˆlV0 *<‘rw”ye Åû^ ’>Šïø½b"ü?W(&_ŶìjÎNçW|ãWôî )›+ê`8baKéw'óL¢’Ç«H޹éõòlv&7ʱE‚E”MŽó\¿Ê;Q0Tñ4•É»R¦^qºIÒ§ôó݇^¹Éûv6gëY ùY‚Y9§ë¿’Ÿ6Š@|ùz×õé«~èNÑc¬¡¾j»LŽyHðT†=KÅmÇ<_{=—Êê|W=ª68ŽÐC°pRíÅ2U“$>Þæív9ç·^6^’ÚËâ˜rÝ8åðvê‹”é%„Bù"ý×Ï’«*MRú]°"W¬‹¡ Cgý$³ãŸ¬gñ; üôÜcÝSÚϦˆ©¯~U…ÆXÉœ2‚ÔBÎë-¿r½qZë]1t2zlD˜Jx,®ð+{b‰‹£RYHÆ,‹å‰Õ= =>“±4Ú©HøEsÉMºóë/ÿE–ÿÞãàðàW©þ`3Çà‘=lm _‹èkd¿,«ƒ?Ôèõ©àÚ稀T cÒUïTêñ/‘W'ÒøvÑeÛ8 fWŠÊ“Ÿ¯*ýôz„Ôš¼í¿å/‘¤Yָï6®or¥Þæ<ÖP[lè*âÔêR1Å"ŸjS.Ì–}½íUÇ&o£äúûrçîTmKZ¸O×âÙžÒ= Ùøc$3L¬ÎÑûÉÉÞøÕÈüP…• ²Ì†I¶-±Šã.‚#ò+¦ÅwŽI°hM‹F¼!~ÓôÌ ÿé–Ë|JqEðgâç6àlr»Sm"Q5JwwÃñ+®–­dÁßܱˆöœeäDîDZàÔgmï02áH'P!*Zu@a €i)VIÒCn³£|ðò åÖp0íìWÌ3?xé₟9Uã4nPјEŒƒÉ…ÝXqüÊ+µUê]àÜ ÀJF5?çZ2@mDÈ9Eè“ÊyÜ˳¯KNÝdBÇÎn3ð•_W˜w©–¸q.REœ `ÀS kÛ(¥ìûü+:Å;±ÏSJÕ:!¯åº'áÕ à0¿:;ck º'vK¯ÅæH­ÎkÓ¯ÿiã„Ä]ÿä©Ðe 'ͺ²¸Ö'!â/Û›;¿¶ï§Ü$¾>uOŸ¨2ª´ò/ûÞŽ`Ÿ-¿¾=AX.¯îqÞ9ú‹ÀËåe»º´O4¯V\váeÜ}­/Ñ¿ä_}È.ûÙëGíò/¤¼7øÕÀ!ÍÉ^»T!?É6'êZBNbZÞ]%·˜;f³EÙ¬ån'WIùUX^”æå$Ê¿¶ñ‘2?G™Ðr’Ѿ9Y*VSR”ë×n}‰W„Ùæô¦øìO3²O.~×.Ô|) šop»ZÝç¿"ÚÞ…|Wß/‹)ØZx‘¡P5`ÂhILõää¾K²m‹Ü*(D¼ø Óµ‚jÑ`m§uƒ/mÖ%E Ãæ-i•ñkûÑð9ßÌêö#-©ç$µt¨Âޤ‘ɰíGecFôïó-h?¤ýƒˆþ§®- 0y>6tb6½ ann`¥ –ˆÈv—z‘Q#Ÿ~ -70'©.E$~´ "í‚»èÍÊHÂv<'§1u¿qWÏp·šÛ _²†%&áú · å‡Ê×È6‹<éy½ÍíºíƒÎ~J.1ßJâ‹è³dÇI•^sH߈𓼚2"$VŸ¨•f„róm±í>Q ‚;Õ’„}0G»¿¿½µ"ÕóœdÕð!²Âî¶5̧ˆwÕf +w}ríGÕg µ+» Ò8d_ÙsÑ"(r‹Õ_ÝøÚ,¿¯y‹ð¸ERëÐ- Aˆ„*Ášø¾º5•›ü²]rö\_ìÄeóq‰sv¼¾¼¿S"Q?¢7j?­W$5¢šêÊ.I¦‹6b³«dôna=?¹ Ýí>ÑãàDBOÿ6 –ý®åã@i>'¼$ëæÀÚ5 ßj†b]f'µ¡­*’B‘(Ch®.Ñ©Xq%Ë™QÙÆD¤ü§”‡µ×ÈvÂ#K•lq1²_Ñáq +d)¾üÂKŒŠ(—*U‰GñŸ²…ˆºøqĨ²?¾¿›âBO›{]ØÊ@ôŒâ㙳ixÎõ£’*ÓQ²çK]·â~—‹éW«ß¾ÖüßÅ‚ü9ú¡TUãã7ñ¥aýWRyÊ›µI™oˆb%‹‡,ðV÷á€3ç9b©š*±_í¸5«\°ÄæäÑëýë$rg%yÄ{¼ŠbŸjwZ7«†¶õl¡à*†·föøõpatÝQ•"j5EŠ9Ô‡¤¶w*¯"ÞR¡=…Vª”LÖDÿ”Ú<¨½‹­nðµtÂûûÿ»«\ÒRQÜ-Ÿ¿óö9ñºf2<ýËÝP$AGÕ™‰­‚®Ù7Èð;VVø`¨bIÔE²µçš]úb#ÂlëŸF‚%¢ÔëÐüŽG ‘œ_† x•\­Ê3Ûb6FQ1M]!3q“Hé~ǯҰjòèþWH]Á]j’tu¨~Ú-nóöVŽžü§>ôHÛ¶í‚Wu$ª–†&’ ‰,ý¨½;“¾òñÿÕ_O=/Íø[+µÛã•È¥‘¢¯\š0¿Ú:E0íÎ<²ÚÇ* n²{Àq’‹ì@®T ñ — ‘  @.+ê’¬J¦$ß ?ø´U×*^vFƒ&³€6s´5Fž2h…îÈL‡Ê¹³ÓÜc;ÛÁ»`±¨Hƒîöñ§P¬DrîÝ „h+IÒüYè.hK-´¬ïFuªOÐä5¤w«ò?“«–̬û’ÕäìÊ¿jU‰ »r)u‘–eÀøÁ«˜¾§‡Ÿ6­â›3sé¾Ú¯¨jÇ„K–¿¿š/¢«eÓ¶†ól »vÝnUZ5UW˜OÞô9I ×2[•V”,M™¯ï”ܵ‚9ìSØ`ÞC¼K»Y'ÆÔ!NR-Ä[=ÞZÐ6n¦%QÝø•!õFúœêÝÝ×'_Yñ/Ý^)q²Ððê'½ÖS¸®ú@sŽi¡×]»tù6¯ï(®*»ñ[è{[ìP­fÙ=ʽÇxëòر·§¥s“Ô†Ú¸Ï2h‘­«·>ȈĖÐHÙWš]L[_`óq'w©‰/=ýÞÂÖéÞtÛNkT ¢LÛ!þcÒ]WõWOÔ.$ð+K܆~Uå“‹VD´™_ÕóRÙF÷£–=…þâÿ»æ²¯q¿ê¬Óü CBp]ë+kp÷* [Pc¯Q#]:6ö57!vINGÛúE|êÖÌŽa?¯u÷=_u–9ÙR"úÄ…M‘«_ÊÚÏ\ÿ·Ú4î,š{ƒ8'l™vü¦ÍwGüþ*½Ïàhª¾oøfÙdJОÚi‚l¡ésê¤\ñÚ4Úí?GËÓ áò#3æ[ õº)xµnûˆ«†!¤mØÜh0ïïtŸ%+z:ׄ‰ŽÄÔÛ°4R9´Ë®äJ…×Î,gTZ$:E¬3d€€>ÎÐæ{¶A[·ð[MÖÃn²Ô•ößU®Å+=g»>lAéiIrFÊþ3~Õcp£*¿1{Õ´áéb4¬UM©2›úüÑfÙ°é/—úºJ®ª ð¾~!­ØýïN þO« ÉL J- üŠ¿jÝŸ¥Ž>= i¢“j?E-ªÛnã¥Vm?e kÓ›"H†µ–õÕß«W­Kò©±|»î+ß³µéÕÓ¢h~}k QºxoÙqçS­ÖdƒñÚ%«:Á®a«kÁ :Ë}@9Z?úÈÖÙ‡{ŽT×$îž°iͺµx{3…#äêyo8¶­bk凇„ýeGMÍ¥Ž| ÙÛÕñœ¢)Œ®<³±„¿MS˜6B8ó|0Ñé&iPuÜTœF§XèºÆÁµ1„œ(.ZpL{ªO$±Ão×Þ~R)Ñ],Z}[v‘z²4‘û©€½wßß­¾w?ž2*ÂO?Ÿ"r<"^ªM¤Ø¾³#Ô.¤¿« 2Ú&¼AC;\7(‡«…NrI ݬ:Æ‘Ú4þ3\d¾ÙlÞUÕKcE€\6óœ§ÎÑmHNc–ÍG«m="R,Y¯'|NP[‡dªfH’ÖÍCR<ª‘_íŒ%¢A@Œ_Õ?µm{©›¹¥Q^Õk®ÞmÙågå`3 ÜGÔ)A55jGtÁê‡OŠÅñ•„ "W€.¾Q# /J†j>RŸ—‹.K¢ÝãÌEL[Š ¤\Nî ¾R+‚õ“&…gp_Šâ/MæHž³lÕl¥taj§Xn#’I–„|âvÝ̈혊¦<Û­‹ÌÖrM`›Q““­„™Sz%Þ%+Á=vü´m@VÕ}ÎvÝŽH›/òã;踓Oâ§Úâ_ÈL9°¹g<‡ÚcñÕßøãÐÍ^LC®âô;`]°¢ê¨Lxš,¢­‹èïC/šu~©Á!\ÿ 5¿½}³îcœ—ˆÍæª#_ÇŽ u\?i²l½,ÆÝµs±™*º¾þîtû3ûÇdM(ó/Òaš¦Šºˆu¨K>e´ƒ ÕG‘æƒ Ò¡6ñ±]kk¯íGíÕ6öhɯDM=‚!²}ÿ™U×;õi.xm‰øå->q$-E6ÀŒ:ú ùUð¢™ÕÈf\Àd(¼n÷£dIȧ(O¡·‡ExÛ´<>+d‹ºï6”£Ê. ±ˆ˜ÒüEãcðÞtUáCKܲ©qS_ãgþ³&Šß ŽUêóÏ4쯾xÞ¾¹”Æöµ¥[,Ô<ÏfH7¦lžËàn4®¬/ûÇÅ¢í‡T}VÍ|i¹¤Õ\Z8£V=f·íý‚Z¢(IU“áóõÜæÕÍ1µît“Íù­1¨¨ú?ZL±rfÕÇþngÍ`>Ñ’¢ƒ ‚sÙCÌê{ðß|ÀÈL‚ï%´n[‘uäÊ 3¿K„ªçǪ¶ê9I4ë] â¶8oI&E”POõ 7ëV±Ý!É´ºñ¥[„¡üM%íEùXƃïÇç¢L ¼3| Z=ß¶|[4¿&†¦3pÓfî¾KBþy­edøpðy* 6-Ö:B„´ª†´ê}/ú ždãÍý]µýmw"ÈS}pª;†“€®½hÙÒK«\ªŠo¥Ð‡›nR+¥v^›Ì$ŸTèú>ÂMÍP *î÷÷Z^´ýx!åšÂI‹;hbìm‹5µÒô‰6ó¥lèð:»ŠmîMQ΄ ìMzëµ|»ÎÂBµDJ÷ªFß¶ö…šW80†Lë_=mqhË»æIÄ^$*—×[ð$ÛâåÉ¥—@Ä_¤ÁÉ{И–D¥°Ê£U½°ÙZ Á•ÅóL|çh ºCñ”lÓ‰L·ômW¦\X±âݯüæå´*57øŸ›+Ê[¶&‘D]S¼lµ#¼½µ¢XíkÌ_Zª(VÆ¢Ášòá«:ÖN–_Ùæ®BU²ÿýý;n“üurRûT—Ñ«ëWá»^HÚúŠj8í-¹­ÿ#(65©'q¬lQðuµ·×/Q¤×Òè(¨e/uÒô*U{:œî‚Úþº¶†mV`’Iû%/¢TŽaëï„©\a¦¼ã]ëæÐ«©“Ö mqGáÚYå^gsó)},nb~%¢½¢RñQ(Uîìqª7€Î&§¨]ÕhÈSÆÊvŬä a+PõGáãŽ|Ç[Lk`}ïãû¥¯êö³ tæšÐÐÚ´ŽmbH§ÞTS[¨9ü¶H_V{47ÆÛ`wµ+LË(úÝÛºÔ¿2h0‹—5î Æ£Í–"!k< ÅkšE‰‰© e“ž÷á*”ížù_r#)QÿKý_?WL•–J%“ο†åQ5V Žïòbõ9Á¨ù›VÈ|˜U+‰ÎJGiŒ!©‡vº¢fs³3sêí•¥OSô÷øÉɺfíÍ/;ûŠWz%†Öã´¥æ6D¯ è ¥Êã¾p¦eüªñ4¤9‚u? MÃŽ^ [mNs˜he÷º0«ŒoH29® q•{™·FI˜’Vßñ¥à; e¶o‰G¿ö­=Ú»$½Ùœ™,R·MƒtCÕð¡ötÒ?ª±PÐ'lâ¶‘«p.½Ï€úª„`rÂ?¢U,ZÅXV›&BB/Ò¹éQŸûˆå)6³((¬h¨Ìºnƒ?³æö‰­=Úè—hMâÚ…ýßÞò~Íw>K¤ö``”žŸu•ËëÚf‘æ3WcçÁ]@ó_µ!HÒNÊ>/Ÿ%r#Â^i•bV²Ã­5DZŒt™~0Ð7ÃÍHT«çm}PVHwJ­B5Z]ë{õ·×õHÝ®{sl~¢XÛ>N¾L¿ ¥1¸iA“5ÍJ½ºÈ˜O²Uƒ”׊= ˜U®ü™_ïý™„Yù³ÉÀŽÍ²ÕÖ¿«q˜©ªÍ«g±D§½™ãÅëRu;§T)Y4¬?fR¤e€ÕcQµÒpۇ߶>W*/è@¯Æ×ÊÒpó0K FQ‹›à3Ž_å¹K¥ºŸíì3º˜W ¦"üÄK9$±$­±ÿo]´ÇÜwøIJí,i2‡ÑšWíe¶ôV/Õ ›.UŠR ¯š¿ÇùUS0ªº.%/‰ü˜-³:Ï™YÆ~‹å­{çˆþ×®F¸¦jÏTÊ·n BuæÆšHW}h¨jöBåW4yP;Í5¸Óäç¢ç¦…÷#/ºO6,n}¯ÔúšpcV¹#„ø©qX‚åvXu'WïšôSª†%Ð8º'£Œá$51Ÿ{ª³%IÁ)Ý[¶Äúå6ß/‰u|Q nŸñÉ÷wL:†Ùnm™mó‘ñ‰‹|=£UÑòãÓùDa• 5ü^=ÕÈÔ«‘¢6ÝômFCe"ñ«íGÛon\Rd»<]K‰mˆ¾xLxÕ»sû„ñ«Üæ]5vz×¢/ õ91J+H–e4©ììÖÂÿ¼1>óðÎþ_Ûw¶Pe?}ó-¶}¡%„9ëW%cf³k²Rÿ¾£•©šo;}ã €‹…:<Ê;Sˆ×óƒ›ãÈÅ€eüdsF›•6ð“mÎ">‰ѪJ¼ÈÐ&¦Lá­ô?hncúÿÑt­¯_ÛÖZ5+g0·¬R ·úªäj )1jÉ¢zª¨°ÞÞÊ÷Ð*lØ ~¼ú1ë1œ”üBUµ9BXE~@]I¬¢U¬–~,;ú{:]Sƒ_AH¨z‹ƒz~¬Ñw”dbÒø•¬ªÎPšPÙ¾ƒ}ŸTJ¦¥’ÒN…üDêÕBU*0˜0æÆð˲c÷^­úQ#Moòƒ2T½õ¬ª6 ®€nK´pÑ4µ ›âQë’|fWõ@Ýz™'ìÔ—Ì¿òN¾ÞÝ×uOËÏE÷çl+—'±É7ôè$$öôažŽ VþtòPÕâ8·q¹lÖß¹rÔöê½Çf©—‘ÿX'ºÅsî©ÈÞ˜•QÕŒê‹àªb­ûÔ[gƒm¨¹ƒ¸ý¢³h@þ˜žøUn¹ŸŠÍI|üãpŠôm}¸©ÎxS_£·~ˆÀT½žjÜnLÌ`Þªg/riJÕÅ«ëΠ즧†Édéæ³Ë¿Ð;˜C¨¦¨þ+²®›+Õ ‚Ô¦‡ïV×G¯eâLë@~c)R<ÿ”F~§<×4‚i]ʧrpÁ.Ðú;ïÖmfG+{ÕÙ’7÷ð5¶˜©~ƒ2HQ6ä×¶íbJ2Ô|§†ƒ­Ú2Ì-íÀœ˜R’gñd! ZibM^¡“}÷i¡MÚ½`!eHê%‹†Vzú¤^¨ ¯n²[kúÎ$õ·õq¼bL’&Ì…ç¹–))v±®MTIEÙݱ²ÅBcú´ ¿=¬ªá/³ÊˆäçÙØU¡Nš^ü»VKÖ¨›Ú,J7Ôíu³¿$«Ú ŽA®Z¹"h=ªºtE*t5qÚ(Ö÷‡P\1wWójæñ ‹Q7…9W1ûM=± ¹jk­š,Ûw¡…Ãì(]«ºô*{{ƒn €fl¯9)6:߀[^l[cœ~ßÏåÉâ@UÕýÓ–ê¨DÛ²†…Êoj~Ugr¥×YÝÉÚäî€ÛxJ·ms½P5hSWôw´WÏ%C„Š$…JVµí[ÌT}¨ÄðÄ3Ñ¿j¸¶aIe gTìEuôû»>S dÉv–Siú]kK馷YÖꬒes‡Á ±öÛÞ|éèè±½µÂ)›E½3@SÝœV˜TR¬ ¾+MPþÒ|ÎÊtU»µ¾ˆO.U®p›[FhZ67¹tѼ¢ÏNÊ3·¤`xJämkÚùe´¡½[xÕÊe3ð" á1X ¯M©º·7¢Øþ±9ŽK$øxäzƒ¦G£¤MFrò¿Ò¨˜Vm Þ}°š}«ãNËßô7²®møMÀÚ릂o[Q€öëð[ÏßzkôÝM¾O£Ho²&0ëɵþWÕR»]ÐÊÉAÉ××Íû] ibЈdYI™ÏŸ»µId/K&¶¹’¨¨ZÄ×DT¶F‰»r"ÕQ,y8ÕE¥ JxÕ*:ÐËѳ?70ž +4Úr]F,Yi(ÐwËã•êÕbâKt~õw2DÒnÝœ»™Ÿ+[‰KœÇ¾ Ì^B5Ðd BÛlêøR#Õ‘ëæÖ{Û–Sp‡\ Wûîí(dLþcº’––SÛum•ßýUIXN04]`ê)SUãdpά*ÒåÊt%ÑÿÚ’·è_EŸvÞ`A±¯x°L K1² Æ®17l>h¦ëºd+Î%a2ÿ䌼e `z~µ¢ñ«]k~%è%„ÝÔé¬PmRL Im»öÔ¢àc·4ßv:VBãͶåKfûͪÄÝÌ—6 øyà¤N(^å9Éš¼ºèZÕ ¬€9`±Ð9äº08m?4®Ûð½73·í-ß·V¶¥È÷0lƒ¦RON«æ›«¥/:Ò|}Q¬Œ\Å+ @[D¢T^i­Ñw`V]¡dík•ŒÞ/Ë%Æ€×ñÿž†{ endstream endobj 637 0 obj << /Type /XObject /Subtype /Image /Width 800 /Height 252 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 16404 /Filter /FlateDecode >> stream xÚíu€UÆïKHw(! Hƒ„ ÒÝ¥ ÂGƒÒ¤EHK)Ò)Ò-¡ !! »Ër÷~{gîÔ;sïsfvÙÅç÷ׯœ33gÎ;sΛ€ÿ&…Þ)T0_îœÙßÈœ!mªä¯% Ƙ qÃEIŠAÀÃ-|$Æ àá®N>B1(x¸§“l@x¨“ žPñˆÂ˜ Få#c€Äs*$œT>žaLÐmÏcLð¤“<$ÐÉÇ¿<$ÔÉÇm ’èäã&Étòq ƒ€‡”:ù¸ŠAÀC|ü‰AÀChƒÆÍZ¶iÿi§.Ý{õí?pÈð‘}0(GH™«dV½ßÅH ¼ïØoÖì>{û…¸°ÿF…tÚïDŒ ÁQù˜@Å}|¬Ã€ â‚F>`@Pq@#0 ¨X§‘ûTÌ×&Ab)TLÔ*xÓaDPøŸV>òaDPøD+å0"(ÔÓÊGmŒ ´òÑ#8H_¹ÛÈWòÆ jåãsqô÷ƒûvïÚ¾eã/C1;_>Õtò±†µ‹€LåÚ|±ä7¡<Ø‘¸zŸ‡4÷xÞ†ÓfËU È»e+~X£nãí:6ñ}tžÉRù´mÞikõAûy]'ŒÎ­ãN>S5~Wïsƒí™m÷i‡í¤¯ÝOÃíÊO¼9µ!b9ã5ÚøÃÔ!Ÿ5ªRäuÔ½©…y4ÎDLí—h[§£·¹P{>N”¥påFŸ¥ñÝãvíŸó¾ë¤­lî-;Dkò 2Þâ¥iصcÛ–Wò× q®ÒÕëÔ«^*s ÄÀìk0šw˜ÚÔ6.GosŠö2us?IÖwÞoÒeØWK¶¹úT<¦´ïÑöxÙËaæÒºi½½Ù’÷-ã-N í›ùŒ²]¿Þ{[)ävqYŸ2A#¾ÖÉGK¦öä­×<ŽÞæ íeæ‰þSÒìŪ6ë>bæ²mÇ®éjÿESÓw?šI–[n£¾ßÕ^:lAŽ›iñI~`|XêúÓŽ¾0¸Ý;óª¢^®žîºÇÔ¾œ¶q\UºtÒ^æ‘“7"\~hòbsÝ28¤Ò£~ïxé°9n ã-.'í óÎðCNïw|±v.”ʺQú…©}&mãqìöRå*U£uïÑ[]Ìôaz]ëc«îõÒ±ïú¦–ÞSÇ&Ò>=àÝIWüÝóõvXfiÉ £+lð©¦ñÞ8qS¡µÚöûíš=gï¼pq3Æ÷9¦i~Bþ]ó׎?1î° 9ŒÕîi¯uÊ>ì’©»> 2¡á®nˆ’2µ?éw™û$uÙÀ×¾Ï1V{ôsÍK£îQ{ùÆ6&‡ f¼é3Þ?h ›ïŒ2{ÛOÚ@&ÔìÒ›j¶ñk±ô…ÈúnÍ6}GÍ\´n÷©<ú?·A>Vû¾‚áäp•t4<å³ã?ÍÉ«“±V‹ìúCþGžÉÿ2Ýø(ìÓUÌÐ[tQ+ŠÙ« z³j×éNþëG‘yÃùøÕ÷•ô'‡‡Hÿ(sÐ_ÏY ;lDŽêÉ84Ï´Í÷ˆ ¬±1ŠõÎçA@>Ó Ïd+š¡z1v¡‰Êõ[uÎèÃ0Áߢ3¾/§9Üã—›c…¿~Ÿo7Þ 7$Ç1ú²%0úü%érçÖ§ÅÈLœ%‰*5´hÛ¡ãg>ý¤MóFµ?,_<Ö4‰â²|”'ËÏCß³Mñ´íûÅÈEfi:ý÷HoOÓÀ£i‡ òág+Õ‘žÂýÇü¨-ªëm{×ÐÒgÜ‘–4Ÿãpd}óÞûÛùÉÏQ­ÇW«]}æýtÎÇ7/ß·en\”ÔÒE†ûa@ÍìÌŸÖºÇb7EGõù0 ¼©~´A>"}uIçpw½ë³Ç§‹k'ôÞaKvZG.ê‡kn8÷½¿(oË“ .ÚuÉióWqÚÌk A½X›®È3ˇÔËéùŽô÷2·DÊ®þ×JoèZÍæ‹¨{ìÿyÞ„êúvK¢ÛéÌŽÏûê×¹µ•oÝEk8Åiõ[§•—õÔV\À»#v>e;©¿¼È©ëN?å:ËòQé-k!µ5÷ø—­×–iZ˜‰q­¥k÷%ÓsqÞ9·gí·ãúµ«U6oZ³¯‰Z¤“úÛ}â€,þ:¤òQ‡m¨ª¸le¶¥ç–°Æ\É_ïÉZSŽ‹ŠgòøµÁ×Úm6Ư§žfj\‡éZöô»xºuæ×Õ_éÓ¦féÜ©¸üW?4ÿܟί`¢C*±]O}†‰~aë÷üéc³ä,ÌÿÜŠÏyÄ%“«¼ô—¼ÆÄ#Nî‰c â<¶uÜúŽÉq]«kÚÒ_ëVâ fŸú±ŽÉLuHåã}¶ëé`Rë°f@µ×¥UÀ›uÇõ¢þÝȽ >ÎûÍòR·hÉ kŽ7/™^Ú«¯î{{UªùÐ…û¾6ÑíëæuPWu«{Þ“×o_>sd÷æU©µÂz‰Î’æÞÔ K›íÊG¶ëéëÿbÂÖw˯o˜mèMã p)'?á_Ó}eÜ'ñäqŒ_òAâ]  |£R‡1+Žz¾»Çü÷Zí.ÃÀê6“Yº6ý hVÕ~¸"iñ¡åÛ.lâº.÷Kc¾C*¥Ø®g”?¿‘¥u¼yç&êg¤{ý†}L²~gÉqa´q¯ÓµñkñJ> h¯~*1[å©Þm꺳ڕîc¿Ê/™Œ¾Uü^ä[¶giÉëß_‡icCíEÙ®g–ÏÏØÊ†>]×sŸ00Õ„2ŽHª‰á.Kx©+œü…í/·Ø$‘v*KÅý’®×oî¶¿ŒµŒéý˜”æ³ l_ÿŠ0Ò¢£åÛÎæÇJþãüÖÉc"²¥Þ¯åD·TþZ§ØÇ FWî[Õ™uñÒ5õL¿X×5VÜbÜò9¾å!ËMX°nž;´uÕ¼éã†÷ïÖÎÿT %ÍX¾ëŒ¾®îþ¨LÌRù`Ttlô¶®škj¯•ö/]Ë›]–iå¥ï/Èq{ã—|ìb‰>W¾ÄãúŽÙ½›Uy+-«Nö±¶›±–ï:¥ãZï¤Rƒcv¶æÆóój¿”&Ûëå.š?yРHl.u½ôN7‰â•||Ç>Ã|õ7Ä›úeÇÐòIy/ò/»Ý`y»·smùL@Mty&þ02H7b¨$·F×Ü´r!û^ÿüß“›¾Ÿ8¬w‡–Í›6jܪC—ÞƒÇ7©Ñ¥êƒJñC0|n1|òƒ^knÍŸ-®jåZk»[fùæïì`Þl94¾–1U’^ß·m•ÒuPÍd˪¾wÏNi_Úè36—XÂÛ 6“‡ÇqÁpo1øÙbød¿uý#ϵöÉ,^2âMÖÁH•¹Ç‚j…æg`s£ Jž eX/à4½›®æÚ}îãé<0¤¼×ÕÕÂä÷v`?ràÎ8,d+†n{ïß`óaGÖ€%¶Û˜ë®sGE+ýÑü>l‹ìä,+Xc†›¬1Øzx_^‡¯jás‰¶Œÿº·‹Ò•vhÜ•d¶¸¿yýèGM²c;ö•¶S2ðÒͦ²Öú£>1lï„ì¤ukö (GG~…‰F ×zûrliãï ¸Æì3—»òá¸c]:ÂÏæð¶L8K}PÝ–«Îüd†kÚ-gþ"%Ql­é+–cÔÒãfÿm{ñº;6»JÚûÆó ŽÃò±ß‚`<<²|tûН{ßÂ~¤ó§+lÏU“·âW@ÓJìñÛ"t“±doS‰æˆl=õ~$ âvm}¹":ÄÇ?àŒö.Ú¬¤…á6ênW¾‡æ–V÷F|:–‹Û»Ø|p´ÐìY9®`éÃo$Ráâ*lXb®7íMïGæ¦Ó"äeí.Ju˜²õ¦Ï·Ïp¦Ð£¿¶ÎéW·Y²<´}»nŒîk2ZîñˆÍyR£±}Ãòd Dúð[Íe†Ñ#_ŸsÿðqèU&Œ˜ qÑVãÖ_5aßnar‹ñó”®Õr3šÊzÄØw´é9ŸÝëÌAVûëhúmjÄ@âUÂs×W]ŒbÁ:q}}®¾·Ý?ˆ‰k.j”Ø_ú8¶´?Ñ8½ÅxƒÏJ¶žte_¹„œÖ¼Ç Øióþü3A-,ïþ?mø‚ùÛŸ¿g¼õRAþ܇6³)zËžµ¯k¥cÓs†™ „ôŸ°ïSrÚ†½³Éf›.y_fk=ÏûNK“ñ®žMê5ý£ßÅ”ÖAëØê³j*õ}«òAµƒ>3­<¦[ âó+÷e\A®öÝa 1ò6µÜãOÚ¿°Ú_7KšŸ]†QL4fŠ2Ø›¯gÓz«Æ"_Çž¶=”…„Äý2—q꘼ÅX7¥kõè-Q:ýÍ}¬…`û„¤Jël¹Ã¦‚߸÷^§ØZïµà›.A=ìǰ|l¢ù…q·IÞ«>S¦L'çê» ¬S ù V><²BcÅ ~fü)L¨6‡w¨MCäh¹ÃlÎ@âø²µ>Ç0µÍj^|ÍÁzﻃIÏGQÇû:¶69Ùϱ+ bÇt9?'sò^EWÒQïÔã˜h¹Ãomî°¶¿Cl­ok[÷¶cê«ÒÁLxüÍZ›5!é`ˆ¯ƒSõñƒØ-*Ú›9bUE}æpp/Ð5¹m¼Ã6,@|Í)Vû#o™}L©ûn v@¾^’9uº«Hf“U™øNXÿ9ºH¬Êc*žZ„4nÏ{t}U߯;\¬ízµå'k;üÊj¬h9R‘«ÊsƒÌáè>ì‰LLÓf 9ºG¬ÊG+!¾Ô¥w$ïUÔuùÌ…b âÀ»Ër‡¤€Ô,«ý‘ٹݒæïž+˜`zšK÷ù8®p¥&©F>&ulxÁ1qÍŠwqé]È{ÅÈܱ1YéHKê!Fh;´œœˆ•®âfC)|A+D{]Ÿ¦ó#âHšsÉwÞÐÄ$êÝØ-âCÊÝ»Óõ›‡$`ÙÍ{‰£bî#ÚË’û†-¬HF”¥Li6à„±°Ôpr{ëêÚ\´MÅKèI­vØÍ|Ê S|ÉâÜAéjÉ9ÅÃïÚNNz=æKp}Ísºª 6·hÊpD7Úõ,ŸÄÒ¸µ]v½Öz‡7»ôx¬¥—Òó©¶¿%Vûcåñ³#¼þ’I A h•—çtuج]!me ¸®gi\ήüD©õ.¡áŸØsƒo“~‹Ù¼`ûÑjãµý-ej<Ý÷+ê‚ã5u¦å C Ýø Zo{ˆ -8Hg&WÞ–û*ŒÂ™—¾nÇý½n‡…ÀÇ’Õþ&YY¯ëÎ÷\¯Hb¢žîíÀyô µäºab Žò§¢6ìOcU>¨‹+f@˜]¾Þµ c­&¦¶~IH§Í¬vXߊ¾É€)Úþ05ÞÄàÊä”f“ КÑaI¸n¸;£Nš¡Ǫ|Ð`0¦Àï3vérNçueýBÍÝ­öW“9ÙÓ‰íð› ÁðÔÆè-ǽ.hß ÿOÛË ¿sƒøÃ_Uù(ÏdÍ$¬³Í8ÝÔKÐUäX4ݲ9¶äCóÑo¦˜É|AùÓ†.µÎzK]ƒ>›n|7LÒ²_ðÛ`¥]~°<¤°’€oª¥ØPߺCeK48›•$à3­XE›Œ¢s¬ØãIJËy.€zp”5¹pq¦`šÄêÐß™œ·Ï£$Kž<™^¾W,èOºÛeq8²<ð¹µ³m îŽ÷›ÔΘ…èãXíï þ\!v¤÷hlÒAÓJ?åŒuÍú‚Éçò»EK˜¯ê§£¾ÿå·+÷ÅåtÔë'w¯›Õ§ö[I¬>¡yÜÂZÜR`SßyQV7äL]EÔƒÛ¬ŽWqÆdQþ˜gÁ8ƒ$A„×°ÔÑcç /dÞÅšêWÔÿKZºãÔúH•}}uŸÒVòö’å`˧© ¹–ÊV&J?ù/¨ÆóÆ"N0ǬÎçB6ç’ ÓeK[RÒ•Šçˆq˜É…*·6†l'–3?B—g½êƒ«.™*X¾w0wýñF ÌIìŠ1Òtp{2ûš—臮YÏäkÎj‹-Ä[ç'ײ{’·³š˜›7ó×f…];ræVŽÀÂ]dKåyb_Ø]~ÒS†ã´m¿´4SF™¸Í£=¨F˜|=š%§ §Ô,·¯KgîØ±Àóæ£B͈<©â~eþ`Ò$õ‡7ñ•ÚØÎc·¼ß^g¤vfêh?žÊäCÕ“4·ºa{Ãfmü* &¾Oìø–ýdΘVa¬s«p˜=ÌŸ.›8ÞŒ}‰~Ô‚Oæ";üãÔ †¿ÌÜ勹 eb©ïã/1ƒïl$ŸSÑ¢?eö˜{þ©éS(ÃyÃgÙ3Ê|ç²Ë5X¯—Äïaiû…͓őôkSwùôKÓ…×jÙ‚ê}ž<´zÇ$B©È÷+±#gÌ%¼£º2nOÏ«ì±pÍ]6²’±j_ !¶íLêxÿ˜©»¼þ‘ÉþÊÙœ|ŽD݇[½ßM¶pólpO¤Þªf±É\z0é1>´b[)²¯6»lê6癳RýƒÕÒ $}S”ÕÛÝf!Éñï™ÀuÏÍ9¥³K>Â8žÇ9[ĵޥjf !¶Ùc$3O‚–GÌÜ埦B‘ÓÛŸDú³Z3r—h¢ù׊–ÜOE“ǹÊÚ3~¦|bfÚ+®s,æ{æü7 •_$°©¿Ã&Ê. 3¡É23¶!VÌŒˆ²wII2è2ÕK¸Àÿäd²‘ññVm9˜Ž>g*üdà÷.£Ì̈G8Œ úð´»;d2úÂ’O¤!Ïùi¯Åðžè¬t\Ð’%Ì4Je·€8Ígò'å²¶°Ü퓱Ë\ävÆŸ€´baËã$:‹ÅîŽð[¥ƒÉ¬áJðú¾Y<µWá»_šÎ\eã&V7ÎÞ¹nÅÚÍ»?õ× ¿‡GÖ1{Å,x`|gŸ‡»ñîzè)ߦº~»8ls@Ó}{£Nðï!èÖª(Ïù‰ûîm³ ANm™£0—?ÓdýÄêI]kÐV^ É]£çÌCN_S'Â챬%í`òö uØN¾¡§})ëüú “È’#V¯çÏûÏ´ù%Ÿm ®s2$ºÂ{‚É¥.[<—i¾žô¦Z}lüô/-éYƇ_wšf o{Ÿ:aL®ôyV„¨å&¯#&xgê¯w¹ßŸÇÀíñ–3(^³ÇLæeý9CSâžèâ ’!ù×vz=0ŽàËKÍ æj§Ð} œ‡'Ôð_8ÜX~¥×¯È­Œ\O¼…·A GÌ é>owéoFͰ/ˆKà/[Ԝ޺c !¯GîŒ+™äÔõž¯¨‰=&4¹I[IbQËüË ûdoîŒ;Ì|¿™‰Z6»;bŒbkŒ•wý8ôŽ0ްë…oÕO^N,X>µàù Cüë½W;£™Ä8Cù[ðùS“4a.¦xŽdÃÃd8ϹYrÄ„[ïa¥ÐÛô³dïn³ƒÉ{ÜX½lgX ì‘TÙ—¸Î¿Å¬Kà#[6 Dt×d³êääŒY°òl7Öòš²¾´Ò6ú‹åÄÄòÿ‹#F©cäé|+Èg›.þ7´ …S‹ÝýË/$ ìw®ó÷í^ÞÜê²c³Ù—Oã™4Ò¢š¾•áö3«íwˆQ%D‚¬ÍÎǬ|8Ž5¸ÉŠ>›” G[Í/F --v÷ˆ?üf‘ÕÌuÓV?šI¯v/ÙæŸ5ÛŽX‹o0Ÿ8í6#ée¢e"²Ã/ÎpVâãõ>ÕÝãt¦-Òß/€ddµš'8ŒýyI×_¾Ì榗‹ïÐq¿“˜ã|9i£­l@‚&ÈÇ:0Çü‘“ýlÞýšØ…Ü ÷xÅ·†ï9—ÅÖ+{íÕH¼à—ò%ã*e•ܼR*àºË_O’ïËt½Eš¦‹ç½ÔÏ@@Ì$T²ãIW÷•c\>ÅžÑ{ô§÷£BØ»luÉ pñËÇßÚ¦\¥ØsštOt3•Žû Ž`e²(Üh¶]âç6,“»x`˜HÛ0‚_UÌeïrà ƒ]L.ùóÉÑg¬}›‡t=!ä#Ü÷öRäü¾ªqÒM.Ž’¬$ÜÝ|½ÍÝV7 n ¶¯ÓM¬éYÖ+ZhXòØXÄÄ#ßõ™ÏûÚ¹`¼êoñ^øå#)Ó(x¡K8Ëa‹» ‹(Z™nHíX\ézVê=”ü'Ä)`Á‹ä] òáøÖŲ²(MGä'K'_o«¿|r~ù ‰×›òœ¿½¶g>ÖUÈqb=!I9o>wE[V*)®èî¡«ÿ)¯;]®]xšRëÕ1βßLâšð†%ÖH§Ñ~“wÔÉv‘PºeaÐiÓî§cX<ˆÅÞÜÂ"d¿‹K6Z¬%ØÒÝ|Ì•1ÀM6'c:rY¯>3´¨ÕE™›2ã”´ üòù¶ôk‹|ÆíË“–S¡˜•]‚¹Pý¬ÿ²ÈÇnóòam¿UŸ[=N¿~6/Öjš’Þ¾0ݲ5÷—GM³Ù„z¹3]|¾0¾$‡gdºÜ6m@¨½ÏjÖ…ü¶ÉŸiBªÄ1'évèˆé¬å¥›—Þ»ùÖÖˆb:ËÍ×W£oâž<§§ž¦‹÷ðžÛöéÒ½¿²H¹mWr¦Ëýܦ H5¡û­ÒC¶>Ç-lÐc0I\‹»º§±Ï|ë×MËÇ4óò‘ÏÒ}Âí9IËÅ·å9ýN¢œ7Ÿ‚±¾¯-÷æÕOfJûçbKRZ® È.V·i²OŒ`ØuÔ…%'é(iäë ‹g†ÝfåÃÇbår¨µ‚Ÿ]¹§ÄÌU—çô$ãCÓbW|ŽàómŸ—6˜ü$ÕÁ ÆÕõ#›6 ÔwmŒ¿9ù6j7éØLá®g˜=‘í­2"Üœ|øX¬|m>㇠ú0…BªÙaGf ¢´`ªO‘f£¿Q|¶ct“Ú7íkáBëmÚ€Ða÷åÆn(’˜«Ë QÁfáx­Æ·wX÷ ÆäÞbJ>Z›¿Û*–îŒntÍ'?>úÅ4zé³éI¶U|ŸCq|ÍÔ^uËäË |MHš·[ŒÜϦ Ýö­ñÛâ›Ë¸š²º1¹ý†}²‘µÁ¸‘^Æ~#G `Õ&j-ïííõø‚ÛºzÏo=jHÞÃØ¾ÈQ¥ù³Ûž"v„ËŒ'|צ ½ôŸw±…zœÓ­ F`–r&m»ëcÀr…<8Þ]üÄߣôñìµ}ãÏ+—.øfÖÔ £†ìÛ#‡¥›|»QÓ­ÚvèØ¹[Ï>ý j:.%‹?&A†sZÏÚAðçO]V8Åx¾ ›6 ¥X è4„ð/–³˜‹.2¿ÎB^KùÍ‚%ß¯Û²ó€‰ 7»é·†ÜfnÓ\âF«ùìúmG\' ½dž˜zZ¬†£8c–¬ÔÎ<Äz:›6 Ôâ?M]] ŠéÔ–…Ç­™.¸!û(gɳ#¨XÏU¯Ûî]‘:ÎËGÈÛ•t8yÁ//ÞwÝSžN¨§çlžNŠoà—¬'ëgO HNæõU^+j™1F÷¾£¤…/½_ºØ1ÉòÕê4xÊ?ý²aóÖõ˾2²g³Jy^sÄ7‚Óå+Ë0Ü—[{¦U¼¯ãý†0×Ã(nO ͵í?YP0ÑEtbRõ/èw4óR<1A¾÷芇q„åwËLäÎÒ’gÖ.ùXÎüÙÈ:± ©À"AR·Ì²ô"’UûTL§Œïu÷ÓùHýÆì*“&dHLn Ù}\¾ÉI;àö"Ñ¿0zÞSƒÝym9·ß†[¬ó1ÿžÞ¹zÅÒ¥ë~=~+Ê«¦}3è.{SÛ¶Ûš|&çÿ޳ÊÇ æ“Ð71W^[¨‰e)ìó˜­êÛÏÙæí`ºù5k)Ll›x¯MŸÑsWí:uÓóô>¶Úa¶.˜¾ìºáKÃ;ˆ=Œ±‘5Ód6ùÐ9@v1×îŲB˜Ö1@²ìÅ«6ë–ÍG©þ™ƒ˜»§%\¹Š=Há-Ò¤ã)'°í¯ió*fZ]˜S9T¬û÷Ç̬(:³÷M6 7¹.T¿g¢I(±Ç cSŽš }mˆ/HÅã7ð‡Åxÿ ¹ ò¡ ð¹n:5®t ¦\|$Céf=GÎ\¶õÈÅ›tAUÕØû£žD˜´˜¡©Ò[kµm8Ÿ4/ú”u^]Ýž™R7 æÙ+AwŽÔ3ô5L67h,fER&+ûØdÑU?*&ó*‹þ¿ûv7|qz8æÊ”vä´£Y°î±*6i³®†¤²w„•*–iš|{Ô(BäùŸÇµ*šè•éZjŸVÚÆS–n\6½…ή™»í  #>+üŸ’ªWíÀÕKkdòÒÀ;³S8Ûyýæ«×eäÜ5¶ìؽ}í3Çô¨W"s|5bQp¥‰ëOŸ?ºf€ÖÍ> ý=×^•Ç\%’Æß¹ªˆê¸Ä]¥JÉgh}-3´ÿvçoUî•ÔM %3Œ¯X% ŽíÃÖ|o5š«¬Õx%@¾ÅNÌS…wPÖÑÛT¡¸y„tkÏzHÂÔYíb©äl-|^õ÷pUþàÌ å(œ¿?Õ~ZR(ÿGu/YLðeÚ yb%ÈŠ†~˜wʤŠ&ÿwÅ£é¯T柑.×–òTÕ¨è"$¢ÐaáÚ,¶Ã¼ä-ýÌ‹kMMN’Ý*ã@Ò¡]ÚÕHÞ’ñnTS¾°GICb!³,RSÿíâÝf§µirª™ú]ív%»)û:ªÉ½“Œfžê(ü¹ây’’·øË™/»>«ö6Ê&Z§"6Í]ö&KMuâÑwQª—¸Ÿ˜Åe–òU+¸Ìù¼}|åv6½€i…f†€‡€u.~?\’Kçþ«( o–)_”„˜'wÇÑí’íLÕ<^=ÄÅÔçZEâ1þ}jÃ}D‘ˆŒ^b¥™O“$×`_¸çt ø)¹.(Wй‰Ü~u D£èA²ˆË†¿hÚfî3•ú3aÏ[4r¡‚~p’j7—bàÁ8r¼Ã¢‹¸Dþ°`š8ÑW% 4=m¶WM8µØ$¸AFü\åÑUNôvŽ“^½6W³îyûÑÖ‹Ås/ ÛŽb€ê.‡£ˆ°tØ+'ÉãþŸ3ÓsŽïä0µ|ÂOç<9ŠÅZÃ#Ü?Š®›ÒºÎ)¦«}ŠÎש;_±µQte–qÜ#¦2²/…¼DéÁ›§™VB7_Z®uºwf8/uÀ­ï"ãêßê©R*ÿ+eîM0Ú©Îå[þ²&ÛMOaÃñ@Qt JÝ^ˆQšËá˜ærÝjÐHI^,¸{FJE¤3 òã.+"fm -þ•¢ÅÒVÕ+[Õ[Âoû傯âŒx×½{QùMòè¾w>Ï•øØÀr£VìÛ¾fdÍ„qçaÐÌ“›¸{"føp³7YB¸5“å´½\ÖB@âÕn»6)¼ˆ¦XJ ¿ò}p'¹#˽§Rhš¨uwÞurLp¢pÊDˆ~Ñ»’¿¿J!¥Á¾-×µ ;…ún×$¹y&?Ñ’/hᇮÒß…hgJ±¼Ê‰†¥…[u™A%Vb•S—Õ¯±toRª8ò0Þ·Á3]d_nIW˜œp«1gí;å¯X­lÍŸ‚Ǹ?è/f{¼3¥û»R„fôþ" k˜òvv×n\ôW¤;! ÁF×£ÏÄòA‚·Ð»ª­‰[±ä”Ò /~1!¡ÛÔð\›\X`E8‡µJ“>ÒÄWZ²5¤­ðën·¸#u<¯.÷Tå~aΩ/§Ñ^ªÏŸ›ðGMèqã }OWó'á+ïE3è›Bº{Ql+ÒìTºâϾb›8Å/Τ¼¯öynC,RN˜É/†F¯ï‹ˆža¹A{Fö'R2Ç]·ê{v’ÂÖíåî);]N6þ>ÙY êÂÍÒoï ÿueË/+ g ߃ ‡ã´û‡_å¿wZöÔóP² Š=¹‹c z\Á²ætïÇÓ={86£g†¸÷#Be£¨áJ0v0IK©‰ÒK_¦^’)bÿ•rZÍ}¥0œCQ\R_€±Ö2-ràJ?Ä£–Êsì±Tº£ŽlL(+üþ«0Ã>ot™äxóæ×Ó.ŽK²›s‘…î×Ú ’CBø¬yBÜ—Èž¡½‹ÛÒcCÒÅî3JpšNÎ-ôFê?9MLÔ–zw§_Y=¨N¨3omžÔ6iœ…À­û1 qvõßFw3÷[6TUyR˜Ìbú‰9’6TPe? u8:îÉ)íTI¼çJ1èÙݱ˜‡u€V•"—!c*¹^âB¥‰),}w8<ÞqQ©5OúI€Ç»'*™ÖVPN³<ûƒš¯®Áƒ¢;Ë ü.T¶Ë"ºO V–oÒr®¼JA>,$6Ül¿:XÁª)¯÷¼ÊüŠ×­wvLïX6N~:²Ž•L¿7 ›µ¨ëÒ÷3zò¦Ê™8*I2:i~&ËÁ†ð“û·ʉÆû¸=v¯JBÃ4ûî´;ÍŠ¶›ð£ô5ë!kj ? •¶ŒQRŒh­ÊP°²DÉOpYF•*£”.ž¸®òùœRÅ÷Ä{ÂÏMµ9d÷'½'×^7;Zé®2éì+?Çç6Hîø„½¢ÐÀ½sºVJ—$Bí¦ØGÃa›G‚K¾½›¢'oQõYPœOWˇ*ÖažDÉŽÃ5´ù…×óåTâ¢^1¿5Ϫ˜)<‰“Q”œ+¬ ò6K'è#ÄÍñ‡‚T=vë Š­çï O#ÚâÝåxÒ ¯ýC_‰¢Ní6e —˜@ÒÒT•õ¿!•eDZÏ?Ò Ã3WP-xÄãÑ%Ï8îÕ˜'>Œ¹ÇØHW¬â”%OÕÄÄŽqÖçÑ ’DTqÄ{^[z®¡ì9DjPŸI¯,P"E;Gàb)²+Õ5×Òh‰¹-/ª„S¤C;‘e¦ñä{ÑIV‰¨ô¶EßáœdIOeæö$¢YXµpµêlh¢fÊ91OhúOn«yDëÓ"A–O\É._by/U*‚ùd½%vêVN„ SgüaÃqÐ=8¢—Ë•ÁŽàO‘´³©:rEŘCjk}ÄœE[&ñtteò¥·Úe‚T7þ‹GN÷S<"eîŸêÙv®^ã)º9@ž‘Ò÷5™0á¢ߋï ûˆ¬¦ž®U8V,‚n„‚(ÅÏ­ ).QI‘ï)»¼M£Á—D•€âÑž[øCQžIB×Obÿ¤T—ë–¨`Ë"*þè]½Þ,ñõ¸Wñª¿ªÕ;6ÏìÁ’zÌ‘ŽÌ|a¡öOôõD¿`±²WRa«!þ’ îjáÓâl#1p”~z.µØ'M&ÒÜë‘©g•jÞ8¾ CŽŠµkÒN}tߥ² ¼'¬Ô¸PA=^ÈË#Ñ)¿¤æC ®3Üü,½<=_y Ñ\[äDìE1Ÿ|$ü^Bþ½„¼ Š~Õ’,Ì/ª+—ü¦z;’è'Íq+%›`¨öï·$ùÊä-{M•âõ ñç;¬Q›y2Ö¹ÅD{½äÿ¬—4õË4œ2rèDéY²¦/R“*­=ö ƒ×÷?VñUM&‚Oú¿{†ªÅ/á(½PÜx?]SI^4‹Òèg½hØÛêíÞQù«’X;nm5z¨«Šfi™fÖDÈâX_Y?‰Æá÷êd9æY¤;¤ÉN_UgA’«ÍwPœ©¯¨*QtSy‚þ¨L•ªÖUm¤„ÊFJDØÄÌS~ÿIVS%ŒÔZÌþ”FJp¾ QLo!¶¶Žr³·G_~jG"ð Î æ§åé™ô…S]òÁ÷Œ+ ”WÒ‘]íOó“h»J©äYm¦¼™å€å}RmÁî%w•G[ÜG°.D [AqÅ]Sü»XMN™_böß*DÔ‚|$«yPo¹ä{ÄLÍÊ7íÂogM¯¬­ƒëÍ>þOØ?ÇfÕÕÆ($éôóÁ 1Yãt›e޼ï|öJ*íü]ÒKZa·ÍNSb|¨åcÇS^j¿$³aDhŽ·eÚ=ÏÀóÞrç„u‹IÖ4?í…UÄeqû™P¼“ùÙ£w¾#E‘ï½þirˆã¸ì=X»ƒ“u”fŠìDZZøHÈ/ßR*éIsD;PãÕë"÷÷á–²© ̧_0YG}½zÏù:dYÙC¥Œs=™X½tÛcª—ëm ìµpE%ð™ôß q'(nþªò^`pµEÞ*þ‘ÁŽHéôšf4y›ÞÓK+gÈœ°iò:=xº&®·êÕçÉqúOôhØ·‚Zˆµ;çþO­ý;$Hž¼Öý^-¢ÌÈ!üî)«—L­p½ÛF³‹,‘3E|ÎÝøžS^¸ÎÐPpô½-­-zj—çQ>H³£wñãK‹n0|^™ÛýøÀë½lSq¼c¤_r%ý'"¼'^sŽ‹ÙœÓìRŵzšÚâA‚ùŒd'“¯|ý…a'(ã„ -¨DªKÇyJɽýÑí+ì+•=¯¸)#+ˆÖ{T¨ç§p¼Rg.þqGi·üfR,Ë¢+Ì·âk ¯`ÝÊ+µo¤(´KŽ($­·Î²¿ ‹~6ÿœÏÂamºãi¤ãèÅqÀ;ŸïvúÌj[,.<«ÐTÚWqÁ˪|A…ÿÒê¬3k×¹åÕ_iíÒ$Â[᪔ R°z…¥”—T.×ÃÝ{é‹=#ù‡SVü´{çÙ¯8*ž¦7嫨%\=š!Íîs¡‚ý ÅüΘb6UþÊmƬ>á'¯ìvÛ|¾êÑž[/¾íûÜ÷:½üìk…FíyìrE^˜¡ì%kKùRÝñG„÷Î˲wQEm†àà'š”ª*f<1¼fqJnÄuTJ¢êÓ¤.]¼`L·o9þ{”³íïN.i¢$—Í!ê%œ§÷x<9ïf•ÿ'DÄœQš5V E¿£G2 oÏ={÷éûù/'~õͲ {N\õ'R@°}ù"ÓºØxñÍËw,,¤2dl_Òƒ¢Ô>‚cìØ !zôºv¡äP–[›µj*Á )Ÿøö½P@Ì úÐãåžD.w£‘xám‚šg•”ÝV«T/ £Ë7÷m}6gXNµ<ÏËÿš·Èm÷f:± ‘÷¥š8A[\êyìv‚7m9ò¢:«ñ® R¾Ý$× -JíJë=g>Þ+)ÄÀ;YÔÅ-/©Rwd‘Õ„Ìc£õÈnñØšÅÖ›™Ípê ïÄþ`g.úþ»š;îM×{9<~A7ÊÌ—ƒãR¯Ï+oªÝª¶ôÂO?ÈŠüp­êUˆÂ[$þ¬ q‰Ô¸¤%«Ð¦s»ÒAüP~¹gµ{¡»:éG-âO#áwõ°S:n·µYAØÄì™+JÄþ8/]‹.M’3“—ÞõϧUÌQb¼Ëx z•xÕåÚ“Q çQ¬Üžå­`—Ê‚>“|áš“ÄBûeÃhÚ«ü“öÆdçÓtoÔ¥S]b©Î‹ê~Ý8½º¬å’ŽçÓm¸ËlîÌO¿z3ÖǸ *+ÌóU<£rŒ,ýP2/ ›"Y;• Ëɤ´8R¨äZqã–Yº›Ê.n™&(Eÿƒ‚þ5¯&ºl$áVU4Iº4|Ã!/æe‹¾hâÌ—¤ŽýÑl­ u_¨ ©TìJŒ^ý“02¹iBxÁHûû§4¢u‹[é^åºÖ}JZS©î1aîw ¤Æ„¶™»ž4¢·‚á¤Í,wÆf‘‹þÎ߉#–VŽ%£oªí›”r =6˜'á*Å­¸]ŠÌ³A‚™ã®tyÁÏIš¢=Š“iÉ«rÇ+ö'Õ‰»¹nXü%Ê;Ç0é«ö_znšòûzÉyQOoFéØ×<¦\uZû>ñÑž±öÍåÞ$üêÉÕ™EØá9Ggw”þUÔ$¹÷;¥8Ѽù†F-µJéQL½#þ·¼'#¿h›ÂC¢¯Oˆèò£$J¦àöÚˆ£µÄ]aˆzÝÔ]m>(óóeS@ëÅ ¡šYÙx¶µç1{™×¼œù¨·cî¤ÙÛ™·`R;Õ­µ–ÌBœuʵçA Á‘Øá8¨M©ÖTÊ ¨ÚGæ=)sw÷ËsgLÐFöÙßè‰% ­­DÕX¨ô¥”'VðˆŠ”ÍsB†—ìéÿ©ð«rå¥ä|ÿžýJñ†]ÚÕ‚pÄ¡5V^cW©¬þô©ûft(;Ñé¹®h£[Õ·Nª%QP¿&\Ì#•àšZRɃ¼·Ö¾G›€¦²’¿L@È÷çŒiïHìM0žœÛòußÚycÑ0¿Æ^¼{hé®\)LW Dpþûó§²?àmB„4’ß¹x±7<ò[SëŽîyë(¡³úÖΊÙ8jòìy?,Y±jÕ˗Ο;mì n­k•ÎõäŒÓ§§Ö°Û±(°XÇáS†¶U©¦ Šþá7OY딺b­·iÄÝÅ~åû‘Kj$–|ïë"O zƒ†Bÿ*&ƒž8,#„6œŸÝ(½ý»ðéRæ“Ã’3GÀ1fÕ½‰Î"æ§»ýÁZäš챚>p&z€´“:*!/œ ˆqäΟ‡M<¬-—çæôÙ5cÛÂ'ØIÏ _7Íý S§ZžDµ$úҳʓQ6r8 jŒîr Rf—&—³°Üz‘AÙ¹+ Ð| ñ4ÝÄÐ^'t‹v"\9…¼™ÿJ^bdÒ|íþZHuHíHR8L•¡¾:$ÿ~KÙvªaÄÌ*BîµËž=ÿLÉÑ6„ëEÊï½J–¤'µË³)g/©¢ ¾-8ˆ¼§IŸXˆ<~-Âwf›Üv¦ÊƒÐáQ`=7DÉ~Â>ÄOúîPrcc)£þ8þÌ“öÉíï!æg•Í9㥿*)sÜü.T ûê£ÎPïwtü9Á þìÅÝQÇ‹;QG;%zkž¸¤©1_ëÛ_MJ°3HJÙ)PB›©ßSLqÉܸ÷È^M²cÈAÜF½~íuñªnJös)Ö£dž<“ä6%{_vÁÄýB,“C^|ª¤JÍ¥Ï-@œ§÷“òK<“”YL8+d¦=*æI€iÚ\ Å庢.Ë9¯DÊ<=ni ^8Ü€÷÷ÌéVâÓzj†û•¿H”Brµ"¡¸oFõçC’ƒÇgÚXðOdÏód´„ûjû$rç€øF"Ip ©öHžØBæÎ’Âõ¥cîz2¯‰µ.Žy|ÏÃóªE•ÌDòxDÁŽ_Ì< ‚—•QÒ"¹+´vp»TE [%ï¾? ©¤~“Jž áš&.¼F«Ë¦¤X©ÊCß#â ©ß\7†x¢òÞº*ÜFÿVÓér=kàÑB¹÷ÕïšH‡%O©÷ÅF[*—⌉ñÎáre~@Œ9ˆ74V[ú.¾å}NwÊÞ®kE¥ÊÄ•ÝåÔTV y$ÛÇçHi»<©£QŸ*ñëYáâ$)×£·¢Ámш.Öõ&x?·+|Å»VXP9¥âõõ”Dé!ÚCÿ”ÀƒøŒ}á:¿h§ìàådŽäg¢×S =v#êØ¸71¾ ~#¸š?÷¬‚ª ›†û Žw…Ôé‚ÉÏÊÁ_ ~邇ICÏþâæIêw±º×to—Ƀj Þ“è‰{Ír• ‰Ã“áüŠr´:ÓÔ í¶eE0¼rT&·\캒ðë0éWQ”ì*e…ß‹¿4ªÚÔwÄP‚W1cˆ\!*Tð#œ#ý*–þQêa¤Ò”4Î> stream xÚíùwÕ•€ÿ¦I2’“I LVBì„,“àùaI$cÙ‚å°9RsrìÍ$`Ë0,jV#E1ɸmb# ð&É»°dË–WYíšÛ]­îêê®W{uwõ÷{rˆ%uW׫~_ÝWïݧifvv6™L¶··s6 v˜žžîïïÞ7Çèè(§jÄ€---÷  XµjÕ} BÆN^ܶÿTçæƒ›Ç–½<ظv§Ä‚?oª¬¯þÑ¿ÏEoý#=óW¾×°f{Ú$:ûtöïïûèøàáÓ—R×9™€  JÜw)±ãزW†<µmÞïÌ{\bC6û‡DZ‚F>’÷`ýïßÎÄút,k.Þ¬o–xãÎ?ô4¬ÞÚù޾щóœg@…Pl]¿gAÛûóžxwÞÓñ¸…õâÁL¼^¿L×þÏ{}»rÚ@%0xôÜ¢çvÏ[ñnF‚Î=ØëÙƒéxøU‰ùÿý÷ÁCS4 B(#mïŒÌ[ñžÊƒ äÁ׌¬8‘Žßuw¾»‡†Teáë÷<¸18¾éȃ¿K{PÖć4 Bˆ˜µ[ûð`F‚¼„_©(­‰4  BˆŒÉó)gì ̃Y –ö`ýC/K$Þ?@Ó*€hÈ =¨KðÙ’ØqtèèÙ±ÉôrÂÆu;í=¸ÜäÁ7¼y°þÁ—$&ÏÎÐ:€   MÌypaÇö™+æ…ð}ƒã\¯òà2‡|ÙèÁú_líÞAë€[fggQ!8¡Çý§Éd²äŽŒŒÈO§§§9‡±!=:ZäÁ;Ÿì/ö N禋I2Î=˜pâÁt<ð$†àé—¤wjnnîííE…à„^Ò¾Æÿ+?Õ½¤ïô‹„ë!N =gòà¼Ç7´mØoõû—®\·ñ rñ +J$¶í§@šªg£Bð€´oñ¿,_¾|`` ø¦kÉ’%\1cÛ)ƒ³‹è¨ÿ…Ûêm½[Ö?ð²®Í´”4 ¾‡`±°P!¥Bñ`ss³é߸bÆÚ-‡Š‹É¨Uذf{Ð|©¤ëûBcûFÚŠÑG´J‚ !(J‹·´´ŒŒŒÿ]RBI ¹â¦ÂÍ‹‹ªu'(þć»]y°þ·Ï/\ÕK*„r©0™LvuuåþqxxX®ÜO9oñR¡yý½{ßê÷û{.ª–‡,<˜•`Þƒ™xŽ6TåRa*•’ÿÈMKîèèЧ•r=ÄS…EÅdžêÛ[üË£“îhéóST­”_Tx°~)*TeS¡ü‡d…úä}ÂŒé§ZU{øÅ]“ç²÷B—®\—|ПK,¢·õ`*TeU¡ü¯>yF.­D" cªÂ1uqÑ;Zÿqï_·[Tͱ»$h#@…PF ¢Â‘‘ùßññqT_:+.hQ5ó$ ¢B@…Pv ,_¾¼¥¥¥äO!*´ó`(EÕz°nÉ:ÚP!”W…úäc6®‡˜Ñ)*,éÁð‹ªÙxpÉ:=h#@…® 7ºð`ÐÅd2|^áÁº%ki#@…… mv¢߃KK{°® *€ðU®_râÁ:³×ê¬kê¤@uÑøÌ€Ã¢jÆÅƒVD…€  úTøô€ó¢j¶¬kZS›§qÄ@n)S”Tø¶¤¨Ðr-RÉ -Çf:Ú²||¨Ði1µëÇ_…òíN&“ÝÝÝ+W®lnn¾Ïùi{{{xÝ—¾ù‘®TèS…•ÐË¥¢”6néXŒ\{r åŠm–ëP{zz*á‹1`æÊõmûOunk}󓯵;õhÈÆŽL$:õØžŽ5z|ŽÕïgb[almxVbK6žÙœ‰M Oçb`.úï|ìuçEÕJy°ÓèÁºÅ«óìÂsÚéÚé'´)‰ÇµS¹x,'Mǹnmf“vërå7“ÞAé{€z@zl鸂5 iû¿Êñ—BOÎ[H*”s(-¢ßÒ(@”$¿­ös´E.KÓ¶Dᡟ4yGµûÔ j\î ô Xöò`~Ó%‹â¢¥‹É”£¨š­ TxúÚg÷hã?ÖŽKü(Ǥãèütùa:ߎ©6íÆTeŽ|ú1`q?à³SUt˜¨Ð‰ ›ÛIHÆ‘ãñl–/Œ/‚^ Ààѳ žÚV° oÖƒ]TÍÖƒu‹Ÿ5¨pEY{ðÐÒqägÚÅŠ’`€]º?wÅŠ—E…jNOOûïÌ%C 6É ö“à |È4¼/B°'ªm8ôÆ×ï™÷Ä;ž<HQµ=¸¦Àƒ÷?+‘ÿ¨S+\xðÐ]ÚA‰ïkÓ/—½$q é»oÔB…‘©Pì '<¨Cjii D7¢˜ ’,SÂÔpnx üdBÕypáÓI×ü}¹‹‹Ñ+=Xwÿ3>QàÁ£Ö<8çÁ1‰ïiûËØF===®¾ËÒ›­2à¼sófCTèV…ýýýÇžL&Ãó‹|^ŸÃ’Awtt8o#Øüyðª½YQµ..áÁ"º÷à¨Äwµ«‡£o ùú«§íå^b``ÀjV†qV§“'«B…‰DÂÔ7*ž…ÉVY“Ûo΃ ¶BNÁ:Ú§åR”“,טQ¹ù¥NŽÖó8¼“›}wxÅŒP9ri;‡gÕó T#‹ºvÍypƒÑƒõ&>Rîâ¢K½{°nÑÓ>^àÁ#Ö+ôàÈwµñeÑŠÚ~mõÉoÎï`õÓÔ¯éöî½*TêK•JÓH<<HçOâgR~äsu¼“Q–WÄž?¾õ©³Åƒn=øšÊƒYxÐ_1¥;$òûäcÞ=¸_â[Ú•CÑ4¢äë)݈ºpÞÏ Bo*”_óV‡Í67tžÔ+^J.?SGÔ6tx†Ã.a'™¸úLºº'„jL }{ðÍ <øbp|Öʃu…*4z0»hÂèÁïe=8’óà·óÜ÷ïÚĪhÚ(lj™©$¨Ð­ Å2~r¦R)õmŒÃ'†r!…—ÙŽ<8Ùˆ š«ú¾ÂÏL$¨|;Ž9öàÛÞ=è·˜ÌsÎÑ—ö`£톛€G}yPâÀüبPPO¡q˜¢BW*”¾×Ûã-#ê‰.;pEë²Ò\­Z' å"Wß´à‹³°c{lŠªxp‘Ƀí÷>™(Paï*ò a’LÖƒßÊ{pïéˆdŒ4ªC‡£C¨ÐyÛy›áYõ|?2õ94ê|˜ÔöJŽfuöŠ/âÊÌ•ëq*ªfHKxP¢¡m}þöԯ÷Ü¡M½Jçÿ––¥—?}Ø)¡“œ+¼ÂæA] ¨0Æl;p*NEÕÔ”h}Áp^\TÍ­%? ê*ж3üQa¹:põ”õ©‡.ƒÝ·H}©ß+š3)/… kµ›ÇâTTMíA‰¾²ŸüÚ‘<øé7Ó#úŸ<ƒ Ëҫϼúã–---Á6ÙÐÐçAøhΤze%ʈ+‹Ö}§¢jjJœ<{)ûÉ/ôãÁO¿¡¥ÆF…ê~ÀÉ*cTX.*9Õo¤xÎÆÖ Š·S›·n*PF\‰YQ5µ~vCþ“¶´tqQ·üäÚ™7b£Bu?àd¸ –«÷öFêñÀ0•{#E…“çS1+ª¦ð ÄàØDö“ߘ ̃Ÿ|]ÿSœT¨Þ3Ýöq!*¬.ªg‰„±#ƒz^±ÄBHlÛ*z+ªö| EÕ|êõòŸ|ªMU\4·xЉ?þºvhiœTè³0*¬.*þ*¤etêY:ŠÇ…¨B¢sÓhÔEÕB,.Ú¡ðà½O&fRײ;õiüøvmøö8©P½¢íŒwTX]*T<¹[¹reH׳· BH´¾ùqTEÕ^Ц¨š½o]ÖÆ—ØÕ%èЃ÷i7gb£Bõø•í”BTX]*T´W{{{ô*T¤¢¨B¢qm2fEÕŠ£¡m}ÞƒúШ~3ëÁOr¼=ïÁ¡¯i3á¶T”*T_Ùö¨°ŠT¨ž0ÜÓÓÒõ¬~ !bþmkµU»ÿÛ‡ƒw<Ø™ØüqÁÎzÐAqQ]‚=ˆ QauªP=}´\*´*Í !$x°šŠªGDE‚É _~#ëÁs¼-ïÁÁ¯j“]¡¶TE©P½‰*D…>Uhu´¨ÂTa¤EÕÛ7¶­ßÕ¹q¸óc åcÃ`a|”Žè±»0vuöÄàØ„„Ù€Zæùà‰ß{Y4áЃi®«ª»Tˆ Q!T™ £*ªÖØñnß®C3W®•áCž[;üSß,œ$còàGÿ'ªŸ¡BTˆ !Ž* ·¨šHpèЩ2|6É/¼­û¯`Ñ«=(1jvgP!*D…/†XTíÎG‰mûK¿ñãÚõýÚ5SìËÇUcì-ˆ+¹ØcŽÔíÒ€vö•tQµCÁ“1zp¨”w%N*$+D…¨Öœ Ã)ª&›8WðfŸÏj©ÚùGµÓ µÓ÷jS¿ÔNIüB;)ñé˜üy:&~–Ž?MÇg?ÉÄ=ڸĵã?ÒŽI,ÐŽJÌOÇ‘f6£¿;˜M—7tðdö¯yТ¨Ú ëb2Ç*©¨šÂƒGÿªïØv8---‘=xB…A½‘âù]SSS€©¸è!°‰ª:ª7{²êT{zzÎò£B…^ýŒ‘V— ¥­§WŒæ¶Õ¤Écïò‚ÞQ!DÃС)Į̈pÒ BWÅEÃ,²­*ªæÖƒ_*ð`„)¡CænÝENú+ùu¹Q?]ÔCm¹G‡‡ª‡Úf‚>U¨ÞÒÝó<ÒêR¡fW•T.0ç§ÕƒØr¸ºËB… ­Ý;¼y°®©Ó¬Â ‹l¤Èv¶˜L)~x»vc&ʦq®Bãývww÷ÐÐÑ5r‹.½S¿¢ƒ j$Óù1KÖ ‡$f“Ë18I1—b¥ ?õ0BXu*t2V 7Qj!Ê…g;Ëíh*„h˜¹r}á_úì=˜•`Þƒfº+.f‘mEqQ×übÖƒÓ["n*ôÏ'z©TÊ¡pÃÀ› å˜mµ+§Åtƒ?:9onnßõ"–T¯ÊñæATQÛðÏ}ÅÅdÔ¬kZ“Wá¥×Ã*²­˜,F‘m½˜L±¯Š¾]@H– dž§˜¥,÷3ž©~XVìÛºdUªB}¤ÔC>îd¼ÂÛdTTÑÚðZÛú]ölÊ{°nq¡ ãQd»¤'^.K£¨;éX‚5ŽÃÕôI$w§ÒE‹¬ósü”ˆ‘ó©Ø=Á팚êU¡–y ljï|¾(*„J`èЩÆö¦Åƒ†d°Àƒu‹Wª°ú‹l{pϯ´ •«9œtòþ…(¯ÆÆårlÎ墦££#™L榆T-M^ßá,x«07Xê?=ôi¡B('ÏÎ$¶î{xí@Ã_7ÜÑü¢• UøZŠlëÜûëtŒ¯Ö.–·!œwÒÛx›g"oÆ–å¦Õ›å¯äC hÛkòYôŒê“Y *Ôï ä”zËåòIQ!T_ ؃³ŸrR=tÃÃÉD¶ï’_*ŒLP1ü(¦N`å§’ýÉɧPOP‰ o ÈaÈÁÈQ«ÜV…òyG-p¾¤Îá‰à¤9¤uÔw5rZÄ€rÞ|ëÈÎä¨5ôEàB…ÁE…¾ï‡õo±ô`½äö^ÂX ÍO?£X H¯}óéx¨œSZd{öNjdCCU×sZ "Uøj`ÅEõçƒGµ£eâÁty ‡õø­vHbi&–h31&ѤJ,ÎÄýéÉÄEé@…5 Â Éy F¹ðj¥ÙF…5 B¾ˆPfU\4¤"Û¨„®ÂREÕ*§È6*Œ VÅÁÜî*´  ©È6*Œ Vû_øÜwÀ/çEÕ")²]¢¨ZQ‘mT¬ Âø©îŒ +¼È6*Œ V§%تîUØmQL&Ì"ÛcMÚù÷³puR›X«*² ãç*W…5zðØ“%ãÒ eqQT ›­ó-€2s®;Ò"Û{îÑnZl(¢³t‘mT ¬2g*B…Qn61õªå‘ܼd؉~΃ýÆ€ÙÙY« #xPåçB¯Ó⢓¹4¤:˜} L~1½é*¬~:::¬Nå  ü¤öDçA{þ&ëÁäÜ&¼D…ÕŽÕÊz}k<¾‚PDY\ô”õ ²—ÌÜþmâTW’@qª-h~ͲÈöÇ ,c|MÞƒ"A=®N¢Âꥧ§GáÁÞÞ^¾|P)\=Ⲹ¨¿"Û‡[KÃåÑ[Q¥gŽŒŒ´´´¨·M盕ÅéÕÙþªM‘íý Ú¹­s"žÔÆW›=øÁ¿h;o«Ò”°ÆU(T|ü\ýíT*Å×*‹[—µ£‹ ¢Èv~ÝÄÜdQ£%¦ªxô¬U(ìîînnn¾Ï<•nðŠlϫֈ Å}ÉdRô·råÊûÓÕÕ… ÒmøÙ ¢È¶•wÞV팫 õ¼OÄç$õ+fÉ’%ÃÃÃ|É :8û–6²ÀK‘mÓdQüôWéù3ÕO,U¨("jK"‘ €*ãæeíÄJwE¶xp§µw?É`¼U(.ó ŠY<UÌõSÚÔ Ú¾»5zp—µwypϯ´é-1;s’@Y•«êg…êõ¦¹1Éd’LâÃÅíÚøŸ´=wéÁ½¿NW’©ÚåÓ¨“>ªZ…’â©s@¹Lq&uH;ýºvøQmïOJ“É/š(òà®oj{“.)sq°ÖN›¨¡··WŸmRÕ*4=.”O´jÕ*ñ£èo||œïÔ7/k3ÃÚômr6±N¹_; Ç¢L4jÇÚÒ[žL¤ÝëìÏ9⋪Θ$Ï•c=€šãóÏ% ýÊã;·nI‹þšX*H|ÖÚºòº––,éG€`íç@y7JqÝ+7,°Ud±IÀ‹ÿ”îSûîZWÝp­ Q*ÌXB‹n XRVÖËËìJ)R) 5éß)EIQÚšQ­EZœ°dêgv_¡ïrÌÎqÙ=¹¿-e)9›QíD³q"´HM´Ô_¡øLF›ÉpÉ=3sû±ØŒ&-ªœhL"´Ð`I šÇ> 4¹Ïh´‹.¸GÿÃb9–Ԣɉ΅È)@M{°”Õ™ Ñ¦Ðh@£ûÎg8g଒ܯéheF“MÏB´O Mè 4†ÚJÐhÀœæ¦§§Ï8=Ç™Bä×Lf49ÑFˆîmHnPã)¡i\Ô47Æ(B…M™ Q‚9ê⛚š:eüÈ(G+!–´an¼T‘šFJ­æÒp¥Ô˜ o9M ‹Zåƒ êÊ;™arrr"ƒü‡ü_… ¹¡«ÄÐáCC¦ÐZÙ0Ô¬Ð$ASVh|tJVÈ)@-ËÐÉÄQ—Ï ‹…¨sÆŽâ…Š|°ØƒþŸ’Ô ØÐáHi±½M"5MUÌ–QŒ‹ú%%¨éÜÐn]¡Bˆ&'ú_ZxqÓºBÓr{«µöêu…·È@¡Ck!Z®µ7ÔZSœqUs¦d©ó@¨…‹3A’Ap$DËl7íkZV!Í—!uU‰´tR£û,ôgk@$öJ´Þ™ÉjW&«˜®X¡{­8,°Ú¿É~Ã&…‘ ا‰*-zزÐÉ®…×,Pïêk¥? ÁI±ÄN¾Î7²w»—ý k> stream xÚíw|EÇ÷R!ÔPB•Þ{†PŠ Ò E@" U.½cy)‚*] ½)½‹  ½)$wûÞÎììîL’½rá÷ý#ŸÛ»›ÙËìÌîÓG–Þ@žœ\“UJ鸗óoÝsøŒe[ŽþýÄfÿÑ/餓ðŸ/t¤“ªÛê=fOö¥ÐAÇF¯ˆÐÍ–8[”ZÔ0sºI1ýïAÕMôPÁìȆõIŒIV²y¯‘3Ú´eÛÎß¶þ0sÜ€ŽþÅÓKΆ›OÉši8XÔ)Ž¿ú¯6×ÇÓ‹Qè ›c¿¸’ÐÍŠ¸Ç8‚oÑËÌé²…ÄøßuLó÷=JÖÞñ29§JI ÁLFu¸£_âÐúXmöD®OÍNì©#üŽ9q79Ç·X #tû z>Æ…Q¨n÷)›.GÊçÄn˜ÖÐQ˜Ü‰À a\ðLÎÐýˆëã¦Ï³…ïà–c¿¶©ð;¾Ž»Éj¾Å!sËúW £ó{Ö¯Yµê×}§ïiO‰³b;MŒjà[˜Ú‰Âna`?NPoE¾:mv}ÌK°HXÌ¡ŸÚÁ¼˜ö5ßâ¹ÅÔ Ë½470gÄæÄ_f};‘¨0hââu{ÏÝQ¯Þû í°@Ÿm/ÌLó ¨€|êÐï!ôR;î&m…&…ͱ»¹õqZlß'~í¢ËcZ' VmÔ±oİy¼=tÛ³øNƒ¦»Ÿú‘ë„ß‘#î&e…&˜<å·æôk±yƒø´º:<¦²àZ¥ßÿNÅG¢èm¾oA¹ãÐü—ïäq<šxFñmƘ<¥Ëj3ëã¤Øü­8›Ü]ìoÁÔs<*ÌÜ|>ô•×´ƒùnE¤¤?-‹ÐÇÖø4ú‹o³ÞôMc±‰õqBlmy¥Üj;7ÅÏSÎÉé×qÀ¸ù¿øûÎ3«x]›ïOT@>sà7½+ôñU|mäÛücþ´ãâ¿>ŽGk|2¶¯¾<1³e6̳TA?áÚVq@v”›5üŒæÕsIš(4Êdþ¼n;¾>VEÿRäÕ3>©WGêa¬y½8[ù.Ýñ]<×ëäÈ¢ÈÏõñg´¦Ô¾ùìÎÕ3G¶.™:øÿ®˜P© ApD¡C°Êšî¡™ÐÃJ‡»¾@õ x­?¢Û¼3yy@OÝü.Ø#éÃ7ÁóTUZÅ«Uz¡ÕŽAƒõ‘q¯c˜+o"7ùY°Ë‘>Üž'Д;Lp…§‹_»q˜˜âo²úç«Ã £Î¹òâ-̃™õ²]p^˜5l~';j¸CÝ0ÙÚÿp2<†•yyó”O*§Mµ3À§µ²·›¹j{àœ£ù5‹uñíØÏjº½QëC´«vw¨—¡B/•Ì5/!8úäøFdÌt°]¬Â’­úŒ[¼aÛ® ý»7þ4RÿV¾yœÕ‰!(FnþÓ¶ž¿|rÃ0>ÌÞÒí±|Ð1Wúgfñ·®«høž×çטédk™³Û{þ8ºvB­Ti›-Ì0?‡zy[èe¹æblI¼#q?~òK³³Ê™%†”B·îºý{9ýýâ{Hð}¶˜zC,"‡hß«pÙð~x½ƒ<˵,œÿzð–,cýœT „—c×&$!IVbêGüƒ2k g¼¹Ë£Ãƒ¹÷ûØHY~ÐI›ªœ‰.‚ÅyŽae^úÆa<'¨_ô %ˆµÙcãÛû Î £ŸÊ¼4R¢ºÓªwTâi„\ˆçf„Ô¬ÿÉŽªÙÙšì¼´?×Ñx¯VBÉîh±AåU×þ4z˜ñ‚0N=ÉÛõô‡BòFkzpa|¿‰ÑF¨w*bÇâÀ»ôý®´ã&BDßßY˜8öåCªHêOµ2Ö—Ýœm”»&Ò ø+¡ –_eÇãp u RãJp)\£ve!Å<“’G·Wó35V£úSajÔKÞ¸æ¿ÏjÓt]‘v+ÛR±h@Z*ƒ}£Ìiú(¹E ‰¿×G•¸:ê & !/}Ó!`q¨Áü™fÀ=Öq{¶b×ûàtƒ6—yøÑŸr”ÀqF ÇÓ‚‰Ëc¿‰óîÚHm‹#íÇ;H¤íìCDW-íY‡¥_ÌÉ=åNÖúw¨g‹¨4Au¯$U$¢ÃÁY丸òMˆ™¯žãG-M­$yu)}29«¼¤¡;²+¯‹üMZØOÑû–ÎWe£M”ÌrMyf¿ŸÕKÙ£_B0úGdp°#A@ÝĠ{kçp[8ý‚Èõ®ñ¨ÕuCÒo6Ø™‰¼SûWífQ˜#‚uCÇ.2¬ªmÏf”•¤Ù²|¯³…&™•V>"áž‘9™æMÖÏfû«áä+­™èôˆe‹e#^Õ몯ª,9:,I•ÕŒ{ò·š¢½⦫vï¨æóRÏu©5aÍ¡ÝÆ5K“r.ÆBazíp¸'Á ßÒ7ZâÖ|3§ýBNX HŠ£ñ}yGíHÀœHÞ,¥?Ú'‘ÅòøKMëLžÁ%~Õr‚Ó†s&º ¾´k%ÿÍÍ,Iï“Còl!·ýÚÉ+‡7Ùº Õ®è2 @^|ÎÞ'Ù4VoIÚ¬œ¹MO&¸¥ 6ü Ä$æ»N ÿ—µn§%=žž%…\Œ|቙N%ôT?~Í*‹Ë㺩 ÜÆBë N´\KÕk\3'÷–Û$åµPÎd öY†¦]¿°|¦ß¿‘Ôý5>g´E°]~ö™EZ®E U3¨&Ša‰ÌÍì¯È¿!ùTquX^² V¤E’ŽóF“AlâSIKó†t!‡ï*aq'>°¨·.eªOPn˜‹>$Ç%>˜H]Ži֯⽦)ã ýO˜]Žá«‹eðÕ”-­ÈœDZP\]ΣWüN§øµ‰¹õûÕ!õß(JEO2“£FÛåûŠ4R ¬˜äz€ø0 †°b§å{ªš$QÝò­V¦,©qOW?tÍ’˜ w²£ºäÓªÊzµò ç“ç«$W^ìÓÞïEZØ¥àŸe® "í©ý±ãÏšUÑÇ}BŸNÎ¥ÎEF.ôöp=ÛM(KÉeéå¨ÑªiõÌÉÞ¶&´ö•Nšp ÅÕD‹æ˜fÒ¶#nÉÞα<š"ÇžPßü@s&Ô$ÇûÈ {þ£,ð¦pˆü¢Eºª…9W\®ÜÖÖ5$Èc%DyÕˆ´üPûäÓ+~zíÉÛ¼ëj#[aćxQ{Ÿ>ÕrIÒâN×Þ§n¬Øátòä£E&h®EVx?—C– Ëq*ùÂxÕ<<¢Ç¸3T/Ñ"!<¿8NÕÒS£|’÷yœ'gÃô¶Wвã1Q;EwÚg6‚ꌱòÖÎé]2¤¸¥àRºóÐo†µ+h|o‚n¦Üe=çêoÉLËO,bÖPbÊ~æ)I=aÚÁ6½ËEB%MzV:¦uX‡ñ¦”eìæø+/ÉM<Ø“ML"úIjtœ-+w¥C,jt-#ï+¨Å‰g‰®Õ5r„½³œä¸±ÓðéánºøÆÄ¹ÚEø÷ä¼p ã¬Ða†±f-Å®S£ÇÞ0}‹ r냠9=k¦ÈGGþÉÌðgkQY³ÝbÏOûäõ>En+Ëõ"½ø€Ÿš¢@|›”£#ú‰& þª+R‰g§w¿Ëkšt3l_ò’=Íúk€äÕh¦2ÚXŽh{ÞdH¼,6í ®Ĉ!äc}†Ó·Ô,(•Þ'ê’×ø²‡3%ß•ëmv¶IHwõ…ÎæÆñýb1w ©lú´Ã.úÜß'%­c˜žË c ‡ßÕ\=ŠF7Ù'oijúŒ,CçÓÚžºwÌ›8Ü”¯HnÏWôSQ¡^w¿u$_ϯ»)ÔÂ.ÄedÓj…•Ñïf>Ä–A•ã†dU=Wìi‰aëå;äýlÔßÜþ2;¹íSc%*[y5%HH—øV(KÓH³ÿJ¤”eDvõ2<‹‰iA]Ï®ªãxØ“sO4LºËØVŒ™•Ï%(RÕKðc\|å·-½c(þÑÀé½RúU—Úh‘³®ËùðB]@‰¤~—•,³+ËMy•}ÅÜׄ*"1EJüDÖ"š¦ Ï‹^š¹ˆb°ÛÖ£±䎜n‰P" ¤ÁÍ­¢YÞ¨BãeÆjhÔ2eVÜ3ǧ÷ <Ôû´‚ØÁJRAH ù’N ¥– òíT1Nx’©ó«ö Q8Ž*ƒC£\®ì&¹5<'”ÍÒû˜lK²€ÔÎÑ3æèË"åܯ²[í)©¥ó/"ÊU<Á*÷ÏRÕÎõîÐW;-ÚŒdÏ׌dÂ…Ùï‹uÉÅ>¡™©çð‡ ºGP¤Øô8·öÂæþ†ŒüŸUóK@Û‘W©I@h/FÞ ëY(#o¢ý[V ïߣ¶¼Ô ð×À&­ÐÛãA=ªþo-–¶ ‘Ù#™yLòf>ÔîÚ_´¢qÁ¹¨]š¨šôÀ£åzòh±¶KqBôé¹*}ŠÅD>Šõ›YXc*ŠÓÎÙC¡z-š–ç§Þ{"|u‰¤¬ \ûGiâ ʯÎ=¨œ¡°™Ý<Õ'‚&B|ÄorB{ÑÝ'ï‘c_íØWƒì·Z¡ sTý'6ª#i7qßû…ù=ù÷ï±ùúÂ]ö¦¡ÄkˆÏwœ3›©kH-AZhï í“­ÌRÈ)85´Ô ¿š¥/’«G•=q.l¾nßw*Ä7Šg!ø _=Žq€ÆÎµ8ü–SÅûÅMhcãì³Ä.VΨîÔž*^ü¸uáìP7tËR 7k"´åø¡.?Qg 9n"ˆcªüásŒ«Nß(ši ;ì®S_ïb‡û"A×êS¥çÀºbØ)®HQˆ³D?Þ¤™©ÒDò³ØH‘`á«Î0½KðµõÔš•›xíEbwíÃüLðôÌW]¦‘cÞQ ¦S­Ž‚ÆxšMÔwå­×Yí¨ß™µ„åC¬†6ñ»Ù´®Šó›ûïB$Q©ÄÝŒ¾ßRæç­þÛ@0},<˜×ÜuàMË›ÏI¾Ù—ÿ°`ÖT]¶vkµðôݰ»§´äsÒõÚLÜ3¸ Û¼‹4½óùcòP^!QÎi¿R8©—É<ÏØÊ˪~žNæ–›U¶ µÜÑ<›Ê(Ž&<.›àKÛàdâ”mÆ1¡Ë6Z+0ùIÌåÎJé+"oCI.>좒^Tžˆö!zør{ƒRÓG;¨Ž3Y»—"‡=x»lN½Eø »”ãñ%™^/Kk?¡ŠP ¶gœ•¤ÜŠõx >ï›MÙyìôÎÅÜ”¡ Oôºd9~:tíÒ±ïx×SEáîî#V?¨ Ä—i«e|°ÈíØÂÛòIÊ&RQ»ºxÓøÅ eØÆãN'Rƒý1ïP‘YÖ߯µÏAƒ ÖXªƒü’âwЫyOþ·;3ÞûªÆ·{ÿªÏÌÃî’;ÑGx¡'G1?3¥(9É$-ÍmКw«µ0T±T·‘|°+H½­ô“b]9ì"êíózæ«k±œ^¯sÀ²¶ë9tÒB]*('ø¥5D\æ%ºö­Šúb‘oÚÇ:³°>2“v©>9˜UXñÙU3N¥Ñ 1>ö<ËÞ/aDÄo¼Î3ürlµsÂ>O‰EÖ¸€ŸnDЏFÕÏ4ô?YZЮùŽ£K~¨]·¿šá.Öâ Gò4-Ö5ŽÍ-Žc=yHh7ß· «'Û ~ ¦å"åùpOWj]rz¦èLþ ß­?pùA¬ìo0ÆÉ!Óšøu9e¸¹ÞçL`éÃ9ŠK(ûÔ•j‚Tùkäètk¼"¶ ÿÊ™#àmµÌh¦€ ØËK*/§û¢°Ùšœî6‡Ë†h¸õ©5NïÚe 1ÁŠšäÚ]R>éÏû¿}ØBRëZ«ö½æ‚1£9V·ÕËh4¸> à´Hß"™¹vc]«!½Ðå×#I ï}&[ à —×H íZüT?ãXEž®kƒc ×is¼SB¿ªq%ǧÛ"b/¼fš«9gÛKR©¬ž-ˆß<ˆx/0?9-¾òžý"“aœBŒqd0ŠÒ„}OÝJ.jŒý¡í9˜èáºÎK•ÒIšh«jB½42³”ªpËSõýžL[pû‘›+¨a™†Âü@o%ˆwßV‚µo«´«-Ïä­‹æï„•?[z镇åJ¤ÿx¶Ð±]8¶T²ßúʪ¶URµòÌÂߊË\3Ô ªð/o³ÎÃ˹µO¦_+CšŽÜn°RÄëæ­‰T²ütÿÁgÑ7% ê{×ëѯwÓR*§¡izGÓ\©•0Ð>šî!ædû(Ýýän²Äl–Rõ&­¿G]Ù݉óÕJì¹óÊû¯>÷ã^¯¿úZù žËrä•yº.Ù‚ÕKUòÚ{Ï5-º¨_!Ø-„+©ÚPwãÑô𕮆uCå(oÁÔÇ•.]¹lRßÖe¥7ßI¿ÿ|öçözqÙBÔ.a=@ä|˜_ûŒdÄ\ЛWŽÙ(d¿GO;jØàý 4xȨñÓæ~¸íÀ™q­ –œxõ"³Ëæˆúþõ–782¶Ó›´e„ÍS@c'»’ìÑ[¼ $éâÖNÞLEÂJÒKpèWKiZAõ©åžÎ˜.w»­b¡_ &Ô_ÿ辞^e¸Åtc –æI¢^› fNm[]üõî.r_Q¦½ÈJˆ|ÂöÄqÝ%?k¥úíH4m-áFu‘‹®ó´éO„¾,tFõ¡ÙôÑöߪžùô° b'¯qsË«†Òy5s‡ Ñ`žÇ$\qxyü–7Qÿ™…&N½­RòvžÊïTãþ㢼WH º]c©–—uk M©VLm9È«Ÿ4C~8oz%Yx+èk>Å%’ IËX' w×w}°â öjUÚ½ÒÏXô£¹OCðA1õpÈÁÕq¿K"ÛÇ÷ÌÖ5¾É?ÎËhhÑÕéZeòÚä^ÿrv½B¾Si.ã»”xC–ä¢é<º—[o‰_‚l Êbá> Ö ít3Ä'®€É«jÛ>½Z Žñqƺ¨ÊíÆkÈF‡VÇË9‰žp—'~g~1·p²qC:V˜úTv¹`Œô{ÊÜK•Ãæ¹3o§^a9#+‹ÃR%7RÅ-Yuwt-.ËÊ<ô(Y„ÿ.©ƒ‰ž˜lÒ­pEº8¾w`uD-)˜?úïxœùê°¬É?šùT÷.ú²Í®h~ô/öWddЉቓö{åU6êgÝ¥ÝÜâç˜LeøÓ«V:+&t"óP-É Ñ 1NꉦWǃÉ“äGÿ׉#VÕO&§o–Ý;ôí:Û¨>˜pƒá–ªKÌ=ëJÜÙÏs{)”): ™°¨ÊjTì&ÉûÊ÷¬퓘†®º4[?ÞÊ‚£3Ðäê8ôQR…êt~õ‰OH¶ûhQEIاÖêÌK4<ëÄ‚’Åoµ$)ºÀ–g@¡îÍ|œYjÞ#IL}@_Oçÿ¯íÆ$©ôé1y“ËÎÊÎÑÉÌâ86¤HÒýÊB¯8ñ…ÑÉhÏ­­Vä§¾9’j¥±>î4d-[z¥àn|ÆÑF!\a”QnêgȶáŽùùº)ÍG1p4ŽïÚým@¾¤ý™7c9ó• å’NZ²lzWÿ֙¹5Hžµw„1ò 3qÅFxIÒQ¾¤ZVРG¼Ô§~G.¿µÀwªeê¿ñù0;_?ZLø-8fõ\M•‰ƒð Ñµ“>peLÆÜý_–Lº3zh1ûÛÕ\2ËD~'ªv|¢ÒxV'–DDEjî9R!GÖ"ý{Cý—¿­ÕûWõ•ªmútmŽÅ‘‚d¬1‡JåËžzh^÷*É“ÐS<÷Ó5’TU-{Ö¸‰ùÕ‹„˜GêÉ5Ãy‹R A>w„à ÐÔ×ë—H½?ëHLC§Ã+¶…ri×wƒ[”HÆÀRœ¿xÿh¿$Þ Ø?,Úî$øïŸJ/´xÀoù‚ÙXÜ9ý±·ÕõÛŒGWï:zB¨eÁà¥<1Ûœáf,\òÓÏkÖ­[»zÕÒų'èÛ¹¹_Ñ×0`Ñ*NŸŸÕ4±‹\ªôüzæè.Ót~{åÌêBiI÷z ÊFµ‹Ãúó£(kD·|,±Lç³ÄnІtðHßaÒõ¥@‚!© —¶Í‘øZøVùä8 æ° 9«Š—Ö§»j`­ç¹©^Ó`åk4¤+ëÈWœJÓ‘ítà5#u‰òîMæé£ ÉרQ.½@}ÎØÆÛ2K+‡É¢ë‹²ôßÇßæÂȃ”Oí54«Òv¼#«@ç/)ÉaȬnž»•/É·\+@x¬ªŠ¸²}«ºõð(ýt¹?™³zã#ë¥Áȃ”O=Æ`ZYÅ…Ô^»¦êüóY ­»°ÑÝ/RóxÔ7hÉp–ÏfbœSÒ€O¾ODêrá½Hæñsû: ϙߵ¶ó „’jÀzA¢Œ› gçdp^» Í¥´ýu:T-û¤Ä{Ðú¬š;g*Û `Ÿ^2GáO²…Ö× c`K«?ÕÕñÏ0$cçÑÅ•,ŒSí¨¦áNm´3íª¹×ÐH-Sc)ÛߘØÁJv|ùJýê†dz€HžvÇ}Ѿ †¤lŒšpú-ÆÍ«úêÕÏY9­gÕ:“ÁZ›2ÌßW¸¸£è&0…Hòâ ½TjÑèµ¥Hñ ™§ÝÄs³ Ì´à,©L{’9æV°Àl¾VBUm_ j˲.ñõ.Þÿ·á…¤d>9°¨oy 8p&yjžrË_AWHym·"²¹o.ãロƒy’ôŸ þ©yžQÜÂ}­Ñ?‰Ú9ÀÙH§’HPHãgÚÄ&•;«“—²ïZª•×è^§ÔX` ‰<¼lª4–!“8ez~³xư:z^V.fERvhí®„TÙÆ¬Ó´ïw…RR°-OÉŠgSÁk¢q۔̿êзƈ§!ËÈÛ,tc”š•Wö†–pk?jf•åÐÖªJÑ«+ {"g‘RïÐF»ê»¸ùÒqAËĨ´ˆzaPê{b(A*„V Ñvˆò$q„‹Ø!ÝúGß# ·¥qžéT ±ž” # R#]È ¯¦ßb›] sûnØ!»ìÐK½ß¹],FJyOßÄ•@\…³Ø‘Ë a§êÝ$UÃÞè>ü£ö1‰9¡}ž|gÇÔNo dKÝHæ'…loiŸ.#; è±¶¹áïo£é~QtÞ·$ûolÓ?Æï´ÀF’º!ßè“Õ£Ü4ujضªÅã½sºWG-tðÆÒÌÊ;úlÆš:Ð4À›Non„uƈ`à;úòØS ãGÚÏö’íÆ/έŠÁ :žù+I‡aàÕü+|[ endstream endobj 641 0 obj << /Length 19 /Filter /FlateDecode >> stream xÚ3PHW0Ppç2ÀAc(á endstream endobj 678 0 obj << /Length 1076 /Filter /FlateDecode >> stream xÚíšMSÛ8Çïù::{õjIÇ…¶i·[ÒéíAÄ<ø%µ•mûí+Dz VÂt©sÀá‚eãGùéÿHÿçI ¸\Ì »ž,fœS0¸à,nq$©1&,pœþý~qö~q9ÿ²x;ƒ†ÀˆpjÿRƒÊ¾Í{øñ¢y7ˆF„ƸywHìMóòPÒѸ}ù›yˆ „Á§ZWó3¼SÅZem07Spb" гæ€"ÉØf„8Ž(Dmp䂞Ç,PÙ½¹«æHåúönŸ@ÈP@þw|Œ¶ã#I‹5´$hGEÍ4ˆýä¶NªTß´Ã7…©Êd½4iY gsDóÙùOê2ø˜ˆJÞqïüËüA>ð ò&܇JWúë:­S£ëaèFq¯h÷¡…>Uì¨^hcÒâ¶ÕpmTet2]¸‡¦JÕwe’Þüè¹^§¦6•½õt+¤œE6"Eê(ž§EÒ3TEÒ>êU¦–ÍóÁ<¸/bü»ÙDæ ž–…Õ^s.õ$¢N…2vì·ÄwÇÏYãQÕƒ¤Ö*¯}B§¸QŠçR wíØy©Ïsƒ²ºŸ#h—亡ý]å«Ì?ë1ã“tS\= Ð{«¿Tž÷ÂNR능öÎ*N&ES޶KàÞN]¦zŽYð_#_Ýâ,]pV)SÖæN¾¤fÇÍtXý…TFÅk@ìjÀ¦ÔÚ{Ê-,†B¨q_>2Η»3‹a§Ú-iÕ€ðXrèÖb[ÄÉát#­vI *D€Ø˜Rp&‹ôRXÜé¡¥ÚÜ.3U×~²sBFc•¤w Ÿ˜é¸/;[Vþ^p<ÙiÈ–=8¯ÊüQípçüY¢—i®²®{°«šàH_µ½3ð^§…ª~<…N²xÂä#ò$>Ï­¥yZŠñIå;©]Ð`¥{±¦…Ùdû­®|ÛÊ'¼Ž©Ú®s’ÛYYjL¦C]$éâõ‹A¾‹ ‘`¼oýBRª/¾*-¿vX¬ók_µ„ããDȳ﫲ЅIU^”Y™_w6*ñÝ*ÅòÅe®šðtW©&9¿¹Sü‡q&4QFy_ü!4©-qL°ò‰„Æ™×}Â1:²êÃq®ý)O†õªZ›²;rÒf;H뇼d¯àGl[P×¶øÐô»Õò~§Qø?a }×â´ÌWjéNÊ›²Ê•Ù6Ïõ$ª‘_^rvÈ%gK›_vÙWmËêÁ´œìý†3&P€ù´Àz-ØZÔïöããé]þžvÆ*Xßärý¿—‚^WáYkâ®g‹ÙײCà°8⌃e>»úAb¿mI ðmóO9  E˜ÇvœËÙ?ý/ñ¶R‹!iÇP!„Û¥L…·av¬ô£ endstream endobj 729 0 obj << /Length 1347 /Filter /FlateDecode >> stream xÚíœMOã8Çïý9¶ÒÆøÝÎu5ËHH£v´vT…Ö@DH:Iñí×IœÐĆFC› NM Öÿ÷øys:Wt>O`5 ¥T¥’;‰þ†5ùíóäÏÅää#!à1†Å¥#=àâ&ôÈœÅÚ9Ÿ2@f." NãU6û±8«圻–S0s„ã°5´UòÄËÆlLúvQ@)¯xPÃã.ˆ²™‹õÕI9äÊš í©Hµ×(åî”›¹ÛjÛbÛZwJM%>|s÷ÓŸýÿƒÄ~“™kq0³aç¬ÍƒytÔ¼©¹0š_k8hß­L€ÒFQÀÈ7ÏÔfSH™}­ÙùɇÌçvk‹÷ÕÖí;?‹ƒ¨ÃÎd£΢•H𺹲˜6MŸ=9Å JU²õy­B•Ùn2ž!6½Ï¿¨ä! ².š”ý&Ò‘a]©]ħnq²ZT;Ü É@™S.caÒ:€óíI”èÛ‹ÛJsl<³R)ÓêŽÓ9ìMÅ•P.l6d7›ø¾ÜûêE<‚†ÉAâé"A÷&´!SêµQT­×ŵ)0.‚,Í’'¯“š± µZæ ¡£Ù t0ÿT5aóŠ ëræ£cž2€F°­“]aïöDiŽh ïæšºƒëÀWw/ƒÁp˜÷ÃdwBkvB„é„|Sþú)Éÿ:C:€$©Ê~6þꦫ‚%S"Þ¡"ê~ˆYekM³ÒÖŠ¸ðŽÆFÄ(š;wr¢aÌ\‹g>äVºaFö=ï ²»ˆC€îgG*p¯—9¤ia| Ò• C?zl¯@Nø”’wèMȺ7ñwv­’âé]´Ê‚8Jó]õ. ôÈUökPä[¬Ø\ãyÔ \„ œÛ(pŸt¯’tŒ@ÃSi¤[Pz¤Yl¿[=B {‚Bû@¹ B5ž]í`3ìÙUΆõ8VÌü$KËn«ØTѺœ|±ïÍtý„~Ó­d),ߢ0ò8€Ûó"Nš…|ŽÑ{³/Þ&am&¸~§A­?,Ó×/*»Ž×ößÜ@>:›=’Wj‰Þ'y].C-—cp|'tgL¸O»\¦Y¢¡l{¨å2Q›d)D8ÀR|V]b³ýÝŽÐŽßÊ„pŸôt¹T?-­#µKé:_~‹î]ç˹ð´ðA¤Ëµl‡ÒRÿ2y`î§3þµ˜üœäï)A9;ŒÁ„³ºœÿ€ÎZOŸåT<é<7Ý:”éRYp}:óÉ?å?? Íl;TG„ÍËÎAãÑú‘ÿÂáð endstream endobj 605 0 obj << /Type /ObjStm /N 100 /First 894 /Length 2640 /Filter /FlateDecode >> stream xÚµ[MoI½÷¯ÈãÌ%;#2#"s„F@fYíhGÀavcZ »`£¶=šù÷û";mkºŠÙªÊvwÖ«W‘ñ…¦RÐTCnXZ¨”8ã[ÊT°j`ìS²ÀÛð׊•BÎŒµ„l´Q–P°WYCàp ¢Ø×÷à_ÎAÕ×,á÷’p;ü^84¿(4ÅjZ--¸ܸ”@¥‚I0"P(ÈÄ¿±@µá¦¥‚dö-0B4³ãƒ ÁUÂ¥µJl—«á*`åD~•†L¸TÅBæê?A8Åo ˆ,~SÌÚ°G!š©?VnÆÕ ?h …Å?@*¹ùKÆã¨…¢æ85”êÓJà ÕR䛂0û7$kÞ¨å ¥ù7bõ›Z b~@x©8!s‰W”£gäÊ.üU_U‹_ß×ñ–2U-á>ŠÓµœüª¬à|üiMµQ0#à4Vý˜Aך ªœ§4îWÙ9ã`jIï*Å?ÔP¸6èZ%Á¡M´«DKÍ?¸>t%É¡eõoJh’ÀœŽzcIC3§‰ovãC ”žÙ Æ”$Œ>eÈÜS*æßA»“ë´¹~'ƒRAÁRu9€QbÞvÎ"Á§ìò…6•â(¸‰_Í%2•Áˆ*Õ¸[P?܃ɯ€•@8ý ܃ îñàAØ>Û'/.ÂöqøîòúõåîìêÝÅyä)fþ>üøã滟O÷go}õ:žÚá·Ýþ»BŠ9rØïÞïN/wo¾ŸÌÀ“ÝëýõéþÀz/&} fù“ä^Ìô-˜rÀüëéù2ßÉß©ÈÇ»³Ý‡×»}àvÀ¬ŸbÒ1Ì—îÙRxÂöäÝUxåxl¶/þø¸ Û_NÿµÛl]œ_íί.ƒÛön¶Ïv—×û³Ýew|ý«ŸwoÞ>¼ø=¼ô/¤IdsK¡XÛ« ö€Àv=l²¿¸þØÝ©ÿÙoÚï9~Ø>߾؟ž_~ôËÎþÛGÏ·w¿½;Û={ò0lŸ†«ýõnPýä!¶¿þãŸÐãP“E7‚óë÷ï_m¾¶F¢ ô>ßv‚§ .¥“î¿ËႼOÿ·¿þýõ¿q}ãÓì°ñé ívã/û‹³ç»«ðÒ||¶/v¿_ù.HöQ¸½éýâ.÷ˆ»ýq"’¦%õç –Vÿ‡¥éŸRŠŸÎÏ/€ø2x˜t–%«ŒUÇjc­c=Üããa¥±òXž <x2ðdàÉÀ“§Ož<x:ðtàéÀÓ§Ož <x6ðlàÙï ‰w¹l¶Ï¯__õ¿ÿöîü?›íËý›Ý¾K6½Úþeûtûè%õ?ü, ›/ ¦‡-•cs7oðXpüÒJljØöSøÒÅÀà®"u·²()‘!<’b…¨‚R»—ÂÙÛÓW»ý’,jºÈ58"J†÷dÄR†«§{YÜ8ZZ’(Y ±*¢³dƒAèý<î|>­C†R4è1ç¥zŠ–c‘9\xq.¥iôôª=/DÞèê3‡L^žL…›‚²q48¹³©sÈ”åɨłèÿ 2rìÄsÈÈòd`7HzY(zaSj¬³ÔW·é’kô „È òeTi‘yʦWP].1!—@}àÀËj†ñ 6r ÞíHûŠÄ‰w›C†÷ý¹B=P†‘H¬ðzFžô¨ëçÅÕ$k†BŒ`Ä^%gw©|TMx…@˜Kzx zU…Ú;2å£ÂÈË ƒ-¶ÞShQ³TÂ*G…‘WˆÇ™rÄ ÛiHñ2küJRpGcyÓå†(ƒ œ%Jé ë±2uò*¦ËµDïV±"ú 7àfÈUê2+HÆeÓ²&X ü 2É*<‡Ìòñ˜a+Ž¡¬ ʰè’t—åÃ1£„a$ë9q÷iîõÛ,.ËGc†ÕTÒ9AscsnPc™CF—'C8ú “F­—\}‘â&msÈØâd¶ÓàßXqZŒTW9Ï!S—'ƒ0èQ&ä¸ì‘ÎÎl™¶¸ç%sWWÇ•\^¦ ×›‡TÜ~ñ *2ÏŠòÑxX–—WÄÚK æ=R¸˜ZËQi”’J‚À›$…»õ^­Ç9* Y\µÁàD<îx‡Ú›ëQYÈ ¹IÌæ‰b³·Ü%Jã Ÿ@ov™}C»¯ø atÇN|>PéþÞß½-½ãM2ãöe“ÌÃÿ£If£éTG©Ž&RM©zóûhJÕÑ”ª£)UGSª¦TM©6ðÚÀk¯ ¼6ðÚÀk¯ð|úqXi¬<Ö<Ö2V«ŽÕÆZÇ:ðhàÑÀ£G <x4ðhàÑÀãÇ<x,K6ãnõÑÚ'-¨}‚h(ìSÖ Í^¾0xÞl¹gUÂÎ ¹I£ Ëû^˜A´êí'Š}‚…zžŠLðXÞëA› %3¢’kC„FOðX¾Ÿ늢¨– ü¯–ÏKíuÙúÍ\¡æXöi¥N(ËòñßG>^“æ>ó‘$žà±ÂL6LþVLkÑ3Ãâ ÑéÑ5ú÷†PÇÖ{i¾O{¾ù>ç²|û¾ ñR‚þüu§ëþÚÐô&ì,Ÿ¤‰ åÜÍè¶ ø™/Ñm•ÉJAyi@:E|ì#>±œ:[et›ü ª;ïBæ E¬ÆsÈ,ïÜDï±9ȧ<…u—ˆ„ gOVb1êÓžV'”e…¡“ø°™£¦("B ”<¥´+ˆ£¤XF§¸¡¶É’}V9Ácù®¹ÏÔß·«Pm!ÍÓRÖ0”{­7@ ÒW-wi6‡Ì(C ä;2ˆ&4‡ÌòÊâ3Ù_{(j½“Ÿ“L(‹,w¼iŸ %hQâŒÂ¼}µQrw–/@¹àÀ õ´ ÃÕ2LºÈqÓ©kŒ‘3&w¯#wìS0š4žºJÜaB¢QïŒÇ‡<¢6‡ ¯0äi‚wÆÃHl‰i™¼ÂJÛø¶Úð!N¿RWygȇ> stream xÚíZMo›JÝûWÌžÌ÷Ç2’ª•*µwQdQŒ›Ñ³øµý÷<à Ž“êÕöÆ 1æÜ9çrærÇ|¼ ú RA*™ýdJ€Ì~Ñüú~ðn4¸º#` 5猦 @r 5å`4ž‚rÿqôñꎉͫ†ŠQ‹º¼l<žåOfZŒÇþP ä]¹Ãxœu›æåÁÞkˆd§º§YýÚ~½šd3nEì¤t ô‡ÜÞñ/?lÎ< µ–[£ûKmY% RJ¶é-•û(;_ÌÚúu fnp—V ¨ý#bµ8TÇpH¸‚Šˆ6‡rÃ$ýõ5‚AÎÅi¥ñ›&5jÝDí#HOZù›d­¡Ÿcfë·ÝÆÕõ3w¯])€©€DÉ¿!º´”¯ÔÒjE€%2±¤aHˆ„ز9´ªQÆ>øVs þ5šF™•ÅaÔ „0F°Ç´?0„µVQ" CØaë úË„ÿøÖ ^ŠBa¢<ŽŽ¢‘åBL·“KClƒ¡6‚w¦È›Àœª“´Žþ³µçpç¡¶LRmU–º”pŸ¢â)™´¤a¦eµI&É÷iš`æžÅy7ãËf•ôÈ*­Xýœ%i”&j‹æç–¶¯&xØídíÛ×Yüj‚*Æ/6ÝŸ ["ð•+›¾žLLa’øaŠžŸ´7Û +3nR™ïaÎŒ‹³æ®¶Üë¢ÈÌ7Ÿ oQ´mWȳ{ài϶K+Û½Iâ¼°Þ{_dQ0oUìâÌ}–ö[Ó‹ÏöåôYŸ vz‡&'B%ëÇV5[bÝf@»Tb½ÉÐì­ ë¶Æf‡#=zŠ\n3En³;þ^¹F2YÌÚ}A˜ð8ƒ> F¥ƒ)¾R°(wfbû3“GÙåE©¦ÿh«³”GùM2Oƒ°pdO“lTç.%ÚV÷?/&ãWôÇ/­øyîMŸ}å׊©ÓÉ7u:Üpºewy.eizœf˜züÐŽv³…IÖµ!v@K¬‰'ñ±Ð´½QŠ/;èvÞ#yòèù³öü÷ÃÒâ+z,>wøw‹8,k¸Žn%"ÌSüXápn†QÚ „¸²’¯Ú"YïÒ j{†×Û3õþ̵O¸—¦Q<1aÛU¥B{ªç ,ëYótu‘kç¬é[ ².nl-Y2~º«S&«~Aâ+þ«ªáS›t1ëÔ€c|a½Ö×Y_ÕŸ}̽ ËËR½Ù½ü²ÿøœ¬?%˜SâÞD¥õþW R-rÉÔo³ Hòâ)Š;Yòs%½:ÞŽÿ°=EIPr Âùàá‰þXª ø±¼hÇÈòß:3p?øâþNÇ¶Ö Ž)´K-`bLœVƘ­,ðo~‰ýç endstream endobj 817 0 obj << /Length 1337 /Filter /FlateDecode >> stream xÚí›Ms›8Çïþܦz©·¤Ûd›™m»­w/™Î,ÆJ̃ ¸I¾}ÁHlH"'$Í%(äEÒOÏË_d`\À8õ´`°±Kò¯„9F’ÿ ñòËéèx2zsB¡Í)EÆäÂp‘áR׿˜“™qnBf)æûëe‰( ¼p|‡ñbjæ»x&RëÛälÓ½q>F˜`rZ¾ï=œ7'VÇ‹q`c ‰Mˆ£ÆcCkÌòž?D™HBáY˜?-HM1+‡$Šov ×o.ãÌ´ËiäQ ç®É­·w¡º½Âc…96Pbåeן–Y°R/ â¨$6±82…?‚«–•&”åcs±Ò\­ô¿©P«·˜‘ZçDx²åE²6±LDVN 6X:¸uÞ³Üî=—;ÿõ:FTb|7cE2›ËF,–¡H3 8ôÒ´lÞÄ+ùÎk‚„h˜ +®YçLÌßË”y^¬"¿°BÉó"NÊÆ4°S‘eAtY3a.üïÅëz"ìñi±CÆÊ®¿ˆ<Š+ˆã¬%Êp̘Éù¢ *Êœ¬Â°Ã„ÐIº ‚i'7õq¹??Ðb ü¾Žƒ¡ ˜¢No©Ü!Èû;Ódååtר‘“Íe @üÖc¨ò{eApþ÷@¥µùÌ£vø3¢šfYÄí5 q1ý’Áb*dAPEíÜ t"ü¹ƒÂԱ翲r ^2 o”$ÈUÃ2×ÓP©ˆ¹]6ƒŒƒéÐä¤ò‰éDE”M QóJæ&áe«¤E»èE¶’/ÔÉ—J¾g«Hšd•€¶ÓO‘ºýÔy1ȪyÀiÏ8™õÁ¶Î#{ó$O@é4*W•ÝP‡]9y:KÒʉµ·ÊžfˆÄKü¹EÍMvÈ’x¶ò•h¿ ”³–£¤ò?šñ‘óaóà›`¶©+°Ûh@‘S÷ J0Â:‘A¹)© £}‘¡ß,ûš¨šÂôN2¬Üþ&âmӻؠ!:SD54Q«ì’„Ti&H· i7!—Ãi)¦Õ°pÙ×ßë˜ÝS;1ߨ¤·)»|¾Éæ·ÎêÔª.ؾÞï¼È¥wµŠvHʾ^EûøRô«ú ò~¦†t›E´­è´ØØÿÇA–þQÕQµ`H_²•é%ì–}ý)üjEøn3ƒJ‘é23È®ic­9µM»È÷OéäNÇ¢ëGò`mG ô¥ 9ÆpBeúªÆÿš¹ÄWjïO~ßúègU@•NZ­ªÓ†ÀNƒj¥Zhð¾0ö»X L™6 ÑËDŠè£Ïäöò7#ô7p>ª3³¡WY^çëj5])Ë¿ŠeV•°G›vH‡.h0 ¤6?Z]®6‡~N_ ð!8Ñ`Z«È­Wè ï‹âA!þaõ»V0z‹™³9z¢ýÀ޽Åõ!¦ÚÀ ­Lˆ«:RKIw?40.Z°çGË$›‡J2[ª°|Ä‘r¾Vl°+´BÝ`ˆV0°¦oÒ!Ý×RØSgiͰP³JÛî:2!‡¾ÃÓ–V5Ž¥ß}çi?/8¬;O‡ DÚõÍdxh·ÂJBŽÎt†[«Õ¸ Î[&.äOçkZ…"vZë­U±Èvƒê¼6AÜ’Ï÷“ÑÌ›À€ÅG8¨c»Ô5üÅèü0fùë³gÆÕú—¡…’vòvh|ý#? k!Ȇ•LƒŸ[]ç]þÜ>Ÿ] endstream endobj 821 0 obj << /Length 181 /Filter /FlateDecode >> stream xÚ]ŽMKADïó+ê¸{ض»wº;s h0 (Ž§Ã’h.‰`>ðï»qƒOUê1v`,ßr^ÓÝCVh¦˜… ~@Ý)ç ÓžÜu‹UóÜ 7ÃñÜvjÜ<¶ëºDוRÐY÷>o§÷ã= Ÿ—a%ÿÞîkúJ2V† æØÒjÍØŽóL}™áû: ›†}×ôróˆP1Ó«¯‰“kAVÑÉBþßþ6À5t endstream endobj 827 0 obj << /Length 19 /Filter /FlateDecode >> stream xÚ3PHW0Ppç2ÀAc(á endstream endobj 837 0 obj << /Length 1973 /Filter /FlateDecode >> stream xÚµÙŽÛFò}¾‚o¦«Ó7I0`¾²9gŒ}° gÔ’¸¦H…Me¢¿OUW“¥™ñN& êb±»î«É“U“×<®¿_Xy"’L&™É™V*¹Þ\|üÌ“à¿O8+ ›Ü„]›DÁdf®“_/~¹xqyñÍ+-!XaŒL.—‰¶†é"K2e™´6¹\$ÓïÞ<wùòýìóå÷´?cRû%g:SÉ\LÀ›°ýçŸ^âÖ‹——S m´Eñw$”šey&£’†Yi«2–ç†Xþ{fyúü‡]¾y?“<ýùÃë7A„ÁRœ TA%ÿÊŠ¤ƒgÈ÷¯/NœK£¿¹ÍAÔ¨¢`bJÿÁ|’sÃAæÙ\fyú¢«Ü’À·Mß¡íbwÝWm3áóÍ+9qOæ L£2ërífs¥Š´¬6äi»$Do!&yŽRdþunIÀS$³ÊÀ&Y§«ª÷}W5«{Å“Yn‡3P©v$WåI®Mùe&xÅ^¸r&ÒɆ盪_tU5eïöqcÙ—U |·ï×mµ÷„s¥ß3™ mBÐÀ´ŽÁ³m½¯®jÇ`¯àp„á`2R‘zGžè·´ÜTu÷*àÞ}»Žwínµ¦ßnâ{t½v,]Ùï:çïx= _ö-áÖ®Þ„ÜP15Š »r}äÛ—]ïô°óÁ°V=ÎIÁ¬-bæ6õ7È´ÄEp3iÒ‘ljMFٞ̌I=aŽ•Q£dzO\·3aÒ?ðÏu$— .Ä—ƒÁá ´¬¿D~{àûЖü8•͘òƒw±þ±lve},[¨tcü—Í⑲Ì5d.rê¹÷n 2©,u͵»WÃYfÄ Ï¶#ËV ´t®ƒaÙ´]D@z ™›tµƒðZHª¸åfÝÖ ¾§‚Oà&$ å<_— m¹ŠG|¹t!|þRm·Á¿H«£ä‹Oô…› n…Iƒƒ0Õ’ÖU¢Ð g0P@b:à‚œ@*á%*…À&¸T•äv¤·nC\‡èž0FÏ<ÕÕÛøTÒ²r`‡¦¯G!¡bWë1c}QšCºRVW«uLÑ‹÷1Å—m]·cîa2´CÁ¡à–›mM Ç£úa?-CU 9ßô®ûÁ?f,{TƒÔLi;´ - ¨:ã?ÕßuP#~ßU¾ê¿•äiNˆ‚I™‡iDå9 ôIJ39 Ôuq0 Ô„T2û "(CTŽAVÅþ„رV§Ÿ¸á?ˆÂ“ ŸciEZºHMO©If ˜ˆ¤ EÄ"ÕI“Mgý$}bìú±; ÆŸt…CÄ®b¦ŒPå›'3Ðã-ûKç¨;õ#pŽ„–ñó>£ҳƮ>P?huÔà¦ÑxÚ—îdB$ºÝ¢Ú¸rG¤Ýžp_J`»Šù2ôÖ0Kìý¡În{ÿ(þuÕ÷¨âÐÑ;7d3ˆÅâä1„æYŒ&µ>„€e]¢ÓÈ£›ÂiÕÔm¹@ƒ"{Q8N¶’,9íI˜ÿ-—÷2æó±%Qˆ£€P JŒi”8W̪**GU1˜KqèÔ¹šF;vÍm˜ï47q¾;Æôûm,ÄÓT¼²LT²ÐŒÜïP$ õÉýg°aÀLÔ>/6p1@Ž1¢‰1&; s— <©sþÛjKÀ Y S@±$ç¢cŽØ0T‹c6ˆ×n¯F „;—,o¥|fíÑêY(™hd®Éä œ ß*,Ç>]ð"|«È@_#AïØ,Ÿ={v/œc ÆB æ d'r#Ö„e×nNÏ‚™¤<ˆ£`‚9œ½½z?€yµÙ¶]Rû±¨TPüE>6ŒUÿ¼ëÊýSªhðøkß¹’Tø_<: ?#áòeõßžóÖÊDð ppïI¿÷‚dÔJ¿ª:ÕEàõÌí þĹ„X¦$ÜmÝ89âËXLÙ–Öp¡vlfˆûmôáB”´Ôí@×ÇÓä«ñà¢êàâîeðä O\vþ” 0-ÝÒ»N>4ŒR±‰‡ÏZ¥ÆÉq ަm¼ƒÞ?‹"~µ:½®Kïqzñô|ðj2†”ÄŸÊî±·¤ä,/²Óè½ÿƒi9¶Ù›uu½¦¾¦¥„:™ÔÃ5:+ÒÿîBˆTÒh_VMøË6¡+#0Ž«ÙðÝ+œn=âq¸öØ#•2ôN30“šêLâ,~¢ÖUÕܶp£nŰZœV¤ÓÆÆ²Ì|¥Û|õ‹¶0ÉÊ"Ñ’ÁäG‚«S¶Xt¦ endstream endobj 731 0 obj << /Type /ObjStm /N 100 /First 919 /Length 2669 /Filter /FlateDecode >> stream xÚÅ[ËŽ\·Ý÷Wp™dÁf½È" °-( †íEA Y$BŒc4œ¿Ï)gIV7±#ÞÛÍ[÷õ®b7n©¤V[êšפ½¦ÖJªÒRÆ5îER§¸×DÅb%¢ŸX"ÇEM¤µž£ZŸx¢&=ÅyÃ…–Ä…ñ:¥ÄT œ˜ƒŽJb :ª‰­Å…%nOÕÄnvhÚ÷€§ž„Ÿö$ÜÒJ-øÄ(‰F3NR¯0I₦IºÅdKZ<&c¹Ì|hÖ’ >næIµ¡õ¤•ñI-Icb\õ‚•“Á*ɨÆM&”kO6VQ+.šœpaó°+ø 7û‚ Á&,°iª˜昗±çµÅ†·–ª[|å©vÇñ1v#æ1øÖb‘t|¬ w.ÿ¹Æ :þzpÒkrŠÝÀú±¸¢®Þ{«@ë÷ïÂjÝ;'ï€ÙzBƒ´ôñx7HN°Œéx<Þ“zíힺKÌé©÷&/òCØ/ ÂØeÇ«©HHx 9«µ@¾Šs̃€•Þb$ ÿbD ›¥`ýDÒ;vï ƒ`a¸Âöá ï Ïœd.Fxþá T@“†<:¤”X°ëÎx–»íŒgÙ¸ÆØ!ž¸Âò°•¸ª5ž j! ÎA-y(;´(VBb`ÂÆ¤HðGÂ&‡¾A›ºž<9ŸÝ\ߥ'OÒñ$Å §_ã+ ¹ž7¡œåáÓüþæ³Ïǯno^}su—ž§ãWOŸ¥ã·W?Ý¥|Ô¿ý×Wøâå߯Ç/ñ¦«ë»7Çǯ¯Þܼ½}uõfˆòøèÏWß¿~ùÅÍOéy¼Âºe¬¢CÙû ¼íå-Hçœþùõõ (>F% …Q#y?Êu~OóÞæ8Ÿ“6GŸc¿uÒÓùœNº:é꤫“žNz:é餧“žMz6éÙ¤g“žMz6éÙ¤g“žMz6éÕI¯NzuÒ«“^½§÷GƾŽß¼ýînÜÿéõõ?Ç/nn¿¿º;_^ÿpüãñËç4n‚W¯Àdâ’Ë0YÂú°æakËE*¦}>dé›tüýÍ·7éø4ýæÍÛïÞàÙ×7×Ù3gûmˆÍ0rƒE¦ƒ•sØÃ;:ý¡<ì × ;žÐ#¤)“Ú ˜º Ql3e¯+¹ö¾¥m‡R{Ëñ(/¥g6YãÛ奺äðëÜ9‡®]3¬ýÿ Œ ¤—¬gžOY||y{—y?ÂúÁjJŒP€ ý2s^ýãåwW·¹ïCáž;Œp- ‘€·„©gTÐ úˆêL–ôLÛEÕ¼åð¦\ úâpAPá³Â$—À‚C ÓfpP¡ÜXWÀð~0VaXagÁWµ n¾F¶K "/VÄ;U³!Ú2ƒ Ÿ‘– lŠÄ€Â<tÉà‹ÄëùMáKˆ ÉP!†A«ˆª-w]Ár)PÄ\ˆ}³Ãbì¶f¿´¨×©A—±¾Âíg¤E¶oŠ6lu$£SZÔa㊜ß¹€´¨µé×…M©0tÖVÀð~Á F’ß 6&°ÁÐanw… WYlŠ,¸BU>é ©ìß øÂuˆaj±½êÉí ²SF&qË‘I±hîH¨%ˆú9 ûå#jF¶Œiž¹þ9 ²]BDXµ§\nC‰ÊéX‰h? rH‚WfnIN¶œ‘Óý‘c8cÄ' ùl€Q &…NÃØÏËÅ!è¡[ƒöž±ßt hÏQ„ˆøU)"Îå#ùÖ#ŒýÉ0#(p1ŽGÀšÆž†Q·Ã Ðר‡5„"5¹E9‘Öì— äÝ™{0¤ä¨ÊÀ·ångt¤m·\$`HT+œ¸xºv:¯¡v[NTáçe°"ªÇÄøœû9 ûm9!4Œòm0$2,‚ÓU—s@ö‡…ÞaÃÛPŠ*j)‘mÃñŽéx q«÷•¹ã_þú·%ß—`œ®ßþðÃcÕícUÖw «ï”\?¹ÊêÔÞ¯²FåùÓª¬uV%Û¬2¶YelÕՇ缾³jÙfղͪå\Z›ë¦Âý8éù¤ç“žOz>éù¤ç“^Ÿôú¤×'½>éõI¯Oz}Òë“^Ÿôú=½h!Ü4Gž£ÌQçhs¬slsô9Nz4éѤG“Mz´µJûPµHŽ Ñ\‘ßWi©žñ¾]ÍštDZ ¢§ ´jæyÐÔà+˜A]jÅZá3ÑÊ ]½çb,QŽ6cTiõLlß/àªÃ5C1~15Zî~È~P‘ôQŽº„ÝC4i|ˆ\  I#¶6d‚—ŸŽíyòWk#D±XcÕTÐÞr:`àrÁ¨ ÃÀKú¬Žº°ÙÙB`¹äÄ£ËÞt´V*´‘Ú ”· 4&U8â6ªÄµú¹@XïƒX´n tŠ´—Ðè Å=䩲#òåQ(F@°„fK.*ÅUuHq‡›µh]ʘý-9$Ë0]02ËØ%»¯ q»H½8"UÅç7,º—²¦à¾¿ ¿ˆbƒTÙ|TŒ{_ãTß*ä•ÑDÉØ´­¿rÊqU©p*5z˜…Öà\¢vì#‡1D˜>jÇÕl Î~k¬H\Œ0ÂP<Ø¿²è©.P懷8O6Í1t*·º¦å´ßGõ¸F¹E«pï ­ù*Úoi6d復‰|P 6°­9+Úo’£’Ü¢Ýè{‡ ä5gEûMòˆµ‚Gˆ/⌂8ŒÛ"«ö›d‰®ªúèŸÅq>~™, ò~›,efzÔ+1A^»¦æ¼ß&K´WÇ™Nä‘Ñ£(ʯ9,Þo“þ2²}•’ÅÀ,V0aÍcñ~›ÌÑclYÞŒ ­y,Þo“G–ëþ(;ÜaËšÇâý6y´,[)bäèÁ:làšÑáý™£Û1Žp†Šlàjjµß"3Ü%{ø­(¤‚e…’5#ÈûM2s-AP||œ$ÁÅäŠ÷Ûd޶fÿ Ã.&W¼ß$S#&S0`@­ làš ”ý™<™ÀôAb$Žt˜@_SrÙo‘ Î<wG“Xâ(zÏó+Ùo‘Éâ´I{¬çPÙ"³ö[d㱑a=À1ØÀÅ Kö[dâ8rb#5g0àÕu1Ã’ý6™Â›#”&EQ’a3,©ïµ¨â÷!¿¢EõN#êÝ~Õ§w¥˜>ìJõ_Ó•r½’ÿ\—óËû`Þø! (Ÿfµäh`­ìÖŽ ú°mÇö©´Àÿ÷°žA)¢”ÿ åÏÍÅøÕÊh†ÍŽhübå~œÍ²ùS—½?i@Æq6q³!$ã({KåŒÓ”'ûã¿ÛYËU™gÎ –8ÒZ$wd¤Úù£÷Çщý2…g0‚a‹ÀUmþÑÓú»Ï¤G“°–8•¨àJå~‚w€åÞx‘ÿåÁê… endstream endobj 852 0 obj << /Length 2629 /Filter /FlateDecode >> stream xÚÕZëÛ¸ÿ¾…ûie fIJÔ#@\ÚÜáîCѦ Er@e›^ëÖ¶6ztãþõá õ°•½}%E`5RÃáp8óÊrv=“³Ÿ.Þ^]üñÇHÍ”™1zvµ™%z–d±ˆ£ÙÕzö1XMÝTÅáz¾ÐIü¥\µ{{hò¦(¯ˆ÷Þîl^[j„B‰pþëÕ/ï®.>_(˜FÎIÕBÉx¶Ú_|üUÎÖÀÿe&E˜¥³;7j?‹Œ:‰ÞÍþqñ÷ 9TSŸ©i‘…†ôÜÛf[®kT"š¹ J&+›7LnŽ&XçMN¬¼&7k½óE˜ÆÁÕÖV–‡Uüf¾«Yn±ß·M¾ÜqÇ¿çʶªÁ*¬C¹¡žeÙl»ùk¾Úåumk´,p¡"E1-¤Ù:} î,?çJåár®Ò€»–ÜÕÖ´3@¢¶Â ÔJÄqF?ÌSðøU~ âPεÉÄEñˆœYe{»c–[ Nê]¡~í6öþW×3"Þÿ4Þò8± g‰’B7Ý»í©¦Ûõ‘ˆTix(‘¤ê>r¦S¡ÒEœ«vÎL“ ©ÔpäGà^Ú„^peg›IÉÞIÏž µw2ÂWN8ïÙ±cÐAŠLfŠ;Î2‘e¼}oÞ¼qÖöbá¼ÆÃñ:õ4t¹Ñ9¬ ûã¦q`êÙÇE,eð§‘pf¾-šª*?~’F²@mðÍþÄ! qœÀàr$ì/É/›TOyóòD÷ôeA°ý©álÉ… …‰ždýåÿ¡õ—JÉ—5þCß(R°b!âñçü,Ú òðhsމM&Źð H˜F°T©«º¡†G|rxGòŽŸû|ÍÔ¦*÷Ý0"à 9ã Yû|GLε`Fò´^j‘dÞÓúCsªt”ˆXwãý¤S2‘$a/sJžJ!É&~Ìmeqñ_üún07A"sÍ¢qùg&‰P Ã(¯-WÇQð[‹VD*¯§ ’Eý¢—“ &ÂÀ‰–ä.ƒÈeqÈ«#‹?¬§ä§‰HuÚÉ/%¿\5ùÁ‚ ƒwùjK\^'5ÖÅuÁ ¬,Ø®èÄooʶòz6õ+²œVàn©aË1´qc€¶ù\KF£¤=Äjƒ¼½³‡k‡A€Vq?t-8‡´ÔvU‚Ñ€Ö„@V‚B kj_#•ÓÐÎè(Â)ƒäòó˜Í¶ð‚4ål/ûv 7º²<U¦a»’¥f€G¸ˆ-+P`Yå˲eüT4u€ª3ón[zth÷K[€¡cck¶/¨óŠHo—scîÊw;/ß2òjøÌ<"«N`Vqhlu€7óØbK›T £Î"et–&¨¯O⛉a„Sg ¿–}=S4d€î˜¼Å–Zn+G™ )‰SÙ½%Sa‹"tnKg,dæUÙ¢[tgÆðÝÞ•pOØõ$J‚Ÿ74âX¶DlÊ ½àÚrb…GÇfì4¿¦Bv—v·&>¹vŒö!pÆgY­½Z0îoG¨:¸÷ _¸†õG2u nT`d˜˜­8ÔÍ×Ô‡ j‡Â±™Óþ@O¸³Ë;qÂR{P8Rë_ò’:ë‹8VÁØ_VÄ瀼G ?U’AVŽ”q"Ýe<ä–%¢Î÷Lå§]Kˆ €®áOұѩB f †¿ í@Cš…c› ¡)ìQÉYT‡°žô>=Ø*uQ7ãƒé”"ò?¶*û@ú‡é3*Õ„Ù£Ïè‰ÒHàúøìF¤¸*bWºÈ”Sždá´}Ç£¨öb]rGá²¾æRëËBhôõF·(ä|».Ðiœ}“²«#YðÜÈQ#žô6Óu¯Ý?¦®D©ì9ue$#¡Œ¹ošHÈØ<§®L3¬+Yðw¬+#8©Y<]ØÀ›Òc|ŨÄé‹–n ¿ZÝôg c>(Í4Šõ¨¼rp¢KÕb“…âãëO–éºòÕ Qw[ÏsNjטL¨5×´<Ï­† SÏ¡ƒÌ‚w|Åyä©îƒ&õ–7GkÚRJ][·äsj€WX'§f @È~níaÅoºü¢µÇ1¡TÁ5uÝÙK4´CÙ0¢vµ gI”^1³ä@ •5GžÞm¨û E•¨l<]­â¶ÝѰÔÙ=æH­ÞÀÌg@†­“º-MðÖõj.+唃¾mçùg‚îhq@q-VT|p›Ž/Çç~8ûÂWүǎ* áÛ¹”âìDŸýTî°;4´T}é¼®ðuß xܦ“¹¯íŽl‚›e¡{èì`:¼¿qÈpÈD83±ÒW{'FâT_¨EAÅ_³ç‡æ1 Dg)Djý¢ÒL„QxV拟BÓ A þŽ D§`0ýÖ—Û\8î'Á'‘w§.ƒ/ÿ“ôO]¾1ßú¶ùÜåªy®9âËo ƾ¥:ìöd,ôÿvýÏ<îëi`½ü¤ÂP¹{œ‡'cÒÇGij¸Œ"T½&Uqâ õQ Ž÷{ÕøvcŸU»"é²»p´ý÷Ú×ã=Q™Ð:ßÇ~ÒÚœ~$Š2\áW]*»ör¥<ëbƒŠ@Ö„´G}îZ!eÁš˜lHÿiÝõ­ì>“˘Ð/pÚšåßVå­­šÂ²œºu•?PyïRÎõ¬š¢4ö^5f¾÷.Þ[;L¡+îj¦.jw'b¼9`+ÓˆWϜۀg+/lk¿üîÌ*{©©À ©õÉߪùŽ:‘u²Î+Û“™#˜¹»>cœüŒ¹5ŒŠûÈÞǦ¯Ì‘ö—“‚îKÿ9W®0Äæ/¼ Þ9•Ë|¹;R뺵uMä£@Õý6£¿³WîSÏ+"{T£Ÿ`=üø€—g ­œ°ª#l<­aÜô¿½€Öç¶pÈ£m\ycø# °Fç Úo€X廕+@°š Qš ýCƒÄáõ Tÿ†_‚#UåX$y®3Pôdª¤ãJÔYˆƒÚm^\‘v˜»\þfWÝÇ€ø›“ü6˜p°K'ØÑçËçD-"“=½2gƒ¯žn° ÑXO4m…4ÔŠrðÙgK)ŒË-ãÙL`@ì•ûJ†ÐSõ®¸Þ6»#qO<(ÔÕ}“ž&VSŽ{vS‹Ä$ùaÖôïÆ"-T4n5î}¬ÓàÏÛü¶qŽ–¤Â˨«?à’|wÓl+> stream xÚÍZmÛ¸þ¾¿Âß,£1˽h€Kï.Íí]ÓýR$JÛôZ,m%:›í¯ï ‡”-[g¬w7I`IÈ᜗gFæ“› Ÿ¼¹z}}õÇŸc1‚I"'×ë‰âŠ©,™dEÊÒxr½š¼¥íl[Ö7³¹ÌòèÇf¹ÛšÚj[6õ ¢½3•Ñ¡ÅS³×¿\ýt}õŸ+kñ‰˜d¸J&x:Yn¯Þä“Йp¦Š|rçFm'q"˜ÌRèW“\ýýŠÊ*² CS5IX{a»·›¦A)jæÔ”ž:2â¾ÙQçn&xÔìª=Þ‹û€CJ ç’Ižƒ\t>ÓBÅ_Ök×p1¥9CasÁòB…)­±»¶6« Yg^1œ7™Ë® M¡#Xš4áMk´l§2v:K’¨£GÛÞS§k¶†zÛ¦5/Ý=€$𿽙PçÝ›áͤ9K…‚ ‚ÛÅùÛÉOú˰ȅœ¤ {¦²s,øDæLäʳ8í”r°LÁ¸‡Ë =N2&·f²åté¤eYŽR‚Ö1ã”#Ê;¯)ÈÀYÁ WŠ M7LwôêÕ+wÚ-©Í~¼LA<Ùk e1ì ÿã–P`iÌŒ°1_ü|‰Ã7@Áùs¿ò\(„íš½­­ioA#jÛ¦}9›§œGÖuÝXê/›ú³iýƒm¨E\gWëí¢¼Ù5»®º'ÒœšžÁvWÙò¶2ôÔ¬©©AA†Û{ˆJ ô7ýÅà­.×¾@ÉyG6pÆA‚¤ÙÿºAYD+£[4]6›«"‹®7h°9nÛfQ™- º3ÔnôLòèóL$Q ˜Ö÷ÊŽZ»Ñ£ŽJò‚™¨Ü©eI?"0TÔàÝP¯jêôõyÝáúÚÓ^n‚T(â¿Ãò¦´Ôm èVñ¢óîM‚^ç”1¯íµtA¦ÊëÂ\%ÅÉÄ­ÑµëÆ´OG´þ€ÆÕ =($½pN]ß{ {±èÑI‹Ìjzö»Ñ+³,·ºê…ò«ªHC÷ÃýFRÚHWnË npk ‰-1N:/Fw’¨Aù‰TóÓ3 ýÀÞ,­®hÆv×Yz±0DÑôÆUâLg_n5½W~8œ)Þ\’E‹{ ÛŠü:0öÆ9²bÅ£œ¯Ð3vÉ@@&†ªj<¬<¢\š[Ü‘ðª°muÙaðS 臦³@:ܯ áÌ×o¨½Ù™®  uùôúç·«÷‹ëýÜÖÏÖ}gl÷îdìncD!ÜaˆBuꈊÂa Nr;Eg‰CÃK/h‘,xô–^6Ë¥î@:¸a¡ëD""7EwŸp<%|¼ÛÌ’È)ýUcºz:°%"üÛéYù…Ý9aç_ÍEø\‚UL›õ8”¿óÐN€Ú”ÎÄAgiB ‘¸¡”°-õ…Gú™§ÁPaÎ-0sZT:…[³´žÑºm¶Ô#kGð…\ïü„œKãÀ˜ ów«8ŒÖ~r§™G!0N!p¹H´%2Pª]½pŠ%R¯Ïø¥E é:«[OkZ"™zG¢”ê)·zµê™‹,°H÷,2?!ED¸+íÆs-½úÃëÿš¶é†3šÚPt<ÞÓ»`6qÌ&N:RCm°èÒíà¨ÒSгZÿÒPK*„ƒœ‘¸§' ¤¹ç¸¦G¤?g$»¦Q·p år‡þqô–|¨m=¨ÝÔïÚÒzX[z쵩*—¥­î/º Ý Þ€nŒ-ÏÏCàDß'݃e®gü n"¤;ºG] d—€]‡ ÿpxñ½çrhÁ9J—… 3?†ÌCÀú ;ö±qºœ˜>äBŽoƒY^~O<Æg¹ÊÅÿÃe¤ÓçÉ;.w'. Y¤¼x¶¼¼*ËbAý‹O»˜é,9Ì&h¬V®o55†èÝ‚@¼t¸u4#ȃDé°ãšãU¯úWµïyVý`OgIôcÓãã#»«d¸©~¡íŽ’ X`ÑììXðØnÀøL []UÔ °J ÏÀ8³ó£|ÈS$+Æ÷›™…CÂ7×”;"7RwÖE_å;tnØÃsKÇòRŸ$Øâ{þq,!“0¨cÓøÝtžý0%t ÃÀWš¨öþ¶ASŠÙ|–Ž]H% ïÝ-‡sªÈHE4äÊÔ7 #­Æôôé.ØJZÈáYl–EL¦ò+ÐñÉi9|iK]QŠ)‹„|¼ðŽ zs?ÒR‹™õª¦ùäWèÙØÕz×QÜ­Ûìn¼0!E*|1‘(_Ãþ[j #]›v,÷BGà -ùO輞âD‡ö°\E^£2û¬Õ}*¸¹ëYŒ(yô\}Á˜¶†ÛGN‡5²#mž†à9$:qôÐEÅ€]‘ÞÉO,d¼ òîï =B'G¶z«z½]7í¾tM½•±º¬Ž*„€T$$™*‡•|9":ÉñûFÌ !ó†€ ¶(Xžûø(ú§€ù¡ ®I×üµY•ëûþ[I¯ôÝÙSÀ JÁTžû ÊÅ×s䢎8öbg%H¹û„¢Ž®kMNâçú\rD¬Uå^ÏÒP‚K·‡•¨´/ëÉ<úçL¸/,4¿_§ƒ,Îs)­«VåpóX1ÖÓ;C…4ÿ¶¬;WfÁWà6$¦œÎod`ìQÈÛ®z ÛkX0j4+ ïuÛ–Yõ5ÍÄ•³]5é’LSf OÈ4±† 'w\¦¨ÔñS2̓e3MÏøfš2MY P}4¹©.+ˆ)Yql”}Úq fgÏfFpðÐ= ˆú¢ÔH§$//™]œËO’Òxñ) _üÇ¿v’yÁ=¬Luþ$ÈÑ{žþ”ΣÂC>=¹¶Ò^~Ls/ýsÖ£”ö z“ Ô5‡?OJ|¹×:õÀBÈüÙRb‘ƒKKKQ¸Àã1]±OéÑÇ9èiÿÕº¥'ÈXxÐðQº¶Ô¦u§€Ù ½°aa0 CeT·À¢qåù—øÝl{@skåûé° É®ü²†lì ÍÛ5åÕô³Lü;D†™ò{Ù—zœ™aVm¶þçá› ¥úº>˜£(–»Y -š¦2a}c”ýo \- ‹þ¦á`ý}¨)8|=’êÄ7Sçs0®}®ã¿1äIœ‹£„˜>å (Èó=Æmwf4KƒsÍ{¬¾ŽŠÍDÒû9þ;R‹T ¤&Ð2. Ù}1ág]uã&,Oûaìð"dn/~ xÉ çÌâ¯]%߯ò}‹ä´*ÏU—ÕÏS”}l)4h÷÷+LƒÀ/žûÔz›{z¼¼ØPN½ÅA÷’GDËÐ~©—Ä+³K~¨7òcB࣠–ʃ4{6O¥„×…‘×miÖÔ}[Û‹šÍj·ôa1I”Œ’ÁñÂÑý(€m endstream endobj 873 0 obj << /Length 2177 /Filter /FlateDecode >> stream xÚí]oã¸ñ=¿Bo‘Ñ5ËoI ìw×ÛmmqÝ Pw÷@ËL¬[[òêã²î¯ïCÊ–ífãM—,rDÎ ‡ó­Ðä.¡Éû«oo®þøN²„1R(Å“›Û$ãIVh¢er³L~NUßõmUßÍæ<ËÓ?5å°±uoúª©_!ìƒ][ÓYœˆ˜ýzóÃÕ÷7WŸ®¡ C¬œ0ª“rsõó¯4Yü‡„Qäɽ_µI¤b„gÆëä§«\ÑC6ù ›J)Ÿ7³œ¦Íl.8MkªG}sgû•mq6ž¥ƒ9+Ò]3à‹Ò„õƒ;†|ü>ã*5meûš[|nm³ì@BdiU—ëaé„äN §¹;Y&áWæ:iá'Àïìõá¡„Ì e°Ïd¶[[/gı¤ Tqë'ÒÏå<"Û¶ö‹ä eü¹ÈÏ%œŸçY2gnV#ÖªîlÛ_$…9Wp…À»l×ôái¬)ÐkžG xF Ó£Pšö‰¤'…ÌFÒo¦!ÔH{k[o©Ýk¿ –ÂÆ›©Î‰fL« Bò‡ Uv:A‘ƒBè<'pö šH8>¬A§¬BÈ`'쌃K•®DDÜÚäö,æ(¼“'Éüm€"TâM ‚+ÒÔ]rA ]+Ë2”úÛ·oîÈ]è~=ׄå£~˜ ’&ûOzÒ°˜LïôªhT3å68}Ò"èØ!ñ\Oð¯({Ã8DèmÓŽÊt^—”äD^¤Jû€Ä¸ ëb‹ð cÒ1ðÃA@Bâ¯G声 þX êz9w“p 8ÓwU½ (.ßE€:­kèÿRß8ÕIž#Wß<½¶’z,o«/”»‚5§L‚3HÁ§q¿WKg1Ò7øì¬i¸ñmÓâ.:ì3=¨A°8+îÃæÛ[&èºâ"ý׌9?àÛг€Áªi°mXVc»Ã³áMMJRÅTK#k¨ƒÑÆH±4‹f¨—®\yôÖô1@¹³ïFwÓU®ì¼¤ê”Àf®ØSªNI¬/¾±Àm>¡ê< 3©:ñ VRH¢sý"ù›£šÂ¿­úoÚÖì^¦úlŠÛÿןÞK½Àå³Ë›Ódÿ¼ôÁCpVÀîÀâÕÑS˧Ë]Å©ÃÏW<‰œ!ø¤xâó_x®ÌŒÇ4ÖA\@|è䘲ž+‡ÀṎZ¯ó$¨a>¶ ƒë¬>et-oŸ+Æ#—0q d›án÷_W”˜®¾ž±< °fñ±ºÀzÛlöœãù0k3KD&5ì¨<ª6>1s'¤ráit: H8±|ß 0Å·1ÿ¯–²Î6&jPHtáÛãEP˜uÕï. uB)ÂÅS"à9ê ê ª®³'Eº2‡‘. ~ÁH'¤"T¿P¤{á>Ò‚Qå8ÃÅ3ôZ/÷·¡~¾iû<ŽörM=5@ÁFq™«¥šð‚ůKÎIÈœ+ŸCž}o¯gêÐÙÊtÑ6ƒ±auð[bòyàUíÛ|ßI‚5[Óú¢ÛAÃÛnß`á±ÃàѧK¢ ú*l7ë®Á-Õz=aÓÛ³EhìËxǵ٘nÚãÀ¤“~Kô‚¥ÿ\DŽÔè±Þq lAÕš«!ÕóÔß“};·c!‰ý.(#ÿj{¸r•:1ð0;øÄnp~ éɹ¥±[Rš_èk=7‹ÆúÆnízÆJûÝÖÆŠÆ}³[Ø Š­)Qû=]ÀrBÚö%‰YÒÙ΄å ß½Ešu3,[EZ¶ÖôÇj⦟†ªü¸Þ…%­5]XÊŠôÇd µ/`óô“ÖÁ"„P¿Cÿf»Dÿr½ÁÁ].òø(žU&Â÷z†|2 i„ñ1Ú0Ëp#o_nð·¿?ç8võzÀÒõƹKÇ&è–˾¢:¸×£­àš’ªÂÊ¥íʶZø> B{Î4)#Ù×U=íÿ€d—ü×ÄùêÑ<8=í¬]Ã|·2[ìEé08¿æ<ý§ë˜šõGpa3ŸÿA’wÄáPÞ" endstream endobj 885 0 obj << /Length 2586 /Filter /FlateDecode >> stream xÚå[mÛÆþ~¿‚@?œ.ðmö¤ˆÑ:h€¨sA?8†Ê“¨‰<“”ÏNÐÿžÙ7Фt¤x\ôµa‹Zrgf÷™}ffµÄÁC€ƒï¯ÞÞ]}ûŽ“€ Aƒ»MÀ0C,AK$yp·>,ªË,¸¹¥a´øc±:ìÓ¼Nê¬È_™¶÷é.MªÔ|aˆ vóñ?Ý]}º"  $)H¥ˆ`¬öW>â` í?±8 žôSû€ ‚h(ázüxõ·+lmíÊ‘!¢CR#( Y#¥Ý‘8BA‘bH<ÍçÒŠ0“EÛ“Á8%Ì•(Šb3YUúéæ«t¹M“uZþŒ†ät:¨ bâÇÂxEØ5寺¹e/Š #°òÔÆÌ•ôcãÅÐÔ1ä/yº/òluª›ƒ»‰¿@w× ;ržG°…dêèigõ„,˜I˜ÌùY‡X®Šu:à ¬ 2B¡Œºf0:€¼¥ŒÅpͺJï«Ýýfõ©z» CoAÈ<Ð)E‘”~P§Š”ô¸·E™ýZEî–Uökºü|CÅ"Ù†€÷aIƒüÑ2„» ðG‡l_ â>Yoxè.e8x!L©à‰a=öÏ7D,Ò²ÎVSÀ÷aM~ÛœAø}hmàoku€Éš»€CQ6Ëd iJyq&ÒcOªÇtU/K•-³|S”{)=¾Sú[øóà{QêÀï(ºæørÈx¸û8ø 8Æü€6Òcß”É>Uا#qÞ‹ æm†0÷¡´Á¼­tóÉš»˜CwÂø<Ì%C2R/˜KC@®<2ˆ_@ô^Œh`o[A¢Ü}hmpokÅ}²æ.îÐÆó`ç²ÂìÂPú>)¹â Rzð€È}Ð@Þ¶€ îCiƒx[éHJ?]qpè·»#sà)®3C;&±»W™Ýçåý Å‹ÃF­õ `iŠçÁªÆ Úf<àóu6>ÐÖ9ºê'êíºt–x^Y'IVû)ë$Õ¤¾*òª.“,O×ËÇDÅú:-«åϳäa{æ4è·ìb:ô[:Ç`²Þ.úÐ]mdÍBsDˆŸÚNbCHzè»"YCJ°ütHò:«€ »/³/àû°¦¿mÎú>”6è·•Ž®ýÉš»øƒ˜˜ÌÛÛQŒèðþÀÅø‹Ø°‘{f÷QÕ¦î€/ ï÷N·îÞ92PsdPª;–óÊ00qê§ ¡! Ôo§óð|ü£¹ÿ¯”|˜æVmǶè9P¢yÑënGïØÂ®¹ëÐÒy%š1˜â§DR kw^ä“ÉÛ‹E´M o/Jh+õÉš»>ÝÙLJà…Õþå.À EçîçÝa„¿'[xá2¬fÈPXAwÁæUZ‚ÆÈÓŽŠ`†>ÚôýÜÕ žÞÛüšò¶éÅ ‰ùúPk+z&æ–æhÙ&J¨9;hïè n¹D Ê­€¦ÜÐ]ËõíSVjªQ妽)$ÎÔ õ6©íÙð¿ßDMµ±rÅß>i!§$¥~ð45yv¿³m÷_myX™7Ž,gŽÀ¹J§<ÞÎ;nS·Zp¤  •òÈå'½Æ÷.“hm˜Pªw³lŠò˜¬~ée½ (*#êßò•:¢7¥Ò¢‘2 ç)Z‹éÈY !±9dÚRÓ&S+Ø™ÒP™ÚÝí²–‚¬«ÎbWŒ`ÂmŠÊˆéØi9vì'Ì`Í+«üb}¶t©–×Pq|©fN¶«ý?lô4”H˜åfn¾Ñ­ÒR´šmòƒ¬þS›œ¦/ÈSZá°ˆIÁ‰2"÷ÞÓ6u üd?{C±ê®*CL€ é“%¡q"û$CDBÜR¨ÇhKÓÞjnaÙ·W0àê¦NLlÚ\m‹Ž#{µwƨY5n•tÓ˜s* „µPÆ®ŸÙ5¼UµEÈC»y÷<çE2„\c(¢ä$Ƙàl"­ é-hª1÷˜3¬3Ý))¿šïIչݜA2­®f9*à‹2}Ü%«~RQFYî’ÜLœàPoÑ~²>ÇmñN¹ŸÙbUPyA²Ü¥Sâ)‰`UD³âi’Fß!Ã1¢lV<=ªéÔ&V°§xJBEEvÉmöv‹åù¸>·¦Ã˜Su·\pòV’:±øêܦëñ¹û"ËðóüÍs¯>túØ(Š:'éÚøá¹a¬;sðÛÙI¸~mg诮vX! {ÊÎΈ“¡Ë¨YñdºCž, ÁÅKÂÉÙ÷fayùé¿~{æaU2ÅHR{(Š 4 )]|g^ÿ}[féÆ\þ9¯KŸŠõÁ‘ŸŒ.ÂqÂÜýè_V endstream endobj 900 0 obj << /Length 2131 /Filter /FlateDecode >> stream xÚåZmoÛ8þž_¡o–5—ï”\ëݵØý´× °8¤E¡Øt¬,¹’Ü4Ü¿!‡R$;ëÆu6ÁáZ "‡äpHŸy¡itÑèÝÙ›‹³ßJ1FR¥xt±Œ Lª‰–ÑÅ"ºŒ¯ò¶ië¼¼žÎ¸Iâ¿WóíÚ–mÖæUù iïma³ÆbEFÄôãÅÏgÿ¸8û|Æ`1äÊ £:š¯Ï.?ÒhôŸ#JDšD·¾×:’Šn4”‹è׳žÑ &ÿëë ïß 8ë„h&"£a(燹'„ªžùˆEÂx¤ °’â %œˆ$pØë  )¡Œ gqt© áJ¾µ–2¦£Ó£$¥)sƨ$†›ÈÀæQ•à±M¾ØºÍçYñ©Éÿm?}ÉŠ­œOgšÒ˜'É+wBÀpÆQ2 c²fcçí§Úî§¼\VõÚŸs7=8ŒâÉ3 4…m ›þƒ \–pøBÓ `ƒ,ÿ‚Ÿ^ËÈ&›ß| Š.×-ÎÆ”Å€¯[1þál¾eа€¡ÌkßcÎf¤¡ ¤” õGkÁž*:RÊ#T±;ÝþK‡[@¸n öbïß.°$Bêîk¡¡C¸Á n¤ö{òýÓD—3ÇôËTÐ8«§LÅM xv6[7£I~|ËG¸ZÃSصpþÿš2Fãj; ¡ãu~½j±¸Ê¦œÆ_Ü)ešl®bâv•µ8á4q e¢Qø]âûwáÂÜKÂ$wJQ§pœ@‡Ð½¶í¶.Qg'Š¢.“Žõ›¼ýÕoäAq@É”1½8Y»²5 [S>XZ‘D Äúk]gw¥‚K*’~OÉt¦t_¬ò@r˜WH¸Ä®F@‡¼)'S–Äpð<5 ´ÿlêꪰë@kð ‹<õÐ)ìGï5cÝy‘5Aœß·M'ôbÑŒÄ_Ú)Wñ-Vð^ÌŠüf Êî,dšÄŸ·Y‘OYÜæ¶AJ[¸8ΜIŽ:±™HI<°º3Ñ8ôv•ÏW •¢ñ­8©‹«mÖ/j~>os¸=¾XTU(e-~A1-é,񴧾uÓ¾ Ãl;™*åìÁÃ\ÜÑûnæ½lê%)œ ”æÐ¯µ‹ó?°#Ô­$ØP}Šó €~*› 01T›S¼‡Á4Cï!0þ¦û°oŒW.øT¢¾(‰Ñtèr€‰Q`b¸àx ¯_¿Þѵ±‹Ú™þNÛ£û?AÕœÙé]‡¡ÃÑß]ç'LèWêþ±+Á4eœ²Iïü±ûøH_àøCÝ×,`ÁSõ΀ßw¾ë›KðÍ%x{~'.ðnðhJëJ±¸ZbCë Ø—ª«ßÁ¹ÃÖŽö%ϰ&[À˜#eS5yçãC5+aˆƒ·¬Î«m/ÐvÛX{¨,^ÛvU-𠆀ã±àA(hë»Ö¸‰°TÕ¡Ç­C¤* I˜€ÂHXU{ÉãléÈKØfbÂêi¿úc0D8V.O°ÝD§ú°¾1!@ÒSPd0ÏE:ÎÏ#Â67Oéð¢ûã§Q¼÷“cçöU§ÂûÔØ‚ÝõïRϹ|w™|&ÌùúÊ ]0¤ .w¹Ü#íƒù>†ÿíïéêµ³Û'¬_½¸zqåz;‚J܃!™LvÖû¨A+ûõ<ùž“?A—'Wbòÿ­´‚?ãõ†pÏ;25Oæy p[4OÇn‹Ö‹à7ø'Ú¸«ë).3âs¤´«|¿.ƒàj)CØxjȈ86Æ5ÄÈ>ÈE/1 ~Q9\£‰·ÍHncŽË!OŒ)?ž†Ù .!Î øq§Kã WÞÿt¥¼lm½-ò d ö̰ ž„|_³…çë¬@bHNg Ú~›&>Ju 7e纚OyfÞás¤Ùµ¡ú“©mÃÔΗvÆÒ>àÊÞB¼;Š@±²¬«µºÅ¹ù®mݧµ©‚ Zí:¹ cv•u1ömÇß%züðä?ÎCåFš°S{ºyȱõ`ã(·PE¶w 6:v§Ù,AÁfݧã·å7òR*’A®Y¦s͸„¨lPêõÖÞ°64NBJ81Fï&[tu6-d šS隘{ƒÜÝéÃö8°Ä!hŸæv]‚â>Û‰ÖìÚšAÚ4«CWL ó½ít;ôÖÍÖeW‚¥]o {L„¥ Ð4=ÅÈ0ñ'5¶‘Ló²F†%€iòÂ4Ôg11Ww­mÎe‡ÒáýÖ/닆ûš|óþ€†Ö—“Lȯ”Ž>Ì " 2LT(±'2UÇ_˜ýk —"¥æy­áÂ1%»[Àݳ¬î­ùÓ> stream xÚ½kã¶ñûþ ý°rqf(¾$è=ôÒ6@Qän|¸ÜZ¯¼VÏ’¶zd³ýõ™á²${ۻͰ$‡äpfÈyÊ<¸xð÷«w7Wß|§¢ ŠXªµnÖä’ÉXqj˜QÁÍ]ð)¼-º¶kŠê~±qþ­^õe^uYWÔÕ‚}È·yÖæ4,brñùæû«÷7Wÿ½Šà,DA,«`7Áª¼úô™wÿ>àL¦IðhW•Ò±þ6øxõÃw´-‹Ì2a$î4QÐÀÄðÈ;Ť2–;$A+–(CœÁQ,²”^~Lði©9ÿ‘•å ¢»¢í²j•OP󘈚K‘2™$DËÍÅgÌ Lvt›wy^Ñ {\D<¬ÝŒ¿£–Æ…mã°óX«¾¼Íê×ëauê¶ÀÛô›Ý ›bµq‡y<þTà 9á*¥gïѨh_/„×p¬Ö![,%OÃ5M®k$F™0_D:ü5+¶9ÍÐQvÿÀ;Œv¼Ã€ßrEœ0dÕÝ §Aá¨Ôd--°·ùª†c>Ü« |š}Óm¨ÌQ/krêìøm`“ˆ˜1)aú±):·8s(ûj…’¦Q·É:ê­²íªßf]Þú·o÷`ð˜÷·Ã^"®ž£’®ÀÒº‡ÿáéRžëD%MÂL$c$JWË„q=håE‰ÀHͤL¡àˆYÌ¥C±OÚ>dtLÊànÇÇ \é˜ -=â&Ö1ïi÷ åÐÀÍ£jKRñ Ä›4p–ò4rfÄhÉxÓ5ßåë©a\à~´*uhÇh à¹p âÖÆ ÝúÏîÂÇÈaö'®y–׀ݹ…Aô-­8›9+øô%ÓÊ=Ø&ïú¦š™­)¡JÃ…'žPKŠ;]Ù³Ü{úbmeøeÎŒeà lŽaU÷U‡„œ,4·MŸkôŒÚüŽ"i¸>þò|5ØWF@©3t‘½ùÔÅàC…ëÐÚÛzß,Ñg§±5>×h™Ñä$`0Á†-•Ö‘$Oðì%§Cœ‡Ç¼;7‘Lùò娄‡exê׎4–I‚ÖlùXذ€ä(VÛ¾-Ðìþ‚ÜÖc¾¼×‚-ežU¥3µ°˜L+€œIPaŸüœ a4ÓfÐÉìË-­šr v‡EC^WÛ'BÞæ°µÁR&ŠÁƒ™:¤ zš»&ÐÀÑbPÅìu äðö…KÕâƒ\Æ,Š¥_®|ÎË߉Hàm/ÅêñÑ×"ÁÙèa}™w›Ú¹êÿô­÷¤ˆeîE‡ègä8#jÐpÔnêf!u†Á‚Á¡žãJu‚’z‰'Õʰ ìQ¢À¦H^àIGÇŒ=©C|'ím£ƒãŠÀò¬'Õq öÙiÁÛ·o:Ÿ©—<ÇñXgù—™Å·ÀwpÅ#ï!´÷Æy „¼ÇõÌߟ´É­l½~ÖU"ø¹Ô—NŒÖõëK$?O\…––Ø$ZJ2(ß[Q ôes‡I…Ñ`ôíJÔ2 o‘ˆ¾£Ù·Ûm!œû€ÛÚæ5ØókV›|õuy(ɰôKéò) ªdI÷l±Ô1ÿ )‘bZŒ3p‰ ûXÒwE„ÙωYÕÑZlû6§éŒÆ£ß Ôòl×o0gÄÞCß@P"tçZ½ªÚdA4H„ñP¸Íð+´ä"ÜXÚÅ£ñ7cJÄpÖ -…YÔËiý!"”"8ìQÞ®Ì(=¤Qÿ@Û2>³ÛÓWæe é¾Ñx»2Ráã&G!b‹Þ†‘6 3ž7Ð7y9ÎL[ZS¸ô—Ò3Út¦Ëž¾ÑËÈȱ4¯WÈ~rgá-|u?){4܉ ÀòmŽ¿íh=1´$£áŽÚ%Áû ÜËAFáe]/ôHÓ”]ÂÝJ…m]:Èik¿“´*VºÉš;z†ökŠr:3./ÈÚÎ[Ô(¥™ÛU5;Æ`½cÌÏì~Ñsî[ LøwÐú}C$ô¿ÞM½×ü.Z1aâs~ßrà78˜B¼!¢]) l¶á / ùJUŒd¬öÂT,ÃtNßo«UÑ endstream endobj 914 0 obj << /Length 217 /Filter /FlateDecode >> stream xÚ•;oÃ0 „wý Ž2Ш$­G¼&}ÙÚ èdpÕ6êGë(è߯5C.HÇû@x+/n4‘ªŒaðoà\e•Õà°•û.žâÜM±`·”wÓá<„1Ö±›Æ›¬=‡>Ô§R‘*‹ßˆ{/>¥7”SYZ8 b»C8&}¨Êj _×ÚbgÓÞËxøSó:å­ØºÿÄýM[VÊ2eZÂDaб\·õG s†"U,,³|-4ʺí\0ÊéÜ´Ôk¿„ü …>O: endstream endobj 928 0 obj << /Length 2415 /Filter /FlateDecode >> stream xÚÕ]Û6ò}…€{ˆ Ä:‘¢¾îpI®×KÚ^º‡>¤Ž+Ó6SYr%*ÿûÎpHYòz7ëݸb%5‡ó=„ã`ÄÁ·W±»b0Æ räi•‚ÕîêÃ/q°ø» ŽÊ2 n-Ö.)‹xžÁ¼~¼úÏÕëë«¿þK°€±¨LS\¯‘¥‘(ó O’(ÏÓàz|ßüûÕ×ß¼_ürýŽðóˆ³T >Lá€%/# ûú§Ãïûê›ë9“YÉ£’Oa’‹(/r†‡&È\šY’FI)èØ·ß]¿·ÿó¿o®ß~ÿqËg·[òŒÙKSVÒΟ¶ºV‹eÂY¨ Žq¨{únZC“•^/xþǼj‡eZZÜÉFï‡ZEðÝÈîà6J#í†V8˜mÛ¼„¤ ×mGPµ`iøYîöž•¡×͆¦f«œì³™®â"âI’²×èM7Tæìµ=æ’‰H‹/›Õ9ª$#2OTv<œ£)bÐxáÑvíj¨U—*R’bZ„•Ä+§ex£ðÛ ›¢$W«ú@_È‹Å4z窶é‡É>Šÿ I5!ÑM©–a¿“uMP#û_!`Ýj;;™]_õ{Ui@x *_ÓxhšÈNÑÄNVJÖ–!üh¿óV›­›mÛZ-oÆíDåG–…l˜ÈœÉ]o­–0zsšæNŽ´´ïZ¼î'½R=AÖíÐѬªeß+ºÞUñ4%¹€ÿ¢È‚âÃàûo¯îêÊ+ñµ6?šNÉQuAæTñ™ˆÒtÜó\ò(ÎÒ ¯¼½Ý{~šG`c_ó|ች“3“˜X0'›Jg.õð(žÊ£ ^€]'GY,ER@œél*4ƒ®qd`›ºÚÈú%ÂÐ/-/ŽÑC­°îÚ¡èÆØÐ´Q]ï×MZiüç–B—ûj+#k7wq0KCç‡ ³\$s?$óG /òкtAÑâÉ‚ÙKcÜ`h a:ò@¸äñþ8ô¡SûNõªqŸ’GGÃÖ4Ž¡ÖWz‘‹…}´Xæpæ[· @[wHaY™°“jT'kïæÓ»Õíȱÿ7:ú òàÛ­c°Ô©µê|Hˆœ®(0á:eÆå/ X–\ôdŒËDÄ.ž˜Ø="rB¤ÅFî(´pLÏ\`/;0AËÌVº0(÷{ú·y0lûP•ÂçVu‹4 £g:ÇI}T¸ÈxÄŠ1G¶7Ue¬gðS7àa_ëJ­¬ñ–áÇV7ôòì&é§ëGp5Õ9§áè*­Ã§ÈMè·6F5nË^V¿.ä{Ozh–.I§³€rÄ5e,T¦ãÌwI'Éâ°×®h€õõÐTFƒ7Ó§u'DÁ‹´!㹺àY¥yvaî(¢3º@¶¨TVeÝ·ºqÕI(I¸5Í™‰b¨zI¦Ö+ÙU[”•MèÍKoÒHŒ"Ÿôf‘†ÒÜÁAêZvsË–4P@š[vo/|6¿¿öÞŽÎS”®–€ är½iìÑ¥;¤ úÈ¢õ¯5ÄœÍÖÜ* ÿ &©}Û÷ú¦ö;ìÝ`bˆxžÆt(:åìY“uŠ–– µî͹€¡†—| •8·¡ã¤HR[ÌPdÂ%º*L¶-úÌíÔsh¡7-qsu,«5ÄkEJ.­Jåa³¥/ #êäIÃ'¤";­Œã‚˜†¬‡Þ#ý=sÁ Ôh¨®ƒTEͰð²¬ßŽ+6„âd”̱ÄCûÉŠéúXÔá'|©zMs'u˜Y)ô§”©tœÓ9²IhÊZ?»Ž/B|Ý 9¤²]‰3té"y£ÔʆŸ™sÜ-wG=MöbBp^°öyÁ»…õçûË].RßFA³ə 1¹‹Å°Î`¬;:Èâ­übC‹f¤g»+û’”>½åÛbv΀` *ê=ÄkmÅ‹ýP¹Ù?3 žEy6–Å[õùáÂÚϯTÄBþ®8éïÀJæ!‹â|,¿BéÊ¢‚ ôw‘–‚ W¶h•82×Cöìõ1ŒÐR¯ M¨”›ç>øÔnì(WÀÆ wxTd2l¶ôúnêNŸ§W*2/HÐeôi-ëC?6…£3Œ!â¡.ð•+ÝZLàôx ¨TM¥|Ï×|¬ôŽ=¢pïP4êy{ znþñà"Åòx¦*h¹Ê£¥¼GIZ&lÕXÄ9ß'”U­P9¶#¾Ñu7ëÛ~,o‘yݻܗ{xêv²$æh;TKÀl×b,HX)ª'‡Aƒ ®i¿ÍŠÆÍÉrEÛ öÙ¶^…Ž…‡¯UM©Ì‘ñÔ]¿q¤¼V´ÉƒŽãËòÌ–þnß:“‘ ÂVFõw2 i =€H¼µ¹|hŸ ljH]zÇà?-A¥Ìxªó¯FêzŽ0Ú1©dïµË$}*$AïðE°¢ÙÓ~Kžä¶Æ=yþKÊbòüWPL¯3ãÐ C‡œ=D…}d$ w9» ™œRF1c“S,Àxšxº Ög Ç'ï³ãÅ1ºúHÁúÝ {í3g,ÄQ—ö™3ÇÛBZáå±Òù[l%³A_ÍÝ)è–YOJ’_dÌ€&£íNC:&€#¿Lˆ³/9ÑÀÌZR¸µÈÄ庾kp˜”2vÁùËY}ÌÃ胕eT– ]òÝà}£owꞪhR€Nº [rŽ©Â÷ »À•XQDI’=Ç•r ”–_/„]‘?Ë—ŽÇÌ|É~‚3qkâh¦©ObSÈèLɉ31à„Áh•÷—…5kzè™\8G¡Äó3sjó¸¡ÎE¥KµÂ:‘ûgYœAŽnõuôÞósœÆ>w§Þ+³drg±Ã'Îý¨MñM³§l|qÂ:tq)›²û ŠNõs"ÈûÔ…µ\©Jï0_¦#W3Üü Uôy½yü¬'Ђ¤§Š³Z[c­wU_]GÈ>w^@ø„è©`ÌÈa¤>›?+64b‹¾QÝ%Š]ýQÎ÷˜:æNOúD;zN~‰+ºfÚ”ŠøT)/Il`ˆ³}Ž!>ŠÆî5Š'd—W wê !²'ÔcgóŠˆg_h'¾ø“‡. $e”q÷†á0~ŠÕ@ endstream endobj 935 0 obj << /Length 2054 /Filter /FlateDecode >> stream xÚåZëÛ6ÿ¾…€~X»—eø– ®M“Kq-ÚíÞ}I‚B+Ñkµ²¤ê‘ÍÞ_ß¡HÚínVö¦°è9ÎüæE/n¼:ûòêìéKNBP, ®VAHƒ0–Hòà* Þ,®ó®íš¼¼Y^Ð0Z¼¨Ò~£Ê.éòª|bh—ªPI«Ì†bËwWßœ}}uöëmp@ WŠ–Aº9{óп 0bqܳ6ÑP¸~<ûá [1A@økn3¸|5â,#$ B K)½Ÿ{„°Ø2Ÿ°ˆÈ(Šø}p@#D"f9ì‹u¯ 1„ŒvÑd.BDs|¬2všÀ0„XH=Å£\Z£JŒbgTÐ-‘±êgË ‰ñ¢oÃêab«ªÙ$[»k[ºí,rÌ„!ÁcÃ63“׸AÆ d Þ [|1án‰_æÝ?›&¹{‹¶ ‡#rp®Ý¡e`¸8Ÿ0{ࢼìžò…àø˜Õçžü ™ ´‡`câ!‚JÄÁëf£p߀ƒ§~¸+àq8 {á †Ì˜øë¤Í‹;ðuiUFú´3_Kµ¤bqk¾lãFûìwô19½]Æ1"$<Å‹…¤ˆÝz˜Í$axŠö;²ãüqOöŸG{¶Œ"0x¶0´ªsÕšqµ2ÏóäÜùzQT·*3ß®ï̳»­Ì T·îMÏô†É¥7¦ü¬Òî\k×2¼U×mÞ©ƒº~iî‘ _y¡\Z¦ðªH:å¦5Û_a†Î·­²³ìt¹x1âÔÚwɵ yûi]mT :×yNq¼ø®ê¶»$ÝD½6„wk–‹MRöú‡aªæÐ1¼¯Jýã‰sÃàû»n­%ÓK(’†8\ è>~c†Sœpàp‹ÿ. !šš;a3ßÉ”,!)½×jIû×…Ýw5@Xœ‹"nÌøÔ<(O¬]×yº¶J,®- VU_΀ˆÓøïú#¥®¿#±æTÒÓÔmsF˜¦Óã×Ò@1nèmЮ«¾ÈvÊl<¹5“@u$ZÜ,A¥eÞ*;%/·;µv¯,oà¸U“{¿ $F”Fö°¶zK©8PpŽ27«,ÜKÜOeÓJ ê¦>ÓÑïJ ¯­ÞTY_ØWöœ^qz;N3S^íÇE…À îÉúŸ2w± ÖµZ(#ºEe]ôvb  ²UÕ“dS{ôÂ&[}Ô}SWí¾8 )ö%dUzXÀ2"{ör…–‹+zœXZbß¿xi¿;¯sþuõí¿WAªG1ˆµï[㻓qvA~«è¶ê›Ty;í²ã2Õ¥éË9…ÁñPŸPÈÅJ!ö©ë¸Ý.Ÿ®Œƒ®E„ö—ÝÚæ‰ášWu}jû“í¸-8º‚›­´=ËÝbßäMþ]Hph¹Â9ÿ-tøŸ™XŒ$µU ¡’Ú³¾Z'õXuçF!—JJõ%d£s%„”TÿÓÄ­Ai¿ÜdH³ endstream endobj 939 0 obj << /Length 929 /Filter /FlateDecode >> stream xÚ•VK“Û6 ¾ûWðj¦fø)©ÇNÛ¦‡¶‰/$3Q,ÚÒTW¤ºñ¿HP^{wg;;>!ü|0'GÂÉÝæ§Ýæí¯¹ B°JkIv¢¸bªÐ¤¨ 39Ù5ä#ýÚyççngFSo·UÚ°R²•‚S¡á.^F):LÍÒG9hÆ«€ú¾ó-J <Ͷµ£ë2©é™Ð4Ù/cçÑÈ[ç]À•kºËJ(ÔÏ˘ Z;àGgûêgÔ¨:ÌëLrˆ%CQÍ€A²¯ŸLãmBxŽX°, ‹#lº1½Yç~Œ-8Âo>ÞßÝ6)™Š˜J1)‹—§d\_úæÆE)$,œ•/9[ AÊäàibO5WA*Æ…x´¹.˜Ôju;[rxÖïÚâW¤'(LÎ*^‰Ôò¦TPwb>NÎÆg϶†sº½Ç5>ÅóèþÞZ–ñ½­§/Ì+Þëež3`\(™¸¡íöm(óŠºvZúåX抗´Ô4‘,¢€ñ×| íƒ=4£6çDú~L]}Fáß ¿9,S§t!G”,4ïêû*X§¨®›’Ðé3½t¡,c S€©DI#Ûa-§Ó4{dtïsFÎ7¢×7$3‘›9HO3)ö-ùrlñÔÖsßÙdr•±CÍMœæÏ1xD1tºd± ›i^é;ðÂ…$ óíÄiÓwmíVá#eUoW"Ç5Cœ8A:­Ó8Ì»N’!iê¯Ó’˜ªó‘Ÿ/Õ÷x`ëœÁÈzͼ~æ?øQ3PÔø Õd¤¤wÖûËߊ0bA 7q’rI…zœÝwiî&Ð endstream endobj 944 0 obj << /Length 213 /Filter /FlateDecode >> stream xÚ•MOÃ0 †ïù>¦3±óµ^b7 ·i‡Ò†­ÒÚB—‰¿OX؉ 'Û¯¬×ïc;Pð n‚¸¾7DX[ËÞÀ3øÚ¡3:ØÈ×>ÓÜ»jÁ~)o§ö4Ä15©ŸÆ«¢=ÇClޱ  uµ kqć |FWFRÚAl¶ º¬¯A¡®—ðyÞÀXBö.÷xOBýļÔ_~Ö ;ÿ»¿iuŽ©Ð’ÉV“’«}óžâ\ «…c–cš+VrêNí÷Μ—p™÷ ¤ùN÷ endstream endobj 968 0 obj << /Length 1974 /Filter /FlateDecode >> stream xÚÅYK“Û6¾Ï¯à-T•…àM27;å$NU6»Î\RNªQ˜×©%!ÏοߺÉ!5²ãñ¤²h4€F÷×@<»Íxöý§ï®|y&²Bf…1¬Ò2«Wï~çÙè?fœU•Íî×!ÓF0YXhï³_®þuõêúêëï´È„`•12»¾É´5LWEV(ÅŠÂd×Ûì]þí/ÿyýúíê÷ë‘¿`Rùל«³µ¬˜€‘Ä~ýÃÛׯ#óÕë륌¶’¬’å—È(5+ÊBÄ=Ue·Uf•aªÒ$ãÛ×/WϯßüüT.¶V°Bœµ¶‚Qá¬_WBð¼;­Ö²¨òÚµ±Qæuï]ðHÜ4a}ÓÞØoˆÇa÷ÃJšÜõ÷Hènpün+»û­Ö pþ¦ ¾oÝ~OlaçWÂäÔs½ÇYCèz¿%"í¸¹4êúV|Òæw»¦ÞÅ£‚®ÖB3­-êà]§Â®açBl™¼í2]í±ÙJ:¿…•/r×nqÄáÜIH­»6¸¦ú‚ÿô [éìiBëú{¤m]p´O³ß_›ÔœÁ½»ûKç8Çðq}h¥õá{ð‡Ö·&g g£Cp&$@‡I«àWY‘õ0ðˆøöû«sÃÖº`"b%n­˜X.üä ²wkÃŽ;2Ý\‡a+Éó½?,6:‡-È¥ùŠTò]ÄLwêa ‹ÐÐ)B@=ö]äúÐl`hs#aG,sa`üÐmO{ÿ Â$/ã1 ¿º´xÂs"ªÐÎE•š³šE}Õ„_øÑá“ç³`‚¢çDà=OQ±ª43^F—ù´`?nÇ)¡»õ 'Òð]ÐÅÖª,ÁÌr‰P`lz„ds8œ‚Ûì=v?Dø~hºvx`vRÑ·°`ø<Ý ®˜ò¯S®®…?]Y‚ÜjdÿfÁ ÃhVB^ÇãYŠÇ¿IiÎ<ú‹ÕÆWÅG…ÿ”Úæ¿qûͿ} %.%޲b\؇S@„,Á­SðÔDµ%ßÒœiHÚ¸¡©±™<5f^åoÂ|¦Y È|¡1tÄh‹w};õ\ûÕJ€S#>IL„'åí ±Þ¹ö6è¸›à ³)ÍBÙ™iHu›eûh´­-÷1Ûœ!<GðÑ8ñ¬Û-µ¢Š¼”?®‡BGˆv‡f;ÓŽ€MõßÜOø{T’•®$m™™ûáZ)=* æ“’ õ +‡@…|rô}hfy W%Ê™åTdù¸ðøM¦S¦ ØIcþ§‰6Æ.%§xwX„‹Å͇IÁ›n4b„Œ8³íÂ'kMÜ—‘Ô]fi¦Wþ¦KÕ‚X€¾bœî1 s”šk™-Ϊ‹w⢺×}ߢ3Ð6n¸´K¡ñȵ§ðw¾]¥ ߎÜ1{˜’ J¨|»ý·jÝÎÚ,CÀJ;Ê‘L‘î(Íž’ LýúJÉ ~VÖl\ýד)êîplš}êîXÎõ~= 2 Yö©ÔüŠ¢,Yù4Œ>ß´£¹Ç±ƒkOn¿ŒÎ½¿ÓÖ­oÁ 5Ý¥fWi¢âš¼é¢ö_w8Æ QâøE‰#ï(q¤ž?ûç\Â@Iý´jV@0A”|Òb1Õ²Ï'–l•}b…us9yš=jçnç[*­«Š•p[`°õµ7Þò rYºý ””c¬‚ÖiX‰<ÙFRжk×uô0ìNw¥ØIw%\dlÍÞžH)ÅF¬Äâ2áÆÁ^›¼H¸OW±ØÚø!\ºÃÖ»®© ~éÄ”×\ÿÐFøžFœ>¾t1»ìk«0NË×7ã}­ì]½›ùÂYM—'¸ôüIʃ¤¤+ž¿‰^Rð¨‚Ø`°dÙw,;‰–̉SÉÉ×€: Ïn¦4­ÅÚ'&ƒdR ÅS=Ï î~rö?ËÁJ1ù$ÆÑgˆ°†ú•q#—)ô3]K3cÊY‚к`(“÷§¶N)3½èXˆžÇ½«Ç~lð}xè»ãÑ·ÛéELJ:­féUHmGI—2 ŒÇŒ‚/:;ªöHº¥; Cžã§–]3 J¨e6b1[ ù D>~æ/‘: zè5ŠÒRvç›|ÛÔ±®Ä×- §SO MlØxênÆ¡ ²–釒`ðáb!§™’SPG§N¯îÚg!=EBÉö|OÑPçqóÙW(” #fN’ÄpÏN‡L•ê‹^B`M©æ¥”,ò—Ï}™‘PŸiýÔÇ&­Õ_ú$éçÉonöáE_?²POÎ ‘¶,Î5{áš=`CoK™ÃDÊIÇc×Sgç†Ý”î¦ú~ 9µk§iã“Å¥òpªãžÖçÇ<ÿ³Ši‹óÿTU>åÿÃモÌTŬ¤ÿ7„9ß÷Í¿I´ endstream endobj 841 0 obj << /Type /ObjStm /N 100 /First 879 /Length 2230 /Filter /FlateDecode >> stream xÚ½ZMo¹½Ï¯à1ÉÃú` 0Ø]ÃI€0Ö>$1|p¼B`d!-$Øüû¼êé‘%Mìii: §Å&«ë‹=DJ+C´ÚQØ¥x’BT¤s¡^$ÐDQa éEÊèTº2T‹kÛ íe¸ã·j¤è8fè˜\G!˜]£²à]LÞ;ãßÔÃ`ox«cL†…ófX¦`‚s 3t:Î…9°®QaÍù OzäÛ’LÓ‚µs ¶ÑàxËÝõÍp-ÂØ c»’›ÅŸ`[óè ŒÐÀJOŒ³ÃEö#Ñ !è(:5͈V”1éÀ*¹6ħ½aã!EM…S\€¯‘â +½åêGÏíEƒ„…±NGk¶Á{][N7м£ahÇã€äºYv0v4Cƒ– Z †6¬1ã†äа‘Å& `K9q±D¼aE<ÁàMá‰YÐ(6@šðÿâVœ ˜Š³æ..ʼSþ $1¨?¸wÈ.8ŠçdرGÇn±Qì,RùDÙP§ù&f:䃽+Ù&°>ø†YÀ×Ñ¡ëÀ0ð"O £ƒi¥$æHyNJ‚ÃRî#ßJ œƒ=WáMhŽË}&X”EÃsŸ@)½È3Ñæäq##:PÈ$Òèùfž„ù*ØÝœ}óâÅfûö?¿^”í÷——W·›í›Ïÿ¼~ÿåÓå¿7Û®®¾¸~×p&ÛûퟶÞþøŽ¦›íOoË;ª¹œˆÚ€ä© .q«.þ//^”훲ýãÕÛ«²}Y~wƒ?]]þ¡šý¾|÷ݧãÀéÂ|E´UœNÀ²ÊÁ߯°÷¼,ïTÜÊOeû·¿ÿ£¤ui^»»üüË/ï¿:4³¨#Žƒ‰©=§b’âØ8n½ò#t¯®.o§-¿RÂi»^áPðî¦v¹ûO+I°ÝK#ÓÌ·}}}õñÍÄ\¶¯_¾*Û·¿Ý–÷5÷úÿ.6Û±ìÅåí Îç멟›«Ï×/n&ó:=úëÅÏŸ>üpõ[™4Úè=í1AxPÕëט"ÛnøÄ‰,žÆ=!¥qßµ6·>·cnwÐ߯Ã-uÖ΢¦ÍÒP+}†ây!W¬GrMÞø ©òX„y= °7•a߉½v¸ b©p¾”§ÎäÛ8DVÄÁ)ñG‡@b^‡síý ža!ZS \¡÷Úrykµgˆ ?E™NÇmà+sÏ–<29ð€6è$+cãÀʘheúl†|+ZyÕ<¯Á¨#¢QÈÓWÈÀsú&G*è´"IFrqhDµ;k/"ÄU´?Åg'MÌ—¹Êã°Zï°q¢ÓzÀ­{ì¹tr9 “Ó‰t2šéÄs+s;;3›™¯J7¥€ ðÖd´šV¤÷Â&Ø-ûŠN 1Qï÷@öNk×õ€8U„É™ À6#4$« ¬òŽÃuÅšÚ¼8uà .Ñ–ÀÐ5=xÀ3;Œ8Ù(–  ¶" Ø>õLB½ L9‘VBv¢£!›èÇ€<6EÎËLуqFõšIÖ±qœ^^xM“µ‚ýÀd y’Éã±Éš!eyaMˆä,ËŒøY`”GÃ^ ôÔì˜¶× “„’õð«“0…¯ðEŒ–ãI8’&CŸ(ÝÓÿ79#Ð…ŸB“hí€&1N¤Iìðeai×Î.f³‡‹ÙÃÅœ®…¯I+¤b¾µX“š•AVÐ 4³4ð>ÎH«Œ¨Tí‰X¯M/DÒVtº"5Ëš{$ Ƴ,²fY†Ž8#Eî@% ¿H† y« Ö£¡g<¼Ì9  d‚õ I@~L ‰Œs&‰©ŠüŠw‚‘7ØL a¬›ŒôV{³©`&pp½EÍÛ½¼4nÝÏÏU‚²B±g!|3¢Å"ù/=tq endstream endobj 976 0 obj << /Length 2391 /Filter /FlateDecode >> stream xÚµZ[Û¸~Ÿ_¡·È@Ìå]Ò ÍnÒîCÑ&SldÈ6=V+K^IÞ‰ûë{HÉ’¬ñ\ìÌÈ¢ÈÃs¾s%iÜ4øpóÓíÍï% #‰R<¸]¢D-ƒÛUð9\dMÝTYq7›ó(.—û­)š´ÉÊâµïûhr“ÖÆ¿ˆ˜ý~ûëÍ/·7Ü0X†ÌSå„Q,·7Ÿ§Á ú (IÜ»QÛ@*Fx¤¡ŸnþyC‘MÚg—ØM`ƒH)"%òü…såXhçŸç2¡áßÖÀc,ÃC¹· ¦•ñee@"'$¼­²Ê,›üàßÖU¹õóRßñ…RžãÄfc ¤åW$œÆVªHÂë N:?~°¸ë¾ œ'Dàeø)kÞVUzÈ1^S%팲º&ˆÐ}>5Ëö<I´hçÜgyîÑ€‰«!K!˜ ͈d2˜3 ªÒ¨*ÄRfESB‹'áÖlËêà{ï7ˆÕþ%½XDà—õD¬ÏJ'8ÑB]à„v«¿+‹ºyÊŒJPÂlñ(ÊœPÈ$¬Kß³¯Û¦EÞ5–v%¯Ç$fl¨„ežÖµˆ¹ˆó¼œqÞã»™1~·Æytåi5cqxgü«×!·*´Ï…éOO·YaVdè”sF 0ňÖñ|W¶¾+ÁIËâ•å¢ñ¯…1+ßrbÛ¡-ç©ï_ï‹¥Ziž5ßU®ý3õviÕd˽Ïu;\:¢Åˆ|mw¹Á¡eapä6»Ûx°[ñúP[XDÄÂõŒÔucçÛ÷´Xù>éœÚfmUb^f}Él®#ÞnÆÔ@Ícrm×r¾¥µÍ¬¾ÐÒéPêGÇD'¼µoâmU¯ªÖ<ÿéÖG“Kâ,4¹zN _hÏSl¢K,Fîéí ÌI”³°þ¨ZUÛW™þ ЪH"qÆ:ê[“ÝB©³«±@‚:ð2u“Kó…*Z¿Æà«bCª1Ou$7Ä %G½ç×MµÇV¶žâ CÆóë©%À?˜îññ§@²(…s8ú¯àÔ‡a§ër_ù†´aÄõ¸¶Vb3TæfÜéXg€°:gL“H‰`.#Â,û–eAøþ³×à¦( ÿUwJìƒvµ_6mÚyÀ@ÁÕ„¬Q§¿ù@Å9˜5;¤Í™ sð¡_ÒA¯¨Ð!Z.ˆÃ§zg–Ùúà;ÓÆ?}H±Ÿ!è–ÓV*´† R¯Ö8íÇ.nü\œwyjƒ³ÑQÌÈÐÖû£éafši¾Æ¾‡œ×àK•ÑSq8šÅÑX Öûq˜XXâJÇóéç$‡û ŽF›îª)ïaD½çG‹‡ ÉÐ÷EâT0d܃]—Õ6mŸÉhèµd%•^yЗgœà¥DjÍ2‘Ç[Ê]‘ írñ¨gñ;TY–;`H õÅ¡1©«7¶>fx!†ù Æ¡£–Uë’mL³*hmël®O^¶_ûÑXeцtøv**1È3ê™ô´ë>Þ¦ë1’±¹GðÆk°ˆÎ ®B>ew…Y …Ýu¯¼x~ŸÕ¦}»››b•µ™¹L/šœ £5ÄW}Q|ò¹™tQEâ£'?  iJRÀ‚Éó!‚àÑÃö@ÿE0%¶¤É¥V´¸L‹ïÓKMé:WèøŽi“Ù2çO ÆLêež·ÎËt2¤ˆ„ÈãÊ“µ?Id< 4mS ªaÆÏ"Uw$¤òë‘*&ÅzZ”LÃVÉÖa‚Eèé¶¢¸Í†ÆPg¶O†­âìw[•–xÂhßw%l«#J`4¨²Šýv1¡Ö+ÔPõ¤È°¶ú.0M%"âxZödóÇl& »‰˜(ór»Àm\¹j‡³wØ”éD_Lf®“ˆÍã•ß“¡±2W¹Ií&Ç›Öõ0ÓœPÉ/+ÈË2`÷£cvRûsLÏl9CüˆÛ™Paw¬Ð"òÞ æµ=Î`'Šg$b—máÖYnŠt;©6gIA~>ÞLÕß¾æÆ²ò¶|e»=µE»ßu«ö°Û¶ð`N«ð²Ó çÃŽíyœ ‰Èƒ"Úà ®s\ñ¾²éäŽb'7<6úÚwâ9CUà4p+øP\i¨X™€½¹èÙùË¢˜PÕÝ HÄ ˜â Èsh A@P¹§pÊÙiOo•„PHÇUl·TáJ´t+¬' Ÿ¨ SEä0-òTz= z>â%˜¦ÖŒ ™ØßÙ±L1¼yófÂŽã¹&,î²åOT% ŽÿÜÒƒ¯ úÿËø€Þv¶VÖ§‘ u3íY,hÔô8‚íN²ÁSøñp«–²Æµ=~Ò«—L¢ß¨ýc qù’îÆK¡>A×cEÏQss&ˆ’É÷Öö("õµÆÿáá{ïŸ?Éí«ÍW„…G…âRËç»ùi¬ ‘zN¬9sm]QP»âxa1*jÏH'+ ©+œèäÉŠ=¹bÑð*ò$±I³+V迤£û‡î–¹rçoÆìÅ’àáo›¬1õ.]¶¼ã0HÃeÛ³X[jc)Ü eLYÙ;?Gñïeƒ´Ü5¶ðf˜QPe2º)ËûÙò¦*ëîÏd`…ÌÝa¥Eƒù¶.G7ÛïšMw]0gÒE4pó7§—!‚ã•£L¢ÑFÕ^] ‘øƒvÛÈŠe¾_Y<$°:cáÛgl„qAâ(zÔH$íøôw–ƒ•—)öìëvù™\ŽBY+Ä£çÜà9²·Å>^  ujPP ¼­±·Á'¾ã=µ?³®Ž7ÕÁT24Š]ZA©Ö´§ÍþØï‚Ë@ ;ö¨ó¼¯_­_¿>ö› qÜG6›öÞêh÷ö6¶¬þ‹¥ú{<à·ŸLžo!Æ¿’QàÃ:zÎd¦ÃÛtͱôcÚVcTGá»Mºó蹟ê€or¾s?~)‹1_ÿ!¦F endstream endobj 980 0 obj << /Length 2023 /Filter /FlateDecode >> stream xÚÝZ[oÛ6~ϯÐ[d æx§4 Zl-ЗamöÔ ˜ìÐŽ0YJe¹möëwx‘,ÉŠÛQ“.,Š"Ïß9–Þ]¼¹ºøé-'!(‚W‹€a†˜Š%’<¸º>…³´ZWeš/'Sª¢ð—b¾Yé¼Jª´È_¸¾:ÓÉZ»†b“¿®Þ_üzuñù‚ÀZ8 ¢@•"‚e0_]|ú ×Ðÿ>ÀˆÅQðÕŽZ\D•„v|¼øý{^Kø/—k|x×¢,#$ ”„©”î§!,â¹D,Š÷‘€ÑIÆ=‰]¾ör#LH{ÓÏ…BT°šp©ƒÅ åZý«Ó£ F1Ž‰Ñ£6H‹Èépnõ‡õš ÝëE‚OS‰qøÒMð+øÎ7iõº,“»?±Àž f&‡ÉÁN%^vˆ=pþ†Í™±Sf_öøgbû¢±Žá *g8Þ8vMHø ÝQ9"TšÃFa¢$NýÎ-çæˆqIk£ÀZ›`ˆ"Ú•íÑ«€a0Œ·å„â°X¹¸Ë,Í“r2%8¼s>Š´W< z/6q¤˜8dz%9¾_yvGÉ9žÝZ¦íÙžðÑž‘Ь°ás§…NO­h‰{Þ/GB9E¿zõª#ô~°û&…GvôõX¡ãÚK‰÷ÛNó[0šž»?„£†%PóÄnãÇ LQv_ÓS¯»)aHðxl}‡¨Ï}£/DÍÀúÇí¾Ýcær{i$Šñå¸ðÀ }¼ŸïFnb¤8!J[W¤@e\‘BœåÞ_ç Ó<­Ò$3›vêÙNáâpÌxõà™Ó%KbLÔcŠrˆ¡(æQCçÍa:éÚ1WÜlÜÙ»$¿v¯7i¥×·É\ûû4óCf¾']æE©¯­•SÀ+Ð:ARzm¿^×s«›ÁÍc$ˆ¬ºÑ߆¸‚‚4zá(V7zˆ SSÍ“MU QdÀâÖ%¼rÒµ.û;ý:ó¬(ÿñû]l×v‚0gÞk7 Ù ôÛ¾-õŸÓo"BíÅ:»ä[H¤(=`öp¯Çü|¾:RE¡ø<°,àˆÁãƒåÖ2–O?R…Šªõ39SG<çf..?ð}¼±íš¼b(zJð- ÊD-ðÍFß¹»óÊðsp·€#„3~NàŠ‚Ž»[Ë<-îû“pwñ¤¸ÌåyãnÆÉÿpgîFQ§n+ÊGÂÛÇû÷N”áÊ„ÅÇÃÛœÇ|Ûx[±½xBS Ð*îÁÉÇð6³»¬éüv/¨ƒ·¹oûjêÌÄóM5´†`—GñjAâ–ùW—…k9H¬˜P~Õö™Î} —†—ÖMœì<›^º,µŸ›øî´ê[géò¦Êî\@be488¦tL­ Kpà·ÔÉu2Ë´KðÉGb+r³ó!´mBGã¡>©ýqÒŽú°??ëgàäœup8‰’ç AÊÊÙØYGk™§Í:XL-CÏ QŒ˜u#œó'nÇÛÚŽÅd?‰‘³Æą́ßå™´ƒ™v¤y¥—¶è¯Ë2FDÄèœA9×:)Fà~焇Ö"íð`É~Ïà@”Ÿô£‡ èþhÛψ±1a†°ÚøÚ=n}7áªñ™Î—%Œº>¡Ï-XðA¾­pi}6ŠÒðuóE¾ µ‚­«r3¯ Ц h„¤›€‚èþ:yh€ endstream endobj 984 0 obj << /Length 2609 /Filter /FlateDecode >> stream xÚíZÝÛ6ß¿BoÑ1ËO}äÐM.)®ÀzÉ¢/iq'Û\[­,¹’Üíþ÷7Ã!eÉÖ¦»ÉnzÀÝ‹=¢Èápf8üÍP<ÚD<úöâÕÕÅWoµˆ„`¹12ººŽR¥yÂ]­£ñ²ì»¾-ëÍåB¦Yü×fuØÙº/ú²©ŸSÛ;[Ù¢³ô ˜`êò§«ï.Þ\]üz!` â*™àI´Ú]|ø‰Gkhÿ.âLåYtãzí"m“it½¿øç‹)ÏÄ4†iíå¼Ú‚*Kã}U”5 KÆ#€wª‘·ë_Ö=u𲕠Z†NE½žã$˲ÓáVJ1%Fó•}YTegÛŽ-Z'q‚*^Ü”—Yn¶^—EÍ.©ä°²¢§WeGú†ž»â–ˆÞwWA »¦sRE ‚ðþ5h+!iºrS—?r.W¿™F)0ñªÙÙŽHìq)â¶ó¯PŽpÓà(´¼y/ž0 ãä*îšn‡™X?I}Ø-mKošÚºÕðé:nʪB¿3ñ¶¸]ýv)Ll©¥˜uÃr‘£ˆ9» δºqƒm@®°.ܬaÐzSö[?m¨eµD.ýhwÖΈ'2Ù…Éùœ|)© =Z[£÷w~Ù }?iÐCJ¹¥‡A§ Ks=•ÎÄUSoy49Ìsâ6o‘SƒÃ o¶MeËÛÞÒó8RÀc³üÙ®cx@UønE vM š=FßÕÛQ‚àeU,+ßÇ+¨uyo¯£ó3h¢ýRÛ®³“ˆœ {ÉDa¬IDÔ‹³Æwßú8¨™Ò‰S3xšÆ}N+WL23åüࢠÃyüªô±”vUÙ÷ JZ5AL±ÐMÀÚZTz7™ÜÀä´2` éÆÃÏšóX@¿ÿ÷ñÃd  rH0^É¥‡0`Gx›kOŒ ‘¶80ÈÁ.xÓo[®×%B +¡Ë¿½sŠø5ô·{D6 ­RÊtpÔtv?¢§ÅTîF+¯CçFcÓ²Áñ~FÌÖÐÿªµEÀxAæ1Ü#Ä…ÓA^”$ù(“€_/SníÂáÁÎ>ŸCÀ™f™ž?SÏ,„¾ B_Ì)Dær$œÁþz(&’¬* ¿*øÿùàdâ9(0+‰E%‘Ž"™£b¦5V_”*^J&þû ê¦'¢;ì(ºÒLH-*pÐÃfKpdz×}KZDúTÓþBOèÒn ß­,1=ªß,è¯ôPÑ©]¹Ùzrcû9 šCiœî M÷íí@¥©P‘s[Û¶èÚ>ýHÀãì¢Ú7|XˆOýü}¹+«ÂÇš^cJWö‡!©áÃíDõn†Ø6|– Â®W”…¸–ÚÇ-JCˆîè߸´ïêS¹¯zC¿;¿BÒΨ!EàÎy‰˜úM+Ä]PâfüÝCP¡Wq7ûe ÂcåÍM;_ÊÅÝiÔ×ÊÝ$þ¿*‹.”EÁJâ¤*ú ŽTyP>PÁ¾@N?…Âr* è°Ñè="®\ŒÅ‡ƒ3òd(nf-èó…Ùè¬ÐO›LMž•h‰ö±p·¯ìÜN^ÚªÁºæÍ‹ .8ý¦ÍhHÒ‡|Ò6ÿÅÊY"ý±,2Œ4> stream xÚÝZësÛ¸ÿî¿Bs_,ÍT(ž|\'™éµ—kîS›º:¹› %Q2Štøˆãÿ¾»X€")Ú±lërsqFñX,‹Ýß.Ég»ŸýtñÃÕÅŸßh1‚ÅÆÈÙÕv¦¸b*4³0X gW›Ùûù*kê¦ÊŠÝb)Ãhþ÷rÝîÓ¢Iš¬,þDmïÒÿŒ2ôcî(:"õʱn%jw.\âh´óº½¹)+{lÒÀRY2µÍ d¡êvÙf“Û„31<òƒ’b3EI¢™è d}%Ác¾¿Ç\ Œƒ»ÙÀ =µ3c‡íKÄYÄÏ-½eú¸Åþ qKÚ›¢ÓÜÛîÅ]Z{~˜"äï %\¿¸ëg‰ñQ“–O‘½æg¾9· ÏÙ˜ùUæQÄþ‡ÀP¿çOjÊ%ç` ¸ã³ÓeÁ+<—èƒÛÿ#‘<.žnϼ ’PÚŽ­Éú60¹F„Ìïü ºó²_­£ysbÜÕÌ0‚XÔINÙz¹uöò –Œ›ü çòK#pÜÝhâç…4Z¿~3$pàÇ@4ñ åÜ >D–²ŒüÊP]R%û  uíÛº¡Ž¢l¨iåf!0É3‹K Ñ„mÎÜ0ä‹:è9­ªÒmJêÚ”ŽR‰˜JªùÛ-uÜ•-õlÊâr!`=~,JÂ-º½Nš©}ÝÀ¤€I- €aÈ¡ &Zšº¾ÌõìÊrã)ìo`O°ÄÝ"0AK­æ+„mCƒQ°¶¿OKÎ?µYÓ‘ §ujàLÑÛË…ñð’ð_V¬óvãÑ`BE®) À_{ª‘ÇI;` Uˆa Žo†Ö~AèƒäP³Èt(y2’ÅþöÕHF(ÅÄ:F 2`/°@‚ t®®'q= ‘¦¼IÛ”S8U ° qìWx}Û'wT¡¨kV»¡lí=²-nÌ.CÝûL™AœSP™~ja:Õ1Vð½n:Ý2¨ôî/>fû}ºÉ’&Í=[¼uVÂ_Œ" ))DLÆáW‚¬©ClSV“A’dñWc¤¦ü¸|ž§€-1¾Ïÿ*YÇçÎYö–ù¶IK-&EøûÿgÏgµé«úvë2œ]øuúj9Æÿß.‰xúE?27Hâå0¡ ‹•¤ãýï`ðÜ¢å݈’L°µØXÿ·× ‚P¿ó£iP›ohΪáÇg”…?vv°“H<ÂÛéðÆ*ˆhsm¡,µ¦—VЖԾÏ5ÔwE“|¡a™ë¬ólwÝäŽÿ¼,vÀ§1s笥FÐ=òRÿ(oÒm›ÛIˆOòœ*·™¯­R@P̬ó4©<®éP U ‚qÍá°qPûÈìë8à 0K æs©˜ß^&¿û¦B Xî)«[%¸‡[z°ñ®q¯ 7I“œ’ïýOí^Iz…ü€Û¡Nx*pÎØÖiCÏèsm b ”TÖ7é:ÛÞ=@Õž ”´ŒÖIŠéõ,ƒø@¯n’ªéž¹+mwEYydk•ÐXö›lÝæIåu h˜S+‚îV¶#1A˶*þ=%‹ø’sýœEH@¡xØÜ‚|°§ÏYzËôCGø…BéY¤jZ¿8jJêôÔ÷ùÞîtñ+Üæ8/æí<Æ•{ye_}ºÌ—ÒÚ}ò¤Ñ,¸÷ŸjþÏ»æÚ~¿užÐ@7Ùš‘Re³° Ìñú#UïÍ›…†îöä}ŠYÄCëâ)ñݤ‰9X|¿p}MÙ;dg•º7WVÐ=0dŽU¨ý—yP[Ã¥¦öàÓpXfî¹Ô%俉ºS\ƒ&9Âè[©¼ÆM•6~EO:¡¢{å uÔǬ¹ÄTždßíbÅÓ7PçñwíF3„§|Ö>ñé=fTcÈÞ'–HIyHtE>…„ŸÍÁž«vÝX;ª€Æ\Äcÿ‡êw endstream endobj 1000 0 obj << /Length 2778 /Filter /FlateDecode >> stream xÚå[YÛ8~ï_á=€±˜ÃC¤¤ °™Ý3{dzIȶÜÖ®-y$yÒÞ_¿U,R‡­>Üvv&Yˆ(Š,Y¬¯ê#Ý|t3â£7W¯®¯¾}ˆ‘,ÖZŽ®—£PŽÂØ0Œ®£wãYVWu™å7“© £ñŸ‹ùn“æuRgEþŒêÞ¦ë4©RzQL05ùpýÃÕ_®¯~¾0  ’*™àf4ß\½ûÀG ¨ÿaęУÑ'Ûj3 ´`24P^~¼úÇïª)ÔÔšÓ³.&SÅõx‘U5h»ËªUÌÒúSšæ¨LÕte!™Ö¨¢ó¤Vý‘¤fVÃ5JòÅ(ÉYÌ#ßh¶¯ÓjH–ŠY;^–“†ß׫•å{®;’­«ÜÔöÅ®¤Ò¼X¤Tú4|\äßLD4®»Uå¿IJ½r-«d“¢J£©ˆ#&”‚BëgœÊn™¦RóF#,ÿ2zœ–Ø»bÖ°0#øWÞŒ¨ðöMßÔ&bF(0PÌÝoîˆqÝX»'"``PPruŸh­Ɖ8Ví¸¦3L ]Ew¬tȤV^p™Ž–ƒ’ýæ<|’OÁîÀ- ¿YÌ žv±íºâ,€ñšÿ@öA 2z75œ_P7‚«|•Õ*Ëd[†ÏœD©±+ìVfIìÕX‰ãozÒÓéÛ׆w'„;(’~#¿*¸•ê RûË$ HmÜãæúd‰G“CíУ:«£quµéð54QÕUIK¦ZçÿÃÄ.üOvXø”Õ+*Í“"âïèíoùzïZ€#V®IQ–é¼ö_Ðûñé} ËŠõ”Ìn† @ÝÓçØ}AçÁ î{äLHƒK +  ?¬|Û‰BSñðnB 8QL²¸¿NÜFÃ"¿.'rCñ*¡Ç{iö8Än>š¤©("~ª((D"ÆÄ„ f¢Eûe¶Ns‡Á‡¢ èhÞ‹ Y%ë¬JK’Ÿ¬×ÅD²WîNgR¡À§wMòd½¯Ò½á>-vu«­-ä©ÿN½ù¸L“ÉÉêfh*d94¢ðÁ!ˆÉ°>6é¦(÷£Ç   k?Š Gɾ?ÐFªÓÙLgI£u7õ@ ªç'„# ÓÑYáÇpÁ ÇxÀ‹€žàœðÓ¦~Hð…ÂဠÒåJÛK…Ÿ COwc?RèÀG"ûïŸÒi³—o^¡ŠçØ%O†æÓ7ÕñÖZ›'@óp­Ã˜k׫ Q&”Ö÷¡Tlmb%Â(4Ø*ɰn–åI¹§2"É´°a_7°"0„ÆCOD;–·}fi+ŠJ‰ÓÌfƶÛÊ+V€f6{G˜îè^Z²‚}ƒ¤ý¼ËÊ”^²)L ÄÀ¥ËX˜y <Çõ*–Ÿå¡ì”‡R^ÔT˜y)«$¿±x(`T™ä˜R»—V?\¿wCÙ…˜Â¥2ãmQb/z±êÁ“ÔƒB£”­=á‰poU¡†yÛeˆEHÖb’Šå²Jë¡Ðh™‡Éš$ ÐâÒ¦‡dm“@¥æá§¤yµMçÎÍÏ#s³˜ z›'9…*+‹#¦Cñd†ù–‚ã\ெ&6ªW ’*6v5¸T™ø´™DpÄŽ ò™åAe“ïvù§ba³.ˆ§÷& J²ƒkûÝéû7¿U 4Ωö\å"ÈubÙQÎr{„È¥"í»€k)%¬Ó’f©Ûö¨Ý*Á$Œ¸%}·ô˾Ȗ˜î,a†yMU³têM ‰àAòá„eÄ åÖø¬-˜aiŽ“¸äÄ6Ülvu2óÑáé–Œ4ƒIœbÊ8nVŠõÉSœ¸£ÜTEð§t쨼i?šª=ù€’KÁ\ ÍírßÎÓmMuIåV˜¨×î-a šp ž„©TlP ½ ASEˆ¾ \E-²%=?¥ô\%NZã1ørga›)?jWBr-âÆ4ù´KPyU¬]±X|kyÁvóñ֣ÖÝÚãÑf“.2˜ïzï—¡»Ï-T¥^Ø,ŒÙÄJý<škGW²Y¥]t«L©2Ôž»Ì*TLâÔe–¼Á‹}±£E ”RwÁIé08Ûl×Ù<³¤ß«dßaU‰#!(¬Ã%òºO& ¹È–NEtK€‹¨ ÿ¥e=U_€™;òêa >|_3ÑzìÉØÚ°-ª*›õ™ 3÷²D¡ ›ã $;âYGˆ DâNЏ,ÊcRXÌþ•ÎëÊ1²µÝ³Bx&và ¤b&ˆÏaX*Ö@ÑÃû“a‰gMê†Õ¦Ë°œà 1¬‚yÑÈþy ò%îɈpô¤WÓv´¹ù1KáŸ÷<ð\butH÷ì}í¼Ÿ¤s9»è‰¢MÍÓàŸƒWŸO6O÷¯#/GÜDÿÛs@ðO¡çX*Yk¨.s èhhD€kK]P}à P,TÆ3æA\‡ˆÇу°4ëˆñ€:‘¦xù\$¢\¤¬jz9lœ·ÏMeØÑR?â²|üøPì[®°ÜåsÇM#O­#ºÆê¨x8.ì³8ì­×‹;nÐdØ †é`ɦÉq±ÉjJA£æÌJ;w‚ Ŭ† ð‚$U$sLœ+zI3— ãzÐÁ$æ1æ^ dÉ4ÕEÛ¯9Ì<ì“×6Q¿†ÀLü×!æ·Š‰ÍÃ(º—wžSàï'/£~´J +âf‘””5*.é6c(CáÂFk·æüvÈ.à³-¡)ÊáL‡i#[þzû|ÐÀUÈvX’ ªâ:•Û2%òÍé0?­¼Mé<Û$ëgƒ#ëòÙf×ðâ"3(æõ#f`SÜÔ) ]œŠ€!‘aºdÆ”¶·Ál’v섟î´;­¦Cw‚³„LåÁirÙ¬Y–?¿º´z†Bíz†Bå)Ó4þxÐQÅÇÿœKžèóÜz¶w µé2}¡ë6üâ0Ö.Ë$~A”Y±«èx¯ëd®ÂIžˆ10á! {.Òj^f3:¶ƒêY}‰Ãõé@`ÖòõÜ%z¯‡ëõ0†»ÅÀ‘kzúCCÝÞ…`gø¸E¦³§Êb9„Ätdd³½Ü¢­ô¸äŽÂd I85©œ•¤<°’tg«ÐbVNœ4‹6•+ç®e4ÐÚ1 ×¢-Ñתؕs7 eÖ²9$˜Ð"©GU^C£µç„ ûs;¤C©|Eß¾÷ß3ý'-‹;n˜¬Ž=æ™ï63/ÓÅN§üBÄ@¦UpÖMTl]rÿD¯ Ϻ‰j†é]D9Á'ó$H l¶)(éÕø”¯ÿÛHùðô9i[¼|ùò ÷øÑ@›{”Å"ËÅ_ñÙé¿åb¹œÇ—þÉÃÃ&8\ÿ©[ѵ9Ý àè_ f\|5€dã ´@j?ÌW`ˆL_ž @éçJ¾¿53è§Za¹.’/ÐVíç&x_¿ H ±Ý_Üë~ îŒâòû쓈´~«¨üñV·†l.î:Y}Lo;4¿¼„¿ºm¾þóøªØ¤ÿßÇñ¿¦ã·+I`»ÀÏÍNfŽÇ?7‹YÈã3.z¢ƒ‡n$ÿdøoTTÌŒdÉñŸ›püÝ*ÙÒ™¸ýS”ÉÔH9þÎÞ}·„Õú/ö°ò endstream endobj 1006 0 obj << /Length 1828 /Filter /FlateDecode >> stream xÚåZÝoÛ6÷_¡·ÈXÍñC¤¤ )Ðb[±> X–—!ë-Ó‰0[J%¹Iú×÷ø![’Ý$–ìÍÒ¢Nâñxw<þî(ì]yØû0z1úù÷€x„ ˜sê]Ì=†b!÷ÂX x3ïÒŸ¦UYiv5žÐ0òÍ“ÕRe•¬Ò<{ciçj¡d©ì C±ñ§‹£ß.FŸGÆÂñB \)"XxÉrtù {3 ô0bqäÝš·–^À ¢¡€öÂû{ô×;YAJøW\y¶qþ¡ÁYDHæ…ºRú0÷a¾fÞbQqÀ‰˜ã°-Öƒ‚ÆÒE“"ÊYÍ·PÞ|'ãZ…‘ t„p _éPÎe ‰QŒc¢-«ÕºÅ<²V}ûö­±QÍÁwøùÀƒ8+¥«‘‰›â„0ă¸ZæE¾œÞWª<–f°éX†-ŠÕŒ–@êŽ;Ôƒ§Žåu?á8µ(–ÓI‹Ã;ÝÝíÓíd—1×}ÊÂj…– dí½„·ãpŸGp3 ÒV@ÕËÜ' ™õ˜?*’û‰ÌlC.Êܶ¦Ê^W%¬4Ӫܓ$ÏÆö¿Œ ÷UQÕ¯W·J9.ÕµªíŒÛ‡Z×A$œú;ÄóÚ±7‚R ±9µg×¾ØY íÉ ÇÓv‘Ùl° à(´!BùàðŒ ‘úõd!ËR•§ßqŸ–³8K‹8F„„Cv ÀB<ìo<@&C¶ŒÆ0Í=Ã1~|Ïè^{ï!"Š@ÿ´O°L—ËU%§ u¨`Y6åñ¾“Óä`î%w««½W­ ûƒNð§ŽuŸÒ±£•§¹„­§ÎÔ|¸¾]޳ò»N×2ì÷w’€¡x¯äaÌ (s8e¿+džC€ c‚ý[ý#ï -2¿yØÈÒ4}–«2;xÃ>ÿ/ËÇ”Coóøzsúie‰–³,)”¬Ôì¸cÂO³´Jå"-×ܦc£Û›<©@8Ó//ÜJ£•;K\¦Wו6LyBðQárKyñ—yáZ-¬“¥hZºæ«¯™¬V…Œ2ìÏkª´—YTi²ZHG¶2ÈåÍÂqŸŽ),Ç2­¯eëí¤ZÜ;ÂçUªõôEÿÈ…“Åá2ݱ©•³»Mµ‚j|æ \Q¨ò&Ïf6¡Ö@.ÍdqoÛÖ„h Ã#‰‚aä…,&`fƒ‡Á0aZy¯eüŒ†‡ }>pö=☺0`ÓŸboóã@rãG÷ß}OBÎñðÈŽ‡¦¾C5q­î†jb.¢W =Áüaýã×à«4ºHX?¾"†ëaB8=„hˆpÜK;êZGL×òþ¯=±>w^0Ÿ$/èë]ÅJ½ì*{^ﺛÿo\kª÷”×â[¼wy?Í.OO÷‰á“ŽÌO;Ýèzȧ¡UŒc{>„kôu~GÕ‚ôkè¹åh½K û§R[ fAbz°RƒÑug¹æ•IDŦ@y(Ã]š* >aš™,ž6²èÒ>–Ó\Ól’nIyf²fx=Ïê!äbîHó ÐóVÝ?Ò+a}ö`mÝ Q@ÖÕþL©™Æž’„îüD˜Z\Ö}FÍ£zn ´ “®Oh¢†í¬½;ò¯”=èÊÓu”+`‡ÀŒ 0Œ×5°ºV`w"wn‹Ù"?É—7²HË<³÷¦4Ác)g éRLà_\[bý0rÖ3—¶c¼.=DÐ5Ófº·wɇÜT´ZsŸ¯²DŸë—îp*s'Qù*d•%ªë” !ÜYò?cÈ<ü|Rb¶tÃmÒµL±ÊA«Zs·.YÑF5E¥¥ØI05Y¾Ñ€¹]§IM—«R¹·m)Ì0šÙ²M:[™²ÐÀ&»J4V€²}Þ6]k²DV*Ó…°}j2”SPΠ/x¦äØçJa^ö\‰qØg—>Úáû1a$¡àÌz\€Y®¥sÞS~V?X©3:›M;x§Qå ¼x‹üYLµÃ*‡Vÿ›{•kê«gª 0ÖXqõbÒ¶¥ìŒa|›¾Ùã{&3~ð]¯è@÷ß8¶¶/Í"‡C }w5æ> ÊHìgÒ¤Äí唘ž¥¬,Ñ}CˆE<îµøŒDvÀÇ%Á6@+,sû‰4¦ê{ã7°•@×è7 ™° í[ *‡7‰ÅGm"ëc Íg–p›:L¢n>j5w¿«sRîóYåŽO?uª#*²åSÄp Jpº;M«­+ÎqìSÒñ•GH¨ endstream endobj 1010 0 obj << /Length 201 /Filter /FlateDecode >> stream xÚ•½‚@„û{Š-!Ñõv;iýMèÔëŒâ©$‚ g|}¤0±±ÚÝÉdv> '°#F‹€ã(b0GÐ :V¨B0ØzûÜÕ®ÊË“?d=öf×ìQØÒ¥.¿–ƒN[Û‹MkÛþÎ$bnÄ]PóFu©Œ$d…Øî$=‰A<†gë* ŒY«f¿ÀF¬„üÔìçW^"+ýOÜoÚ FÅÔÑ2¿)¤ÒÞôœÞœ­z(¨˜½ie[ð–¯/Õp¾/"L‚ endstream endobj 1016 0 obj << /Length 2430 /Filter /FlateDecode >> stream xÚÕZmoÛÈþî_Áo¡Šx»¯|1¹C’æ ¤w9·@‘;´H[¼H¤¤â¸Åý÷Îì %‘’Ë’›Æ´Ëáîììî̳3³”ÁU ƒ7'’ËßO”2PA¬ƒØ9‘ZL'~•Aô)Ò4 n|«E`:Ž >~>ùéä»ó“?¿¶*PJ¤Îéàü2°‘6ƒØÇ.8σá÷yùãù«÷“_Ï ö±ÐÊYlŸ )“àT§BÁ ßúõßþ¼:J¥Z¤:yŒ„ÚŠ8‰•—Pia "ã„I-ùãDI¾œX~ÿ×·ïÞ¨z0µSc¥ïy)áTJ=_Vu7+šÉ©1Q¸(ºYS½¾Ä҅ӦȺ²ºòS’BÃt¥0±…_›DA[±E|ÿÅŽ6GW&.‚f4ìwe÷sœÄ–7t,r”›¾O}ñ[1íZ¯ä²«©\¶L›‡J+•ˆ#×|M?Þ+¨Ñ"–qßürYM»²®Ä䦞ÏHXvÙGب°`Ù3ä‰û¢E¤`_”ä u³ÈºÉ©¶6l¯‹iù‹”÷ 7³r:êñ뀤Œ›v îµ*»Õ¦õbÑ7ÀeºÎš¬+r¢t5 UµÏ‘à¬Ê<«å⢵˲+-I€;€¤~‘`3ɦӺÉI*'©9”eËc`à·Ý³‰saKä¶¼ª²nÙܪe«n˜I"WÛsQv4o2ü"¤Õ{îÅQ‘i¢ÀH…L5õø“ ÚµAþ”Í—EKÝ\,L↽¨L΀</>ÞdÍU «]†ç@å”î…´éÖ\I ü•ˆ"6Æ×庡©øð9[\Ïy-–íj[¶/'éúÖ "Ù±ø÷Mz—à6R¯L6k&* ¯–‹¢êx³nX²iVñîe·gÞP€üƒ¹QLl€†`بñ‹Ü"š4Ù@ÄDø&@°H`Um‰D»ûXHܱÈXf±-Ú6ec@x¥6‡AºíХ̸)‚ËœåèÄêKÂuØ1€™z\‡ÂêØÒ[†0+ƒõǯ >œF€þ/ÅÄ•iìÁTtƒSØ›Uª[#|F†!u“BLž ˜<°Ó¬ø|f4àʾ,«îLžÃõÙx>Ï÷˜ˆüQ“‘Ÿ%þ© sT¡Án¤p¸aFQïe-´qú`:IÆÂf·YD:Ú9¦7Ä90=ƒ‡HäM¯?^éü!0þ}YN´ ?áO6fUٕټ\CtÖ62BI}ÚDÄ6ù⪢çz®‡!!2>Z®²‰‰„+ódlûhüCüzV9¢Œmì±qÃÜ[…¶X8›Ï0A´(áÐê|ÆG–“!V]vÅ$Cä+ÞõµÞštÉnë%{3ègc˾iÀ×¥ê¢îÝÒ«¢*šlÎÞO3ù²÷Ý(hÂ`PÜ-w€[*lü`…¶Æ©C `c˜M`Æ{C€„º×nÅú> ¼gåˆä&¤IÄÊ‘—#3<…þrJ™í&e÷­y‚²©dåª_Öõ“Ûï—S.s4À3†–/Oi< ›Œpœsh ‚ªQÐ9"ˆD%[AзáéyðKxåä…R’ëHú.«U­käEy~÷î!Eh1g1ÄIì´ê(ç(ÕÆ?Ä Õá~œûJ.ð…?¿!§ýÎSµ·O˱z«¿š:Huxlðµô ]©cZr«÷{ö?7·Nod™Ûcù=F[Іžw5º Æ&á¬F¿çbò\êó/XY¶½jë÷X§÷賂õ²ãfå¿ ¦£¶KŒ{ð)Û™wÓ©Ñ:! ð¼+m¤4ŠVi£*ßÉJ «7Ï®]œŒ Ø·*y’ÞÃC鳋sdŸð‡gKI³SN¬Æ .œÃt$&ÔPe@lª(Ûi­¦µ³Öô1&Åü ô,‘‹ Ìo‰!à¦W±Ž®"6Àí|δY±“Ó$I·—+µÃU'Ò,ˉtQ‘ÖÉ^~ÝøU¶k!GÙ֠௚<Ñ ;a“•ËàÞz9ÇŒ¿² –.l²²-˜†N2–´æ ³¼M¶(:cm¯8*ƨ¨¹Ñí¨ßMScdŒ}hé09.Møn¢BÒn…‹ÞÖÔ¼×s:‰IêÁ<×îl3l8éà·ôDö?¥ØïmN5Tó»r¦Q h°R7U;Ó¢ˆ¥f •1ï®s(9rýð·;G6±ˆÓxäwnÙ]Ûp#zž§×`¡e!òºz†éÚŽ-!"Gf°„Óºj—‹>¢ê•{g,Õ§û}¦ã®èT˜o6Bšt”(WI ç—åD9â?'Ê«.Þ£ôÛ Ö¨•Õt¾Ìý} ýüH囌ñµ©S¯ë¬lZª¢žÔ õïÙïJ!=/}x™5·¼)( ó!µð ¥®0d¤ÐŠNw]—€{(FVh#©¦°×X;@&|Î~Aaú[œnÎMÖ·/¾a½êÀíë¶Dᙣ¿õÛ|¿cí¸iYšò•ÕŽ9ñí ÌFëþ:LS$n´‚¸o3Rdm9¿%*Aùõ<+Ézà5ÝháK>ßôàš¤å^Ã.vĆu»ô7jH\(Ы¢ÈY ®Þ%=ØI—•UŸUXá>Vð°W¢O%©H£ƒ} ðPéô©¯<6†yº+§€|ÉàÎó ·ú©=Xº¡xÑvYÓý 3?£dÞM™w³mV”W³îp§÷Ñþíþ³­·±©9š{«`}¤Wi½êŽ Åߘó!EÅo¹]tÓÕ#Cmû|<•€Ö¿ñ÷ݾKÛr£$ ¢ê^VnÁ½•åò›R›û÷L'B%æ +_³iåÌøXVn”Ðý÷1ùQâæÿ> stream xÚÕšßo£8ÇßóWðv‰tõù7v¥{¹»Ò>Ýíæ­[HB´z„´Ýÿþ § pVº]©M)ã¯g>žÁC½­‡½³ß–³_>pâ‚´Ô[>x>õ|-‘äÞrãÝÍWQ~ȳ(Ù.n¨¯æ¤ëã>Lò Òägsís‡Á!4?0D[Ü/?Íþ\ÎþÁ1£RD°ôÖûÙÝ=ö6pý“‡ÓÊ{.ïÚ{\D} ŸcïËìﮦ „ÿÙÖ3>l,’„y¾SJ»GW‹fpkE`‚\"¦t×p7G’ñjˆ·óꜩF˜¶Lq QÁê³Ð{8;r‹Óï¡ôFkR#„Hb¡ ÃCÉ#zÍûä ˆxw7ãù¯Æ R¨.¾®„÷6G'#̓õ·¯Xà‡4Û9¬ bèçh“ï† kO#X‰âFŒ‘uÅ1AOgSéïÂh»Ë¯>ªÔ… ò ËÿY§›pÊ$¨(~Ëá‹dÆÈºbŒ~c„_pñ¬ØtI¸ €”×Þ“@VT"µix®¾­0Ñ †•qôMѤ1(@eÆ-wE9xž§ßÏÃä`~Ž’êz}ƒÉó¹)´å õÕïéÑ|ØÕ¥Ç,]1Š6Õ(O *æA| ͨæC…·ç«1a°0E§û˜#½-˜>Tr­¡ A$ý^ª“¡©U­È)Ä âû˜!Œ«gN”ä·ÉÛY®!¡ÜÈ!T'º¥æ)Z¨«DAh‡Udëï»h›„›r|¶a¶¢ª–+ÜHS6Ü‹aaÍ}2¡bHQé¢T beuìƒèB·¦Ø±JËc2’ã`ol`.©? $”5­¨¾)u6®ÂN”.””mé) ¹Š¶7a²‰j´Ï»4®ªåê{NÊÚÁÛ´ÁÜï6ï§-àæ¦öJaÊH“·=¸]H7¸ÛÚWÇ=:½»l i¦¦gQÍÜç¦ÜÔéwóv¡ÜðnKOáG9Ìûj>Øg8˜cͧ§ÅðÚ pZTöšá=Ä]H7ÄÛÚ?‚øè$ìµÍÌéÄý4ÖHbî915§Îñ¤›¸ å†x[z ñ$È£¢±y*^/×ûnssާš#ßÍ\hSzšTïïB¹ænIÿHîc3~°óøÂZÈiÝ—ð5ÒÄyU 2´qt¶_N„ð-e—{¸¯3ð£y'ò˜Ûj‰÷«0«oøìÃfÌröT)—È'²žBŸUxn®#Jš¹oªºVÐà0ÚKÌ}2­ïR ì»éû„4µ¬£ÎUäB»YEmñÿÑ2:7S&’ò½‹hpíE$9Rþ´vR«žºi'…0uñ5BÝ»M'ÚÍ"j‹;Þmö¯£žÇÍ`GmÎ`Žé´.RÀÂdÊM)˜)^¯œ{¶.´Îmñ+í5&óì°Í̉šÖD Š„Ê ojêLÏ]ørw›ÜwЧ|°¦Ý–¾;W˜¡ãP¤†=p=Ü[ bWn_‚M¸ŽöAÜþËLëÁîÚ¬Áœu›÷³Æ,í¦{ÄÔš2Vé:ïa=Nùë¶ôÕXW)®½ñ`/mÄ`Îõ´>‘kŒ”pB¦RV—*BI7áqÂç[ÊWNfp,Ⱦ¿ð`'-¾…µÓÚAîK„±›v+SRšõ'}q[ûʈ“°x|?×¼ó~̃=µ9Ã0ªçS/gIÀ9↳4uÅ„)MãÆãd/0në äÍ{™(?ß–ÁÜÂ×½•ÀËóìX™Õ'>ß >„=]ÓpglŒ#-§uM¼8„BÜtM\˜òaÞÛ…lj^€ØVíÿ#øÙ¿™›ýÒcš„IñÍÇ4N÷+ó»âDSÃÁ¾Ø ‹> stream xÚå\Ks㸾ûWð6rÕÁ¤«fª6ݪ½eâKj2J¢,f)Ò+Rñ8¿> 6H‘´D‰o\»‘n ûC¿‰zõ~ºùóÃÍŸ~”ÌcŒJqïaã *ˆ0Ê3&Zzkïëby±ÓÇÛ;nüÅ_³Õa¥EXÄYúÛ¾DIæ~„qûíá盿=ÜüzÀõ˜g8På„Qí­v7_¿Qo í?{”ˆÀ÷žË^;O*F¸ÑpŸxÿ¸ùû usmÓцð>*ÂNßÈšJs4aAàʼnRªô–DJíH °tSXÆYi ¥‰ï(,º$„¼^<Ó‚øÀo$_ÞR3”PÁÛŒ—qî_@Š.’¸ˆöarbRûDš1óh+† ¥§©@bØ<œPéàJ³~ Œb{FM¾Ùª“«å?tmñÃhÅØ4ñsN|­ç‘?·û¥ÿ½_ú㸞ÿ‘í6ºejñ=\G«x7@ ƒ§ÓÖ ×ÚLÓõ å|=0Ü–¥Hâ´¸O?ízt1Žó]4Yçñc­Q 0R7ÑÞNåÕÌ)ጣrà»tXPÂtÝ%NO‘î<¨º¤—©XŸÖ‡‹Á¢iã‚âs1 :?jüYp¡´åÒ1’õi`´y§ áƒ ´ì7…Æpá´ ¡! ú‡_††U«ó@ÃGV™ŒetãxŸÁF“ù2~¼‹Òu¦ˆŽçm–Dx»|)ÜÝø0ÔÊÔ{3-ÃØÆ gBNÃèRBÜ8 ~4šºÚ´\Ð8ægÔä~€Y ›•öîLÐ`¶!Ãy0 AÒ‡ôpžôI+´ˆ•J.hï3j2‡x¸Ïl„41ú7‹oص,Ã6‚`¸ì~BÔ9€šÄÚ]DÐÖgðÓä}-~Ú 2EóîÜØ@¶ñƒ5–¿jæÃÌçÉ_5/-beÒKøÇú ‚¼Ó°ˆo¹ZüÇâafCa«2óÀÈŸGƒeÙF 7jZ®©„@qž \S´Œµ-ºˆ¥qÌÏ`©É}(˜Y%NQâýùµÁÒl£‰ °i•eå„÷ׄ®F“ ÐN–Kß$Yh÷Íy0ä}L-æÝØú_” ˜¾€ïOoÓÃnyÆiJ —•.7ïÄ• —Z 4v8ÕÓ2ze€<Ÿ'£WMâ4eJÖ›qÜÏÀ¦Éþw ›ÁRkÆs>-‘W*§>O"¯´µ}¢›älÆq?›&ûôHäX›9s=Ã%׆  Ž”Äô—‘®GŽDxDNz 9㸟AN“}OÐ3A°K!‡,Á6‚`¸ÓxÅ2SQ ´…5G}ñò8®gÓd‹/Ÿ²4J‹8Lî~Ê’l·D|¬²µ ’7Ù~L´Ì5‘¬ÿU†!̈ªGŸæ‡  ­x­ƒi™·bŠP9Oæ­XiÊð­a¿âÇq=£ùÛŠ¢v; Å¿«Õ>xùm½Ã#_NË“¥„ÓyNl(ŠÈåÉýšÇ÷Œæ›Œ­þöIÞrê<†Sì›û^“ÊyP1X4mTÀpJ§å»ÒWD¨yò]é£ur‡zQ1’ïiT´Ï…Š!˜€y0Ì‚‰á‚iaÂgjZt)a9ŠÍ“ÎJƒ– £¢,K>-{@1ŽñP49‡•NÓǺt0âb9­?Ü µØ\Ÿ ?Zå‡Iõ)nðäÛŠƒá‚MK(¥RDëy‚:©Ñ¸”â{ ×÷iÞæà[ë­ÉøŠPû¿Ñ>«5šWÉ‚¢Góž;m†î)¬f @€N¬OŸƒÕÖ' —zÐ{Ú`¶„„O‚ª*üÏ[Æ–gµªä ™u‹—_n™³|/Ïö6Û¯;v°ïÎÛEéc±uå)ZÅrñj_Äi§w‘!éôc‡ž;Ê·{J¢ûRºÌ"ÅÛ?zxóå§¶¼Aܶ´§û#c©|BÕ ø Ÿ¤ M“W¼ŒÐy!‰×S{ÝÒ`™*cM6¶]*˜¸á}ämNR®ŽBw¯õV $ Ö‰¡Ö8 î´ž—r¤D¿úhwZ€‰÷õNSºø„×x<~=5穎”`ó¬~±ÛË)BoÀ0,‰´Zȇ‘+á9·;6fì‡î¬¤Vé¥êp‚…·]ÃA­Ä(íò¶væÌF¸°5”M<µì×ÛË–0úÊÎöjáó•U ®¯ÿ®ë" OÃ$qÙcW ‰ó®™zÊò<^V®øß‡¼¨¬Ê@3VÙô°c•†˜akÞýgº.™a=a¼µéi°y;Ó#`MªªÈý!MÏ6J’Ì™ŒçlŸ¬ç´A ‚ãìÐÛ­›~g\̹ÖRït­Kˆ¤fYëtû>Üz¼¶a@bFë.ñ…‹Á ™ÉâņL0Zà ¸lwyu´²ù”ÌÆˆûŸÅ9AËo[ÂÊsêÛ)Úø—H_;ywAb¯Ïä¢ýú­Ð!µf¡¥“&&¨Ë·›Cº²¿}ÃéÛ°À)!º·Ú[¿žÃÙ¯±Ùº¾à瀿wǤ&ðî\Z€©çjÞ )Vz8aJ‡e¿b…ÂþòË~Ëã]œ„{ìõ®œœ}PÎÀ®2|ñ°-Å Íxµå KÆÑ²E û0 ‹hïú¥Øo—•Š–uT„q “”-–¶Vrp¬Bìúë!F±‚Üp=ªYp-ãûÊ»r¶”Aœ/§8[®@ç…LÌAýœmƒMÓÙ:ƒ-%¦Ä¶†*î­–/n7jÚqÈ<`  ô?þÜÁzÛƒEa~ÿ!½÷!rÞ'[÷¢öDßï}w_þ„†É™.çšä d.ÎQ¸†Iaœ»Ë̬ë}ãÙ~ßlþ?ê Χo×làîî½sûñŽ ¢dðÖ{øõ®C?õûÛw ­pê?\Ñø°Nªák5ÇæCu·ÙT·ýÖâ9:¸î­^ùLKB 9"¼kT/¸E)×¢lµ :_ÿ*ÞŽ)Y¹ ò„óA’tŠ2ƒ™ÀfS ã¿d;@gÿ;°±Aˆ yìwt9yod¡‰°')tU‡È°’/¸XdO.ʃûçmäîùÑŽ@…&©_÷\Œ?9h1¨÷³ ’%+ åÔ E»ª¥±†]Tl³µkÏ«mÝsâ #JÕ/1÷Q¸î]°7P¿½²Að4þÜ45{{ˆ9Ÿz§Ñ—ðÕQˆeÀ-¥°4퀻¬6kIvµ$hñRÅÕöY»Î ë¼I”PÑbk¼++âåÃèä;AmµÌ͇Uqêmd'ê¸0'Û×¶!ò­sžp¿_NÑ‘ŸcgëCå5HûfkåŠMÈ7a·Ä¶ÊÒ<¶u8!ø"Ûà5ÄËjîa£–°„¯e×ÇÆa-÷daˆG·Ò(Ï-Þ•©ÛRt.óè»|Á«KJà®z=×`y ¤öù5lO¤*¨iR=ÔÙ:壇ò=FМ¨ýN›KµwXš l î ìSTƒP¢‹úOV ½LíÍ!MbW»,;!hØ‘‚ÃEùõ…í±ã»iek­Ð) \õ ÖÍcz¶ŠžŠêÇQZ×T]Ñô9.¶S-ø{taü¶ü¾Õ¿û3J^:ØÝý»™‰SÖª‰æ¬ö]6‹æü:ç)=õõ‚«îDÿ:ëj endstream endobj 1036 0 obj << /Length 2644 /Filter /FlateDecode >> stream xÚí]s£ÈñÝ¿‚7K©õd¾®6W9'¹K¶®R¹‹_R»W$a‹Z ¼€âó¿O=  «®jÏfh¦?èžîiºGÔ{ð¨÷ÃÕíÝÕ¿—ÌcŒJqïîÞó¹çšhéÝm¼‹U\äE'Ëî›Å_Óõa%EXÄiòa?G»(Ì#¼„±üåîÃÕß\1`C=†T9aT{ëýÕÇ_¨·ø臭µ÷¤b„ûÆ;ïßW?]Q'f›Žö ?G%HÀUM¤‰LXx¾âD)uŽÌ–DJíH štKM†ÔWš ®¾í¾·}ge"KÞ²L,)k³¼n¢d‡I—7óñ'1oëÐ…Ò³4.|â³Ë(\rB¥[œï‡>‰c¿¾›Œ‹b½¬ò±ìÛlÅØ,sNŒÖ—Q9·W¾þŸ‡>a¿Æ ÿ fÉÕâK¦¯Ðûh)ÚŠt­ýŠïy K‡j¤ÀWøÞŠžf5[ü7‰Š§%£ø| |§$Ês¼?@(…<5“’.ó1Öœ²f”ð@TSBG°Áa²ÁÁê=ðA9™¾œÚá_¸ƒ€O–7BŠÅÝ6vT«ë}ºÛ¥vÚSTQ}¶²y7LI¢™T8 UÀ$EvËpÃ4‰Üà¯Å6Êè>ÍöÊzfẈ²ü›Þ FØ|TpÎzLCì”Á°ßhmÀõäEüFM#ÛG=g"Ë^Ïi±4¨6ØÁqÇIi#ÇIÙuùe]Á¸0DO¬m@LÍ3‡ä¼?¾ÞÊJ]¿¶Æ$ŽýÆhr<5Æ!mޱ’µ­Øòü–ô²5@Ã/³©h‰ÎZ*g;lŽi,ûíÑdÉô\ï-YÛ–Êyô—íÁ Ìeò*ÍÑ[Kåü}ØÓXöۣɲc 2Z¶¶EÝ7|žEh@˜¸PÀbè±¥zvÙƲß"M–‚ÏõÑ’µíA „™eÈ2#º„=T€‹ßƒö˜È²×-–{Œ÷ñ²µ,bÑéyô—-â@Þ\Æ"=¶TÏ—a‹LcÙo‘&K-gzÈxÉÚöt.ç%¼JC’N/“ð*[*ç§a{LcÙo&ËŽ=&xÈhÙÚtIçå¼JÄ¿L’¥”uX—ÞdÇ~{49v"Ö'JE _ôe5îS° “Ã~uÎ.cEl›°•ž—ü*!IÀ.S5T·ÔÒfØ.ÓXö¦É²ã(3 3ZƶeÝg£Òàþ’‹bÌäóÝÖ–$]”þþk¸.ð¶x~´D€Õ €l¢"Êö1Ƹ_=ãuîWq‚úeEñZÅÙ¨IàíS\l›²QÁìãlx𮬒Ðvydµä¶œê³¨dUM¤,ÒÀè¡QCHõßvò¢3gWå–°Ú«’‡]ÔD ÷ ߦ‡Ý¦ùðqÆIÝEÂrõφLîûUÏ”+%8 .ã\Òp"yU’ïû´OÂyžVÜd̲Íô¶YV ÎøÖ„^ksýp£À‘T[V`¿Š¾ ;¼MIõÞíÕ¶7ž·<´ üB«CûD™ªpfuLb9°8š<Û„K­ (¨^Miûî…å1–u{u6UlÞꦔä"ËC•± ›gVÇ4–Ë£Á³¿ßq©Ur EÕˤ!5pO^X%£Y·—  sêY&ýi‚Œhã:3ßÁ&.`¿}N8X[] Îy!$ÜípPl³–En–3€6 W¼Z»Ù«í¤¿ƒ¡0˜XXšìž‘Ö&¾·v¿²(Y»§q^ñv€cöAú’—ö˜E2Ô5;5¦ cAÕ0ÂßY¦>¬î;=ÅV#–Iô庡Kv‚fC©¯…Åí S·°^Á.MC«S÷ùs^D{«OËZ2í0àbOŠKX½Jµõ6,±PÍžÛû!ýÀo lj®µÌ¦–™,o$×¶ ÌFaaPge0õ\8è:ÝDyŸ|\úÕ³Šùj )¨ï`UÕGˆB®ªI·/Ó©%neÄ õ&òäzÉÀ¨r!9(±R¹+÷îÃ϶%i×5µ I«Œg¼i{‚õ&y±þ ÈsKÿ¤¶ÉYz"ŒŠÔ=|ŒÖñ½#ZöK¨{ ùtQÜ£*SGÊxæÅŽ1*À`å&>†YmúÊ!æh—o}—tRn̪™mc{Ùƒ‡ƒŸhR _[L@<¥Dùêü!È×ú¶K a÷À¸ù‹¡X éHtEëBlBk²±p©`¥*QÎ"ï¾—ruäçôZïD”4`.œ A‰tõêÒA®àØÕÿ€ô xxo4¥‹?!‚cà€ÇóN¯§†–nP‚²þü‰*êˆØ°HàŸH¤A"×-"¯Dúö üMA¼>ù“,1ûz‚!v rT£óI°ù$ø|â”˜Ž 8å nª¸&RË NÖuu ¡Î“8qõ–¯tRAmÿ¸ÊØr†:=\¹!”xÀÁåÍœ d³7fÔ[¥›· JÜ0È1äW•°¨ %lÞVú×ÝþÅ~sQl¼Wvcƒ¯I`ôÅ¢W >Y\Ãçá,jB"YžucøÑe¯˜žÒÀ&r‡µ›´O7‡2¹fî›ÏÊì®$±³¹¡TXJèvEü¸‹×áIžÝÛ|6\eJÃUùdt"M] fôÅàRU¡Û²<´lãôTn×ÇÂíÊž2ø‰ê¼³–ÛAö(f‰›¬ã<²Ÿ¤e¡8³paõ¬=Þñæ{À‘Íî ÞI}Õ™©ü=/ý FôÑ>ÖõtfY‰‹Etf»Õ1°ÿ,™=©l¿ï¥ï¾¼¥)O—€ôÙ£Á†-º¸#Ã^Æ&ÇØœ³àûj'q‡;{YYóÙIˆ´“öñ¯X \¬wÜ´âµÞA¢¼ê¨*îŠmzxØ"ä×{×QM«¼OÛeYÿ°cØ™®—puQ¼<ºór»ÆT lû”21'03Å3o—\Þ.,3¥Ê^òW–õV¬\æMWÌÞ?^4X¿B \âsûëk ´ÈN„ ´bÉœ-ˆ%£áYy Y˜> stream xÚÕ]oÛ6ð=¿B}Š ÌI‘’¸aš!ÍÒ‡¢KŒ½´&ÛL¬Ö–\Ižëþúy¤,É^S§ÀÀ<wÇûàIƒû€WgÔÎŒ4`AƒDJ¢f«³×oi0ü‹€¥â`k©VŒð$xÜžýyv19ûù¹`cDIɃÉ] bI„J‚$ŠH’È`2^‡¿ÿñìÕäòfôvò陆ž)"© Æ\3–üùõ_—†öìrÒW1Vœ(ž>FE.H’&ÌŠLI¢4ˆ#I"%PæõKPðÕÍåäúåÕhÌ“4¼¸žÜNnàóõæ½}ŽU–Ë8fD2…\.ò¦nª¼¸¯GãH¨p^ç#–† ~¾/Ê—á¿Ê FIÃYViÄ,ºÓÍB˜ wøµÕžhVé¬Ñó_áK ©ZNï6µ“9+—K=kò²¨Q\y‡SЕŒÆ1MÂÉ"¯Í&Ájc&ˆ1ng¥3³ŠÃªf‘5íÊ V˜>lòÆw•vPS☮֕n<½òŽMá6`>¶#˜ÝPæ*{o&´S¦ÖE­‰×˜3ÇηÚXðÃQWÙÈS¾Ú5‹ÒHKÓp]•k]5¹e•:‹™‰M­çˆ²š§ÞÐ8Ûî"s–4wƃfÖ8Áb¦Þÿ`XÁc0¬®õà#–žeK£,øb]司Añ€¼ÛÞ…æs»Èg æ~!°˜m–í’¬˜#JoªaT”¦a¶6úTyKÞß ¨Ï•lÕ‡ù}$wµwù=[dŽ!Œ¥@k ü´î†qïîXvÜmg掴Á±Ò«,·{†ŒhK‡Ã>°ñÛĵ—KL¨ËðÚ¡0dØÔC-[vÇœ’Ý@šSX²‡ð&GLø¢7š:’J¯mºÖ—¥5’øP·Úlú¡ÝÇÎc)ÔcŒ?ýÊû¶Æÿ’Üë¬(bñˆ4?8l¢Ôtèñ ‡ÍaÖ2n‚„ÃNM¼0´Àés·™Ü"Abêú"I¶=YÄ„¤¶Þ â°r8f­Ü‰9ö£úæÒ^‚rž™ªlšbƒè7|€KT˜×8¥b‘­ÝGæG|é3°/c6áêHþn ó¹‰ sÉ€›ŠQÊ…3µ¹˜˜€iìbl€¼ñÙÖ¹[Â%1‘q›neìé{½jÛð¹H]s\ãG†C[œ…kŠ„ïðh+¿]<¨ö€;²`%ˆ¨ ŸÙ’ÚpÒ±»™Xk-ãײÎìýiî»7ÖmÍž÷ïb® tiÐPySÝlµïRöz‘Ê<—ŠDükª<§’Hþùì—$ûš"¿—Ò­ñŽï¬ñ\(8ìâï]ãC2<§Û¬Œ ö?.;?fýÑ¢xN)eö :¬:§^ú£Jîw±šàÑåïäø?ÌAàpRzmˆöOQ¨³D˜¯ýU5âÊÝb2¨ˆú b?骬Äç(êü¾ÈÍõ ¹Æ¼\ÅîõÄLvBà Ùþ'÷°¹º˜|µ.«ø:Êz¯Ü‘§Š²Ðõ“AÌ~i1–{`-Èbî«=ÿ6ÕŸô>žRñÛ[p ·‹r©ÇÓõX÷ž\ã<&\{¨"ƒ:h=hïÛƒÖlkså]£*s(§n6׳|ÄÂU¶üɼMšë£yI0¤:›-ŽyuìÝœÛ+©´oD®€yËà6¿·O=]3 _Œ¥ ?pù|ðM[REd~¤HÌÝ5O†rÿ¶û™õ endstream endobj 1056 0 obj << /Length 1737 /Filter /FlateDecode >> stream xÚÝZKÛ6¾ûW¨èae4bøU š4 š[·F/i²MÛ´’+ɻٟáC²do½k{Mw‹QÃápf¾´q° pðqôv2zý“€”AƒÉ"ˆi'ILæÁçpš5uSeÅrÑX…¿•³Í•.š´ÉÊâ•“]ê\§µv7 ÄÆ_&ŸFï'£F†ÁqZ)"X³«Ñç/8˜ƒüS€KTpc{]\Dc í<øsôÇ÷ͤ{f 8÷vþ¾€ñ‰›•1„Èá Ÿ—ºvвq¢U:¦8¼CÓ¿“º¹.–ͪ՗6îaV;Iên¯6y“­sí„åÂIå¦r3~gRáõÖ3Q¬ÌÔcŸ\É ‚yî /?šÅ‘ýY3‘‚&ö“.]­+ݼ¯ª²rº½Ëvýµ¯F„ƒ×¤S Íä¿ÎôÚ,'بxx“å¹iÁ ´»Vi6&a­çhqÂÃÉʺž¸+ç¾oæµ€Q ]ébæåMéäMµ)fQ8¶v膆Îh +ýµK´`ûᳬ÷aÞüÈaH7ü¡ìb õ!^Øuv:yrЦ/äÖÚ¿LÞÙºòó8’‡ïÒ–NÓž•ŵ®üÉms5cÚÆ¦H¯¦ÙrSnêüÖ‰"wél«§¹3ÕÓ\¹»˜Ò9œÑCò`´¦ÄÃŽO¹½Ä7* x‘øûD¨‰*™ âÖaWxÙÃcHY"¸Ï# u\IšÂÃë郟#aœ>k"D/3ùëKì¥/ž©/§ #ÍÛ ë±(õX⪭k˜Š~òɰ÷ÙqŸñ”#a”ºÞëª\C¸ÞŽ¥p©¡®b)AR&=‘(@I2  ÷$8¢’ÔõèH„ÕgIH-b¶TŸDÀò¾Òº³¤pÿóÜ–ÙshMýÂw°Äáá8+h £ÎÁYÎc$cv8éG‰sp¶7Lg½âgÄYAá¹Rϳ]žŒ2˜óïiO÷AË5âžÿßXàc|`1ú§›©0=Lù¨q“ïK¶/^œðbˆ§ø”×.v ¦J^8âçUdÏbVìÑ™ÕñEv¯Ô ëå˜Ǧ3k™fµ.äNC^»‹Lõž(ßúN6+Xbó¶Øò/wë(L,†8°›®ýµ}Z¤Õ­kÛ:Ö:¢6MÚ·£›¬ît-#]Ì3Kÿà~SÔÙ²Ðó­†,íÛ+Ìì²#¦º‹²ˆîÚÂîÝ1tl2³ïï8•'—^µ·í‘Ù%ޝ:¾hðÐ:0 Šü+½| ÕaÌŒÊÏ¡:TAÔVû†$>ëH¡7ÌàHÁ)~FªÃ€’8QØFÄÉ…Ÿ*ö=óœGð@ü8Ès|ÌïežQq\æ>Š@œì áô¶Ñ¾‚ÚÛ®‚¾G±`až5€]U5}Òbn,,•pÐg¸Û®ÐÄóê Çà>¨ƒÓÈÄÂ,i_xuæøç &öÐ ¶fä÷˜#"e—ëàÁó ¡‚ôýPc@¥ëµžõW/÷è‰D†“•6Á¸ð[fÓ²[e×´µj£ ‰ìlÚòH×y'&lØ»uÌN¯%¦Ñ#Œ»¯6ŒØH{:Âx‚b¾³áOý&Uæx‹ÍÕ´=O·‡fçïÝó²Xƒ‡”R¤drL÷°R«+H| öÆéb«ù‘ŠbÌO„úØMß/; `…o³æ×ªJo Ûk³îøÍÙC7‚_±ù#½<ŠïD¸§óÿa@6“¦»½é·g=Û oÄÝΰ…){×ýGß ý»S޵ï'ò²Lè|ÇOõ#º¾GžÐ÷ââúüé\?$cOùR&¿÷%(žn ç½îq]`q4Éö÷‰?àòÒ½ä±÷ë> stream xÚíZ_ã¶ßO¡·•‘˜GR$%=ä€ÉÍCÑ^Škd›^«•¥=I>góé;ádIvw×kçIûbRCŠÎ óGæÁ}Àƒo¾»»yóN‰@–j-ƒ»uñˆE±âÔ0£‚»Uð!\ämÓÖyy?›Ë8 ¿¯–»­-۬ͫòk¢½·…ÍK,šý|÷ÓÍw7oìÅÄV•Lp,·7~æÁ è?œEiìݬm ´`26Ð/‚¿Ýüõ†{^û– £Lšß4"¨aàˆø~pº˜I¡žYÐ’qÓÉ4ÓŽÏ×o|˜kÎüléìo¨ç…RŠ#JiGÛ¿y'GÊàÁ5DS`[?Ô–æßnF«,@wsI¤&¿/íêð*nzoý®;§cè´Ï:“/ ’Í‹Ó~ÜeB…Qa«÷yãµ$¦„ké 2‘Ìå"Õ¼Ÿíù×<¬-œ­¡›5%݉™áÔ3©ÃOølýàn»€Û¢Ñ.qKØ'pðA`uŠ&aFD‰ ‹ãèi`L¸z\-‘)Y ÷Ä<Ð3\ø%ŽY;¦ ¶I= ¶AºÒ€®:ê®m°>¹òÂöH;]"°rEêQ: 7Àg)O…rcÀCÒœÊÞ¾};Q0šÃa¾4L¬6óÆ¥xpøq[(Þ½»…‡Æv~¼e~ðý¹ßy."¦UJû€ŽÝÎ „0•/yž_Xs1Zó%†8º5UžœoóÇ7–8ïæñaô4Æ4KŽB×I.[;wÀGù= b%a‘·.6@*¹ë”lAš-WyVR¿sÓØ¹éŽ0‚åH ðÝ3^ìµcÉ´HÀºx:†‰4KŒîæ}áö1ãr2Oo>WBƒw;—+xLÁx¬l<ÇE)3qÜÍò`—Cí]£… ï6Ö™ˆHCŠíêÓS^Rë‚ì4ÙÖ÷¶YY:݋ąv~Z^SwWöÖOËjçÌ#«[?ueçäŒ àŽ–cq5Ë:_¸€=à¢Bމm6±—ÆÌÓ¨ LÅL ¬((7× Ê!Ö‹ªl˜{Ú$8÷Ôâ$õ•AºH Øø…\8‰Ï•ËDÊ‚svA6v®¥‘ó$ÄÛº@qåÙ´œ*5Ró3ÈNQóôªI„6#ž¹6–}ÎÖ%qøçªõbj7™—¥KU¡EÖ› ʲò¡H€ÈǤœ${Çnñ±¶Ô!“Aüû„úËŠ|Õ P»ßT…£Û¦i˜.Ьç²Ýr¹_¿¬<¨ÌbéHÁØfÔ`‘«°X}ÈApâ†`Ê[‘.2”b‡ÔòYÅ@4¬cqº‚„H}¿É—bFvuÙt烅¶‡{/¢£ýOnÛ³Y-þ1x'.Í;æMW?Œ˜‚Ìp$rûqçwç2úÒPÅÊ.Ž€[•Õ'†”Sêž°SüºšÔ Ñ¢u{P¾dæ $¯À¾ð`'”a1Ü•عÂ(÷yv€ëûvCýj:84YxÌ›òv†žŠ3j¶»¢Í ;XgóûMÛ/WvoœDD,Rýáþž;ûbÏ)AÄ`]Ѥ6‡ŒúÝë |ÏÊ…§Æ‡§ÈLޏî©Põ騳.ì2#t•¦sãt:<0Œ8}yW4ê]fM8ŠOÑ.š“‡V x"õ¼¡Ž2fŒŒ¸ ÿ1ÖîhƒmöH»ÃÞk‡#Òƒ²:8•ŸnÁh.ðÀù(%é¤R[=á!ÖLY;å§bE¤S¤-,µÙªj7ÝP7AXzð¢r PšZûIT¬ÇYÄ#m÷à7¯¨õ€ÙÅx° úC¼·î |ª³ ‚ÑÉK»DØÆ¹æ¼b¯ä‚eyI±þ(ÕO×½YjâKн‡m†µÞnáÏXì…L8‰O×:áUW°DãñºeG”÷ÏÕC!Í-§UNô Ý•ÑÝbÆ/?¢P™ôvÂÓ‹^jª­]ç“\íU‹k/x{n zËûÅU˜E¯uQ£"‹Jº¬šï B–l_“?YëþYkVºwÿ7ØË ö³èŠÿÂ/?ö úÕô¨ÙÅÂê.åo|ŸùNxΜ~39‡#~—·ßÖuöˆzÇ»SbÝþ á|s E~~wô»ÒÞ±nì/¯üÊé3Œ[!#~ûe?ôfòÌ‚¯í¢¾¸Ë/dÄ»·Ìøö:ŸëÏÏZŽr'XB¤æ_ë»vôD­˜„½Îø;≿LÂ:ørÞî?…³)/øSà\Fq‡2ÉdúC“ endstream endobj 970 0 obj << /Type /ObjStm /N 100 /First 923 /Length 2035 /Filter /FlateDecode >> stream xÚÍZMo7½Ï¯àq³ëƒd`Hb(Y`0b’>8Î`ר@ $Èþû}Å™¶2 ÓÒ4&5§»š,_½ª"Û«¥’¼z"©É[IÜWJZ WOU5áq5MMRcÅÝ–Zõ×Ô5ÞÂTWŽçTj¼®‰ÈâýŠ~w:%ÒÚÑàDÕã„;ÇžÈ0`ÃÕ ¥u%<@/n´òî‰ ÃÄy´½šàêÑ—%A#ƒhIÖqŘŽ.ÉÊѨ¸=¹k¼Ófì^’”‚ñ*®1AÇÕbüž„8nà f™ˆxÜ‘$U ¬k’Ö0÷xÛ Ìä-‰+¬ µô#ašÊTÐ4j4ðŒ=„,©Hܪ˜ Zœ`aä^B·½qÌkÑ[ “ ŸÞGgy—Ñ­&+ÎXzã1¼6`l˜ ÿLÃLÓ´6 «xÕxX4@=\ux•…£à P(ÔÅ8 ‹`å]†…+°ZËg_½x±Z¿ùßo›´þêòòêvµ~ýéçÛñûŸ/ÿ»Z}uýËæúmÿ–wëïÖÿXó–ÆÕúû͇Ûô—+Lê–%<±·ÌáéDãAì«ôâEZ¿Nëo¯Þ\¥õËô·¼øñêòïY¿H_~¹Âßj`ül²UC eb§QYN0Q–Á#[EŒr‡µg)ÒÚrzh‘LÜNmžÛÌe!Þ³ÇËôÖÁ›%}ŸÖ?üøSp'°;fuùé×_ß=*Çð€ž­_½¼Hë7›ßoÓ»}ƒ¾zÿïÍjý :ß\ÞÞ¤ 2¼f»¹útýas3‚¸õ¯Í/ß}õ{†®^3C„˜ÍaÂWï¯ÑEŠ82ÄÇRÝ`ðV¡R«íUw×­Þ©¶×\ßʽ[‚äœ J‚¢ðEé–=H«i®Ú·AqÉ‚ÚJ9C{CN:œƒ|–3ëžõŸmc=°±ñ‰66™gã=9ஊ´õ¨œ¨çȲÿ||ú¡íú“lçÝÚ’š‘4ªb”Y 4²Ä‚ŠKM=?Ì;þóþ·ÛÍu&»Ï;f3×Õö}‡*ïGåDÑsÞºî¹ÁÞºî­8*¤&zÊ"#Š²Û‰«ì»|Ìwy›ïò6ßåmÞv×¾$(äg5’stÍXz1±ÛùB²”–+œgÒuà ÍYz,™72ØZPú«·ÜP´22¥Ø•¨Å³ˆÏ ‡WræØ(‰’ Õ·:2'ç3Örªu6hx6ÖzTfèU²ž5Ÿ‡ý€Wí±å¹€ PòR{b²ä3¾û½`„¤¹ÚQ9AB[-‹#üdÛ8ri›ckí$Ö[w¡Õع[2JuD£Ô±2.-‰p®±/ŠtÕz=#êªdãz§è²Ò<=îÃnlxÅÝ)ÁíÙРò4žÐö¦ëÏœîóçñÄédˆÓqZâTjÔ‘÷{âv³V0¾÷~Æ- —{ñIE®È>f*B0§yµè=ÁGvìþ„$ž ?àt²??Ûý÷xöÃò“ *rè*<¹ ËÔЩQ§Æ²åLµÜ¬"DXf5äÈ›ÀRj9²²_Ïœ¨H„‹C?ɱ qNF†DRíIntêö;L~ÒD¡‰ƒ»æiB &±ÚÌÒ>kR™2ÛLMÚ’‹{5qâ9Â7›¡Øˆã4P®·§¨1™m&Áñ~5Ëp¡8)<Åã—!8y PŠ>Ëýÿ8_©†S>œ¢–“NlIöª¥DUÅ(6ÙtœEÅ÷ öc‘×p¹Ýv›Ë=ÁÇÊ¥\µ$°¯õöôPþXžûlÔ^õtø.šéßtŠoÚ¦FŸ65|Ið(ÇÙÖÝYÛ„ž™‡\²ä!—fÃ,+x>¾§‰ ,ã£àúÈæ,¨Çd‘éõ³EjX¤ñ-B¹4%Q¸4bF:pI+ÔtÄ$ F>E öÔØ!¿ Á0 Bá‘,¾œ"=¶™ ­˜Rj9âE@¥ô#Ñ%Ï %N¨ïôˆŠ>>šš¥Ça±Sç;õÞÉ›n·Ý ê8f’¿ÚnRº=4<‰WkÙQe¥©1•u*)ÚçÆÄ½mâÞ6qo›¸·MÜÛ&ÆîÓ}b÷)Äb´,9lÝ Á‰– ˆo¹²¿#[”•é 45÷±Á€z>ìÒQß­ë—Ô#J²ØPØé!¤ìóô¸£Âÿ¾Î endstream endobj 1096 0 obj << /Length 1920 /Filter /FlateDecode >> stream xÚÕZÍ’ã6¾÷SèykÍð_R*;U™ììTrHÕNú6;µM·U%K^IN§óôÊ–d¯»Ýî™Ù\, $”ytñèýÍÛÛ›oÿ¥E$ËŒ‘Ñí*Jd”d–YÝ.£ñ]ѵ]ST÷³¹LÒøŸõb·qU—wE]ýh\éòÖÑ‹b‚©Ù§ÛŸoÞÝÞü÷F€ â*™à6Zln>~âÑè?Gœ©,ü¨M¤`2±Ð.£_oþ}ÇjÊ#5aZ=©;Ô Mânw}ËyM8“n|xžäW`U›fñ¯îò#,ùP¤z“íOå»SG„þF9;…ʘ°C{x[µërw•ÁH9‰²}rÉ«œ ) ë=»µw:l=nݸox =¡q°ÉmQ(bƒ¦‘žÔ3ŒÀ‰M™…4iäÔçJÊ NôødÄ"2ÒàiαàQ V Ž;¦ „dŒ 1‚tm ±El­Nò=Ê-û“xÁ”Â5¹Íˆò!À/ p–qp‚_ÆÆÃö½yófâèó‡áÒ2‘î]>xÓ<:üxÉ# å5 yí#æø¶è~hšüñ?Üð>õ<‹å„$T̤‡¨>Å)4Iȉ1AìÓ6œpL2Š}n3N ‹ö‡”~BÜüàü“Ú~Ã9¸#ßLÌy¹1ø×3C¾ÝzFúÂþ¤N¹Óë¹”9mJ˜ëUפ”ç;¢ÝòLwv B³ß´Ûu{ µ,Ú9õ¾izÝlÐvD!FS|Ö$œ£LÅ‚ÉüJü:þæ; -âbä º}‘jÇ»üœ³' À£ÅGgä£Pòá>©O#ÏI)£ìgÀm4dîKs×QþÔPàgÒ^?_^ðì/.E¤$k ²x_Ue¯SUµ_¡ªBW áíɪʦ'«*/kçë%ov‹5ÑBeÕy¾qD¢ë‚#˜jµw‡§`ê@:aí¡ÐÁÙoE[·û®&tæeØnËP_Ï­N½ ýˆúŽf×»p£ð t9ÆŽËb5“&^ãjðPdT¥À3\!¥JMS$Õl@ÏCN¾¸Äöÿ*.±¯Éé6%¯¨µ/N‡…EPN¸µ½ÊK„¯æ”G9ÏòGôÊãÌ¿¥!ÐMÉ…[%°dWl©±ŒÕçƒTLéäŒ=3ÄØ=ç/³•¥Øô³?{Væ¿Cܹ{µLû×…ç­»ox¾›ö2@Œ’øô÷RØÈéÑß«aÛˆ#HÇ{ö¹‘ÿpõa]”îìö@½ª~íÙÖ®ïO®ë´(]uß­¿{¹—“Œö€1ö’=PüY5Cj<–}Õšá‹D¦ö«áÿ`²aY77Sežæ39jòjüjsñ:¥Ë PÁ8AF›¯X½H.˜ÈT_½þJ…Šðiö[z´ÅEõÌ8+‰Û²¸_ÓçŠÄŽ wGðj?B¦ô‘¤)]>TýbeœaÌ8ÏD|€¦ }˜i©™{¨‰÷Çe[ vÛmÝt¿(¨ŒS•€C0èÌO!ëE±-=CeCeûo46@¾/Œñ÷§J!™±”Û'J¡„ ›K¡œ$„ÎTK»“ŒöŸ[æAÙë«ÍÒìlq žwÏoÀÙ¸8€™K×åEIm7?4õÁ]Ð%æá;€ÖPçêñW¬àÚqŸþÀhpóä’¿œþ—ƒÊ˜…µy±Šƒ¢ÜJÿ¸Î·/àà¨,H¸ÇRûÿA¼í‹ÅvªëŸîÚ˜Y endstream endobj 1102 0 obj << /Length 1832 /Filter /FlateDecode >> stream xÚÅYÝsÛ6 ÷_¡7ËwµÆQÙ­wý^z[×5~Ø]Ú»Òk³%O’—æ¿H²$»iœdë‹E @€À L¼+xoFÄ>ÿQxz1ób!‚4dÞb3ºüD¼ èo=¤iä]® °8‚ñÚ»ý>z>ýð:¤¥A*ófK/ŒD¦±sıðf™wé¿øùÙûÙ«“O³·ÈŒŠPós–xS–f ûÅùšuôjÖßa”² æ{ì…AœÄTk¤<¢(ñ".ž†Vå/ç/Îß½y2™²8ñ_š?{÷ï‘­`=«§`µ–9h hŠ2•E¾Ý­e“W Bpž²ºÑcæg²‘H]ÈIs…鸤—Ë}±’ëõ„úª¸² òŸïošUY“)§‰ÿ[¡úËó¦FBÝT°¶YÕ–nŸÍJZ…7åN[ ^œÒ0à ÊÊb<ÉÀÅYì¯ä„ÿŸ ¾BJSêgä_O(ñËJ›ªÉr^îìšfeY×å„ `4ük¥_PÒçµ{à4xùs­f/@oWŒÛôêüKës‚ó¥eùR‹ýH[ìÖvýõJn$Á‰–ü‹²2N$Î=D[©E^«õ ¾Óp`œ´.Ý/ªå²]±Ê³L8ž·´«ŽNÁMÀÑÉE“—E¸ý2 ¡gCî\KK©õKAŸ2ìH®ËBò¦4†m£ f2Ë-5Sõ¢Êç*CºµCK®‰‹` J·ÜªQU®j›àƒ)æZŸ'¡~%ÁUU+¸è9Þ"Æü¦Qhb V$  ;`‡_Q¯‚‰â‡7£!Æ€ì0¨NU-; h_ðÉ ¼Ë© Ä¿Xç }Ô]aCdݰ‡Çgì’)K làjW%)ø¢R gd¥óìj·QESŸÛ›:šOtU7ȹ-ëÜ0Lé06d“²h4 ¥‰_víVº…­¸µ¼£¬cç$‹Ì†&>6hùŒÔÛ‡/Î-œESVø~½Ê6Ö3…“°Ú扆ý¤Gã|f6‡:Ы ‡]Ÿ!å#¤qœŸëFmÇ@¢úû×ùz3sËÑyx­WeÕ@ªFÂ×^LȈôô¦¬íÈ„¸Ù‹ÛTnÒ ”€ÇÚ0§j[•s9¡G°æÏ˜ ¿P˜wŠL#>Ók$×à`e²)Ò€VYòÒx¸•öú¹Ù†`ͺ1É ØÆ4† à^RrFÙ§c…-‚òJ…ã´>U•jvUc‰JÙ Pt²7Æ9¼" 5ÚpùAÄYß~ gecÉ¥Ž4Ï]`äÅ1“(ºŸ¶•Çlˆ¹ãx²WuÌCQÀøÞ?ü¸sx$€0}ç€ÐÖ90¶§Ú­œ9ûÀ*Ä8ë¸Á@L¯÷‰’ ¢Üãˆô?> stream xÚíZ[o£F~÷¯@êCpS¦s"íJÝn»R*5É[šb“˜-ð&ù÷=sö:¾&ÙÕ&’‡3gÎó `çÞÁΧÁ‡«Á¯râ‚B!¨suçøÔñC‰$w®ÆÎµ{›TeU$ÙýУ~à~ÌGóiœUQ•äÙ/†v§qTÆæ„!‚Øðæê|ðÇÕà¿i°CŒTŠ–Îh:¸¾ÁÎèçF, œÍ5u¸ ˆúÆ©s9ø{€­š  ü÷Ž\|jI–’„9¾„[)]/=@X4Â;"BI(â8X'¸¹šOXËŠ­U5D˜ö<ŠÎ…¨`ä"vîVŠ®­±tD~ ô»!ÌÕ-=Ê…u´%0 qHjGƒ½±Œ§ß¿¯ýV‹…Àm~* (\Òܑᅅ8‹=u‡S;×žÄØ}×n‰’ê·¢ˆžþÁ[T¨;9üHfv(Z {Ò¶áMøc°?!x—»Ozú» 3±:?oÿ¾ñ=kM0$x¸Úp3®õ V³eaݤhµÖ}ü0¬Ý§ ]ŸYýAFBIfÄLÓ¡ˆ¾nZÐÓüB¶LXSŒX[‚9ò©_+ôÓP¯ã.)ÊÊ …9¨Ô÷—’Zÿ˜ÉÚ”‹åÅ{D2p¥ìÚÛDOúöÎÄF¬x%/nãDÖwâÙ1¼‰‹§j¢ŸúüqϪ%³ððª|ßÙï–¨[[×ë©¶Q\ð‰‹»$‹R3äÇ÷ýcüÍûýìèŽ'/QÕ×Õƒ4ªËÄÂCAtêüá*ý÷[äRxùÒs”ÊSäS3’}B5‰mTfcKÉ;5ê+¬GëIºaº Äè@-­%ø¶œYBUJ… ÜU-ƒBU>QÉtjÕqÐ#^´°(GŒË‹ _1[ã@ÏŒzI¼õ4‹ ý†Ïžf«4 1’œ­7Ô Ù˜(ɼY4¸Aý&dCôf"4âDpÓG`È X½Ç}DÔ¬'ÒàÄó<©‘Ò:@È8ò™µâÕ0À*Éeîç\%F9øý>놙Ã(Ÿ«¤Ð ‡šÖzߪNóÛÏZ¥á™—±¡Z?ö=B%¬Åo‚çô+Q‹Y³«9º2Q@›€:}·RN>h\k&/J}œ*¹mEuM×O.¥âA½—Ó#6»$‹yÐEÍ[ÇÙ¬¿õÒWŒKȆÆQͽ³ïbÒË•Y?«‰`¨1мŸK´R¦Œ¡Ðçû å0@þúÝ`fŠªÜ(/¦éàd+xœüü®ŸÁɬ‡“)…h!¿ËäÑ ¢§ÒŒTª©ã¨ˆ¡ÈÕ{ÒÍÞž)ƒmÔ{¶¶‰ê5í9âÞ¤ù_tQ17êÆÞíÿJ|Ó·ðøà¯ß7¶ôé!-=‰ß¶¥ïjç´ˆè7úÈ›¾#®ÿñ8!Ñ”>ö#&ö‰‰ÍfÖ7¾¢ÿûNç?œ¾"ø^{!¦Ïý>Š‚øããñ¸ÏN±WpXìñ½dŠüQ?a•Ó—jF_ùù³óŽîö`x ’ƒAöø¢ó=¼àˆJ›ÏáW­ÏB$©½Œ=`º¿O¢™ýÁw%@K©{™&#¼ö»ýúÄŒíw{93<›ƒ=ÿ¿ÒK@ endstream endobj 1125 0 obj << /Length 2242 /Filter /FlateDecode >> stream xÚíZ_oÛ8ϧp•šÇÿ’Ø]ìÝb÷aëæåÐ-p²M'êÚRN’›äÛßCÊ’:‘åë¢×K‹‘Ãáp8ó’4º‰hôÓÕ×Wý»dc$SŠG×ëHPAD¢¢$ÓDËèz½EÛ´uQÞÌæÕ2TŠHéåüµj­‚ÇímÞÚƒ’'ýN)/óM ÖÆÓ·¦½­V ÒóÍÆS«U±~ôD$uZ°C*ÎË~h*¬w_„ÖU¹ñmïgŒÆUýÒï‹öÖé…NS;ðD¯LuTÃ(ˆï~²ó£ó“ ’fV¥nÈ?íۺΑ«WÕ¡žæ¡ÑœIЖƦÕâ£Y¶¢qYµX@…A¡Ønwm¾Ø˜‰3ž‘TŠžÄÍIi#:塺—’Ø& ¿fDqÍ9TÒVùy k?V;[ðJÏËÉm…ÔUQ"%ÇÇ&¯g,o ~/wÛ…©ñSµFZ7ççukÊ®„UÐ~¦Î*M‰* Ú‰úŒŽRÚU_æ^¨…—iטÕpðÅö®®fLÅŸìAm ÂIo y™õŒ+·X–…)—¶6˜²H(Ú»-Ô&_å‹bS´3­b2›k þ ê:ë,¾ÁÊ›âK0øæ´f U½*ʼö¬ƒw±eœ&[ZïÊ¥u1ø¨¸´mOE‹m³goGF‡–Þ÷_"íœCê8pœ|_Âúwšƒ²í×>óëäøÚ˜»¼ÎÛªÆ×{4(Y¹}Yð:) ¿ñ}9“‚ç@˜ÌÚ÷ŒÅÖĽ(A4/ÒMaçg­U ª­Á?1J4X¸«ª|e Û/èÞjPhûðèCuvmW½¯‡6¥¼M9‚× ”+ÿ-Ô1Û»öÑWÃs+|¿ý‡e€0ýAHÐ)ÑLDZK"Ä3a!%Îâ1* X¤ŒGZ(¢UvŠ8¬²$ñ,ŽE;¦ôºÉe¬ß¥K•®D`\›hý$ç°ŽŸ€ÁP’QpÐÔ´w ìÐxgCè_$ö?ι (ÐSô~®)¿¸O|¢ÅïTÑ]QŽázÄ1¶¡ßrݘò¦ kg°¢,€e«†lÄø¡0 æ»¥Ž¿Ä–ŽÃ€â<®¦}5s™’„'Á…®a% îpV¸&l”ʳ»e‚Ð}ô>ðò/c8ŒeD >ÔyycžPõ¿LÕ”Ò§”ýÁ‡ š¸>ç0%}n.b¡} !Uh¯’%~u Ç5¢ ç´|uÂ_´È!=ì qµwì^â£U¡JÀíãÝá±SrŒO>rr„qm¨­‰  î€ø®—‡€7eJz7¨Ò’…íKûŒâüNÀĘØõ,ÐÒÄò±eã DÂ=q9MÛe=÷¡PÍ Ú'Sß×…ûz §Q ²H"|ˆ¾v°€²ÚØ O¹Ã6–ÜÞº°¥Æxèc?cVÔ.+¡!±¡l(h—úøßì[ug à¬TùqP¶¿ÊwU{®˜Ø*n¸„äÅ&¤‡Ø£sŸçg šd<½@’p†e í‘ó%iW<eïͰËàO›UÛÙäsù”r9k®<͆aéã®ñp²e}¤y ƒ£2è¸`­a¿\Bèæ'÷Ì;̉¨·ñÑ%º"z´¸LÒ#ÎeU¶yQšú»8Q* ‘OÁ‰B&$…Lë¤cdá2= (öúéÅÀy4R¤$qkÈZL–³±%¸Ñ!Þ7 ©HâÑä›7oFàœük ê^Ø‚¹@`^ÿ‡ÊŸ{m€Òá ¼ôyEú¥ùÙÉS¤érþ~ æ‡#ÿnLkuØúC¢]]¥{ZTšZ)H–eaÁ$£6Ûê“Á2Ǻ8[²Ï>ï*O8€ çLËÀ+‚d'çîr«ç.BrÑ3ÚÿøxÚû±íŸ´´Q÷÷j²2(òUç(añºÆ8§Òú[w#‹Qn„ËI~DÒÏ9’3ÔæÇ1a/&­à[ó0q¿BCÔzhPgg…g€Ÿ# fyhqN^øô ŽàŠ$ÚÃÙΘÑ{nïÔÆ]ݘ=šõ{—…G£­ÂJ›ƒ¦Ík…þ§)WŸÇËäš¼)6cpª€d¦n NåR•‰ÓS¥"ø”Úë¥R‘ïĨöÔ1“ß F}°•óÿ#Ô1þu~ήqzŽÎG¦°b¡x˜nòÆ#Ñ´Q§CQfOÄÅŸ6I£"xz¹LàY}¯‹úÏSø¥½Ò÷gx×òlŒ;ÝýŒG6>‡¸®wæ2ftœ< Ö–ƒ8ÍáòÝûÍFˆ~œÂ+HÒí4ò‰;hÑû>Dû$ÝŸ:5¦nŸ»1âZà^£Ëo-’ÂoúIo‹›Ûin§ùáÎ,Û×S7‚A‰#„• °C¨ßæxßÀËZ•S¯¯ÜULŽºo£qÚÉá/È‚CiPwEˆµB)/q{T¹+‚&ñ[ü°ÀºÜîoîTÀÃq0J™‰áFüÖ£WåÏíeÜÀ¤ö>Þ«KìÕZc*«ɳ¾N¦ÉÀá;}ùy‡µžuFåî$Fö>ИûL€ï€å?!Im|KO»e%H’°)ù˾—~úâù~Áü…ÞyðàßLþ"ÄW’Áü7÷iÑ«!½¯áï":=Ó;cúkÚ.°9g».´A7Úk¹îÔ M³ƒûÚ ÜšNÆ\×~âJ¹ÝßɈ†@Õ\ÈÖ8¿üUŒ9ãB«øÀ/¦ÿp,S¥ endstream endobj 1133 0 obj << /Length 2083 /Filter /FlateDecode >> stream xÚÕZ[oë6~ϯ°‘±5ï”Ðl·=Eû°À6éSö•m:VkK>º4Mý9”-Ù^'¾œ, æˆ"‡C~CÎDZiôÑèû›oîoÞ}”,bŒ¤Jñè~™T-£ûYôOò¦nª¼x¹IâoËi»²E“5yY|…u?Ù¥Íj‹‚0"FŸî¼ùîþæó ƒahÄP+'ŒêhººyøD£ÔÿQ"Ò$zò­V‘TŒp£A^Fw7ÿ¾¡ÁÌMI‡·„kázjUðb¯ò§ÞÄ$Ro&¦$I¤Æ™i"‚¥çóý1DJ¨I@‰¡üÝVOUÞØá(„ÓÄ©0>e¢Qûn¥×¶ö õcž‘$Çy÷‘PÕ†H¦;Ãf¥­.‘Æ«vº@©YXêl¤¬FgÌœLY7l^Ô¶jŽÚ)¡b³€ÎÁ$‹'#Nã¶A£Ö•åÓ&›,Ÿ·†_ffjH²ó›¼ùGUeÏÇ—ôJ¾Áyò«6·#¥â°¬³¬ÉPÊýt oL4o‘R…Ž#¦âßÝbØØz)Ož±DP@(숫ø œvâí£"ï(ÀÜ»N'D3éüE½°óBÕfã T$ŒGZ0’sLuN&xаoÙ~MoplÆú£¸z© áJ½•æïmßÍF3z·k©DoÔtç„ÛÃ5eáœÐIJXʤ>ìø‚óžm{® K6¾_”4Ú~ø¡50tô0Ö”Æ_”‡Jp»¦²Ùê?TÑλ•ëêÜN tí~×ßî5¯éDÿ °úœ qNïÛ Ä`3 6¿ ÀîêÃrŽ™ J¦_‚˜ìZ¿.ëË „@á"„rÍD:ú5ÛŽr§ã_p¹6áçm–TáÛ_Ø-V––¿ÐÛ`ÖÂq«ž¥0ƈѸ,nG,‰ýœÝÜ<= s{,¡!Oâ¹k˜9<Ÿª²x$£1ì;\S×ÂÑQ‹ï'vY®æÞ<æî9^-êrº•óÐ}:ÛÏmhÙÒ!®75{ ºnm‹ âÊ6‹rÞgÅl«÷À¼êZdÕ Ùd½Ì§Ë,ñbG^àƒ 8Ñ!$óMöy¤¾iIàÚÒèãû3ØŠ*pð¾ &pÅÔ*Rö:Ã)ýŒKá&1o‹©›D½? θ‰ëXÁ…!ʤÿË ¿¬l°Š),Ñé6 Àpݹ1—‘p8êøÉË0¸<™.Wti’êƒj‚W=Ç &õW›0¸‰¹‡Q¹†9'•î˜óc¿‡ÿO£À×|19†Îɶ Ñîòx÷—Ñ0est n݀΀´Ð5,êXÔ„†ü½Ã‡À xf'›7Ä º«$¹ 3¦HqÌîð€Y¶^Ûb†€½Ó5Œè`ñày*.'Û3ĺ óá"€±Ay\$îí€Ëº²¯æVtÀ ¬x ïé €œlÇ|Éñ\‹ ¸w1¾¡Æê:Ôøn½Ì›ÆEîK³ÁÃŒ3õ[–ˆ½„}Ñ„sí&r”½L!ß!mò•Ï Kç –Ó¬@ab± ™Êg|jk;o—(7å¦Î Âß&àyf—ù âL5l†vz14ì_Jœ Ŧ©E2Gg7žq_–ì•LÁfdX<ÚÂVYãn!ž’vÂ&Ÿ»ÖëÓ¸ˆ¦Tò’4.§†Phptç§pý„ûùyÜÞ0ýÃâûªµ‡Üôýù~š(âÄŸBÎñSAÝm ¢YsÔmˆÁmæõ¥ÙØ~RûÙnÎŽë4> stream xÚ¥VËnÛ0¼ë+x‹ ÔÛ]>¥5Рm€Üšøææà8²+ÀTQÐäï»Ô#eCN é5w8œ!¹D±(.¢óiôù§&A©1RL—B¡åŒp©«ÅôNÌâÛ¼|(‹|»¥Kâï»Åã&Û–ó2ßm?Õ±«lͲú‡5º™^F?¦Ñ߈x.$œdT „V,6ÑìÅÇ/‚Jñ¯µÚHg¹¿×ѯ®Ì’?ÅJÔ«‹²MÀ’Îrª”Ãè  y ’ÂZ^6€@‘jД4û¼™¦€DÝi|\Ò¨¸ÈÄò r«ÅÞ7¸Ä³dÕµOéE®¯-s@H1%ïµ7„ÕF“Ô>O&“ʵ–÷†íŽ—(‘üW5z^Í+xiª©ƒO-fc‹ À›ày^~+Šùóo4ØJã357VÕ€A¤ŒÏ°7&á“vˆ$µ:%û¬Ç?fÎÔp>®_üq£æ˜v€“±åA ³ òªîrW šg$³Ñ­y·ÏeÖP?>CŸº’à¤k¡òí༔²‚ö”MC_ðÅcÙÙ'LÁø E5F©1’C¦}9Ý5B]->° N±M!ûvÏk9¨`bÀ÷½÷NòOöÔÙ¼Òn›z÷w#cܨ–mj&ÚõOÑq …Cü0ÉCô®ƒ·ÜèAa3|”5Ÿ­÷½æ!ô±”°~-ê­Ñ ­{O¹=ð$`ŇXR­–£±•2¾¾_çeY½ øÙ M¬L $‹ô1åÀ± endstream endobj 1144 0 obj << /Length 222 /Filter /FlateDecode >> stream xÚ•P±nÂ0Ýý7:¹úìÄŽW  ±µñ†ÒÄ¥‘’@Á¨¿_7†¡R—N÷Þééݽ'à¶léØÓ¦ B[–Ü; ÆjÔ¸öü­×pé§c–KSñõ©½~ MèOÓ"í^ýà›«OD!¡ÊnÇžûdÏ ä*‘„†vdûƒ€.îw PÙ ¾fÕEI(Žx€š½0qó1ù•Jmþc÷wZeQKJi•Îrª„°|õÑœƒ¿ü„2\c–k)y=ôm¬âž{=“„›©K >'Í\ÁãïXÅ7nV\ endstream endobj 1159 0 obj << /Length 2256 /Filter /FlateDecode >> stream xÚí]sÛ¸ñÝ¿‚o¡¦Œ$§ÓÌ8‰“ÞÝÔ“:n_r7J‚,ö$RGBñ©¿¾»Xe׎,Ϥi`±Xì÷.óè6âÑÇ3ÆßÎŒ<Q*£Tk–'2š®Î¾ü£ÀŒ8ËsÝy¬U”hÁdj`¾Œ>ŸýõìíÍÙù‡DDB°\kÝÌ£Äh–äi”*ÅÒTG7³èKüîÏŸn.¯G¿ÜüHø)“B'ˆ?æLg"Ëœ ØñèŸ/ÿ~y…Èg—7CM.Y.³çð(–f©À;‘ÒLå Ýw}yñþ‡«¯Gcixüi$8/®?ˆ Wïiò·«°9Jxüî'D@.;ur&$\̤Q𫌈ظ¼þxv¨Mb¤L }Aôe¬Ñk[ÌÊê¸O³¸¨f4YÍHè¸ÅýkÎ?È-+ZS†¸ºYXBg’gxUšÀo’ââHbš}‚RÀ>šÆÓ{[ºÏ®±ÅêQ&LÊT’tgP†yàŒëŽÜ»ºjÝ·ñ!¸òywrº,ÚÖ¶ P¥âi]¹¢¬hQmVÛмžÓ¸²nQÏö¼»MoX8Ò.D^šæÑX$,I‚î'¥k]CÈÒÄ’’i\Îi]:ZßÙÆ ü̹\¿`­–ÆŠËø½]ÛjÖ®+ÂYÔ#©ã»êàüájƒ2¡ÍÔÙPF¼¢>=|UÞ.œe*¦nS,—[Œ-Oð´I;]zªöZ5$Ù“@MW64w‹¢"ŒÖÕÍáá•]ÕÍvdtŒ1žŠx2’<Þ¸î¬mm‡ØÙÉqëæWÚ"«ÁÄ–þÚš­eÝøº1müà]C±y†Ž]MãÄ. dæ+F$r¡L¼,Å«-a4ô’{:4’šQ&•:XŒÈ4Û@|ϰ\xÛ)Ó‘\7õÚ6n{bD)%Y¦û]×í£‰X©ùnQNÄMÙÍ,‚”ÓMÓØŠ\g¬4$Å,*®*]‰>«„ˆçM½Âï¨"c¬%h=Š#­cv¢Àj\¶“áI5“;ìiØmŠêÖgç"þ—mj‚ýÌ5óø+Ú¶Xn,-Ib¾‹AÐà ÚuBŸQD.7f¨»¥­nª>Ë)Må<¨½ã¼Æ,Á½Ãx§oÄ&®ÞY¦дï·Ë8÷¤\Ü– >¿Àº ëuÑHÏÐ’@° ¬AêJd_ÕÎ>† %7wrÅR9Kõ1–öµ8`wáåy)ÛêÕHd±gMxÓ• 0UávA`(Íw´I'ƒßêmò }¸ Tg!¥Ûþ–zÝ¢ `Já-.;•Ô´&j¶ä!&aÙaÉñ OI0ËjµqÅdyª.S‰Óg•^Hº/½õäŸvê#˜óM NV¶¨¦xçÈzgµÝS?›£üs Ckû”¢ÒÛJñ¸“æ"„P mˆ8H?}T¶f}ì—ÀQ“—ʳ&‡<":-L¶Î>åÐÑC³ g 7Ų­ÃŒ  Q.ÑÀí >¯SDèŽlZ;ß,lNã¶Þ*M³®°–ãlfA™ØRàâ®Ä4“HåYê„" …ªsV8Œ̓Q´ÛÎj§¤r´é]±—¦½mK°aQÝÇž•¾NBàКâ+ñ9 {UÁ[‚Zlc óžSæ!ªäj°zÁÑëÅo…à:ÌNž¯Ó“ë.Kùqþ€|¨ý^Ú³B*€É^—‰Ëý”…»[ðÀº·¾CÃ…/TÌž\TóÚÞ#2m ³ÞµŒ4¬6KW®—gŸOaÌB¡$¹«îÄiÌC½U,;,±oAa¨ªË¦©›'_‰è²è¸¿Oí:T[ô}*¢0ó2ŒMQ¶vÆNz‚BbM ‰Ð±0N˲þ!zòSôüƒáûAIåiŸ•°MÀ âñ9 X–­{T]ã@?¨ŽÙ¨4ŸºEÛ™æý; Þ`,hè^kû[“Ðwå!˜aº¶üÂVBVÖ;O÷ xLVè®5ï› Ê¦^€ÀQY9ï.·øºÏâÛÍ ZHXZ¤ñEÖÒ«ŽÞ™YÆÀæÿù™›Pji~kïÏ4°ì6 Ä¿o³¾ûƒ¯&Dö>šÏ\³†þI€M»#^Y:Eí'¾3[š„‚YÚ°öï@å2óúÁØ|Ó„7aNfo±WÔ)Õb™gp°kŒy¶‚üØ-Ь­WÖùΡIkûÓÄ<™Ç¿|ºü8tV™:œïÛœCž1RŸ 1Ý?×°¢´4‚6C$6 ;!'„þö^*M$ëÆYŠ¥{nJÖWYÙ€¡kÿp ÅLvÅ '3ÒYµ¬‹ž‹Óõ¦™†yÑLåî%ŠÉ–2\ù$AŒÁÇ=“1#T$! ÈøTží}àËè }ßÈ ¥PG”yŒ KŸL‰û¬Ý‡ì]©Z—Ý5c áÆFó)ßË£}>M}æÀôÉJ&œõŸ21™r–ó¼û”)ð›hž“ß¼ysLÐ5vøÒÀ+º/3¡Æ²„G»õBß19ÿi@<‡<ºó¼„×e±²G? ™Tã.æQpÊ­û:ôê9‡0"Îñ‡­Ä×Óo¥Uò¬xhÂq°ÉZ­6#œå"06€ìL´†ìíõˆŸ|÷!íuŒÄìPzèÕö y´û 5qïiŒ^â$x.?øxEò!Á#CÁÁËûÓzf_$&NÓ(V.´K "°›ÒxDumÖ>„ˆ(ùˆW>…ýýe¼úy&¹+gnñ?j ñòÖØôqý}̱°Ý‡üÿÛãeíñ’~Ÿñ^ÓËËÇ[˜“±Ãâ¿¢<à?1QđҒ&ðˆ¡‰6ß¹~œª£cëò>«Éú–Ø!…§ƒ“ßÒ1Ú{ ÚJLòŒæüÞH¤*=â…Àû«0iž öä=hb/¨œþÿ@c >=Ðü endstream endobj 1171 0 obj << /Length 2706 /Filter /FlateDecode >> stream xÚí\Kã6¾÷¯ÐÑÆ âCìö‘Áæ²›Nïi2È6»­D–INOÿû-Š”,¹Ý’e1‹ °`,Sd«¾ªbI7ž|¼ûëÃÝw߇$ EœÓàá14‘@" ¶Á§Å:©ÊªH²§åŠJµø{¾9îuVÅU’gïlÛ½Nu\jû…!‚ØòóÃwÿx¸ûíŽK•"‚E°Ùß}úŒƒ-´ÿ`Ä"<×½öAÈ ¢RÀsüt÷ãvÓ„ ¿â)°÷;”…B‚°@ Jé0u…0o‰÷H(B1$1"!£ŽÂëi N4B˜.Ór‰(gŽn¡ƒÇ‹„M`$•™èáÐt9k¹w  `‰Q„#Ò€ ºÅ\YT?|øPcÔ#ÝþT ¢(¼ª{?¦ñSiû£&ÝþW³ïµûàÓJ`¼øKkœBeÎ(, oÆ;"€:FÜ aÄéµX"ôœ ŽÀ¸*Ïõ¸rŠY†xÝ¢ÌMžCÅI¦·_qïu¥‹ò‹Ñ±O˚ɟMÍio¿$húËoÇ8«’R_ö1„²¯ÿWó%5óËZ†±µ¡PM·×rÒÓ–‰j"ÀðØ@d„Ÿ§ÂC^Âä ÕQ&5›ÿj½Ccå¤éiÄí|úaçš…¢·\r@&„%xò’ôj]48Àýºˆ»¹=Ï „$H€MÕÒþóý/^ò£}x^¼o³ßªÜ|’ÚÒmËþ˜VÉ!Õö[Ré}é3û™gîݓےÞÄ®ËR¤ÚÀ¥±ÄP‰§~ã}c†'1¨“í:;4ÓK“òÜtû¢Ã2Ío† åŠa¹xØ%åÙìªøW£'EÓ ’ñ:­'¬Uˆ…ÆrBp#§ËÜè’c“pÙ‡TgOÕ®´_âlk ]‹Ì5ºŽfîõS‡F›´™æõ/zS•fÒ0µŸrÛú˜öA/ _|÷nÀ(+ Y‡æs‘T@ñ}­¥óml/䈳pVN†C„v€R?>/);±é&eŽðxVvöiÓjq– ÆÁ.-Úñ7šN±7ó)øÞ]GÖߨ€jL¾&Òo¾Õ„8|3‡¸}™šì¥¯cfH)æm⊂g;c´‹o´‰y¿“%å‹ßÍ1„Ú*}±oŽ¥‹‚¿ËjJ´ã°ª0͉vœ H®Ä°aÑ <œí:lºÑÎöí¸ó‹±KÓÖîóÏâÕ‡¡¾k¡{ŸÐ&a´ŸŸ'ä¿qjö–œ×@¨ÿÊÒ%)@A0W¼ÀC•Û‚.Ê]~L·öÕZÛ¶C‘›´û÷d«·Í ¹6ÀÀ{›bŠ‘¦»­0`f±Ž1ðÔÉcWI4=º–ºîOSŽ@{‘é­ÓÈÃR;4oíÌNƒD "LO¥jã“ÒÊÓB+@]Íù°{ä¸Ðï/ž„jd:|ZY'¡ôB:%)¤QÀ"†„"£Ë™1HK¢Me:¹$Ì"+ :å“ °÷Ùëi“0‚•Ú_ ©PgŒk¦ç6 yíÆç •¸o’eò”émXUûÔ³W²„’£ˆ²déÁh†‡Ã•Á8ŒbÒŒŠ!ârƒãŒ>ø¶0v߆bÖF Û€œ,MH.†‡)Š"êHaãCãk=¥Î-”]Ös¼z²´}¨a89…šD(Þߺjj£LëÕ#Xû`ÝbÝåýÇb}³cO–·6 Ÿ›:CY§°±3_gÃXûàÜbÝeíë,®Üö1àéÅ¿'KÝG†‡däTEHJ?ÕL¼á'ÿÆÜ ëóïÿ æ·úùt¹{¨›á\Î+®¨ a*Â겎;îÎXVW^·˜w8Ï‚ü,3ûcr´'é‡<ÉÜY{vܯuÑt㸌÷º¥YÏàlw.HqºSt×úÒ\9F”ÐÎ-2dB“ÕØ7!n6Ëg™Àã§ך°¬«£A+òÁ»µ¢.óoÈŒ.Í”q¤„¸Öˆ&k±oD<=»5¢#ÊüÔŒ4´qñ¤¡áôÒ ïÖˆºÌçÑ…|rÜŽF֛ɂöq†á˜Í+)3üŒ”…§“¾ç‘4Ãïç.ó98ä³ñž,pofŽðçU”ðúÎŒ¼‰3µ>wúë Ö>ø¶XwÏÁzçîÚmõ&ÙÇ©«ÜIÉÛ0N–¥# g|Š#‰ý”ƒÛ(bo=n†“D|[»ŒgíÁì¯o²}ð°¹ý1¯²#Ê$~*;Ù˜à4” ¡ç…oƒ^ñ¼ä,‹‹—+Ñ›.B=3\ GO„‰Ÿ È:´ DÏß½ãY‹¥vç×g§Ìo8YŠ>€#EæÕG„ D¤Ÿúˆ¬–^*= ¡Î-„]Ö×`hfwâ…ŠæÊþ KõŒBŠ·Wöíö!Ø'KÞ‡dŽä¼Š†„1ê§¢!¡#v?M ~Ó3Ä»\Û› ­ë]s>mòLgæöÔêcžæûµ»Œ›oõ„“EéCÃÉððqͽHÅü@Èl$©•YAxÓ7 ìr…ðõöü&ËÑdžS5¯ø ÄüXÉOñAˆ nK{ÀÛ¸¾`—íµ>X_èJuln¦Ú²rëÛ9'ËØ†‡ó°’‘ŸŠ„`*\aPA{Ó7ír¬'\' ؃Fóh^¥©Œ¢¼ ªlü°iEž§o£zÏË v™^nÍÜôiLJã‡%ã‹âè¶›_é}oˆÅi©Gör§ ÓK>¯\rì¯<\ ¬ƒD­ËC¼JtoczÂ×îí××·­~»Á>©¦yNR·{°n~qù”åEã¾Æ@^ócƒ¬'‹Ý[áI¥MskºG†‡ˆ 9åÏz\þ«#,B‚ºd“©å ðáâo»ø°$‹ª>#‘j!Ñr%(m~áþÉ¿—ÌÜ%6h~˜ao´ÃòC¼1óWó®{ý´ú_EXM endstream endobj 1079 0 obj << /Type /ObjStm /N 100 /First 973 /Length 2266 /Filter /FlateDecode >> stream xÚÍZM¹½ëWð˜ä@‘õÁÀX`w 'ÀXûĘƒã#‹™Åx lþ}Þã¨käL÷Œ:J{@µJäcU±êU±sr )äT4d-X*x°Ô8(ÁÍ8¨¡´!ÜBË•ƒºó«ÊÇjY¤l0N©|†i¬w|Ä7ˆ{ƒ¨aš"\¯:FC¼cTóW|ìFX°Rã·­‘ܰ@ëAÔõ~e±±|ÏAŠ8G‚”ñLƒ´>žÕ I"c@ÐîAsï8tèë&ç)MÊIƒZ"BˆÊPk•ߥ .Ø"†AÇf2Dul: Ú0%¾(T1TdÐÓ› ÆÇêq+Y,˜”±f fÎyasn g V¹œ!×`ŒJ£±á¥c2IéP ŒA'~Í¡&í˜.Só˜ÊðL a`‹Ui úQ½_Ü^ÿc³ýîæöÇÝí»„Ÿ®¶¿Ûþ~ûý»<>l¶?ì>Ü…w­Å’`Ïf±Ù0x¤Ë•^£k†Ø·áÅ‹°}¶¿½y{¶/ï>á‡o®E¾ùfƒçã0Óèt@, KZËQ-JN1¥2ƒÃVÄÑJ4rÃÅ"ƒã2¾Ž.1ñ¬6‰ ‘'-v­<•ÑËœ]Êz8pübE¬ ^pKcÁ±Dl"uG]G7FÅ-¯kä9µ¢pX™Ò×¢ÚcÂá>éšÈË€hZ"WLR&G•½ÆÖ_.+—³ ò%NJ>àP¸¬ËBmEÉ%Äô ®1fýk’×R3BRB0Òjdž-©äqùè辄•‘¯0ûaû§?ÿy‘ ,V8þõçŸ~ºúςȈ wVС¨Ǫ̈¥EÃÎŽ_Ý\ßý¼²<ÈâøÅ+²õýæb¾)L¸}|ÀÛ×·7Þì ¶°}ýòUؾÝýr®Ž-ñúýßv›í÷Xiw}÷‰„m£Â?Ý|¾ý°ûtOâÆ³?î~üøþ»›_°&H!2{Ž­Cù¯ßßbÈk¾—fþ„õù$¬Á=ï žûAßzšyÈ4¸ÿùÕJç[k$E®ä¤Cðk?UDB·ò?Z'%V©qŸ+P¾Ü±ê;Ê dŸ8¨¢8oóÖ2£ ]11kí±‚z)±()9S¡·w„Á«¬É˜wqHTª1ÖX@ýÉTLÚW|øûûŸïv·1·uÍ‚2å ø »X«e›1ËŠ¼­$tµEG1# þªÍ윬_LÒp&Pv¡Ô€¨ ô%“U?Å¿ÝFþ#AÌä±£r™´ r‡brVP˜ãõÜÈÏZRm½4€rè$ °6J@5ä¿Ø<›‹ô~,øHÆ}(h¨º¤ôÿ}"eäTƒýYü"‘²2R"{!+¦DóFŽ j‡Œ„´ë œÛ@ùJ¹¶Ç£M©ëS<“8ZÅsœ§¹$PíáAgi™Ã ʽMšÏ ‚ŸG-¾Èá¾p«‡§¡µzê—Ïö>ñSï=ßûêä}{öÆŽÆ~`Ó`òÐ\¦Áô«|øU_ÕyÁÛØ“œøÜF-áseÍ’>¥È6ßÄç˜+Ù=[Àçl]elë!C’Oˆ_™s®ó”e= (›;;=ê $ì!6ð¨r…Ø?FlQH‘+ÊÜŒeþLLÉkvZPgä…=|)Ž5Ý4ƒœXg{žQ…›‚ZŸ7¹àyqÜþo ÍÀ–±Õ“^Ì­äèlÌ;¦Î•ƒ§ì’×˒Α [¡`úÖç%@É:/âmM:t”ªžTO³ÓÔ48#;ɾÀ •ý@¦Á¾É÷›ºZÕq*HÀè%#ž‡Í8NÕ5Ï…¥ñâeŒãÛhØòŽiƒÜ’Ë"å¿ÐVQac#ø€j‰ÅgO^3À¸×zQ-à]SƒµfôqUTF•#ÁÇj§‚ˆ(£²žd¢´3jF8À¬`sãêy,ú(‚Qjã=\>/hYúJÐjg—ÄÓV3ë5ñü-ÚéMÎÞ¢é3·øìx?݈קm¤œt±y[|ŸElªhlªhlJ0>%!Ÿ’OIȧZɧZɧZÉW­æ»Dx¦ƒ_¦ÆÃÕÀÃA»A{Ë\ô“5ïÑØÐ­z"lè"n,C’WDbIQÖq•È»„9Tí=Kƒ"O¢xg¦jä ¦|Åû+ÈÜð+¨ r¹ ¶“Y1˜W’^*R%*È~I$ ÝÝÙèÆQäûEV¢’>€÷Ú/è&ˆñ 0 ÷]¯qŒ‰»!8›C²b a4V¾øDD|ëRO/GA'zA$êæ> á%4_ÜZ¤­^¤©xD°FM¶N‡"z®xβ*©‹Ly´$$ÇQµµ‚£Ì{šÙ¨vÚ£ô¶Ø >Fìzç+?órÊFQ–ÿƒæyýJó¼ô³ów™òn™òn™2z™2zikfb¬Ž)KA äK5‰½¾µ‡è«³Î²îkO Û¸0oQš8ôaÇÈò“¼öÜÛ÷ z? élšêR$k^8ã¤%’‚„ÃàŠò½ò}› ÂÔý’:v®lÒÄÈØÁîOÒÉ8ÙuæÞã_ÍÁâ endstream endobj 1182 0 obj << /Length 2536 /Filter /FlateDecode >> stream xÚíZÝoÛ8Ï_!àbN$EJÊaqÀÞGÑ}Úks‡v±ËXt¬,ù$¹iþû›á²¤¸Þ¸v‹=ˆø1 çóGÒQpDÁë‹o.þüϘŒ…™”<¸Y"¡Hdd*Tqp“ïg·E×vMQÝͯx’Îþ^/¶kSuº+êê½5¥Ñ­¡ŽY(æ¿Üütñ›‹ÿ^0øV° áÀ•‡,RÁb}ñþ—(Èaü§ E––jÄ’…åÛ#¸Ì ‡Yctþ!’‘cÂ%RÇðO b2!&—#&Ï|ie>] þ%o^NeyŽAÿЉPÆ)ö¡È»Õ÷¤ÓmQu×ìë*ueŠ»U÷­ž¦Õgå¦Q"•\…1T¡ãÓàÓd ,”LŽHƇ J2HîÎ?t•K‰.ÛúEeQ¯o‹Êä“rÕ­ãšhðÖñl)> žLˆSŠ’ëœÅ`÷ø”ÒÓdXxÛ30{˜©tZx¹`@Ú„éÚ/*ÎË¢í¾aUr*`»Æ þcÝði(v¾À€O!ÏPµ]™ÆFªšíZ”äLûŸ Ô¬Ó÷£q4ÿ8ç@@úÎÖKG¶r,r³œ3ýmé½’G)JŸ ÖãT9CLA•;ɹaªp‘VpÌï#SMW «L$óä@mšMcó“˺™HÛšEM™PÙ”ˆ•ôŠg¬   Æà+’øu«¢ñY¯¾Ç%šª }é媕K­ÿ™3˜­·¸³PN¥Ø(˵÷`“' t5=·´ IfuåHƒ½‹é«¹œ=^zb÷Mêî©OÕ1 ÜD¤^i>ˆêr“H{³„ó+‘¦³›UÑÒ*Š9›¹¦Þ+ûCÑ­êmç`¥©î¢úYÈu“ú•K‚³(>DGí‰8?.@AÔ,Ê’Z^o¶ƒúÅ'¾å Ll£Û–ºÚ=׺Â÷H=Ü<Žç75¼ÁfÅmiBÌ5Ì­çü³^v¸Bl‚E—Û²‡eƒe@ô¹Þ£uhü¾m;WŠmàT÷2_DÛâνÔÖkŽHñ¸#ù­¯Ãi»KjRdjt¿'>¦(K‡Ga'5Y €"ùÚUyð™¯W—e ¶Œœ-µ+;·îi>šÆçWS¶æ{+ÉoKsÍ”Suyìu„!õ2Šóñþø4(€…éÙ ´dI¨òª7ê,ÆzƒY”‰Éé²Þ5Í凼¬|^ößS%yœxªajΔIñ£PÛÂ&&¶©žëíšGŸ‡€¸4KG©! 6;)í,æßƳêl’«]§/¤DIµ&Ðs_Q5€J¦˜Tƒ~÷2Ø«Üú“³õ¦{œ+9Û[œß€"R”µ#Ä2Ô7Mƒà›¶nD®.#ͺnŒ›Zyz[«±1(ÕDÝ/ \_ÀîiÌVz¶®vO(¢(d½y¶fŸ A"î ýj©·‡BíY¸l‹½l¸y{4‹ÝÇ Yüâ@¼Dl_ZUY·²þ ²,äiÆþ¦ÏÄØ<ã#÷ÎÐeDn sàcmí&¨Cc¡«Ë9KgÑ4Ë| nÀêUWèòêu]ÂF˜ˆpgÖ™wlÒäD$1‰£î àgÖO9E6ÜWDd…¤±º*©uë¨0pˆ°.á‰&oÿ‚ž˜¸’÷sZ·cé×㺽§ÆÎE±ô¢^<µc¦Ê+ÜL Çƒžh‹1\–ÃÐyábµèú˜ú»¢ú+|(Æ·#‹¹niÌg£|‡Ø°‡ø Á™CLUû`šKÅÞp³?I–fÞ7:ßëîq˜±½é3­Zy*­í¡k1«.©³ »¤rÔd¤·ê€-5¸^Km‚£HgñŽ8Ní}±ÙØítjÔ‡KÎD¾Ú0íôEYÛFR¬Ú¨±ãÝš\‚ßn›Êä!™Å|´†®Æ¶pp×¶ÝkÏEáðèF7];†¨ÚÔJ7=Ÿµv^¢½l+»«Œ{$Š‹“`¬H¤Mb_Æ>óõ`¬Hl¥|c¿7Ä ~ÝŸÙÓcVq&N¤/»ï„OCXćY|»î–ϸÂ%ÃJáEÅHÓÁ·ƒËZ 5<ÚB„B¸’ô¯_þp= –úy. í˜{—à>{~Õ ¨œî7â4ç Π2D©¶iK0|q…îÂk[ùh¾jC=›¬,†ºo³)ö6 ¬!3ÎìëY%Ç£ÓN_.r ,صؑGùOá ¶Ëº ³ñ‡+ÝíŽv3w'Uís¬?Ú[˜É±ÔÖÂ¡í¹¨Þ´O-’Ä, ^ÇÓùÙ3s8O’0$qBç`ÇL ’’ßæpÇøL9œ+Ø3ú‚³¤î¿Á–¯û±èÞdÕëo’‚£Oq"¸Ö">o‚`/áÉ™c0±G¡*êtr peœDÆ`ÈÑïžN«z˜êf˜Ú$¾"|ÎŽ“ôÀÚŸï?|Úí›_lí³ØÙB?ØÊXö/¼ŸeM¦˜ÓjÄÒK5Б!W#焌ƒMç"$Ó¹“¹–žËÂÊ`“;øØ7yI‘95óñQuÅRûu1¶Óî€ô3áx‡@u ¸þÂAž#ä–E•³ ÷BÀãñÕïi Q&¿-x„êÉdìÊS,Lü¯ç`æ<ÐñßÕF/ð§Ï"¡FG §ÜÀ±Pf¢?dCAîJÛö(îc›(¢*F÷GusßR— £Ý5ïÏmi°-ÖE©›Á‹ÚÍ‚;mE,UöÇ §Ý)2a•kE_ëßk'jupêÒ4ÆAUFÇ.(9‚]:$DÖi2FÉtÊ’ìn†[ê>MÕìaUÛÊ4¡Zè.›z=!¶¿ÊÀŸ’fÊG㬦ó ǹªé©‹z[¹ÏÛCÔßAÃÀbÛÀbN½-Y&¼G$€Ú*ÝŽe…ÇàýoºË9^Š;©Ý1@¸{¤ËJwÛF—ýo‚6èŸÞ<žèJ€;Owgr‚&îcc¹­¸sgÿé|e )!9æ÷½{~ƒŒÛZ@„ OLxOÌù$³à‘¯3‘M%ú°3À endstream endobj 1193 0 obj << /Length 2346 /Filter /FlateDecode >> stream xÚíZ_oÛ8ϧp•q5Ë?"%hëÞ¶Ø}¸½ksOÝ}mºÑ­,ù$yÓܧß!g$KJêµã4)p‹15g†ÃápæGòàSÀƒwo./^¼D Kµ–Áå:ˆe§†™(¸\ÃEÞ6m—Ÿfs'áß«åncË6kóª|Ž´÷¶°YcñA1ÁÔì—Ë/¾¿¼øï…1<ÈU2ÁM°Ü\|ü…+ ÿp¦Ò$¸ö_m‚H &cí"øpñ¯ Nj‚‚ðW °ñþÝ€³I˜*ˆ t•ò0÷„qÝ3±H(¨$K¢Cx &En«uPÑ”q!R9Ò1“Zu|k¬ïdÜYbú‹hÁYÊSÑM Ø‘ëg°ñ³ÁYòúÀ{B!Áǹá<|…H·Ùòן¹æÄLj×+‚F!³Å3 ŸÙi——íKÁÁ·œØ+û™Zž¬è/„¸óg“¡…Ïi<àAœig %°÷ˆ²7ŽPüK<ŽÑÀó¸—]ÔêA|´7Ì'b±T(ÕT.øŽŸ1xž Åt”¢wf4£ ú]ÒïêA¼ößÙTç]ùmyý"/_Êñ‚n6Ž a£@®¥al'ËÛ8Ø{ŽØ·‚ Ò¸çÊtþ8!¾ìsm…Ž(LšD3™#Ælì³§ ŸÓ0K¬ýÕí—Cf/ÞÊÑ& ‹@E,Ve_^¹Ý3•á¶®¶¶nsÛ9®ä‰»éŒC39E†Xä'ÚÅkáÜ(Ýþ`ø$ÖÚ@^C…Ðëׯ'3>N»a_I?á“t¿ÉÛ-D›Í£ä ü³*Òæa3ŒcÌ?µýœŒé3Eýµí;ñëã#‰`ÿÂÆàŸë?R¶KkùĈ§Û`’'?æðG[Äñ.ü×ɘþêå…—&϶ð÷Dn¦»1j3Xc•WC=„Q°úúŒé/X!”>»ðõ:ðößlÝXjßµ÷ããS#À֜žŒM'ÌC9ý“.ùoÔߣÇñwèÌ»è.(Þ({¶ä¶'2 hvä6±ó& ¶ÂÕ£l…®ÒŽlì…÷XèŠH ݧҮ±Îˬ ÅŸ/|…ä!&þÙ<ûJë’´ñövoá)å­ÌÖñˆ!?|:A¥1ø¬ì`„èa`„·y¹êaw,m¡QÛm‘-§ðÂéBpS‘鉢CÔ‚‰³E¸ð³ü¹ Q(üv…®újO9TS͉ÔìL%TO_Î(¡ú“®îÏjWÓ»¶‡”tÅ$¾Û-æÝA†{vuµo¸•tf•hÀ\JFvhPãé¨G[6¶½ª þ›k‡?¬÷JùÆÏœKg(ÂriíªÁ'_BÃïu^8ÒÆ¶“Þ}yõtš²4NÇõtëÀ$&øM›Õ­k&X]ß•X}¶øT-—»º¶å’ÞâçÉ€•Ÿ»Â'm¼:O‚6:vâ»ÝÕ%Iìë|h.«²Íò²ï汓MŒf€ñxx`D©7™#£É¥—êÁRÓn¶í Á:@uzÀð†È+»žÁc¶+ZäÔÃ?CGs/H˜†Huµó£v2©wV:ÃÞŒ†¤û8üv•¸§9©GØTV•ƒÉ® \hǯOê•€ßKp|˽ÌjC☬·öÔñ‡8¸ßš\‚~^]Ö;‹]&¸ -îv‚!cJ™s ;@:9¼Ý¤lŸž` Ä  büˆø…t5B,Ÿ¿ø®*›ö±A ÎŒÁ9þ~c`ÆýÊL\¬O æ¶¶G„¢èÀ³/})8b‚W÷(ŽÂ.ø=® }åÊÍû óAà¥aUtÊF ñ§VòÜóÁ³ù§ÝþWézýçýsÞ¹F;8½¾´Dï œžÉÝÊ'E³4IïødKN/Í óÔý¾2Ú!V?Þ„6–¤&¢ªKQ ·ÝÇx, Á±(<å%vËès,‹ü››ªãä”áÛv¯V8®éÅnßû®¤ªD©ûãâ/%òJiú"6' trA‰«Àr£ÚlQU…õÜ2…Š¢Ä<Åãe™vUk:)ÕS¥¤ºÉ*û‚iu—òR ܃ o³¢¹[û”%£ãm™RA½WVDpÜ}ôŸ]ÓÕUœf (ƒYƒ§k[[:Ô5‚ žŒ­óâkcéKfåAÆPÁA]Yí z³ r†ÛºZvCŸæí’&Àš}Y  JF úeÈðˆoœêXpе]R,í5B& ÞNp¯üíGÙuF?R†¥2Ø•œÉ£á7¬Û¥cN¯—wMS’BØUÃ{)¾½¢k!P2Ûq½»°·ßeTÄÂ8žÍ\é>â³¹Ð:ŽÂ﮲íL„­ÓÜá´1¬3#eøÞfnYÒMéÎ ^dµ³^sÛý·»nè¼÷Öõ1ËïïO)8 endstream endobj 1208 0 obj << /Length 2615 /Filter /FlateDecode >> stream xÚíZKÛȾϯ ÃP€ÕÛO>‚¬l/vbÃÄJjS¤¶Iíxþ}ªúA‘Yc=vŒÝÄcˆÝÍfu³ªºê«*Òè!¢Ñ7?ÜÝ|÷N²ˆ1’+Å£»e$¨ "UQš'$‘ÑÝ"ºge×v¦¬&Sžfñß›ùv­ë®èʦ~ãÆÞëJ­vA“w?ßüãîæ—kшE)ªœ0šDóõÍýG-`ü爑gÑ£µŽ¤b„§ ´«èÃÍ¿n¨ß+ìþÌCäïPN2’0¥ <Êùqꡪ'>"‘1Ø M^"A#%IF™'ñ|_GwšÊØp—*%\‰@Øèhyràų+I3Ü%pP‰ì¼÷²N`”ä4g(kp›ªÌÉùíÛ·Vj,èF2œÏÂ2·ììÎÍ%Þ ÿ±KF`éè~šP?"î(»¿S<ý‡*ê r…OJøI„#8±ãÛ±¯|ˆ~¦K.˜”Bgç<»÷1ìšù]¿,}öO=?§L%ósd°l¶õâ*r8Eš1ÙçƒY–õâ•D¸¼¶äìt…/¨’0â$'FB`IÀŸ&–}taæ+×.ªÊ5ÀnºÆ¦iK4–­ë–µ»ý«6`4ÇïsŽ"Iþ²&ÁÓ4ð…yNFv²cßUC0£Ð L@É[UrI‡ÇÕá.6õTì¶ÕŽ”`o,¡)Ë9ìÆ³øÕuÛ|,»U`b·Ò®A? ߪA{7u8&_ô&ÏGFÎKÁÁ“àOwÏÝ '¹):ô×|ä¯Á†'™$Ly_ýnÂTÜtÄ©ÓDôÈÍÒ ?œ“NÑ”× ïÔÓx¹­ç^E±ûÔlÝ“ó¢v#ÍoÅ'×o7z^.}§@æ:B 8?ðR^IÚ®0›7~‘ƒò†YÊI~çwn‘– µ½öyÙî“å !{oÕ8²uaL3á*~Äg¢©¤   Á+¡Uû’þXcÛõƒ&“©ÈYüϦӣÍöaÚEçZ3=/¶Óew;Q*n‡${¾ÏŠù§Ç «amtìOñ\Ê,ؤ½Á÷áP)8ɸ¯lòÞ)~Îù4 óK§.©•“lwˆÿ€WR•¼ €©ä¹æx› ¬Ü‘´/,&Ë—•p›’CCÔ6ެSa¤_!“ŸZ7Vk½8´*¥>&ýè[_!Þn7=¦Â-^ŽŠ2a{-(b;PцüãÙé)`šºuxI€2ð ã`Äà|@… ä®m•õÔ>ЉmÁ|¸ÂS} Qo×3ûâ܈ï-gGÖÅ"´#‰Gdz!$ªáT AäÂÏš¯0Ìlwkâæéx×ó¦îüJ‡ÀÙ0]à¯Gj>0*Ûúv²¸ àS€¾€ˆ‹²*f•>€/.ëÁ“ڵǣRF’¬—lc.ÕzNrÙ¹PÛÁ>tFë£û`T¹ÃÝóªh[}Ð9X%°/º‚ ÂTvÜ:')üœ;XeˆsÝW„¹"àÌøi«ý=Â\Ä·Q.üÿCÀÜö²2‚3£¯Çü«ðüÍ {µJvö~ÙÕc¡¯«‡´BL¦é 7òìÁ9b“+s #ŽXçxiÕƒ~;=•õ™üó±Î-ÊÒž|÷ïö:PþdgñÜcqð–Ç)\Ƀ³±õ ëxªHBÓ€äÕ…8Žœû÷$…4Ÿú<’…Ö ñÏSç¿](ªò@šë,Š®8 @…LݧßJžÇz½Y­xÐókå™Çh04ÄhÐ]7‹måo…§ž¥­a¬ó¥ ›°Ø,ü8€q¿ÞjŒyêI—Kÿ(Öi {a?…jÕT‘f8΂3Ÿoeñ xeS°4®—&e¶â„WKÙ6q^Sïõ-L ¦D<5UœÇ?¤5¾¼„,§°Xƒmà©#Ø5n ÝC›/`dK&ñå[×úe[ZQgʾ<ŒTM‡X?Nvh×€àÆ¸V»j¶ÕbžÆÊ£gLûçw+0*abô wâê@c‡ÿq­­7A«¸´$YNT.‡™æ£ÊÌÁä}¨÷æÂÕ'¨OOw_ºEòü·›ªìŽÇ€ºe2,F^úÀ,)NŠkÁ„ç}ô3ëÌã…^ÚC¿­ú¨ Ž¿rεqÆKöVZUÓxÃA\ç  6uõZ.\fà0õ1ª‹ºóË¥œ_ì'>È„ãJ)¶øbïøñ èú`9—åà“¹{éNûq h–1’‰>—÷¸*í‰5\­Öœù]¶ºsp(Uè$ªÎÙꃥ>Gy:ª#ãZ6NÔ31Öô®/ÅÌ´·e³5X &ÁZq äÃÒ`i0jŸl7sÕ0LG!w& 'î Ë8ÏúÞÖóf½¶6zÖTÂmäɺ«pÁ€“=Nqc'¡C˜zs }ëí+hr…9Ö')ö™»gŒ2ýþKœf€DÞKÖ‰“cݪsÂ]\™Š[d©»Nüô=›_¡;£Ë1óQõ&šÓ hB¡¿iÚ¶t)ïeðêe âÊCˆŽN¤;1~÷{Z`ðû爆IšÞ㣂<ùî:Ë¡’0[ÿ¡{_d’Î S¨AšLÀ¦w‰`;Ÿ‹õ¦Ò>!·Á(`Nˆ6.ùØnƒq<ŠVÁ)áѺä[Ë~•ajÃÓ}ÅÜFž2eÿ+©ÏÅl6ûJ#~Å#¯Ïïk|‰àõ,ò}•çŒûxoo÷ç wªQyþ}^ P^>y·¹ïô”/Þ|•©Ñ`HÿKž@ØtA\;Ôœ—ãœðô¿èPÝ, endstream endobj 1214 0 obj << /Length 698 /Filter /FlateDecode >> stream xÚíVMsÚ0½ûWh¦‡Ø3 ¬dI¶åÐd&§–ÐSšƒÀ<“Ó4ÿ¾kKÛHŽfäe­}Z¿}«Y 3äÚù4r.¯#ŒÑHJNFSpDŠ*AF1¹sÇi±.ò4›y}„î—Õd³L²Bé*ëß0Y$z˜?>eÔ÷îG7ÎבóÛax fP9e ÈdéÜ݉ÑC€úQH«]K"$£Òœ{Lºëíø¨Ëkµ4~dzâqpm/.û!Èð?i¶Nò endstream endobj 1222 0 obj << /Length 1491 /Filter /FlateDecode >> stream xÚíYKsÛ6¾ëWàfj&‚ñyhf’ŒÇ¤më’Is $Êb#‘ I9u}R$¥(¶lÇÓit ¡%°X,¾]~ t‰z9 þþe@áNEš!-%ŽCÓÕàã'‚f ƒŽ"…¾Ú^+$$ÅL+h/ÑÅàÁóñàô\PD)ޤdhw÷$½\Tx8’\¯+£|+89Án áã¼HªM81Iìzl#Û¬&«Ð6ÍÝ9ôZ¾ak0X‰,„\Úɰ5Šr$4ÅšEý\À£°• BLd“ :*BÊ p,žT@o¢Á©ÚëØµmWÒšðGi{#²„äæ"Aó½ªw⬉m±`‹ŽÆÚ¼g‚ Ò#‰lÞƒ*Kün=}ú´§m¦ øÙ œ‚ íÅNÝ‘¸ ¥ CýÒQî…ÏÓê¢*’xõ'‘¤†»4C ®ÁGëm‰ÕœôsÂM‘¿)eŒs!Ž}Ò[@6ûxƒ è{äÝ9¢=ô¸o}“ŽÝBÈè&•KÓ×9¾-Ùì½'Ç]åçt½Nf÷‚Û»¹¾yçÔßоÇ0–Ô`¦ÞÉv­ë"ͪƒ.… ÍÚ¥Æ~ïÖ'Ã{p `²åFÐöâ_z­‹Ñ1òöt`¡)áAG~Âíˆ(üßáìÃÛM˜A‡ÇHð­Pâ²C†ŒºnN†ŽçðMÑ·¥ñÀ,8ƒº«]*°-Šä*)Êä ÁÝKÿÇ‹ÔOA‚2]­—×®]´è:¨õ=ƒ [ž¿ zdr(x½ FÏŠ"¾>\•žÒPö4s6­—ñ4vΉ> )TùÆ=™Æ¾K¾6b¼¬×[®“i:÷bïƒ8»LšUZŽÏÀs,Š<ÉW¾€j¨»©c̽ç½Û°x¦$Ö‘¸ ‹§PP¨øÆO  á]H|kš6‰÷Š ‡gRbÅ¢Gåðª?†ÂOˆùªéO_§½ó^È…LÒì/á}ÖžP ó;y\Þwo;êõÜ¤È H_Ï“[Œ¶Q,.2äO¨=x:š×Ýþ½´óv¤¼¥õ#Ò:Êà%é-­ãJëªÜÔ.åíiÝûæä‘0ÏÛ·…Íâ*v²ižUqšA¡fXb?†YzSA™réþÆ¥{û½W† íóëÒõëšÌCàÆ oË'%ÓÊ©7qŸ|Ù¤Ž@™sÐe’Uޤܛ°ojJVÛÃ^0yßÄŒã¨1/;}×ùædèh›eyÂÄ$hïånJçÆ‚w×Õ"7nb4`X™> stream xÚíZm£Fþ>¿‚ok+ãN¿'e¥$wÉ%Re2R>쮬Ó¶Q0øï¬ï×_ÝØ€ÏÚž[%Ù•ÆPtWUÕO=Ð`Ðàû›oîo¾üN²€1+Ńûyò Œ5Ñ2¸O‚7£‡´®ê2Íã £Ñ?‹ÙfeóÚÔi‘ß:Ùͬ©¬;„1~wÿãÍ¿îoþsÃ`0§•Fu0[ݼyGƒä?”ˆ8 ›Q«@*Fx¨á8 ~½ùå†z3Á@ø_.wp÷}G³Žˆf"5Låü´öˆPµSÞS10P¢UtJ xH„V^Å¡]'- e¬» Ê¥ W¢U\Ú`~Ts닃_Fh%xP‰S’;f 6PÓ˜µaoS0¤‰óëׯ›¨µj!-tw<ׄE.5£¿Ië¯ËÒlßREÝ4¸XNJø£…³¢'+`Þ«Þ9‰>°K¦õ×ëIƒýŸFAOâ¡‚ºxØÖ¶Â›îèâ8©ýãŒéJP×Ä{oÂQ2v>|õ– ù!¢};?&¥z;Kn »õüì=ÜC BªøŒ=t˜ŒŒcÚqˆf s ï:È#‰ºEz„ÞA@‰ìGþìe\Úï×°qw¸êbžfv÷¼‡?cÂc""¿Y~+SȼxT/ù":ÂÜp¢ÄÔÆÉf@ešÛÄ]Hóáœ.º‚¼pbãNßRÊ3KÆ`C4ºoç8©Q-‹M–8ùÒŒ9½35òW¬õ k대q­ïîyî‘°Ù=Üç¦ÜÂEGx—îpU$öÖ΋ÒX\éƒY­3ûÆ…O$ªO2-‰¢ø Ö4$ІO¤:¤O$®êÎ2= vŠ_¨5W$„»¨çgÞDS:újµ”¶ÀÊ<Ôö$û‰˜bG÷Ó—‡Ü>ìâKKÄíÖ6w}‘ÅÏ]ϞάaZ-IŸ3 ø0Ÿ[+¸ds²Ï„`ÞáÝÏwº..ßçcÚ!²‚ A£ Êw;|ø "…>lbýCÞýY5E‚ùRW*³²N´2yn}‘0•“=¦õ˜–;ÊÔdgˆ’‘nYS_x׿ßÞ(2pR§|7|ìdýV ˜íRöÖY³Y;ëšz‹¶Û1W¾tænÈmé/bno"˼ÌߪYê%à”QâÝá'­Ìïc†îÂ;ᜀ÷+íÎq»z®\áÇÊ»,ZI¾Y=´Î,æ~õ­cp˜ù‚ ¶ÃÇs£>ÿ* Ôf¶§_ê“Ò¯ª6e]Aj,Ç ˜~é~À£Nx6/Ž„Ï¡B€'g5ðx”¥>¸ñ:Š]º¢(‡£Ä ç›|†¶•»Rä~lCÑ*HI³4^uZí•Bêl´´õ¦lJá0}…ŒHï’ñ¾ÜX7¬k‚j‰vT:÷‹àþñ&ïic“^"b8‚Ï/Õu®Oœ–²g}†5Noö@›‡kS‚'ê6ÙigO 'þ¼Fï˜,ó q[lÜÁÌx|¨Öv–η½l.M¾°ƒ N[ÓÚ ³©,9ƒEÊžv¸¸†EJ Õ ŠãIÄÕ©üÙY¥K"ÞäR»g» ê|u‡ôÂf v΄øSЬê*’²ÇØ—êÕ0yÿÜž¿´ÉÒbìY;hDêtª—^[ _hÓÈÏ%lß™¬²ÏÓ;æk U\õl‹ ï¨m /ÓŸ”—•È:„¬,² ¸Ø8‚z¼!µÁV’`Ú30:€"ìH¡Ä\ûx@#J=|>=i»f„鸲i³îrbdúGžZœ+x`“íh“'W.T†ûÕ³3VoúzM°R`š‹eíc’'î ³óÚ…«‰¦gÉ8Þ"éCzÚaŒÀµrx†;œ÷éé}K;gK¤‡ž šÒK“"÷Gi>Ygfv;„§`"„º†r»CëÓ°¡ Cv =ì,Ó¥‡^ñ òC®„ì/Ã)ücóC‰ŽÇÖ…3D[<º§Cÿ¹<°´.d+Ê^A*Éçzw>î ª`Z¿,_ÜbJ¶`œ+b;¾Â¯d+€ âWì-˜Ì}gð“­—Erº÷¼]H ßqûzmЦ$Šw| qãp¤sÆñÓÖüâX× ÐAGC.u ð(Ü úâ«£ŠBí=Z¬miꢬ†+ŸÁe!'¡bû -lÖvõ„·"N${ÆÀõ1VX1Ãà^aïƒÏö³–¨ÝPìfé¬%~ïSs,^°å»Vè›wGãÕ<Æt b¾[ùo۲ɭ¬ŠÕîvé_[_ß8ŸÄ.ž}¾C=Â>éSÚtšÙü‰`ýA—<õ^Oðs®jß >FiÓ_ö g6?.»ïfÚVº@žø^pÓ¯­gиhûÑm‹xw±û„òŸ/xq¿–?8ƒ2ÈuxÎ÷fÇ?‡jî™±”°º¦‘}»4k×,‡jAÊiÎG?¥ÕÌf™É±Nl‡ÖýþÞ«„ endstream endobj 1249 0 obj << /Length 2231 /Filter /FlateDecode >> stream xÚåZßã¶~ß¿B}Z’"õ£@È¡iA›Í¾%ÁB¶i[©,ù$ùv‡þíáP²d+îÚ»· ·8s<"‡£ápø}’¹·ò¸÷íÍûû›/ÿ¡„'K´–ÞýÒ xÀ‚H{Q²Py÷ ïg–5uSeÅj2•Qìÿ½œï6¦hÒ&+‹/Hwgr“Ö†¾L°`òëý÷7ßÜß|¸0÷„I°*™à¡7ßÜüü+÷ ÿÞã,HbïÑöÚxJ &£äÜûéæÇÞ÷U|EƒZ3¥œŸß5·­ýz2 âį̼܀Ÿ ³EÂýf6ti_îHØ¡ËtÍX‡9“IØÞç??šj™—ßTUYQÿaX ë´ŒÛîÙrà‡f¢ò×iMþmÊÊtÎ:2 „d\ªaê}Í6éSýnƼ‰‹“ õRÓ§ÔÜÿ…kŽ‘jSuÍ~›ÍÓ<ßÓW©ÃÞ“ˆ«ˆí"mR’³fMR §p_$Ó’€mÁhᜠS)XÆäÈýÚT¦Kõ ò‹²!a³›¯d#±ß”¤©Ó= •±.†Ú‡ÍèÄ7¡ý§¹Ù:+í³ÙB„í [5í²†Lgnþ4Ÿ¸#üH÷N—Ôâ’¹^Źk&RûqVc³"ÐÈÔEc* êª„bì>'{™®Á¦‚ùâ<=Ý,`!—l–Ó¼3LBÐ0ÙÅáXy×C ǰ=µCž@¼…‹ “Lêâi(Ãs°Û¢îyx€Cãáa2 9÷¿¤æá¡2[Tž;¤§ÎÎT&,ˆÕמyðW¦!‹> ”צ É šjï„’Ú-œanhJMw²1¨‘\ù_×Gz÷}N$wµ“4EgÓ,MUµnÀ¦C#UÖžª"þ²¬6$Y¿Ð~Ùd«uC¢=`P˜Ù!PëíY€{“(Pù/œzJ žàJ{9Õ ±WÀ%S¢CSkót{ ‹…\ï/^89Ña„YV|®©1£ÎN°˜wÚ4sÈ4 Ké°gæN\HúÊ}<Ì•{‹>9àŠÔì vÑIpwöór0äx8ï©Cmê²Òu§ƒs~Ûջإ~K©ù°Ëæÿ&1/K'Yt³6­¯½=ÕO}¸¥—…SòPežQQB0,£v8g쾎]eˆüÕ Vx%¥f^. uYVé (é×b>-\FÜF&à#ÍwiC!¦H–»Ü}™©pã?ìÒœTG!D8êÄÁѤ—2Ž]A rcÑéHhÚ^} †Äve ÈÂÎýîeá„öFã¡ën¸Ðýqõº¬E:5. ”mGZÙX9ü‰Úô `L½Ë!w¡z­HÓú2å:t/Kò’.IWãl§†ZbL(ÍŒëS¥¢µ¡ÀFh ä3œ@«dŒñ1q¨*Óö>ÈE‰'Ã!^–Ààu‡¿÷=ïiûÀß“#¢48†€§,«rÓrZJw[jaW$¼à €£Bë,wz >ôrª=&é¦6¹[óK¸Š ãä%Ü  …]"P@Õ¢—°ƒÞ<}zÐZ~C~Hˆ¸çç±ꪪ²ŒÁ}Ø© ¶-ûêp[åÛR…™€ Qx-Öàÿß‹p¼¡¯gi.˜´Î-!lÛ%Ä §Rga@y(®§½< |høºŒ¼–¹õsñ¶»§ÛC€>÷={«ýõÈßç <ÚŸÏÛv¶k÷âË÷ßÿóž{Z.?uV~ê0\Ö>;.¼@Á^!Œb¬r]ýÐæ q‚cÐF¸ìó=¶‘IÄ¡m‚OüØÆ|8yjS˜+ŸÙŒT Q› _´à7ûT^i jDÊ>?Á>³ßÌÜ>ô‡/™kpí&+,Ë3gPjVµfŠ´rê!û¨ÝÓÍa½úCR"%w’@8zþrJÍØ€ì%q‹™A5¯2p“`v߯cV¯I²¬ZËå­‚^á`â›"!jzM°Í³yÖtï¤ Çëz¤›mnFÉL@‚‹îôbÝ[ø•ã®Ç{0WBŽ—:t®»§>sGm,ÌZ6QíœÔ'@Žš,Ç\‹cï€mݳílÌ  í@ééqE]ÜNäÕáUQZœŸ×T¹)VͺîÞ =“øH …ì„PiãóuK,ŠÄKxOoš>ïq†ßöH3·î2,öÆ„…sÁ_›§<Ÿ±½1$|’¯ ¯…ÿ÷XE^ Qé?j½F°¯Ì«¿¼q^•®¼º^^^¦O 4!yòÑ¥tNèR}bt™MÕ\''1ÁE8œé &†çxÖL³b¢ZVÑów{Øo쇿9 ëP§n™î~˜tòêVž«îw5ÿ&PODØ|É“6eõ·Áíÿ@K+ˆatÉï³F~Cv j¡ì½àü$¥ÿÓÖÌ3ûj!ŠýL³.‹B¥•¯ô±cÿÆ endstream endobj 1255 0 obj << /Length 1812 /Filter /FlateDecode >> stream xÚí]oÛ6ðÝ¿Bo•‡š%)‘’Š´Àº­E ôaYö”l˱P}x’ÜÔ{èoßIÙ’¬:Qì&+:±¨#yw¼;Þ)j][Ôz3zu1zöÚec$‚[ Ëã–H"]ëbn]ÚÓ¸*«"ήÇîùö¯ùlFYVqž=Õ°ó(‰Â2Ò/aĸx7úíbô÷ˆj1•F¥5KG—¨5ø;‹'ð­5*µ\Á÷$´ëÑï#jØ᯸¶tãüM³ô‰dŽåI˜Êùaì>¡b‹¼…ÂgÜ’–   Và—ùÅ>_9 e¬Iá®ðN¸ˆ¬E/æZ{OâùÈ%HP§t çFÍx $ «Õ Ò¦Â×z~ùò¥ÒZÌB6ÇsI˜Ï¡KõXâ ¶?Št ¤­Ë‰¤Ô~ÑBn€¯âêç¢7QA B.p¦ ?ÒÑ[…Ð~ÒBvÇItJ)ˆÿÙ}æ?é¬À® ¢;h +þ‰‘ç„9D¸A¿`2­ù`†³d'ßlÑê Áø¡Y+E6VÀmý£EЄ ¡‰ÁÐbù€T‡ …jÜâQ¤1À¢í/][8(™$HôT¢üºeݾÎÃàË`|½rìGzI8@ô}ï¢XG-¼wqì­ø&­ 1sx Ù‹dˆÂ½-N¶"Ù~H`MƒƒóB+aZ]ày#þ»Äqeÿ%‡W¬dãND[ÙƒÉhëÜÑp ¢k WWI¹ŒÕÕÕXió™~\]ýà¸;˜Sï‘ÀqjœñvvÛðV¶31¬Lx@ßÄBˆK71&4sm…¥Ä¶°ga¦SÓΖq4æÂþ4†îh®‡­KÌ—€¬ÞB;jÌÇ»]øÙ™ÔfIÉÉ«Ç<íÃ#a¡[祷ö±XÎÎ^ô¡á²-Ãa6ïCÄ!à|ÇO?&FÛ’#㉠JÚˆV‰Y еóÊt¡_ªe¤‡$Ñ¢2ý…~ñõRùyÔ#ÌC— ›Ë5¶FOE´JÂYþ&®–Ørì¢"7NSÜ~»Ð›|­û²¨žY®¢Y&µ,Ã1§ö§8_c—‚”'ŽCírÌìõli,¤ÔÏcFí(Z©Lº±,À_gš`^¯øçOÆä²µn\— ³<]%æá0º6D» ð:*J ì™nÍó-D7”¤u3Ï:}«"_EEµ©Ñ–UÎqY̳JêV¤>‡È‚¬Ë¨Ï,_팇`PV[Ö˜ì>3¤¥5Þg>h×ÙYîé[\²q§‚s•vQ¸Üƒñî·. d·0 wœÇR˜¬ë{) k`z Ö£ŽeÍÜã¿ÀqN4!»™üèd÷¿PLMOSL);<]þ/dߣ¸2/~lƒ9Uõ­×iª—án/Ü" ˆG¬^_ÆÄ®z‘߸zI×É~Ò,4pp=ò~Tñ*‰gêÔu Ö¨\‘K6«zmÓâëÆôšÑQÒ(ÌJ=F%+ÃÔ´BÓWú}žG¥n©$»òbga±1Síò9䃮éi6i¥­&±þ£¬^ƒ z ðLõú"ý6ËW±"סy„ÆvCR@„)¹8&ä~;ñ–á‚á€:Hdš) Aü€) ÃðìJOüÝaù̡Ƨ«‡’ÞO㢄€ ¬ÿøÉ¤Ë”!‡É’®*¦qvD„5áƒÑößiÂìpg²çÒ¥f¹+IÀaÖûÆaâÂfPô4ìÅ26Ñ$L’–nʯEÏ ¸‘æºý)w“{ÏÂáÌ­ÙF¦ûŽ3FäÎe¦ù|DCB§‚øþQ§ 7Ÿ nMö< wDHkéœj â i•—ó£]Yœ®ò¢êÎÆàªfŒ…· »ÙµA ZÐm×9ˇ ÆŸAKÎb:ŸG3hü*cõÏ=ƒ""èŸß‰<æâï¡ÏZj9Üî}ºT$¶ ž¸cxSôç×n]È€> stream xÚÕWmOÛ0þž_áOJ‹ë÷$@“¶iPM“«’6…L¥F‘öãw¶“4i*T Óh«:éåüÜùž;;GÐ"è£s8pú'‚"Jq(%Cƒ â„cîKä‡ +ctáÆiq_äéìªç1?p²ÑÃM2+¢"Íf¬ì,™&Ñ}bÿpL1ï]NãsçP°EE>T†)Qhtã\\4ù)"˜‡z4Z7HHŠ™¯à~ŠÎ¯)}­¯˜2xŠ™âz¦¢(‡áYcus¡Ìê´ Rà@(»²3O77Ó?Q¤iƒ‡˜ø€ Ãa4‡=Oâöíe8ÌòŽh¾B–®š›EðLxÔÇ!çÖÔBc^©ÔË韰Í^é¥ÇBÌߦ…÷˜w>ir…p¿œY xco¾[‰p£¼T¾Í³•îïtœ”:“,·:qÚ£î"@’Å¿’Qqoõ²‰½&wÑÔ>Ÿ&³«âº|<›>Ù»D’¬¸Nrãbµ~EEf¤…À¸j.ýŠŒoÑô!9Îspͨ¶câ ùQª¦Ú=IÜ<kc°M± (Ì@&ì ðßÊq`E9\(Œ?Ÿç&²NóD@’œaEÂç tÚi{²ÄèúÖ•4ì@PÚ´£åBú˜I^#ç š¬„îL]8:ù¡8` ÂVMKRU¦®‚CÒ²2••/Cÿýýý¥Ö¼.ô™Â4¨ÙЬ.°„z0¦[0.L‘ìµÀK!äÿAžGO:ÓJ@&õL”¼lI  »ÛÞAÖ›Db ŸMfï.ù¯«£Z#þËÁ÷Êhz”c)6b ÞJ¨ýn 0™T~ÐÒ³–dÝ[Øm‹géƒín+útÀõï%…äî,‡ nÄ`-ÜAHg ¦•«ÁÑ”h ¯\G+pÄ”V‡×—ÓB,®Ü>þ¼[>¨ÙèÞŒm)Ÿïšþ5!o|fì,ù»V÷6ØÝµÍ•9¼þ8yõòv¬ø}ìýÝ3}7ãÖ{¼„` è7x ï4ÚÐõ{åWêV í+SþK:è]>à@¨ ÿ©Û`hsÏo“Qjú0èã?%Åu6ÖR¸ÂoÅâõvxp endstream endobj 1263 0 obj << /Length 214 /Filter /FlateDecode >> stream xÚ•;OÃ@„ûû[ž%²ì­ïå6¼¤HÀuQ Ç9K¶ñ!Ä¿ç”# ÕîŽF³óìàA,ƒ¸¾× ”ÂÆ†ð ŽÁ5­†°ƒµÜöiN§~ÚW v^Þ»1N©Mýqº*Úsb;ÇrÔ¨°®6a%î‚x*¿!P%•Q‘…në Á.ë+ ¬Ÿg×Ú(dgó>À‹xôSó2ålÝâþ¦­´¬ ­ö™Â’7òæÐ¾¥x*P«…e–ýÜÅah§ŠI~)/Õ2í7YN endstream endobj 1267 0 obj << /Length 178 /Filter /FlateDecode >> stream xÚ]Ž= Â@DûûS&EÖÝÍÝm®TLåÇub!mTPÿ¾‰Š…Õ ÃƒyŒ3Çßg7šz…z²ÆùBQk3ä6Å¢.v÷GYiàb>/·¹E%‘Ì{TÁˆëø!Wݱ»—ÒÝuß Øïk’ÝÍI_SO û‹Ûl‡~nÁT§Ï7tBj±ïg¬Ýòk+¡‚¶¥FQ§^Z> >ýÿ¾å’5 endstream endobj 1173 0 obj << /Type /ObjStm /N 100 /First 961 /Length 2056 /Filter /FlateDecode >> stream xÚÍZK·¾Ï¯à1ñCÖ‹,@0à”HÃÒÁÎBEBŒ]cµœŸ¯8Û«ÛÝÞ%6>HSÝ]M~,¿zôI*©Vó$¿ÿ±Bh’¸XšD8KÚC·µÔêÐé©+…àÉ=õP¤¶#ê1hOÄxN%®â]‡ä“Äà]RU4L —½Æ°½¥ê㎑J\Öd‡Q F×Ù%a`Æ¥%RŽ+<ÓþÙë’j i‰šÅ}·©%®eèõÄ$5&ðÄŒÅâ’XëXIMlÒC¢Ä-°RáÄN’$)ê!Áj1<$X–àð–p`‚ÉDªì&9B i¨WNb%jia9ÂÌÒÂD5I—ñoøñ–´ò¸×“R 3WO*¥íð'U!¬½@ÀþIR£° ÔÍÆ ¤ (¶¸I¬˜ ÝzLαí=ÖN–¬´RK†ýˆá{2†‘!y‚aâ)—dVc®ÉšÆS¸uO9µBcä?2L ÏhcWà-ìD˜¹Q÷ÁUc@l„19ܳɨ h6 '%ìy3‹AaœÖKL TÍe8¦^Z艥&®¤%ußq ¾Äx ¦ÅþÂæ]ÆT0E?î;ÑmL…Më­B ÷{Ã^r;p?†Ñ: %†Ô‚ƒöáb±^âXÁö^Ã'á¢â ÜÑSíqNaÒØbÉEÖèŠ7˜Bð¶{ñb·ÿ:]à äoÓþ»ïÿ™bC¹çضË?þøf÷ùçCñåÕåMzñ"í_â°[¿}㥠Ü^Hzy3Ø;.0Äþ›ë«w¯7é"í¿ùúeÚ¿>ü|“îFýߟxðö߇Ýþ+Ìt¸¼ù'–âýÝþÛÇ«×ïŽ\0îýãðÃû·_^ýœ.↺æðÁ.5wƒùÞ^c`’zÔÿâòò ƒ^ *` ‚ºlÚ"ôE8®îÔ1Únÿêã¿nÆõßß_þg·ÿòêú‡ÃõTÞìÿºÿÛþ«‹:.b ï°zfÉ{jÔr›f2øÉx½/†•_¥ý_®^_%lП>àÍ÷W—Ÿeî[ÎR$7nõš Ô”Á[8¦’‰~žÒ#î’=bÒ3í!Ös#Öҳà ¢°T³™¬!™hD±ÜÁj.ð„.YAXµ´Œx±„ê} ƒfz½G35x5 žÐ̹"XR{F[ÕCXoé&ÞºÇNxë„ÑlñÓH ô~Fb^ŸLb}!±¾X_H¬/$Öë~+x™ÉfU$3ÖbbyD*kÙ‘˜zFÂô¬¾ZrE$\PfľHÚ<$ÈßräHVá9[Ë=r‹Ê3Ç›£nY˜pI*Yñ\|Í$$M‚„Bp¦‚c#"ó˜ Räì¼lÊ< ­æ¹Z¡ ‚í‘Ë—>³<Ñ„‚9Â@V˜{d˜›`”3VuÚȪ'ŠÈ«`SÖõh£ XUDI“Ý7±ï¯%ŠóÙ7êLJì%ÓSÙ×®õ…k}áZ¿åÚ(ýn…º´¼²:“˜¥0HgÝlœ4Ù( {Ôëó¹ºà¤dШþ3<@‘Ã’*u­ùzÉ@Èv¹Á™#íFIÉn˜Y7­à0›˜eÆ¡JFìŽnƒÑtn²K½äšQ…¨f&C­à„•Ð010°Eˆ¢;Ò"DmÄQgFAþ >ZEÈhôÎS ¿eõÄÌQÈóè_!kge[·ÈÄì.:úi ª%Zb›€Lô€-²ÈH&@)›€œšˆZÑ,Ú/O)bTv]ד®¹Y_W¥o3‰ŸÅ¶qåD1H§ÔuEÕh>ÔuEFÀö-Š4rq[WŒò©7ùÄñó¸"íÉq…—þ‘,%¹»£‹`sƒ¨a|>à: Gub³ˆ+= ž™n6é¦å¨.Øm¤›M`µª¤‰Ä  F8ÇCÂ㌶á¨> vêô ˆ–Ü6„§~ЕøËæÌ895üxà ò¶ÔÏÓ^éééD1êu$5(W™xƒ^ãÓÌÏ‹æÕs.Q~—Ü_¯ÊFKŸ(Æ77ÔW}ƒ¢Ô4u]‘E×í@Ûú ´­íé¦ÞêÔÚ×k¹-†ù5‡|´aìü«6Y}²aŒÙ&züB~¡à³ßYð™Ÿ/dkVe“¥žãoØîÿåtäa endstream endobj 1273 0 obj << /Length 19 /Filter /FlateDecode >> stream xÚ3PHW0Ppç2ÀAc(á endstream endobj 1291 0 obj << /Length 1226 /Filter /FlateDecode >> stream xÚÅXÏsâ6¾óWøV3³¨’,Éöq7C¶I§™.K§‡dÆà ØÔ–›Mÿú>! °!¤¡ ¹€d?½Ÿ¾÷ždìÍ<ì}îaûÿWÀ?öˆR/äÅŒzé²wû {<¿ö0Šcá=¬¥–ãÑPÀxá}í}é}÷~¾dÄ#ÅœSo<õ˜àˆÅ¡ Cî3ïÖ¿øåãïãá¨ÿm|mäCD gZž$8ñ4FÞ¬Åo®n†Z¶7·]1E1Nq‘2F!Ñ&i Çž8 bfl~éìÿquñk@ÃÈ /‡£áÍÅÐøL[1¨ž€† ˆ“ØhÏóǯeªò²Ð“Ð_ä}âת635—Ff’«ZUy13Óe™5 ùSŸsßJ¦‹¤Ö+¥[YÎ$¬®ŒüC®æf”,Õ¹}»É2³Þ$Ef Núû’5Ò‘LÂcÂÅ ÝãØ/dŸpÿ‡2³m@0™•k—`”ª4£i³öF™TInÇÖImÉrµ°†7ĈPØ-DE¿ ^/öŽ>÷ºÌ×YˆˆÞí:ð§­øÅ¼ÛÇØÿ;ÓÒ†Åîöƒa 7Ç–ÜZþs\N¾L0"‡8ƒ5k–,m.´Ã0ÂàÐVï!MH î¤ÖœÜKh&ÕÊ<š$užš¡&?¸ð¯ìk³RøùrÙ¨d²ô<öëÒ¼/‹TÚÕ•L”̬¸²ÿîSìkœPR¥UΓb&[ö„¶§7`ÀYÞY CðØòoí°åVY™Aâ8¦KK›nÁ–˜[Aƒ ÞEb ¡Cp›‰Àg9Ùˆš,ýf(`–jÕ€?Ùðøµ˜ü›-‡”u%1¢PYu¢È¸rG)ïÄJq¤Í„ ~`¸ö ûp´Ÿ3#„G½“í k;Åšk7„ÙÏ‹¹LïíO;¤¨W2Íï0¦k¢j2¦j™Jº:f š«[ÄòÈ’··ò޶R÷íP)_ •BÜGÝô\½5oÒ²)ÔQŒ‚EÐö1Z¯lW¢YN\ùpm!y1 LÇäL\IuWÖ¥Ü6rYÈ*Qe‚´,j•8´êüG—tÞ÷õ»¦ˆ,²z}ª8»°*»±¤j*ÛærÛ;6ŒØ=”éSK‘ÕÝ“ŒíTu3l¤»„ 9¦9œïަx‘}8.ó"{:¦ýFj8ÐT•tÜxèg!‰ÎT4Ï5 z×EÊ"”pò©ÛIñê ðb8G¾—àå)¹.]x›@jWg;ÔÔ> stream xÚÕYQoÛ6~÷¯à^6y‹Y’I h ´ÛR´ØÃÚú-ÉÙblm4åIrÛÃ~ûN¦äX²b׎ä¥/CÑÇû>Þ}G‘ÍAo¯Çƒg—E”â€s†Æ·H2$…‡Æºr&qžåilfÓ¾óK2]-”ÉÃú¼µ@§˜Im>ÞHéææ‰)ƒ·˜ ·ø¥ (…;¶€yØõÄ÷°ï ‹,OÙÚÓÓ§AW#Nˆóq©¦q¨- •Ï“(k·\>Ÿ]²é,»àéú¾õï•ΰȉq> wÂX‡­Êî´läó²‘,UæIºžð‹í9(w±ïJ˜mþêÆª;bùªÆ\´Ùá8~5âÅ‹.¬|׉•ŸÚŒHL¥{Іê1 ˜öãÆ¶FvèßÓÚØxþüÔlûå˭ȯ·ò}xþiu’ ’´š¨Í ƒÜã›Aô×3ð«sº©#Wz8 <Š«ä 62÷hñø=-Ò»H]HbHæXµkÇi ̯kÆ5c¼›¿˜Rzð×ó…õ¦Ùia‹Æš{µ˜Ä¦fwGÀ<ÌÉf‘Á ai\IÓv)´+«¤­|kÂôζí°úêÁ"À^¡ ô6Iô^¸.xáÓ]¸—CÊ$- }¿ÁCva;b“«t™ª¼NÌxèr']UžnÙu¦šô@hJꟋž»¼£;üøØçÞéá°žÀ"Ÿü©¦ù\°Ðnß±«“0? îÛöµ-Q^â‚å ËbÁ6Íj1=àÜÙ‹<8ò‰Ú‹vìXä“x6R&ŠCó&LìÊs2¡»gBÇ9˜ýÉ0Ý“au±ËýT¨\פô­sõ¥Ï £€”/a_‹õ§ÆÓ(•Å2œ{$䟇´ÿ‡bUË7Ód±Ôªøö¬ªę̈辆ôÌÚãàÜ„PÌÓªES3ÀÖš¾è>ð·(婸ýS`ú `>>ÕhÐê´ï†ß”™åór xÛ8æh(elî»ÿ×ÔO¦y?% öŸògûCœJìºüØߎc[ñ–‰ÍC=z“èd1©ªA´ó Ä`FÉΔã«nÑ—+¼2ÐûòǪ‡ÂßÔ±T«òô³¼y9kZ¬:æ¥52¾Ujl:Vyôfq—½}rû,Å?'ö‹žÀ„ÉÇÔÂ;cXè>(hÙ2>mL,ìÙ5ÁƱçç3 ;Üâü\rÌ(KžÄ”³êü¼£«·×qþ*M×Bx× ¯Î6±sAz¹u üÝÝ5áÚ„µßl4ïY¹DÉc®YÛoÝ ðb=#gÂe‚:?ÏÃe¾¾ª>¬âp$sÞ¯âi±U·…"«T™©júúŽýº endstream endobj 1346 0 obj << /Length 1385 /Filter /FlateDecode >> stream xÚåY[“Ú6~çWø© èbùÒI2“¤M§™é4Ýåm³F êÛµE(þøY¶ÁÆËRv!é ÈF::ß9ŸÎE`gî`çÇÁ»Éàå—8„ sêLî†b>wüÐCžëLfÎÍpªt¡s•ÌGcêÃïÓhµ”‰Z¥É ûîJÆRÒ>0DÝN>~˜ þØ ;Äñ)H¥ˆ`ω–ƒ›[ìÌàýG#κœµt\Nõ=ÇÎõà×®tm¾¡ð+¢3+=âäðÃÞË«t.b®W¢3*p®g‘…ô)5=}çfÌ1¾Δ1Šˆ­!–R/ÒYÑ»ÁË´exºÐÀÓ± °ê}¦”·#гµï§xV«îË+#0îŠÇ3„”‚E–ÉdÖÝÕÇõ¦ÍÐÄLpÚ¥åXد†¨%Ñs$S‚<ïܘ¦-‹µÈ¢ò*‘]Tï"™Ë ²#ªD’È¢°Ï*g±ˆd§*Rá ÏŒ3‚“–ÉðWr™Ž~1DÇ['ÚÑ]ž.íH/ä#va«ðbÈÓls8h>àz•'-΂,s^7ö)½;0A> .X%…ÌõIÇô'»ô¿wLUòåTLb•5P>cŽ ø Õ©×RV>N“šÝu¤úKæéAØçve ¨×¹‚Èr0<ùˆ»=ȱG¶’°ëÔBF&ãØ‡µÒ‹Ö¯`ʇëGüïîÁ¥ ‘åòÑÜâûFøT­<ŠÓˆ€M/ƒ 3iáLWÕJKÛ(Zå2‰dÑŽJ w ±¶»“BW>â|xÐÁÙ 4/N3„ajEóBvsÒC™÷²nNãƒÈ¨‹¸‘¹‡-…Zy’N;9'–wº‹H—_ _~N|¹š/¾.ÀBê“^KýPÞ©QV`Áò£€c»‰nÇ2†ãâû¬,<ê¶Àt-ô|]K‘ÉHÓÂ1ÀKNÂãżyó41cŠpHí´oÍ4ÇGü¿óºw;ëh5¿yý›5çéï~)>bŒ7­¦Íõ]9øÈ›<ðÛê<Û‰b<@^VGŠlÏ{¦3¥!GO “WБž~r|«Ù¤ŒŸ J=±¬F¢è3)œ æ5vgq xºõ1t¡„¼ûg$3m7Ð ÑŒÊß6ÕÆy­AÙ6ÂÀ„êau¬‡ÁV -NYYÍôñ€RÄ·Íj %üÇg[4Øà "M9l¢Ä®UÀ¿Sƒ¦œîÖ7=kY7º¢ :¹3³øi¼ò% ¾áUí<Î"§5­ž‰TïÓ¤ÐàÓk z/;Y¬mRlL‰Œ[Ú+¿ 5J#öX·Sñd¡Œ¹H8ŒbQ†.œ¡†/«5•®ŠØPƒÃû$-{ÄNÕ²ßW…îá>E!~”­ÐѳŒlȶPÑÂÊ®U‰UAĪÞö®LÄ0˜Šè~mrœÈgã(]f…¦*Vzc,Pá³YÅŠ]p(ksgÛkØA–jÛt5=f*[uaYg^b³œš`çºnRIï xì¹âîÔìyói.÷€'óä¤>üm¹²åàĆ:ݽ;œ¦«d&òÍÈÛïÉ.ÛpKyÒ­Ù'³ÐRWw(¬-sˆº×M P‡Úú®꿸滖˯z·fÌ«BŸt]üì¦)5i5ýÆ@EÛBÝS8Ä*Ïÿ7¦ôüárXˆ> stream xÚ½VMSÛ0½ûWèVg¦Võ-û´e†47`¦Æăc§¶2”ß•d‡Ø¤´L —XR¤·oß®VKÐ"è4:^FŸ¾ Š(Å™” -o‘fHg +–%ºŒo*ÛÛ®jî Óiü¹-¶kÓØÜVmó1¬]˜Úä½ Ž)æ‹ëåYôeýˆ(˜!ˆT†)Q¨XG—ו°~†æYŠü®5’b¦Œkô-:È@“ìÓeºœ`)ÒRb!ÎWŒIOaw3’:[ZÀ¯Hêàg‹§N µO &\ˆîL^N€çl8Å*¥ãvà¡@I@"8èGy3 ªÆšnÓ¦YPÿfNõaÿø Ÿ"Q›Áš5žÐA‰ XÓ% ˆ¨ì䨫޾(‰ ßLÏÀÚÛ'aú¹2œ¢ô•±í‹º… Ó/é²Ý„/Íu*êmîä3Ú¢Øvi 3%’ÑßgIWØW{¹Û:Ø+Zh(ªf`’×u¸Êå¾>Änð½÷¾}3è:\'Òï6 Îj˜(”@ÅðŸ7;•êMJ8¼» º«¼yYŽc¹__w‰¸Þºîh,ÎkcWíxè0I ‘ÌÔž~>®‡xI åKŽ;§™>ï·¤€ÄÓ¯i·wƒ<à Xx‹R€#œ)Ÿ¬ò ¼Ö¡ gr±ø|[®,ßá­+Þ&¼F3®¿6u|L endstream endobj 1379 0 obj << /Length 2245 /Filter /FlateDecode >> stream xÚµYK“Û6¾Ï¯à-R•…à ÒUsˆ³³ŽS»ÞÄÖžìT…’ w)R!©Œõï·_jFöl.B»_?Ñè>¢ÑÛÆ?nŒ4b‘á‘QŠ$’Gëýͧßh´ùŸ#J’DGnÕ>’Šn4Ðyôñæ×›7Ë›ïÿ.YÄI”âÑrI­ˆLLd„ ƨh¹‰>Í~üé‡_–wæ¿-öë áLI\Ï2Ž;;_H™ÌVYS7UVÜûÇ}¹9æøJÑÙ¡*çLÍþÌ6¶öo·å±òÔ:OëÚÖ¯Üþ)á4† #áWÆ:ªÀn&?¼Å=ê¡röËBç´zÊxŽÁðç›á1щh—¿TzŒÔ@öU•žž”¯ ±üKäÿXuJ|l*›îŸÔ‚QELÒ©‘›*²BÊ8: ‘ð®Eä e´$JÅ­.ä…ši˜ºÚ xEan*:kй‘¨³ý!·uó œ–+”›¯ì¡²µ-šðAZø1ÛïMºÊÛÏíG[¬ñ)NfåÖÏbĆ» Ö¾{F¢![œcÿ¼7jv^°Ù`”Šxöç÷Zeå1Lìm³+Û·Í.m2ëÙöÔÎZO¬Ë¢ñÀàÓgª(¼ªÛ—>êýCZ…Ù ¿ØØçÚ”¨3d§ÜhSyYÖ6‰‚‹Ù>«ª² ©v„ˆá$¦w¯N­§›Hˆáú,%FC^i ë#4c"YçÈYáÕüåØZŒÌŠÇ>âäï>F¾óOBø°K眂9 ‰†Å`¤¬ÉÊ"Í=HœrB!Ý{˜BêÌÅ! œ~!M Q4艞JÛÑŸ)åyX»±vjºø„=.­C1x‡ž-ÕìT=QX´&R(Çõ.-îm˜Û¢÷|*—ÔƒÂâf·­Âg¸•Ìê¹gâ÷ǺñÔ±¢lëª^þËbŽ~K°AÁ–]ªñžû’D'HÜ{Û•©vä¡ÁÕ‚?:‚‡y6ÊÙF&i‚Ÿ¦nä³ÿÎOw=…7m¤~Ødkç½Uˆa‚)`ŸlŒêÞîW¶BFTzç€1õCmOëÓÖú0¬”WˆÎúŽÃ [l«Œ¼¾Äp"x<°ûÿG N”H¾©öO.ûz»†ÏÞ›]V·;Syû€*„k5¶O—Fîma«l’‹­öžú½s“ïüD’ ˜e3NN•ÝÚj<…%Õ¥ŸÕ@“@o»wècãÉPfì<{˜«b¯õû²ÁUÌ„BÆ™†¶´j§Â;§úœÍœn¦K̃u×ù™CYg>'áÓø[Vø%cž-CݖƩϷUAƒ°ÞµÛ‚|\†—zV®×Ç +‹\;ä)—KT6UáØøçt‹5~‹6Ƌ˽.@@Ó’æYs ܶrÙ– _$P·² woÓ¢n¿uP./ól íLß’0O7ô€É ‡ù‹:Y¬ûÏi¢éô€“ÀÖd6xüºõæÎ& %˜À÷ðvÛÖÚ—fç %Ä7¥ÈĬۈ>²@ „jÿÒ» œöŽ«Ü% Cò Ÿø¬>ØuËð•p 5—l ˜ A ãªlvžêã¿«‚ÐmRh¡7þÉ…œ¤!‹!²í™BK§H-HÍ<®ç“×Ñ!‚PÂ*Ü;ƒÆœ¿ZBôi¡( (Â9<=ºh°+†ŒXÛêI‹Nà²Fèa~Œ‡ ,Ta˜9äéÚõ–0÷1,Lý̰á‚Yç³n>,óig\½ï?<¤U f=ñWXÙã>Eãº2T_XëÏy¶ño²âp Jº.ém§ñ³üçpšjêùÐ}‡sÖnŠ ué)¿=涇Õ0!Ç¡2!ÇáûNúW ú?Ç<õø¾å°ö‘åµíЧ~Ÿ5 ~³ºíÕ»‚Wú~«¨_$b áx–½Ïœ«ñªO°U:ûؤ•¯‚kW·&OTZžî–eg¿ÜNaï.Wx¹~©}ÃÃ?JŸ=j. eÐãˆþ²†~™’ ÍW]7ƒ22z2 &ºà—tÙgŸæØç‚ZrO&¥ ì¨L/2±ÝN‰TÂŒîpW°ågEÜ:®ãÎó„‚"£,û¼ùÐ# È_² "°Ã.­¯›ë,8: úÃàHî% BêTº;bÓɈ…5B¨Gt’׳›`—í'„QÖ‹0JMæEb­ž4š‡V—-%tâLô•¦’à–# ü&î[eÅuv’Ê8;!ëÖNŽÕODš!‰ì¢ˆ®&í”1Ȭ­P ¨‰G:­ð8S}9È ·“º²¥ ¬G'¯SF÷‚_fÚ€ï•vužäæ ë)(Ľ/ÍëI_„ö.;}‡Ç{.»óÝñ+ M…én˸Ž]üˆ÷:FÏr[Ü»† ¦\³dT{ dÔ¥+0¦4Ô“.O:$@)u·ä>ë[ÛÀ{•ÖvÁ[ÉKÍ÷pºïZ˘Ä4ò’qJ=Æ&¾åÓqoX„]÷ÈLÞ.Ìsž»kæ«9!•ùóܽmÚƒã=¦W.fpÔjòpœôý0¹z ¶Ødi{¶Ü•¹]à‰Ä/¢¸vÚ”ôªƒce'm)‰æÈt_tói.Ð2 δ“CÉíÓNq™O§qeñ01Ä&?‚|aÎSAwù9ÝSò„Äq& }¾Ú .ìk¦o\Œ\øüŸI…÷@æüI‘Ä_óש‚*Ä/à5…ž•Zû?Ò†II endstream endobj 1270 0 obj << /Type /ObjStm /N 100 /First 987 /Length 2302 /Filter /FlateDecode >> stream xÚÍ[M·½Ï¯à1É¡‡Åú"Á€? $@–I:(ò"bìúœŸWœáŒV ,Ö0öi«§ÙÕdUñ=²—ŠiÊ‰Š—d5þJ"ç0(ÂEi9î·4I¥0,Yž\û/5ÕÚi‰r¡• ¯¤ñ[¦…ÏZ Çë*.ÕúÝxaîw5Q•~7œÃr è0jM¥Hàh%ÑŽ†”’˜ †qb<]4÷æ –À#£A1nñ \4í}j‰3:FœsB ‹Â‘„—šÑ .¶è<Ã)»‡¿¬‰•°,I–þ¬'¡èçš„K÷Ü’ˆÆ]ÊI´…g¢$Àp Õ ï NšcýT’~W“Æ0ò¤ÒßFžT¥…U“ZíþZÒJñ[Á³Ñ7–00b¬,³íX1µ9F“ aâ(ºƒ‘±ÒÝ«IÌ8<€†aµd.ñ`µÈLÉsÃî¤ñsrL:Á’\JBÖŸ°äÖÂ#N*÷»5yóè"f¤RŽ.¢Çó¥Ê8ŒËªÏb|«)££È†öŽ×ÄdUÇ(±Eø¡5#Škícôµ¶€Í[Ä% §FÐTSë±^›Pt5íÝÒššõè°’Z-áÍ*^èZÃÔF ¶Ö§C¬¡4 œû¼E å˜y˜¸•EÏÚ_l@™zÛx¬öW[äO«Ñ F‰¨t¿ÀL¥*zHÄ­7àÈ0î ð6²>‹£T‰vÏžíöÏïï>¤gÏÒþ¹D~Rý‡¸@ #qñÕW»ý÷ïîß¼¸ýnÒþûïž§ýËÛŸ?¤W;Ü /ÿûŸ[Üxý¯ÛÝþ[ø»½ûð>2ãùÝþ‡Û÷÷ß½¹}¨ý·¿Þþøöõ7÷?§›x âr‹`®B[m¯ð¾×ïàíÑÛh|Ñwé¦×¡Žñoÿ¢,Õì›#€ï>þôÓ ÑgxgH=FZÛ/BºÿúîîNoå0örx4|uíhG»ãQ†ÁÃa Ïux®Ãs=xþ¬ËÕnÿâã??ô뿼½û÷nÿÍý»oßõŽåWû?íÿ¼ÿö†úEŒÅŒ‚u‹®!·ŠºF…7ïA¾I#4ûºÏ‹´ÿãýËû„úÝ{<øöþî›þ>bçº0Ä6¤À †Ö­–ò4 [£ØV£†Ô"÷Ù7¤ÙÓ0|Œ\6 v ÒMª> £^"“‚Õºm&Xgo•ìim ¼_zÌ[¬s(‰?ƒò !-[¬›àø['@hB¶>HAºL’–ÊõqP“MTOùRP²±ÊN€ð  êxBã“úA²ˆ"e‚¼8o-BÅ3yRAhAAÅÚ·Ipæc¬’ ixRChAI¥XÆCt ¦Œ±I ¡µ"aÀÀ(ZEÏêǃzÚùIËs~ò¸!3–Ø mӆʱê]ÐP°.øÀƒ†Ÿ¾3ÇÛ?âÏ:Øx9Ÿî€à³|äò˜ †ÔøR‚Õ‹jGbíhÐ0Ê0x2 † ÇQ‡1<ÓðLÃ3 Ï4<ÓðLÃ3 Ï4<ÓðLmQ3,6v&j†Â9< ⫱a­iì§µÇ0ŸV&®,X¡Wñ·žj¾Q @ VcÅb£]–€(êK™Ñµ² È)b¢A¬š¯n›Ñ¤Ð•ÄQ±Ø;%UÙšLˆRY¬ŠõFcÿiad·§ð‚`ÄD‹M’Cö*!i&<©, lâÈ=É,©H™‘²€¯4nú‰ÐCÊø¬ˆ,àk‚€ht."jyVDð5!¤Œœ‹ˆ¤ O˜RY!R¦ïÛB$#clRCxAUe„Dßk„Lž”æ;H‰ý¶ˆ O 5Úʬ„ÈŠ½ äÌa·ï‘RfE„WìÕ $Z>ïÕΘÛŠí ¤L0‘Ž1ÚfD„,»Å1ˆŒý ¤ÌŒˆðŠýšÐADºÊ)¢Z'„Wì×2†‡Ø*¢mFB$¯Øœ@¾ 9ÀÈÈ–ú\ôÅÒE¢ïaÃ'Dߣ†Y77$¯›ŠÿDŸØcÑ'ò¥¢/Ž£ª %U†Fãq‹‡Fã¡Ñxh4‡Fã¡Ñxh4žyx–áY†g)+䛌@Tï΂؜lo/(UCD·t¬£Î¶ûmA©²f>oØY#ÞIñ¶rVm«Ÿo³¶é¬xû 9Ë ½>Š·uÔ™†ô´Ëˆ·8Ž< (Å<‰S_ SáPcËß0;Zù2«Þ¾€ý©gÌÊ'œ£Î¤Ë I„ 9€f’¸®+5f$¶üOŠù2Ûò÷ìO±kœ–E„™)H_PR¥"aètV' )3¾ ¢Š ·GÆÌöû}AA yR‹R7"”f' +NÉÀ=HÏ•="ªÈ È‚jæ±[ßN‹nœEøì$æá)Y烢RÑ Ÿ¢¢Ÿ5ŒÍµ ²Ç¹Í––7¾bœßÅ2_Âm1µÇ‰Ä‡=_JgeS|TÕÁGuÉ7åWµ"ß-VÏÙ©ÛŠãPÌ –O:óM‰åsvô¶â<Ôs¬ŸC ‡"œá°4/v`Ïë¸IlÁ΀ø ¢[°çó¤;°³£ûǧ¢ñÝeUÉžaZ‹o\xÞ0ŽSÔ'í„Ë–kЋ"ÿëo Éáð‹ WzTHl[…ÄF!±QHl[ÂÖ‡°õ!l}Hf•ɇçñA?h»RA*ÑM q°èrØÁl¥sè6+W,FŒØ¨µœP´8œº …]±` †Ä=ÁÐL[|_|ºæçLN[Î’T©Ò?! Å߃1N¿"º¦ô­u÷3÷­Y¹ ‰\@Œ‡ÏkAZ‡qj™güšrÄ!nÀQN8â”.Ï4ç5qx`Fi@ •8G¾ ÈU#¤Äe¨¨Ý&Ž ’ÑSîêÆ˜ÿ%D¤GèÀ!¹F—á¸jòJÍ=[…¬e,#H±Äyaž~ñFõêÑʼíp°]â? 2˜^ñ‹ ÍÿÜlF@ endstream endobj 1396 0 obj << /Length 2654 /Filter /FlateDecode >> stream xÚ­ZY“Û¸~Ÿ_Á·H) ÁEtÅ©ì:±w·’Ôófï%A#ÚS**¸†¹™ùSee‹Ãr[ÌuÝà?[¸œbRCºL…„²Ž·$W9œõŽ”1‰“¤_Wåy5åáäY/ñüùŸíZã ×åS»ÆqVºE€ŽÒrée'¢0–™w>N`ÈEω9¨' «ƒ™ˆ¡ÔŒI¥Âe(‹iNœ°É£á“%|²Ô«)†¶y‹YƒÏyö4Óå2›2 bt„ÊÉ|ÊA”ná®Úâ`‘–8Hó¦r£ÍFû¯ÈcJ¸dÿsí½£$BªnÍß9 (\t+rÿ)Fÿ{J 1>‰sÂ÷/OŸÃ{‰;ùiÙv"=08h•±íB·ºF¢¨uv´XèMg2\Ñ­hwݼ‡)ˆÄ„ >fòT4ûÎ$¿Ñ$ϬP! ¶b†™v Zl|H,'ÏëªË’;ûÃEÏYžãü\ãŒhÓÌy‰¯S·a^Ur— ΕΊô ܾ^¤yî@;2ž8!”öò4™í§l|T ®ú 'ì‹Nk~« {й\x%Ì_ͨÑm¯¾¨J‰Þ¸½L1JØ^óW'«" ïÃëc½Õ/ë¹E³¿‚çT™60ÝÛ¸ëQøª_öù–=r¨¥°F ùº¤ë;¼Ü¦j²±Û¶B.6È 2xsÊŒ5X±Û–îîêÄQÌIÞ8z‡ÿýO×Õ~ãÁ¥èë.V¦ã¹a&Ž&Õü‹^´†oê&Bn S…Ìó{Å&D‘­­Ìͳ2­Ý¢’&{„š¬êªÀÉçuf•=ŽœVÃ`xç¸7có+*P*RyPˆB/QìV¾îÚ~7©Â^1ç»V§uî|J¥"[`tÉ©•Ø!?à% j{RýhäÚòó®][Ï ÙDà£*Að*´Š$!cõš…ª!rÞœ0…hŸOu\Ï&ÿ©¬.=ˆU ŽžM¸«Ê?MdˆÃ©ú+rk³ 3=d›ã#mü" KØ…œv }ÁxkNïr®j yýíÊ Í¤@ë8á? … t[Ÿ*Š Â:ðQ2t•0-(Újxq4ùëG׊Ü^b•gJlpp3 ¹Uè²*æJΣŽÍë 6Af6y_HS0²­L× &uÿ£µ5gËPj#w$œDûžƒôȵ:€+Èé i“F+äêp¯¯j‹}ž.Ï2ã©'o ZEéʯäôõ,uH©HîI½WëÖçiCd´Ç ËQp±õV'’«}º·x/ýòÕ¶\`qd˜q½¨°«¥møÙÁ¢SEózåÔм¨!¸HÉI¤í8+²<µ©¶Â¨iž.ÿƒ¡ ©4Ä(d_úÛŒ AbߊÊ[àÈ×f I8líùÎJHÄûlâd|ÿ%ø¹j¹…ZÛÖ¡IÒ»+4¦ƒC¬™Í(u·1í¿nœ-McÂDi]¿õñ5ãPœ$™;‘\©x˜[W¢o8šn£¿ƒÄ÷æ¯'ÏeGçYÛæzÖß°÷ûcÓÚNzÆþ~‰rT@;R m 1êÃPuÕš¹«Æ™U•Cf3è%›IÓÞ0‹¬¿„ÿM_¾Ý7zäa³¡*õaº†øÚF²«‰;ùÜ~HÎuòH„³¸ïä÷ƒ¨ðŒP”CŠqæ 8^ñüVÁG%:ƒèÂYÊöÒìÞßÇ\3a2÷! Ñ ²­dL÷ÇÒœblj“thüDrÌ WPW²k0ÆîƒVß„¤‚L],‹±q·ˆTÀ#òí¾‘ÿU$,‰ ¢¢1ɸ/&\™™=•]Õ2ì|ž†ãRÆÆh((è ¹ q/8B´P+›ïÏÀqM?Cš‡xlË˹˜·1$°ßþ2$ıû@"Ñ`­xÖg ¹Ž¦’!M¦n¶‘‹Y#Û9> stream xÚ­UMsÛ ½ëWpD31á騴Mgrkê[šƒla[Yr×ÿ¾‹ÛÍÄÓº ËîÛÝP´F}IîæÉí½dˆ1’+ÅÑ|…D…L®‰–h^¢'¼¨|ç]Õ¬Ó7þÔ._¶¶ñ…¯Úæ&b¶¶EgãDFDú<H>Ï“Ÿ ƒX1d8xå„Q–Ûä院ðD‰È3´ï­¶H*F¸Ñ0®Ñ·äkB®ÓŸ0«„kvj†,ü>eggJ†ìÅ U&fÆè@ôߣ §™¢¬‹®‹éï\Ê)nwÖÁœb_Ùî$Æí=?)9E3!‰:rº« î„áø%”5 Šðcx_•àŠf= ÛUüï\ˆÛ‡ìç«ÖÅ]kë}ßÁÞSSÆAwŒ–Õ*å ¯¬ƒæF¨j¼u;g}ÊpßîÁmÛ„Œs&‰”s¿ l ‹ª)ܲÏs\¾‘a»¸¼·uG¤X.m×E… ‚‹xm›µßtƒqÏÐ]ÛU=’ΤÊñ}ʉ«‰ÄöÅ‹ÚÆÒN³Ð3#á+3Ûy>†æ@6Çç!ÓÄ00›šóÍ;[lßíèlÜuRžÀÿ:2œ#ù—·w©hJ² ׸¥]ü°KßדÅJ…Á±h¼pÃBûÄ0d\P3 ö®òƒÙwªè¾ò›3·6´å×~xÚÑ ÔÑìÊÖHFXÆÆÜ@+ïV‚3¢¦ÚevÓkx&¥$^í7p zuÂÙ‡í(ªŸª&QwmêC4J@Û„meœœÒ¾ÞG&g|’z„«æuùóïé ÎW´oË•%†»Xj= È\¬0ËGëÛkÛK—£3HíRt© åfÜð_Ìâàí% v°‰‘ûó×PIxJÌß<†o<ØàGäD“éEƒkQs~éIäJ`eÎ9þhfõ¦ endstream endobj 1405 0 obj << /Length 214 /Filter /FlateDecode >> stream xÚ•MoÂ0 †ïù>¶x¶Û$íuLâ¶-7ġР*õcƒ ýýE›¸p²ýÊzý>&ØÁ«ztêaQ20c­µ€û+`kƒ¦×Â*ÛtáݸËçb«ìyÚž?†&tÓ8KÚ»ï}sôi(±È×n©^œúVÏprd2°ÔjMÐF} „E]ÁÏyk€R3Š5±ïáC½)ºÄ¼Ö?~ºD1ö»Û´EF8Ñê*R±6{Ú7_Áæs#’¹ýóß[†©=õþŒ}ÍñpKS? endstream endobj 1414 0 obj << /Length 2429 /Filter /FlateDecode >> stream xÚíkoܸñ»…¾u÷eù¦X A“Àéåp(ÚxQ HòA^kmõÖ’+iãs}‡=¨Õ>½ir‡Â€É¥†Ã!g8/Žn#ýåûößZ‘HÑH 4§ÑâþâãgÝÀøOFZËèÑBÝG\D•„þ*ººøûÅ›ùÅßq‚´4š/#.âZEŠ1¤”ˆæ7ÑÇÉÛ_ÿm~ùaúyþ“ƒWˆÁ ü æ’hF5"ðÁB_þ|ùË¿à‹ËyH£ÔiŸB#åHÅŠ˜5шÃò’ Ä4w«Î¼œÎ¨Š'oÞϯ\ïíϯ¯®,Í&ÚßíŒreQÍ$A‚h‡j±JªÊoVöÁ©D±Ö€É‚]guU—Y~‹¬Ä}XEb¤}°£cgÒ@}Â;(²BD±裇V°X ‘¬ë¢CÓ[ NVÈêÅ8­âb•æ·õÝ(&âXŽ©XNIÍÇïÈ;¸•Õë'sÐcd K1Ü0Nº;›o¹æöïCÓÜ¥¿nÃBFR,êgÒîhåãxͲÏ64ÇŒ¡æ:CÄÂl7"d0¥¡˜mÅxï%R" mu*m¦­ˆ,Iò8’òí$ÅG‘”Ÿ…¤j 0„ñc6v,U–ž(“ƒSNO»®–åªHêsÈ¡E4.Òƒ£Ç\Ñù:§BZꀼü,¨®‹bµÅØP՞ؑ1 ÀQïÈ2ðE’ûq¢bq‹Ì˜Z°4ïÁ±˜YóiÚ¾ù„>É*÷á63¦î‹±Qiî†À|ù^â`ÿ“–Ezã,!5R#*ª5ôàw lìà˜Ë>‡æû}+.½ªïd:¬™oÖí¸AŽ‚ Š©ñÀ ’Ò;°sc€)ø~ÛÆ¹°;7cËÂwŒ™¶^¢4 b ¨C<–Q nÐÆàë>‡<½áänõ£˜¡±=çf;:mOÊt”®ž: íxexo‡¹tRóâÁ§Œ=â_—eò´s¡¬½x&àÔv§ë_ÕÀÚûÝž(&`a¡ü%ùÍ3I¡Õ)÷E^Õ‡D0ब»~c*‹z >Òb¹-à‚’ÖöÙ ÚxØ{Ç4[%× ìì𣽭¦·®ì 4]/Ú,§Hc¶ß«4’±O?QÄ:Ÿa§‚ÒHÉž¡n5QÊŠj6y_;ªûº¨Ý´mòõýuZz s{ˆþ7®·Qº7ߩۼ(S×ûå¾ÝùªNʺUZá·0¼òî]AÌ‹9ñ1]Çûf`§®£Xõ9M¥˜Üƒ<'uQ>¹ŸŽÃ¦ç9lºŽL)¼D”Y±ö³Á²!Ç­Uxv 8q&„=q*¹Á ³ÇNŸ5ˆtV>^IÝì4/Ö·w®_ß™C5½Ä5=[`~.’ÜwмN2ûC:êÍh@¬M@8Dø! QpÌûÆv,©Û±Áïvlé]U…£¦Ù;ƒkÊÙ@·˜à4û„1 ²‡½ýˆI‰ ÄϘV¶â P­ÜˆÉjxX³Ü*÷¸¹Ê«ì&ø¹N+‡4)ý F]k”œíHnvdâcâ8{ëhð?ÔY‘ƒÉkiõÂÛßÓ6õ ÀMSûµø_¤K¶8Ý;¢Pyç*íR#Ñå"Ç'™ß7«%3rºv]Yž@Ï^v©Ëu¾ïÀÂ%J\oY÷âÎLs?×y+p@ ¶Ox¨WZmåk¯)ZNYÅp›?04®Æ%ÈúIá´èT†72LǽÌ_Œ°hŠÎ’2 —€îBÐØx ÊãØ¤ms¤·Ža,é¯cÆ9X\ ·Á\¦Ñr5dgÛ)k!ðA˜;“ŒÀ\›å4 D JgY Í10Z„û,ç«W¯† MÙŸD%"q+L•Ok!Ž£îŸ% ¢3‰ñäe€Ý¿®IM2lggøj‘#Y“"éÂ!4 Ö7NIƒYúµ‚7é§L¿jÆŸ¿Z><€ÑC.Ï<ÇàúA¼£Oâ2ýf\ö9¬ï˜Ë(ýïÍâ$.³oÆeŸ4ý޹|1" ¼Móû¸Ôü›±Ûg‚ŸËîƒ&Í“Œ_…„aÄM FÜ$¢8òëÅÔî·óŒO%û0 èw'/â¬ò²n…à+ž"…àãÿ|ðQ~;5ß<Ï»ùS“ú:ÃS†À-îFŸãàÜ€vcþ|³òÛo¢ð³åûødTÀOpzÇñ°3áágÂ#΄G¶á¨ûçÓÁ½Ϩښ—ë4@|H,DþЂó}Jܾ‘> T7íH4dÛÈz˜³v‘5Å0CùÈúIÃÙÔ–Ív,‹ò>1©$ŸÍÙÑu•îzì!Ü%+½:ϰf´_çùŤØÇÊ©@±ÃrP²µtkAekŸŠÑ:J0'¸{ÚÝZGɯ£” ž—>¤õºÌGk9E¸«`kü‘±ÂÅ*[úrH`ƒíØšDÜÔ$úbËö=Ë ¸'S;©Lû³a–y ¶#­ýÆá#éïÀ± ÀµÇ1S»iSäù˜U~ÍrûAÌf ¾ƒ¢“wɪ: âË׉øÁà ÷ýrlSF» ²O`¬cÖ{ºó‚•d{9xA¶úfìŸU»+2Z^~¦$›•3Ióþ½¸K®&õÆ ˜÷AWMKŽŒzt1RºÝ ÞJ=–!¼‡Õ\›aÕ¼à gö(¯½…ýƒ ¦Ši$©¯Ôz¸î[ßn endstream endobj 1418 0 obj << /Length 2189 /Filter /FlateDecode >> stream xÚí[[sÛ¶~÷¯à[©™Èœf¦ém’‡3sR¿¹~ dÊâ”&]’ªãßÅ…WÁºXrœ^œ‰ä·‹ÝðíÆÁm€ƒŸ/Þ_^üç'FB✗« ¦A¬,¸¼ ®ÂEÖÔM•·³9eøC¹ÜÜ¥E“4YY¼±}ŸÒëÆ ‰H´÷f+/ F«öí¦¹À8ü¯ý˜×(O 6è¡$mŸkåO°)’"bF WɱßYOÊã 'éäi/ƒÅ?hrÞ¤+ã€MÞÔ¶§)ݧñ4ÖeîšÝÄAf6€øWݶñéçñü 1(+Õž9¾áÝAHÐ]°Eq¼ î¡a[³ížÓŽ ¥è~ÆcDyäp«4XyÛù¼õ‰b©u„(‚¸ÓLz>¹5@`J +2Z°v5u.~÷μŶáÒ?D"}HÕö^Ä`Ý/#Ôòƒ+:ߎÀ]ç{ðõ¯˜cF¹~ŠÁ/ˆK6ê1`á7# ÊŠæ-áßÎÉsþf¢z*; ì?5þÜrN"ÄùKÛ>DSå“<˜ãv¸Ä`Ôc1.«M:…ycW„+‡÷bXxõЉÅõXœhäð§8v2¡§ClãzTßßþ²!5ìÑ0£`ÊzuËÈÏ .<Æ|½¸:(ÈŽ‰u63²L¶° hÜÑÂÖ®¤¸ìð]iºÀw‹÷×<”kKšA'Å£o‡§qÒ±‡Ö;SF¨uìhÀInígwxØg‹ÃÛqÁ+/ €Í¤zãÅ‘ƒbéì0í`®}ã êc¦ ò±ZsÁP4¦3ŸÒfSµ;RHöàm4M1# ëp·9¥D“B ±öKé:-ÇF}Ÿ.³_1¦†ÅRËt܃U{OÚ¸§JŸý°!ŸðÕÀï#_élƒÆa ŠT–À‚€êi(Øûiÿ)Ék¿ @Š=ç³ìQE æ&7'?¬¼ƒuˆ“ýƒz&;‡dõ4Y‰Cœ&d'Ìáåð“¸ñæE°šõrnêjÝå:]þ¦9¯q5t¬€‚3l\ßzWøÆÂ$ŠU7ü¤ôX8·^š:òOkÀØg×”ÿ›þ3RB½«X’2®€ ¼pFØ yý„gÿ€„/)ø¿²ŒðU¨{ñxlJر_&u‚qw•·©Ç–GeÂ猲‰W¿xBÆÏ»o퀊—ÉÆX’•+¥-ËMÑx“ M™ù! óðâ OÕ$Ÿž±|ãOƒÆ¯%[Ž©®úضl†b7l©ãžšîNQØ(yØ¢¥D2ø"/•ûÁ¹ªãYKCC%×´Ôç Z2Þ›0P„•ØC™"˜þt²¤LZÔCå\ÂØ¬í{"ÉÀ Ic¯ G`.-“Ú]2\I?n/,Ê2×™…ba]Ú®ÇrãP A·4X'„ŽC ý}“äù£uéÆŸ‘%!=ã$û’'ɥꉰ7¯•"Ž!{‘É`Nªÿƒù`˜{Ê=ÃV§Ð½˜!ßsÀ_šðE‚­^“ðýb¨ýÑ[6?/"‹ëÉ[ös ó§—ÕÙ9 ôÏ®Òú_У† | uñè\T–¿¾ŸŸ¡œÁJÿÄç¡´Çï9[;UØü…Þ1Иê`°ŒjÓœéƒ!“¾Ê?4ã³¾b¨›¤j¼dšT”7^Ú v8Ì 1˜¼]‘ˆ¨xïKz8Ý'D ˆÓ„?±·i‘VISV}¡ØýÜ@i@—# O7 ®çiqÛ¬}f ‚¢¨/C`lÐ>Ü;+Äå8 ø¨pÄXxWÖOd;¬‹4±û€–ÃÜ’'Íšô®¶¸¦Èé¯1™®2›îâÆvKè[Â0ͬ¶×nõëÂ^Z·½}¾ßlÒµŽCaýÓlp_¥÷°4k;X7ž‡NµsÅá=Ìäf·-¤nÉ[}$CvÃÌf%[SûÙ$ùè`k7Òd7Âó92¡`(îxbýµh«ŒI~SöódX ©ür<™ï’^ž<Ð6[|Ö3=.–ô˜c=1œ¡\ŒŽõæX°¹!ë…~íl{Á¸||o½YÌÝ;2¹Ô‡·¤ÏÏ£¢êÀÏæíÎŽÌHè$í>É£O<œá$OK»A¤èJ@Ó–©…;ÿ!¶Ø¯îÚÔÖfÂ`Ÿ=0 HíGŽh?‡’.ÚÆZ/ÙrOê72R«^w*Å~µ? 1¡Ìz e? Ó°”Ù&,œLL‚s£ÛÈžþµg`õø˜?öðÿ- ¼ ®°+0¨IAÃï×É}c^îÄ2„fs1u¹v„òÞ¾æÖrF!KêzªìŸˆ°_Õ endstream endobj 1422 0 obj << /Length 2485 /Filter /FlateDecode >> stream xÚí[Ksã6¾ûWð6rj„àM2U3‡ÔfRÉm'¾9>Pds#“IÅãýõéÆƒ"iÊ’,ÙžììL•€ÍF£Ñèî€itÑèç³/ξÿ$YÄI•âÑÅ2T«(N5Ñ2ºXD—“YÞÔM•×çS'“•óõ­)š¬ÉËâ½kûlV&««ˆ8¿ºøõì§‹³?ÏôE#ŸrÂ¨Žæ·g—W4Z@û¯%"M¢{KuIÅ5”WÑogÿ>£^VþWב+|þ¹ÃY'D3Å>åüiî ¡ªeÞc‘0éT˜Š§XÐHÇDpÏá±XO šÊX·l—*&\ Ï·2Ñr”qÐÄ£'‰”tF¨ÄO-ŸýLk’”¦ gšñ„I¢NUâ¦úãÇvâo0Ýýˆk¯,uíh‰„Q´?¶ÿ^ ô]N5¥“=æ¾ñG0¯ß©¢žWø•„-³^‹e6y×c´çGô‹P†óç|ún øf^àÝÚª~êÕ8e‚(™¾´ê'd(½)õ}ÞܼŽÚgŒ‚›À©¦_N¯~ŽC ?ŽA·Œêû¢Z›,‡Ï$u<ÕÿúžjÞ¼ÔMV5‡ ÿàwðö”($Ì}Ôkq1ñfó)[Õ}»Ù'ô¡¾‚ëÁÁæQÄC ,sÿˆ7 m`ؤŒBÕ zf0“Ú {™ µ3é 1AÒÖ¤ƒ1~ÿ‰÷XÆ„Å"ÍjOºÀÇ”t½Í“@s¹!ÙpQ$-—÷cý(’Æ-ÖȆ|8ÑX÷edÂÐûlPx½[ž¸÷Cc²U~]˜Å˜ P¼ew5¦lT@W×làmúòM™Ô$»…¬K?‘¿™¬šß˜R5•N–e5&·æ0rlÂ:ÃãåíàòÂ1lnŒ+Ì×UI¢«t3H¨f PX\àLS ”AN"i˜ß•£p ‹ ¥¦HàæßËåè(Q=É£ÔÆ  +Ó¬«Â+1·VM…àðïëÛ)†N2÷hÖw+ãŠùÒ=—åºX¼w夯îó:4îÙé8yŽæö®yèpµ!#Ø·Ö>¡»°Ú`Xdu‰_2agÝ7"_7/PmñÌv ”¨ybäáS; Èü~8økW¬ËÀ/k\)ð3ç\MþŸlôë¬1þ›¬v”çBM04Ûš§g a^O»¨CμäPp’C$bC-¯Ýó¿¦*ÉùT@ º¸ ÙjUb?÷¾>/ °Öõ¼ñõz=¿ñ”£ÖÊÁG3Ù.L”É9‚N]â;úe&Þá‚ýaÌÆ¦AohΞéäþœ]TøÉ÷F`P'_î̼1‹þÄû8õ˨Ƀ—Õ“©ãmm\{>¾PŸniBJ5ä$`5oÖéÁIÂ<ïóÕÊ•Ve‰ãr›cJ%IuºsÉJÖ.Ù²X=8æ™ï‡í[üàmÁ`j÷çíþ&‡™·k›sH ôÀ—¢ *'צ0XÑVÅäÖÚ ¾XâÜeuc*W‡Q8šÚºa»ò,aé)P'ø>/\½³ª×‚Öù —Öfá‹ ?šÓˆ%›ø±5z´ÙpU¸ÅôûGHàÙˆôp×õÈÊ$±Yõ‹@R ){šl)ÄÜQœZc¯Jù?”¶læ>ÆåÑDiù£[NÁ§±~’Ò·I€9 æy˜_&|RÎ,’q`ȇ`Æv¤™zÚ5²Xqì±â³·Uvwç¾(Lm‡hÅrù 4opJí.¹l\> Ã…% d?-—m”Wmòã mZ{J`]Ù4¸¹](ŠéNÀILû(a,ßÌOÅΙѲ¥qèBí¡–fÆ=-Þ€„1Ö]±‚%´XK-VÀJ_©C§Lip£<·}å+P`ÚÝb8Mž]Þ¡ˆ–¸äùwÈ\ ÓÛxÁŒ;šjðJ÷-7$ÆÆÇˆØŒo»WJ!ÑiÉî²*»Í,º‚Œl²Êos‹ÙEØ€B±¾»Nîg˜Û–ÎÁBÖ¢Pf­ŸvcƧ®}µ¿Á€¥:„ $•}ïdÕïõê\îø K²é˜"”o©Ž) žÈ—†)n¾˜"¤„%¾ ˜’Í8‡œ™§ì¡&ÑôQ‘Nwß~|鬛uôaÝ”ÅÚîY?‰—öÉ蟶”U^7#ú£Çc-ðÿÈó¾¯j·.?γcî ŒÊPúê4`ìpý8L š¼Ðù OáÉ|vóŸ2/Nt>X›?×ÇØI±Kï”T•ôÃðçdK&\D—Œã¦ÿR‰"s‡øÓŽE°¡Íoj÷"/zLpGRuÜšËp@]Rle_l™x³aŽªÅÄ;Àÿ1½L…„%°AÊiVË-ûñ:iáM8Rh3BL«o(59$'áxs똌Óf•ì8Oa|ÈÈH:Ýt3Ïøµ3+˜†Sö·ÌH‹ð# í]¾Ê,eÆœ(Dí/®UسD^çEó—wR¾n¡é ÖËiòÇ«—ßèÞ/?°Ú¸'Þ<¹ÒÀU¥ýÝúÀÂsè&Án)þ[ħ¸}†^$ý&.oÎÞȼ­››æ¼ãêà–@ÎóS€7½¼î9à›ú‚£,hf è¹¾$ ¡½ý´qxòõ(Dâ¥Ð’¨€6ªm×…"‰VûÀ ùžü¼áuD% å|ÛuDÁ“É,›ÿaï;eÕÂ6ÅÛ.1–B0“;”ì]QÄN,ZCÖíEÛõæŠ"Ví8¶_QÔÝ3¢mW`¾ÞÅŽI¸¢ˆÂŒŸDÅι>5È©H:ÿžZÛýûÞÍÁp&ôVw;GàÒ6wUÂÜÑ‹klï$b{ˆí‰67ûð}^¸ÖÌ“»±` nÉão#:N™çà8±ÞmDwqäŠ!ÂcEYçb"Öúg}Ø‚ªÃ§˜ú«ˆXèLÝI>ýUDFµðw±µ{ëÝ»ˆXww-å¨YŠÊŒuî"v×äðï±`EròçX#2¦hJRÈ+E .Óo­k6ì÷o­>6 endstream endobj 1428 0 obj << /Length 2538 /Filter /FlateDecode >> stream xÚíZKs㸾ûWð&º2ÂàM2U;•L’ÙÊRɬ«rðú@I”ÅŠô’Ôzœ_Ÿn|@¢õ'©lÊU&  Ñ@_·hpÐàû«÷7Wo?H0F¥xp³"D‰&Z7«à6\ämÓÖyy=çQþ¹Zî¶YÙ¦m^•olÝǬÈÒ&³/‚0"®ïn~¸úËÍÕ/W †¡³R9aTËíÕí VPÿC@‰HâàÑ´ÚR1Â# å"øñêWÔ›¦O“ñˆP‘RDJ7Ù†Ôë¼\ýDÑÏ 1ƒû=Îæíî­’±˜H3’éØV0{EÃÇkFêþdßÒÆ>³k¦ÂÏÙ²ÍV¥ó®ÿœ3¢ub¥üu톢þP„³¤iñÔfi‘ß—Ùjj^*!B³®qÞØ6{K¢krSï²)AвµÝd%îóŸ"|Ì‹ÂÖUõÉ–ÖU=µ€$"‚É~ͤ>‰ã¾MUOVdê†Ãe»·xóòP59ZRC&5'A‘ê¤6mZ·SƒÏE$‰¶E‚1hÛ<-WSB9%JNfVNn4RÃÀ÷ù5Wá¯h™µЧ-4YZ/7¶\§å½«Æ±Ma•­Ñ¤Ò]ѺžÕä–Fö=*¦„é~ânuW°ã1Š@ûDÆ:¨áÌT~üþàùŠ(À@Œ[€-ó®PЩfšP*_£1¡ª¿E=1ã0LjHuTŶB1'âpj‡5£a¸šÙx¬—*ƒà: Ö“’; ­ý}ÕÏçà”L^[÷îfߣ×Wú‚Qúµ5Îi0üs×úè ˜T1®˜©7ƒ¤ NÐþR+ZýóÎÙ<@ÄxÖ³Þ9ŸµôïöƆ[6Ìvòjl'½–åðCË9çþ÷œ•é8Ä宿Ðá1ôꇷï9z¯0S¢µ¼­ˆˆ#g¯EÞNÁ3®C÷p°³É}×6€†UVäÛ¼ÍêÁûÃ2à^Æ–RÎâšÞN‰þ ½™N‰Ïê|AÏ "œ¼ç‹YV»rz>š(-O ŠŽò¥A“€)Ô@†î¦6ÏÓäep àj`>•ø À©ú žŒ™1Öç%’HüÐ 2NÓµG°‹¥æš…ŸâÛcÞn&ªÀã~ÌŽ†¶`GL'ŠœÃA:Þîj3:Ì%µƒÝgeV§-ð;óêˆ^€ÔŒ*ÜjÕ!åœ[-~†Y††î`ÌxoŒ2Xd qÝàÒ˜\žmmµé¾æmHŠ ÙNŸûÍê>.¬ª¡j‘ÁD³½Ï£‘¢°Z.wu•KתZÛFžÖŒí&žßµ(™X;²¿}hŸÐLŠ¢á³(ò¥£ ËÔuY¸Šê÷;- éŶÀrœg¶êÊ3{1¢ØlAÆ“=ê7IlÅ…çØNo“Ù”H¸÷”`'Ïô\â׉ðÕ_93â{ZàF3'GOq>áa<;ßc<‰˜"à ‘Ï}Á…1dPȰ„Y<„…ÇÀ×ذÄe¿u³[Ì]ó)¸kƒ'¨¼FàKEXÁõcÞ¸aêçÃ¥§ú½ùÍôª1Pà‡õ' <ñ‘+Ò -zZEK+ °pã´“û´k,-ƒ"*g2g¸C$çP «Ó”BÒøt²dtÌLN¦×göì«Í¡@a”sŸLîÕ-È7Uá°,‡›Sê½Ä^o;dϰý{ .‰øyjo+Ê“[¬àÒfã@=#XÓR‰µ{þíqž=Rö©®I¾ÁÀŒ¼”ñ¤M ÀÕªßCËÓ»LPÜ_v΀à_Zdå<24áÜÖ3vðs¹cÃj7•+s¢ß%²4Úîd"Á'ò‰ðMõ¡Î,?aÝŒw™ŸÞc=á~HW«ŽÌØT"4•N \$×,Üt]ÛǬãúÿÊêÊV÷¹½Æ‹LÆÁ÷qv:EÎB3Nú"O†›*Þ»j·é'<™ŸÓt s\ ¥nÏÄ_0¤Â“8Üf ý•-Û›$I kSÙ*£9xîšÌ52fmª]û°kmÝSµ«]û‘¹Ž§öY}á$Îíãç]Ó:FÍP7ÑÚbËýˆ @æ´vÁ“Ç:ïV¾­VûùôÑ×~Ã×»ÒÜÆ)d»ªK.’ÐX½„à²öŸ©ãK E/Ê«Ž†\'ø[\Îö_CrO³Ÿñ•:Ò¤jPÒ«3—MVÕo.™k¶öw/ߢóte ×—å){ùæ¼xCþùY¥| ôÅ™ÇÅÌØùf_‡ì^~8%$aúuÈ.Þ2î@éºÀû CŠ1˜?‹è®§)!~]v¬MêD¾þ'z^“UêÂÚPçÀ¸… Þ÷ÎõcÙáÓIÇG1øõ$Ô%‚²†s!#L[à/ÁPv³©vÅÊ–7é5§ý¯õÌ, ð3slb’QÜ@·>lìc]ž‹Y‹ˇ±Ma±ÚbX,¥]Ë30,‚>…aãDúÖL¬Ç°Š$úË!louû¿V@<_ðóàé_/  êÑ& bÍÃ?mÒ“~Á)3LîiΚ÷«Ci‰ÖS¤M³?ÙåƒSi endstream endobj 1437 0 obj << /Length 2132 /Filter /FlateDecode >> stream xÚíZIã¶¾÷¯Ð­å`Ìpµ<`HL\’7i¼w˜ÉA¶h[Yr$z<_Ÿâ¦­Õí­Ó’tI‘ÅÚXõmì­=ì}wóõÝÍ—oâ‚Ωw·òfˆEÜ‹’…w—yïýE.Yçåz6§QìS-÷[QÊTæUùÊŒ½…Ha: Äf¿ÜýpóíÝÍo7öÂñ" T)"8ô–Û›÷¿`/ƒñ<ŒX{=këœ …Ð.¼Ÿoþ{ƒ-¯À%ü×kÏ4Þ}×£Æ($Ì‹BXJéÓÔc„yK|@"&À ñŸ¤€=¡3Ká![O2š LHo5ðQÎÝZx«IÂNž(Š“ 3„µd4òÎZ:0JpB”¥ ì‡IìE pÌccê7oÞhÃ9Úàa ‰)¼Ò³Wf. @ŒöCï?ý½÷ócÿõ€80§gðæÓ #ÝÂj'ÊÁZØýæØ2@¹[Z:ƒMÇ¿m~Ò¢RVy!.Yz;føÕÜj©/âø°xfA»Äò{ܽƾ5·~2' ñ ¹Ä·¾† ó"ÆŸ eÁsëì”#á£1Y)gSb¯ZZ§D˜Aœå Èb÷Ù±ìa@ „’3ê86µq§Ë0C”!ÃÀ˜ {ÚÚûr—.?*yWtÓ†0KœW8øò-‰X–¶ÒΤ6Â!±ÄnÒ«)2%ÝŒ/¾øxHë‹üu3ÉY’“gdäÞÃíç AQ™ÀB³êûRŠzW Ù@ê¤Ø—•CIâ6U!ÌX?ýB7].«:k»²2 ÔÊ ‰(‰Q¢cª‰µí¤þnUmÈçÀgºp,¥efÀù¾.-ó©™ZäÞ¢‹tjˆ\­`ŠÝjñ«XÊF `(¡0´‘ã+˜Â¨ŸåK9Òú^õ™á Æ?ÎöÅŒpÿþ š ó¬Gb­ÑJc†–ii§ES™¡…0Ï]])ŸòLdh6g8ðï6Bƒ˜È‹Â̫ŮH—vQ!ʵÜ8¦µœÜ0 dJ™À˜Šº12æ¥y+CcUÕÛTš¶Qš2âH‘ªìÙ1‡=YùJ^õì ¨zJuú­y8C¨ö!ytkYm·n‚Ø¥u*Efº²2:/í&r£¤P­L4Ë:_Øm6ÕŒrÿàY¯0|œ"wç`¤ R›õ³ì\æM¶Þ¤,¬ý,ÄhXC;ŽQûÔ¦!d+ç OµH³)=30EÜêy¥½ˆfB¦yaøXˆ¶ñ•' bñU€•G@“äH”‡ã_…X{Û «!üÒ•Ç ¢$ºV4×AV;øbàÎÅ‚×se–Ú/!øoïr+ÒâY Ò\» úx9ƒ:ÑóòyMy1TB#î˜ »P‹”lˆC 2àÑf ÓÍ*Ñ̈_Þª„/ÍX³ßíŠûÁ*›­u[™;mL[缩Œ€Ó=Yƒ=H¼Ab¥ #ԇЦ1 o¯¹æ;D¡ÞÕ÷N*ó\Ve¨Å¡( ¹?&Ì6­Õ¢±ÙÑ«Gsâea`UÚ)Í~¹±«z U Ö&Ú´(LW˜hxº‡°f£R‚A*ñ@abb·¦/ÙO5ûµì¥ê¡T¿@fwÿtLt+…“ƽµ r»N”͆»EUÏ%\+SËñ©’"µZ芣‘I±ÜÕ{q×LC$BQ´Ò[ÑÓ¤8ŠCÞ/ ®Ÿ3†¡RãC/ùþˆõœ/–•ßÀŒ¢[Òcõ€.MÛ:¥ó4oì„´tqëÄ©xÄ¡ Á£Áw.µõ4KÚ´­ê¾­k£ÇG„` JÛ•Gü0€ƒñ^ŠæJO|Â÷e&êâ¾}¡¶³ˆ7•©›ìªˆ\ƒËæñP4Qßý_Û ’…¿ot‰‘$ÚÑÕHjΆª­©ª9=?QãÛ½ …ª¥ë·¸-¦ÕH¹ß.5ôl-‘šXTŽVU; ×y~¤Þ?Å3 H‹—:Ç]ˆžgö`¹Ùƒƒõ•Ò*! ص„x©"¹ILæ….á©òŽzîûÂÞ&\!8aâ]9*«ãnÊYÿm…ÜT@%F)X0W‰J±f¡Z»4sCÒ¾\yŠý»¨mÉIà|²d”BÍ%†Š#¢ÓK9yÓ“ $cxòâZH; à UÑá¹Mí-…‰hr|–Ò"_—Â2”¯\õ+2—wO«(˜?Hø5%a~LžÆ‚àE\SQö¶éW”–ðKW” LÉØ?  4·Ý<Œâ¿Ey]Ý× IÒ¼îùއ¢0Éïâö„:Ðjð¿ÏCõ\\ÄE‚œu³tÆÍ=…•ŒØ/‡7âóŸ‡=6æú/ÍÄ2ߦ6ÿ}RÑ:-öâxÙ354Ød¡Î¢Ø„q 6aØ€MfJGèo÷…ÌwnÂ`e©¬ª}Ý‘1cD¨1‹EaLÁ—Ü ·3­x¦Ó‹Eí}shêÄ óÕ°ˆÑ(¸µCÔzZ†" D\Ì®ÉP„‡ˆÇìèù Àôª·Í(C)Â/¡H¢˜%™uÊW÷7\'ê××ç¦ø³W«ð÷oJìÂùÅ ñv…Ÿ)žÎF Áºÿ)yP—8¤ûëÙ¯ºš^M ÍW›·3ÎýÆÕÚ[HHêËM÷¥˜Ô e-êK®Ê.¸ƒâ±ƒØŠز^5,›ÌíŒêæë¹(³\_sA¿ÕŠZ3Ò ´ý¡V` ÓÊ|UÝÍêÙªÿÊCZ £s~ä6ñC<ŽUÑI=– TªY Ùxß?óM¢ endstream endobj 1448 0 obj << /Length 1721 /Filter /FlateDecode >> stream xÚ­XK“Û6 ¾ûWèVïLÌ’"EQ9¦Ýf’KÚtoiZ›kk"KŽDg»ÿ¾AÊ’í}ŽØ$‚x|@ñdðäýìÝÍì×?”H„`E–¥ÉÍ]’§I^h¦Ur³J¾Ìo+×»®jÖW‹47óßÛå~kWºªmÞí³­mÙ[šH&˜¼úzóqv}3û>p OIM™à:Yng_¾òdô g²0ɽçÚ&*,Í5ŒëäïÙ_3>V3¨)Òœqa’<˘RAÙOMýjdrþã*Íæe]­pšÎïÚŽè÷›¶¶‹Ûgia0¯C U«å†x–d.:¢T=Íí÷}YÓеh48Sµ” ÝòL{Gÿ¤ 챸uì²LÍË2-ÈH¤±Œ ƒ<ÀTÆC™ø<”‘… ŒD„2R0n8PFÒ#P»¤>@ùËÛ· óõ1@ç†\M.$KÁ¾‰‹*fœ+FŽ™úA|ü´;1ÔEgýÀݶë}\O<ý8.#ÂŽpÙ\‚K™‰2H^Y¤Œp‰Ó ;(>à—">ýö)>qyŒOœO|‡ﻳà|Ö¡/ÁgžMð™‡Kˆô >a>ɵŠç¼V³ªkÚaD[aþ£1ù Öo«õÁ;°ÐŽΘx|ß_ ®•Ýá_õÐ5Í‘kvuéÀÎmp”8÷Ï'¿s »«ÛÒM¶ÅÿÁífÄyû @ê“D j†z8²èÎ%H Ùµ•Oy/¾}O‚寳ÉtÒNÀt»ï]X 1ê8–)ý·a®ÕAê6J‚¤åÿûýnübäºxòÄ@˜GaX…ª÷D §ö€j²Ÿ^^~9x‰ëŸ®¿iÜIWˆÐxR‰!<óíÒK ˆ’ëp»àBíêï#\û çÁgȺµnÓ®z¢#*ðÿ¡Ýwa¹\nªÆ¹ì iÃî×××DÊ3EHdgý¿«áêú@ù[ÞÐh߇@ªá,jK“Ó¾@ìi Ú Ü)~¿5ãnSMØà¦®¾aƵ¾­$ @Ëöì…\Œ7äœæñ®ôí6„$Ô¥p ÷;ý#ŸoÊnå³;8 ´^£ËðÒ294m§iç¤15Ì Ô‹CQšÜ¤0'»Øb©q†Æ+£ò¡“†µ²'R鱪€A!  lTB<Œ5˜§ŽZàØyú¬þo¹tuð/Ô’PT}}²1ŸùTqÒ9.õ¨Æ\èl)Y‘§o?“º3|¸ÔÏTÉ VÈüL¨/*„!b' ”±“`*+Þ†X\:I²0ITXöUþÃ!ùEš7¼¹ÄpiBeÄ%E3A‡4§­x ö#°:ɘf(£8vØ/><ƒ°…½0Ipf”þ\ «‡g”8zFù{>ë=QN¨ÒñPñðo[êÈIŸÀC?”`»ï“æ&/˜JǶa¸P³ß@ Óéún¯R8¢ªÝ‘óîöÍ2~u’YH÷K» êØPÊ]@ªKh tú¡†Aä&ï´Ã›äœ*g…Ñ/Õ¿€Ú4> stream xÚíYKsÛ6¾ëWàfjZ¢xƒìL}È4õ4§ÆÑLn¤)œ¡I—¢ëæßwñ DRŠ¢‡dÛ\`‹v×$AKDÐÕäÕlòÓo‚"Jq*%C³â„c®%Ò©ÂJ ÙÝDyѮڦ¨–Ó˜é$úµ¾}¸3U›µE]ýèeצ4ÙÊøŽ)æÓ÷³7“׳Éß sD‘f`•aJº½›Ü¼'hò7ˆ`ž&èѺCBRÌ´‚v‰ÞMÞNHð¼„ßf‰|ãúªgY%XQŽ´UÆö[O0‘kã ep#˜J±ÏA0&Qi0±í×^OSL(íOcåBjÌ$ï 7-vZî°ØºcX/5L„UI®Ã^+ðà”¤Ôî5e¼IȉLüf_^^º­ëlAT_‰)L]nôÊÅ–±¾¸ù˜ÝÄŠè—ñ |U´ïÁþ"’‹LZUŽÅÄYŒ.ÖT"9…bÿNQ¿­ §ƒ¡¶a¼qÀ3¦K‘>÷Dxì}}ÛvˆÛÝů¾/±ú;½½ÐRŽ7âx ˆ7*¿&'²ø0â8ÅÓKRéóÙú½2´CpˆÆ!¡{Á$Ï[¹JéÔæÜ#rÕ8è¯ú&yCDÃLI¤¬f¢øf´Slð™ÄROL0Gy•?šúÞ4íGHç’D‹ºñöƒñU±¬ÌÜ·Í”Êèßûº‚Š ÈÊøª.ë»Ü÷ÝÖó Ñ˜ûƬº¢ÁËêÅÈìºÎp°Q¬TØÄ??«ÈÓèaå&‡V¶²÷$ÊüãÒ´­iBWµ&#¸¶ÇB$ªãÍPxÝQ¸&LÎUÒqø÷ LÃ"Ú×M€ìƒ”B ÅtÚi>eé}Ê¿7Y–DÅÂË< vP¯Ú‚ÇbåïU݆…9pbÆhz¸q+P+Í|–>ÃêÀH™J œ9£x’pæœÿýÇ‚ažœS;õfÔNÎî—.dLJ¨o¤têŽúavœÄRŠGJ@‚¥©WH¼’ ÿ¯š)/ª3R(oˆûpm¯OU:=?Žq?œB›/\0åô;­•ÖàÔRÉe·Ÿ§ÃØâm&²w—‰l#ó·.騶ÙQ Xù&]|e¶3X ){žÚK¤ö%Dxsòðĵ—€â§zÂêK¤/Õ×sW_?‡„‰»Ýw0'‰³£ÒÀÝ1$k¾€°˜ÒÈBYšlÊHô¥O×÷I.À%Ýç˜ tÒNÊèÓ÷ñ…\'“KžO®óÃYäâœzrÙ†[ç¤ެ¸ØÅ-Ûñ)nÙ>Ï-Û²ÜVõC•·vPê%p}[ܪÚ'Ï0Ìuy¶21ómK4K©¥iN~Ápü󳂳a‰Bté\FùÇÖÄ…ûtò¼XƦšYå»{ØÞè"[À ŸäÅVT–»¢òñx”gÅ¡B<G}<IûX-̲†„ qã$¶=€Ä ÆpÉáÁäxHª# ‘[IX HƒK éS+XÌ”É_7l•[¬^Çè²:·Ø²Ó ã“ê`}Ì'¾Ÿ!%Iq ÿ›ð+@Ð9¢äxÞÿë©\ endstream endobj 1382 0 obj << /Type /ObjStm /N 100 /First 974 /Length 1961 /Filter /FlateDecode >> stream xÚÍZß‹¹~Ÿ¿BI4ªŸ’ÀÜqHÀØ~HbîÁç‚ɱv×pùïó•fzíÙ]o÷î4˱kºKÒ§*ÕWUj“TO%‘´ø«&iš¨6üÛSg5±ÇËnI”BU’ A“ël©bž:ÉBMTl ƒDPΉ˜C«c öÒXAcdKdj!á™7Ž·ߨ…„u»…fáÒ KtIÌ e-”X0ŸtO¬e |ÕñR›”ðÖÅBÂPÀJªP<Ã>椘@ · ¤ž„\C¯$ÁÃf˜™°)ƒy´à¥gÇDâ†wŒ‰¤–X•RØM)ÌëCêÕ7ÐÓ^a5‚ €^„1‰%“8¤Cz A’¤á‹שrØ”Brì“XÁ “˜Ö€·ÖÆP¼õ–`¼m<&îI»…³‹u<< (þ´g„áO£Ã¼%gØ #Œ=l´¦v‚-Ìl<ãdÇ@'§IØSZ²^9uØÔ ¼Ðà]/ÃÅÀäèšµä@³i†'TC©&gÒT Ylõ@JŠ]zøÏ0™õ£'¯›ÆIõæC|zÊ©ÂÍØ‚Jª\c>ÕTÃkp¬MÇØž*Ǻ Å8} c[frH:$ÌÒÚ0K¬Á†±}x‘Ñ Öhæl@ )"Cã ?a@1§]n‡2Q…±Zµñ¶á´¶yñb³}÷¿ÿîÒöû‹‹ýõfûöóÏ×ã÷ß>]üg³ýaùËîò}AÄ—Ÿ¶Ùþuûã{?6Û7»×é=7ÊîÄñ̃Ï„µ Ù¹BíûôâEÚ¾MÛ?ïßíÓöeúÃ~Ú_ü)•?¦ï¾ÛàOy™Þã,7Lÿ&mÿñÏÁÒØaÍó]|þõן¾­ËzÍÁ³Šb-3ŽÅ‰â«ýÅõÀù ÆóV#^áÔFü~ÀÞUo0jûúrÿñíHÛ×/_¥í»Ýo×éfƒQ_ø÷n³ý“ï.®¯‚e‚;ß„í®öŸ/?î®ä6žý}÷˧?ìKÃÜÖ-3§)åÖaÇ×.1IÐô‡Ç®°þ Ø€5ö(Ø$ø$Ô!ÜBøT·Sñì˜RTÃí°r–aÜ ·ûœÛõk·Ÿ DKnl7@šåˆ‘e@ÚŠ8ZÏôÀT˜{ÄÃ2ƒðz@¸ñˆ˜#!Éyz¦-â–+N&òCޤL¢«×C82(ä/t[È 'Š"jHç„;~ éâ.ÔDÏ"‚¨îA;ŸÚíý(ô2 4 < ²&#(X öžQ+`G¶¤Üë\"à²Þ¹ëHHpž#5¤f2Âü\5›ÐÃ@Ü×á]rí78Œ@‘Q¼,Á!kÆ!sŽBÇ.îËÅ¢'ã$¾îMb|ˆ"¼S|´ P²G™d„”øÂ°?QͪK¦yE“8Ûm^Q{\ÅéEY0ƒz“yÅ{SнŠmü{ËUzO®ÒósÕãøÔttâøG'þQ™„i”®šê¦S_Õ7*ÄéÔWC·ðœ4Àq?ÝÐRDŸÄÇÓ\°y‹ÜŒŸ“µf³Èúu4yñI!z4ý@8Óìq]± ·ã7„†ž¯#I€ áŸÚhîJ•W¼¸CÄ|-± ‹@BTÄ5~¡–¨ÔŸï"SÁ;¬tcºX„×¼—ð\ãÛ*ŠvÅ{Äe²öŒ7»8 -pÎ~`çÿA€Peh“Çg,]Z¨j½•±:v^ç=\%6¯h¨KŠ/ÐÓ(Ñçõâ»´¶EÛ¸ûšUdÐC£ÆáŠSÒÌHQ{u:óSÕe¶ÝSfÛùe¶MÙͦìfSv3]õ5¾4tôOð%xKP]7œ&G½Tª>gV;ÁÎQãÚ ¸Fd¢ç"X¸}ÁÕ¾‰??Žˆ ª_€p/¹=²í!d35öÿIö/ã endstream endobj 1463 0 obj << /Length 1847 /Filter /FlateDecode >> stream xÚíZ[“›6~÷¯à)Á“XÕÑN3Ó\gòÐËÆÓ—4³Å6^ÓbØ®³ýõ=Bf/ØëÝtÚìÄY:çèèè|cçÂÁλÑËéè›·œ8„ _êL—ŽGÏ—Hrgºp>º³¨È‹,J.Æê)÷u:߬äŠ(Mž›¾³0ƒ<47 ÄÆŸ¦ïGo¦£Ï#j°CŒTŠ–Î|=úø ; èï`Ä|ålËQk‡ ‚¨'¡;F¿Œ°57Í•¸i.Á0E Çqn>?‹ósm,O6Ç Œ(¡ ­øØŒ¢-©"«Íò>A#IUC)WÝ5¹kïD*„ s&” )ýÊÞìzƒ=Ä”8½Á΄ûˆ3°Œpð¤4Ãr2žHŒÝgæ’S«¼2Ø®F™9¯Òdaÿ!&0u‹í˜`7Õ7¬Pð]:û#œ¹ù.H¦7 ‹M–˜ÎbVù&.ÜøÜ}AÖ+rØ™3;ñ÷`S¤OµåÚÔæò¢$*¢ ŽòpJoÀºà/»pLãì];Œaó$lžô¿9”aŸEÉ- Prޤòn çNޱoÚ~OCaFšjt?‡h¢‚U‚³ÐYöJîFqëê°ÂÈÇ>)Êz I9RÂÁ÷íÌMh!JëPÐéMÎÇ2°¾oÇ¢é| ûª~×…ìFBaÄLjõ˜I„ÑŽr÷e<ëè¦Bàð!™™ØêÙM|zÀDY.™×VVž †·É(§ÇmÞÉW=ƒœü²ÞUÛ™_“/nÉ Žp~þ÷³ˆàJ ÈBðTR pQÃiòoƒÓ䫆Ó'àô¬ÄBij` À¼É6ÊíÝ?¾¶Ýa± ÃÄ®q×L0 ™kÚF™»]Eó•ùn½É ÓZcŠÝ¿ÆD¸aGc¬m+“‹bÕ‡§©ek–ÀnpÍxÒ«÷koÂ7Y–f}®ð8òêèŠr#5 †âµ` yŒƒ×¬Ò¿õ¼ú°´#𺡦ƒ×Zð`¼ÆÈSÚJ Ôs“äZ=g$°é‚ª’—îñâE'b\åXb³n«g—@/!îŠÖä.‹ïC³y,+ð·`tP†¿#Š2v(zaxòÀ„/ï{©T¯©ú0š=ZÀÄînI3„Ùb0¥íõƒ‘tøÉÜÏ ‚Iÿ4HÊ•d“TÐ4KÓø®ÐÔƒ* ÑÎSÌÒÂÉ·à¤ÇÇV‘Ê€ifxwWž¶`7Jë.S}a®º`›iba Ç4ª ž‡¶£HÍ•<·SÚø‘]o+%>äåFÞqÞo­@JÖN-AœùM@ˆ·XÃtUš'•›_†sx*47ë°X¥ Ó®llOb®?_Á(Ûfæ’&ñÕwº(â¹Ë4ÛFÍÅà+4ÂÏ›hL€/|€±E[é<ˆcPÛ㋟Ÿ'iòw˜¥U˜u0UF^yÄ:~¦aSíÊÊúAÛM 2Ûjvð%˜ñUg¼¦Cp™cWy .3Êa+Õͧ_aÿ\n¨iâ²üиÌ|¸ ‡ãr~!=U-¢z2~ É:- D« ‰õ‘ä•®K:¯ïŒÓó“Öÿˆþ¸7ð>bû*WWøðÿöÝeûð×¶}ûÇï`6<ï!Áø‰j SÄUŽó4TKò~¦$ž÷õÀaûm [Ô¢J&§iE]dºŽÐù§"t= †ÕPoÅm9]rÇÈL^S K–é¦,ï ³¼q¨‹Ãy Žm¢äºxÔòç‡hÅ&l‚[‚Êñé× Õ‰+“š§)W²:tíÎ:15‚žê¼´Œ’E牸m0> stream xÚíZ[oÛ6~÷¯°‡È@ÍòN)À ¬ÛZ¬oKó2dA Ût¬M–\Inš>ì·ïP¤dIvœø’¬ØE“‡çF~IcïÖÃÞûÁÛËÁëwœx„ Pê]Î<†bJx*”Hrïrê]ùã¸,Êî§ÍÈ9ñÇߘh““¸7O䣾3Œ¿âÛð =iR~#F±“U\_ŸÆñ2ËÅv+LþÂè)…Õ±¢¦Wýe—–v¶5?.ó•îH Bvx‚±¸ÇÞX¼AŒBÈ„ ­ n®ÁÀ2¤ð$çˆr‡›77úÓͱÛ&Ѻ9g³°N¢)^¿£¡ ÅêFãb› HLIƒ– Ò âˆ „ÑàÒ%-Ö·1¦nôé¥IØN?f‹e”ë²¹ònH°Ÿ™—°¢‚Câ7l0ô³ñzRº¶³,·ýi%qy?”Â71~®ËUžš~[Œ£@Ý‚ qSD}EÊÒ´ŠgNùáß[…æÑbÿ³©Ñëß«B-*±`nÈ`š]gã4ÊAÛ%x Ír¡2Iù]\ñܪÍ.‹€H ÚÄô]”ÛM(¢nfáé‘ â²[à *¡»Ãj'‚Ýs,À ax ßm Ó&¼NðK^¡ ×$=^”ì)uj¶w(@½7¸Ëõ‘€QÇü !gËØ‹ÓÙý|I6|y"gŠº­­<¬k¬Ñ¬m… à’;¾³\ˆ¥cEa9w%¢€U¥(ÚuUuJ²ïΤïЀà¢ÃeZQf›Q>˜"ì¿Lo€…¡0=€"T+i;›•”Œ0w ùˬ ž€‰Ã;hs!i_âd ýSûj¦,Ħ®[lÎs:¼á˜=zºU¶U¡(äêñc °T4Ç@wq’ÔPÞ>kÒÓ}œaÄ‚c`Òóòm”: À[ôÜ ~i§¡yòç_÷ð©P@<´køçþ'íGíO§»²ØºlLZ#ãgÚkQX±oöZó¨˜oßhÁdho´¶]8ÀòÇhwodDvn÷Ú¹…9NËêDÿV»5ÛHÝÜ(ÕQ¯òYrɃç{• ¾¶| Içh·—ç]Å)Ä'¤ƒz0]q$aõvgƒ°Ðå<›Úr]—f¥)HßÝSPáGq ˜™ß+ 2…˜¨˜¶Lü!Ï£ûfJÈÁº˜vŒ ìT¶4øXæ:ZìV˜ÆºÏ$‰ŠBÀ»#€êÖyYšÜÛ0p=¡¼›†ñb±*O)]_R1Êübž­’©ýaì˜3à:4ðsãµ²?•÷Ëx%0\õjoÃÒ³! üÒ LµvâÊÌÖ˜ö¶&.ísç Aâ.ÄÜ–¾£qZ”:rd%îq™U±Ac¦ñÄÜL5VîœÃ܃5³©–æ¦U¡Ëõ<ß]' Rýν¹‰ÓÏ:/8’!H1òÈJa¦šêݶýU<á*r½<¸ QÚHƒ×»ØoJ8سÉ^ýU~±mm¼Àë{Á¼ÔSs§gB6ên˜*v¦ðU癫Ëõ2‰&U`˜z@‰Pe¦dܽ%®QÍäLÓæn±oN”ªñºêÿNpXÇÕ>ÿŸÛò?C²IêÀ@ªþ¸}ûÅ= endstream endobj 1488 0 obj << /Length 1981 /Filter /FlateDecode >> stream xÚåZKsÛ6¾ëW°—šêTÞ;iN“LréÔñ-͸”LYl(R!©8Ρ¿½ ¤HŠVLËN§­=#+`±Ø×·„½+{¯&§ç“'/9ñAÔ;_zŠz*HrïüÒ{çÏã²(ó8½šÎ¨Òþ/Ùb»ŽÒ2,ã,ýÑÒ΢$ ‹È6"ˆMߟ¿™¼8Ÿ|œ˜{Är¥ˆ`é-Ö“wï±w ô7F,ÐÞuÕkíqAUÞïíä· n‹I;bª&ÚSB ΰ¯— „À~¹ŠìK[zhÆ…}FëMyÓtMí[˜VbcD±6r)Ÿ\K/!öˆg¯ŒædG$ÁÖÐÁ ó"ϳܲtËè¯i¤EÓÿ:N'µ“>ã"ºDÿ Š}é;ú•IÂ<Å9âÀü Ž5¢Qq‡…&Ô“J¢€±C,0tBŒ:û’íSZ³`6ÒžÅйPˆ æøæ‘·d\+²ÿ´n ÆÀ(ÀéøãˆjeUüìÙ³éLbìöñ³}<ÏÒ¢<Ë·e…ëß±Àà9!c‚O IŒ`¢aHð ÇkþUšA·õÅs ¼¾3#KøÞ {­ù»ÅC¾â3‚JÄ!ÎG[|Ïí Pô·´ Äp ¤ð¤àHKi—|q‘DéÅ…Yp?ü)ø¯‹&£ÇZoÍ,ÞŒšø@ðäŽ'p4½5÷ôN ’Òiý,*·yj2 V.ÓÀ 0¹*Wö=[ö¾l§!hÆéŽì(nD\ºgQs-š‰l~ê¯4„–õ²‹›­ÃÏEü%ZŠÒ MÆ1ù›H?9ókH5•ÍäÕQQ•‰Š¡ù™ÑzÍð×OQ¾L²ë&õõç„yÝÙùeà†]¿.O¦B˜0¥äÁh‘­u.£KKeEĿɶ–´­(°¹ÿÈ<® kT –=˜ÅÁ¥Ô½7y¶‰ò ]Œä¡Ñ­¼ƒq£¥$ʨí^B.·é¸rÍœå™Bæ´¦¶ï"¬TË©üšÕðj5ŸÚX†6Vá”bÿSœmsÛ™åö»$̧DûWnx+,L·lþg´( ðJ¦¤&å*Û^­l×E˜$MG§¼*¶œ´ØD‹8tÚZ"´.cð¡2q˜¿CZèM m>ÂWT­,ÿ0w§H v îr®aâp`¹jGokš6ð:Æ£‘#Uy*8"‚ÄR9o‡rÖÊíûè,EBëv}¸ éWD7 ¾pññ·û¨æïP`~ïûX" ¾ÉûxC…ëhÓC\e6ðFøÌ…q›bÜg!¯NÑúçã'´ÈèPñ¶ën挰WÁ<Žá,F´¥oäHo÷á²fë㬂ûipNÀøŒöô9^ø°"`® Bœ‰:”³¯)«Ÿ×]eS´Œx_=tÀú'[j&™É±æ JQûRf™û.ÌMâ¶4û\d)0)»D3òô*¾½¹³[>>¸¯Ý»V{XŹ‚r_>N±ÎAN,uS¬«xY×ëŠÀž´ëuW1v+D«; VÀÆ6ý’_ˆÐ^Éï6XOŸÚg:ªì×ÄUöºS˜æu\íàÍ–öšÖE>*]@ ;°J(ðvÝ[g¯vFŒíÊÌ$\Dµ0YO¨$Z–h:ã˜ûç«hp> !ƒ»Ï—ÇW«r¶ÎŠr·nW4R48K§hlŸe@íîÎ3¾DyVŒ)«˜äHyLYÅ`w%?0œWužÑš¦]V9Æßº¬b°e†ªùŸ/«êôùh•þ¼\þ甆:wu× ñ‚‘0ý±#;”ÝHÞWØ=Á­6ò awNv<ÆÙýÄA)ÒR<Æ1 F TqëmrשûœºàvîÕ•v&¸,í‚ØÅE~»¸ 1-[\oÆ9Äíã±Á °ê$á€Ú/~hÑ¢§¸Ÿ´ðÛãà6€Xw^ ÞLCí¢ÀþàmT¿E\”M;[B-WÄì ÔjÈæ(Ø.Âv£æø¢hX»;Šê°Î·ŒÁQ Ûl S£Dé*à¥`H)r ޶¦iã¨cü­q”BÁBÝ'Ÿ‡ÿ6eü?£óÑûëAh) IƒZYg2KX/¬jÇC½‡žI¸ÇŸP8T×S-!t% Aæ#÷ÐŽC{óo<³þ˜úb|*ÛK¨†uÏ:¢¾ Âx4¯;†ñÚÁݼž^á€%=´ƒfa­zˆM,ô~çîP zhížgëM˜›}+“Ì/íI»m´ï éîLƒ»û Æiôq&qy3•Â\_±€øy…ÐfäÐõJ4EÍË0)ïŸqÁ¦h1·q•€°y&¿±-w­a(‘•«¾‡˜1¢‘} …ëæWi˜»»‡<Ú€Ú¿ 0ðÞÜÀ¹>‡VÄT)ÝÏóíàŠ(8j@;Wm·—ŠT $(ï׊i–š-û-Ç7«ÄÁëÖ½ ‚ŠˆÞÕâÛèØ›0Š«pƵØó,s%î­’tkÝ®vú¿[½4•jÌÏV†UÃ3·'—,Í´¤þóU¸)«+B¥}ÑDiulSQNíé¼-Œ÷%aQô…ýÓø¯ endstream endobj 1499 0 obj << /Length 1759 /Filter /FlateDecode >> stream xÚÍYÝoÛ6÷_¡·ÊÛÄñ[ÒC ¬XWl/ò¬Ðu™È±YÊ$yN‡þñ;~É”,'Qœ´K‹:ïŽGòwÇ#®¼½>Ÿ}û'!(‚ç«€a†X,‚8•Hòàü*x.ó¶ië¼¼žG4NÂï«Ëí&+ÛE›Wå7†v–Ù¢ÉÌ C±ù‡óŸfoÎgÏè b R)"X—›Ùû8¸úOF,M‚æÚ\Dc í"øuöË [[±o³Ä¾ÍC 6 8·F_\TõÅ…²†(}vÎf)Ó|` í ‰™cZ6c‚F’&ž ¢=´xhn$1JxQ‚¤Lµõ1sF”Ðç77ˆ87áàEi¸2sqøÉ<ju÷Ö ¶cILŸ³¬ÝÖe3aa»ÎTƒ«Eíò&3äŸÏÌs™µ»,+ K»›Vö‹[t°ÂMÃÝ:¿\¾Í¶i Óz1§8ügNDhÕX},lÛ*²òº]+Õ¥þè*à®QTàp1êþÅ2v^{·(¶Ù›&kÌ1Gq7Syc¤Ö Pp…´¯þëëÀ4ÎÞöwˆL$,1AB¤wï’aÑm’žˆV‹„E.Áì;Dà€ÆH¦ÔŠ84íâ©I&ÄW£èœEs‚ë,XJîî‰âDY »a®º (gÞþÇ(Å)Ñ ôa’6‹íþõêU7" &ÂÜÃøXËîQ@vð^¯òXvm¯³Y{à}hú{ò5,W·7AN²´ºz­+|10ðAð-cé×WÖĵìУì=óéšuÇG¯žz¨TÉý>E ˆììF„!Á-@ƒÛû¶&YÁO‰I$L² úå¡nW«£Ø4ìì^ù=@†WOdÓçå`u(œÑç2ÆaGÊ®„›ü¡E‰¢°5Ä‚ôÙjJú÷ÛAªdŽgöÄnŽØÃÜP˜¤ÂvY˜_XÐêÈ<.­XØ3ü²Î³UŸtS5M¾,²~š–ziÚ¾úÁ|ÀT¯¹­Ž,Ìc)\~SXÞÊvæû®¶Q¹þ6SLå<·æÅætº®bž*ÑÔ”Ä/v¨/Y®Þ{y«på¾rQ„QÊ8¬jõ”ÚÑðºÉo-}eèzEÔYž¢ú,&BK;¾nu9$b‡ïæJ„™ã5T<ÆYÍ1ûTu$ï>š¸rÈ[Å}y+A‚tð?µ)Oe'¡6I 9Qw¢ƒ„ƒ×I íiñAÛÈýÜ5ÊÀ(™Œ×l†Á@”$ê4S«/u^ÐxþÂÍ’|ºMšh—ED—4´ß¾˜K#¡ú0b¤ô(JŠ„ˆ(OF> stream xÚ­TMoÚ@½ûWÌ­Fª'³_³ë ‡¤m¤ÜJ}£©D‰!H@RpÕþü޽&a!BUHëeìyóöÍÎ#˜Ámv]eW_¬¥°tNC5¯Á—Œl¡z€qþsÑl›Íb=Ú‡üÓÓô÷ª^7“fñ´þc£zYO¶uücP¡ÜWwÙç*û•))C "ªFE ÓU6¾'xøš2ÀŸî«X§P{–ý¾e_3êi Aùmæ7£Û=dÈÊ€gIÕú4z@r/à DPBÐXy’ f,Ù÷ǼN2-‘”Ú/ÓÆ­ó¨Ùoj˜½‰¼Óâè‰>´,E5$Û¦DF}›Y8–Tª¶ÍJ{aÀ;ùœMlöp8ìZ÷ŠMB­•E4î°“ˆ`ø`¢üYîH“$ËÅâýŠ¢¾låUWê;9º–»Õ>cš¨°Cæ¾Véjå¾+‰þsI^Z,²V=[ÛéÐ/@yUæÇ•»Ä J³ÿ}TÝži·D€ýH PôÝ-”AgËØc‘}šÀ¾g^Ûp2V¬èüÑ<6c08†ANZâf΢fŽ™½íµ¦DÖ*êåI<ÔÖùÍã乩7ÑR%aP°ÖyõØ›l;8q7hÊ—“í6ÑY4üàÿ:Z endstream endobj 1526 0 obj << /Length 2338 /Filter /FlateDecode >> stream xÚåZmoÛÈþî_Áo¡§í¾¿½ NàöŠÖZ¹  $ÊbO"u$UŸûë;ûBŠ+Ó¶lå®A ær9;;;óÌìÌØ8¹Ipò§ ž?_xâ„$Š&Jd8MÛ‹Ÿp²„ù÷ FÆÈäÖQm.¢JÂx“|¸øëÅ›ÙÅïþÈIB2BÐd¶J¸ˆ•(ÆR"™-“éÛï/ÿ2»ºž|š½÷ô Q"¸¥ŸаäÉ”Dà“£Ÿýýê‡ !8ýÛ•]sq5‹E•†"CõKD¥)­ˆÝš Š4•‰d1ÃÃÖß_M¦TéôÍ»ÙÄàôòúúÒ‰ò?ýö‡ËœP-j`J4v|§’ AŒç»ØdM ‡äT"m prdó¢mÚº(o§•xH«RŒt´oŠö²®³»1®B!¦yGù#ØSÑHù Õ} ÑŽ6¤E¶o«›Á@ÕBvTߎó1Jw›¼¼i×£œ ÒZ?ÉIuÕjBtºjòv”›@ÒÓåú曟n³zÂTzÓŒ©‹+ÄeOýiTï /6P;9‚J,à”j…$ôŽ8pò\ç~¢vCÌÚq-“ØÜ›¼vŒ1ÅaÈ8iðE¯SÔ©`4-Ü“¥-Hä&æYF=KWU}¦¼„SÄ8ûA¡%ÄÞûMV.½\Må…²¿-en¶?@>!"ýe‘ïÚ¢*=%`è<é§TJD ­øùó:kÖŸ??zç¦" p#i¶Ùص¹ kB7±ÍÛuµlYûÙlcÏí¦&§ÿšP‘fÅ&›oÁ°‘‘àåúy6Â{¬æÿÌmƒ&SƹC¹­(‹¶È6E“;“)5Z‹Ôi¡HîN #gS;h²meè œkD99Ý…’šDht¢Yo'pƒTå+­Z?52×ù.ÏÚ<,Xçu޼3pɪ ¼J;Žóå¹ç¢H ñ<#ÄqïhÖ "df2Ýî[²ó¤_ÖJœ¬lª!®ÓC\Ÿ2¡½Î­dVçöéðae¬Ê¼›‹ÕÏ9³sÖÁ"êÞÁì, Ò™Æ~°¦ –—pG]σø,[”þ¹¨¶Û*Œ;·ë¬=ÀÖÜÚ,n«e±º;Bú¢*Û¼l†Ÿãäa ¾8‹ÀR!3Év»t7r™q†03#IDœ”@Ñ_yóч`¸åôé×¢½´Šõû¾êô™‰6ðU¸ÑŸÈØáíqÊ;¿g’ž®Ábçz-$!b<ñ{üjés €ØÕ`§(³–àW„% r÷ fô »Ö2ôÉuÄBš0Cä18zƒBÌô,î‹vf°A.–Á6vžÃ™©`ã:OV£œñQÔ?‘r¦€Taî­ÍÀZWGX‚râcªi4¸‹†@ýúõëã*AAÚOtÃB¼ƒ@›~¹ý£Ø?ù8•§ßEÌÃd‡‹ÎS-â„]i¡%Y€ÛpÆ1L_EÌN\„™gË—,|u$ú œ ÿcåOƒ"áºDBüÚºOѱð>zþF_aüµ©œ›stNqrø¢áà—•~t·!Ò_9$ZÕ¼ºw³œU¢(`7.ù ؽ0Ê œ^='ŒÇ£>Ö oR¸¼¤HD@‚CÏb~׿Ím¶{° Ni°'=Åj;ZoЇҧ×ÛM›Õí CÅém€>9’(ùél\éïÒñïf!ÒzŸ)˵uä“mzz¾C4T<`¥(áy»ÎÊ›Ü'·>;…œ´ÈÊ2·µ7!} çÖàüK=·4²?gQNw›l$Í‹ª^ú„Û X©Ÿ`…xx VæÉL%Tí×y»¯Ëèð72×±Ëýv¥e”Ÿ5® Ëv!“^B‰à«.—[¡s,6)ž[»E>±çÆ×}ðôï´ÖºàdäØV3.Çí¾¶yªxXãćç`M¾Ô«_%Ç.[´~ªámƾ>ãb[l²Ptsˆöàà‘æ\ž‹%è·²m;Ü7®RÅÂV7çN $L¯D÷§§*l"†­5¼Ì›E]̽@ò%ÅV•Ò¸>\¼íU¼{ÂØ«ðñ •@-âŠpKHß.Ë|å ¸ß¸rÎj9h[žÞ®‹ÅÚ‡j†¨‰³Í³Ò®$4…º”ŠPzÖÎR0™…[€R¨/áÍ]1Á®jš æÔC^#rh¦>ŒyL{W½)ru›†=³€]ú‡ê ›5Å¿»N+ðà]@–MéP éÝÚ¾…¦ŸMûî6 çMF³çfbÎ8ã韫6: ^±ò3wÕÞöζÆkÞ^/¢^G˜¹)©w}é"fÙì@ÅJ‚ÅêÖâGŒ© ž0sHŽ” À꼿?Œ(ÁøvŒ (’÷Î÷z\Á¡›XÊÂÐájþÃC’ð㎫öx–UëõQæù2_Z_T,4ô`ÖÙÈvuÞØºÞ¯ ÏÛb³  Ô¥Þ¡,é:~ÅMYÕù¹ÙQoæá ‰;fYŸÿÄ·«AÆ<•$QÐj…W®/žm66\Py°Ñzð¡Ù‹ÜóÙ/»]·ÌƒÊjR™®ßné<½qpršƒñQ4píïv)î÷Øo×ÕÙ½GF!e gxpîŒòôÝêlAþRqH2ǬÁT^tÐlÃ8qí†@3‹²Ôè¾T¬w…àðÔ†ÖïÂ-Luasçã|;Ägø<A˜šßyºvü²€„VA td­Gò$=<òH[¼ký]ïÓÆ¦:oïâ¾ÿளM¸b›71Áá®;½f“slô9í0Hu {¢˜´©°‘êœvØa›a7¬cü[·Ã àƒ8ìÿ¦†Á”B Â…òªMó²ÖX×–èÜ #a—1âE3ž}D /m±#{<_ø+êw‚¡X£‰!¸Êûm¯ÿÚù¾P~=G]iÏ|®MÅW„È÷GŸ£Ý»W•o’½¼=ýK˜°õ8·'ÿyM`Șµýó’4ü/šŠ] ´ñçïò8 endstream endobj 1534 0 obj << /Length 2060 /Filter /FlateDecode >> stream xÚíZKoã6¾çWèX³|S,ÚúF{(Ð4@iŠÍl„Ú’+)›õ¿ïð%K²ìÄq6í¶E€˜QÃyqf>J8y—à䇳¯/Ï>ûž“„¤… Éåm¢h¢´D’'—‹äjr“7uSåŻ錪tòm9¿_™¢Éš¼,ÞxÚ…Yš¬6þ‚!‚Øôúò§³ï.Ïþ<#° NˆçJÁ2™¯Î®®q²úO FL§Éƒ›µJ¸ ˆ* ãeòëÙ/g8ˆ Â_õ.ñƒ‹:œeŠ$a‰’ð(¥‡¹§‹–yEJh"­€ú ìæ2XìÊuPR0!Ýe, …¨`‘qe’ÛQÎÑQx¬ýS”‹èV™Œ4Öĺ•P«§‰c‘zç~7_UU¶ù |Ž?`RÆ8BÊs çÉíÒ*µ!ÌýÒ= ,ýÙ÷w×ÅÉŒ0$¸ö+¾}û¶Çr(&•ˆ¤n¹ÙµŸ‹¸U-þsËö(°,LF=Æ6t7©²µÕî*p‚HÁHØçñœzω9½9âé™Äx"†®·Æ|‚ÿ’Y°CÏv/æ qŠ/ž+ý ÖÁXJ!8gŒÒÝX{ÊÖêe‹rÈZÇïâ\"5¤CÍŽÈ%¸›Oi/ŸÆ'D ¦ÿ±l)ðdž~-ëÒnŒÿ½¯Íšp§~˜˜¹Ô»0Ñ‹<+ S×þº¼Lx¸+—¦õž ÅíÎIet`Ÿxca«•¥TÄ`ˆÎÄO_sHl,mñÛó'F€u¹Ô'%sÌ×úp†”:-™o—é&óÀøñd>ü}¦v1Öß×mŒñ1,>vªu)îËAŠsÄî&'ì“6´$ áÖ¥øŒ{>HmOzè>/š¥ùœÑ/ eü9·iº“¥Ï®½´'þÞz÷rŠì«Üð0Ž%ÁÄ=Ê6TÖÐ?6Í›†Ñ VÓLaCãÆYsƒýš;Œ¬ç×¥£ÒnZÏ©J½êd]Ý©NÚf)ÀqF½Òsèç+«õ° 0R)ºnÚ©ÛÃ"0/CW ¿ >psO^˜U9%bòÞþ3u,ËPrøÑmU®ŬÅ#hL@hp(ARïÕÈ©Òt(ŸTàlUÊÃÂæÏû|J­€ð/[àiKñȪJ€jiä±0 ‡ ûúêóëÑ%¡×$NÏŠPæë|µ^nüx•ýak}4Í®öAÌÕºÙL¥l€¡“g”jèwt0Nhþçåz3¦ …`Óô8'S¤-û¾›ûªˆ¾ íN¹¶jmö4*Çú8èZÈôຮ•zܵ@w]–ŠÒ¡¾ƒˆ,í¬Oh¥ŽÀbœ´q´ÏõŒ¢Tè¾ë-çÊd f^ŽÂŒ-í®œá¬Èw®­»@ÞHÓ¾ý¡’‡Fs[¯zR̤ “éÙ=Mw¸’HAh÷œóÛ3œèÀ°ž<äͧ…X9ØR·îƒVï×âvuаP¹(o+Æ|™Y”Ò‘gh.Ü)Îa“Pw›¡òÀ±\Û3©lù.)ó›ËÚ ¿õ÷‹²ñƒuej·ííÝí²NeƒB5¿¯ª!„ÝQv ­X¹]Ë“rW¸€î P¬ý°jòÕmc*Oõ›'<&cž N¹†›Sšù ˜n¯c(‡,ßÎÞÕ!_­Ì"ŸyÛ0¢‘€ ìÙ2V,WYв›Ì½ºÃöSûa S6©S` M¡ýÀt]ÚÖo} ì,Ó…ñkÃ@&àÜ¿úÜð*8˜Ïùÿù÷J&_¼ˆ½>XM?žÇN;¢>áXt»UÎm(/ŒùäÞ_51þ‡íý×$±70 ¥gŸ`_Kw*:UÚ±|”3 jŸä$B•÷ÇBÐÊ6|ª\ÃÅÆ;Õ-Ñ–Íõ˜8– ;¨0¤ùR™rSªxvR¡+«x¦PØ›ÑC–1Å9t-‚!{ÐÙ"˜ñÓB¡[Sð^.-œŠò¾ÏçAƒ Y¡1?̈²}ÈÂ~iUro_¸N]Ók À%ÛÈr­, ·¤zÖe¸í€l€YVž¹åÐ g7ñ! Öí¬‡k€ 6ùÙXýÞ…^;ˆ8hµÃ‘…µÃt&Ÿ÷«0‰½“¬ ÔÆ$,ü……üö®kÉ-¡ÎVÆ“ü›¤'gu¸½t·÷óbã@wHÊQOðhÁŽª,¯ÍžÃš®? óỪ*«1¯š%Û¼6Eoo»¹~à ÿ3«ÑÐïo y_‰NlF:bBîð~Žñö±Vö¼˜o‘ùLJ>¹´ÆfRMæÖù~i‘¦L=N…_{Ðä®{»68_$ähuÞô5yu*Œç ¥8}¥yDJ¤;Á)  |¤è€µ÷œà¶«ôð›çûÚø‰”Ôÿ‘×xø†ØÈ¿ª‰{nÛü¾ß6?ésüïz‹™'BªsìâéüÓP1®Žá3è|ÚçNON"ÏZ–úFêܼ/¸Ÿ¿ \;ºpî~SI!ò°ÖûþSp@iê˜Ï?Ç¿NeIPž¢Ðåä›»lí¡U:ÈÝ¥¾³”PѦԿDÊÜŽÝûˆ®µÁ’¹ºÂ endstream endobj 1546 0 obj << /Length 2111 /Filter /FlateDecode >> stream xÚí[KsÛ6¾ûWðfy&BñyhfÚécÚ[]Ïôæ@K´Ã‰T):nþ}w ðŠ%Qv’¶éÄE@`,öñíGš ~¾úþîꛟ$ #‘R<¸{D˜H-ƒ»eðnvŸ–Û²H³Ç›97áì‡|ñ´N²2.Ó<{cûn“UoûA7ïï~½úñîê¯+kÑ€†ƒTNÕÁb}õî= –Ðÿk@‰ˆÂ๵¤b„ íUðûÕoWÔív ÿmÜþÜ‘¬C¢™Œ†©œ–ªឈÁ9%!=(‚’Â2̉ØÝ×ÁF„2Ö]û¥2„+Q .’àaPr­ JLˆ»-*qH¯çÖÝ­†5)‰hÄðn7°zP1U¡½Ü·oßVWU˃ÐÝI\rxTÞÚ±D¶›Õú^¬ƒ‰':ÒìcR”REá/s¢ÆÒ?ÇÜíiÎQ2zýsܧ™›Ïq`ý£šïõàüÁÝ^3JeמäcLÉó(¢%xééV»ë; BÓS|§1Æn0Á‹jƒ œp­ÀêCb„‹&9ØÀs‘– žÝÞR;CK¢À2Ý-¡¥ØQÜ“k3¢t¿uC˜¿4ѼôfHŠ"‘iFlòíÐ~DÁêÌõ~XÏÈüUç&‚»Žà®%‘RÙY·Éf/’-GEgå‡Ä6yVBuÝùCÿñSQÀãÆÎ*Ÿ0í2Ôµ©ù·µÕwöoœ²Þÿ÷iù]QÄŸžA£ÈF»ÏiùaHy\.ÕÈ0­fñ¸’MÍw.¡'/A׃*o æ‚¡÷ Ú¹Õ’ì…³§m²ÄVdOPõ¡n'ª š¶Ê}þ^I¼>¬Ð°«ªÅ*Þn½ýôU"U•ÅëÜ•GÍ ÔIÌ7˜“ãdeÁÅ,ΜÒû<ËKÛØÉ­«zêöª’„‚;óÕnÃÎ!Ž)„ØÐ¸­ײÝÏéjeûïÛƒú' ^™ÙweRØÞ4ÛBpÓ´3vèßù|šx=<‚ý3ÑSÝÞ‹ÖQÇÒí”;ƒž¥ëu²LçÎÞXDX¡§›¸LVŸ¬¿Æî”]Îo˜š}Ä6ä•hø AT6µŒ„y¢5ç`|“à’`¿T&Š’ 8ÔxÓY¦ oœàqxÓÿÿ4¸£ñÊé‹Ã¹¦töm*TuØÅt¶J²GQE¾HJоÁñøÌNòzì$Fû˜årˆK½>àj0C0H(œ‚Ñ@ !º=VÒuOyGM¢÷Œ±s&^÷÷ýÆíõ˜;«LE¼ÜµMÊçÝ®í_Ó{ °—ö¥ôzLsBúùŠ€&»œ­}ôzPßI-Jb¡^ý+’H—“‹d“,ÀÚ ´ÅøYؿҺØ´Kûôû/PÙm1’f'"_ÀLð˜f™%U^ÿKH½"<©€l-BåÁí#ŠŒ8àG9¡H««cV€ÃILg™.Bq‚_¡Èm¾ €ò Ù•^$·~Ý’‹ƒ¯£ñ¿þU?5ߪA(ˆ좳Óðé‘k7~‚¦^( K†k»(SXNêBi8_-³ ,hNàà²*->·¢ (3Ð(Š‚°ÝŒ{7´˜"Fˆã×Ú–qQ+ÐäjTP“Ü0Ó;;ìŒâh1‹ü)Þ&êAÍÁî?•I¼J³d9¤HHtª%—Þ@W“ãè‰ ˆ,òñÓOi¶DNŠ…³|a¡LÅ€ !Ô"©"Tè1“Š ¦¶Àªâ·`¢¡XqÀPkÛ¿½dLÚP{ Ï[†¬Cs#o“ò©ÈÜù*Ćìi};£Û˜£8Òª¢§¥jÓë–^ÇËÄÒ›Ôç5yØÃ†Z¼xÖ¥­ ¥ÃÀ¶&yW<%C’'*j–--åÊu} î<‚G©á³&Åö46Êc5<6êÝ0Gb?ŽüÑg’?>[EÅ%I–ˆV½ªç6i+,ÐÞ¶ý´Ä¶Ò¬}¥4­Œió‘¥Ù¼Ê{Jy1KºŠñÇKyÆ£ñRž+>^Ê+£ö”òÝWquíŽ_ùd®²ôkw=\» ¨Ù¤«ÝYû ÜEj÷Îá¨ÝUË í¯Ý/q™àDóIo H:̃Ó@ bÌ´¯°›U¼w€Vîk—·ŒcÄ>¨Å_cuË襾±ùܵm<'W©ïKø&>þLßÄ«ú“xvÁ/âO »ćDNzçýâ‹’€zÌ)¿÷2ð»9ŠF$­‰â+³Z3~á ÊøpëMØ endstream endobj 1459 0 obj << /Type /ObjStm /N 100 /First 970 /Length 1976 /Filter /FlateDecode >> stream xÚÍZMo7½Ï¯à1Ù‡õE#€“ÀI€bv#øàµ cÍB–äßçgÚ‘FŠ»eu&{‘j8Õ¬bñÕc{¨ôžJ¢Ò=)%®É9þ·D,øÂz¢Š‘RKâ#•«†À‰]“7OÂP³$U6¤øF 3(2—45.!Xj˜,¡%סãÉ}èôÔ‡r+©”ñ§ÆÔ­&‚»ñ%ÆØâÁûÃGc Éá÷x¶á‹–8V؆©0Ó†cŽ1ç1 óª°áp½{¬¨ib’X ”™CEñf ÏÝ›†]ç:žèStÄ©a•"P%fé!sØè˜Å‡Ï³t‰åz…ËRl‡”X‚•’„ÂS+„0Gœ ‹ÁFY,’”cI[H É}Ó *÷ÂÆD01qKbD1©Ò0Ñ“4&*¤ª‡Š+LfÑ⡇ÇôàV¯xxI’†·4i•ñ„%m± £špŠZ‚c’'|OôdBcÇ@S2ó˜…9 p C1 Pi‘S,¨sLY 0áØšJ°BE’…øZ©Ç´1&4 xª0†ÈÔZ: øµiDQ(U}4LÐ d¢)$ð°‚ï­A ‰H‘1& „sH[“w©©ÙÁž¨#ž‚éôL0ÝÀ¹iA.Œ¢N=ÀÊ\$¢¨‘ È¢X±¤I¬x ±)n½lž<Ùl¿NHŠ„þ)mÿù¯ŸáÖsÃØåû_~y¹ùâ‹?UĦf>gU<„{V@Ë:¯ÆUsd̼"{ÆÏ+^¹,˜¸eqV¯Õ|˜gûËëôäIÚ>Ó€L9è?ß¹ôã ªÉô €Ù0ÅöÇ«ýëç»ët‘¶?~ý,m_ì~½NfñÛÿvøâÕv›íW°´»¼~,(ñüfûÓîÝþýÕëÝ»3ޱvoÞ¾úrÿkº‹Ö-s€D ›úö^]aè#'†þÓËË=&½8t¸ub}(l¶Ïßÿûz|þþíå7Û/÷WovWÃFy¹ývûÝö« ­×XË^pdbKÍŒcT[_žŽÀ=OÛoö/ö ÿìž|»¿üG¦òy„çæ^à,ùc/öÒ€g¾gÓn)bÓ`ÏYç«jfï ™æ•À’44«‡3“.°JU€>~,ü@q¢+bx‹Í†Eç;Xl·3ý(Ȫèl„h‚};¸ (•Â9NA.Øö£So‚óq~HÁ®‚æ+Ø+DÙ”%cç¬6“$µ®è¨2ޝ£ª–£ÜYâñÝdmua²¶“SªZî´@õP¾÷4;ÑCe”æõ(@‰jä¯É.<#¨iÛãR Å×TóúøTÓc†¹L‡[7ç:ˆ=J!x…~Bçi48øMëÊx=´sÇY„ÒÐàQ‰Ú™{t6h2“ýBë95TCa<9ÒÏ•ñ¹ÁqÄ NÆ–ìqxW£ÔF¥5ÆõNú‘>Ÿþ·£H­ÙDçU1£´yEtJàÉ:¯È½ƒñÌH­½²@Ô^¤.¢”[\q‹Rn‘Í ~ùdþ ‹ôöI,rsñÝnù-Ũ©[–Þ(þiw¢XU2×3¢÷ÿø¼¢àTdY°rBVÚECgÂõÿ¬˜‹–òqðHlÄÃ,6¸øO^"×»Kœz¡O?Dãvd™q9rxdtlê$´IðIèG§™yš™§™yÕ’˜ë;³|¸òA-DXu2±$æÜ½ÉÁ™XЗ-òcÍš˜Pc‘ ãú¨ç š)²;b+ÎêëÖ䈒ŒNu‘#kF„ ¶ À0£L°èéQÑ¡}1ü¯ÒÏ"ÎYk(Sâê™g)й·3ÆåGùvôƒQï¼È5Ãa çSMŠŒ‰Î™QX×qÛ²ž1aD,‡Ù£‚ó5íÜnp3ô†>îK‹[pœóÈÛh®[=g¶¶vÁ#Õ²å€R‰ôëvhÝn§“J ‘x0çGÖ¼¦#I-ÅÕKåxaÿ>ÞaÜÏÈë(¾F¶–H8„lWDŒ.‡ÏCå Û²Ò÷¶âGJßSÅQ‰Ü×**ÚF›W”^Æ=Ï’,^­8Í÷&7[˜½[© ?ºRã©Ââ©Â’©ÂZ³ž’Ψ_Zj4µˆ¨zûx…^Ÿùœ§·\º!ïQXE§+9^A)ê=-íA—{¼íàx‚ˆ:°ÁEæQJØÌ Aä+R@C3)¨l¤*‹ŒsœLÐéÁ ²n)Æ+K0l¡yECOÛ¸Ï+âÜÍ6¯Wq–¥ÿù2^ïéÍôa½™©ßÉx™º,™º,™8@&Љtê²”W½ûì=÷>âš[¼™G/!è-*’Qúù¹ Â~¼8ŸÈ 7ùo ƒxífýÔ¨e窴U¹@xܵŽW =~ùàñÂÒPÄ ã3–ϨÓ FÀBA‹=»û+Îç» fDÄãG2è¼¥$ˆǯ&@—ÅÎÙPTÆÖ–A©ØÆ'A‚º´PÓ“B PÕ"óŠ~Þ÷‹ƒSE•h o(þ¾ÿÞ\ endstream endobj 1562 0 obj << /Length 1922 /Filter /FlateDecode >> stream xÚíZKoÛF¾ëW½ˆ¬í¾—ÚM›Í¡@·=8>PÒÚ"@QIÇö¿ïìƒOÓ–;iÜØ¤Õhwvvæ›Ç…ƒ‹¿M^ŸL¾ÿ•“€ Aƒ“ó@Ñ@ÅIœ¬‚Óp‘VeU¤ùÅlNUþ²]^mt^%UºÍíXg:)µûÀAlvvòvòædòaB`Ç•"‚e°ÜLNÏp°úÛ#GÁµµ ¸ ˆ* ã,x7ùs‚½˜¸+®Ä]q †%RJĹºØfF8šìÎ¥ ';é=ØÍ¢=Ž ÅêIæø~hI!J·ÛÂP‰zÖi;¥å#b Ÿ£±Š•ªg”URTc|@ê˜Êýé|5*qŒ0nä9ÓOObP±v¬•?”kq$$ 愃æ¥[u¼hè° pX­µ,·y ñäíyûµÝQ$(¯<’A;Þ!ú£ˆÑZä×iõSQ$·Š- Ïæ”i>¿Ì’¥—sq;ª] çDÇJ °ìÏr‡Üt‘éó m3§R¢Ç0 HÊx,‚ã×&ÑñP*AG‘Ñ›$Z,¯ô{Œi®b—YZk©>ÒUé fs;XéóÏWYÕLÁQ€Fêñ˜P#"éàx€J_™Î  ONty©—U:£"ü8#"ÔÙíLŠÐšÌCèiìyGHÒR—c§gämøw’]é7E±-Æ´ŠRÐéù¨2á`q?^Í%ÆáîmT¹B!5·Ç€HmþAn*ìp!I¼I#üá !,šÞcHFfâ!8 )E<‹»¢Ý¥t¶@GHwCçpf*X͸ÐÁù(çaÊiÞ‘²ƒ@Œàüv=Êq'=aãÇÄE(ÒDTE>;½zõj>cÑv •ˆDÕK|ŽƒöÅnߣÀöÁ©µø=æžX‡Æ:éOf¥qâκË0œö˜í¹/0Áæ|Êêé@þN&ÚÃC̽6ç„!ÁãÏmïLé¡é(\¢­YÁˆãÑ£8ôÿ¥Eš7Á;h_|äõ=i…Û~êÀ„Iû„…^ À›C’><݃Œ@å!ˆƒÔ²Ç(–ª®e‹—Zö¥–ý*kÙ"½XïUÌF/Åì³,fãgZ̶ªXbŠ‘þKWOb?ŒE,x?iŒ½ÜŽsH:ôIC£ähßiT¸u®…`qKØ$¹ÁÔ­£Ö¡Cy7‹B‚Ž&4ÂázР”ÜãF؃Ô(êë deò>›tì>Ûè9ŠoâvË“â^N2î«Ô©gMÙ¥+{ºKQ†Z¹÷ë4Ëܨ0‘zÔ®Ql»¯Þ¿ç+}s¤Dâ¡Z¶‘ßÛÖ¢<‹úêðá{^"Ÿ«F ™(ãnC(€©þ,ÓWîí^Ö °y›æ 4}RWw’|:¨uLn°Ýš¿¸õ%VZ/ÊŸ¬ qy«ú½ªÀ‘vˆ °AÿËxÌhgˆ·þ\"8µ :Æýœ~oêDq7T Ȩ]¬ßr¬ßrBÃͶЎªš‚l ´û¶Z×ó·Î½íÄWÞÙà%™SáTî«®ÖÛ•Ça2DjåÕr 6޹ñ¢‘“r¸bÅ ÊÓ›³™ïšØ7²»Â8cÙ{ü=L¿Ã òÝãØÜÞ£°çH¶+´ý¨‹ë˜±ÏOwH˜æJGü9gg¨ç*< ãošd™Çyê/9ÝäŽ;÷í I»EÎoé+r'‚ˆÇô!ŒšvÒƒ—z ²Iù˜¾b»M·­X3þÒ}EŽa&T ßHcñÆ4‚^šŠ¡ÏžÆõy‰×@âxÔ¥\—ÍÑ¡˜t¿W;“|yÝï§{¤Ë"Í« '"ÛÉèãeçûô4=‡nOÓByØ?\økÁà§!Áç®Cùàû€¼Ïj»#4ñhêÑâ1ÏúVÔÒNͳ'BÌó÷Ü`úyþ|ñVwÙaOÕ}âQ¢]bÔì5—idï ¼Øºß†í§ñß)b—œ’ƒ;FûjÂül ÐWÅm¥ËgŠ‚*‚Tû f—2b~+ûÊXë›ç Š]b~ºDõCÄê9èa—˜éaøÃTÁ!\ªC~—:þ³Y#IýU\q8;d"þ¼N.+׸ŽBBT¼”ú$PüýyF±í«eiÆYR–C¡ÿUÅß endstream endobj 1587 0 obj << /Length 989 /Filter /FlateDecode >> stream xÚíY[oÛ6~÷¯à[m >ãý2`V¬+з¥ÆúöAIäD€ba’Ünÿ~‡"e›²a;)‚M€@:<97~üxHC”<J>LÞ-&?ý.a œRœ,–DPÂ(bœ-ÉâžÜLo‹¶iëbõ0›sc§¿Uwë§|ÕfmQ­ÞÝu^æY“‡böuñqò~1ùkÂ0%ŒŽQ90ªÉÝÓäæ+%÷¨ÿH(gÉ÷Îê‰HÅ€rI>Mþ˜ÐÝZyR+ã(³Ä(RÆb??æ+_†š®›ü>HYßáÕäm›×Anó |›q4(×qø´nÚ }¡”G±XµUt›±iïy·®k„# Ê|õÐ>¹Znsx4(pjýtħ´šÔ8·=åõ¿*:Y¡ÀZ4s|W´¿ÖuöOˆ¢£ «z—·Þ–Ì…Àµ#s&2þ——ÝÊ)Š¡Õ09w`»éŒÿô½¯ëª¶iR#Á0×Û~/Ê2¾ ê¬ÀU®ptÄ?„ 8í„.Ú‚fYã@H~œ2¨Ú0& a'Z£=;‚v¶‚Åû¥íkvÒ8¤!ÛMãõ€+Ñ®s²<¹_¿½7˜ŽˆAèþØáî0§á;g{§ 5 Œ`½„Óiƒ<Åò9­ÝåB4® Ѷð”ËØ*iãºÚ ™Ë±¹¼ùBæƒdv2¯žAfõ_’yu!ó…ÌÇȼ,«¬Mo†ý •¦=¼³Ç•dRgÿp~u•>\98N”j5Pü~ œДdñœRê®;N•™6¼S[ÅXÀ_Ê Í(6ɉ*Æeül|{1iÿ\†u‘¿2ŠqÐáÕpèé0Ö¯¶-\êÇÆ8Q§– ”= ÅðÛ’’x]4Ïù´tà󗢜åD8ÐXJ—Ö¨aÞoR6] endstream endobj 1613 0 obj << /Length 1596 /Filter /FlateDecode >> stream xÚíYßÓ8~ï_á§#=¨Ï?b;A€‡àé`u÷° *ÛºÛÜ¥II\ª½¿þƱÓ&ièuwhU©u&öÌø›ÏcKÐ%"èåèÙÙè—ßBŠ(ű -bHÅËÍÑyp‘šÊ”i~9ž0Ï‹Ùf¥s“˜´È8Ù[é¤ÒîcŠùøÃÙëÑ‹³ÑÇ3Q§•aJ$š­F皃ü5"˜ÇÚÖ½V(3%¡¡w£ßG¤í&ë¸I™Â„FH ÃÐ;ûçRçÖ l*=w­¤ò¿î§ÒÆèÒµÍR»Æ§1ƒÙÆ?®6•q­÷„0ßLsSøac4#g›²8ÜC¦óK³tíb±·aÑ ˜‘ÈNW…ðF•0·áÛ—6 ²=SÎŽ"èàæø,5OË2¹rZ=@}t„Â<Ͷ/šð˜c&c4¡!@&Ý;Õ‘‚^}ã,ÆQºó£eY”®oר ±¢qÓw›f™S|á ”I QÁ=Ç%ië˜Pp„š0Š%8[ëÚøú茙ÀJp?7áéP¦&¹È¼ùOc*]V@\'€Ý.21ØbïSáFçét®³ÔèÕt:äd— ï‰ Þ½Žj…©âM§¿Ç”zÌIp5¤‘Š¡½FÚñM”erIpq<‘„Õye’Ò<ÔùüaeôúÃX¤;Ãçp`7ºr@9^B£ÊÒYÓ\ëYjéøŸ6 »½0¦Ó4™Ï‡Ñërå$ô.ªAЖ,:Zã÷RNEh÷{ðØ h=]¯ÜjÈÏ"Å}G{… Ç’ª¦O½¬Û¨ï×´%oSlù¼#âºbê¸ó¦0v(³:ãZ ·Fn±î%‡jêZ«^’ºþòCŠ‹¿ôÌTc©oùuÉüºd4Hr÷œæ“u–ÌüTfË$¿Ô¶žd2Ø.u©“êKM…!\µ7‚£›p©°¢[Kì'(%$|[°RJLÙŽ@³!B€vÆ{™ ”æ…¦„4Ÿ4"$´VÚ,‹¹{?q¢4‡õžÌÝCâuh»¹l]?ç²{±7SÂZŒöÃíBL#]„O; 'õÉBܤւßÃvÄmhxRk›ò®¼0Ÿ7[†’B(y´ãétºË3Ÿßœ@1eí<á2t‚v 0Ö¹¯¬ZŽx(!XêøE„‰Ø]YtTD`°®3ÕE+¯àбCIËH «¶Xyi–AZ®Õ–-õ6übUG¶$ ;]œŽä­¿‘±{Ý0¦íÎ%ôäð'OžôÂc#ºÄ`ÁD»ðø…‰C‚ö_µýŽì£ó:?î&}'lÒ—%õF_CeOÁÀ‚…í©Ô‘¸A!ã=/ZÛÑ PöqœxLàt‚Eï÷&~´¾ ø”}ÏØ¸ï=$åys*²‰RØÞ6#‚rY²-qJîõ€;iÐFßdÔ½#h3‚ö_>£·¾¬‚¼~cí/Ÿ›„Üì+¬··æNÙ°:{«¥¡ ¯½3ìÎVAÇ­ÓwçþV·ÛÆÚ……ÂUÀ±¦,龤ÉÿŸ%«d~òÍp Ò«h^íÏÞ$¶EÇd›Ö…9œÙž¾yîÅÚlu}ÃR³µç¹b7ÀU)A,ƒW ßkéUî»ÓVQS¹—Ié{¹o{\•¬j–× ºuøÞÝu¸Ê)?r‡ C¬Âø&wÍ÷´› ”3ý›ƒ4«–éÂ|±›ƒ|p8VÇhE'l&yžä'Ðä äT¹Ù†¦mEû n`òE(ûÓèZ‹í¥ÙÿËè ƒÄ~a€g‚Òàl9h,Žq©“m•éåÒLV…½vkÏHù"©–éY±òü£Ë¢r¥ã ǽ;­]uãôÔ×'8=ßÝcB­´è•ývV®uxu•k7»vYm²/–£>K=u,CÁŠŠ¨g± Sà1&1s/~®_8£-q›¡;Õý?“EIZ]ç¿äῺy 9×'y%m:Š˜ ~]&kqÁvô“ŒÕô«%þŒ;f®ÄÉ̶³¤ªúNÿ ßcF; endstream endobj 1624 0 obj << /Length 1330 /Filter /FlateDecode >> stream xÚíYmoÛ6þî_ÁoQ†šã;¥ °b]Ñ~)–À4 ›Ž…Ùr&)u:ìÇï(RŠ(k®·Ö-,о{îx÷莴 ºE½½¼}ÿ“ ˆRœHÉÐÅ qÂ1×éDa%ÐÅ]F7YUVE–ߙޣW“û¥É«´ÊVù 7wn&-»á˜b~|uñvôêbôLj‚-‚(Ò P¦D¡ÉrtyEÐæß"‚y£u-µDBRÌ´‚ñ½ý<"]_Yà+e#-%Â;û&ß-Ò‰uE’h²Ê'ieòÚW7µšY׋„X‹8S5Jîe{1N”j$&«»Ì”-d}­æÙû¢€¹›6|¸Ž @«¸Enpþ:Œ’б¢iÁ±¶F*ÆD¶ bÊà’Àu+AÌhê!6]Ûœé˜I ú´kÆÎ ©1“¼. š "7yݸ²­—hL„UéÍœ{.(ðà„$4àçX1îrtvvV‡¼Á²«®S˜Æ¬Éhéd±€e´oµý`ì£Ë±"$: Àýäˬú¡(ÒOˆ$I«)àMqÌÔ€ÑQ¶£y¸I§OQ<ê¹»Ô»ûùø÷ƒ?öSŽ¥H¾rðÁˆ…S å´¿ëÅ`žJÔÁ8íaÀCH°´œ:Œ`摼§ø„ø Y?BÏ¿Ë÷³?7 W­`óæØÓ±úƒÙ>"ºÿZ»”” þI@Ðyö¯^5ÔB(šìQCûŨ-4FA ?)‰”ÒXKêV}­Šëk×4lšå%ĶijªB¿ýhL5o„nÊ! H½bqˆ†Y ŽAV ‘¦gEÍпNݵÛŒR¬T²Ñ@Ul›×xÕ]%Ñ»s?kªµ1¹›¬ÖÇz`+ïš]‰Ç\ÉèÍÌKÍ=bG<鈻ÓÂK嫪§W¦KcÝ·þv׸0ùm5o°ïòéP•ÀëCøKº¸7¯ŠbU EEƒ,me3ßé‹b1Ž3dȘ*‰ aŠå<›UÃ4Ѱ¹€â°MòAºáDo#‰R˜æ#(–œyšä;°ä½] (rª]ŠìÀfÓŽâ(kH4´Õ‚º!ߺÕJà¹n‡¬5´ ÆQ‘ÝÎ+ š¤4º˜[#°‘åbgk 3«ÆËUY…KÒÑ:[,üœ™¬–Þƒ?M±ªŸ*‡rÃuÈÎ4Ÿ>îݨf™¶[G&£þþ±^—:³5‚ÿpÎ}†LBmâ|øÇ"¥1峩 ΫÔo;U©x£JQÑ­Rp÷k]¦ìt[¦(ïÔ§ðX¦X»2¸ØÁ°¸»we ®LYôFï__¦JSe•Y~±2õ»£9æ$ú4´*ëyáCpAMûhÃ1äp>NÄêQ¢áHËzÜ£—e•Չɧ'eeýÞ¾¾”l.ž›šŠeï!.Ys -ïÌ$û@kûuÖp!u—ÜØ:°v7íØ®sŸ£€“;KØ!'FN ÿ[÷\ Döeœ;fº'FüÜ'FžpLYüŸ91ÿ÷m/ON¼ý]ÎkQÜ_ÀÕa)Ü-nµâÓ5;> stream xÚ•AOÃ0 …ïù>¦ób·MÚ#ƒ´Û´CÖe[¥¶cmâß–í€Ä…“í'ëù}VpÏbaÅü© º,ì ƒ©5êìÖrÛ†)ŒípÈfl*ùxj>z?ÚÓp—´Wßy7ù4äH˜g»K+΂â”\Iihz±Þ(ØE} óº‚ÏËVEIÈFǾƒ7ñ"Ô5æ­þò+ dmþc÷7m^£fJ´¦ŠT±–G÷ü˜ ˆ1›ifiWÌEîÇÑe¬äWRšŸ¾sÓt¿%ŽOø@yS~ endstream endobj 1647 0 obj << /Length 1970 /Filter /FlateDecode >> stream xÚíZYsÛ8~÷¯à›©ì ƒû˜ªI•“rv’šÉîÚzËä’`‹‰Ô’ô8ù÷Ó8H‘´âÈR2Gí–«D°Ùh4º¯ãä6ÁÉ?Îp|þ÷ŒÀ'$Q4QB Ãi²Øœ½{“%Ðß$#“{ϵI¸ ˆ* íur}öï³³³ï^q’‚Œ4™Ý$\ ÄJcH)‘Ì–É»ôåÿš]^MÞÏÞ~…(ÜñO©‚¾žøäùg?¾¾šPœÎ./ߺNg—³¡®ÒPd¨>FWʑҊ¸± çHhÆb†·c_N@)¾üçÛëً׳ëÙÕåÅÏ‘öÓÅõµ×¨5!ȤýùOõ2§’ AL¹Xgug/ûÜT"m òl󼩛*/nQà•¸Ï«RŒ´¼/Ë¢n^äÍuSÙl³O6ÁqÊÚ¿`8@!¢:¦w‘c0°€q;Žì®)wbz3k Ùrý}¿£t˱¶Åm³Ú+É ­Õá’Ê› ÑéMm›½Ò’†.íÙ³÷Y5a*½­÷™‹+ÄeÇý~Ÿá½hÏìd0C§Œa$%D ሃ¤…+z!Ša4ć_®eR˜Ä+ˆÃТˆtzB ÔjÁ(¢ºS:Äë”aœæñÙ€BÐ é<«m õ¸nÊêDu 8Jiþùðþ¬ês„É.@‹eЩ.Ã3[¯ƒæ(aJMÔzc›U¹Œ/Yå-‰Hse3ôG¶öâ„I3—˜~P‘fù:›¯m Ÿn­!RÍ‘P¤[1åü?vÑÔh2•ųUT0/ò&ÏÖym«Hp—¸7µ¦å­³Mleõךޔ†8‘C»~90 ’š œKEp®{ÞONËâÜ¥€&æ6<+»µYcc‡•­, Ž"§²$,e/øâÔð…ä¬åQÎcH¨ÎyÎ)Trˆ²õ1H˜ÃW?Ašw:Ü瘃Ë¥·4»µB%‹nê¶*·¶jrÕnVY»®×¥[$÷á5oBϦ ïó¸Øˆ„pÛ¬ª[¯¹ðóÏèõ`Oßv«Ù»;w±>œÝpãÄÑÕq3žj,¬ƒÛb_î–€„îï™$p4ÃI\¸œòÚ„9k–—#ÔMV5¡égÑÿVØ éÇøÙéœ*>è@gåw¬-uÝ–€&£È Hµñ^Õ6wë&ß®mF&ÕÞpž!„ Ð*ÛÜUYVm¨hä(áw›¹ËTcWÇ@øo·v4.åב;˜‹»ª²EÌ0SȃeÞò6¾ÖXËOq˜`tO/¶±òÚ^Ͱ÷]±XeÅmÔpªûO„X_%äyØ®8ÁHÁlG–SvV#¬ÁDhBaÓ6HBîxDN4FŒDy`'ü1›/–ö显ç£9ôéŽ{a-:%°mqó­½¢±ö]¦:Ü‹™í ur ÇÂHè4 ìFc£ŽAw;äpÿƒ}%ÙýĦ÷ã¤íÕ]œlŠ?2ÞŽ½ˆ<$¶ 2¹äG$û[ŽÁ•~–3ÎÝ]^îX¨ü¥HV0H„Ö~Ø{ÜáJºçDbxÐÑ?‘¸Ù4{7Ü)?¼ÈvÇxT{\Á–ïvpõkU:X)c äH;ÔÔ¹ßòU>œÏZH<~)ÞÙ-/FªvçFá5[LHº(«eGñTár NGD&U*ªÌ®Ä‰†‚ÊʇÖ-#xË‹ÆCÚÛÍu5Ü öÑZekÀ“{‘ݬå™ç¢¹!ãÿWN›vPÙn²ŒöÙé¾wõG°©k[;â„h©>uvODêŠû²9ÚÝáÔ'Ì¡l{ .¥Ð8c§àR"$@4öxª’ÊÇÜ ¸´7L—FÁ¿7.¥óU©ÿ3¸”PÆ…ü?.õ[^Ïæ‡ÀÅ”ÈGlp,ÜxçÁMçvÉØŸÀÄß.¬Wöã÷úkÇô±þ<'ôüë ȧ§å›ƒÁ4ÿ6’0Ž‘;¹Îë½à=Óâ89Â4ÑÝÝÏ1·CC͸„¹“Ãa)ÁàqB÷ãR£Z\jtŽ9àh|-8*Àœ GŠà(èp¨Ú‡£@Ï;,êØÊÀõY, áâK~Àõ‹zñáž0)LIHX6ol®l>DãQ³½Áéc¦õ^Ly,Œ¦Ë|ἑyÈX@™@ÿàn)< þ.,ªeø±Dtz{·×Ö´ÈŠÐ9ÜË8’¿Ñ€ç¶*Œ_󥃶S†¹ƒÄµ ü÷¹»èr|•Ý®³Eì´»hõ¹»o%Œšÿ‚1µ•œËàKx_B£C¿Ðnï¦a`±8P{Ü ˆ‚Š2vʖᮬXøsT'»Œ_n_ô‡óè6jìft®?þ'¨Z¨Tç¢/þ¿‚Àȹ ªkËWeÆãþÚ¤•j endstream endobj 1549 0 obj << /Type /ObjStm /N 100 /First 984 /Length 2072 /Filter /FlateDecode >> stream xÚÝZK·¾ï¯à1ÎÃzU~@I€0,l/tå…!ØØ V+Àù÷ùªg8û²ÍÖjfd;5ÓÕ¬âWdÕWì&©”J"Ö’”UÕäñÙðÏ=~$½B¨%U)!PjÍBàäECÔ—»+¾ó3H¸…i¹¯%¨BÂMº Zñ¯q\m’ÈÂK‡ÅÂ;e‡]\Õð"L4(÷í¯·p‚K OšCÒ¹HŽ¡ª·ÄP k=±ÖERí1žAÏ$|6Jì-î5NRJØ0Lš”aÃ4 [Œg5‰RŒg-IÌ’%i‹5ó$ÎËÕÀbZÕÓRe œ“Š….I+lmº\í„:î5Ž‘;î5‹Q:îuZ$Üë5¼ÇdÔ{ ‹ i—°‹Ik_ltKµP…î"µwH¸@ ®U’E!Hv½¦ Øð1âMË<4!Ö%ôð[«Ë½’0S W;÷3H5µÂÿÔ8bÙž&[ž0ÉåjÇ¢¸ŠÉ4‹¸5Ò„‰ÇU,šÖɰ[•ÖÈ’•‚uÕÈ!iO˜­ôp ÞE(a’-%ã­‰"X%™´²]y¦‹£°cµ„1†‰ª l NÖ"CŠ 4lÃ_HøÍ=l@Å:‡ Åx=€Ä¤±‘– ¶”px%5¹Ö€JZòº«Â-ÂÖ€’{ kØ ½ÄÎjØ–4ìbu^ìÂ+ì¶ÈõXˆ D{,…ï°öêÙ³gg›¯Ó9¶oÅöþ6m¾ûþà€½Á¹`W]¾ÿõ×WgŸþ‡Šæ™±\îé=¿º¼IÏž¥Ís8Ó°º—žR‡ÇÛ/€Œ+ˆGÌ~÷÷ÈÖÆÛ|s}õæÅÅM:O›o¾~ž6//~»I{S/ÿóï \xýóÅÙæ+˜½¸¼yû—ãþ³Í·ï®Þ_¿¹x·ÝñËoÿºøéíë/¯~Kçñ¶CflTWÊÞ_ÁÞëk  Í·ú_\^^aÐómŽ ·–·h<„½Ž¡¡ Á†°Øx8ÅâÙæÅûo–ïÿ|{ùËÙæË«ëŸ.®§Ë«Íß7ÿØ|uNË—˜ç ĵf¯±z-+6Šæ†•› Z_,Ay‘6»zy•ο¼Ã}o¯.ÿš[û,Ð>ˆÈj9V¹Á¼a¹(—¬ˆ¨±ãsâˆÐáx 5æŽý3ð@*ÊØå§GÕ$3JÈ@Y>÷ª§CDkË «][Ï„JR©å‰Á±úEO‡3eC"B±Ë±/DFf58ÒÿÜêGp¤PVïY@n˜ð;OárxGÕ"8‚Ä„Z ÖSs›l¦#øÁ=Ge‘!éY{8‡w¤K²÷£HŸ"wýXêV£;u‹@H-’öãwO‘Q‹(Gž*¢äÒ4UdS¤¥¦Y<×UЍÖ`‹sEPœ|®(ÈT`bÿcuÝíq]÷úÑu½ö]=nC°QàmxÞF·QàmxÞF7ÂÙÇÈ>Fö1²Ë!Ù€6¬Ç¼`† ë™a°ª¶Óçzã }d6c88ÛÉzÀê·CMN °G܃Ox$r™ïGEîŸ8Âõˆpϰ="ɾ9="Š~‚¢ß!¢(Ǫ3DÚáѪ¹ø-"ÚZ6û I\1Á[> =¶ï¬ÛQ_8£”ž½I’t~âǘšZSá[?VÀì'$úLÁÌ:ù-wõ†š9ëoä$H‰ƒ*08„´R|’áEA¢Á]ý"‡fùLì$mêóž4ÚŠjGް{ ìQ#ŸíBC #6Û5RÀ¢+"^÷í tì?ü‹ö¶’EßS‹®{E犠xh3ú Åhæm®§Šþ|u®¤„|®(Ëu¢F—-+±O ¯ŒvŒ¬a_#ÇY(ôT‘HÓ ¼ ¬NWžÞi twzЧ6 äQ³§¼Û,øŽöÇ!÷N!ì/Õ!´!Ø|»Ž ·ÿŸi¿¡(X‰z ú¿Áçî³rÝÏèšu4ò·¤¿m°OÐEIˆG[WäOAæzÔ>­@‡8ÚC?¦âß;8|rùg}\þ™ŸTþïNže座ˆ¥Í­ÔW(YY1bUT0“¹¢b‘ê‡èÞùíó>9@B¿ þÑ+êÏô»“òDôñ©tÓ;•nÚÍx3`KeÐJ´R­”A+eÐJ´RËh|H¢IHÆ üku”ïx+E2Áç9pö˜÷EÂKF3¸÷Câ¡*ÖÖ*?ˆÊ!ë·çÞ€¢+=1ñ¹¼g‰õ”ž”xÐÜ—sÝ/µH‰Í˹n›=^=`l(ÎêÂnÁº÷xªªyyìl¹Û ñ`P;FòßûØË:G‡À dö8[6”§8A­¥;ÞטÁᄣàÄSwPm­ÂêÀNέÐ-ñ"„'–hZR|ªÚ¬.3OšE(枈,W`Å ZÜ£)ø L–2¤+OÊî+.¯-Écª¸Ô¹SÕÿ f°ô endstream endobj 1656 0 obj << /Length 2448 /Filter /FlateDecode >> stream xÚíœ_“£6ÀßçSð6¸j­Ó¤Tí>$—l]^®nvÞ6y`lf†Ä†9ÀÙÍ·¿ ƒÑ̃eÑÝê_«Qc18x pðþæÛû›üÀI@ÒBÐàþ1ˆhi‰$î·ÁÇð!­ÊªH³§ÕšF*üg¾9ì“¬Š«4ÏÞØ¶»d—Äeb?0D[ý|ÿãÍ÷÷7ÿ½! ÄJ¥ˆ`lö7ÆÁÚ 0bZŸê^û€ ‚h$áx|¸ùÏ îšI{f!LT 8wÆ~HŒ‡Õ³;S‹4)í‡Ç¼¨-ÈbeTG^¹’AzwïsdW«ÒH2 6ÕêŠ$ÞZÎÎS#AR‘¦{œmª§Ð Ž:êwiYMš H{Šñ@íŠ}^8¥4îkžèD’Ä]Ik .—Zà K꾦*èÛšúØö¢=™"kÛWc’Ö¼#‰L…$„Ùšp iϺ+Mp>ùÞñps( ˆÛ qn^ò25ÎXˆŠí-{:i55ÆŠ¦wšY[lƒ©ÝYíñf“Ûö£ëÖéo‘ÚFw"hŸD Þ8GãrM5–Õ¡ÈJû!6op6œ»KšïËîB«5ç4ü×£íå•ý6ÉòÃÓ³=6ö:1EÒÈ£8ümEÁút?X™µÉYÓa™ÇuÝŽÈ¿/ŠfÊ¿6=Âu±~/­›˜Rˆ*Þ¡"NËd‹ÆÂ÷çDÈ')+BJꎮ5Ñ:LRpAaŽ•ñ¹iªò_WÄä.û±!_õl°š¾Û¤ÜéCâÄ<çÆµŸ¶OšUIñX›“{%+"ÂϮل> œ4;é{ =Aõ zž©“ „DœÙw£Ö(x‚q BÀ0Ù€1ßV·¦µ|ýœºÁF}dC™…Ùa–>Ø.,ÌDmpô)Ýí\[bßM~zc»Û8¯ÛLœ'îSl¡ãþ˜b›ÁSÖ­æCë 3"ôoCîSZž^tZ~îºsà›á%±¹‚IH•*"S×E9MÖ^ûB(‰ ¶S:yq…îv|V†½ô÷scpa Ôé&UßdCë)æHPOŠ)Á(Â'гÑ9„‘íeÅ7.nÞí[™>Y¾õî$c᫬Pæe„&|§eœ§)´FLO41Cq¹þp§Í-ήæëpföý]Gtþp†D ¢èB¢ üË"?D…²Ã^lvy<Ô‡êiOõ’úÆ ·køü’§õRÌäÜÃþá<ÙÙ£! 2S ÉJ¨ 4óD6²Ù£É¼É$Yª[²]ÕKÈ>¤Oë$Û¦ÍܽræÎÛ_Á§e\ÀWp¤¸òÄWØ\Òæâ3€}ènwuû|urž=ºÄ Cr½1ǃ‡ü æ6©“óÆ>”·Œ»Ê}2vézŠæìqŒÐd),Ò„ÄÓJXP]ß|hòñn¥Í-É®æ%$wifOeä)¨sG4”r¤åÂòFÀ`ž ›3Ú$|†ªÝ-Ö®nÏXyx ììA5¦’…¥×ñÈS©ÃµÍÇÜ;Ö‹òmO¹g´çÓïü¡ 4ZXép…‘¤ž*®lòhòo6Ó‡êgWõœT9æ&ÒofUtm"ž?´¼ ƒÓ…å—EÊS¹Ã#›AÚL|†¯Ý-ß®î/ÄwNFž?¸ C¨…iæ©àᦔcF>ƒØ‡òqWùB|Afž=¤° #b ËÎ$ÂÚS™Ã¹M&µãž“Ï“P}(n¡v/úl‰·É&ÝÇ;—‘Ýýý×iÎËM&Ò ËN ¢žVĜڼaÍÙLÞNô¡·eÙÕ»è1}9¹#!"–Ö©Kı/‚Ä&ç¦l’ Å-®âew²¸øýR„³‡0ÂdP¼°|aš !=•/LÛ¼`—CÉë¯Ôz²åÀìi=þ2ÜüàyÉ2ö¤—õû|—ïVOÝö›oü‘ÁäÂJ…EEÄS¥ÂTj'–Sè®Sú ºŽÒ³ä†%Ç=l…Š?16s×–ÿa¨øó†íO=Ýê-õâŽà¿¡]4Ùªòÿ?Û\:^šoñçøvð¨ã%ë ÞªM€2.ù5k®ÁÒÏÈ`Ó2N–~<½KÌrX¸UÑýs²ôùX‚Dtíã¹û¤zΛ­® 8”Éãaw|z¸>0rÛçܹ> stream xÚíÙrã6òÝ_Á7K) ÁMÒU™ªL6“ãa+ñ¨v&~ %Hæš"ãñßoã ER´dãL*S.KÍV£Ñè è±·ô°÷ÓÅÛéÅ·ï8ñA¡Ô›.<†b¾ðüP"ɽéÜû0º‹Ë¢Ìãt9žP?ý+›U+•–Qgé•ÅݨDE…² ÄÆ·Ó_/~œ^üyA`.ìϧÀ•"‚¥7[]|¸ÅÞð¿z±0ð ÕÊã‚ êK€ïýÅïØÉ RÂ_¾ô,póS‹³ $Ìó% ¥t7÷aÑ0ï°H1 }²‹ö8Աؖk§¤!„´§Ñx.|D«çÊ[ r®u…aÍô07µm¥G`&m[B}˜=ð|P15î$4–Ú°ö½`0Âܲî`€õ·ï$nóÅÞ„0$xh9¾yó¦Ã²/•ˆ~2Ô…¥E\‹^˜i;˜ˆQ‡1 rÍÿÀ;&Thj’9µ´1–ÉeoÁ/T©cF]öåYI-ë^z§ªŽzy‡çKܯ…xrˆìÃ=};Þ€…ïo¸xh'ñÔÎ)Ã<Åežé½Q»õ  -¥ zí@ëhniºü¨@AÖDeö0&x¤Òñ„I9Š ýíÒ¬´ˆc"F*²OU¡UbIïëA€»áicC¾6:dmÆ.ò¦Öbu¤Í´÷B¦»Æö›‰ 'FiEü_U¸eñÚý¹V«;•kæàM>GXàNüTZfÙ)1IÞBQ:·@®Ê*O‹! „ 'µ@ÿÎR5hð“°'‚²ÑÏÙ˜ŠÑ£ÒŸNív:§iŠkMk\\ÞŸ®m.Pt´Ä ²]7[I³À,?U†üPÔìªtÍvÎÏ% üf@\Z ² „È#] FIbU ö£´—Æ«u–—QZZÄ:ʤ­¿Ë{eöÖ®ñ™C»Ÿ à”ÖÑ¥í£ŸïL É:+b}¨:ÕÙ¤Þ‡š¸®;%×› i´§Vã"NºÄu^¢1Ñl–ås÷ÈÓÔ#”N$“=Öƒ­mœOZŸ×g&Ê{Y rÇCåÑ]¢ì“É\¨3—ÅÚ/ãÒQÀ±*½°*) HM¾/G¿,,Ù4 Ò¬ZÞ[Ø&HÃ0¯çC²ú¨c/Š“¥Id–à4Kb·j±ñ¦ó¼ÎFÏ¥. M¶‹]VÈ£¸pÑëMI'J¿:FGóx¦]0Ò{!eÌhZãíþ©óõÓ£ÁìC$-MIPXÔ,Jíà()2‹2¾×y¦y|ŒçZ˜ Ã\oò¦rúÇ8I,]®ÖI4sƒ•.Ë{#:îú°IËøŒ©ÊÝBµwrÜ"ËW‘K€Ö±ôİ„iMÑÄeàEskÚt¦w£vzŒ¥Þ´:³˜=ÜŽ/Õª@µ´m¿Wª7 ¤ÏŸ1Oô–‰—*@²V\fy­?«°FÙ~…ºåNØéVí*ŒwÚà5÷„[¼NTKU|Ê* XçѬl\QéH«¢Ù¥fÙj¹a5ße¼9O¤CSi^+v+®Vö“ÝWÀÆÀYó„’’cŽüÝÇl‚áÌ ˜*Êf–v=YóÝ_Pö¿_Pš3|·¬ÏðÃq‡±Ï]N$Æ£ïz%–Aþ¥Eù6.ß—«W)ñ'Î “Å‚’s—Ї—䃕ãkæzÇ}Ýß«O×ÁÕØ˜¾ŠÓòZ~)Åú‡KÎ.d’Ýž«Õ"þZƒ~øì½‹Ókv#^ «1ÓQò‚Ó%êšœÇïnÏâxãÚó&‡·ç6_S»/`¤+$4#v`³ˆOVÔ?/ùÞµ“ïüLqk8Þ¢ˆcl> ž™yþÙg–¯¼áÝ+>ø»uŽÖ&G´Š;-ãn³‰`‚¨ƒÂGÖÇMíûP§ 5tÂ,<¨ÕtW všÀoéþNSS‚ß=•*Jâeªæƒ-00#/o4… "T”ƒ}&¨¡«µý6mÆ];q:K*×¶Ñ¿›©©ê?•–<›Íªkƒ®H"De­žÉP#‹´»ÙÓ±£¼RÏÜ=HÎZÍÛ #Ä574”dÙƒ…LÕ­«^BÚYýX”Q^6OYª»±Šj¦÷Y¢&®ú惬×)Ó ïv9†{7º?Tw>NlDpŠ>ªg5hP;î M®µÕû2ý<Û¹¨Òù•[d:ClÓöýO”Tª¿?›i‘„/š¿@jÙ—Z­ÖåÓX ·¿¿¬aÁ°N=§ô+(HÌvߢc/àaá) ‹Ö4í–…cüÚ óXþÓ:>Ƙ`Š@æ”ÜÿÂzQ¥[f¯f‚³ž–»»Ü±§WŒë‰“¡ƒ±ƒ¦yïˆó`;1p©t¹u$ú¾¤òÕ¡¾‡Ú¤¼¯ŽõÕ±ÎéXnÝv«£ ïÃÏb[BÍ‚@ióY*o`t±©4ö¾kà^iW(¿åÙZåeëÔ]ÿ•esågŠDsÏׯ67’¶du‡üíŠç™‹á¦Ô,ˆþknñ)åîu$ ™[Gj^)ÐZs °»ºÈÜ´;ú3¼ÉlÚoaeßë Ù_PÌü·j#];QÞÖ,.vËÖU“}oL2¨)äsu¥ ã#^ ê{KŸ¸{ƒ †:ƱnÌ•<#ÒõxÌãRYpݸ#~]ˆËÛuÆ-ÛXW«Ë5ûfÜhS?ÅioÐM:Ké¿$-8Ä–È;Òïq ¢2 ‘M}¤?ïÿÛ] endstream endobj 1675 0 obj << /Length 710 /Filter /FlateDecode >> stream xÚÅUMoÛ0 ½ûWèhc3'Êú¶K»­@oks+zpS¥5Ä­í¬ë¿eÙYœ]»†‘ÂPïQä#ÅÙãì,9™%¾Idˆà”l¶`F0ã4hÉf·ì*½©º¶kªõ]– cÓ/õ|³òë®ìªzý>Ú.üÒ—­? @(²ëÙyòu–<&H4œaD€\³ù*¹ºæì–ìçŒCá,{ê½VL*a4í—ì2ùžðÝ0Å$L8Zf”)‡`c¤åòô´\SHЧ7>®­ï⦫ãJ¨ÒçøãG&TZ.7ƒó¢©Wá”=á5X ™GF}öbã€ZŒ.Äv G€p£ËÒ¯á…['.,hÀj6 iíÿ›Ýû>ç·!©FÒ·´š5”ÁãÅY² 9r=ÔmÄ p™‚Bo½Ëõí¿²#IÃŒx¤¹? 5X[lÃmêßt•o©ôÓ²ña#R ü³œwËçøÜT¡ÐCµIÉÑ1Ës½‰~ó ž`Ù´>Zžî«9e¹?K ¾‰å@T`¬¥$êOTôÐøy*«Gí>”•¸¡LLºD[ÐX0à hS¼Ü)¸Ú6Ê¢`ÚXpîÅfãLXÆ ‡¡ZvhuîÒ»T„*FàÆ³ÅQ䱪+pD”ByèÕ3±\ ³@óÐdŽ;ÜÚ=³ Zì ((nçŒ]èQ@ƒØ@ödÃWO?±ý؈[àÝnyÕù\sž~š`ôwã ‚[ñàÄòû r¾Oÿ±W¢E7̱ Õý§[½Û»Õ«ˆ?ÿ}*&'_#àI·)¡AÒ{{¯tl€0μ¡c÷¥?y*•¡Í[^ÊãyA"§¹Ù‹ÁŠ,G‹N§§÷e†éCGƒ©²I2Y®iÖ…W¤·œÖë¶;©ºË®ñå*Úæ™àé²l§s™ú fÑw endstream endobj 1688 0 obj << /Length 962 /Filter /FlateDecode >> stream xÚ­VËvã6 Ýû+¸«<§bùIqéäx:Óg¬®Ò,èX‰ÕÊR*qêÓ¿/ø"¹îÔ©»1!øÀ €=#‚¾^¸þ¾ °D‘bH uÆÐãaqÿ@ÐôÁZKtô¨ÊÅLIk´Yü´¸)_½Ï(¢k!*žP&δBŠs¬”@ÅÝ'·V?ë»åCñ1àfTdŸr‰…¤(eSøËãßÿðóÝ’‘¤X¯¿w›ëbî«Ô k–ÿ_Y†U®¨;›qŠ9—Hr¹ÎÂÙŇõ2e*On¾)6ÅÝzõ]ø¼ývµÙxg†ì96 =¥B{{©¤XPì=Ö¦ïcär gçZƒ%ÛV¶·]Õ<〕dŠU+NìMe7¶+ÍáœY™a!òú $ Ø,í SÅÐ}DÌŽp"æ“m_ÍLb€ 9 ¾Aå2:†`šÝÿå dO¼²÷¶mz;£ð?zDIü£ð¥TöÁ-Ó•AØš>JKšL!Omw¥çPùPNTž\ÓEÎK Q³trÅ’¾ «©ë “ý y®:'òäPÚ}»ë#ÐvŒ{]sücÉ Um¶u\/ƒ«¢\Ÿm4Ún-mïÛt÷\`*ø<0*e‚$USÙÊÔU_vQч5„ê$;`{sˆ’‰ ëÃ¥JAÈ&áöŸæ…ÌéìJ½kÑ×ã’’¤m¾pÉÕ6úÜ•/¥±eܰ/»2&ˆ« €mh1ÞòêÚ¸&œ½ñ!b¼yyLƒE$‡O6ÐÌéÛÆšªñwÿ9þ:µ›`As¬\sº‘ÈNòÚ—®});[•ñ»76W×­£õ1|V6$IiítN"ëj‡ »õÅt½Ë¯“Cü–>Dïe_mn[å8š ¸Â]GÜ0M´nv; hÛ˜:|¿V¦³ÕÅ£!h=CHNU5aµûÊS ò:ó>¼ <ÒH¢r( ÿÍIcãsÃH¿†œÀc‹]Ì{–Ã8e³qzÍdšNÞË&“³8›LW¶92+oH`“e³1?ö"/ìJ¨:´¿ÑÌéóUd˜Iuúzå:ËK[@çÐ9C‹真žûS_Ð endstream endobj 1692 0 obj << /Length 221 /Filter /FlateDecode >> stream xÚ•AOÃ0 …ïù>¦3±›&íu íËmÚ!ëÂV©í  âï-Û‰ 'ÛOÖóû¬à ^ÄÒ‰ÇgM@„MU1¸w° ¶1h4¸#ìä¡‹sœºñT,ØÖr}i¿†0F»Ëøµ·Ð?‡<”HX{·ON| JgPve$e Än¯à˜ô (,›¾¯[芭I}[ñ*Ô-æ½þò«4²±ÿ±û›¶lÐ0eÚZ' R\ËÕÙÄ0e(ÒX, ³tç沋Û8?ä±-XÉÞÏó•ü7}àS S1 endstream endobj 1700 0 obj << /Length 2133 /Filter /FlateDecode >> stream xÚÕZÝsÛ8Ï_¡·Ú;5ߤ2›ÎívÚÛ݇^¯õ=u;s²Í$ºÚrV’›ö¿?ðC’)+nl'×f2K ð@ 'W Nþq†Ãï_g~qBE%J9M櫳q²ú Fi*“[ǵJ¸ ˆ* ×ËäýÙ¿Î~žýí5' !(‚&ÓË„KxªÅRJ$ÓEòaôò·_ÞN_½œþáù¢DpË?! ÞÕÉ„¦ˆÀ#Çÿú÷×ÓW¯ÞXþ³WÓxš2¥(¥ú˜iRŽ”VÄË”F2å‰d1øõÃþûÍËéïÿ|óÞ Ü ^•ÛN–î݉$HÔ¿;Ëëª.óâ y-%Þ~G¤˜UÂñÞdóOÁ‘djçD®?±Àž‹Æ²Q¬aº\—«¬l‘aEí€:†NŽ€)µƒ= üAé†ã§ÏÙrcª!IL"AõÓ§Û¬35ºª†¦Îâ²åþ8d*;y¶e)Ò[²x‚ Ò5øö„pÄA’{í혈,E5†çtT_{AFŸÇèNY÷ +þÁ§1Á#cßúzk/×å"p”c¢GW›•)êÊófó9<Âמl0UIÎïZÕ-SmMã=®7ËÒÔ›²hæîi…±:Ýz#!ŠAb ÆC\ˤ«íß z~ Õ3ã¯yý¾.M¶Ú»’#!Ú‰£ˆ·ÿ ãÒx\4v‘”i»z Ÿ­LmÊjPÞŽñ(¯£ƒïP*úá °$E»0ÖŒw/8™j$K°¾ÀÝ2Áõm^_û«ùzµÊƒ¹Mj³ð·õÚ{Z«•L 00Kc;¦Àggµ;R (à|þK]†éF÷›ª›y£[Joæu {¯?ÁõˆÂ€µ­Ã>·'üÁ_?Åp±ÀvWƒ†ãaIw  ¶Èçu¾.²ò«¿__öÚß–æf™ÍG‘}3›h‚4\Fú¼³qo*H«¿Þ˜ý!)¥jФá šò^°L-D2"€r×w3¢Üºç•Å@ûĪiƒ§;æÎÓíí–§»÷›7êí†ðŸQ‰X˜ÀÀùÒWõõ…ËSC‹dUJ9‹0bŠkDµŠ1í½1çú(êfõ`N'z³¦ˆ±ÖµÀ苽 Å` 4ÙJ~«u&·0u–/« M0‘±w¸¥£*Lnïç™õG³ÀðŸeˆš-«gÏí9Zæ!ñ ¬¥ºU1—C¦+›çC’$â]|ã!x¡Ò]PÞ)¨uŒM^ÔçúBˆ!aqNrÚª‘©ç|/U£Ûë|~ímòßMU{+AŒŽmŽ­À!<%ó,•©½ù†j”¦±CUæ¯)æ&Ž[4úEûfË ËÆÃ ‹¹ÕÚ“®³1µ@ LÆS‚§òý;«¼ª >Ÿû»¼ðLnNzXwETe]€ƒå¹2’PùãÔºü°Pé9ålÅÊ“-òÝ¥$—w…âm¾\ú!g&D+Ñ÷:6®Í?¾¢Yðaè/ ô¢öA‚ñ<äÑ^ ÁR½ÕBh„EÛAD"4¡àЀBí­×Í‚ˆÝ©íR¶†I!„Éö0–ÎÉ‚5‚K“\J¾«°ÂH9l‚Öaîá*¢À»®Y²Ý x1N]³ŸíyxÓνxñb Cêø›‰n£= `ÉqÒýsCG:ù0‘.âªÇmÏÔtDy…}ËB¬dv·)NØèY\Üï¥Y^œ3ˆ;èµùrÎò¬§‚Gª{¾í†>jî“'4ÛË™k×üÝùûž= ®jw!OqïÙÓro— ~P7H…êÜ*ʈ;¢tª3vçêÝ#,° \ò#x'XXèòA£Ë8ƒXR¨¬›}¡_ aw˜\ ôá-`èo)¯/ì3_ÉÕl@¹)×VÆç|a3ᄦܖ.¯WH£À: O†2oDçA²¯€Ðí@ØÒ$ªdº]®{¦[j»#­OJ·``…壧Ûn˜ï›n)M¡†äÇàÑüiá‘…£ìbö@xäæ~HÁÑÓþ~X6êág7ôìч¦øñàQåÝâéù›¾ÈšõÊ‹‹Y¸¶OøEö´žõÛ¾þáʾ㠇ƒsÊnfb¿ˆƒ ¢SP9ì¼]fyØÊ³Û[a¯5ìàv/ lÜDÛ°YÕìT-—k·ó_°‰R(Õô”„M$C„§û e…dü”„½5Ìv‚ÿ ›HzëcÔ<-m¡³÷ûãçãÂ×Cªù£¢ôšþ }8Œì‚™¤±Ñœ@3CÃ6íXC˶µŸž è²²öÇ}Ð……ã> ;ÜŠ)yV¦ üвuþ'ÆÔ”ž£;øï}@¢2mpãç¡ýÓèã€;¶Ç·š_ ž“Àš¦í»?ìØÙ÷gˆwGÿæTœ+x}W7ËÜe3P5klfÏ 'íAƒ{6_¯ÔjϱÕBɪgb¨-õiϰ2‡9ö>Y ˆ‹ÖÚ/ÛÙø wüÕîV{pˆ­®5ß6†=c]_Û¶½9ÐñǬ¨=}ÊC&¿ ß)8bÙœN-óº^š‰w)O"r2ËÃÔ ¢u"¯LyXþæ'õëCµÊÕ£§ÿn˜ïœþ1½êŸ.ŸVúÿ™]Ÿ½CBOß~<}X?B’;8Xv"6MQº_ÂAIN¯j60‹E|h9_oÊ*Ð×õ¦×–jCSÝ?=_äîË™KSúcS{zmêëõ¢j*ú^ÂX6h=;þ\¨ÿE à¿¡ü7¿[8u=ƒŒ†Ïµèû?°1i endstream endobj 1705 0 obj << /Length 428 /Filter /FlateDecode >> stream xÚ•“=oÛ0†wýŠÛJ5KRü›¯ÙÚ ]Ò ŒDÛBdÉ¥hý÷%E1\/øòp¼÷9݉À|-nêâó§@)6B0¨× (#±äP·ð„^º0ß ›rÅ”Fwcsع!ØÐçûîzg'—/¦¸*ŸëÇâ¾.~4Ú ¹*ÔHhvÅÓ36ÆàÊhx›³vÀÅLɨ{øQ|+È9&ûSÌùÂù%yÆ^äyR”\«XbNùiûƒ»÷~ô9÷¢ Çâ=÷­ëûØPeЋ˧·ÝäÚ¤5êÖ9¶îš­áX2+†‰a¹ÞÇ” SUÁYø˜¦k8\`mø Çú…bCöÄw˜JŠ2X¼ìè?X~g—§yžixœ";,OcO 1ê +©aEyüºrñ9‚ cÉJÈùº÷cI:víì#íè¦áCI5 9M›m–™%ŠÞ ›°§½kº_„°S…™<ž‹c_KJð¼S§…¸Ü-Á1“êVëúæW&NŽæžµLJt»µûà|^p*p¹’Œ¡‡ÃФ¿`º$û OÑe endstream endobj 1709 0 obj << /Length 751 /Filter /FlateDecode >> stream xÚÝV]o›0}ϯð[AžmüùØVé–>t]‹¶J]¥9ÁMÐ0 jûïg0¤õsZ¥j/ñ _ß{ν#°|š ný=ÁvEA€` *JÀb=¹¼B ¶Ï‚JqpÓ¢Ö€2 ‰àÖNÁùäëä š|<¢` cD×€r©@„!‚(—ÞáçýÓhzæ_EÇ/ ÁŒ6ø3(%QÛW-þ|vM§' ~2†arE "òoÂ$ )pslÈCÈ u‡N/§§ÑìËÉy{nÏ‘ÝIv´b»5àö+·ÕÜ.LQ'yÖeÈw7Ø`(o‚i¡ó¤®ê2É–Ða9ÚÅ Eˆ{ì´,óò!—6lyïòbÈ¡ÈÐÄ"Üúz*D* DrÇQ@XZ&…²…Ôºj·èÊøaÈ[¤ºªœymh ¦ÎXçñ&í€ÆÇÌë«às¼C›BÁó·%~–Õ¦,JS?ªFRB_'AYú”y½Ã!§„C®Xýð3Ûžb+Ò7clYݘ‘Û¶ÌCöre‰–1Tv–é¢(ó¢LtÝ('‘—ô é–ý€åå×îÝ<ÉtyçìX×úA¨”wԈݖƒÅ:åõºH;‡›ÊJãÌzeèçü®6Õž{Ú`ʺóÛŸ©›tl*.^6’ÚUY½Òµ³’*Ûó±ôº¿Ú-7«¼/Èl³ž›®bÛtìÚáÌ4ïÊç]Té l?M–Ù[VéС­R;Û_^MDÚÁhN|oèV©E^%]5¬wì§&[Ö«Ncb¿âKÓ–ý£¼«†ÿÃဠãôéáÐôUÙ4Ùr³6Y×iñæ¾GݹèÈ|¼òMå=3:~TZN!còKË_.í,‹Owûœ²D†¯PÖ²ÅÉP؆†­J}[ÆüÚ>,tU÷#¶ÿ¢gñpzê‘èC™Ç—;F­Êb|· •|Í”!•$ T6§îF)ÅøÜ?ðE³O endstream endobj 1714 0 obj << /Length 210 /Filter /FlateDecode >> stream xÚ•?oÂ0ÅwŠ ®¾sl'+ŠÄxC !¸‰J\µ¿—¡R—Nw÷ôôîý$AÂBLœxy-ˆ°ÒšÁ½e°•AS€;À6Û·a·¶?æc¶e6»4ïCÚK?JÚÚŸ}=øt($TùÎ-Å܉wAñJ©Œ$ 4Øî$¢¾‰ª*áóáê Ð„lMÜϰ+!j>ç¯<] ûŸ¸¿iU…†)Ñ–e¤Ð¬8›žêkð·Eó±aÎæ_¿Þчâ³WDýãM§ endstream endobj 1718 0 obj << /Length 183 /Filter /FlateDecode >> stream xÚ]Ž»jÃ@EûýŠ[J…Æ3£}”18A®b²Pa$%lã< ¿96.RÍe8pã Œ'Ç·».nõèê)¦((¯P ”XaªÍP&ôÕs-\í?¿ëF«®ëê¡lÑ(“x4‰Ûp%jµê|žOÓû8]°»lS܇“e2q1xÒ1]?0¦å½S›~þ #¼ i Ë>àÅín¹ÊfzÉ5Δ“¢ÍT® )ÿ÷þ@05 endstream endobj 1722 0 obj << /Length 19 /Filter /FlateDecode >> stream xÚ3PHW0Ppç2ÀAc(á endstream endobj 1727 0 obj << /Length 476 /Filter /FlateDecode >> stream xÚ•S±rÜ íõtA31’h=InÆ]uŽ „tŒ%H$äÿ}Á%öÅMšÓÛÇîc»Gш(:d·Möé«`ˆ1¢¤ä¨PA RTUª$¥@MðÑøÕ/ÆŽù ¯jüÙuÛ¬­o½qöcäîõ¤ÛUÇ  Œùcs—}i²_ƒ»(b¨â Ê £%êæìá‘¢ø;DI¡jtÞ³f$$#¼*Oè{ö-£¯{åoz ‚R!RŸ‡ÖŸô¢{è‚ ìݨC£pQû„ăιÄçȹ¾_Ó©M:Ú^(j}D½é퇜Õ8Å?(å>Êõ4EÒXï’„ùÛ ¶õBÍ­ÝÚTä–ðpàø† pVFg{S/z#¶Ûïº C P«8nN‰vvz‰ù›5ÃË>¹Ìœ„LÎðzaƒ­€¬³éØ Q)TDæçâr°÷lú”ÒÚ§{žBÉ“uûƒNºõ{fÚ£Ûü¾”pZ‡ùW~E]¢†ýykZ¾=WDÊ”¯tWMs½.¥€šúRWÒ4f«‹ßðÔÑWˆ:póö©8ê”ßzJYf´ö޼¹þz÷¥ ¼¬þgõßù{Jªˆª9*)ÁÝîD±ë{å#ö endstream endobj 1732 0 obj << /Length 181 /Filter /FlateDecode >> stream xÚ•;‚@„ûû[B¢ëíw\k|$têu„ (güû^@ «ÝlfæãP‡#Û¶9„D¨£H€¹ ´D‚)!õ®í£ék-Tìí†âÙU½Ím3ô«Y;Wm•Õ|Hø™IØÞ°;#ÃfWÄ%K3¥Óàè^ÓWaD(”t{ vbüSs™_~QˆBªì~Ó¥ ™V‹©ú’çÞ½]Bq endstream endobj 1736 0 obj << /Length 1542 /Filter /FlateDecode >> stream xÚåZÝoÛ6÷_Áa¶·˜å·¤yH ·C±]c Ò¢e&VgKž¤Äñ¿£H9–œ&Ž¿Šay°¨uÇ»ûÝñŽ A7ˆ w-â®ÿ´(\ ¢ÈcÈ“‚¡hÚºúBÐèïÁA Ð¼œ5EBRÌ<ã ºlýÑz=h½z+(¢R24¸FBI,yœcÏ“h0BW7¿ô?u¿ ÞÛùfT 3¿'̨ÇLáQ9ÿ²ÿgÿàßÿ`Þhõõ…ª€á€ùÛ,” ìù5‚¹¯€ GŠKÌa¥àþ_çï_–r++L°ÂLqøåŠ¢ ¬?½k­)Ç©(…ô”ësÚÁZðbAèª' é¼ÉtXÄiRãöê-«y„À2@m®¬ôÁXgºÛcBuÂj0I‹ÜŽÒk{w)é„‹5*å%7ö.Ñ]&afy3Œ‹¼ÈàYŽ»=N#Ç>™¦yaGŸ áºKeç>NÜÓØ‰¸‹C;(à=‹µªWæ\‚6¥ám‘Úiue9ÅŠ‹jÖ,Ì©.tÖ¤sbæÞ@E¨®Âe>Ž£1È—Ä.®·¹9Jb¯Å¸zf•§³‰Æ¥ía ¨ô–€‡j ï+Ê‘$K%›Àå¿\¹Äm…Oâ žâ“Ç BϲX_Ú:eEL€ ¥+b YH€´äKÆ™F×r^ôØ tÂ’˜eQ]£À»eˆÆ)¸‡eˆB¬‹Ò‰õÑÏÝžÌ_ÜNŠxfàcîÀúf…‰ ݳoiœšñ<.ÆvÚKP­˜èûY¦ó c܈%ƒÂ‡A,QŽ¥ì’r; £FõSjW£Ø€5’ÎjÜñu\œgY¸øL$q KãÀ1 yÅ\¥dØi7²ÔF/‘{bþèŸXåoã¤8¥ìŒKÖ 0ßwrO—#¾ÔvCoH’®êú$4š¸/0ý*0ÂdT¹³Ðɨòü·[“~Ê (:ÌãÉb?Ë-ÝükÃF›¼ØÀÆf†-¥m…ëdÿLø€†Ê¹CZƒ9µ‡„ìîûýù{º¸Oïtæ\\¤ì5ÍFqf óåå4Ì]ð›ýƦE¡BfY:ž‹ÆÊ ©”£NÝåÓ³ù¸&DÂá£þ.éOÙÝ^‚÷äëÝ¡óá¾3ÍFaˆ› æY\hã¥|'6%¼ö~ãä:ͦ¶||C„êÍ%ÅaýýÝqOÂÌÝ,’"¼Iª,`Cþ¥#}Rñc7ëøf\ìeÏÜÍÆ“8/Ž{c}Ê{kýn¯8oæœ0Ÿé¨øš`8±×¦*6ýóEijÄ…bÚ;[3ýR>Q`7‰VÈÃ89ûÍC›äµîA2h‘•Ø¢ö_ë@ q»y²}º<x臡 g€>Ù³ý4ÂaÏn'ëÍðfóÀsÂÛ¥1£DaÏãïÌVäì¥5³^R¶‹)À³ÏÿË]e\HåùA8ŒFúzßµÄ&µ "Olß#=yr_… §>«N2ò+'—òªHàUT¬RìÂEsá§/yÛo¾ýeë’…ú3o©…+Y@u½¬µ—õw›¶Ÿ4H‘ H$[·àë›OœäPç ’Q´×ê{_–†m»vß•ê>µ–t>mGQ»*=‹¹ÖIÓÕ¼ÝèÙÛâ%Ηûð½i—µýáÝ?$ôǸŸ“#¸?‡ÉÍzH«v£/wtùòC<ÚÅyÕäÌ&aT-Eƒ“ùÅb2.¾Óûȇ“;:Ï£8^=<øéPǃÆ¥"GBç¾Àù½½þùý²ê‘uv¶m77™¤{+&öRP;Ù·×ü ¶IAI#å™Bä µÄuœ„;,…Wáž½°ÈLâÉËà=@¶uÜÖóqZ}É€À»´‡œÇVxéJ'££d«ê…?þ[ÄãrÖ¨m.P†Õ·ÐBßèì™~uÃÃ-úϵ6ØðžØát ö^ èÕŸiªŸý ö mñ+æ> õoP`ãsâ endstream endobj 1740 0 obj << /Length 1936 /Filter /FlateDecode >> stream xÚí[[oÛ6~ϯÚ‡ØÃÌ’©K€X·îR`@—ä- Ú¢cm²äJršî×ïP¤]×¶”4[úbQyx.ÉCžcl]YØúåèíùÑ«Ÿ±A>çÔ:Ÿ[.µ\ßA³ÎCëb4Š¼È¢äj<¡®7ú)­—2)D¥É÷ºîTÆRäR¿Øˆ {|yþþèÝùÑÇ#Ã`‹hªìX³åÑÅ%¶B¨oadûžõ©lµ´'ˆº”cëìè#lؼ}"Bá+¢Ž­z:ÄÊàC§ò´&˜‹(ᬌS„¹«%ƒOšÑÃG±.&ãч±G">Ê•¦êD_ýLêÅÖÄfȵÍÄù"ÊAq¤ê~#–«XêŠY&E!ÍWaêb‘›šb! ]Z‰,oµ“­gÅ:“í¶ÕhÐÇÔ¤óªiü+ÈÈtñ: eZQI(²•ÒHV©]U4¬íxÈ!¶åbŽÒV‹{`‘[ƒ7Hx„ZÌåÈvù6Ø¢6FØ7$º¬ukjÃøRFÕ3°ávE8“Ö|#årn„ bLÁÆÖðiÔTu€Œ|ìƒPÇçˆkhh[7Zª 0r *5’@2—°±XÊBfA.‹ …h!“9õщgÃätëáÿÄëö;íÓé_rV4FÐTÈÉÎdÚ ™0„*Oˆ8ó5g¡œ·Õ¢ä'jzBM¹^sÚ–:ˆx´’5¢$*‚`÷{é —ñ¼MÉÒ uMP^uu ±FÖ„]ç7Uðâŋ߰ì*“…¦ŸÈSR+¶.E‰~¾Š3³†—¬è‡¨ž¦ÕÙ‡3t[ª-ãJTîÔX­j”܆7Û—šÚ©aE?¬ØipÜåSþ€Sµª²¼y›ÍIÛæ; ©ió–;Æ‚Î%óSÒlÔh#£¶…WY:bDáÌØw:¥x¯[´Œ}v§Òåv°†Û/C úo2ú—:­Áž'Þ!=7­u~·âí SÃàï÷u\D« FJ)-°¥‰ùv•Vm`ÃLòã(/ž.ðfi½;óX\åO}Ji‚@¦:Y”_é©=B)\«ø»ò‹:CÜU—%CCv‡­aB™‡\ê>`‰”Ùµ ƒd–¬\YŸÑJ4’ö¬ÚÜø³f,¯eüm7y\#>'»x>+ƒÊÇ7fûüвm4uxuªsúû K©ŸßÀÏÙzÚkraF%våkÙÕ­G½FsO0îrvï_‚˜hPÚ›e¬7HxvN›ÄåÉ ¡ Ù{(Ou‘¥KÌÓl)Šg·µýWBwð•°?R^·øØyuæàóG5øÃ¸ƒ¹TnD!ƒY§ë,XÅ"‘åïÙù‡_ç覯 fa„£ZÊU±â5À~%ëÜû¶8þG}þ;kšeì›=ŸÎ ,fMµì)j„µ8, |¤ýƒRИ"A\gÐØý\w‰;6²iŸ°›M]„)Û.!±Ðíw«S»U”¼¹^žU³ži´4jî ¼1n#ÂMTöÍ›7[OÍèÑ0wm:H#ÅòQ¦)¾qÁÔ#ÓzÂ~Ù8ߦ=vO#¬ºòÜ8U6ɇ‘o–p·(cÉæ*h«z`†«{ïZ4w?m½¤¨/ϪSõ£áR¯)](ÃKüí[„C”Š·#æ‰ëóöžwm²ç®Ì !j5O1~ö0mG@ë6Yí'¹ÆC;ÀéxQ6Ðò(?ÀE*]º>b.»MWcä«Ee®ÙµÉØ+Ààù.Eš ™Èü€6 Pf,E3õâ–Ð+éúj¡?F‰œ)‡zLg‘LŠGå'ØkÇd´HÃ&C3ÏÖ±(Lò¡«Ð¿4L'ëåTffܵNƒBW´’‹TÍ‹4+'åŒd0¿ŒŸäÎÆÀÍHŠÙB—€Œ.¬Òâï1Èy]®«Áb™Wu  ¹L³Ï¦ÇB˜E²‰ù4 £D¨Öe`–‰Ïc‡öIÔ£˜!â÷90 ße['œÏ‘O{åéÕ†©Ÿ áGÌÓ#>ƒ†?TBZ‰¥ ÀCØ”“V¤«}–ôCnD•ÖÙüê }í]m:Ô)è…`#e¯kK¦G¼J§/ïÒÎjÉpj±QÏc|\KKÛÿr¼¸hÆn¨hžf{œh¢Ã#6ºsZqÀþWý7™H®ä–TÉàEïÉ“4Fï‘3jÓn¦ÍñÈ$Ýîo1^ÇØô"ºì“îªÝ`ýs$ãp+ ¶ßˆû<_&†Ð†lÎÈÿ,Ùüǘøº¥úüò?žï~\ˆU¡¼CåKºʤtôNÿW£¹W€¾þl%á endstream endobj 1650 0 obj << /Type /ObjStm /N 100 /First 974 /Length 1868 /Filter /FlateDecode >> stream xÚÍYK·¾ï¯à1ÎCÖƒU~@I€0,’,tåA ÄØ V+Àù÷ùŠãÞì<´Ó;Óø²Ëž.’ëñU»i*©²r’ÿ%9¥ÚDS%Æ@5‘Ĥh $éøEkj^c@Ék§®íKµtÁÆjX6^â±Zè9÷±f‰Å† (Z? KšXŒð‡\ãD…b¯&‰ªvìÑ€Œúk1ö°’H±^/˜Ð*¦rLÝîå¨uˆaóDÆ€"¿™E,‘WE°E'ÅV— kríãmKÌ1·c4æº% xxäÖB扽 ¹ž¸Ck+ÐáÐ/ô&D{àØC'éq\—$b7×$ÖÆÜž¤®àTÒa‹tïZÒB¡€^“V#NJ;ô‚Qt½'e‰½z±N(DÇ):V1‹ý¡Uía +°q1¤îÉ£U3#ÃV$5êC¾¥Æ¡cƒà3-FS̯†%aTœ¦laÔ*Ø´ÅüZbÐ+^@}1µ†‹Ñð(¼õ‹ éXo9Y¡1Ò„'Ža bdÉ(€|Ó˜¡S¨ÈØ]mɤÆ€bâ‚SÀßM=&PIÖ8ÎCÞc$ÉÌÇož¬oçb½¾n\“(@á5âð*æÂ7N‹Ý“³”ŽAX7äÛH¼’qB@u'dHµ€¸d #U¹Ã! f¾yõêfõ}ºEˆ6õiõ÷ü:€—ÔìÀp÷ù—_ÞÝ|ýõ™z&¸ëIÁª-ÇÑv_oîÒ«WiõZÂle;ãµÐ ‰ß OžÞ ²'Ü>„K°Nph!°øê‡û͇7ë‡t›V?|ÿ:­Þ®}Hû¾ýïÖxñþ_ë›ÕwÀ°¾{øÜ2 ߬~\Ú|¾ÿ°þ´å ñÛßÖ?|ÿíæ×tX´+ŽÝ ~è©¿Ã~ïï±Hp]ßÊsw·Á¢·[ Xƒ·­Ó€¦ÁVfáXäfõæóOãù¯ïþ}³úvsÿóú~à(ïV^ýeõÝmý ¾ËÁЦ’)HLZfX¼Uä¾j“VÚ¼Ý$XìŸ0óãæî¹Vù*t¸ ’fYA¦–;xo&]‰y®±®9HƒKÍá1Î,\O!ñå¬ÌüZ)Üt”»ë Ô–‚DšøºÖ’=h*¢`Qâ¬Ú_ä&#æUŸÄ|ð›eƒ‹’ÃŽ l¢'í³Èa'êŸ!‡ø õC>Ý^ÊÚ úV¦ÁÄmâƒ6qF›8£é4hKR#@ ŠdõŒzulVÂ;=—¢W¤ îŒÀÔŸ¡QÆú(ú,g\)¤9ÜÖ' Џ4Ÿ dAž@(f‰Ê† LƒÒ±tp§¢H¢Ü{¿"curw¶ÂÙQÖÔN9ŠæV%×bW¤,‚[Fí‹~좜{.àEyÁ$WtWÔÐY)Š|äXÖ\l›áS®©ø‰Gë$@feïð—hŽ2 rÈâh¶æ±øŽ ¼T"$§¥HFú=-HáñH•'Ñ/ÂÛ AX+šÒYeèõ*OÓÃLc|q¦±)¯-™3ÂÑD‡vr6ÑjîP4Øu„]“˜ºÀAìIÐA×ÙHúöýK “³=ÄýÐC¼]î!6yˆOƒ©:ñ©:ñÉ‹|ªN|ªN|ªN\u0”ëƒÕµƒ‚ÊIƒsOÕêmIjmÀô„ ‹Ï‚²zAO/ ºX•Ç5 Hå‘¢±*§»†‘HEYRõ‰8Ê‘0ÎÕ‘DKWM¥Fë¬h|¢@Z²@ùL "o\ßxv{5CÁvM…€ÁIbð ü'T¥+,„"É®§j(…üê2¤ ŸcÉèeA«ª`"²½˜d/zGvp›Yí¢¿Ee¡rRpp7ÿ¾oÉ:f¢^ÎÊDO5Ñë™™÷܃X)Gâ/:ˆ:H©}ʉ}êØ{›¶h–|L èÊ =I èèšDÌÆÛ€Gã|3ø·Ž8£zEQ70ºBîHàaGF¢ø -Xj©Órbe´§d uÑÔúw?ÛüUÍ_ébóW¾vj­~ä íòƒÌ¬¿vÃëzö}'yrâs/p|:,‘âKì¥Ç§%ÒÞ“HíR}R:¸VˆOß :ªããü¸gª ¥ZâÖGsÓ—¾¼ŸLã ýï†ðùˆ§p9KÿOÈW/¦¹9ˆ\~™_wŸË\{‚_Î\{‚ŒR޼^zÈɧžo‰{A“rDï~¹Þû\½÷¹zߌ»šVååêÜÉÀ_Òíóêü >8< endstream endobj 1744 0 obj << /Length 2125 /Filter /FlateDecode >> stream xÚ­ZÛŽÛ6}߯Ð[d byÕ%oI»MS´IÛ¸@¶@e[»"KŽ$w³ß!‡’©¥m ð:<3<ähéêÝ{Ô{sCmùé†AI=æEÜ‹”"‰äÞzwó×?ÔÛ@ÿO%IzfÖΓŠ…P/¼7¿Ý¼^Þ|ûƒdc$QŠ{Ë;O†ŠÈ$ò"!H)o¹ñþò¿ûñÕ¯ËÛßÿ,ÂùáLI=?”pzOƒ!3ÿöí›—··ï´ÀÍír¨g˜p’ðø=¹$Q1Ë',”^(‰´¸þúþÝí»åÛW?oÞÿüþ—׋€G±ÿÝûïo? ö|`mR³J2¢X‚«¼j@*¦~»Í»Úã>ÃZu§Kæ×پΚ¬lÓ6¯JwŒúyÙf ¦üû¬¶òyS¾X°Øo±™Ú(p¹eµàÊ(‡Ú­…mڴܤõ[«´ÉŽõN‘@›0I¤ Ñ’^;ùo±h·Õá~ÛvÔÔB?ÅŽf[Õv̘ðy_¤¥³ˆ1Ñf;¬ír»Zè¯2ì³ÖÕ.#‹@æ/qõâÙú¸Ò:-‡RMz—§¬h>æû}¦mW°•wX>V‡ ¥íÇvYµvì>ìH›mH·g$ -¹·Ÿ÷U ¼åi¼©Šj·1úëj“5Xí¹Åæ:¡çÐäå=VW¹™ùû´ÜÒΰ µûÌVŠª„°~WÙJ‘Öú\ôåa7$Ò^À`Ã~*Êý´.Z^0éÊ&¿/õÞ&|8#Ø}ì”zÉ•Ñ\7þ¦ŠšC¥ {ÓÖÆÝÜ×Õ>«Û¶ïyèÞ¡Õ —ÑçºM,&4Iº9Z› ”…ݤæ+2öúèèòŸ¶Î ÂPmmŽÞ±@D@³”óãТÌ5ªí1)ò F}{zôUyÒ[ÉX ú>ñV"‰{oÅFç½·rå ;dƒ/eSkÀlÔÚuxÜÝ“˜*OF‚0jÅëÜZƒfê½)¿´‚ÉÄa4L…„ >Ôãî~Í™€éó@s®·3BõW†_€<¤ÄUį£_ P%:ÛøÁµ‰b"à‹(ULxh?³l‚ëË0Ÿ\CX„€Òq’çÀä,!œFÏcvüž :äÄ£/ÿ9_‘óyø•ènÐlF'¾ u„a–3<fÏðs˜Ãgƒ1‰cqÃð'ñ< sô(–á©;|êÃ.,gxÌža3˜¢ølÔ!Å NErÅ41ïˆY(fèTb¸ÅS×ø2Ü’]`1Nò˜=É.&ŸàølÐ!Ç ÎuÇO”š…b2^¥§xâ_{šá®exÈŽàd0ÁðÙ ‚µ´¸’ß(!‰à}JGðÔ§øB܆]`5Îð˜=Å.¦˜`ølÐ!Å ®èuo)JØs6Ç!ú”žã©K|îÇ.p8Îñ˜=Ç.f0EòÙ¨C’A< ¯{1 E e󼘄2~År¬?ÆS7ù2à–ähœä9 {’H9AñÙ˜CŠeBâiñç)аhžG“èWާnòeÈ#»Ðñ8És`ö$»˜ÁÍg£i’$Ñu/'ÁA€Ïór=Ë‘æÉòeÈ#4»ÐÉ8Ís`ö4»˜j‚å³A‡,ƒ8ã×=žUDÆó<žEçâ°”vуÕvùTl|Ÿ®m ÓD±‚%FðÛ:ŦáEWV]԰̲Œ¶–®6aôuqØtQ÷´í⤙I=`_š) vyóŸf/-ÛôÞv™ô–t™PÛeí¶Ú Gûø;FÙùz®nb0¸¶+Ùvÿô8hZ»V®ÃµzÝcKLH€Ê*;ÿtÈ[c…ð³;m—>0볘ĂÁ'ÊCO³KMš‡‹×ý¹ÎŰbùn_Ù¬½vù.·ã&mÂF»MÇ.ýœï;làº'3@¶uëîX¬,…½¦£™¸½ë¼É^êX;õÿ°*º'¡MWEwW-صÉtbÅ1ÈnOOï?t«²)ÇdÝr5°£ÏÖÐÆèl—§Ò žAÖý™ÿ2LWÿ›íS¯Ø-»Ç9Ñç¸y0G êÆŽÄ¤y€ßi±a¨‚A4¹Á†¹WP íÔhäÓoÐcQÛæ¶Ím›=ïæÇ¶-µ“ÊWµV¯-úHÔá±:X%ªcÆ4õM*Ôe:4Ç%ɹWвNj©É¼Ê¡1kCͦµùéz‹5Ë>ÔòÒÊunam,ô…Í^,”ò-@U]ÍNEÇk{%R˜iuÖ…oÀB'dYê,m³Ó·£;‘N.ŒÍ.êÚ¡°¸Wäî‡:oÛÌ^«¦Òަ_¡Ë/Á¬’.aïiv‰’„‡“?¤|EÊž‚Dë_ÐIÈmÄ> stream xÚÕ[KsÛ6¾ûW0§È3‚7ˆÌôÐ<›Üš¸'7Ú¢6’¨RtRÿû.B&$2HÎd:™XˆÝø°»X¬aœÜ%8yñêêâÅ;NB‚&WËDÑDi‰$O®Éõ즨wuUlî.çT¥³7åíý:ßÔY]”›_lÛ§|•g»Ü~aˆ vùåêãÅÛ«‹.Àà„X­,“ÛõÅõœ, ýc‚Óiò£éµN¸ ˆ* Ï«äóŸ& þUw‰}øô¾£Y¦H–( ¢”†µ§‹½rOEJ`€\"¬EHôæHÓ´Uq<®àH5„taL; QÁœâ*O–'5;.?íÊ„`¤±&n FJ2»†Y³qÀÛÿÝ-’\Ï%Ƴ_­@‹Ð6¾*êÏu•gë¿°ÀðŸDh¡³¿Ëbc]ƒÚߪ*{0_î󇣜Qá¦+‡`¯4¼x'q—5ÊÁ>S ÊÒ–eåé?$™JèM\ïb0,aÈ<9=› (ÑH2å:_·  #ap± ^‹e‹²õKŒ4þ‰Òô'J“ÿ-ké(i~(ýåËÞ¹žõ¼à/ÀW8l(ñö8ÌsR-#¼'éÑVG9ÂTµqr³€MLàY]ÚOˆvmKQÛÏ›ìöÛ˼9»ñŠ˜"c¶%™²sSÆ M›sĶÔénK­âèmé)¡°Y?š%Á°B0ïfI~|-Vy0$2 d.$f£6¥m¹‹Ý*ŸÜ+Ç c•o^ÞOæí†b>×––-dpu˜FŠÝï,f37ã:FK«„ 7jÙÎÃk±Jž{Jž(tŸ‘z~8^ÝÆG¸x_=ŠF…Ôj²'!1NikW_!MgŒÏ6¥MáÍt­)< I©ã>²ü*&)b,Ý{Ί(¤äB¸N»'(2IW3¾Ú 4¿$böï¶ÜÀ¡£ÈVó÷åª\ߨw·å¢éÅÀ¾Ëm^ÕE¾soÖîqY•ë¿#*› œ„¶þ¸$ðâÁ¡”V|m÷°öaDk‚PéMÆíe.ïòj÷òÀe•ÆM¤É˜tYÁAckÌY6"¸Y<€â ÑkXK?_ŠG€ø) ~~€ÁVpª4þž/ìѲÏÌ;Ãòî Àù†ce)&'†X)š53OÜ.´´K-®,ö¢mÙ´R ûð𦨲[ûÎÙ ´víF¦mfÑQXåÛ ¬¦¹° 7¶Ã^oVÚÞ\R°´ÚNíн8ÕH ¹wÔ⤃Í]7Ï*ú<Ö˽ëïNk·D»NÆ–ÁNß™Å1ÞÛäOÍ$Z£kÖ¦ñÝôÈÛ|Ê®—ßy SΫM+Ù¾µRÕƒý¶+ÖÅ*«ü,í&‡°ÑêX á~³+î6{Ül—¿Ý .ÃâgéÆªÉ$tëiŽî mÃí¡» ,tGƒútc;•ý1óKF=MöÇ´u¶}àÚ÷@äÓ„{ЪŸðxPp¦ZÊ™Rˆ‰ib7K»©á! ˆÜCx:  ê®L¹dTÈ$E"œ·?pin¿Y†-|rá]h <Ô'Ä• 2®”Óä‚LX‡³•„dCí!û,ìžîhXŸnç2&<]´f #íÎÀ§KK^UÇì:¿§[•å·¶‚”µ-E]¯Ú^‹byIÅl™Wù¦>]bD#ÍžJ9Œ9 X6µ=I=ŒIʆԃ&†«yãøÜS "°})1„ @üŒïž[ªM1ELâ¼Ts¤”>[ ˆyÚu=PÜOu<¨Gµ§\ŽãZ $ñ4©.UÖý\9èÛCw—èŽõéq?O·ÄM]ºeãiŽíqCía»;± ê³ âB¨qlsÑÜJ˜„maÍ•ßBÆ= ¶‡î.. Ð êÓ âŠ°qt3SN™&Ë¥Ì8Ûcµ3dÝÃ`{èîâÎC|G£ú|C²”†ÅÏóM$¢tšc¥ÖÝ ž!ÜÃx™õ qLÇ军’Ê4å|Š­Ã=2ñaÀ=„w‘ç!Æ£Q}ÆAœŒ³p’š’Ê4™ ÑÆãt§È°ðÀ§ ÷y?ßñ ßFœ±qé QÉi œ(ëp| |nÝ]àyˆïXPŸnæz\:hh)Ÿ&$²q·Ç²~ȼ‡áöðݶ£1}º…ùû–qù áah¨dLvø™÷0ྻÈóãѨ>㜠K 5µÓiRB¬ïà Dí¡û<¬ã;Öç›Ê†Ì¾Oâ`gC܇?<_·µ·{wß꡼w«Ú‹[ͭŲúf¿•÷uè–ˆW»|µl/o5W5Í“¹ùÌ»Îwt]‹#*UÌ“þ[7fÊYíŠhy9'Š >{ý5ÛÖÍ=L•šk—sIéìmÏåÃ×G—a´ÿØ ¾§ endstream endobj 1755 0 obj << /Length 1812 /Filter /FlateDecode >> stream xÚíYKoÛ8¾ûWèV¨¹|K*°‡6ȶ)°éË‹=´=(6 ÕÕäfýïw†¤dKI“æÑE ìÅâ Éáp8œù†¦Áy@ƒ—ê¿_' ¾4`AăH)’H,ŠÉÇÏ4Xÿu@I’èàÂŽ*©ᑆv|˜¼›¼˜O~ûC²€1’(Ńù*Z™DA$‰"Ì—ÁÇðèÕó·óã÷ÓÏó×n|D8SÇÏxB¸æöË ËŽ?=9=žŸâ„Éñ|¨§N8Ix|=¹$Q1\—E\Z("éÖ}óv~òçɇçÓ„†ó“7§Óâp~|ôêôäÝ”Ñð¯ãn|°é£ÊJ›iFKœ´ùÚøëÃÁœ‘8‰A7;è,kÚ:+ϯ«)Ív#‹j¹Í ª…iV4ØÒa[9ÎY×ãù+T7mÚCnÖZ,¬Êô,ß9Ö¦jšì,7OŒE˜–K?%o×Õö|í¨vmjã$g^VQÕvÁ,æD%`I$lÕ*{ËWõ*"§¤ðJ .«Ò8Nµi³"kЖnªÂ©6¦NÛ¬*דµþëéŶ®MÙÚmÀð¯Û¬õ2/Lž¤›¥ïÈpK­›P›¦ªÛ™Ý*ï´QÔé ß#÷1S¦ÂZS6¨é¦Âj½?sk'ÆïëjÊh…¿ßP„©]G·Y ‡•­©Gíª­êæVy®ª7à8‡Óàp¿<Ç3›[H ÉH‚uÖOTQ/„¡—+œ":÷?ä8!Œ¥€v/5¶pCúp#ˆ’>’®Mv¾nÿ·Ó÷ìä£ò*OÏ›_ÔJòÁ±ø;Aꆰ¥¸&RË;K¡E°ëEŒBß v sÄ`VpÕá ÛB¨ayÓ{‰ N(ÀYSNC:ØÓM(+ËÐÙ96§Å2)­,bµC6u° h×iÛµŒk,R„Z8RÍXWHˆå<ê ¬ÍW]ÁI?fЪ­·‹Ö¯Š™Ô¢L¶YP‰u[#Dq‚©?¥ñ0 ‰>O‚i$—áÅ:[¬]—Ã(ØZ§^&L; ÷—Ð}ö6K0QÄ#o¢ï®âȬ)ŸLY¶ŽÜZŠ-9WδÄ#ÙY„™MŽC0î²°!cVlû‹‘k 苈-ß?X·… È$OÀ¼¦\5ûÌ´Â!ÏÚxÛ^¯G·Q`2I ƒS®Ø•ó„ËÊŒ±Ÿ‡JhÊeDPÉ#˜sƒµÇm°O4‚ß{pûøÙÈ£_äçákÀÑ£Ú`´„ÚVÈ€ã„<U?4 Sæ³Q*¾Óz©éW)¿¶U)ªùyFàòL>¨IïŽnü.`À){0Ä!Ða[l1£^!$ Ÿúü²ÈÂZüÊb";¨Jrû¬uPî#èçV‰‰ÃÁEѽ’±¼át k!öË&'/ø¡’Šñƒä'†wÖÅTO<¦PgMû_ÆXo‚!õ¨BÅ­Ýñò¥ZÊ;‹Û¿ÞõÿWìŸÁˆç‰èßùü­«ª{&tMVlrãžåãpuZž6#wÕí3,ö¥?öZèÁö >ãjéŸq¡±¬úI(WXhö]¾EµÌV»~bíZ‡O‹@¦+÷ª«…/=,6G)îZÚW¦î¹®‘Ŷ…PkºÛBc´Q„>)cíÝtÄt¸Ã2‰ˆ®>|Ú]kÁÀ%ûr²Âʪ{u·u¤è]ãRk)‡QY3›¯ö?¯ëtw­ÖaE¬º)XC¹è«})]úµ»M†igçÉNïEÚøÖ…«j¡åŸñM@G!>¯û I –YmøwŠ5c1‰X<´Òª® —ùðµÜx$ÇÔ! Ð7d»ÿOT4!IÌÁ ˆæþïÁ$¯û/^ÑŸÉ endstream endobj 1770 0 obj << /Length 2535 /Filter /FlateDecode >> stream xÚÝZÝoÛF÷_Á7Sh½·ß$ ä¡í]‹ôáŠk܇ƒ¸´´²x‘H…¤êú¿¿™%EJª"Yr8—KîÌì|þf)=F<úñê»Û«¿ý E$ËŒ‘ÑíSî‰i Ó:Èy»@²,nÖÎÍh8+æi⹫]9 \ûä\I7m·hºÌ›Æ5tS„kYµÅ4X:ا2ÎËY¿¬ ó~°l*­ÜªªŸi¼iòÇðBµn‹T ìèFhÜ’ä«¢ñÚD®†ñ¼¥цÁ*Ÿ…lÈ_«‡ÿ¸iÛì¼÷¡¬p¿Oe TÑõ¡[¼ZmZÜëÄ‚Y›‘ÿž„7ð®-.ªÍ·kÓnk0»®(Ó[—3ÉS4_¢áÚ¨[íMþò#:˜ZNÀ8É2àïù~;o¿+ÚwmíòÑfßµ¹àŠYeº•°¿ %‘ÌÕ‘;M›°$é–xs€^žImiü4A–בÆ-=+Éaäí/­*pÌgšËˉ0ñ³7¸‰a‰H‚{˜m4ØÏe°k^‚g­ó¶uõŽå½8y;]¯ÙÏšWup‰àB›#˜ì©(ËXb{c}õ†^Ú±KÂÔÖ,U"¿Ð:R1©ÅÀ:ÍQÃ(PMÚ¿NÂ0pyüê¸Û²Ã›?óÕÚÇ5ÎÌó·] Í7ž%ð 7 @ÖQn³)³àF6̘ìx~K7}z‘H…Œ,lB¨ô iÐlHì‹¶?3`“1.Ä Îk“0iTG¸vÑü åNó»W*"`;Î2ž‰­…B…ìLÇ4¶ÿyGÍ“èîÆr¿Ù:L¢üÆ ‡?r¿½,à Žf¼[Y> ³¯bF‡(ÂP»Õx'Ò2‘Ê>à_Ìx⨣SŽ˜žFp,˜È ÚŽ`—PhÆ:‹QWA`LsÌ I%ˆþhÆ+>œó4Ä7”ž”d‰LÆê;Û°_ílü”…;Þnj:ÝØ ­ÑÌ–Ûõ ÆüÏüá%ëÆÌN‰ÌQ1àj`×ùI`?)ðuN*:Ž´,‡Ä‘2ù? d Ü£$I£þZ:º~ã\N €Š4M%'Á²@÷n@ªn0ÀãI?L$T¤¶càhP•aðözEƒEñ¸XÂ_ÐéV†€¡[³C¦A‡ Øì*•À5ÛÒ d¼ÈQ´?°‚8z%/VMN¥û¬q_ä³Ùýý¡Úi!MŸ¼N‹|I´W®]T3âLòÃdUÏŠ2¯Ÿ²UJæ€í_r5’eIÚ½øè<”ê›Æ† 2—ÏX}„=àX#m½…B¯Àˆâaþ©gÍ!ñ®ç }:xC×k ºëC¢¦u²±¤Èi 0Cw¶¨[§ îrN¡ŸÉ’Ös'ȧä€äÈ´Ôì ´ŽŸ¢+/xqë‚x9]Êàå—!!àd˜€´?Rÿ)ˆ(íõ=¯+ ›W²6®à'„Ø` 4úL •¾;A(e9´Y>Æàåbðâ…<0|=Ax Z†×|€—ÖUÓËÀ…0Ù: 6“Åoç‡Ì¨2è¹µãA3±mU\ä3ò_­4 ¹íÔŠìb¨ª”ïl·PõۺΟÇd,Û6A`“ Yô ±[ âiš‹Z2x¸“ˆD6ØÌŒ2%¼U”7ëe>õ8}Ò÷¯ðÆîêt°zµñÝ‚À6¥¦$y“áö̸-ÙIòl§` iQuA†²䨙$M ì¤0: 3@FTÄóè˜òÙ ì_ýEIÝÍ «oéŒ@ÄóM9íºo¼EÍx'…(4h\ŠL&ºcOÑ& 7Å%&"¦î^ã)Gê[µ z¹÷:ÃM·Ü4Q]zÅæR¥¡¹„Aè$aäû;¸‚\4ðÃu â| aQÎ ÏÅlC%õõ-P ‡£‘??€aÞ e(io;^Xú1\¹4X0?h°Õتk[)1<;VÚZÝñÆÐõýiÆ9M™æº¤)SÖ—ŸÀc™”¼¤)°5eDø•š2•YßοnSæ³Ýk5_¦±[žÆîxÓvw–¾ô®¶¾>c¹7•ºœ„áb—ÆûcíáÝúýe^öÙ›½ñ{½ósË^†SV³”«Wëõ oŒiºSu„{€þènÝÚ”BØOøJ]å_ÄZ‰ƒ†€»‡Ÿµs´¾šwSn»:LUtý]\C±VÆ¿–Ñí¦)6ŽÖMë¯WÊͲðõ&5XÔÊYCãUÕ´4Bd p¶ Úbø-SÙO=¢ÇKÙ÷­°ÈË+â®e„™³‘Î"ù\ì:ˆàß„ ia‡îÈ,T8.ÿ€%/,ÍØVã_ŸµŒ?nŠ)­Á¬¹„}® ð„ËþÌÖÇé°+º­7î¼NRÈeÃ&Hj5hØ¥ÇL ‚ïà>JÍ}Á‡¶2‰ƒÀ<|Ks+——4‘:øm)îAfGW‡»9å<ªÎd¶óq%,‹v3s¾´Œ Æ¦qÝA¯»ôC  iú¼Ž æÜ“2ký©Í?ÔÈ4aàæ @´PÙŽŸñHBÓ™åP3`35ð+™à7™äÔtÅœ/hÌv‰‚‹ dû4jÁ\Bz\ÿývÿO€H_\Ï‹ýà„Î>}ųW© Ø»³×o±…ŠT1‘©ODbÊ4$þ Ԁͨ@á³ Ô)©Ø‡ù¸‡Ä0ç‚iÑÿ¬àô&²¹;³@í¥Í·¾Ú€©Ò=ç>©á>Oly@ìÐvB¥!!ŒÚÎYußTïà¶£Æ/. ç»ã^PÀæY–½^£&¬`B†-Úë‰1qÓ‘µ„²‡'ká@ú´:ƒ}_Á«’L~öÞ²ù², ô’¾ BzE$øÀ{1”“‡1óö—"Û~ö?Û]÷ƒH˜Exwý`™´É9¿—<üsNðK+ƒcféäF@iæñ÷‹|MI"Iñ; Ø_Êøçu[t?H¤G·ËcGß:ÊâãÆ?:‚.ÿ H~Šº endstream endobj 1774 0 obj << /Length 1404 /Filter /FlateDecode >> stream xÚµXYoÛF~ׯØ7“@¸Ù“‡H %AP8©-´(œ¥ÄµÅX"VÔ_ßÙK1)åP⾈³Çœ;3ß®ºE½œ÷ý8¡ð%ˆ¢„¡DJœ †ëÉõ{‚ ˜βmÍ®5’b–Ä@¯ÐÕäɯ³ÉÓ‚"Jq&%C³$b‰E– „sœ$Í tüöêùÛÙô2|?{m÷'˜Q)ôþˆ œ‰"–a Kfÿì¯éÅìo½}2 ­Œ3†3–þˆ•Là$M¨ÖʵVš ˜KÌ3aµ^NŸ>¿š†KÒàâM(H0›^+|À¦ csøå1E ,L^¾œøÉ3*£8k£ x‡ NV„®#IHð¢_­¬å†’ª © Ú²®ì䫲íê&Œ( v?©Ðz&0±9q‚"g—ŠÏ.=šSjÞô¹7Û8Ââné(Bùyq!‚û±»l –lÔJå­*=}ÁYKLþñ4uù·,[à†8úon?ë²ÒQÔ¤“kÛÒXõyã¢î7+·Xߨo¥B&ƒ­ܨ¼ëåÅW…%Úzí¸æ!#AkïaŸ´‹ªÅÖ‘kà*O!é¹uõBi±[«6yqfÉ®¾SÕé1ã4Ó¬!°›á"7DÌ•èõiªt[•ŽÙDBÛ¥r|›|qWV·OûÊQ^R”‹¼s»eÞYjW÷–¿¨«³¾·§QÚ1í¤±±u Ÿ×=l<!Ê‹ºêTÕµv¤Ò-·nüìàD¢4aÁóJGrgç!…±Ôo²Ô¶ÔUª©}ë”ͨö®ÜltdŒ*-ëÞœxãXM<4¥£ó`$“{.[ÿUMé,Z­”K5+PSŽÃfœ12Ùd È A †îSŽxšaIÀ‚géƒ6œbhì¾ D¤”!žÇÙ×DÝgb.œˆCÓg¨É0¡ô¡=/$ôdɽàF¡›£’z×¾‡%©).ø!ÂVÝ`x àÄ`àÉ à$Ú_¨îªåÙ³g£â‚C|°ŸÅÐQ,ÙÔ|F1Ñ=ÁÖ¾Oö?Æ„ÁŒm šá—7Ùž %À# &ûV€&ïˆ$N“šCÀ4#h0c€ô»˜ ŒÎ¥s¾/«îœ»^ ƒ…6vœ¢_¨‚oÔ…„±ø¬>¬-!’JË;`ònؤuÞI†c(U“I¯TãQ©Zí,Õmu»®àujíAÉom@UåûF麆i’šÐÙ`©h´²ï‚ÐL.oNUñX&Ž@ÚBÃ( uc‡hõ|½qíÚŽ*}Ý»WU©ª…²“kÕ-ë¢=  2ÀõrÏmË\›aû¹™+ oâÙ5uÑ/,( Š2x»nÇÜ7º¡kBÝ w 2w8Úä»*ƒs´Û±®§¶ž`)ë¾=† &€xqYèøíÏqW1!„‹¬<-m•¿/5‡ ‹Ì†q™W·nÇ»‡A<Ž,…Rr‘íB×Ðl à|§[¯ØñÁ>Á}5×8‘êc_êKؽþÉWívîGLHàqR/cdÁõùûcz^x*=Ï+^Çåˆ|Óä3¿|ÒqþšSq‚%à”Q¨Õ)îül¡FB¤˜¥É°^ß@¿h|µBBéì0W~Õ}FŒm¤fð"â;ÆäûDF‚«ï½_ÿô³(òf нUæmÄçmtQ›–¢Ös> stream xÚÕksÛ6ò»¿‰º‰$øðÌe¦é]ïÚ»Æß\O¢`‹ŠPI(Žÿý-°ERªãGÚ™f2ær±Xì û htÑè_ï¯.Þþ²ˆ1R Á£«Û(çQ^f$K£«Mt¯kÓ›®nï–+žñ?tuØ©ÖHSëö â~Q’½Â—„0’,o®~ºøçÕÅo Ž¡C®œ0šEÕîâú†FÀÿQ’”Etï¨vQ*áyp}¸øïõbOÂ8¬ž%vgÆ¢N¿ŒKI’fƒb"%Eš¡fœ¢¾üœèz%(ßËjÉiüé^vö¹i–LÄh‘º­ôn[/o§Ê¾l¥µ+ªŸÊñäóçÞ£Ñ*a$MPÅ++Çï']d»A`]·ìØz¯:x§±©A ·°ÑíÂïÚJËì³—\¾¢‚†#¨ž@×ÅÞþÀçâò’$Eòþx»\% ‹ôÙBàVwѶ 1ÛA·D0«›lp)™UNvwjß©>Äm¬´?Mú!Òí+Ôw§}»¯›÷·1nïÀp §Õ". !¶v²Zóª_)å_,µAÜ}m¶vx0›¤HHf=Œè¤™š £:м9Ç&'¼Î¹•¡÷Ä'e‘ƒŽXûˆ‹øv`…À ŽÃ:aãVv²I<õ‚[ &q&P›ÛCü¬Ä‚B°éJõ=MÜÝE. Ic’™³‚d,‰²¤+¥gç‚P1$ç ‹‚ñH”9Eò ¥á!tÅ©h§˜Ñ1 !cãc,>ê" Œ;Ýžå|’ã‡\›.ŸÂšb¢`B5É@JJZ2_M2zçèwïÞͽGGržVðpO$Ò’þ¸“'¬/Ô—¿O˜{äûÚ|×uòáW*¨gÈ…Ý w–@ q 'Ç0^ÌjÍ“6Ñ/Œ'/Ù¸˜‰/˜÷ë–Ÿ›}å ¹b iùG?&sé·Ê–kþ×ñ‚õMøØî}o ÃôÆc÷Ÿµž Ÿ8wáåYÐ4½PÊܸz‹£ë¼O¹À“l#@‚zËç犓ŒeY$Ås2w½|ÞõŠ\Á|}ø$ZHÖŸk}è›L¬Æ•5 a–>4|…Κ¦Ï®º#¦SæÐµPÄΕÔšPV†ptæw·ëhs=uÁú¬æ*¬ãgÐBxï^ BW¶Ûôòíê»­ ¢þv¨;ïõnÐ #Ô7øº¶ü–Ú?ûíÑÒvEŽ2°ªwû¦¶Õ­ÂéC÷U­-t,¥L¾–Ƨ@+œï¶;ÕÊòݧñí(õÏéCçÞOE:v+ šÇ‘²©¥_Ç^€ âÓ)¹Czëî`-«OÈ­Û &Œ uS›Ø´TiÉBKåf@û 2ÞŸëÐÕ›àÓ¾Òû Uq^k7ÊÕ|k´îUûJwÐéìu 5?5Žº1+7NØ¥‡½ò'¬ŒšfqÒ– ÌhΣ¨µƒ/¼Èâ{åBP‡Û1{gWx}Û Ó wÊlõ¦ÇºE¤Ä‡W ½þŸra¯?:Pø6ßB³ÛmÉ5® 7 `¸g€`+‰i@œÕü*XußÞ6²ý ô&ýdƒGí½_å`èp'ë€r!|ÿ­n¢Ÿ2?µß³`)ûºø>ŒŽ¨À)úfH vb³Ø’­ÝÿŒŠfÊÄ€Ú#´‡n\;‹±.ž$_šC[0 =?B_µûøñ\JÍ N³2˜³ø‘]ÿ»‚–ììu8ÃS"hrä¸QÍW8Š@ CÍ•ÇÄÙ G~懆͸/ÏIQÎf¢Ý¡15älgÁ¬ð1“åþ¦¦7²3âev8½GÈ;`ÉbY o%Yÿ¬qÍ~–W¯¦ç̧gxzÏßw >Ümçé1Q* >—½J>»»Ûõ{,„¥£ƒÐ”¾–…Àœ^! 6²n’¿—»€ S‰½†¡º†Ôe“2†- ÑNKîôŠ»:ª.φ ³È+ýµ¼\_V7ç%ƒË|¤\ÃI;üæ4ç™BÁG† žp¡ìnéon!' ¸ŽÐÕåzØÁŸ´áæ)Ÿ0hKAò2÷Öö‰àÃбà÷ i­åM§og~nFŠ÷†¼C»>qDæÜ6ðò+Fd–AÛ *>Úö–À¬x͈<:f<"{ÆâˆÌí·*^2¦õÅ:tú­‡ä—Îuýõåez³ô¶qkægŠ“çÍLêçOæô53yÿÚ™ü…¶ò‘¹(àßâ6l£ÁóÌÇÂsŒe(úZ®T×cš mÚ„e™„nnŒAósó]^>g;Ÿo¿yùǯÆ_0p‚´9tñm>‰<¿6œT(Ë"É >‰„çä;‘Â?ç»ó¿'&%É ¾;ƒ1H+ž°\ÄßoåÞ·ë…ý5RçÓ_ÖföÓ˜îÿúʱ• endstream endobj 1788 0 obj << /Length 1916 /Filter /FlateDecode >> stream xÚíZ[Û¶~ß_¡·•šåU— ÐËI‹<9Í⼤y mÚ"K®.»Ùß!‡ÒJ²³]{ÅÉÃZÔ‡3œoFKƒM@ƒ_¯~º¹úþ•dc$UŠ7ë@PAD¬‚8H$ƒ›Uð>\dMÝTY±™Íyœ„¿”ËvgŠF7YY|‡´ßMntmðEFÄìÃÍë«ÿÜ\ýyÅ`-° æÀ•F£`¹»zÿ+ ¿(iܹQ»@*FxA;Þ]ý÷ŠzYû'az „± ‚ŽâïƒÝI"dävgEP’$2Âq˜H¤õüu‚÷sEiøÆÌ˜ ïP룡ÑM[™zÌþÉl§'Cƒ¹aJ>Z­2zÕ”ØÞ™f[®Fk~ÿŠO9ñ”ˆ$AV7Û¬†¹’ws]i"Ô¾+û„…iîŒ)ðEã˜?(å…Ÿ§ûöYÙ0÷Œ|ÖFWË­ñˬËj0lî«› ·¸<òö¢·{|‚`ëv‹pì²;gœ®h˜˼]![ûÚh•†¯¬6@uªý¤wûܼpŠíî °‡32ì(!AÅ$åcÜ ¡ª·í‹„ñ@ÅŒ?yŒ RK=‹CÑ)ƒeRB.céRÅ„+Ñ1®L°>ÊùÀEz›^Öná‡J4è¥sÆd $¥)óÎÁʱuM{H/_¾œ˜-ß`<K8t¹ÑÞ­ˆ„ô?néý3ÿüaÄÜ.‹ºù)kÞ5`K»?¨¢ž-Wv¾„ðIÇvDqlÃë‰k?iý$cJ)£œ hIX3’ñ9œ®';?TÌËÿ÷'2=޹×ïœ ¢Ô—>’L…ÇKì«ÁEÑÏZÑâ¾1:Ï6…Y¢‚&2Pڭȼ # Nº©Zóȹs;£ûÁ} )–Çè ÁßÝÙ|àÚ*èúë ~>µ*:^æ›Aý¿ÔÕ÷Ͱ¾Ö†¥>cW>€ZÕS ÑÇ)XNBÒs: ;À‚–}œÅ >#¿y@ö©”D&÷îõrÆiøÑ'%m±´9¾éåÒì›Ú¿xbÖ˜J/lò’ûdN×]OÝ¥6À±¬vº9%Éx[™WámV¶u~œ„Ë¢ki|ôˆÚwV·¸íw²š•óÔfk°±Fq -áO:Aý0¿‹ù©ìòžƒµ<ƒÒf·öÇTu¶Ù6G‹ºK$ð¹¨Ê.õÃWõý’«êÞês(xñòA«ÏRÚÂ}jò¦´Š»Ãžû²ÅÆRûémí—@%xyòl,FVŸ’ÉÈ2™ôY™Œ·|܇$#±àÏÉdË 3ÏøäL]*šd)»D0<ñõ®¹Hæñþ‹ÇŽ­ùô"¹Pðxº¬nsgɻȊâ"ò~è]u€ôEŽÍ:¦<`_G+‹ÿ_CXÀxMdŸs†‡¸ ¯Uz=\8&œ~Å^´B‘$RçÀ„ •CE*j«A9T]¦úÚ„¶ð(‚%Í[®íÙ¤ oMeÃkÝC€]„v%MWP>§iñj|ì²¢«íµûM¥W>.ÞeNª‡Ë²Ýç¾³\ã³0ƒø»ö5]o[Ï*æ&pÎǪ¹Y vïð‡Ã<@Äšä¾,LÑd:ŸÿZæån1˜°¯ VäëSTöæas©­¹bcÊбBÛõZùà€­°ã³2BŸõ:í9µu7Ã5xzœ”†¿d@V×¼ÍV¦Äæ²\™åèNB°ªÃXí~ŸgÆc¨ÛÌ]Î6ïóÀ638h¬$.‰¢ý ËŽpâö*{È(?à ü‰¥Ý S0)L•ÏÁ`œr€qêñ °Íó Ø`•!C¾_±–Ì#ôåËŸ‡™þXUúÞšº7¬sókf¯e‡ˆîNR<2`_®þûO”UtvnÍIþ«ËJ€ŸW¹¦ Wesìú2Å“/‘Û 8Äé9 Ç9:ŸV8XúçqóK€)ó6r56Õ¦îå]–ë ;Ü7RûÜú‘EẎ3èìs @™{žÆLøìtÑêÛ'-±Dx¸‚Hšå öŠðçʬ²q5Áà¦4¸8IáùÖÊ ÛßÞÁFXn ¾ö9ÿ¤Ð°×Ír{)t" “®¤¤m}a3›Û*Ã<7Vr³°#•FG¼µD]e}yé˜ò£ý¸+âÝ-L…ß~<~³ö_‘Ý—= ë(`°3¾ï]vRÊ‘0ˆ¤ª¼×•†õP‰‡«fÅ*[êÆ¯Úl])Jb Ôrôz[¶¹ÿŠí+_@u¥§²úèÌaÎTPÀ #€cѱà܉j["\”m±UZk±=6â²!G÷ `†±þŠZgÅÑrðU@£~ÔwG¡d;Ý€Êìs½< ycOæTfkŽñq©Q?̆6ðÅãƒR¢ÕHã ¿ÕÅàŒìëʸÅråC7¶™ÞôT”çˆOù•ã…X‘’ˆ³Ab5›G Ы6÷^ò¿™ý_ƒI ô[V7Ö©AfWM$ Ù$«‰ÿ-,ÿ½ endstream endobj 1796 0 obj << /Length 2332 /Filter /FlateDecode >> stream xÚíZëoÛFÿî¿‚‡û` ˆ¶ûâ+@Ô½ºH>ôz‰¿¥º¢VŠÔ‘Tý÷7³/‰”êØŽÛ‡À€¹\.ggvf~ó htÑèÇ‹«›‹o®%‹#E’ðèfe<ÊŠ”¤2ºYFïãE5ôCW5·³9Ïòø_m¹ÛèfPCÕ6/ìÜ[]kÕk{##böëÍ›‹n.þ{Á`1K•FÓ¨Ü\¼ÿ•FK˜Q"Š<º3«6‘LáY ã:zwñŸ :b3²™$DJÇ絪Ø÷›k>’G$$O c–‘Ù3Q kWq‚ÂûPa6~Tõ“âv­ë­Ùÿµ•+rûvãöÔ]×vî]ÕøÇî(Nõô…a¿®þáTÎ8º3GÀÏfVëÓIãêㆠ¸ºÈàNØù7ˆÒÙ^K‰¢c¸€œØ›Dó“ÆCA8ÏÁº "òÌ™çÉ´ “àÕ'+ÉÊWá?ï¡@Çc“E jw=ƒ²í:]Aa¹:¡æ_Tê˪ ½„]­' GÀIÓâ±ì.Ú¶¶£jÆâ¦*€Þ4¯Üʮݜmë$aI@Lz¶…êKÃ’¶;K‡“Bf~ ;G&#,‡þÔH.Èõ "…|˜ü?¬°õ ¥¼¬tS¢M:'©6 þ¶kq lUb7%Æ>^ï4X5e½[VÍ »&ÜB–¦Ó€¹ÝÏÒdÂåcM[!SÛ¯òÆ(ñ<o’ô¬)?|#8ÿZ/ºêŒ{ì­ÏpÑ¡Ã.Ýeìål.¤Œ?‚W€½5 ||0;ìl‡s9‰±|ê§Æ§r+ÇMÀuÎÐ…vé‘7 Ò>}¦Ýmk=î“ÙÞÜmÀ4åZkwÚã"(®*}‹®rvŽÂЉq$@ÓÊï7­«Ýí£/mî­V`F«Ùõa¼û7—^ÚYŠ×jé[ƒ~jÑ—`À{Ý÷;GQŽÁïéð€0í6wXÔzc±ìˆõ~»n¤8gý»È‰ÌCõû¶éß¼:çìòsQÌXü°ÙOž’düN¥‡Az¤%:÷ö€q¾Ëú›ƒ2œ€›ª?ÂGDUïtÿ´³~q«;ØñG5¥·ÒÍ‹@!ˆþLŨdÏ*o m€sû"\¡÷àÊÓþ¶s³øaêÁ¯ïB¯eÊ0~è d˜ P2É,¾jQe"&‰”#;È-Ý ÚçëQìVÚGe Ž¿Ƥ”½]˜ïop¿mûÊ}V ¸OÍ@``5“Éý±šˆª_1ñÆÖœnWg¡.% {Òe{)n¥ÑRí×ÖÓq¼ëÏ¢i. %+Æ{€ÿžES {äGŸÕ“TZßAúUóYqòœdEþÙ(#IšËYŒÝÝ#È"(ÉA”Ñ{úc©¥Dò£BÕ ì··Ö#%„7^ƒ‰·Ã6¡W½_{(ÙUùÁÆÉnéax³…’ÝË™òsú;“DB"“=æg&ç# ’ÂØÂràE°,Áþüvð¹ €X3çãßÀüÔ“\xü ÌRÏ endstream endobj 1801 0 obj << /Length 2335 /Filter /FlateDecode >> stream xÚµYK“Û¸¾Ï¯à-T•EãA€¤oëMì-WoìI.Þ=@4âZ’ò¬þ}ºÑ‡”h¯]•ÔÔ›Fãë¯=D,z{÷úþîå›”Gœ'…R"º?D’ÉDf*Ê è4ºßGŸâ]5c_µ›­Èòø¯]ynl;š±êÚ4÷ÁÖÖ –2á‰Üüzÿîîo÷w¿ßqX‹E<ÊX g:*›»O¿²hóï"–È"žœV¥Š'"Ó ×ÑÇ»ݱ¹¯bá+T*ISïçýP,.k3 v Á±²½éËãFÅš©†WÎ;0ýCD‡·Kužh.£,•I–ç_÷9O˜š\^˜È¹ˆtš%Z_3Á¢B%…(¼‰[×ngfË ã|¾ Χ*K„’Ápo£Ãªåáë_B‡Ž8K VpŒx‘'<‡¨K™h!)ê?ví0¾®ÆúÞ\0®/-u´å2QiAZ/!ô)cñ/\¦Ni«á¡ºQ’z¡$ ƒ\jMkmyÊaýcoM³Ù:L±C×7¶¯/4 Ìrgvͪ[“–é”fþ©¹ŠÛÆË/îá[<ùè²)¸óM‡½@¦:I!;¿W7èF©þpO(I¸€,M„–ø‚vîÞN~XeÈ\Í 7tFA{?mOäQn8ä¬A²’#½fmE‘HÈNgæ0!T\w# Ý~«v´}kj鸷]¿áyüŒ`ÚjpïÙÖ?9N¥â –?v ªâš¶f Ô”ÌHjÎm5ú);ŒìF)NHºÓö«H,7ôÛv!(0Nu0èìü[¦ÅM^‚Þ[ y3ƒW¯—&àÆ )süøÝ <4~;ã>ewBø]¨ÀãƒPïzà|séð'¿ Qü€Üor<ÙêÏíŽ)¸njÃcŒï¤ÐÛPÃCBø :=ˆË¾:y¥©këN™jÙ3w™ §ÈSð‚Nòt!í%Óä<É‹I¹šy¼fºHò< Êhvͤ„8åJ%ÔïÑú!ͺjªq-µœ©4Ó·¯IpöÒÔÄ)}iÖŒ$•Æ+:rO•KRdl–ûVžQeèidúîì8äÊ´•/žh¼£ßë×0ô£S iË/hIˆÖÊ–ž9b€róHâ¬CÒ,œ4!öU2øÀÞ¯gä‡TiÈ›6ó:°Ïq÷Oß«IE¬(®Mú~mÅ&‡ÛWAÿùZ!rL÷[wíƒ ?ÈIi´»Œ–¤½ IOGKàÇ62I¥¼*:x*<êÊõ©ˆœaÊÐÝÓDèPzà:w¨ÒÏSuòuÂ+W@ªÐÓ8äe>‰Q¡ò¦±s©/‹—<üdë½r8&Û5L áº7ÌYrbu °í²„Xû|…OAG¸º‡S%Q ŠË•\j¡Á}«_Áï@µHZ@(oð¹‹2>ÅÁIˆ&ªƒ··¶¥Y ±¨ u•®@å‹K3<¥zUxjÙãIi 'v/ T)zŽÄy CCÍ]Êd^Wµµ0ÚÃ|$‘:Ü…‹€BåQ¸²Cß5Wx±¶Ü óœDÑ'Ž ïÙÔ¦öHÙmh9Bµlló…úö=­Ã{‡±‡¨Áõ¸yüžÚrgå{ZTVWâš¶äT¥ð!y.ãîÍ £Ki˜ºž yûÀ£_ô>Ì…~Ãz—›Jç;úÓÙ:›Õ lž0¨mÉÕ˜,ø‰/Þa@ç‰và_èè·yN}U~ê0Q:X3T»Ú.ß:‘'béÉ „&à”Ý>4h®«Eéǰ?Å(Ñ3p„²”Å/üŒ×>v'{8×õ¬Ñô 'õt¸îº…¤(¬€íÛï­tiM™jW ðª)4\÷Sè¡qs;ðjR,Wøî•ÙŠ±ø;ü:p7\†…v5%ÆÙ+ðÏ€MŽQ:ñÜ•_IbOßáö«ÝT7:ÁÅš'WîT\½’ó©€¾>## ±ÃùcµÇUI.&ýWH¦iüï¨^„3}$‰èç¡ÄqyAÑÉÛßs9È™kðuwÖ—&¸Þzu—ÊD‘àêÄ©þê²ëºú†)æ rÉ5~‚EhÓy~ºÿÇßIÚw%°¦¿8=³þ¾•Óµ¿> stream xÚÍXÝÛ6 Ï_áGgm4˶l瀸}´h[wo·{Pbåbœ¿j; òßeÇvœÛP`‰i’ú‰¤HÉ¢c=[ŽõaöóÃìÇ÷>·8gK!\ëac…®.øÖCl=Ú«¤©›*ÉŸç 7Œì_‹õ.Sy#›¤Èßï‹J•¬½xŒ3oþôðiöÛÃìëŒÃ4ŽÅ ÕeÜ ¬u6{|r¬øŸ,‡yËÈÚk­ÌògnZÍþœ9}3Ý3…`¾oì|ت MXº¶$³%½oÔÜöžxùñ%²ÙUªG<dz³¢nHPlH{¿MÖ[bmåÜuìos.l¿R*'Y&c3wSl«ÒÒp¶F¨d6çö"Mr (pi&Rƒ¨» îƒ[¹uÿÇG ·ïkzÊtÎpþäÁðã<Š[¢TÕ¦¨2™¯ #Éʪ@óÉ\Å2‰¨‹Ì(üH8öz+óge÷Ý4Æcœ˜¦lß' ÆN8öf‡a&zh0’œžY’ÇLgN»ìã.$s%àV‚æ—&‰}æùΰÄç,ŠÈÆ0·دžÃz\ÇÁD£L_É5fÄË^VøŒS ëdI¾.²Šd…딚k|ÁxÎ@è Vìî?¹}, pÛãÌ÷ÈíϪÙ±™¥RY¡XÅƒÉÆuî’ymèîWÅk" ÀðtCTaž”Ú@¬SY×DfÇIƒqÍ„a[3 ÓuÙsSÙÛTPù6ÄÔA:=I`×ê©jÕ¥×g1•¢9,î4÷7Â2À±°Kl¥öÝGce’×ÄNÌ3+tNƒ¸,ô¦™½KIF%ìŒ  Õƒ h*[W|ó"¿Í*1Ѫ¯+|•4©­¥d¶  S\N¹¸iÞy¬O&‘êëÎDþd ›ñ+U¦rÝíSÐUò¼m(•!¥,¶D@ªNƒ b÷,yÌ»v"DÌÝ0€ˆ¸ 5±¥^‚p,ßó—ãÔ¶SNož%s8ïσ|_„Ì^‡\)k3 }²Ý ÞÀâ[:KnN4Âñ %­´f2þ†Û$Á;Ÿ/"ö ÅO°ƒD@Ô¬,`9 ß¼£'ï’ÃcÂ_žbÕfž(®¢êeÌC£Ž†Ñ¼è*Yh€ôÝ› ¡t™/|ƘîZÀDë#[ƒk|tbJšîòZé¨?Ê·& Od Ðc@õÞË´VFu<¦ç¯èæÈ¯˜#?¼bŽ£#1|™ÑÚà"𽩕]’× q¿78èi¹Têe—Ü/h ˜Ÿ7Ï€àÎ…šGg´[Õ›¼7ð£|ÏØÙiL­–†¤ù2˜†‰®Ø güõ£ þR†{g¸[Lg¸ègx nJ#`/.ŸÏ=°›ÏçÅ÷9Ÿ+õMUõñS¡ndÕ˜dSylvƒ‘QZ{/Kàå©“Î×f+ëÎÎÓã®õù]wÊž‡jWŸgŽc2xŒÚò¦2¨N“µšGç«*íà xÔúw y‡:g|Ø3ÒÞVë:§îŸwyÛšð©7¼ÚåkÙ(Z³eÑûxY ÎÝÓe8íòp˜Ä=À»“Ï .äç¿àÆUfô®|ÁÝt7ܤl«~àÿ›{ÐÉu 1B7zÅuìrŽƒm‘¹~–y{w85ÝôÒ}C`¯¸ð2ºÒƒ¦é€,Ve¥p czßUFœTê6ʺfÈ+jSêK~àÛ+œbgÛZÐvƒ®TÛ3œ¸u¯ëúº\c#»€Üëa]ìûÖmdƒÝE¬;pŠªŠÑ ”ÔÛb—z¥HñFqSI¼\ƒ¯Ôø«°ª=îëVjì·IjÆ}$Ž,‹´xNjÃÅ0õí79l‚& äu*›%B/&B7.ð)_pz3¤[”eQ5»àºÃ>úï…9û6þ3Oþð endstream endobj 1814 0 obj << /Length 2169 /Filter /FlateDecode >> stream xÚÅYK“Û6¾Ï¯àm©* Æ“\•ÔÚ»Émí©\Æ®%A3L$RKR™èß§ ¢DÍŒ2Žsf«Ñúñu“G÷þsóÃíÍÛZDB°ÜÝ®#ÅS©‰Ò½ªgÒÄô‡®øm&xlÛ‘˜E]ƒ­T¨u4Ï ã©ŽæBÃå$¤mü†Ç`u4øÌ¹lÚŽ&E3Y|ï,ð;w/°ñÈY ÀFf—d,*JòNG?mz㦷¼‘ˆLÈ(©ó'Dð(“` ^¹f産UrÆ…8^éÚ¤LÂU’ÜÆFëIÁ½›œ<ÉÀ‚8Ëy.¼3$YÎÒÜ›"úÌ ¿+à>ÎãŘŠÙ<ç0™¿›ÍEƒžOx¶S~¼Pð¡˜1A´3ÐIái6)œ?/\÷Š›ÍEñr,X_¨ûHüeý>¹ÀuúW‡ë_®×¿:\¡?-ð„þ/2ç‘ë™0 YäjÇ9÷^ Òä ïýZyä3™ò¡i³å cK4©« U?+–K»ó9¥ìlS,0n ~…\’€JIˆî¨ÔT.É!—˜ž©ZMJ2\òéð¼¤>™$I£Éì‹Aÿ÷²Þ·›Ñ—3zÙÉE…†ÆÓ#ý/d1­W½vo&eI&ÕñQ\L‰GUf®æ¼sR”½ô3G;×JC@—'ÉÍûäó’›*™cRuÏM]ÝÛ†ÆÁ¼Ü˜!?ã  vu["Nc³¹Ñ©3(Go,äú­…kªV˜ï‘öˆZhR¯éÙÙ¶sÐo¼Òœò·Wy´E ª.“ûDþë>dñ®öo`utš?BÊCƒuÝЀÞÛ]ZVmg‹Mêõ5Àpxêô5@çŠåyþt$s‡ñ* p´Ì1ð‚¯œ!òdhÚŒk €#Jˆ~ ? :ϘÑèÝ»w£àí@%Œ§ŠÄŽ( 6ºsY¤\Ÿ„½1$ÑNwÇÄË´“åœôÅIÙH0ÅŒJ^ÆK4Œo›½=ãÓ_‰nøÝëÒßõFsfº("û ÙÏݪ<Íi:…©’tÚƒSî[{…7é„»Bí5Þ÷žÈìo÷¦a™Ø›tûN¿±7Ý•_^kÀWßÓ¹µ€-ó¯g .à6·Å!WéLLJzÙ ¢Àˆ”ÕªŽf˜xóêx Î ê5½YÖû;HÛ‡1ä6žúXvþ=½)Ivc±F}ƒ‰WÅí~XÛ)´ÀÇ9´Çã G“—=?=!a¬Õ€n(#:݇$Üýkf@Eš-¡ols)/?6°ÓIˆ¤Ày” UuGº¡•=i|°~1$?Åãs%ú`« lÇ£ò÷ Ch»)ÊÖµ0&÷4€ }«^¯i`«Àæ C§ë þ£ÿs1,å¥6ôÜYûîkë;K luР{°têßœ´á€^……§}.—½E|­Þ7 ¨4qIIʲLÖÇ2T9 {|¢!U®CMW`r9'à︀?+B|Ç H ‘È%ÝûöQtD¦*tßÖ“Ü!8&ÿêø‚¤z¿Y…µ‚€nßP þ\Tþ5i|¨Œÿá·x­}bŒY†3Lßfü¡ì>9eN~lЂ+–ê¾jlUlƒí‚/ºŒ—€»J“ÞÿzÁu. Ùò=/,çIW캶8ZnŠ«º<%ô4‹â[c7Ÿ]ÿ×á*pº­Wû%¥ÿOßĉ‹2SMg;´F/Z©‚´–pó î¾­½v­ìŒ—Ì3K +ož¾#µ)©%éêT ÍnqµÕ~‡@<8CÅѲ^YÏ8µE Èn¨dûa7!„aÊô¾ÖW3¸;>é„5ú ½*ÝÙJ9ç]Ô¼*:e–»Š~䔃^Sy¢`*™0ú«Eì oäŸB+™Â ÚM¹ á±Q£i†èÔ£X‹½äkBõ÷Ø‚æC'[å£ _¡4ÄôKig ve´°–™Ì‚@P.Ç•= õ¡FCã\åÃNq]z¸öj•̲KÙY«Þ•B]sæIÂ%QÏÕG¦Ó^H&{os0äy§vLÇá+ÚX\S³äŒ!OÿyAy›ÐúÈr!ùð â–ë%KxCoFn‡^€ÖØÏœ+»ôB(y ëa—Xü»©ì™B˜Rââ^Ú4ÅáBöÔIšÝagÝw3|QþF[Z3|üP»ob¡ÊªsöxÀYß éÈ9»m§PÞ¶né8ŽÀœÿà?ué'Øüq©[,>Èã8ÄÇkÚ*ˆ=³Ì¼¦„êVògê ð!¦¯©‡UŽË@/÷–ŒGËä[—!’c´6(Q…0~L¡Ž?m‡øò%›>ÝñÜ+2ú:Á{Ry#AdŸ…Võ/mgpŒ¯ÿ$qµÅ™=Hàü¯´á9ú2n4äÑôšãÓŸ+T•º/‹%\-ÄÍDÊøÃ>`úŸgÎå1Ä´}Éôß²í0Ìú˜ñYÄ‚›Ñ Á1þ Ò¼‹¢ endstream endobj 1823 0 obj << /Length 2753 /Filter /FlateDecode >> stream xÚíZK“Û¸¾Ï¯àÍTÊBð @ÒUvU6Yoyk“Úu&•ƒãJq$ÈbL‘Z’Úñä×§¾Di$+Ùä‹B`7€~}Ý >4øîî›û»ß¾XÀI¥äÁý&ˆy§Š¨(¸_‡¼mÚ:/?-–Þ÷íýÝÏw ØÐ€Yªœ0ª‚ÕîîÃG¬aüû€‘&Á£™µ "Éô‹àÏw?ÝÑá2ùÑ2¥$QäÖù×m^à” Û­éÈ0/[Xª¬6þϼ±ÿ®ªµ{¡)óý^·î¥Æþ|È[÷ÿ öWÛÿF%͉&‹¥q¸®þÞT; 4ÍùÀÔ|cç¹5(xòºq‹€Ã´ûÕ8^~InÃãƒ}/YûSv‡r­q ’;ÚЩŠ ×¶_ Ýà‹ O5<(8u‘5C¥ù@?ÚIãӌĔûY FÃêP8ÒŽ][»ƒ{ÈÛ•Ùº™aÏXB’8î0ÇQÂ1âž5å‹KÂÖÒÖ»}û´€ƒg2¼ßfí‹…”aã—¸ÊF% ³rSžÜ•z‰ÇŽG  žÀst²C g±g -µÙ/ û#Áé´ÌŽ•U¹´+5£« ì$/AlÒ,œ§iø'F˜mÅóJ½àšQ”ãÜ9 !—ñ‚ä ó³òy‘P"UwÜ÷¸ÅS”:•½žÓ-’¤ÑYѦ$V‘¦Íê¶±¢ˆ¸"s$ŠÇ¼Ý¢ØàdgÏ€uÔØ)UêZ{Cråz– $‰’~öÛ¬hæTXFçóT<«æG‡a–÷̾…SìDO/Ú7qOaí4†#J%Nä¨y‚‚†n³ò“éKðeà?ÌhYµ¶“mP17zåžk­;ÔŒíµþÜ@ œ†M5·zbK.ˆà+èG™÷uÓͨ„pÖûƒ¼(,¯¦u] Kiué–éþ.ÜÆŒàqt–ö$eǶo ÿ¥“Â6_91v§Ø­JÛ¶•k­÷¥h¶àf¾8 ƒ`±#ÄœúÈ‚C#­ŒÅ‚âØÑàû/8}P6‘º ö­s&W;/ÕØçªžwª„3ÊÂûAxúçb  |È©ê_µ½¬vÑ\V“ƒ‡Òkûü§{³èÂñT^°jž‘8õú±6í—¼:4²Obã!¡úÚdèDáá-®Öð2&’bÛÚv›­m§¬l ¨‘Ä$Ô?žÆa²©óŽB;Ãå~!@{Á#ØÛ½…8Ûµ`—å:«×£ ,]ém†'‚[ƒóQn*×é¼½±†X„8óÐÚ§A Ç~Á ëúÉ>AøÚP»£¤'šMhÛGDØþãдöÚ¸ùÆ,¡ÃØ K°¶#>ÊÌ`‹É¶Pw:+¯ðY;Qý¡Q÷ÝÌ¡qxãMöÛÌÍ+)±žš‰ë8N-ÀA64Ðü3ž¨ö3òæ•QQÐËÀ˜›í€‰`(xžEª¼!?EBe‡DG$Æ vš&gÑ, xB"À>–ÄñÒŽGlRB²ÁñHÆ€„'\ë`3KÙ[êQKâÄxø¡‘uK£‘÷l+Š!%¥)s`["gêüÒ›7oF^…ÕB¡—–ìhÈ@©‹žW‚Á¢çADfÉ(ŒõÈÐr?†úhÄPɈ0 ø8ã}2ú]‰¯ï‡#–›ÁõÊQxþ즷tûY2A¤s"]”8q»êÐÆ0ÅÀÍø˜y‘:t_⊀ðõš{l?@"NÔös>““L‘”¹ðÑlmê!ãÈe"õgû„þÛ§êàŸ†n’Ã{€)àE€Öð]ë^(’˜žs'Ø5îd§ÄÐ`§{߀W2(…Rz ¨Ä6‰m¿< {íiÒ/gh&Dö@òp]F"ÿÀÇáÉ“q€Ì÷ã¯é‹S\*CŸs Œõ…ïÌ£9™’Hˆç!óYc,‚äçÝÆÒùÙN©h`Ñ•ˆ!Òmõê³²A0qa;˜[Al;·rä2uâÆûœLîlsp./›VHqÅrõ1nNŒˆG݆ 3³k;é4h_W{]·O×D¦(VDÄì–ÈE ¢4}ƾQ`x7D¦›Qd²„¯ŽL¶¥&Q'R ¢Žê/B@ü)¶Ë7`î‰)öâäbxÜ(¿i2G"æs$úžÖ×;Úëq¬@B|…›½<™¯F †ÒFsz?èò“O* À4ÙÅfÓ˜’ô×y~£B7üè3‡I4\’‚Ìöò2oó¬Œ^ãô榼B:Wb¡¡«WAòÔv©š®ë¢F î$¯<Ôô°ò“`J‰[LVȈ$â¼¢€WS"ºÅb{.CƒutE()0†¤É<”œ:°ÖÐk¡1ã×Ýcññ çßMUÞ²²wÒ]%À@íÑ ¶³¦ Ð&ÉdëG•F$ï G@/u7LI¸wyŽYˆù~—¯]˜K|pŠÝC^´Ë¼œ- Š¥ä¸Ltæx„¹“í«6~×ÝQˆpçä2Ã0IÀ+tr8”ûlõù$£äláLÊ;Ä›ÇÙcë‹eÏÓÁ’ðI:üºõð˜=D°&‘ÈëÖtŠ–Ëž©rð½¾àó˜íç¨-E*H’NJd6¥?]ú1é·sJ ‚Õw°9”+ü@èÖëÐ% Î}t)ú 6{À4½Ð¯*xÐe*s‰1nnÈ—Œ$Ü•…~3çä1 ¤Ls¥Œ]æÊÙj¥÷í3…Ž‘œq{œ%“±Ûsà\&¾h-Ð7˜;0´eQï°Ó_ÓÄ ³=só·Ç'GzƒØH¦kzV¡c"Su‰q(ûÂ3 Î1R—ØÇØÖLÞföl+ÌpæãûÁ _1Ò}W€æÊ ¡5_ ãWDf 7êf>,Lköz•ožìÃîP´ùÞOÁ/ð>SŠÔË’ÛO¼°ÕY“›{ÜŽXŒ7>ùÂÑ­gí™­u³ªóéW$ÝgÓ»éQâQoÙ¦ŸâAnÉU|Í—xóC¤&jÛÏq¨Þ‚Å2üý6ÛÛ¨ †î ÒyÎÇŸ þ©ju3]ã¿ü4y endstream endobj 1831 0 obj << /Length 2605 /Filter /FlateDecode >> stream xÚíZ_Û¸ßO¡·•X%©ÿš‡ MzZ´Éâ€Ã^h™¶Õ“%W’»·ýôá eI«Ý‹“+Ї9$‡ÃáÌofèÞÞÞû›·w7¿{IOÊ cåÝí¼P„A˜Æ^š'Ayw[ïÞß”}×·e½_­UšùhŠóÑÔ½î˦~E´¦2º3Ô „«Ïwnþxwó { Oz©®*"ñŠãÍýgámþÁA˜gÞƒuô¢X*M ]yŸnþv#XVþµ{ß8'YÈÐKXªÔËܳ@Äó ‹L‚€QdIþ ˜2Ž˜ÅS¹^”4„”ãmÅi âÐ1n·[äìtñä¤J Z D„Kf”|× È ‚\äï/´-âŒîùÍ›7öÖ[°d<_%Ì ÙÙ®>Âßð·àï–xœløÏŠ4¡€HÞ½]ðûɦLì®àâ3~kô¶*»þG f¤b\ÁIHŒ&bt;aô…‹ÎeÝ¿–êk–ÞÎu…´VO_%ñÁüü:ú’wSÖ¯Ó_E^0ii_â¶ôŠÁú#@Äëâ)N‹$½¦Ä¯Õ¯Ñ‡UdB‘W>6gáXø+)üæ\m©[Ö]NÁcmÙ›gÔ09´X¤GÉ·k’gAš‡ÿi`mó_V¡‚<“ÿÏÀzÿ²þ†¬ƒ¼Ÿ¿Z¯Çˆ'H…,â—Y\…­Iš)ß:æ_@Íu˜H¿?è[ŠðIa-Òº¾¬*¢ž;C´þÀK;È£+&v+`ekÐÂew¥9£Ø¡Â-;ƒ54x‰·Äcz °½ãQîHZù§Ö¬q· ÄgÞô vþδ­Ù2R!è)0Ä?I¦1'~|ÿ¤¤À=ƒ+‰éÛ¦©¨NÐç¾Y—uÙ—0Å–4Кc³RÂÿ§ÙÎpSÍ9+8`Æùë+icÞ O㺦FÝà7÷«¦Þ›–hx/ :—2³õ ëë®=›%µ†aŃVu½]¾¿@¨ÈMz§«n‘WN¥R7­oH¾A+†úƒÕÀ9 #âP—uÁjÆ‘wà)Ó]S³a’àRa×ÉÝnÌ¡¬1HќˎZôlàHÑ<²ák»ÌÑÔíΛ¢ÒOkv<©îmi˜ø%3™ªê‘–ºí6š%8µºè˰< M;hk+û‹×¦ ŠÕ!p¾}``²ºvp4×÷Ú-šiƒ2£-¸ˆŠÑð¡À%³°u €(ãùÎâ¹]ã0PBŽ-Æñ¶ß_:(¤1IÎwCó|nÃ4 .ŠùâSňDr¾|öTàùr˜0’$¨_‰V$ »æwˆœm[C,U¡Ÿš¶}$ò®i©aƒ86ЦÞ;ûüeµ"E%Ø,znÐ Ïìoß±Ûèþ44;.ÇèpÐû@Ó!Óu®º)÷6nÑ„fS™cçŠ:ÇŠákwîÏ­ œ¥ZÌ9–ÀûqVâkjÄV‡Ðß¶W;XÖàjA:žfÕË €òž‰ è3\D³ú8è” ·éÿù‘YaqÊ^ª0dÛ‚Ô‘Rb†Æ„2¨Ñ>X}ÐŒ‡’Òù$§ištqÕ›ãë+ Þ(VA¦òo)x#¨Ês•¾œÌª4H!=û†‚w´Í¸àeÆW¼ô"œÌŠÙ(R`Hñsø³Nd¡ë7«µÌ á&Ü‹¡&°Wq”?ë4[d!…²âú›xj ÃiöeÅ—§Í ñ ú0ƒºÄ ?>P’L^èRæ]kéH½…P¿ÆƒêÞì¯É¤ÿÊ8T6çŽr¶Ø˜ÏÑ SÊ0`¶DÕD›üT~Þ’D5@ Á0VdÊ7àÀØpá#ó™D|fľ>ÞèrBˆS›¿›¢':`ÔB˜>3')†KæPë#÷Oº…6€ß*>J(óùdj_Ö [7=56<ÞÒ;›´IpC­#T4N &¬+cÓeÉ•˜«- ¯Ö4·=.§´¹5àšæñp(‹Gˆ¦r<CÂá OŸ]ŒòOCH6„LB¿6C‚a!AHÆÒÒøÖœL½íhܦl@|8ºn$RÖT2""j"¡óóRæ§© Ÿ†ô$dãÂÞ F§ƒ`AasNA₇%m •ÛY†6o`¥â@Éäòx<÷"0’8•®Ä—á clsêÃõ(´·4¸áIíJúÖhìÖh°ÅF“Ä>ž ¾» ¢ JW”dvKGãMé>+ ü3?±€nZ€¸»oàâ ÛÇ{á[ÔùYËÚŽ%^²»‹Ù™w/.6Ó€¦Ÿ&3ãS/ä1öV3éèü3¥fîEf  mMcƒÿDÒŒ³‡`Óf½™ºŒA©€…Sa÷ì‚8‰¯7#ï§Ùö"3®+€ÒõM˃pÆ…ëšÜs§öŒ ºäÀIrñZ Ú h£KNx÷Dæ´HNóHÔ?¡¯37MãøÂÃåÑbr’[—CeheÅäK.k·p¢l&’Û“ß R¥Óîb–§öå ᶨ•»$ÈìjDù>ŽñÚ”sY ”ÇSUeoÃôy_fi¥¯ï™à–=Áœâ ë½õâÂf~w]ã 9ƒÃpH a‘Ö80³Ê¿jÜ2åànì<áÎU#+™p¸GÛØsùbïæR1qm‡µf‰$(;¶eá´KjšÑðØM륓iáœG]ÆEÚÍv5Õ–«¨AÆ£v<)@-¨ÒÛz|c"ã§¢Ì=¹ZÊŽ(t—™ße&6eÔÒ408’ì ·M}‹èØýTi^DlÕCNC´q–Ct^DÅJ&ž{. ca‘ŸÌ0ÞjNƒ,vj†ÁÁàCñ‡3VA¡â§ ű ð¢2Ú¥0ad!ÇÒk—máäÂþ­¶ÀTÈx‡P¥Äú³#‚EÄËŒQ€ƒö €UÄ’„ì>[ê¬i¬dVÒ¸ÿpw|˜­5çþtžç4˜¡ΡÆAóX‘\@wòäV@arùõ­oveµüR›já@»?4ÛWÏ„ÊSe¦¿Íÿ&Ž ûO¯ùC˜gêƒ> stream xÚåZK“㶾ϯàm¥ªŒ'[å=8ɦ⃫ìÌ%5ÞrQ´bB‘ AFžüútãA‘”vf4ڬ틴€F£»ñ¡»I}Œhô×›ïîn¾y/YÄÉ”âÑÝ&Jx”d1‰et·ŽîgË¢5mSTç ž¤³?׫n§«6o‹ººu´Ÿt©s£]GFÄüÃÝ÷7¹»ù÷ ƒehÄWN£ÕîæþÖ@ÿ>¢Ddit°£v‘TŒð$†výýæÇêŤ„q  œ³¨?Nˆ?}rCJ)ýŽ~¦”Wk'mÍÚè¶k*?Â=Ún_ú•iuî‡Ö›Ñ°e]—vóAòoÞó‘04ZðŒˆ4u²ü ¦ ãt|!°]÷ì*Ó­VÚ˜MW:J»Õ•ŸæŸz·oüŸNÐ!·½k(zØ«íxÐû9S³¼4an5 ÷¥ÃjFWF†;Å1 ÚÝŽj®9–O&ì|xp +VÆgE«wŽd…æ¡h·ž¸õ$ð<רצ@wóÓ£v½á® ÝÍ…š5çXx^¨°©3»è·H`(å³Ì£³º+s53Ûº+×Õ›9Çp¤J£$œƒjGiôª^k×îª èþ\4jü×}Y¬Š¶|p´U½Ûçc¥œ*pN£MWú•¬ÇÁ3wõ~‹ãýÒý®‡;SÞ> ŒQôhï[×ß„?œXùÎù;Ú-j[¦*ö{ÝºÎºÖæ¨ xàŒÚ=—žC^¶6õÖž 8‘=¿®gvqJb&¢8aDÒìq°H U=VŒX¤ŒG±ä$ü14â)‘IâYœŠvJ,“ÊØp¤K•®D`Üèhs–smÓ'IR gðC¥Ã¹%€\ 2P’ÑŒy‹cèz+¿{÷nC0„/@ÔŽëˆ\£ûEL鬨L ÎÄ`!©@¹ ?'n,˜*:þXî#Šå>##Æ@ØÕ®gÂU(ö"Ž(ŽÉ›É¾ž5‰þÊÅKæ½™JŒðÖ‹û´¦FZxå-˜ JfN…„—˜JP°Õ.æöQs¥Š`‹†«OÑëL  pÀÿY'ft¼‰„ØâòÃy ÀB qDÐaÔçABÌÁò±?@Ë9§³Î#›ƒlh¬÷=ÚÕs@ÚƒëCètF_tÂ¥®:'$æêq]Jʺç« qÎñ}E˜SYFöÎáÜÔýÁÛXʃûoê®Ê绿ÅÃo'GÀÿˆ¸÷rØóV°°÷Ê”5ùo±íîý&; ¹‹ )ÞîSû}¸±/F™¨C’ÇŸ °G)ŸIÝÙXYJˆ•sƒ¹¶]Pk‰˜,¸,º.°–ÊåH9æØ+ü3÷Ã}ò‡ÿ÷4uà”·Ž• Äû%ò³Œÿ«?q•{’i‹²tÍ¥>—‹s¼]þÆißÌd"!D±º•˜8¯:ª+“„Oz½ >1U­`$N{ô  ­͆˯ YCWùkÏmhõ2Êཨ>g}TjP Q,Šý)¡AcBÆaäô€>·|àj–•庩$ ´èÙ\8î(0˜=^ãâµÀ Þq“ò'TØÁu6sÈ7u^«M(;øJ„KÇl™bPw¬ñíU›Õ(À¤ßìC± ªZ×Üév[¯/)vÜõ‰¤ŸkÛÿìLÛGWU;õèªÛ-µOMmê O滞L½ßarQM˜ôE,rAd&ÀhèŠÈL$ \,ì Ìs€Þ®ÍËŒB3Çøc3Iaå,yIlf>K\öú•"+Á6›üÊ¢«¢|9ÝŸF³öØ”þ¬…=¢Ž#ÃSâ‚ ÎnšÅ#¦/Žt.?µ'Ø!’˜¤’¿ Ô¹°Ô¾0 Š„ ¨?‚ &¥î^ßðp£¿,óÊ3ãp÷&Y´×ú_O³rÀîï§|µÒû6Ü^­†È/µïóèűHQlz}œ Z½Ç9r`˜õ{ŽQ Fφ|Ê´çx¼ŠT=Ÿ×Qu'qV"Ò+L¶ö¦#VŸ+¦xgŸ¢ÄA­B­ UÐuã‡æþ¹Ï›xxºÄ’.†¦ öæi:ŽPwÚÅ~lö3ç¢é+!¡rÌf;ë<Œojæß¿©å‚ÄÉ¥ L%Öá„Û<°(K·=W}î§Ö­°a•úLÔÝè]"ÿBa{ÓÔ»iQÜGa¾Œnê§Êé£ZQ½¹¤(Îí}Ÿ\‘pØ–ÆOfqX›»"",3)!ãWŒH8è#Uâ%·b&Řb韫¯ r„gk9Žqžuݪ)£Û f[¹ã«9$¯ö|¯=ÄÁˆ!›ýÂÕ©éN–2ìd]ÿbj„EÄÙAzýòèér„9Å9`•¦Ég+qª•¼~úb¾{‹ë«MÑêK ˜e‚$×½Ÿd ”$_ŠËü¡˜¥è¥ò÷Ŋ᩹ÿÍcñ‡?2–äõwã—£Ó)F ›ý$˜&E(`.Zmùþ\ö 9SB{OêŒöŸuÙÜÀ–XmàsÖPjµõzüÚ _#÷Ç“Y¿È³’YA(ïåK>ÉöI9§{#%ì˜ía§ÏŽŒïãƒcz²Ã7H2{½*ðífKHÀl ŸÔ=ПÜGYÐYk[™Î»²µ>f‰¨-äjŠU±yðÄmXõe“ÇTB,>ù\ ×bþS'Áäì°­í7a@³ÛwÍpW[² ¶á!?kÀr"**}Šˆ1-5½Z«¼œ³YißÓ`ß–ŸÏXB@¢Ëb>5Åc¯ EdÖgàAмÜÕfüÊoúe¤’àÔÉ%FžÿÌQd$æþÍ8£)8©`‰šýi›ï[› ƒÏr zŠ9µùC=õbñïwnå endstream endobj 1746 0 obj << /Type /ObjStm /N 100 /First 966 /Length 1568 /Filter /FlateDecode >> stream xÚÍYMo›7 ¾ûWè¸í ‹¤HI@P È6`ж‡mA]k ÅŠxHR û÷{(ÇEü‘¼Jlt9$à+Qä#>”DÉT²„¨d ”4äÜeóT‹ 5p%š‚T Y%dî=%d«Þ“ƒuB¡4ƒÀ¡v3j¡U P Hœ1¦’Áþ’ë¤ì Þ™»IüËÒm¢M‹x¯%‚y7²²o€Ù:<“ÀDÝJÌÚGh`i>Ì,°vÔV›+…—V¥aŠÒ¼Ó'[}ðÈ­dWÓ ©´Ñ$Ä B Ž…S·e²ûôN®}` "Œ©VXs¸…ƒäT`¿"ššxE›!¹6=ˆ˜Xõ8Àvhn¤Ÿ °H¥>¾Zò(alNl ÁNêA¼sj®* :£>)´g&éXœ“‹9{@Ks>"7ïõ@©”à Ag©ç‹QC œ[g§á⳪ Þkª.ÁU#qÉ!x² p‚&|%1—‚§äT}°MοÒNiÅUÔ? BóN„BsN®†¡N Ú$¨:Ë“Té iÚ!¹‹’Û ,y¤ ÁY е–>–ƒ® 3KÉ­ ‰È{A­QÅ s‡T‚±çmEƒ 5ä Ú$ËäÞöÔã_Á‹©ö^XÖÖ}´`&Ž¡±"î ŸVÅ{‘©VKH°Fmvr2›¿ù÷ŸE˜¿|÷×b6¾<¿Zœ_]úÍXÞ¯fóW‹Ëåç‹÷‹ËÕÒîm¿.>||÷lù%œ%4hÓ¼X·k{;ƒ­ >иþ“'ÝÑ‹pF«]ãU˜ÿöûXñ¾æÏ?úôövEX}ÑIÛP<Üpræ§‘ªi5â´‡M¯?°Ø‹¬{0Ëþó—Ë÷¯Wá óqæo_®ÂWë·¦í L9<0u40u#0Ff#XvžûBv„(©îFIå~QÒë¨>=?_ÂèÙêœpXýœpa FלÍ_þóªÿòñüïÙüÙòâÃâ¢;Koç?Íž??£þáøÞcfØÈ£úJ-6USŠì‹G8beAïiçë0ÿqùfÀÄw—ùqyþCÌß{˜Ž‚Ãý‰/Õ¤±:b!lT#“ÜÃì&ž+š“jCñ–Õ¶O1W³E”1cŸ:dý>8KÚMF«‡'c]'c»,­…už¯Y y-èZ°µPŽ™Ô8 ¢Ÿœ…4z™ÆsÃaU¸‚ º;™Pa/­¹ÕØz‰·B"†ôÆa?†„ˆDˆ¢`µÒ"‘Ì1ù9Ú°î¨|³u^(&/`Œ#yáœ( 1”±Š~»í&åØk l H2‰•¡ZŠRÛ}v›q”‚]e³Å„¢‰±ûö‚7ÕhmGiGÄÁ •$KF°ýæ ¼0”Š|C Hh_0Y,¨$Ç€ð× ˜©ún Ql‡Ff‰Õogkð/ئ‡pì‹ÖÅ E”8†q<°½Qx=üDÛS~Љvs¾e´:/2X/l)v4ÛeÀ^E0ÛM+æR#x™V‘Èu#sÃddZ7ùhI‡ÒûΪZßJ‡vp:¬ÑO¦Ã†â]é°­~yšTT,|Ý›7[ŠÒ Èò–h­»œT;œ“2ÊI夌r²©¨ª‘4O+fl›-Ó´¢d©X$ìdí¬¼f»,·|0ËMYÞPtNëD¦³£À%}R‘+ŽÜלQ­!Áïýq;A¨Ðë5ó%¨¦=[c»ßÖX“m䯔Cm*2fš@M+2Î58žVÌ~ͱ˜Êû‹T$ª>‚·¶švßÚü©ö`òê(y›omŠ,mZÑP¿k‘ÿåµ£ÒnmèïчkÃMÅ;žmEóG·‹¸›Fÿq`Zý÷¥IE&Tr¹ýÿUCeÙ%é`ò˜ÉÛPôŸ 7â6­˜ý岨´"T ûÎømEܾàúP"´‡’ÃO=AdëA‘ä?pN*fXôŸÉF"x[]´Û‡G°ìFPôðÚhmpGÚRTbT¸7rð?\2ê endstream endobj 1846 0 obj << /Length 2203 /Filter /FlateDecode >> stream xÚÝËrÛÈñ®¯@*“Uæd<¶*Ny“õf÷‡­Ú‹½•‰‘›¸h™ùútOÏ€HÉ‚%[I"š­AOO¿§›<¸xðãÅ÷—xŠ@–j-ƒË«@qÅT¬ƒ8X—yðv¶,Ú¦­‹òz¾q2ûKµÚoMÙfmQ•Ï ÷ÚlLÖú¢˜`jþëåÏ?\^üv!`/ˆ –@U2Á£`µ½xû+rÀÿp¦Ò$¸±«¶A¨“qð&xsñÏ ÞçUxE‚Z³0t|šßöÅ\êÙGüÈ6À"ð£ø¬­Üsm(+\qC_j³­æß‚“#ß ”¨¿‘Éø yZS›¦nÌ;®9ü zkÈ^ªYš¦þ¥­i×UN[â[Í6ÛlÌ‹+dë h—+ÇiÑxÖ3wܼ¹™ >Ëv¸k°aÜ©`!BEDÛÙUùl.’¾©á Ya5`VÒÓà™?­ÌUI(`Â>IXôµÿoD3zܬ«[_î·KS\9b–i7UycÖ@8tÍd¤Ð"Ô îäëO • •€å(:ïË9Èfo5 X”E[d›Â[äMÑ® ZÎ%Ÿ7Y]g$tUÓ5s…xøÇÔV:»vkË Ší`õ> ÚЙœÅŽí8–)SIB¿©¼Z@Ôµº×ÌM '(¯¿³L`%CHcàXX§PA ¦?ã[ ãºs­…DÈ #Ëø.°¬M…ŽÄ)g§˜Þ6)ãBô·A|¨c&µò„k\¥ìåzòdqbí>xH4À¼vÑ#8Ky*\ôˆÀ Uê<æÅ‹#õa8®—‰ôîœ9ó á݇Ýz€­ƒ·‹ˆóÙÄò{ð-49GŒÛ·BtEÄKÌùRŸØý¸8á`ÖT[ó¯¥s†ƒc÷ÒéÀþ4ˆ&„d1Ý|NmHh™L0â»óDm9ª=ùÖÊ;Ùû}ÓÝÍLñ5¡@7áCœM§ ±øÚÎÖÛæ‰K–¨ôéí±Í~º"OÌI§1Kï&1Éìu òã.5^®±ŠP k¢¦"ˆÊƒúƒýG4»Ât‡x›õpÛâ;ežÒ1%º}KxȃzkÄ€‡=›cJsDö-ôyaÅæ E³W˜Fiçh°@Ò£hšž96ʪµõw…ަÓíª¦)–¶øˆR*õà™ ¦Ï}Ѭ ±4í1%}ÉÎU%VË÷fÕºÿ–ù`T?È0­¢øÈ´ÝΊ¡Êߪc»¢ɬ«ý&÷Ü ŽâÔ¾òs¡¤rõ Bh¬…µöT¥!:kèY´þ¬"qÙ6û€º5„·1U•;ÔÒ¬måCõ.áú¥gkµ ”ŽLUŒ×j›½iœ9MW9i¿WÝÿ ›fµLˆEYÁuâ«—4½mž6Êjüê}cZ”]>j”õÔ¤öLäjš†J“g£zæ^/eËU>ù½±È0v'‹àPá'©¾„û*ç_ÀÐP'Z‚’»«æ³qÍÖ¥+GI£V ê?Òö:¬êÓ)lyÚ¿Ÿ[…ý݆q„¼Ç"¬~7ØùË“ãdÿ; @‚ßMâ–äxÿÛeçLƒ4F1 çLi]o`m!BiÑÝòŸÓ’!%ì¤Ä~EQ~4õYJ!””j%lœc(dIx,Êü!X¤“ãšÃ­„”_”›«l¿iéÂëïÙþÚwà®Mp×x!À¾…ˆ‡WaªP0QlMV6Ý]Øç§…»­WŽ Œl»óÝ[ÈO¹5‡h¨*ä•‚õð¼Óı$Ó‡¤˜Þ6ýãÊÈvèž²cM­wuʇ>å½¼¡-FñùÁñ4Rg*îb›º"c”>/ý±è"IÁàÓáW¿IÍØIÃÀ´“Eþ Ž‘Ù¶•ÚÉÛB­Ó€ø??ï¿Qü^÷n§šNWH¸ÿ .ú˜3ÒP.;_Ö{ó`ó'Ômy˜ª[þMu[nÑ(lzñ¿Ê6Íÿ´N©ÔëˆQ3®Ž´0΢ë=Ná>½ª9)­„€çW/ÜÃqÿK¦P•K’×ßlxCUêxà…µìa7mpóÒ5wnŒÜÅÜvc¨ Tf[WŸÌ¹`IÔ•÷] óC]Sÿd¼«à ö°S»ïlÙžõú nÇ{È­T“IWùãäÉuά§ÛÃØ&!¢JãǤñhTè%°.Vk7„ŒcIyÒÐ:+ЬFžU(¯uwΚÁÀq™ùYæj“5ÔT PÇq ÜEÝåÂ4¶©èþ ”Äþ›Cì¯×-ኒp»Út#XăàÏžAÛ¦ï=äÝ»Q£Ô·å€xilËPï8—¥© ½ªÊ¶®6Ø'Õ žÀ¯v ÁF !-H V0c ±-¶~ëô Pnj7/§N ½YÕÕÖIØöz‹M»(ÎM‹›ï†áÎíH¢wÁV±3±¶?V‡ ôˆCk^nŠëÒÊ£¦ÎN×…Vý™üâdÝ]‚vUSÜþê¸1åµ ãÌÔ`òQ_ˆc!Ü€g §œéµÉòáqžS˜þ©Ìͧ;Ï'¹fZõާR‰]æœZê© Î9 wÆ|pH‰wlÐÒêÛÂRƒ-m÷ïþ$æ‹…³Úph:6DÈ…Î8ð2=E,†s BΊæ—l³7w‹FAÚQqO6§e¶ÛÕÕ®.2T<¢²©pm­B˜|O¿d@¸wtGðÌÙ]Œq ß) g ÑIüT¶¦†ˆÓ~±(R&þ™H!Ç¢BÊm”9Od ø\ÂúúàEA¢È³6žjüÃBZާü®ç|â†Ý#8¡ÝUB‡YeöjO©6™ý‚ó%“‰š.…ÿµhZôA¿çPI(àžŽ9þ— vú endstream endobj 1858 0 obj << /Length 1512 /Filter /FlateDecode >> stream xÚåËnÛFð®¯àÍTnöM2@$iS @‚6ÖÍÍa-­d¢©Tlÿ}g¤IÊOɉŠöBÎwçµ3Ù]¬ü>y7›¼üÀI@J… ÁlÄ4ˆS‰$f‹à,<Ïšº©²b5hœ„¿–óíZj²²xáp_t®U­Ý€!‚Øôëìãä·ÙäÛ„G•"‚e0_Oξâ`øF,M‚K;kpA%Àyp:ùs‚½˜Ý _•̬”$¨àÃòKO1Ž—b‚£„K§……ˆ8Y÷gœEã𓪦‡ó)ÁáÅ4b’‡$i,Ä€Á¯¦‘ 2ü®«)a ÖsßÀZ»KC¡¬Üàëæ¢C‘tHU,ÀД„W®tdt„@˜‘ "1Js:ÚYªbÔ’f%1ï›?ù>kc•KçBKcD­šm¥ë!ùG“;5Ù â ƒsjcéëÈ®jãø®5˜|ÑÊà÷ ܮªbÕ….™* ]|ùŽÙÒ±$vlßÀ4YÃæB; GËŽ³"Úäjù¼¬ޱYUš7x‚.Ëj­wa °•ÜÒj¬eWºú \ø/«lJEøý†p+Î9ØÅAÕ8Ï5 Žx8® ¾F9Õf®À~9kUlUîी…nT–×È ,ØsìÖ SÈI nLHr¶H]²H 8K‘LÅ}$`v#J¹§±+Û.¦Ç'E˜>ƒç( ÖQ®t°¼•ôNÔtn'Ö•á¹óñ¦Ío„À(Å)ñùMb ¾çôÍ›7#ç„ ìͧ‘„Â';Û;2â B÷°¬²Böõ€¸G¾ËšSë†ÆÛÁW„`Ì¥B@"”'7ö9\¿‰£ü¸@½xîÈ<ºK¶eÏå“Ãô÷¬>)Žë’g%¯OXmÿ[bLáë38ùo9›I€RšôgÒள=¦vTz¸rè3÷¨ÓvÊECƒ§ò åâ=å YæØl€ï·>mó&ÛäÙúãï¾#^ªySº®Ï!²Â½G­õ¼Ò¶«v#Ûê°¶üLŸ‘8)>fmímëÿ+µÞäúÕêo&R”ˆôú›q¡&ØWŽˆ8¨üî±”ߎðO¬¾7~|Üê»þ)ÿsȶ1L2êDĨå4ùÅ~FDÐCCú ìy«€½óÍÓýr7:€ÃÇH7ÀÅÄ;Ùlšà°ü[ûœ±²gPåvÓå”mÝUéÚô:«v.¡R )Ê%Tøcÿð\ÒcsÜ\mø¨øä›ŒÊÈ"F mV4¯äköbjåÄçä–²÷X©åénº,@‚ø©…Šõ©å³^õj˜JÝV/ €})£ò¼´g¨£Cæ’ÊÌž&@·QUã@Wð$±9uÈXj­]Õn\.Ý{­ ÃóÚì©míÖ®•Ç¥9Þ¼tƒsÏ­pg¡S‚jöøÓŒµ¹ÆHãð23çõf^Ó‰ü=a­ _…CU=:í¼ƒûØZ@oI”úvi¦.õ¼ñôÀ¶þHµÓ^JwäZ{J7–BmçsÀAyÎæëÙSým«‹vëß¾{_·ÿ•=6º›V ÄÂy®êÚ!»Í2ø…®zFó3–U¹6ü\æ»aC$A‰ Ëf^æ9Šèu¢ÛeCégÈÜ ùeàŒ“ðò"˧$ÔNަ'ò©/ÓGr/üÍKݳÆC¿©a]ä5 äӄܦŧm£Îs}¯2)C2fíêa[=¾„Ü ú„;¸;Ê(u©¿MÆÔc$æ†cn蜄bpm v\~.›ÑµÈøÏWOz endstream endobj 1867 0 obj << /Length 2036 /Filter /FlateDecode >> stream xÚÍY[Ûº~ß_¡>­·X3$Eê ´i›¢E›,ú’ -ÓkveÉG—8ûï;Ëdi½ ïINÑk4"‡Ãá\¾¡itÑèÏon.^¼,bŒäRòèfÅ4&q*£4OH"¢›uôq±2]Û5¦º½Zò4[ü±.ú®:Õ™ººv¼÷ºÔªÕî%&ŒÄWŸoÞ]üéæâ— kшE)©œ0šDÅîâãg­ÿ.¢$γè`Gí"!áit}¸ø×õºRÂ8p Obœ‘°¨˜ïOî —–’áwô·+&îWœ.ê×­Ó_•eßzí¦Âݼx›Ðc¡ŒS"“´³2­Ö¥i;7tº¾LIœ‰0òú”44÷ k¯õÝc²JRš‡‘ªZŸ’Æ‘é0¨¯öª¸³'Ìùâ-ŸH]ò$'Y–‘ƒ®Y°íÄÐNÖF’.6`2Ktõ~Ñ•{-uuÛmý ÕhGT5 :¸—½nv¦ë¬qáõ° sÑ‚àeäjƒÄõl%«ÇwµÛ—úÚqîëÞ…ò"é´Ý(ì.²>âð‹‰3&IX¥Lñ´;f„ÊÁ'2Æ£$å$ÙS"h$À¥ÁÌNÄCÅrŽ–É eìxä p(.ã ¸ÑÑæ¤ä!xæO’f6`à‡ IN#ô*Jrš³FTKç¯_¿ž9•HŽÇó„°Œ/lÝX"`Ã]zÂ¥£Ë„ÒÅ«‰pÏ“ÑùÒd&iñð‰Jê…p‰£!@ $+dÂqB.'BΜ$pRÄâ”)¢%CÛ8süÞ~IˆD›lÔª7U÷²Šýš%/盽ö»d˜$%&Ùó˜3žÿ°„ø‡%ˆ– J°üê9žójv笾Hç+GyFàÍ£nÉRjãhÉbð–ü·Ž½‡ÑâêÇÿ0^RþH¨ÈßëÉVÄ žøÌ{å§h:49OðØQÖÖTHaÓd©zㆠþF_7m˜®ýv’IØf9I™ û™îœÏwNódºs/|ìt`íÞvÄÀU§„^8ƒZ½ä ŒûBç*¸\ c>ÜTsÛžÒEH’J¯[ÕÜ[9KA!ÙBfuNìSŸk¨@KpÿÓ6ò=ßwÇc‚t> stream xÚÝZmoÜ6þî_¡oÖ^–¤¨7 éR ‡»Ä@Q$AN«åzÕê­wï×w†¤dIV6Þµ‘Þ–ä>’Ç#SçÖ¡Î/o.¾ú^0‡1û>wnvNÈ0H œ›­óÖÝdªUMVÞ®Ö<ŒÜo«´+d©•Uå•‘½–¹LZi aÄ[½¿ùñâ»›‹ß/ Cf´rÂhà¤ÅÅÛ÷ÔÙ‚üG‡/Žœ;ݪp„ÏÈçΛ‹_P “Žáò ÜzðÈ }Ÿa1¿ãÜ×ú~ÎÛµˆ©ûæ²Z{qà&ÄLèÖ•‚ÙdIžŒ ¨LUàÊÝŠûî;JyšAS­öIir ì6L fžçn*µ7U™m¢dSØ«¥UQwÆzF”[„ê0J¨:k&`™G!Íaø.Y­ƒ8voöˆ-ŒÝ´kƒ)¢nVÔùйrX+nMÛªÔsI‘4+¹·Yiç µv¾Pûp¾P­öUw»7 Ö½4#d:EÛBÓ| »ÀךjÅ|÷#þH+,MºëT×X™©oZ@Ý­uÍcÂRF‚ 2ºY1Fݪœ¹©^È´w™J÷&¿kªÂäì2CNU&M†Š7v/c±jLú1K¥ÍY4¶ýæ`ÇpªéR5tµ J‰&»³ê6¿ÊTÍÁ(X²cUùVOþ5·ŽÉ¼þazn‚ˆÌs‚0"aÄŽŸˆP8:ãNÀ½Ï© Ž/HD™UñÚCÉh˜˜PÆÆÃ \ø!á¾×+n¤³[ÔÇòê¹,oÎ9š¿ýš“Kæ+’Ôµ,·_hÉ¿Å&êžõøªa:ñ‡çí.Dêt×ûð>LññÀ΄ޑ2‚^m0M+8‘Fæš@´û¬6’TwR–¦`.VnYK/ê¯T,f¶¾íêºj¥m„×0¦y2¤*S.²¦ÁK˜b¥†Ü”œ² ß`6€A`‹¤i’ÔdüëÔÅæ={ªã¸ñ8l]܃ÌlйPoÊ)'†±½Œmùå·²ndj©’ÞB¶À€¡€àW¶F 4§Ô6€<4î`>xY¾ó5tŠ„[vÅF6& ÓBÂĶ­)ì“§÷$ $c:È“ó’Û[ Š»Ê*j€UjÜ%É0³F|Ì8POÁølÎPq‡óMš°•dy¾ÄuÊj`Ià3ém†B3>$<ºwṵ̂¹ð¤y·µm ݃]—£.Ã}WÓÀ`9˜‚!}‘»µ©ÚÛVmR Mî¥ææ á~ ¸µP³tÞwÙÚYËíÒÄî—6Ùl)@Ò"1×Ëù{gak«k‚ò…9µ§0CÌ0ö¢§0Cá…DDáq÷$à[õ Ìp4̘ZÅ_ ˜wŠ¿ŽŸ´Obmï•!`è¸|ìãõm,±wû\ËÕ ½5h~äšçغÿ1\³ë•däe~6¾ÅV|“àÅoLGGS—w]™ï¤MŒF"s:óy˜t ð<üdbG@ï€éeK†5H®ŒlcÓ­riòÆDL‡·Éõæ:}9Et6¡8ýÄ>ô ‚Wq¡Ì'‚Å#B‡ÿ åøÞcbeÒÈk´‡9r÷ÚXä:¹dû1)S¹É”i;hŒÇú¶W‹êͨkõ7¥â }ÀBÎÔ·"ÒK1å7÷zF¡ax(#ldÛ¤‘ª‘‰:fdz´mFÔÍõoÆe|O0ßl]쯤!9s…ŽUÌ#ôˆðƒ!È åoÏ£}Ñ’&χ꟠i+s¹láêE'¨B3}j1áâ÷"q¢©Ž*{Ä$‡&ª‹Þ‘.õä¬õ{¯ŠÚøMíðúŽÜõ_ÇR 8N‰èüTõŸ¼>5¸w©m-åàT»újàªáúÊÒ.Ol€¡­ «A_ãų³”ee+5|i{¾xØËÎ~Fóü±2°£]€¯IzÕà:rY˜Â]†ßUõUanWm_0æ.ŸÜ0Ãa­`BD¶`q‚ÍÍW8 hô¹Ñª«¶ÍȨªSu§  êRGÕllrXµÁñÜD¯RÕ.Ëõ³²?Šsð$á@ ŽÎi0þü;¼g4<å3üòyñb:„1(<úî7û¤V:ê‚SürÍùôþY©ÙŒGž› endstream endobj 1885 0 obj << /Length 1664 /Filter /FlateDecode >> stream xÚÍÙŽGðÝ_1<1–pÓ×\‘‚"$á%°Ê el·×æ03=kü÷TõaÏØ+†EäÅ®®®î®û]G4úuöìjöø…dc¤H]m"AYeEJR]­£·ñR›Þtº¹ž/x–ÇÏÛÕP«Æ”F·Í#‡{­*UöÊ-aDÌß_½œýr5û8cðX”q¸•FÓhUÏÞ¾§Ñð/#JD‘G{KUG2a„g)ÀUôföçŒz^ÿ„qØ%<x2eQÈ×#é$2µÒ! ‰$¹Ld–Y^ÿûCÑÛEBiü\­T½TÝ|!hsÞ¬=DiñÓ|!©Œo`—%qŠs{̪ʂ›9§qëOÿq0Û@ÃIê€2Ü(È'd9JB‹,#…N¤ÎYb=‘éñ >±ò"œäyæN^muÌÓø™TcÛv§6CUÜò¥ü“¥ñJO§›Þ”Ue=Ãav]»¬TíÏbµ?¾×s›­[¬€ûE¯š^=ç‰gæôpåáþÐ/¬((@ljTÝУ ‘ê:¡q€¦õÿ /ß»ÅF•fè¬4‰3‚ý7[åÁ%g¸v‹‘ødê:_í2çŽ 2HFòœý2¿w¿iÌrT4BÁ/“âÌ/‘ Þç<ù%,Ž~‰çÁhÖ5Eê]€ïêš ûð_º¿Z7ÁZÃn]oä½¶Þdm•вªÛÞľÂ¼EïhÉÿ`I‘CFó¹ó÷z×YâÏ Èn3¤Ú ­´jVsðÓÃ5B½.ò  /d¿Sö>ôÔW"ØñàVæ°Ó«²ò$;ÕÙ¸ô Ü–X*ÕxÝ6«Îè‘ ­ÃSû1ºÄ&1 ‘ÇIÓÂËÚh¤Ð½?µéÚ:Ü –Æ®ÁÏÆ½HO‘ŠÅÏ´yê ,P,þ›>tÖ!­lÂA”ò`Ü8m°xèý<þgèC†cV,´îÿzšmpgëJ5×Ρðü‰›fDü¦ [½Qåú¶¤² ‰Á®‘u%€ûL*d𓔉H¦P{“üËU2'49ÉÉ9ã¶Šæ\~é Šù'Ò_qÉÚ%fôLA(cãg/“ŒðD„‹;mn½ù"¥S[–ÛÈ‚*]ÈM0¡ª§À%-˜¯ê2I‰,|žyòäÉY@Fô<…ÜÊaËR÷>à%Hpü±OO0.Ÿ¦Ož\î‘GßÅ„ãýåëï=» f˜IDH=cŒ;Ä(=c%¶IîvOûßK@+:¾»{Î¥ÿÂ)Oîà¿tÜN³Ò_–øRph—S|€dßé÷m¸ß!ÐXí(û¦@ƒ~™§ùw´Ó3?8Ð(ôìh¡Vÿ¸h¹³ù/® PBï+ZD­eçS]šÕ6t¸&ôKµ-mg¢Û¡›ö˳®+¡ãjÖ§–JûØ ý ÂâÔaáÙ³Þ8bá<Ÿv ï8OÎ, jAãµÚ¨ÖoÁ°yô6lͧJ/B±†½^ù=Mã1Ð Í*´@°c‡ÿGŸê>62kGá;€JGqD…–|p| ‘1©û§æê44¬ïkhÀ¶§‰Æ“Cq?“Ã+ßµ†éÇ\ºéAœ¦~>=;=Pw`4=ðÑô FÓƒÓ¿ïéÁëäU‹õAÀüm¶¥ B“a{]UjZK-`F`(Ň޸)]ަt Sºt@Øä$þPf<Œ¡ˆ¬Ëƒ–Q6î…0½L^ú–vòô°óï%r};î]û;Ûô~òò ²ç’ưÍütë÷´y8OÀšg*(Ýz×é¶3`;/ÇÇA.5V`?­úÖáš6ìžTß6ÕÁáÚæVé¦É3;ôá? nn`Óâ—¤»Ñk;°HÎâýV¯¶Ž4XÌŸt*ÍGVé>¬àüô?K†9nì¹Ëì8‰Í2Àà©ë¡v ×ÝŸ‹±-W Õ+Íý}*Å;§÷ïÖIönFÝXÞýw‘oa}:3"Å÷Ÿú¹–Ú׳fpék\ÛÆ…ÀΖ…ãè îåR¶Ãª ú߈?µa¾˜—}T ¸îJ(½8‡&ç£@çH Ìîò}ô–o¸ØÐ?&Í)çñ‹Sªù¯9Ê3ÊÛˆüM÷Åêj[.Y̘8çø3>a7¥ endstream endobj 1891 0 obj << /Length 1719 /Filter /FlateDecode >> stream xÚíZ[sÚF~çWè 16{—”i3Ó¤M§yÈ´ ovf*ÄbTƒä‘Äÿ>g/Â’À6BÄNÒ0ZíåœÝïíùö ì]xØûsðb2xúŠ A½ÉÜ ¨DIîMfÞ™?MËuY¤ÙÅhLƒÐÿ=O6+••q™æÙ[÷V-U¼Vö†!‚ØèýäõàÉàÀ€ì+•"‚¥—¬gï±7ƒú×F, ½O¦×Êã‚ H(/½wƒØM#B¡QÉôI¼v*ßÞº !çnEoÔˆÿ“.,ÏÖª,·«Œ³™-$#‚ý…JFû—Ûæù&Kôú×fÕ$Ÿ¾¢ ½ØÓ±0´j[–‹|s±÷Ë…2ˆE¢&Í´Ìòl8"¡_ÚÖYn«ãLÏúº\ØY@K¹ˆKÛ–ä›å¬6ŠûSUÎTU3Ï cXjíFZ¥Ñv^Å—z¹nÀ:_)½>½Â>iבä«Užé>Äߨ5?û›ùcµI¶r mIÍGTøçÓ$çA£1gÔÿkn[¯ó-dJÍl©Ìí¬b¥æ…SƸtm€ÄÒ)Ð^êF.Tf‡l!&~\ì]ІaLn˜ní„  '„FöH„( Á´IéL{N©h¹¨¨¹Á³šLw½(èÝöÊ‘ÀaÕé©íÒ”##´ê±ÉnÄB Qu{&«¾3Hšªs,ð~ˆ­1`ÃÕݨáŠí¥Pë+èh ~Ô^£–×#)ü.ã BLÎL¼\Þ²$.¦Á½Ø°š¤[á‘°Y¬ÏKçW°àtn¯ c‹˜sŒ¸P{¡ÚvÅmT¥(ýPÉ®O…JvÝ•¬Ú9C¦ÞÝ¡z=³ƒÛìÚP!C$aÎ’bPzw¸ÛhÑ‚/ !)ø]"°b‚e¬ˆÝ©íÖÔÔDRW£ë¹¬\(o¾Wò6¸µ¯(M@ƒÌm¤kÔTaNbí)ŽˆuˆRxê„p;ÓóçÏ÷xÚÍ * ·;Š‹gˆÃ2¶?F£ô{gc‰±ÿkÓÛmå‹´|gƒÞf–*»(ä¶dB×Ñ]è.¬ ûõ;ˆ`Œ[sñÍgßhͱCfL<úÚh¶wS$4~úëäD[ГÃýî/ƒóþÓ ýEìs‰ïÛ-ªÀvŒoô”žB½Ç*T©~Œ¨Fµ× “b£Z{Gwc+S<‚eM˜¯Ù›þÜBiÄ4j¬˜"Î.Ô@;9FÐÛªAðPF=$B7脱N³ÝÉÀ%Ñ"8øÆá”äTXÁG{ί…>™æpWwM›¬°u4-€­à@RäËûÅ8fù¶šsƒEV'‘íÁ¬H/e“Q.Õ¼<ädrËäRã/û°L&’à¯w:VÇNöa™55u–é?Ë_äÓo„`Vû‹¨¶Fé6ËFÝ熭ðpÐ <ÕäÒ|Ž>ü±h)l½iÇ÷À4ÍzÆ´!žbìœjø3Øï»ú‚øé {|AHÛŽ&:ÝãÑNTÔ"øcðF„Cç˯–y|““¿ÊÓÌåê¡ Š«BÙ!:eájÉqºŒ§K…Fc!˜?±)hÝ%Ï€œ˜Ò'dÏ‹K{7×¼FkØF5'<ŸïKY»|Šá?Œ6™‘ä7|ª ¢"#úp ÁÓʃ¯i«©yÄLø)•äÛâ@çú¡j¯——ƒ‡~÷lið@‰AɬˆS3ßÑ1G·¶>äQiHy’GâæŸê>_ÅÉ僜+~aó“œ'žto|܃|‚Œ®b'á[{¤Ë^·PŸ{“ÈÏÉ,ÏTÍæ!ŸË Ðurr"NÙ=¾ï° -BððH%0c«§š«]—j=´d²Ì/Í:™¦€æÙŒÚl“¨Yb9Y¤Û$–}"«²T妨Þ,ˆCÓúy›þ§—ÐÒûŽú°q -Í&!J–ÍÔ˜“;û_Ö©ùûº\ä®L‘ÔDH`eLD}8 p´‡w»'°§Ñ>ðFK:¹Èõß­$ÿ›,Øg8¡RÌ~¦ÀüMö`ÁìϨ£ÌöŽœÚÇF³á9aüÂ^èÐMÓU³áûÓÄžÎûÊî«$ ptLäqׯ{Œ‚CÐ º¼ÆxK®#B’º#$!úìÎH ü—‹øªT…H#•Òæ;–or>êàp_l endstream endobj 1899 0 obj << /Length 1836 /Filter /FlateDecode >> stream xÚåÙnÛFðÝ_Á>™’Í< 4@/·ÉC›&F^’¡¤µD˜‡CRqô÷ÙR¤¬:V$h_ÄÙÙݹv®]IoåIï÷“Ÿ/NÊSJ¤a¨½‹KÏH#Lzq‰(ð.–Þ+žwm×äÕjöPljÿk½Ø”¶ê².¯«„{n ›µ–F(afo.žžüvqòîD/é)/Ö@U %#oQž¼z#½%àŸzR˜4ñnÜªÒ B%t\x/Nþ>‘,«JVèÈàŽHy LÜB>?¨²C¬ÑÛM^u§$mÞÒ·ªg*ôohЭY—¥½Ì6EÇØúÊV n¯­S±—ïѹž°”ÞC “$ÄñE ûBé_Ö ¹}ÈÊëÂX¶ f öÝ&ŸéÐ?YF?sL“ç @(=±t”ˆH/Vî¶u"d8˜zB Q>‘Òø.ÒÓ±ˆ¥a·»±I…TjÌñA šžpc½Ëƒ”ÏØûÒùGž’"•©êÏ_B›N#·¤ôçt„"¾Ãó« ˜y¯Ü†'gÎÈö*¾Ø£à76[yÛ½–¡dB:Äü€_;B :ºç&ôû3¥Y}} ¡Ó}5@|…8t|eD¤ÿsSVþ¾WŒMÒA¨!¾ ™ηR ’аþþIåV”ŸÇa‚¨ÏãQq¬8«jØ£©}f¾Â9ýµèê¹m(¿+Ù­ ÒR¦g³‡&ü÷0 Y»…ºÇ«$ðr¦¥_óîgÛnݯ1â ÕÈå½ÊFL ^¬]y‚RÐ3ú@AÎòÕº£ÑuÝ0T_Ò÷= j(ªäJõh`#úàÕJDï9R!¥b±Îª•miÐæÕÂȵ2ò‹¬íµÓ?ö }š]‡»@$(+ ÚÌTb¨À ´ÜÒ`Ycå»aRyÕsÌÛ~žz¦Qv¬|Ÿ’ BMpZA¨‰Ãú²¹“dÏ~€¸É¤eE[3E­›+QiOF§°¶Hi dÓ´mìé,g"DÅ$³%Õzh¯V–×òÔ¦¥ ÀœÉ¸–…E@ç}@{>. Ò?a¿!UªÓ™c”ÓnܸdòIÀÌ-LrÇúнtwß0Üv;P"™„ºþ ¡žÞ7ÒåG"]R¤³~/gJ©iÄN=æ‡;œ6MiiÚ; ^K©”i2Š@˜©jÆ:ïÄ"kšíÞö·sÛe§ŒÌVà2A‘ËfQƒ“æóÎzä†:Z@¹\¸2¯œ¹­uñLøK›u›Æ¶‡¼t-š[tø^Ã%d‘_CÎØ"£ÏN3“B€DÝ?H ðÓ³'‚ '—ôÝÖÃ>_nn]—¯w!‡¬UKç8z?Gh— «,o+Ê`¬!÷  Û ùP.IùÅHå¯3Ô½çP%ü6vQ/—Ñb¸›á±DÊi„½F /t'K1én§—5Mu3dËëH &E@™miî&o×{$l“Nps½„bµ:˜hÝu(0|2Ì]A€Èci ·ý:”Žw4¼‡®I°§¨;^ç\¾mI…À]ÙÂÝ5íø²GtÑ£Vu½$h,Kp@–’;`‚µ‘š¤Eັ]·%®Õî~—gÅLÈ!I†SC¨àÄD€ ‚ˆx|…ŽèHWKʺgò–S¾8eºÃšŽZûs¢Ì®œ›#œw‡9ÔMðä´ä¤©Ë¼jå—Q³ÑÝØŒKIÎSÙjråÕ^i벿ç¥ýšÕÄ|™jâóþ/xÞ³‡P6mûYbOª„Q"0$öŸvôFÑ7Q‰ÿˆ>×Ö^q‰ÚT |iT,ð¾MS ¯9¥K´E—SÚÆ‘Ζí1¥ËEŽê5b‹½ ˆÞ§#â3Òx¸íl?FÉG ®$äµ@Ú¡q «º×¶¸$Šå“K¸B iËĹ6ºlÿƒš?`ÿ’uÞxü—æÍ Õ(rÁ´c›h5\AQ[“ôvÙÇ€¢#ê> ÓÞBˆ!d$½3Ònj‘ì€ç¬ð›”I˜²STMÓß@*^Á-1¢ ì¹so{Jdù;M·÷:6¬«l]!Q{̳—ŠR¡ý9_* D¢Ó»oÊ`PX÷9_#6ã‡/&|ô×qâ2 üÈ€RÌÓ_ª#¹÷8¦BˆãñãÇ{Ñ?}LÓ‘3¯ü>ßw¾Á3ÚÚ~83ßË#Ïñ®{;€€ˆxüs.½ÿò®Œ1aÊ< (ïí1á ‰â£ÿ|$œe$âÐ|õpÞ±ùÆáŒCè#þáü^Æ¿¯>Ú}oCóï¶“ÿñ Aè(>æo¼ÃÊ™TDZZr°¾Öþù†^ÿ%Þd÷ßbþŸÀn|0I |¥Â‰áÁÿN”µC endstream endobj 1906 0 obj << /Length 1704 /Filter /FlateDecode >> stream xÚíYÝoÛ6÷_¡7Û@Í’”H‰ ÝÚlm°—¶€›Ž…É’'ÑMóßïø%Y¶ìØN‡¡‰)Š<Þñ~÷)Ü8ø}ðîfðúCDB`Œ7‹ ¦A,8âQp3¾Œn3U«*+îÆ'£ßÊÙf% •ª¬,^Ù¹O2—i-íCˆ Çßn>Þß þ8ÄR¥ˆ`ÌVƒ/ßp0‡ùF¡H‚{³jDŒ sçÁçÁ_ìØÄˆP˜E”‡z'A/ö&?ˆ1EN¢O²HW@¯íO%Wå˜âÑ÷æÅbSÌ´µÆsòúíÇÁ„ &‰¥ý¡Ù4¡ –©¡9&l$íÌ­”…Uš 9·©Û°(óø`£ûú9 Œ´vv®•'ˆ“0ˆI„¢ã› Ìš{íH ˜ ˆÄá1°š†ÓØÑØçlfë0!ÛçèùˆÅˆ²°¡\É`ÑKºÂίU7F âÕ#DCfU2ÖRþ0žNÇŽñhreí ˜…{6zŒ‰ß¤dž÷nÒ/mªäwYÕRÛÌþF÷rg¯ð{ç`EêÀVûî «¥µÐ^ËÛ%k»ñ$uÐÅ(G8‚ бQ&@Eñ9 íè˜îš4Diobî -¼ÙŸY¹Yçò«‡ö­§‘«òNª¥¬ÞtL? QšÀíĹÓÛWJÙŽƒÐplYdâ0†Wf¹S²VŠÞµ+WBP"B¿xbùÙ€k5k»„)ƒµ¬K¸fÄZܺ¬¨•Lç¨+Ù„ð%°þ)²ÉÕZ=ôq‚aÑ%R¥²P®§[¥Ze–¸Z¦Eun2jî·F†å¯˜aø#}Gð1–ø îÖNF»‘xÃõN€õÝÖiaA$ɳbÏÍðF¬%QÛçi­ÒJgÚgc-æ…,æít×PôŒ5=j‚UK¯Ø'L0`%sg§ Ír¦Ü(É{1´"gÁÀﲜ×}J‹BÄp£æ:Ïf½89œûe¯zÕ¨Qæ"Î{èPðW‚žG'Íó>R ð@È餪C<ÙØ„l¨9ÈÓãâ5V=Û¨Þ[ÃÀÍy©g{ǘá,ÖœU¯óL=®9cd`!`«ZæŽG²ù–•˜Ç) x]ÖCû´ÔÙ”8ü¨Åo ,Ý.½Ë“¤¥Ü,L(ÿæDÃb_ÔJ yÅAh…Gï>—&ü j\HgE ¢I쬌5Þ_V½:#á8%ì¾ÊúC‹â³Àq$~iΞÏ“XÀ‡Î»’à.h¼ öŠv…ÚT…_—…«rš`cl̨–ùâ<¹¼%S_39eG寥3i18É=.ÓÌ%0‹n½áûT—g”!ä”"O)"B ù@§‰pLŒÃ§Ô[Çl׎ðÙ%FÚo^à„¤ÎŒ¯*9Þ)3BÖJ„®®®zr¥v=¤Ò$i=„ƒq4ÿÌÑ8ºÅ¼OÖÀ¢Ök¶:oqd(Óë!F"À¾!Ó™±d†2'nÂ?0¾dßp—gŸa],ôº’/(õbñÜR?޲]ˆMf&2 H\‚3uÆ•›Dû— ÚìûbŹdd;;¼=ßÇìy:* @d|®Jнü…ÿŒ /~å}þüÞ.Iç;×}$ˆx¾æ(°™ºÖÊÛ­Š¶¯vp¹M“BUPQ¤JšO_9&Bñ#ub‚XÛ`ðôdcB§h{;É‘­öåål‡±ã¬nûŧ{¤z§ hÈ…”vŠ~§ç"Ÿ£t¬¯¸hatRÍï¿–ì†s„Û³ŸÞ|% ÅDt+ÿ?+Ýô,צf†œ-“MÝo;F§”óñVw ®4§*ÚñºÒÄÕƒ}2­)=pß `Ô~„“3j æRts*¢dô6¯Ý|¶pëüQï25&£Ïþ ­^âN0½s=HíÏý²Ìݦb³º{Ú°åÂå¬F'®á¿–¸+ !£4ßÈ÷UUº^ƒÔmã3¹ÖÝ;uŸåùNœfµÿÊrßÝÔ–w:±»ßDݱÓ; ‰s5ìÆ£ÝÌ,Äç|cîÿb ^‘ƒ²Í¥Â¨öÙè×eºV¾ñhO8¥Ýà×¥ƒó6ÿðÉ6ü endstream endobj 1914 0 obj << /Length 2230 /Filter /FlateDecode >> stream xÚå]sã¶ñÝ¿‚>˜š9!ø øáônÚL{iò¦wž¾\2s”Yœ£H…kûßg R"¥³-Ÿ“™L^$p±Xû½ Ü<øöâ›ë‹¯ÞF"‚eZËàz(®˜Jtd1‹£àz|…mmST7³¹LÒðŸõ²ÛšÊ涨«W{gJ“·†>LÍ~¾þþâ_׿\Ø‹"H$P•Lð8Xn/>ü̃À¿8SYÜ:¬miÁdø Þ_ü÷‚žUŽÎеfQäÏùcSïLc ÓÂ9” ?–¦º¤a^­“<üÿLèÐÐä˜Êã¯VƯ°5ý7fWæK³'}c7žÒž:° 7@®¨$ÌK»©»› aÙ_\ÖÕiAp³¹ˆà1Ý Ê·îðšOOª¶4ðÇ„Qc¶5bÚŠ€mMÿ÷uGƒeîÑ—ue‹ªóô¬ÇëÚ°1[ë ‰]cÖpd­CæË™ #&c…ò‹EЀ˜Ž€ï¾=R0¸±JAâŠnüØ´!µYÎ^Õ À·‘ÿ?Õ‘1)Ó`.3¦Ò”hþ$¥->Ì£Œ‡× Éâ‘Ê  T8·¸«vùòá·ŠbÆeÒãm ÈvÕKf&uxKy‰÷¸ÅŸü¾íåd»¦ò9ý•Ek_ùõד›R VWzñÖlÙø^ó$+Up}¸Cœ=|ýo ûÞ63Íþ(9qƒ]µÉÛM¾(Í嫱N-ó²$GàT´ÝШ®úO¯öרæŸôþJÆ«ñmQ–4Z;fåävüi÷ºvv•$ Þ¥;èRkvyŠ|Vâm&lý 73 Ž0ÖM½%x;Ótáa{FÁÇ ?·us?‹Ñ0æ ÕáûÚÓ«½Zë]¾Ý•'µOpÆU2v$)8üO\óË®¨¬¯ç—ð-N©¦ˆ– ª¹0ËzKö3Ý-ŠX*²ñxŸ«Ç6JÀkݘª£Ê"–¥ÂËís|7u^™ŽÃ¶ÛíêÆÒ‡ãa¦½øòqqo :pÝË犊À°j›{ ·ZŒd~WµÖä+«×O•GËXå˜äö¿Š>Ï Pbð&íi¡§,“Ƀò])ùyƒÁŸäÿ¹N9b*ŠYpŸšqˆ÷óH°è¨KXËdtÒ?}/¶æ<üÁÙ7gð&§8uó_W‹|XùÇ w Ž6X­Z·}AöœúžÂæh¨ý&ë®Zb†3>àT |zÀ¹hÇ᪦ÿm·DŠà!ò– U/gàöVôIbg–ökÜY9mÐ=MSì ñõLé°éüÎÃÀÿ[ÄÎKÚXíwp_r}ˆå×ÞnŒµðAþp*AÞØvìÑ+½ÿ¶›!qði8]Œ‡™p+pR¤Hn”Æ)_YgZ¤'†)ãzÈ G$R!ƒH*ˆ…ÉC$x !«…´‘Hír°MƸ‡Û <Ò “Zõ„¬OR>²ŸAá“Ô)5üðˆ´}yçSߘ£kÊx&|êE€¤}êûæÍ›‰š¢ÃÙãÃñD*Oú}ŸÏ¡;ÉÃX™;Æâ 9¼œë“ñ;³V‘|ÎÒËIÜ{¿"ì„°)RiTÝßçî !/}w‰—ìˆÀ! ̽ÈçB1ØäÐuR}ŠŒÌUÕâÄùÆvlò@"z˜ÄÄ䟃†Bwòà`*…:µÏR(Øé— vïÍ’õ…ó¶vá<%Œ$çÙ$ŠXÚÁ,øí¶pæÀ2IÃ5Ö~µ_ýã=TG²;4Tp¯^8zúÈÿ¶¨ ÑïƒFÉz;$ÐuÙöQ¼?%|¬L^-‚}ÅH”W•iÛ¿œG0}š­2Hì ¢@J‡–€9V2†Æû¤'¨nTXØòqÜnêÒÌ1Ãïtï =a»ÁäÑ -ë‡TzîÑÅ ÖF‘€BÎÚÒøz\×ë¾®·Å¾Ä›SÎ2‹Î´•£ð(ÑDéÛBðù’àx°ÉaptdÇÐ(ÓˆÉT='4‚Xψ/óŒýõ´¸Aà(Ä‚/Ì9aëõÔ¬Ñt5¢¨Þ¦!´HL¨$Å—±¿ùöñCK÷ø:>ˆx=Äy$ðO‡bQbáЖù+Ýøˆ½—Ž¿W"~-¨pr(ØÃÂ×ÃÂõ°¦%Óã:6U0ˆ¬P$A²êBk”=GÍÈgü&šVþ¹5íYòÜgJŸ',æ}Š&|Ò6‚쥴aØu!Ö,‚ÌýY.ç8¥Ý˜»žÿçjÕIbgä˜þ"‡9&¿ãœ{„±àü‹ ŽÿaEãÓË çкÏOÏ=/ñ2uÀ¹YÅqfœíUÀùÙÿèéH$K´ït|Ú-íå¼,>ùDwYowùÒŽR]×W¤É•9¯14KdþZ†íèiÇA\z­´íýÎeѽÝ`kG]ë;4GD16\½¾~îéB³³!ø¼:E)aQ–=áD1®²G)¥=v6OÑQ’¥{,ìÆ $¡$‰‡ÍvÆ<érsåÞ¼ô}}Gǃä â#‰ÓqÏkáª*¨†"×9Sûq5öÖÔ “Å0é§Z§AtÝEæM“ßÓp[¯º_÷aüº‡Óô¨çÖàÛ#›¹BÒ÷Ýú®µýNyã7r…։À…MÞ ”J A (=–ýÃHÚ?Œ¤ñA¡F}{ä¸u­™àƒPÞœ’HÂD¢Ô‘˜i9xÙ¿ìtCÔß+$•UGgß‘dþþ8*áv¾zËtï–”šÂÀŒ“õ&n>L”%՜ƯXÜ“NI¥œÑÊ¿^ ïœÞñáel蟒¢^Ëô ]Cm'ç<¡Ÿö*c±<ìôC`2|Û¹W9ðqÿÃõ¨IÀ­E& îZÀ~ ‘LOü+˜„ endstream endobj 1922 0 obj << /Length 2170 /Filter /FlateDecode >> stream xÚÕZYoÛH~÷¯à›%Àêí“Më“ÝÍìsx ,™CI”D„"5$Ûóë§úâ%Ù-ùHXÍfWUU_Mì-=ì}öþæìo8ñA¡Ô»Yx’z2ô‘Ͻ›¹÷q4Mª²*’l9žPŒþ™Ï¶ë8«¢*ɳ Ów§qTÆæ!‚ØøÓÍgÿº9û㌀ìÕ"‚}o¶>ûø {sèÿÁÈ…w«G­=.¢Ò‡vêýzö˶ӄ Âÿb陯õ÷-Î~€|Â<é)¥s5ó‹€PÏé‚‹ÇXÀh".ËcwbN5D˜¶ÕÏ…DT°šs{‹½¬ÝnôÍ!úÀ…8$îA =Åñ„Èdz_ÁIùÐ.“eÏM;É*ufÀnBL.4dï÷m³W–&Oªï¡:H\j ù°åýwÙAòþ°„Á0y¿ì!Û+ï ½êØ— >â`³OÐáSR<÷˜RGiN|jÄé=ø0&b”bõp­7i|ùÀº;«t$ æ[Ç…Að•}âÈgü(SoÄtLÝ0léÁ6Â,!护×smÏÀÇ=4ð±D¾æ Þ½{§wÛ±í£è (¼Ò£K3qXAýG‹îô€hï£Vâ«sÛÙø‘ùPÓhÍ>ÿ†¶L¨P£9üñ™aÒé1LÎ;L$ú;_=…ì¼?á ;SÐZŒ„Z#†ºÓÓl>š9š=šës€C#G"Û`‹ÝÅ `!ƒðdÀ&°èÕf2+⨊Kl‘ùyŸT¿ºà o“jeZ‹|k!0Mª*'q6O¢Ìt9÷§Úà4H.ã¢Dã #xô¿U’ÆÐRQ_ƒ–BpÄ}n´l‰y]´"Dä)Xywaüø½ýýó$ØY…™ —óÁÌw«UzÐ<,†+ì®Ù ÊèéÀ‚QP<›U©3±PQ­âµiMÁ¹YøpïnÇ`ð¹},;0a_>–Q67<‹[ÈCñ¨EŒm8ÖâÞâ5Âh•Šg)A¾oc¹Ÿfì x––Ù}¾µŽÓ,_O'¾Z%vjÐCÅèÖͪXGU%akììÓf–|•krÍ䋚h\ô&&ŸÕ Š,yHÄÂc°’K^Q>®zT"‰Ù1XÙÓÆJËø±’°n)ž;²ÜŵmörÑàê¢ÎÏ U¡Ü>náùRØPòÓ¢ W;àþíÅ`b·´“h~ÄvNÉìƒë<ÇSìþâZçŸ:y2ô×ÿ]+” 1,xô6{O¨R\ê3­Ã.Zíu^·*`\弬9¥vÅ „@Ô=ÜÁ‚À— ØüïÆ ôf¹-+S/£¾F;ÕÂ8¼„óÑ3€´2É3óblDLs¡Ð['Ðððó}µrc(º3ÂÔãæ=Kìz$å!b]ãMËÛÍ ÉW°/@\Êc|#¥ãú ßtý4T¢Á~פØ9;bÝ_§§IzE¾îÓ*G vS±Vßé¹~¨®4\x²ÞäEõhÔBÀµÂ–Zã­?u|ÐNö·qâ˜wø°8*:I–ùbÑžâB’»ÅÂ5s)›(ëR\MÜ 2¾bì$–ƒ |eIÈÉòJ yjÀ­£ûÿ˜¨œ°Ÿ‚ôÚ$"åÛLÆdzÍâ¤XuÖ¸ª&=»°8¼Jf+—ª¥iÉÁÿÐ4í£ùô¾Çð‹òHQº­‹ÆŸÍ‡@6å Á? ²á¸Àç3×¶Zb^·¶EC˜Ò§àÌôÛ—õ¬â»Kþ:5}ÆbqÈLÎö”™/Þ h6±]CDðÓ¡&ö l|ú!É¢4½¨€µuµ­Èå-: KáÒ +»7¥¹b^3ª-8ˈ ‘ åscYKÌëb ËðŸT{š}[X6M²«¨A²«iStºŠN„jšáX²·'Ï3|ÊUNßæ*ã·‚ØÃdÍ€…åÉ›ÊH>^W¡ˆ‡Ì™¸-Mí)­pâ9qã\I„Q¤ª`ŒÊQ™¬“4*Lg•›Îj¿TBáDd-VÝíì­çPرO¨)ØÌâMåäD•Ží‰RåPl¤4ïÌòì|u m&k&éM(ì†À®cA²¬¢ÂÞ³ä‹^P^絃œ#ȧGMŒ(äÏîµ1¯ìµ(#cGÝ/Ÿæ›œoåþe'’+09XswíX(X8LB )©ýÎë?ÊÂC_Ç­¡‚1[Â5ºà¿Ë¤¹Cµ¯Ôl¾U8 GÆÙR_U@[zdÉ£©IÝ5½-—‡†œœÊ1ÕÅ‚ÐáÝÆ”ÜCƒ¯†­*Ôô¦QÀèÑ:J2sM=ªägYgõg–­ró>@Ó_Î4—MA$Ë[×Ð6lÿ\¶n¢÷>l2åþW1¨½ŒZíþ«*jûÞÄñ^‡ÙÖ£º¦ØÿÎZ}·àË!ŸYïÿ œ…ìö+BØF¤ýcmª¸pwV°µ>¥ÝoÀÌÕ‡P½9þï´/ø endstream endobj 1927 0 obj << /Length 2204 /Filter /FlateDecode >> stream xÚíZYsã¸~÷¯àÛP•7É©òTe+;I¦jsì¸ò2»UDÈâ˜"#+¿>ƒ”(ÑK–ãÍñ` ÝFwãC“8¸ pðû«ïo®¾ûÀI@J„ ÁÍ"`˜!‰ J$’<¸IƒÏá,kê¦ÊŠÛÉ”Fqø»rÞ®tѨ&+‹·®ï'kUk÷ÀAlòËÍÇ«n®þqE@HQàJÁ2˜¯®>ÿ‚ƒú?±$6–jpA$´óàÓÕ_¯°×#B¡QÉÌ I‚ Ž:]•-âܯèOzBD¸qê6¥[ÝÏX`ø#®Wi7ü3Æ4×Ãá•n–eZÛUv*~÷¤â`JÄâØ ½YjCºÉ}*JŽ9[¢NG9ä'1Š£¤£t€6 ¿´uãZ•nÚª¨Í ›¥v½©j”k©Úÿ: ' 6‘an²féºÛµ£jJ÷ ;KEøÕM®ëŸº*±qÏt½ÖEªS£|0)J`_¦„ƒáe·< 8œmíZ*Ïn  ü…âažì,´Èr=f.¦Ñ‘}@HZêÚµœI Q«•oY_¸Ÿëuãž7UÖôä^_å~œ'¸v9û¢ç ²jÖ!]œpàù2F’° ‰„<îý°VÑ;ÿ€ELh #Š(Žc#3ÏâXµãž=1 „ì‹1ý\Dˆ Ö1®t°åÜÇêá/ŠbŸðs¸ƒž.j%è€Q‚ÁH.je‚§ÞyÞ¿oÆOvôT‚z´Ûÿ…£EVÐÿ³¢= :ø<•‡×æ —¥à&É07qг›X‚׿‚t“-¼Tt³¤ç3è±|Â7Ÿ4iµíBáÔ™oõ}{‚²vÑg)¼™]DY›†¾ßv¬C¯šz7™†¤•3\ëû¬ùÔ/¾ËøžPÆ‹K›î)¢C.ýš…/z^OÉ1ƒ„(ÀžàÅééì(©''$ÕK! É8‘G†ƒ¥rÐ`>£l© \‚†>#L)—akÁa¹;C4?^†à½„tYíØ¥9È7Žõ 0ŽjÊjëÆ²Âýþ]µÍ„„å›®;k28¥k]ÕæœÆIx3‰!ëÝ™uj‹5€Yž¹çQˆ'3ÝÌmV4„Nl!)q$eÜMØdyÞë洛Å-ØÛâ st36F•²º}e…¿Ík˜Ç"ˆXD}MØ×v¨1ʼn‰û¤×ãݨŠqO2Ó‹²ò2¼0溸5ÐÊtš0}º˜—m¥nu è‹c€QŠC°¼¥*ÊÆ‘mµïq›¥S»¤8üTîdX+nÎ'9´ÃºrÀ-+Ûzì¨Õºƒ1õ²ls“fz‡€ ô ô©G-ƒeh¼¿¥ï½~h;cȤ=ÆENc* 1%v³÷Ä/´.í=ô :‡€ÖΡ ZSÞ/‡Ùgß¾±<ŽÙìHDùKc¶=1¯‹ÙàÏéÿ1Ûf«~m˜MœãYõó<Ëw€ßðÏé©á8A pþ9ÁËe‡ƒxdR¤w †.s² 0·s´Gbnެ­ÃV$±% hQ}ïà ä<ü ÇÔYY¸1¸f#ìš Ã¢ôÈì/ÛfÙÑPtï•+]¥O‚iQwJÙcœDa»6§²iËpViuçûgj~gQˆªR7:/WkÕd³,Ïš­#2ˆË )÷€À˦ma‰žv _qƒE¾uÃeá»¶eëzÖU9S37g,ÂBk£ –¶®ÁpdO|óZ5à{äqVSÎcDaó֬װ“c™@±;Žx5s{ü°ƒ=þþùIëƒúTÛƒ@~­òpÇšÓvZ”ik[ºQYîá]éA›Vó¥ïYôŒk?#kôªö»'‡äá\‹E(bÞ?ܯ•-ý¹â©õòÌVÑàÑê¿=¦ƒö>¦;á‚ôc¿îf»îªtsU ìŽyÚ­¾*ÛÛå˜B„¾"ùÁ$–ÎæGØ9+jpê´7ôÓa%#‚¶gÀJ†aŸ¢oÜÁ_ášúX¹'fVzÆÿFXÉ0G1?«¨.ø› Ï)u”C JLh Cº˜Ûïq“8?†|V¡|iùD>ˆâΆ<§»íQðÐ$AÉã,€<Ö³èa!Ò‘)•XW±çè §Ø×'„6•ÂÏ«òSA!È^<´÷ļnhS!QB-¡ýâW@[ÿ’×Ñýì‹ÕÙ!yº»;=°Àâ‚!É KxldªwD¥Ù”{ºÒ…[°z¥¦µ^«Ê”Ǻ×v{ÅÉA½¨C_ʬØQßj[¾å¸Gkèö”*% $µçÅ<oŒ½|ÌïļrÌãÄÖ+ψùÙ`Ìãû×yc—ú›3$Ÿ_0‚ì_OÅóW{~B;9–Ž#X–\,¡û"yqt_é îOÏ8mÀ€ÏÊ8N]N^<ãì‰yÝŒC$A¸«àüod]¸XD^nœîwÇÞ,àÌ}…—¾„˜JùŒÌWWªiº2HåŠû_“­µ¾;ý ²¾ìhk8L&ý«®Ú=š bdËC ßuuŸìÙv¶ÊrUù©¥#n–ikë$¦e+’†féå˜ ‰#?.H…\¸Q_’„®$iåxæY×c%ÉuU~ÍÒ]©¦óèßPÂ2ºŠËWÿTÞvïÜWoöUª-Å4·Éêá‹@P½ÖÄznõ8»áLJ3 ò-ã¸K±IJöÊç`YJíŬà)›DzPãþ¬Æ¦À¦6ÎbNBB’CÿbX´ endstream endobj 1935 0 obj << /Length 1799 /Filter /FlateDecode >> stream xÚíZ[oÛ6~÷¯Ð[m æx—T`}è.ÅlØÒ¼ ]1(6c«•¥T’›äßïð"[²Û’œ¤ŠE‘ß9$¿sxhì-<ì½½¹ýð+'!(‚z—מO=?”Hrïrî½_ÅeQæqº˜L©ŒÎfë•J˨Œ³ô¥­»P‰Š e_"ˆM>\þ>úårôyD@ öˆE¥ˆ`éÍV£÷°7‡úß=ŒXx·¦ÕÊã‚ êK('Þ»Ñß#ìÔá/_x¶pñ¶†,$ ó| ])=Œ ,6à ˆ€€‚\"„‡  5G’qÑÖë ¦!„ÔÅèz.|D«€så]ïE®æ¢õD~ µ„YC˜ë.;5n™%è€QˆCR-3Ì6]çׯ_›U«`Á,d½=•ˆ>™ÖEåå³l®À$ÆãÛx^.]y©âŲ´hˆÃ7ÿŒrPÎ{ozýØï*‹(c´ƒ0ÎU4ÿ ì@¨Ð­9ü“Ì‚4j,È‹ȉ–êŽQ7úuœ–¤ùÒòÅî`` ÄÔbt½'`í8ìçîöÝÞeA› ׉†¶ˆ†rÄ`ӛР`Çêó:žP1þ¢ÿE ­/³†ßl¥(¡HJ9„¤ ¦âàtqmè:¨‰©Ó~J:À L†ÑÁW²ëµ×ªí|0 cÓ³@,P£Æ1úà–ë« ð‚ë|QvWdê¦xJ<ì³,†”¿á!ç_MÈϹ$_•oüÚÖ¤·gëNÕ-‡¡!gsm’®ôíª_.UåÃ>M¸¸Ôùº(W¯:x5É|ã3x5¶ëG¦ŠP†0õ‡¸µšœF”ë;û5{R‘;>K‚Pk)è‘N¦$€ç«Í«~hk·¥¨zº/ë´ˆ©šÛ7€Q •3Ñ;nÈ §È°ShÑm UÌ}ÍÕ,^E‰hm{ed³žóO€¿ŠÓ^C€~Q~ÿ ¼p+;‰Éªº+»­¯º»™¾Í’luµWý¢‹€öâAßbt4 TÝÚ›¸|w`òïKU4wð·ßOП”{0M‹ð4†ÎÇÊ<'@+¿S+Wô¼.TnK«(]k[×å묪Ìr×p®Ê(N TyNªƒ*™‰*ç¹S¹ (¶Áâ±F÷›w32pH 8«"ˆ(ÛFM(h$ü°j¤·øQ¤•*—Ù¼°y›\­² Åã/j¾Î4'qês“€X(„ÃdPóo,$ãâ8HÏ ñ_Ñ“h5’u8*…l¹ hʤæÐ¹;þ&…"­ñZFf¼"ÆNû+¥R«º™ "Ü×9šL}ÆÆ¹<—n±.\'m<ûP˜yÊÈÈ)CãG†6å° ¾@qîØò&ÏnT^ÆÊÅqZ”ø¡1 }06$æ`C<8šw bP^m+e'­¦qŸðÍ"¿NÐW¹â²?š‹ã'ˆ»=8.†ç‡:/SÛVält ´‰8àZצfÙJ]L—ë-á2]ssìdN üØ ÛÝŠi¯~Jãe!!í•:Kª¤¿õv^©¶½íu<=ØL{ÃÐ)¬änÚ?fAïñÞŒ‚­l<Ê â}ëº#û°îö°óv-ç½ßë0º‘¶Õ©‰È`ƒÒK½^§3}1 Ñp¼Z¥-¥™ÎåÞê—ö±­œEI¢£f]®ºDö± AÝ׫jVêÛ&p·Ëx¶´õ·q’41Á+;Ä2³O£¸­YºFI\êM~M—Yf ˜Hˆ…+28®ÿ3!ð?[W¡á½-¤Ê³©ió̕ɚr‘èLOrßå|O9zt‰E©yôK¬š˜ç½Ä¢`a<6a=œ†Û^¡?m¦OrU…ï?Ë}Ô˪š‰ê§îÁ˜|[ %×}Ý™ ÍGAèÙÂ9ŠŒö çHÈ 6t§Güù’=6;ÖÄ> stream xÚÍX]‹[7}÷¯Ð/5ŸÒÀ’‡6ì[!¤yhòRS ![v7þûž¹[J|íìUâBvíñÕÑÌhΑ<2 m¥JE—w.ƒð.Vˆ9Xaò4zÎ!E| ÌÖŠª¦/Ãv0¸ç,“bÞÓÐâmñC—'½t[fEÉã(ÑZ1‘𑼕Éñ©1ÃqnžAó…ZÎw¼ò„'Àç|†¹"…dä¨G!]²êÐ%­ÏÖFZðlˆÑáÙ"çvxv!¤¬a™W§%>\vK«ÿ[Xp–wÄŠÈQ$ÁM2O–[Ïò`QLKU{–×rîÐÂl¹l,€K±¬½D‡…U2ËÑaÁ¹!2£Z˜ÌæË¼QØ[Vi`Ð5£cÜ3ûˆ™ôÂÂhB`!fp湤^¤-L€µ¬+@9åÒ“aõ,‚…t2¶À‚a0Pdÿ(µ„3¬eQX†(rÀ3À,IІg‹[貌bnï‚p ƒ\" ³UX‘sÁD’daä(*ª$(Tê=õ¢LH®§aÉ >)V˜ `Y–E +¥¸êHÉ¡BÞÔsCd© › Êk§ŒAé t‚hæ ŽÃ:BpòhMÒoê©¥4 6âe*F)µPŠqê8r!’ƤÚ2 OšÄ\™Ý]]íöÏËkìXÇF~Yö¿üú[Rµ{…l>||ÿþÍîÙ³/âÄ[e¨pHbµ¡NGÀë›÷åêªì¯QFíaÆ5Ö”{ø€]<íÃõÒåû·7ï~>Ü—×eÿâùuÙ¿:|º/ÿyõ÷_ ¼ýã°ÛÿˆH‡÷w¹Õ–Ävû—‡»›·ïw§Êòì§Ãï¾ýáæSyA, ‹ó‚ã­Žxƒxooá$OŠ%»£õª}¶^*£õÚÏæÈø£êöU%ìÛM Tì˜m ·QÇ&MšÈ‘ŒêÄš‰ ìá¯Ãgü¯”ó‘"îšß&E+Nm iTœàOàœð~ª·‹Õà>©÷I5¬€nVÛ,S“m Ú–ê(ö&_Œ5lˆ°öŒÒ :“m r’Í‘R¾t¼|³lúÙôËeÓgeÓWÜA6a¶ Ȇú„G4•$¶„¢{<­<ì”t°—r2t’“#àc[yô.¨`ßÚÐjîÛÀ<°Y'rÄa]Yth¡Ç`WS–ãb–£M²||ŒåÐpw›ŠŽšwÞM A7Ãøÿ믾“8å$úWqMN9³œŒYNŽîÙ†è6ÐÐ{ñÙ/¨wÛªgÛ÷5°µÚGÿþäE;½)åúBòò?EÞ1ðòÖ@ƒG>ר¬è,jœcy ÌCNHŸ'¤§œàZ})'$“œ¹½®æPõ9ùŸY«œk/Ö@m^±û¶âøÎó Ø¢ëÎù»_Kƒù”rnSÎ4Iùu7­íÜms ”Ñjþ89SΣ ~©Møö ö3´Ë+賜¼Ê­y•ë*Û@ HÜÆ6PГ‡OÑá×x -DÈió"“'“Íû10Õš¿ño…ÐBmÉq†~~âý°9»% endstream endobj 1943 0 obj << /Length 1873 /Filter /FlateDecode >> stream xÚÕYYoÛF~ׯ`ŸLñvO Aê´Z¤¶P H‚„¢VŠtxÄQ}g/‹¤TÇ´œ£0`-‡»3³³s|³ÄÞÊÃދɳÙä§3Nùe6ù0! {Ä )p¥ˆàÀK7“Wo°·ú¹‡‹#ïZÏÚx\DÃÆ¹w9ùs‚»ºÒž®Š¡ˆs«gVƒ|}ù¡Í¦TøÕ¿$U ½)µRÀþª•g/új óBÎPE·«!,n4í±ˆ(‡)bìÖÝbÃva;†Å¾jû”Ž˜aBºb‹82Ǹ’Þò ggؽ_ضÒŽa®– (ö0УÇÄc( ÌÆÓ§Oµµ[p´ ;ŸˆD^éÙ‰™‹8ìàæŸÝ£€hïÕi€±ÿ¤ÇÜ+™,”³¾Æ[†p’ µœðGÑ }‚Ü|à@,‡Ï[chŠS»·SÂàñ}ì1ÿ¦öß›9ÒïÔw‰×^r°/yu|jØOPÀ‚°pD‚ÚE8¡ê¸hÀôɹˆ Äy¨ƒtÅaJ±¿md’g«B.LXÈeÒæMmž ïêß355ÉU™ Ø·•#)ìšÌÎN»jmˉt3ÊåàÍUR%ÙÈÊ<æYÝ œª_00øbŒdu­úY[¤ª†)Á P³Ö¢a´N”¦§DøÒPõCüyo£@×$Fƒƒ ÓuR¬ÜìºìK"~f%¥ªU׿¬7U2­ 6„ß3ÅÙXP=V ˜¢R[V[#Ja`¶ ˜Ã6e¯Z‰¦§ ÿç\+/2ÍWe)3¨'ágv1²zÝ12VG)*¯“ã~߉j(ø=êäá–ƒG1lÞæ¢9䢬GÄCýÕáÀ¡ü²8üÒáÐómÃ!Qð‡â¤BÍæðŠfÒ£&'=&w\Õé«NÜŽwÐý($Ž.hK3[Égk 5#a gУ¬¤¡¼Æ˜IUº?eóÜÒ;ÛÔ]˜žjl[Ua´¬–]™ ZÉa§–…å¶*ð…•·}ÆbÇx[b M‘‡*òÑ•”ïM©6`dXã[ ~QB¢BI¶ø=+J‹ÆucЮ, ÃÒO=Œ>—rk²ºvÛhª$5ˆÄB•¥Ã,ö@…ÂÒM’å5„ƸírÄxàÔOrÚQXƒhÔç=ZdYæ\Û«°‘}h0¢Ç0s¨±R¾Yøï ˜3Ã¥Zîlÿr ÇoçPôÉaO}G7Êþ6Vb+1×87ö Ò^- LÏAÅÝ‚êæJæ8¢9ÆX­t'ouÏDã2Å"·«nfwo •ð¤h“\Kd{* £"÷_>?;$7΃£MØéþS÷6³—†Y1pÀE™Ú{ÆE­HSVÛi |ô°íÆ: ]›“{—¶ÍI·Ë¸Ç’B%›¶*êö_ÉBBKY£)…¹IÜ-jý#-“tÝï-Ýœïx=ËšK}bh6"1ƒ]ƒH >ö°G#À”á1ب#¦‹,㯈HÄÿ£U€¥ØÕ{b@²Ã=ê¬oƒU‚‚.üævrÛX¬q C­E!ôƒ¡·Ê%1 •ÀM>ˆA½ù‹£Ç÷¿ %˜ëÍë«Pa6…aúEù¶.U Ch½U•]mIÇñ°m|ìì0°ÀØkÎu½VçºHP—´‰ƒG@ª¯dš-·–liMR5s“̉ËýT]Bñ‘yÐÞ^Ë<ïS,“´l 7ùz¥kó6Ï6æ ȶ<¿h7sƒG¨Í‰ÄâÁn-²go3®\Œ¹Q!$DàHG¥I A(È—n!;b¾m Ip€D×A.3@)ãÙåK›²©ë(G¤ä½Ûl“~ðWO‚$ Ü»ˆ¦”"n~J”a-‚ðÏK4“½Œ a©¬¥CtŒežŒWF}(<ø¥ðrïè€ÜO ÀBeÎ{|²¿½Oõ‚^ Ç|©?ü±ˆA‡¼¾ë—à¼(õÏZkÑþ5ºƒë56¿‚ó+ø _ˆ8ñ %=ãƒ!ÿÔíP‚ endstream endobj 1952 0 obj << /Length 2358 /Filter /FlateDecode >> stream xÚÕYÝ۸߿Bo‘‹˜)‰’h€¦mŠ; ‡6»À=l‰,Ók5²ä“älö¿ï g(KZoߦ-úbóc8$‡ó›/Þx»xs}ñêm$=)EÇÊ»Þx‰ò’L y×kïÆ_•}×·e}·Xª$õÿÒ‡©û¼/›ú%½3•É;CPH.n¯¾øëõÅo¶ |°bpwxõVM޵të–*ašÒêëmÙ¹“å57ûmnOù9 t½ÙS«ÈkjäU×ÍŠ_â®\¨ØÿŒw2õpfhˆ¶[H¥A½±0ºfº÷hѦ©ªyßj‘·f¡dˆ+@pý¥Œà4ݱËwH@^R;¯×Ô(û‹8ö;êýëÐõL@{ÓvMWÜkÍÆ´¦.˜ãý¶,¶Ì¼¡ÿCg.íK€ø=«9Ôm™¨¨N…–¡§³ Þ(úºš¦"ˆ-°H¥òt¢`^}Eà©D$AÈ,íñÈh›LRŽ·Áñ(N„ŠCǸ5Þæ$çTó‘¤HðD„°Éˆƒª ² “ /f"Éèq_¿~=S{xö¹ÒB¦Ê¥“D,"¸Áðc·žŒÀÖÞÍRÿÇ wìnòËÕeqË̾}ù%–|¬¥ Eÿ®›¨s“3¸øbÆÁ·–í}9€ Ù­ø¿€Aù¾‹î78_©C+‘"ý:‹´~”ÐadôRïƒ@Õ뼪ØL.–2ðM϶–-ìÇ¢9Ô=;‰}Þ‚ÉêMûUƒL-ù›g¿ßÅà(•ŒŸcâ$©þÆcM–`èžaFÛŒ-3þ/Z 8Eå”§ K-l"Ô˜ØNFÞ} ÜU Nh†5 ³g¡uSZ5DFÃ)jÝ9LçFįéÏGûù ôX…hžvûÆjŽá‚¸$cã\rx€a…9ðãB5rþg.‚‹„Ù³ÐORýÜq›ÿ1àÀ fIôÿ 8“›Ëúö™P9ûé+ °ˆSýã €–ìˆ f_ ³wРˆÞFÚ4/À6õ‹…„˜½–1ëi}gjÓæý¹wSqÓ>Ú4–ïx±ƒëîà¢ó]Óò2³Aì¢W.JÀ/¿Úw;ü¹·7¦ ºnÿçm^³‹ï¦IÐÇn_a®q†O¿¦[kß.ÅfrLš`ø˜ý@g›wD‘SÿR@çRXì–Úß§æ»ü R,–¡Ê\vˆ»æŸîNv ¬¬ç§òâdòUTMgwJ$KB 9ž„Ô®¥¡âÐÛìŽföUN¢ä‡…ù!ˆÂ“%KÆMØì È1 ¦–Ó^NI®§‹ ;v°jê;Óº£ñΤg'.ÔlfÙ§†¦Þ”ý•-fÌLƒÌ„R)¼µʼnÌ{¥ây„eÿ'b¹wŠïöÙ• ¼RK½Vw¬ù÷Æé;Jè‹ÍÊ×(ïËU 8~ òû²g+HÕ™–/ xáàåXœ¦5°ú©ªJUÞm™øhòÆNGࢴq"ƒ¦?´5Õs޵F-" ü—c­sÞae¸´Ð±ÿƒM÷Uoöû¡ÄTòsÛ·;Ûj‡Jc%‰ôn† jØf¤´A‡-­áä'¶W5uÑÀØ$>VJ׆¤Š%ò™m{K«q|Ökk â0óê»Éa5*æ‰çΩJÕW\—«›zÙõ  y»æraGÿ%—ðÈÕnLÑjƒÕë…ݨÜX8T} ~¨ÈÇë¸H¾¦'dfìS`é~ï»!¶åX¾Ì[WЬù¨]ßìOÝsxŽõïè*ƒÁUB ñ©tº‚ÊŽdl±ž–=J«#3ÿ©ðða1nòµìac²£©‘ÃÅ.J ( ±6 ÁV˜‹¶ëÒæ$v͆Ö<4°qWî¦QL8}7‘1Î êƒLj>™iw>˜Ìä¯ ÎÐÃ6'_üE& 甂QÑ9l::©‡²±2Š—‚M¨»µC†"PYÓ@CËs_ÚO]¸¾çæ;~»’†{êS"ú O;ü¥\*Tƒg_¦Jd¡šŠ÷X£¹3Óo;gTÆågR/WÓô®]wCäZ ÞûˆõÞ1Ê»SÒV˜êc¹ûf™\^J}R?t$â8ÃF)¡Õ5¿ü±?÷,:¬¶éû’Žð3 §q>Ì_Hkv'¸xË·²uCc÷”æ@ LÅ‹Æ2Ô%³¿ÌáƒÀø¯ P{  Çp9„‘³”OA‡H'š¢/4ç”.†qŠú±lGÏÜbdk ð”ÒÒHלG”‰8I¾Ž 'H0Òá¯gÈ TGͮܕUÞÒæ§!-,µC´æ3ž•|4O4q6Ø4Oi䎑5oLà‚¾ùçå2œóuùô§‚05åJ²T˜|„2‰±Ž°§tݦ, (Z©é§ï_š~˜Âÿ ‡xi endstream endobj 1960 0 obj << /Length 2464 /Filter /FlateDecode >> stream xÚåZ_oܸ÷§ÐkѬJR$¥ Ð9ôrÍ¡}hbppŒBÞåîªÕJ>IŸûé;Ã!µ’Vv¼¶“¨,jDÎ Éùóã,Y° XðÓÙgz'yÀy´PJë fq'*H:Ò2¸X—áuÞ6m—›Ù\$iø—j¹ß™²ÍÚ¼*_íƒ)LÖz‰#ų«‹ŸÏ~¼8û팃,ð ÀUDœé`¹;»¼bÁ è?,Šipk{í©x$ í"øxö3Ö×U tE†JER:=›lÄ1«S[õÜk‰ÚÀTuø"Ž”J€9 ¦.C Ðäqì»äåü¦È–ægs¥dø¶! YYµ[SÓ‹™qþžín Ë+¶}Ù˜–ЙŸuc©"䌈×w­qŒs7…ÚÌ„ ?#gS7æÐÕæœÉH/à)a94©[Õ+ÔH(ÞU{j,«}±¢æ¾1“«’DšwSnþ‰2jó…Â@ÍXøgz4—ì5g¯çéÕäÊÁêêDz>‘5q; ã®kÔ°¹GÄ?™å\,À,Ò$˜Ç)˜KL\?˜]5,üŒª¡åÕ u‰;ßMÀ>×ëßjá,j¬2C)Qœ¦Äü×ç,´ —Æá2CF© Ë 7â–¨ÍYæë;úB=b…=¬8ÿn¿oj“µvG€Øn}÷„¾¢“ávkœ¬%Ž ¿zFòö£õFt½…±+ÏÒа½uD’ŒÖÁFvÑ×/‘an—J…YÑTD9ÌÈàJ»¼mi‰¥×>ì¤ 44ç”Ö-ï2oó¬È˜·R`°2¼Ø’̃lPy½/ÆÈl‘4ƒ­ÈÊvj:è[Ö´íòR;£G·Tôº®«µH_hìòÕªpm»O‡Á4jßæí¶Ú·ô²Í¬Íul½ 5bßç‘—¾ã̶¾›iåܬ0°®@ 0ÿAÜÔ©õH‹Hƒ?;Óˆ©.tX¤\š'Q?~¡7D’X:ǪSzbã¼/éR%‘P±g\›`=ÉÙûåÑ3JRà“2”.;hÐE ¶à.;h!"Å\vxóæÍÈý1ðú ñTø€µvK ºVô€¢ƒKû̱3@Hl;Ïx<çW’ ¿BX…¥¤A :Ê °Þ¢¸»Î7¨æó¥áå‰~ä}Ú¤1Á>âŽûŒÑ§Ð ”Ù¿{”€•ß´Û¯®D,Æò+Üãä_p{)‚î´Ç¡XèXŸ:zó~dÆžÀ’à*àñÙû²53!”C6 ãR4¥Vh\;ü˜5M¾)}N·QžM‘/MóÒœd 8Dj á6”¬%©à3°$M†¹}œ›!ÑIÎÃ÷ëQjÎg<s_U¦)Ïg¦J½1k´®9bÐäÿy0¹{Ý@ø&?@Fdò)écF_`‰à¥Ø›뺪©á×¥¹!ýlž†gA*_Eˆ<’ðcå¹úÏô½%¶Ü zµ;Š‹X ›MëUýo7:sO’Ð @Çë2¤ˆèås2¤b‹H|ÑÕ¸zV~섌²#²ý†ÙQq8ꥋ§dÇæÒãùG…æqP|}Êh®Çïž—›'ׄ³ê`蓃ø©vulÛÀ€1þ„>}p–ib¶v;É!£6ô4¿í]ðx.€Ã~uïŽ2³y’<Ç¥€!å׬=1ß°J­Àãÿ;—œ‚Ëû¼üú¨qìàß1¦/Owšc×ÕˆîÕwŒRð(Å7´é¿™ÆaÄ$q4Â"§ÂÕÎÕ)–Û¬ÜW|pz ”ˆrm| bgzîÉE•Y®ö/ŽØn³–Z…S[M¨ á´vµÒ«8©¯Ñìë)EkÔn>öÖ¶,‚x/fI¸,ªÆ– ™¦‚#ÐH)¤¬«šHEÞ´ âÓ”Y‡4÷Q÷K—ŽA}gµê3]™Â´îûMÖ8TÒ’Ál‚Ǥ„ûÒ«Çà÷Û¼(¦¦u@rþµo\òñbû5—®ÒB_¹2LF•Xúl1½¥æMW±qž1øUêÙuJ6,P¾÷å/WŒF³]Ûý´•(x³»áŽ=¥?ñìaùO:é¼…R‡¥ñ 'UXyø.ÝæcƒÖ ÙÞ.¡TƒýdA€¤íưŎ’·n0}@݉бGͱÈÇÒð‹Ê[³ó JÙ©q ê…ž2a¦‡Lö™-LÆLÙÓ>¯«ª0YéÞ²Ò}vF¨\¡[¶¶~ø¤Ñ>ÁÙû&jûØj©í\Ñ“ÓÃyŽ /f± ë½ëîæ<ЀF¼C_ËŠfr’–®$x¸+—bÓ›óµéŠøºÁ`ww ¶oF¾áöÚÖ û{Ýg¸Ü×5À¼âÓª[¹q½8qÊ M( ? †¿Åg7GIŸ {búÐ1þ†!bIúH˜½<(ó “1_ÿã®"8 ¶¹@w8BWÇ™V|r‡Ç¨`9¼ó>ö,=î«,⪠f»ê€›«ŽZJ÷꥞bód‘þÆ¥<’ªû¹ìÄ›]s>®i>Æ’Æf„É×çpäWòIGþë1¦“MòS\.ûëüUªá¿ŽòïÓkà×ÔNíüEÄ^½°!¾]­jƒM²óÿ ‹DÏ{©pôè`ò"L&#R/~|™Ñx=ylÛ‡› ®#_ص¥ 2ü?2–>ÕŸóDG‰H†Ûv´&O>ºžžÜ!°`‰üGW®E$SNkò÷¼Yš¢x`ÿnè/÷`zØ!Ò!°ÿ$„šØÊÞ °¸»Äâ.jXˆ;q)|;]tw;Ǭmæ &²‚Þš6«Ûë¼õsÕ¶:âMVg;8˜ÕM44éù$Ç0n·žžx„\0{FhM?ÁèÄj±óǦ‰[*œÅÐîLx—«Œ“ã9ƒµtÑÌ8-ÿÚ´ûºt2‰´1%^„+Yh¯5ñÃYRk–„žnž]kF¿ó@º°ßš¶5¸»?\1º©Ó!õÛmå¯ ¸“áørxCaYíí áÕå'æe·&ÃÕ`j\¦~YP”‡1SK(uÄDgcU9:^îp€îl@$€ø¶“¤[ÁûÝM]áÉ‚j1ÞØì}üQl™›ri9ÝzLÙˆJdg5ÇÔ´b¥Zn(9…Æ×”„œrom:FÄy… b Ø"|··Ögÿ_fªûy´+ü6O^œÙ™Ç©ä!ñXãÿUœÐ endstream endobj 1969 0 obj << /Length 1807 /Filter /FlateDecode >> stream xÚÝYYÛ6~ß_¡¢•˜å-)@$i4@‹6»/EZ²Å]«ÑáŠr7ûï;äP¶e+{ òbQCjîof$Óè"¢Ñë“g'ß¿’,bŒdJñèì¶µ÷ƒÑÁZ,¼PäN~' °Ê]ö=Š3K’±m ß¿‡PwïßOF:ñò†”"Ùñ‚â sFc§ù¥šÐ$¹ ¿’õÝÔ¼ô¯öSfº„æ×²šK™j“qž?ÅTC†$òfÌqÅw*¦‚†[OsLR’Q¹ÃÝÃòtÎTF”Ù*B¶–viª zÌ WwªvŸžtmíÊÒmÇÜ ¨½å¤ gz$gDël˜Ö¶òaaEj/ì¶]1„e[¯¡ ,JˆHi‚ÆÐq€¶ëÔA—ö¨ó"œOøÓÇ-(/ÛzQ6CgÑt”sŒ$ ßo!鯅ÊôQfŽYqIÔ®8V‹«ÞäUyÑÌPa ÔÕÉxržàp˜QŒQBå¶MáDIÕ0Qª3õÞ€æ':&ÃtéBÐLxj»±Û­ §Ê`š4I5VЧD:vÍŽgÊ%².̹O›MdÙ~+vÝÚÒ5lZ‚Ã.TÝQý@‹—«¼¹ð¹Ü|öqÑÂ<4¡y–ª’›‡Qf¯K¢þÀ[\’nÆ®!×'y¥ûµÖ§»ÓÏ ¾O ÆÃÒcïEÙŸúþì]˜Ä̘3uƒ»u/ÃW¸n :‚mu× Ž@¯Èc€—Ñ[¿†p1q•&øõoþ)¸qûâ?b‘B7àLNÙu,hSqbűjÇ”=1EˆÏžG—ÐÖ8TåÀ¸3Ñù$磹{;ýº”&®í–°ÆŒ(oÃ7 ‡v ý$cá —0èPÍŸ={6ñÝyHf¶—7á]€H0aûãe(~êÉÁ‡ŸÁ®Þ/¬«äÕÍfÚ0JÍ™ Jf÷2„?ؽ÷UØäkÂ%·Iô*¨$µ¼¦Ž‘ ,`X¸²¯ù”iÏ2 •bøôÈí 8šHiPh˜¤[ýš=1Ÿ·Ð°„ÁÄg-409h sßáHs;Æ?|p ~WºqNàC# >ô*¯¬9Ô(èáç{ïý”x¸s@®û&’Y endstream endobj 1977 0 obj << /Length 2048 /Filter /FlateDecode >> stream xÚåi‹ãFö{ÿ ÁBZ†q¥NÉ d`†Lï&c'MX˜Í&²Tn+#KŽŽîiÈÏ{uÈ’Úén÷»°¬ÒSÕ«wU4¸ hð÷³——gŸ_H0F¥xp¹ DÄ*ˆ“ˆD2¸Ìƒ7áºèÚ®)ª«Å’Ç«ð«:ëwºêÒ®¨«göZ—:mµ}„±øùò›³W—g¿Ÿ1Ø‹,ˆ9`å„Ñ(Èvgo~¦AðoJD² n̬] #<Ž`\?žýóŒ:Z)a „GWD,hàÃàë£\áÖJ)G¯ušüÔ›è*÷û|Yt?ޝjû,k„0êÆš´huë,˜ ßezÒ1Bð|~Á'DÑ`É"V+KÓ^p^uß–·‹¥d)>’°r- n,d¯õ[ ÙôUf¶2ðn›v®«¬î«N7:÷Ÿ´ÿâ È&Ü—dÌ/ÂoÀcÝ—nºáÒÓŒ!L‚P#ËÀO ÆX˜–½~Õ4@¨R!é4 ¿š¸„EYÚˆx½Á—8,ª¶3â—Fw}SÙ±! g4z—Unä-~ÆßÂÑeÞl‹ ³­–Yp¸Öö™Vv¡Þí»ÛcÌ ‘Ãå¶@+úgVÖ­!Æ]힆 ü›R^ºq½þMg[ŒÙ \ÓLk6ì¹UÉbÎ#¼Qï@ª4¼ÖÎŒ¯‹¶XeNÌ ¾ÕÝ)¶yi,DqDz3ËÍû¾©÷ºÁ „bÖ`ÒÖšÙ3ÀЗu¯‘ Ÿ¡-Å ŠÜ~Üú•ƒqàËZëÊ/þÀ¹®ñO»E›¦ÞÙÍ÷ýº,2 ½.´EqD³iÙÕW4å-T®dø·¦`ŠÈ]%ã³oÍFAÍUiiX÷qEX¢HPáYN‡Ä¹)Àm[WÓmÝÛA»Es¬Î x˜8àݦF‡†G»A¥uî©C;ÂRß:S+:g®_o,À슃ü`¡• ‹Ðh)XW46&ÂV¼Í¿¬fn,Jî§íÓ&ÝéÎ;ÆÁµS(zSt[ç?iq €ŒLlñT‡DÈȲd_м”ŒxÛåÓŸnqòVÁ›¥¢4ü6mP=úÖzcqJ“/@þR‚6¨ÁÖfüˆwÙÂæÊü½˜žFF¤ /u×ù´´ÇPÔÖÍ.­2}ŠÃ¿ L¯ß­ 6›èÁ£´»­óÖQ¥ºÝë¬0|ÌŒ"J’XzûØ@?fCÈf¥~Ò W¨ÔÕúÌ«,®*}+£1QIäW ­Yº§^†gA`'·°~oŸxq‘/ë° ™L=P7éÚFµÔ凖7…¯¬0Øš²«=I™¹‰ètm¿ß×KF&„á`}ØÞ^|÷ÕÁ_«TÊ©~vLò1a±Ëý™Åùýëûq A”ìàG¡¶MÁÁ¿ÚC%DòÄcøÏ£öpqõ-Ƌ͖zén_ê/Œ>E`4m ÝI­HÄD ¡ÄNhr¼"T 5ðÅŠñ@D‚HPï=((ìC8peQÜ%í.d´M fãm.UL¸q£ƒÍQÌw¢ìãâ•1|ø_71øâ=(ʈ¹âjKeÕñüùó™õ£zóyykHH©óG  fë ĆøBü—ä8”ƒÞ¦#W¸l•€?ŒˆÁžÏ¢ü£Ñ5ñ³§,=ŸQoÄü°ôç¢_:Y.¸å_ˆÖROs„M ÑîA‚ݽºƒÈ"•|²î>{‚ÈÌÂ'ª‰Qø½¿š` ²âÿì¢1-lŒ. ÿ K™‘ðWŸÄ%Z–ÐìŸUîÄ6DÁW§Ä¶Õß .I”¸tümÑfº,¡Ëƒ,{z®<–˜À†”×Bû Ióh1 UA’> stream xÚíZÝoÛ8Ï_¡Å=D9œ¹ü–Tl ìÞ^(n¿Ú¼µE+[J£Â–\‰nâ}¸¿ý†J¶lÕìt?Ð ‹¤ÈÎpæ73´ið6 Ágß]}ýD²€1’(Ń«ë âA”h¢ep•/ÂiaSåÛ‹ âðûj¶Zä¥IMQ•ÿ±gù Ú„[„ƒ­Mlh€w"ö0耈’DQ+¢÷Š{ŸýîÁO<¹‰ˆÁÈý±ª}:Ò,óYцûEnnª¬cÿ­LcƒoâôkŸeîi;yÁi¸°'„\?Ͳ<õ PÿuUã 詵N€kÒÜׯåXväC‘€`ÖG[½}óÍ ncÂ4ëà ÒˆBœ >N[¸$$‰Ø0óBäïWÙ,ÆŠgòÆx?íG£uß:>"ˆ5q€OûòrD„PŸĆ˜.Ž~uy/A0Ñòy °¤á{&5aÃm ÝeqÒaÿÿ†¸E„E¢á ŸÏͪr–š¼lóMú(˜0®ˆ‚¸7á„&IþóãL·f<3@b F´ö!ãÛyS êRþ¸Søë×Mn “/^¿â ˆ  ÖÞ¥Ø@Œí4«å²ªMžùn…Ï"°[Mßå3çaR"ÙÑiŽÏE•6Ím‰ ªž¦u†’2šð¾õe†ÎÖ&Ý˜åŸ 8´5¿Ôà 6»o«ØÚ܆ž(ó¤(a ø•Ò,|[lÔÕÊÚmÚ@`Ÿ·u8ám™aYј•)æ v›Y], Ô ŒK^]İ?|ã7‡ùC8#Ñ|X®ÒJx0ŠÕ’,×ÞçýÄ­#‹«Q YÆw€tðÇóp^À“HFZ}0@*ûFs‚¤PÐOòi½Jáx}¬…CfÊVÐâ”&Ð|?À™ƒ¹5]% „Åf%rv’Ì}dD 6ìì”­nìt=È;ûât%¯/7Ó ¢Ú"¯yyZ‡­]2àÃâð­»2ÀWâÂÓ´ó·Áv!S¯fÆL· Áç&±³¬‹eØ~“®Luîù9I¸†Òך¹2cKÏÝ%Tn¾ðw–L½ ûòÍ´å»Y/ÛBþÚ9>ðFÄWå¿ôjq§Üõ'Šñéùpß*~`Éݨúk8¨XœRÁCVH4e‡Kù°9¡‚ßb³]Á{¿cÏàK¾˜ ~Jº~wÓ•Vé-íÖïb[,N@ç]*øe@6;¶íßòºÂ–ÍÙú>æ¾€éׇzúW<è»køû³žµ¹mw õÄÃ\bŒG®}ü’ò#n1¸ðÝ» ]%d›2ºòCQ­š¹]ÌÙ„OúáÓ†[ñ§>>¼ÉR“žûšÆfØ®¤ñ¡ k|h@îQä>δE‡¹)šŽq¹³ÀÇNÀòv¡©Zb³*ËÇ„"–À¹ºÚ E,VàÐêðB× áBÑ›íPä ÿŽ¡ÈºJÄÄŠvÅO¬_v7/™wô¨HuòRvôÒ©8B ýSeT’ˆwhù°P,8ÐŽvøûª<7ØÌ<&#JØVZ®±±¨êü«‡éñ^½-±$ña£`šiN’È_!Oê>&Ýê …œu”ÇŸê6lþ`¨ƒª©èOu6žŽùJçòô´êŒdµÿI’ѧAòxŒíŽû $xœ<FÙ« îo~Ü%‰ý¿Ë»/PQˆú¤/øãˆ$‚}nœÚpùca*áD17ðÇŽpÐÏã„£MmÏÞB$Ž©æÚgï‡LJ®£1¿cþÂZ$D·ŽÌ¸¶_¿²H…ÿ¾I—¦½Íå”@âÅyÿGV?U»Å2(îÿæ>j¸ endstream endobj 1995 0 obj << /Length 2108 /Filter /FlateDecode >> stream xÚåZmÛ¸þ¾¿Bß"£1ËwI ×6×; À]²è—Ü¡mÚV#K®$ïË¿ïCi-ÛÙ¬×ÞMî‚ÖÔˆgFšgfD£ED£/~¸¼øë[É"ÆH¦.ç‘ ‚ˆDEI¦‰–Ñå,úOò¶ië¼\ŒÆŽ×¹oÓ»[èçZÅÞ“ø§°+f’”"]EÎß`çÄb¯I{¹®œ0Ö?9À¤¨Ðâ»®™‡`Й/Ç…H(vUºPèûH%®è}² o©ŽOïŒeW4Á ½Êoò•é ˆC’#ržr"uJÁ)ƒÀ÷…HR’‚'ŸClm³CÆÏ˜Cð„CxeßMáš çoª=¨}XEË+_–÷™O+"·º"²»î}›â6‡•Q?§Êã5AO²æÔOž¬ôwÂ÷ú ñ-»äöjöƒ°à4ý Ýn¦L²ð8ý»ojO ¸øoËÜ–Ó@¼ûtî þ@,OU¼Ê›SÙw¼ýf3]âÈì3%H*uoúÙ•¡ §<عVàXú ý\Ï‚NvZáWìãBØ£=T FŒPè‰õ0Nefô’póÿÑSÜ áX¦CìÔ¼L!ÀËtüqmí§H»Ó“»è?QtÓ<(ª+ñ˜Ú ™=ÌzHιì[é!¡9¤P"Å—Ušd}×½¶W¶n>ÿyäÐTÞ¡ÿ1($~oC/ZrEàaöÚ»Äår$U¼i+ÞÅN">ÊðãÖäE3¬Fì~º I:×É1_®~†DIK€E æ¾…<àíÆÃaxpþ3‘ÀÊ`‰3 þ+oZ'8ÔãëT²˜ñdWâÿ:À¡ endstream endobj 2003 0 obj << /Length 426 /Filter /FlateDecode >> stream xÚ­SÉnÛ0½ë+¦7 ˆî’zlSð¡@ÝŒ‹ŽH¢KÑò÷¥<Ža¹-Ðí4Éyó‡Â3Pøœ|¨“Û…dÀ©”âPo àPTšh u«ô© cðíðœå¼(Ó;·Þ÷v&´n¸Áܽí¬-‚0"²Çz™|ª“o ‹m(0|•F5¬ûdõH¡‰ù%P"ª^ާzŠ^èèwð|Mè æÙÆc•p-¦›š…’÷ƒI"¤>¦$)¥ÆÉ8 ª#Ö¿o«\Qš.Í1šîÏòh_‘ &Â=Niõ>Ë…”éÁúŒ©tŒb-¾H(º©lf n|¦…œWD”%Îñàú‰{EÓÍÁ´¾{ŸoçÑÝïìxƒÑà:ÞšîítcGë¨t Ý­Aó²uÝ©Ía‚oýi€˜Ø¹v—}ÈœÔß&óZ²8©dämPLÿÁîìÚöOÖŸä©.„*-û¡­ϼ¯¿›]¿^˜øY¹.þd_~¾Î¢":;b`¼Œ+TúqkváL%Y®9Ÿ/óÿÌ5Æïi)ûá endstream endobj 2013 0 obj << /Length1 1606 /Length2 12774 /Length3 0 /Length 13604 /Filter /FlateDecode >> stream xÚ­weT]Û’5w'8w‡àîn îp€ƒ»»»;àîÁÝÁ=¸»ûǽ¯»_÷õ¯î÷c±WU­Y³jÖZco %Ua[# „­ #3@dmäì(ok#Ç bkeø0rÀSPˆ: @¶6b†N@€:Ð 4°²X¸¹¹á)¢¶vî 3s'õ7u::úZþ ¹ÿ§çc§#ÈÌ@ùñâ´²µ³Ú8}@ü¯7ª's Àdˆ**iJ+H¨%¾$6@C+€’³‘È 2Ú8i¦¶«,ƶ6& ¿JsdüÀví€Æ m@7c Ý_.z€ÐÁäèøñ9Ì mœ>zàd Ù[9›üEàÃnjû7!;Ûëߘ’­£“£±ÈÎ ð‘UILâ<Ì þÊíúplM?"Mlÿ*éoß̇×Édãpº9ý•Ë09ÚYºäþ³sýMÃÙdcöOô ™¡ƒ‰ÐÑñæû¯îü³NÀ«ÞÐÎÎÊýïݶGý“#ÐÊ”ž…õ#§±ÓGn3 <Ó_ƒ"mcj `aþ‡ÝÄÙî?}.@‡¿Dý×ÌÐ|04±µ±r˜Má™l>R¨ÿw*3þûDþ7Hüoøß"ïÿMÜÕè¿âÿëyþWh g++CëøÇø¸alr€¿î˜ÿ/ÖÐdåþ?Dÿk :ð ÿ'i'Ã6Û˜}HÁÌÈü#ÈQä4Q9›L ­>zô·ý› ÐÁ düÐòï6X˜™ÿÅ÷ÕdlióWÓ9þáÚ˜ü+óyþæÍ¤(¢.+¯N÷¯·éßQJª;}u·û öuÈÛšü×â/ [7€';€•“ ð…‹ÀÅÉâý?dû†åŸkyC'@û£df–¿ ÿçŸ+Ý·1¶5ùkJT mL>ë¿ ¹>ôüû¬üŸë¿GtÃ/ÍÛóY¤e¦;Õ|þ18.¦ÝÛÍ1lWüókAž_•m—oZØîrƒ—ê`ÆúIž·÷¹#»×ÚÝánl+ª®àY.7MOÚe'Ýn“^1Rú±z”çù¬Ü¤ÖfµÝÍqe½¢hÂÉ66Øó{?2—ÉG$INî7?ß ž\8‘·i;Ãl½0Ì—&­b¥‘^›­áøL, 0 é2°gåDòq¦e¢B^Îr¹mlZWü?a’¶f¾D)æÊ­WƒÓWó-èË$1ƒcötAɨ"­ª_°ž¼7Ø\!z¸ÀÈ Ð6ÜŽÊö ¡Uµ}]JÉwÅcó¯ÿri£ Æçb]pøÂ31ë~ã‰ä—a`k¨3“š£u*“Pt`i‘œÿ²3ÆÌfoG9¤ˆ»f–¯ºï+T?óù¹›öÓ‰äN?X6]ßÅêYê0þ9½µ ßhRשígU&¸å¨Õ…”UDêýe9õ`}¿úŽˆ[2Ý‚¨ðãÈðÓó´e×ÞÉÈÀV^û ©à´Ç“µ™Ø'~{ä›à¸¯ì’Šm^7õ¼¸<ª>o0V”¥„âS¶·Î…-E€Óó—'³Ò?á¹ÅMl„\ÂáÑ ’Övy¥^±VÔ‚UB¨¥Ç®Ð­ÀÐØ ÍEç÷äjPm±ãDª ™¨%Rý'ÖÌŽYn¦ñ±è äÈ-¨xWg¦¾¯zï!°TMlpÔ=»oþU‹ Êf CýНõÃñ¤ ¾¦1Å>ö¥œšf¨Ç£‹ßÆÕXz ~/mM ŒJÿñ: ì¶/zÐ\†)xÉ^"å»2ö>(‹ú¡º»‹¿¥zx“*»òÂÇSJäºA¸0H@iyLTëàjOH1–‰±î3ÞbDŸó„sÎ[rb6ŸªÇºÆœ{È3T–ö¦üì'ÞY‚1p†7þ*ªF¸`÷L¾|Ò²ÿm;Qk 0‘•ËûÕ s?hfꇾäÔ,ž^Yº“ûð³VŒhNÈ øàý”lE‘;,µÐˆNÜK¯ m'[xÑx‹rý‡¤E­);z¹çþðªÚÿÄ>°u Ô=©—]&ÇS#Óã$EJÓ Žp,Ï¥SxówSø4bf§Â­Ž¸v45h¢f©ƒˆDˆç©‘ lçÒá-¢7:„ˆo"&ÏǘïÎþÉjb@!ó³@ƒ/ýGíLï¯Æ*Fp(ѦF¡ì&š ]9?#°ŒYÎÊ&ÁŒæ¬ï8w¡§¬,h2æúþ„×xÊ'Àò¹ÈÇB*Ž,â6½è°œJó%6}¢(ÖÂkbv߲Ȝñô¿ŸG:WõžŒÀÑ—’®17|yå£Ë%þõ=:~~ú|–Oü}%)ç ·Q¢\^‰£Ê^¶¨ƒU‰5¬ÎÒCÔƒdWŠ·.ótšÕ˜:qü’ÍðFMj±Ûsk‡¨Å¢å ¶$v1d„?6åî—´tØgÁe6ˆ½vŸö(Á¸“Ýå?zBv4'¼_÷×F>mMòO< #€[Û‹T°Fn(º¥ªzFh^Ë9õy%OX¡úe~ yýÂ:J4ì­o­€“û%‹ï)ð? TƒaQ…—ÄK[?6Ó°Pë?µ'ND:$ ØééáŽ\ЈÇÄ<õ,ÑÊa«‡e=©ÇvþaÞËó»+àUŽØ‘³e ½¹]~x;û–N,”Q:>#¢‘R­±ím‡zUÒ ë„÷D9˜jfçjÔm5áÒÑ1†¡D°Fï®?D…‰Æ þ ïhÖªÒ‰üh’)§œqœ·+ƒß³Û¿X­!áóÃ) ˜n"åÎX˜‡®{­Xôhu^ß?ƒâÚÀOïœJ‹!©ðÅü¾Ÿ°g(3BÍ]$@¶÷+Yj½ÌËvLȸïAc]Põr2gfš™—°` 5?9·k(O„Ÿ÷š¡”aXòâš¾+nï¦#÷ o4ÅÇÙD¬n nŠ4q‡Ð-ÿcSN„X2Žn*Œøª¢…z¶CŠã*e]]Nº9ÐÊ—ÒÜšx« ®£%_ð?:?o,Á]zˆÌöK”ćˆL§.*6³ë‹íÜç*ZôA`#XNüÅÑò2ü˜¸NÂ>³âGË…®êf+Æ9¡`d矷ü¤y*®‚.ÉžKe£Ã $Gˆúø¢^žÝÌ/ö{sÞB_C¤oó¤§ôÛPŽ/@Ñä¹ååÑóñ7øÍ¦°Þ˜J³pµ6ãQᥤž™pÜu»>­Ž=ÒoÊäVuäéÈ«íÍѣꆛ™"¿g«|5RËA2éúí|Ãn»CѲ-Dš$äb÷;½#²ì=WmÝ"o‡†ŸÇõŠT²tP©n‚¿Çf²å· 7é+¥¹ÁÊ;Å\:‹äÔ†Á¬HŠq§:#p5CÆúº ›jågýìà-4GBÐ3sÒö$YfÔaÔUŸ§%^é¬@œzÙøTtÊm84oëyE– Ú禮^hffJiØs%¶ç¬£o§dÏÝ÷¸Ú­ÔµI/çA4RvÏ·‘•¸#¿J稧!íeV— ‚³½íáÕ.IIwàõ¹GrÕãm øW̧ýÉ\wj=.<±EÒc½)’‹ ·t¤r^¥ä ÇaïI%ôí1·†| ƒáXÈ‹ñdBß±u¢?¡>ù mªX¸RÂKטܖ4ޱ…!CP»rúÙVß83-wø¾Zÿ\àž¶Ú³‡®ø°ý¶ò Âï½ÈÊ»uNÜîA$®‡ŒÞM¿dl©fÈ»C€1ÃgpÀ3S¡ëð³tI5ð3Zè2Ûðs”¨¥1¦L]X]-ÿ[GG8³ˆñùÕ½~ɼ¶SÒæQr‹ÿsûÁ¢Äòž|Ü£pCòäþÛšÇeex^ÿI[­¨U8L–¯÷¡²{¨>‰’%œ_Â19h ¥“Ç8_*h9.µûââBÅõHïSôPÁ «ð…)(=ÌcvšaÑUF~žtü»ÏUÒ£ð—éõ9W£Û_¾W¦¸ Gð4½hn…oØ®”‚I—+¤Tò“¬¶Ù$†ç­™Êr-ÿ–œï³ئ| x—§s7 Â[V½)µˆ„°Å¯yzï9˜Ož+éçã Ùõ»Ñ⼎%këœõP9Z¼ý|úê=ZûÄ”jçè }ÙuÔÐ¥¦Íª¯‹1Z¼© ¿$_ÍBi…XW㌸dâå÷ðÒ9-Pm£`½§ÕQƒ36X¾Ky L$'«{†÷5Uu¡ÿJvåÞäÃ¥ {!ô\Tc6ˆ’:ñJ›IÖåÖ¼\g0¶HaŠU¥/’ñÛ¨¬~À>[.Ô>:ÛG›ÙÙâ<Ç9Û¾r Vÿœ)pŸœg\Ë&‚­ïzÖx«|™"¼ø¼yBR*’Fvq»Oww•§‘dô'½ÍŒªÙ"9ZGyÈÉ[·>íÀ?§©Ÿ¯Jÿev/ùºÍ¯)§äés11«¬hˆW¯ªöw_!°lNœ0¤«Sa-7cåyŸèÓÓ5jAž­gŸÉ‡|÷ŽƒF¼'·Ö°ÂT98Ë™ ñ¨ÊðG™¶œîÀÜÃÕÆòÉÜO2££?Ê$bÑmHÆÄž„æÎŽœŒ‚V]²š]î‹,Ì•ËѾÁÐ…'¶,(Ä'¬°d ôìÿL2ž¡Ò¥±Ùd¶ËgåJÊÚvNkq˜ÎkÔ¨›äá;”x p“ÑÒ‘>ÜØg›žñ™ÐÐ2io!kÛÏeÎc œBÑfÍ鵃îtÂC¸PÅrº>}}¾]âä$u›Ñ,exxãWÁŒ˜ºnþ*ˆº†ÛŒ±©›o;*¬j…<–áÅÓ\nò˜ ÒÕXÚµiå¨‹Þ t>­à0›·Ý­4àZÎ"_Åu«^tg¯Ö~«;Ý]Y©.ÒŠê¸÷Ê™$¹q±©Êb•°³Ô—²æÍñ•ån‘||%ÏÏ-îŒÎ½Ð¸œW«úcckVŒÈQqïÑ Þá¯e0Š–ÝéÃYáÿ8•Òh.¬2ø:0·«Ü^¥Á§ µ0… ƒ&MéîQ«âW)˪Tb:ˆÏ‡\Ã;?í¨³×‡¢UTÝ2Á=øØmƒFLÁ˧]yD2ä°\ÿÕC©w(ƒ—ÅŸ 7ÛlDÆ×ÜÍÛ³ÓÞ!V!M/{¾J?õLâØ5i‚Îj“r¦¬Úy{`QNn÷òì¤džÙû!ŠÈ…(³Þi±#) ©[…_ììÝ©i©¹¬™¡b„ÿ‡ND &åÔâN-,ÕmŒ³+ÙÒ•ès·'¦T†áÖbVÇIŒŠÐ´asB¸íÄ?ÙÊÂw•ãjL¸S%¦ÚÛÔÛ*9µ± ¶¨Î!X:ŸÖ§´·fÜ­³ù‹ÿסÓî“æ†4<Üþ·äιÄGJñµ™ž²M¥„-^aôœ‡Â^¦­9à•?¿*Q™rŸ1Ô’—“Øùa§]¨ÕÝš®òßV°™¶vaŸ#Rœ¬¬+=¶B§º8¯†š[7Q¼4Üq«}D@‡’Ä E`‘$<í:Û÷µÏ¥› ³ÞßG<”ofÕˉ‘£­º™ßUî¦@˜cNÍH[Å)ýSé³ëšè0{2³Ï¬þÜoœ²¬ ]׳\Xò5¢/ŠÏ‘Íb FÜJ{P¼`æí&;}^Yòß‹‹íFK4(­þ<(˜3(P«›vÛ”˜?býQÆÈþµE;Ò,aˆkPt‰sˆ€ƒ >eÉ>3d™ˆlÔÄI® 4IæžèØ$é OzµíËæáY©DO²Û1m'֢ݼ֑R\âÔ”›½ÐUýÀ‡Q-´ckÿ7Ú³wð* š ¶…žVÛ85Fiˆ/Èqzi›¢_§ ÖŽ3Œì(ã[ƒÅb—å€S\m9n$ħ<Žyilùya\0IÀãÏËP/yýÌŸPßG¯÷(ÅH€s¿Š ºÜ¨©”ƒê% °qù h¼À¼T åt-æfL™‰“³øXW1m>W¼ì^O/ùÙk¥ÇI»´¥»_lý¦üŸ(ê_B\­—žȯ^qÁ´8GÚOþÙ’ÿ uêqœ-¥ùÝÄãBuC‚5ƒÌR‡ —ORW§ž¤8»Dä!ê:™G÷î*„®óY¾f)7¾Ùª¦‡J~.ÿl’nþ«ª4$1V~É(!Î#RD: ·æn¬2f+À ’;Ç‘ÀðVʽà,5øé   iáëÈXÁâd‹¨k p&¦ös2Ô÷ô'¶PZÇ]j¶|6sMM~Ÿ"¾6 ÙÆ7]ìY8X.ò“©ÒÝä:ÈÇ嫊âo4J){#µñØ§Î­Í ã–Gðì6˜¥¶–å¤èTqp;C&Ü»•øºASÁö‰µcβðo†’t³†l—2ä°çç¾B€°›ŠÄtƒf:t%¡o‹¦qÕ{®@²…ÞýÀc´†t õ|#†rÂ5T¿=à2(·õ(éži%)‡…ÈÚž#€Ê»fˆü¾:¼Í75„-9Ìò&# Å} *$– *Ô ãñ С7YÍ |ê&ƃb$ '­.‡Á¼0“Í (ÅPúï•| õË;HFË Õ÷ßZ'Û™›mj‹1$qã(êê›Àæ;Èß^¢6†•7LZÔ¤§æéËac¸¼u½ Zpd~Æ vØ$Þ7½÷pP“ïdWÊcLæ˜/nRóüáé¯13Ýàb[±!ºÐ:¦Hæ¡™ò]oËÐ$œ€€&”Lli¯a x€p¯ƒE¿ü6àbºyµÍôÐ{š±Íò9dr–¬æmÞ ½gÖcÓ2{0„š¾Ó+\9ÑŒ¢ÂÈ3ºØâI³dâàáåP„ޤFB9hãþÖ«ä û6…ÓÀÒÛ˜â’þ¸Äs¤†-–7‡%suO£ €{²—ñYD~uΠ6+|醳 \m¿Å0€~ÚÉÙ»‰?¼ñG0 ðrÛŒø»,NóY4æ"BèÚ¬ÿ²dÔút,­ FOSä±96ª'‘&¬¬FœƒŽ2ù9½à7-Þƒ&f¼}ÚW‡­ Pω7,1,¤s˜ax ó›Ò•ˆ­½T[l1œ¾ûÜ| ¿CKgÓ½•y#Ý^ÁÞÀ›„GÖIKÀ6²¢ž˜ä÷Df<Õn˜_‡®š>-¡‡d„Ÿ¾-à`T(!Àû†z›ž˜Y2£ÌîW¯³õïO–·Ãä÷RR|¨F#ß )R@ÛŒ¨MÒã–ü~†BBŽpó–€9$ï~Ûß‘v·éÛåV˜f”.Ιýœšº¤Ÿ6Ž!˺õI†ë6Uƒ^ý2C î™’gp!#k)øÅ{äßvhƒ#‹“‰gøÇí¿É— •|ŹïâšY•¸(ÈåL;Úƒ§@(³+tNðÞ·¢Ýf´ô£ÞC]ÅiE}J|f±uWƒï› m-!;œàŠL앹ÔàùŒ‰Döu,2F ˜2µÎzk§}M¤ÃšÖcfà˜•DäË8Ý3aŒÏRR§¾ØòšßÒÜ©Ìû3«³)UxK/¢/ÇqaRŽ–r@í˜IU±Z§Îb/£„”ÍŒBN#apÌý!Ò¾PvSh{ƒñK}Åœ F¦ÿ‘‚½D«˜Žè$ð47Ž·GJ,EÀŽP¸¸*†¤&¡qQPñŒhÀDìö:@n[J:ß—+þ@füØé‚‚!Œ!_üäCÂÅ I AÄÂEs2ee¡sîÅŠþá[¸0RMzGljB?b˜DKÀÚõÃÌ‚ü´UC¼#dª%AðRg툾"öÞ-7Ûº0âWÄø˜a´«6‹!fx‡~ê&!5,â©úà&mÃý Àì­ÂÍËþú)#ë’)Gû¨<šìö&7zœ[Áx- „ì¿(èƒ'¦Wò~ô›Yd•ê* Ókü½ŠÚS/Ôðû)l Á‘ »=E·ûö j£-º×E>å¨ð¥Ò]j/À50 ƒá¿iÙ†`K+G Œå7è(CÀ’ ´~^OÍ»Zf;tš ’Š…“^×¶6{ãÒ@ö”7EçóM=Œ‚_ÙÆÍóAwí¼K0zuy} ¹9ïÄŠÕÿž3*pò]ûƒw# ±ü·í¢äÊkŠFÑ~8$Ùi¤êøg ¹ ¾¥û¸4 Rë¥-¼àÖ6ùÊœ‹m6p‰[ª^/Ç–%.‘QÞ^’Ð-mTÉÍZDvm> ˜ºå¼v¿DPânˆèÔŸ3lÈsÇ’nB"b¡ÄNxÜ@Œ¯ Õa¿™™ȵ[0Ìÿ¢®5³È©O\˜“x¤Î§“ÝÔU³«§—µßnÑ6üî„Õ$¥ŠÈ©ØÞ[2°Õò»\Ä!÷—´S]ï´Á½õ—סóeç¥2—ø¾/ z1ì-Àá"ßãËõ]FÆž–_žð°Wd!òËhÈ3«æž&A©*„›ñkÙïèg %׫n°Hwžè-gÔ !2Ñ8Q´^$—×ÕUÈÝÖÄÞ*¯Ýgi¢+›9ÎTSÑ Té, ï™ÍVÁ3ºªÃz¥=ln'Llqt}ý ŸŸTQ3 "ˆ»¾þNFüdï©A¡ú¤´Ó«hz¸ù4‘Ò³G0«tïeºc½Ë‚S;ro²«»õéB~b± yøx·Î­Ï¹ž`¥¾¿h7¿ ó¡ôF7ôžLÑ”½îAå{7Å„µ Ñ:6Z©¾ë@Ù´¾pXv ²ö«0ŸzH\L0±¶ 37£Jñ%°”m­ßŠj¦d>{Zæ“§¦¬/þÉ€)j`)6L™ò$‚%ÚÃu'qé-U¤6a¡:Ù½–åä™/=ÃO4pH˜†«Ñ}ù`À ¯|˜Çœq«Åwdvy5^DðwL«ìŠE¸Ý`kêÌD¢6Q+ÂÍO“E\¦jpš˜¯=ÎW¬*v_¶ú»nßo¿‰Ñ ©þ„Ç¢µÄfvf£[³O >gÙ:B¤+£Ã£šy‹j£0¶]³ÅŠ›µy_5&´ÀðïHUñh}M4âñF_lŒ¸n*…íApÑ—ÅS‹¬'?¯;)!þʯvʯ/Â0©øu¢Ö@¾F,»UCÎL‡ü–‹ùŒ‰Q ç;´sY$7!w’p+Ä×ÿ@Ð@t¤ÿ&üT‰1—4åüLò,áä¦(Ÿ¬ÑŒmF‚«†9Í|4„´b¼c[)HÕÆ©ÂR/ÚVØÚåÖht/þyïÊ«tŒ˜]SúÓÍÊ _Zf‰NjˆßÔ‡çdŸÀóMilÖh+ªã¹z‘nëÑZ´ ¿Ó™ØS²Ï+‹¬‡…Æ"ôòF~ÐÔç1dgL³Uºfþ@M‹ÜŸ2¼åEƒ@"¼WsIú!yÑïçëq¹¨R$«ª4¶Ù|droÎá¡mÑœV§ÿßy#Ø7u¼¼ê‰÷RTˆH:±—÷n>Xµ-Íæ(®’ÿÐYF}À«“ôY÷9-o„`£Ê)]·”F»S™ÝxóL‹ÓwpŸB¨Í›mJ$¼^)oîß;ä"¯E; J]²W ëpAr¡=(âK²J±&âœÙ…Ý‚GÊü‘hï<„ænÞ@wy™8{†à^]ó@uâf))•À÷Ÿ›î¡tiGö‚ƒKR!ïšAB„àµ]jг1HaŒàhu*DYiΓbb”*SÕò'1æV±ï'LY® Z.wpÛhá)Ù@á×± øC»ûÙb¦¿7^iÈÀ „Ƨú-ÀïgH”jé Ϙup7 Ø»4;úUÜó³œ|‚ãºW\g Qù³n¦LdG4Œä¶ðn¥OÍÄÂïÔA…³µ‘Ï0^Þ#<‡žgÑÎݦ”ƒÅ›8äÞà:Ú³ó_̈|o¿sa°˜°×cOÚâÜöêä‹б:¹t`ôÁ ý9n°’ ?½¥Mÿól޽ZÚ°oÅÛK"…Ëÿì½§@ãÎ ç‹"™)GE¾Äû€ÔúpܺÆŽ Io[§÷s;[Oø§^¸©S(þ-vßž{ÑLTÌÒ6ä•tlœ.aé7¬€ŽÚáoÈ™’õÉ8NýÏÑÛuýëbåØ}} GŒ‹æž¼~Úƒ@ŒŒÌ»÷•õ 5Ä«QæocÒž+àaÔ“SZÛ(¬dâ^¨"BgÜÇÓ" Fd«pܨ‹F-4 ˜J«@®û‰ä Žïo½ƒô;^ˆ“Í8dû0å4_…°÷ûL¾NØ»yq:9Dœ‰VüAD3¸@²&ë¾*ÔS~Z‰% ©³êeËgï¬ež­zÔ=3²PU$kËõ'.¼š^È‹y%š]ƒ!17³_% MØ"p[\Îg|»/ñ$il©ñÁ¤ Ùh2úKð}"¿'ŽãÌ~’Ît érmá¾gVñ·ËD±é-¿wдã*Ýf«ªÃ sí—¹“Å'g½Fç›(žJðºÅMà˜hfæ’ž»–ɹøáF&»ÎŽÉ#×ÃyVzÏ;š˜^"øˆP¡¬íOv¡0“öÒúûŠø—ßN”™“œ™ƒK÷OŸ(â¹¹©ž¼½ZÊ…Öwó"#+VËҭʘ•a¯o™rÿĈ¸¶úÜnsg%9E›2ÈÏÅÇѽ0h¦T]w[TËÔ“w…tm àŒn/K€kCƒÕ ˜”å§ósƒåZ¾Çù’N䫹ì!u¶‰ŸŠË_8lŠßpèwPÞO,6à'@Jàæ¢\å*‚Å\Úêú™3O]¹>å°'±.ùã’†l¦‚óÝ’i?[ÀY°J¯è¶Kת†¾á<¢BÕóF}­¾Wäòµ·¨—ßò[L…˜wµÏ‡lTå†ÿ<°TélŽ×iÖ";u@¨ìø>ÿ.>ùùåŽ$#Öc½~LxÓø–À;ŸVqÕÎB`ƹ•~T¼ ‡¨óÓ+¢Ù;~P˜Ü2ÙÈ,dTO½ÄGUF8(†ÑG¹[ûzŒûìçÀ—¤øÐ¥º/Árò,iðGnû⤤›§?#s7ªi (ô0g{¡Fáм+[7å°ßRÔ&HWøƒn1gÓ·—½5é¾°ubót¤l4µÌ‚Å3™éÖ K©LÈì©@kë»@8½•×’@š[ù0y#Bwa›P]›”eªb Ï k)a¨Qμ-SæÉõ…›±;‰)p¾ƒ¿jPX¾Ò§5õ¶žXmÇóh Yˆ3ñÍkþðÕ~ËaôynÐ0Ì]‰”Ïå†t®FSRíïõßIŠ:)¢E”iô±?Á>hA¼©éd¨†‡'-T™îž³O?¶K” Ãu}§Òö= æKa(¢èsÁ«„ìBÛ–ôø§§—Ó"™Ýü)o_:MIˆDh_ʙΞ»¼‹$ÊikÃÛ˜NˆÒꢽÀu~‹NM±ÖUE÷~¢Ð-_”¢ÚÂ5ì^ä‘¢šOµ®Ù­”¡µÏ·¹£Ç±ÜÔÙÖ]9ú:Ö:¾ÛsxÇuJ-;>#ޝ!ëœWåVâ'hµ·ZêÁoÄÕÞˆ±·Ž¾V“Š}æÃcvË z…¿i[ͬˆõÞa$8n{‘œ­@sAÅd¢´x?’$ìè˜q_Vd'Ä­šµåB ¡`E­3z{ãÃp L¸" vx AØûºª]ÒA·ï;¼&„mâ ƒ<†ÉÄÂøÐÛ£²•›”!—(\~û?…¶eñ=Ä ¼D»M;cdu@o… Oj…¶ç‡,Ÿ•ÎÙ_×¼¤²Éñ½»´F€¹IŒ†ßÍîßâÈPjR¤ºÛ€Í˜¸ÀœÑ„Ë÷D¤¹ß¼a›õ¿æ ÆXÑXvÊ8÷Íì7Èžç"Ž~âzT*5Ö‡ ‰¡ ’UË·Å2;D† îlE>Ö1ÎôÌIýÍyªnƒG6Ž™åI›¯WÇ"¡CñJ{w /»ŠÜ=]ïFÅi ìùôIEøà¢­8ñî~ÒÕäzý9¤”ò Ÿ³2)BUCᢠOݽaå®ÍÇü›"()—^|Ž3q9Åø5,’šê9ò¢æˆÙ4„¿æã ïot¦ë"ƒWj¡™-bWV lÝý”ŽûO£5_5Œ½²…àË?gç×Ï`lëW¶ÙÔ›f†´4e$†&­#Ò•e0s„XsRQà-ÈäÉ0áŽ*®„´¨ñ•>¥}§> C¥^ŽÏ«Þ>–SD.@àú$Kwg,hQÍÍ„¦|. [t X7õû¹²a[Õ/&û¢7Wçb_Ùxï”;èGö¼±]T—9L±_0«’/m!eŽU„…ˆÑå€Y ÓµývˆÈÍóúe†ÑÖÔ¡ï€w¶ lºâ‡4‡¡8ÄAÈü­¬›%–f(‘Ãjy½oJ˜>H¯QEaµ7ó Œ>><Öä—A.9©ãù­gÒh (´ìÃiÖÒ‘°“Ű/&ŸGo¾r˜Ôë ¯«Ì#ˆ&Ά«ˆ¶]&òþPiWdlvá€îåsx^Æ8zvv«—$¶àS|Þ8ر|ÅÐ]2ZñQŽ´Ð‡›B`¾žÌ9~N¢ã¤!œÓ ˜Dúq‹óx éLÅá–»áb*>ãȇÑï! #ÑÔDZšoæ5«ˆIÖ¬Ú¯žÖ±B˜ß9IòGþ´bcw£9[ÚìžrÉ]çÀ“œ4h#@OîËSg;¢•Eµ_ xµEÃÅäçÌæÊ{ÕøüІówÌÌ‹TÇa¯èŽè_½e2ªyI‚‡6%n„KÃŽ½«Jqm{ÄLR*"ø!ˆ¾Sp®pßzr+54F/ ¾Ÿr‰ÞÞS‚°±9‚û´ÇDö³KÇ(ÜÐLC«ºWL>õºKg!™Ë¿ÒÒúNAÉYØGXµ–¬ síZ2J°¯—ÒÃ_ÞY¶pg!Í:'• nå]q~„0+ Û¯ðóH4\ÿ~T×ç]]n÷Câ-Ð`ͰX 0ÄêýTÌ&È`öJšêz.=¨ô”ÆÀ mÜ29Õ>¨yIÂK,y>šc§O˜É¢­ìÁWTú.“ÒoôGëW½¢ëv8Äcí|yi-©ß ÝyãF`ØOñqè•ÃØC¤õi‰„XáFÈ_pBä›ÕžôÚ¢2¹Î®ÃDzãaê3ì×oÍʵIŠšâï6p–¸ø78~QY”ß0yWÏ7ÒЉp$\O¹""LØçZ&|;Hš¿¨Œ‡ ×I4ô™ÁZDöaQQÎã’ö ”‘;Òòý`s2K"X±Ÿú&‘Ði:€œ\v‘œ `7²« X-_ú¬]ÛBα8‰¯“j £ÂÂòn¿ŒœÁÃ.”„Û)a7Œ·Ÿõ0ªœ'+Á‰Àí|ÃF¾¸Î>µ"™àùT=!€hœnã1þ¸â=HGÛpÏ'Þ9O»ˆvÔ¶©‘@–v Ë`5s‘{¶5CyÒùSó¢Ã@ûvsf…wl©Ç˜ùJXVÄ(M'ù’¨Å×u#¿\Œseª£Ém¼³MïnÊ’Kzh1=;°7f >¼ÈB'ê_¦,"€ìÀpr7‰d ulZ•¦‹ ‚cÚy„üN’£j ¡Ï¢a£Fõš/ͬ¬YuðÓ= æÏ/Wìä$Pkà êjþ”dçRõ:Ÿ/¯[nX9k¶ö¨0LYÉöÛK†9£$F¥¨6]‚UÔ*­»·¦èèJ:ÌAUMÜéS½SuA{5ráêœãxÜ{Ç;)44²™W#u _8ÕxÑ:ú;ßÏg¡ /ŠìÇF©‘õM~<Ë”°¾lô/×³îøŠy\”yZx/R*TðM1†ìf™‡ù„Í%³¯v »^Að·ðXFxÒ¾ƒv-qЂû6ë=_ãP8¦²ä¢ZñD½ÉÐ:Y›°ºÝ)æQ;ß•é°"S ѵîÃ’gÍoU-A¾€#ÜŠé/†dòwÜ·ïöM-àA­¬ötèŽC›HÛK6²Bð~ÜÜ6Þå¸8¥ïÄ©¤èõ×´*+q»¨/Kh¿òiìw"¡ ;²jxwQ§â’¬Ï]U™5¿™ÝLº‡qõªÊ–ßË"ö$ûѯÌFVtœ_u’ðÒ9¿r/RJS ó@HÅæÏ=yÈm;ܨ+ êT¿}^“UåJÎYÈ×-_‘Ûë”ÕO¥Ç“ì¼—-'TA±A“¦C½†¤>ô`Àîn.«èÄWè){3oIÆù‰;÷-¼ã’ã´øyØ(Í«ÚQÀÄ 4ylÄq©¼9ÁÇé¥iŽ¢Ù=^\ëŒùDƒsŸÌ4™¼}²^eO–K9Øàr/’˜‰5lŽñp'O¹ÜŒS2›Yr,ÇÆ…÷„Á×,<@ŽtSF¼—µ"«„«.U6ÈÏѪéì X…êYÇ; "«L×´Q†'ÇÌÙW´ÊÙËNñ_žp¦9@Ǧ‘ml|%ÖY„ð"^SÙQFw’Œm>³†ÍÎç„ZÕß ·‰éCÌø¨Úø¯”¡ªº‚,FÃëë)Tp¢B Ù$™TŸ–ð°l²Èè^(3Hc–ÖOj³(•õ†*-üÎi;óy´v* øËÿUYŒ–ØazKD¶ÉïcR£!Ó°ÊêŸÂ߀iB¤ Ï`WÑnR¢"8ñ«f·k£1¬äÔt‡}HØŸÇ*µÚ&¨óßvé1Ǽœ[vdÆg4Ä\Þ¢»mÈZŸ6¡»–vKvʄșkB«IÓÂw½“M¿„©òkWˆ«uAܽ ŠKÞâvÜé²ùå$>>Ì"âàí駆©ñZyä Ó[ðÏ£…ÛØ |þ­cÚ¾ò7Ã7ä >ðǤ²·ÚOÛs×ñKθbBqH­ÖÊ"Q{ª¬¤pý´íØ7ƒ€Ö[ÍðJ» -qŒQîg-f~‚/$ÛL°ìU)Tvz:F©,Y‘AÇ®èÁ%¿ÅžÊû™¾eº*%öè.bç$NfZ§§dxI}ÖvMº$›jüáþ¬ ìq endstream endobj 2015 0 obj << /Length1 1612 /Length2 18680 /Length3 0 /Length 19503 /Filter /FlateDecode >> stream xÚ¬ºctfíÖ&VX±ùĶmÛvžØ¶mÛ¶mÛ•Š*vÅv%§Þ½»ûë±OŸ?}¾kŒuO\×¼çX?‘¢ ©½1PÜÞÎ…Ž‰ž‘ oikìê,go'K§ 4wü²Á’‘‰8\,ííD\€Ü  )@h`f0qqqÁ’Dì<,Í-\”jÊT44´ÿ%ùÇ`ìù?5=-Ííä_Ü€6ö¶@;—¿ÿ׎*@ ÀÅ0³´Dµ¤ä%”òj  ÐÉÈ èjlciµ4Ú9©föN›&öv¦–ÿ”æLÿKÈ`pvšXþuz˜þQÑ€N¶–ÎÎß–Îs'#;—¿=p±Xڙظšþ“À_¹™ý¿rp²ÿkaûW÷LÑÞÙÅÙÄÉÒÁð7ª¢¨ø¿ót±0rù'¶³å_5ÀÞ쯥©½‰ë?%ýK÷æ¯ÖÅÈÒÎàôpù'–1`jéì`cäù7ö_0'Ë¥áêligþ_М€æFN¦6@gç¿0±ÿéÎÕ øßª7rp°ñü—·ý¿¬þW–.Î@3zX&æ¿1M\þÆ6·´ƒeøgP¤ìÌìLŒÿ–›º:üOÐé_ ¢ügf¨þ&adjogã 0šÁ2ÈÛ»ü  ü¿c™þ¿äÿŠÿ[þo¡÷ÿ¹ÿÉÑÿv‰ÿÿÞçÿ„wµ±‘7²ý;ÿ^0€¿Æ øgÇØ9ý¿Ìl-m<ÿÿi¨üw’ÿ8R.F›!dgþ—FzÆ -Å-=€¦Š–.&3#›¿ú—\ÍÎèdciüË迚  cbdüª…¥‰µÝ?­gû· hgúŸÉÿ%é_©3H(KÉI‹ÐüçNý—•â_î]T=þ&ö?J‘³7ý_‡0„…í=Þto 3 €ýo@N&&ßÿC´Á0ý×YÎÈÅÉÒ ó·dF¦þ?žÿ:éýŒ˜‰½é?³¢âbdgúw¼þ—൉«“Ó_Vÿuãÿü?Ïÿt Ðh»¾boÂb•‘éÒ€™?6#ª34À>êPÞ¬ZRPgßËUmøQJß2ÇýÙéùóÌáÏ¡4õÑĆ EðªÏ—„j°y‹¼›ƒæ(ˆA¿ü{æ¹FŒ÷õ²ì„6;£úÑÞŒ’²~ÙÇ7ü¹n'èëgª·¢4Ò'?“ô¦xô¤”†â³sòäÓç'Š‘Éñ±Ñþ[ÈÁC\š¼x2#L¿Ô3¢OC§‡f“OÈ77÷=¥`¤púó”Žß Âk­Q¡Vo¡±ˆ Ž¢6+,²ÌE%ÿ¼—J•| æÉÒÂÂñVª¹¡ÆÛY€Áõ#L Õn{³šÞŽ1$mt»9ûæQ¿GÅ¡G4ë]«ÈÀJû~0ɈàðÑm±¤ ÷…kW¬MžÿÀh=´»±xVLÉ}%³Ðݽ¬Ó/£Ð gÓSÅŒDcëŽO^Õ2C­L Þ&ì#-L˜ÐLJÍ1€CÎD?t[Å¡ÕEcYØÉÌHµÎHûêén÷l37 N@“¡b÷["=Ë3PšægÍ]Ħو¶ÚÙÇ, ô9e¬¼‘Ð&EQ©Q@»ØÈºí(ÜŒ7ù÷¦Œ)š§B |ÔÛò¦h“™\J̆r^. õ_%o  ã­_O3¯áÄáë•M¨Ц3]òŸ÷ð¾UžãO£Ïì~¡•T·:%Zàúå[QCƒ(™²~Ìpí¨>1 ø`€×aÚ}­Hƒ@ú9cîWî ‡KiÓzÜ\ƒÌM % %Ÿ î¯P2â·k¢4-ó0˜fU˯$¤çpä×°&?\¦¶ÔpPÕuþ1âÔj¬Š6²ÿݤӜ*`-8NbÇsBTP¯­”µ\¯±êËWÊõ,J#jØAt5µ@}|}of“ ‡>”ZÎ o“7YñÈM£Ùm~|ÞÓí°ó5…§r¸Jì·Z ½u sM·¾Á PÒbû.h‘u¡E…Ik¨±-5-rëäôh‰ë3'*;¼!”ûQ•î¨#Ï;E´V4­¾-­¡~rËKK½q ëUÇ "Ü,‘´–=£UT?¨dt¾K^1ØC^Yœƒô„‚ïx!¤pÇ*Á³~ÿÖ¼Ón5­-ȘéáUâï„Í»_Ý ä¯…JNæÇq´¥§dêR`× q´{iS€‰¥HÊ®2æ 5‘…§ÒIqÆcVä²Ú&SQþö…§á>lu£)nÜ®3ïi¡ŸƒñW!*yû˜¡ÈôLc;k¿/:,pIãáV½®Yò[Ôî}ž±èFÙ"]áŽz"}ÃB¾°BP[zvODéŠ.ù¼õ%°VÌ$ËsË©+ÄÑ,ï½ß%€S‹e¯¼Ê˜½dîCðý½,æ¼:¥q4`è+¼nýØ&‰º JZŽ“àò¿NF‹ìé~„³‹ùÏr‚p•Yɾ¬6îðÎN~P÷Pà± H°ÃùÓ^iÖæ\ã2ÿÚï³éê#)<“ú>CP>çxZH&0Ë[;š5Y6ºtÆMÌßóhæ ÿظ­. Ö&®bÐzùf÷™lé),ü;gë,¶´åèÈ*\WŠÜNr¦ÎÈP…DGÆ´N¥Ô9 sZ [j* )RcÑÆpxãêÄE%h ÊÎ+Ä4Óaj<$\_brð|ÃþÄoL,Éltrí"¿ÉåÀXf(‚µ! EîeŒ8;ø½7žiã ãGܰmÙÄ=p~ºÞG‡0Jvùþ4™ ¨™¿h »!bÝP$EÉí lèNøw½è߬2…Æ-¡!ŒJB£®RÜŸO9Õ;gÿº.æÅò‘ÿ »ÑËîÙªVyÉ‹…Ïïn‡ÚÍå)Ûùp¹êeèê¿«ˆË_üØ@›ÊÊ­ß"åÄ›ê"ôYÍ1“ì0úcÿ¦`¯›hø)>ú 7Ę7x‹Þ$Üj0Ë3OS"ñœØ§mý+uc|Hm”qÙ¹«|ƒ¶øCé6K{ÄÛ{ÉÉŽF~UC6lc){³À\æ"¦,NLÖ0éoÅR¿‹ÞËå¶4AáSê.ð·[…vz‘ ä¦-ûoà%u—[¶èßúìè£l¹ƒŸóÙî~*ï|¹ÊÔjíˆiÒsWøY/k5+µÃ>ƒ†Ecĉ­‚ õé*¼$Pfzo›Sd#ùç_dË0Ð ¢¬!ËÕªT_Í“Îr÷$”—ÀZàZa•1ÜOJKèU‰EÞ jì©÷¥ZI°o/MÍ©¤EŸûasEpÄm¾ÛÌüük¾ñ¾ÙdÜc’Ûx91k² $Jû&ÐÜc˜©2>yÆ÷éWbq†ÇQ[Uhgœ4æî#­§ð ýÏúÝò‚âèБJ©E, Döݶôk½¹=x±ÆMI§xÅêú*å Ê̆܎vñKµ‰ë^Õ§úKœLô½þƒ¶67aŠªîJYQE,ÔÜò=º'N†ú›¥#¢¢¬Î7ˆ ß› "ó ˜½ƒo„ž]ãd+ï […Q_z–øèÎÓpeî•et#ÁïÝ~ Wðá³&„ŽbíH‹¡?ûCwð¾„×·JD`ãíeìm@—@ÔÖÖçñ%ï,vÅK²Çd¦W]è`¾AÝçŠv­è·žÉH¦æãUø¨xÿêŠ †¹hnëÖÌé(6Øz)58Õ?Ê›ÎäÍb{|S6 ƒ³c‚V¿Ðy|ó’YG~_£µVQqšÿâë"ž^ ÊËáÞð—:f·¨/VH[åAï¡/lõˆß}I)@t> xÕ H{·–¨Ú罬B;3tã¶,â¤:ìVÚê/‹„ÛFþ±m®#<aN&u€—L\Iƒ:…NÔk¢Œl{¥7žª OJù@ÓPf"йXm+º¾ù½Ø­†$ ãB3 •¥Ò‡šÊC×ÌóšßÆ„ÔKMbuoÇ•…ɰ1×'Ó°ýàæTœ7p‘Iß)Þ¾ÆÝ­L6âãWÐß $ È+¡ØÎKKá&1öÚ–Ñ·nT”=7O³Ë¶GRØú2>¥Á˜>X­ú’Ë%±»YñÛÁ8‡n_Ì0¾þŒhK[P„®ûê_Är¢V+ÔrƒØg²!Jh¶aLŠj‚±!ïÐs¡tTù˜I*3€ Ήõ¦¥¨N—†Ä{ºÔA,Þç¾o-6È´nÓ½ËÙÓÏX¢,ÇÞ›´8ù¹P®=<ûÒ:RÈ>[–©—òøëª¯¬¯ÕöL™O£ˆÿæOŽCÞFn§§Ò×tb§5“íß fð¨¦/Ï|ë£% i›_H•ò¼¹_ßi:à…óhQ5S›šGû̸áÞç1‘‚z*Ž.o IJ•aؼ¸$?›­;Ø¡– ·ˆ8Ñùnï¸ûèÁmy g#•áOw ØÔ‹ÎŒÙØwU½P |+ N\í‚-þ¡CÄöõZuº,:à±×Ôºÿ2Oĺ¬IŒA‚¿$­Oï$7¦b°ÃÔÚ…Ø'ÓëÙ­üñS­góbže>üCo¸<ϲÀüöé##£Ë–IoS=2if¥Œ@Ÿ%ÿÑšG§¢P,+ÝŠq—¸™´ž¢WX—k'CÏÉ!°o ”'ÀñÁ”È¹Ñ‡Çæ¢žÜU§HYÁ0‡ÛÉú¤cßdú ¦ÎØŒ'é!1KXK߇iƒ'}¨åˆÐ0,VOL h–ücsÕº'#[‡·ü@×Gjå¦ $SIwÄ»|€ØÛü“ËþÓ8ŸgŸkZˆóLèô¥\Q2‘žÏy’æê"ûbIžò¶C÷€P_n Cù±Å[až†°9å¡br&:À¯*kymk £(Ö{»8@‰¶¡Ë¼S‘Ðû±ý•LL¯È‘”Øj %I¢gC³ô1h¼ÖöF Gµ\zä¦c>Bt|˜NÃgýüÒôšÉæ1ˆ»íÄ£t ]—d„ÜœJn].pùÀè÷“L"šˆ¡ØUWþ1\5µ?=›­-’Ë~@³Q*ÍäeïÌQi;kqªjÁ|bF:È8êÍ¿’TUI$µó”Œúu^ê?\Ü%u^½rgÅ­™ýrë>¡ìH%ÿÅÇw)I«ª¶eøžÂºé|‘¯ñ‹i.øä@CD¾Ï~ü!ôè,b‚Jz$n!ëMèGÀæþ, 6„{µR ©Øü˜üû÷®Ź`Îc™oŠêwb̨½eq“ïJõÒÖ~ó(Të]°æÎU8¹©Bö}gyë ·fË RÙBÚkU2kàœ‚¿¼˜›2z³̳“-K»O¦weh¹ µ†Š>[*”“¥ã¥¨ÆÁ“©g5L!ƒb*X0P¤6ȉ‹¼½®)¿PÔk y_Ý‹YQ¯Ñ ›Q3EWû[[Uß|×Ù¼û™z­aë[tf"$"Ц ¾,¢©R¾èŒÚæsòFü‰—eèñ“òä¸KïÚî±E¹rÔû„`e(IŸsúx¦"ÝIúôúZRk€`e¬¢6Óc] Ì\þô„mà,~wjL2ùÃ3j V+Dœrï®v$ŒSç%š|?@º_ô|lI-~fÛäuFÎŒ«C›Ž—ð†mÆ)0’ÁÝòE§^ËßßË©QŒ“¯f:Æå:|+Ìù¢ÄÒ•®GXcQ^Ag€ø•,&‰$<]TØêÝøÎ²l%é¼Tœò¹?çÝÓí¯òÙsU¯‹tá mñEÊ.ï°ç’ÛC;ÐR! &‡Aêâ :Ão.Øqi2iI¡â¸»m‰ÿzÑ[yyÆ!'L¨ß/Ê*.+ñ²#×–(‘wâ‘«Y3[*±ýN·L‘t½AèØ„}‘Êo}‡o2 |Öà]hÊYO†ÏÃÒâ[íä‹ÐrNÖMœ@%x>áj jµc9wò5<©-4ÛÊÉ pGUEZ#³¹sÎÈ™ æC(5‘Ðj¥°D’ŽSÑë £vPMÛÁ÷‰B°âw *<ìIzxÉšY2˜ís×{$¬ÿ¹¯×~õQ³*bÑ[o¶ÛšÍ11=f~IŸ7®>/J‚?tN oÁbg¡©ÝzÓµÚdÁ7®Ucz?×o…/)=r©†M!ñ §*;¾ààï›dá\¬ójßù9‚z¶@‡›åÎ3GC€”K:«cÄw:Á Á†Š'²Þ-w¤ÕÔ3á±…þ.>þà-ÆÀÐoÓý\é¢t¬³XjŠèÑÊxšr߯W‡"öÇÁ¨Õ)Ìø¸ZãoïSÇr§èƒÑ×-‹ÑØß­G1TÞŠlrf»áÀëFJ Ñu×™K—\±.°QfÁ­Ö,y=#F†Q. Tî‰%DåݾÂr¿káGDñ/¹ÕÀb‹Ý¿+Ç$‹ýoÕ· à ‹äÌÇ*ƒÆœ?£|”eBñ&øú ž³q°lnjá«<,zUíˆÁ*¾›‘Y£ öWØâ¶±Ö¸˜²³³ŠÆªÙiýýYbdñ}¥õ«•‘~ëlÑ–¾gµ–Qñ8šA'<…¥„pŠdàEvw ôºZqÈ"5•_Š÷çRºÑн±Wzñ\0ømKûzXI.ʯÁ³ßkЧe•–Û&HsÄ26 /Oج7}ð¤MÑH!ØH-SùYú&ãʶù.îhÑ9°äݲ*†&s·œž†ï!ü8CüCÕF¦jºü <)ÝÑE¾ˆÛsw¡ßlj½ähâa²ZŸUƒ ïIÔí­33^-OxüÏ¡×=ÝPWЬ×Å‚ám[ Kçæ?\hNŽK ‰Tœ²®ê®aú‘æoƒË5õòöB/CcH…„¹¡ÃP[SAî<â;tÛÉ®ð?ÇÒ'JÓÐ×4§h¡(]«‰’”žªW–ky^Ïü¥O}ÒöGåúªdâPjåS&ûJM0åp8[©œö’̂ǭO Ô¥¦aáu¼Ì¥¹”F_86ž…é75üw²ëÃR Õ5ž"Y­9éþqp}Áè‰s…Lm˜ °å÷ͼœÂÙºÄwZ¼ŠÃ7í½¹ÆŸýºü92@)‚p?ô+ÐäA:PÓŸ÷°]”©loy×™-ÛOP°$åtõYÍje‚$r€ м·u­b j‚GÝèzˆG)mÖžßî|¹h ªcЄהîs?”‡Ó|Ö­îÖFøcßb¸™h?ªw SÝ.y”/²0dÙsH|—âGú(EÀíÂi¨A"0`&R|{ˆ¬šµ }£)ž‡•·u>TF)µ ô¡ŽeÂêêÝXÙV¦I(±@À¥o;ufiP×eê ÝZúv{ ¶/JÞ>›-&éÞcÛYy0ß„ÎyëëC“¼8ü*õq<'MË#£ñãDb! =Ö0“>£Ñn¶†a´»é:²@•ÞÖj¨8/(>)³6Ë&0Æ%Ô#–æTÊóÊF*¥È7öc‚å6—´äÐDÚ Ãì!Œ²5bŠYƧ_c!ÕñmÖ=êUM¨¾ty¼{ä¸2½<íäUâ®»Ì#*´­XÇ‚Hq£®dJ½Õ ¦¸Ë5'”ûu‡²ÿ&O–åôÒž‰¢›-»CM Š; ‚Þ}N2:u’}ð©S%´£Œ=zÆg¢DW<ø«–°®^h–ªúC¤mž÷£À0°õC!oðU—ø*iªêïö~ULìÒmºPTIì0 û¡úlÒ5“qÃéúåÏü¼‹>­Z$!9¹jQþ8]Äû‘=áµúÔèÕéy‰î…ÜÔŸhb¸™ö¿²ÈÊ7Ëï tÀX½$:àX/âM3c£S\h ùg¶^¯5±_W™V <Ž(Ï¿QŒ37­·‹Í<Óp¿VïR–»/Nê7¼£¬i©Ð݃l³åÞ²,¾î`»Uõm?µ.!°žæ¡š"8V8{àÉøm ÓŸ¹ÂóÑ¡Ê@Q gLñÍm‰BŽ¿u¼¦Ãè/+Ü}ó7;éû‹>ŽÐ÷}¼ö ™&KZ à¦;el´þêÆ• CchW§º±Kˆû¬¨ãïðG©?OçZw’{SòyxÝà{HZöúp&bêiCæÙãqˆ›4â=–¤FÔÐŽwDó)ßI•Ê`K«¤R?ÍHÁïþNÍüSXbÄ ,y Ry*HcØ«áÕwõ îÎrZöÜ*.À+^ùžžRì.9 á±0XýQ¼ø4:íÏÒï^x7@Ù@X÷Y rý­Øy­ÚY‰ÔXijà‰þ,FÐ^DÂRªúmË“–Ì!ëºÎÔc0/dÀ!MN¿DC9¡Û±²÷—UgÍ ž;Ùµ9.Ûøä¨™¸Ãƒ©ýÅç`®*Z¬HÐ)¢v@ä£ùÞº¸¼0µ‘¸š+Õ3„IðõN˜ÒvRœä9+×ÍdG¬ha‡Xܬ%c…‚øX§{>–::ÎEuì¤;?UÀ>Î+åǵ5L"íâÙ.í‰Õ©Ég³€±3/»ö%HlĽp‘·¬áÕRâð×ÜѶÂ}#¢4l¤?H¾%‰{Œsµß›ÀÅ âm$xÝ»¾ªíå¯L·¡Ð–`mšüºÏœ°ó5MdšábRr*þÎ۩І=wÇŸ°O^nB-‘^ÿìÄ ìR?77Ÿ¢òy_ÊB}¼× $Æ2›JÆ,Z‘Ϲö&¸ÁOëÛtÂÔØæ7»æu'ûÝu'l§GÁX¶ä®¸23, äw~þ”îûƾOúZ¯ß±Ú”$}#^§§kúN[CêOÓЀÐqF”IAÁúØÔ3òIþÇ„»üÅ gÕŒˆßŠ€°¥BýÛ¤”³2¸-´ÓÎdÕ•½MP2º×6¯ÿÌÜ;-\¡üªÞùÉäÍû{¢w˨›íÒD`µ–ĸtb>æI ÿljæTmk!YfjDO8Óý[Z¸@BNÐ’žó† Â<­#¥çÕ7jœ**ñÙtõP‘T/¢­ßÙjQ !aKªL¶il¤}Ðw/G0÷„ g¬NvE! #zÿ*c  üº¦ô¡Œò]w-˜êΧ;(pÑõ2\nˆJÇ×´!&…bh•ðŽÃ™ÅJ–/"‡à[„bÖášÄ2‘j"( ª—1yÌá>6€bœÝŠ,îÌoàúé—:c …®ÛŠÜø.¡ídHÒH8µûÒŸ·vS€æ¾Á<üéš;x,hû‰ÃPm»0ÊKJ 'oÚ€w»[×#æÈÒý‹èP¡ï©ÝÇhÕìÒqÆ!£hø…ó$ôNÊäg™ÃwÖW/ÛÛwn У`Z@ÅþŸ+´¸íXÃ<Áñºå²Ùë ϰ·è¨\šdE('!‰Ãk+6Q5öÜ ±ü›On•ßu?©ôÆ;z4ö¦ýc_sØ¡¥¡Ë‹ãÎ÷¿T`_‹jï@¥Õ¸7Ywð"–íÉ¿ HfÙtì6lÜÐ|‡.ÿåõ«¼ Ly ýPKquù Úì†þ I‚ã§¶LÉ»÷VF²¯’›~þ:Êg>­ùhTînŸOÆKà„IENowo{¯6tî·Ÿ:nII-¡›ƒ‹4$oµûÖûf#|º9ìØ´+~Ë#(‹QÍ'BsKøH¦¤Éš‘uõ&Xé¦×Í„‰û%úÂ?V7w¯ pŸ”o‡rzUôx’é=<8ÊÍ!E|ãDTºÈ(͹ÓéPøª3«YÎý,7†Ãg;ºïÍù{Ha7Ôp¡‰tذC›ýŒ—!=Û³ŽÅLw´>#¶Ð¾/^4I6q*^[:wºÔÇïs‡Pá0ÞÞ/œ2^ŠJ8t~M»Û‰ÇÔ–ïOäÈ×’¼éÈFÛU‹p]e$;D¥W]4¨>‰ÊeÇî7u¾ê:Ò¥xiz¨ ®¹ºZGx© îŽ_OxüÆï†Vý 0pD¦LR狱„ëʬ„rµüs/>DO×{™d¾jÀí·ƒrƒõèi[Šdv™ M¾ß$SøÍ¿Ç[Óøq(ДÜAf3‚… ±vàc‘*YÇß~üýÄ 'üHË1õ½ß@ô“>0›ÉÞZ‡ ù6kžDw.X¼•¸¨i†Ù›4Å¥9B£;/ -™Ûy-ÉΗjiƒ,ëÖµ *‹ÔLp{ìÐ×">EˆÙ© ÜJ¾58h“qà!§Ð)]}_Ûøy»Hž»…ƒ*É…kï0ÅRVÝ4–ù1˜ÑýkÑ6_û„Ý+5‚º¼}8¦ƒ$ãäë!Cµ¢¯I ç—Æ‹ICP6²‚+@â½DælYË 5ŽŒ,‚ãr ‚Ï1áǦé:ñ5Å”E§eëì(•¤ë–Ô:OrË,BÂ`7Ÿæ`á‘~CS‚ª™_»…äeâÊ´w_AÉr¯0Éì>yÀ&ËÒîéøûöü¢eìNÓd i%šÂR†þΛuÏ4±¢Ì&ïÕòþ¶Žo¹þhl„5Üãü=Ú'þDB åa@ÕW¾§" £¾š¸B>3ïê3JqUwÐf_·Ñ÷=R¢µ¶ÒHƒñîÌ#¨úÉb ºEÓÉ}‘• ¢Ù:Ÿ°½hÍê{÷àqæÐV‰Óà_Rí餉ô‰Z©Ï>¤Õú¹—õ<‰Ó¾;Êk FÎæS°ùâ㎠ÉȽ+Ëž5„Ø!g3ÌBm °áü|,­ÖÝ æ9»\ é»õ?þ\/V¤ƒc|¼¬1Ö9ÃLdô—ªnâT†¶éèxê, Ï O§*Q²ò>V02,‰•"Ö %cóŠ«6Mš8zœÌìÏßÕ¹Õn|ëÉUtïîÑkßaV0­}xÍië}kzøÒ·‚÷\°ªÔD+Á ™+„ÃWª&Ý…¹Ó®¾þª]OM—aÿ}rq˵ƒpÌ+¬N‰ÏpƒœfNu”,ØYˆÉñ -¦º`Á¤1ò ƒz4ò~~!½éEG¢_ö|(wrœJ&ˆþRëwºÁþ) Æq°˜‰è›|nFHžUbÝ[òðMÙîKI™ ð|J¹¼LPɹ°åϧ·†/»jNBºm¬'‚„®”ÃÐ~ø¡èŽmÝX“3B`¡¡.v”¦ÏÝÇLg ´©vöOœÓ$^µ«´}¹^wH’瀃ô[E—”f¤^P 'šÈ±}KˆYjŽ³Æš$x#÷Y ’U£‡‡Pî-Ò÷ B·N"6É~TÜÇ„‚&cnªvˆ1«›aÕ¼–üb­J÷î<D`«4â{þݶRÁõ‘¥€Ïƒq¹vÆq½[h.Ç=»žܜڳë݃y¸µM­Ýxx\{™ûlû×ÉÚ¾ße Ó”C8>5 çmM Q‰•@ñ“\E{iˆð;¿‡VÊ{Žrø°›ôž¾VV2E ΕmU‚°Q–Á—•…œú)ùšvÙ˜Œ;Kº…`Éj=lÍ:Pu\¥Äåp·!íÇ^ÏñrZaá*‚é°|oîŸìŸvKµ!¾qýhäe#ï2¾¸Ó…þ5P¨ŠŒÏWS§–øøÆ¨¢%t_µ¸ÅM<&3TÑñ¼îÈò]%ÕQ]ò•^°=”rJf{ƒ/ëm’º4<¢žÍM<`k§?ç–%qAAkɶ/êÓ°h1—œ•H¸kž¢/7X%$zº1cñP3 Áw¢ý"nñ ãO}ð±Å «íœ4õ˜U`¯³7¬|µY‡à†–= Ú1»& »yHÉc‰¨ë ³¼?øêoÈ×÷4ŽUíxŠ+4ðU/ËW²?¦ÃQ„Vž©]]Z5ÆŒupš…­#âIl5~1h+6û¯#Ħ¹º²—Äשf€é¥óFY\tõŽ~\ñ·@¨FÒR _T˜èx힣þ$r¹ÔMæ %{‰³9 2Ã2Ò ^y7ûë>1q¸áÌjÜLУ9÷l¶ÅØ%GlP{‹¬w…¬áÇŽ$/ò1—™Â/ j«e û¥ªš©QYÒÌ«[ë³ûy0µªF+Y­Z¯¯Uü#ýª€Í0ºéq…FµÓìv­…s»ëGëÌrUÑ™xð{ã¯Ò”Ã&æÄBù;’Ó¸æcá2ñ»ýdŸy.kÛ†‘ƒ$9¹Ï‹ƵnÄ\p\0«bÇ!\1kù²!$N?´P(tžïËq‡s/…Udu Û¤ØÁ ‹È\³&%Luúi¶q!c9S¯õ…(sD¼½Šb• ÇuT·˜*v«š¤•cð³ -Ú‚ Å/ðP"¬Ë&¾7@)yzC´ÜHH¨cå¸/7ý¹OMí¨€k?9"ee°˜xwZàU½F Ôý±Ìq¡îáõX‰ËãPFáááN|¢|µªnóB®ïH¹}®®º¬J@X_›…`ZÉô碕0è¡5l\c<¶9ÃÑR"G¢µïÿð·‡ô79¹µ­–'²¾V?JA=PùDš€–dÕqÞ¦&‚GϘh¨/Ù¤ Döz^z<¦4"xT“;xÙ–,jx ¾º Ô¸Í5rÙû‡û™”ÜL»l’…?©Áê7\ލÆêÒ Pw…ñµí Æzl +9ȃ#paœ§–SJAŠà ßd£…õâãÏ>´ _Í›·$*‡û>R8˜YÚo’nÛ@Ê™½ý½`E£ÎYÅÖæcÎv‘2_šQ­r]…Iúô±÷§k,ó$Î1¡&²÷¸u‡ƒ¬ ¹™VkPWÃI.ïÝp„'ø÷–‹kˆ'?§;kpäkú0ic`P’2‰YúS¯?™HÒß©4ÜDü‚ô®¡¤!JÑÄï§eö.¿+@{-y.«}’_OÇ-…~GÃP½¤y¯ªëžõÇ¡ž¸¸‘É6ÒÂuc²@$aØxo›?ëL&[Èxgj[AÌDEzϳNZwFÙûô;ïà§R€íôû´0J…MŒø¡7Rµ ^•“dßpf…ȨÀØ€ Þ²A‹AÙšê=èý”‹:yO^š}JãýW¸Z`MÓØœŠ¬è[ oø DD»xjØ]^²Ã¯¬áfßÚ¹¨è<929TúÓAÅÝñs‚ßø¾ìÜSÎð•À,:ŽÐ% ²Ù¨xPTg¯þÆŒœÆ!ü®ºR®©ªå|WnéT±oýú³~Ó[€DùÉû(“ZÆ”xzÂÙ;½µ#ñh}O`Ü}PQݨ5ÈØ‚ ÚBrú¶¨ºã”‚ØQ?ü£B.èÖ›«Ø2]ú;%Š·–‘j´FV6Ô¢Ú0[Kª- “ã %´Û˜˜ÒcF¾*”pâW¯¢Û@ J ªþ|{£gY¼|ê·Nb `¿ŽÈvUCÖ”O§ŠÞÊ0gÖ®ö–|þaÀÆÆYäúZ7Æ›ëB:Ú‘k—vilß^â˜R,µ¡¨ê¬ri¹Šioч%9ºk »¹¯ýDaÑIsqh÷¬îäw½Ýñrñld±ÊÙÞ/s43ôò?ÉŽÚlrŽXX¢ùk¡XÔ·wW¿JŒ—/a.Åvš9ymoeÝçNg·ó^„vG‡G®H¥ YàðHVäËBи3çò9`D"K–Éžõ: bE~ˆoã¹Át¿Z='ž•)\"}i¦ñ"ëFé˜*컚-¨CÖM5ôƒ1ì¥ßxé\jða¨§åÿHtC»£3Jd9"áÉP“è åóAÁ‰¾D#×FÂ#æ¶»š¤h=£¼x¿ôUÇYPSd4žÙ,N=&ªÐ#Ü$»«”†¡$©„ZB©È>úš 5GS?]%„K]-S Þ„ EqŽjs,U¹ Ö•ît€>¾Æ\ªŒÀùÉßI”žsp“¾ïLì”§Þ\Á&ÿ£;~x†yD›$Eós;šO­³ÐŸzl|‚ŽAŸ@ò5 Y<]ɰkš…¡-¥›Á넺ÕÉ΃%s¦{û™õ w*†ñ«Ê¾ÑS€¿/Ç®pu.)¢,µ]aVõ˜ô+o5g—¯T¾ö: B]ã„Ø@ºªôu^í>Úó!.mÓ>u`ª™fH:ô¤K³]AIå8òK¨u·bÿr@9„9þ—I²·ô’ÝP^Â@¬f ïñÞ¹œ¦§êAª·m×~ÖƒÌ2GQ—ð‚ À˪ç-ÒdqQÙFÜ3í§ðKscžr\:åA¢ÒÑuOgñîÏd23÷ˆŠ¸´97\Íœ£@ï×Ð÷7°MÐ 7˜$Qݧl‰Ö)`p%"ÓÛÅU <ò¨ø0DÛÏ5mŠWF‹CÔÌðââ©ÅâÐ‹Š•ž£âôOÏž„ÐÛ5Î}±‘9ûZÛ]©¢“ék­0,µ~4•T§™tËX––ø€áTõlQ— :s\†÷Ô¤ÐÏD¢<©ý on[eUnÌ"¤dtU4¯ÁÒœØpk>ˆk߀fgâ)-K®Ÿ–€Ÿ®Ù–÷á(Û ²ùZPûp0t`©X*_Ñgæ•>l¥<“Ÿ/EëLÐ*z“Å)o€ýãPõ*OÌ2ÓžFײ@G!W¿ÞÅ÷νž3T]©‘ÄâÎKàùïØíTYµTlb_Vx{Kè#\0Z¬f²i›«)§+"4•½’TfŵŒ?kLt¿™ B}юן¡i“ „â`9§ 둃zyÁûÍ=>Ä«-)gɦ6Ì\:]ˆªs~›ÿér`“£µœoàyë9š[@TxÕ/å‚öd«/0Þ:⛚Æ5#?,Sbà Ñ•Ÿ¶€ /‡$¼oÏ0à§p ƒ4‡%[# õf©ºußZg—O¨Z ÌP܃$‚7&ìß“^hâ@Y‹v|²p{É©wF¤šcC.Ç‘˜_TnG–a’õ91²ÖÝÈŨ9i0‹+z{°±¾tøkO£÷Pr;UÌ'OÅUVmÔsE©²`H„½¼ìÃìqÅ#‰š$š§ò©.kÞ±gÔ’‘’GY¶Œ-<0ü:ò"—öuœë¹Æt'Ž¿þî1–_k÷!ëF$ÍððÏlz$Ž—ö²JØi=Yg¨ÏàÉ¥”œ]†h2ÂІ VíVôX‹9fã ‡Æw“¨y:—ó=Ê7¤_½Ah¶¹8†<šçËZ wÑ—MOŠ&·à :6¸Ÿº8ØCíþÜÚæ¿²í÷ðƒ¹ÂU–² Ûû©þ‚¿”k¸Ë#¥Îkõ‚"åÿ¹ÂTcެR¯QŸÏQu×#¹†¤s¨äãzÓ¾±Ž‚-ôâÞBÒc½ƒÃÑÙ^\r%@}Œ'’ôv_(;Ï‚T‹ˆ5â:ðC4öO?8<ÚPý"*µîÛYz kº|ŸiKgLÍçÓ|EB„ÂyØ»¬±9ŠŠcøq*“üâ ¼´õ^¸¨74„”Ê…»NêÕ´ª¢ÔM¸@Ñþ´=ÊQJìX5ä7£fkß°×çœi`k÷úÓý´í«Â‰Ñ,žÅ ‰ü´HIÆ]‚zí)ÓØ6éS«æv–‡6ÀR*1¾DÀÕ DäMY”ÌÛùFæ¶1 ÙP•T—.’AϑٱþÙô›ç@IowÆb·×jÚªK»áL³®]|€x`Œ/ÕMܤm}ïZ€ (Dè£àÆ«Sà6:<óp šŒ{tót÷ ·}ûœÍB¹Yò@voGçÑT[8&ÑÏ´ËÀ>4œŠ˜¦ 4}êÒÀŒ<{ß2‹R™ãwr5xZ¾†`t3ù Nõxô¡o$3EBN“ݧY¢þýfÌëFañ.3TXó½ony‰Ý× ò“ìø2¬hŽ=ª[Œß6¶Æš´ì²3f¿&ÑøõÙ¢ Ý·—¿.…ímâó±¼™ÊùŽCk뺈pL§âú€‰²,„b‘ž:Ï'%Ç«K_/Â~kºèØuyñ…O-[Gó}ïK4Üâôóš™[;‰v¡ÔÓ(¹‚ûðV-r¦<îH öšú6}Ørœw/J˜Ó‹#Åân°w‰ü[5áqCxí¥ˆÀgãr@|3¤µ5*c4P’ù,ú"=f×ø ó¸ÌîPf+Q'žµr°¶Ha`®š‘:…Q£¥€ñ<¬SPžFŽ9¿÷dƒfêL ±9—•<©_¢¿ÿuмõ†&ã6sDð~Äg¯J?LÜ$©Î‘œ³/Y"Šû;9plXC[ç’På^èËF –bnUÇ?å•ÑVhý9ÙÚ^üCÜ€úVa4Y¹~+ïý†]…u1¿·êµ×ÇG…\'ÉÜ[u+ÚšÄjÐtý v%–à‚o}õ»)RÜa©éåÇaÌDॷßv0Š ©$UþØ3»±Äk_MÐ*Œ£+EZHxØRãŽt‡Ým:-WB÷—”ÝåŸÈá%sàÄYÁj¡¨è§Åe 8½óL6=çÃЦž(‰HUUz!ø8=ÕÖÒo aáŒêÞlkS…4få¢nåþã…íêÆ÷)4ø¢ÇÌ1«§é±7–²•á|Õ’û3„Ôª1hÄàOëuEgÏdÃlâ |œ>)ñúöÒÉËû©H†¦Í·=žßÏíÁÂBƒ© Õ:oj\Oª5´Œ"T¥WÀ$+«W„¸Å}V2 ÄÑ#ʇZ^WzôyìbΜŠx7^[CL5i©~oXw`éâé±_›=£ÕqUæv’CIëêàÕÚ׬úg)ÁK:&5G莫‡g¨„óîŒýfTcê%Åd»Þ"CjáaŽqïÁ¥ò¤l4œ$¸ývJïž›DÜb{oóêµöìÓ’QÃc(á}© «©¯òýŠþd Â=\hNMj›.iÀؽ(Z<] =ËÔ ÿµÓaEßMù:}dâ|]ä+Øàí›Vy–άÑ*Ýó»ß€øª £P»§è¤'9½KœWG/ìÚòê¹âĶŠNÊ‚ôT螬‡£dž-rîfý–‘BP‚¦oõ7¨5ôF­Þ|¥K3V[\Ó7:T”gÚ h½_È/°A)Í¢¥²ýUà1²õ¿Íf̉n¸0¹3½=Ü`}êuÕb‡°œ{Ù­ yÞU—ÅFbI÷š{Í*®m•¸é:3¥ dÕA[åá a¹zÀ×…º3•0^Xfâ„"ó< 1å‰Hkóz³Qöú=ì0 ‰ãÑÕÌó[÷z m™¯ŸO4™¡œŠé<‡Ž.þ”¸±GŠAzo̘G£Bnmª)&RV‘`'÷ľ.M‡w2‡³¸‡çOlký¸{_н'[ê“YM|…:pñ«õœ9¯„=¦ož- öÁg Ùð„c#MH$Œ—g€€{|v";gxo??hñ“ÿ9:–É…þf쌣fÅÅÙBÏï'ýK²pGû^½­¥gÁ]f>k]t<Ì­æÁ$¢$|2ƒÑé […¢êÓ®ËÁàOetxßcH»éîãyö)~†dgˆE0‘B9ãL=qì»Å“–ÓfªÇ,eX’qÅ É~‘DÒt>]è¨N/< mìµ>Ê»’Sî¢åP)p° UÝ¿¤¬ÊPåsî}¦ã¨¯E® Ó_˜NìoŸ@íWIÛ¸€þSÝ•?Tœ.W‹B^ØËF컉š^v„öáËû`—Fb¦ÊØG†‰{f@“êï¹åI»î¯Lúên3ëØå&føÒ|õ©¾òVù®à{UÔ? }P»+³¢Å⣡zºK¼‰—f R‰þ†y­¶Ç† þƒs²í‰¬L኎ýX%^ufû:b.ïâÜo—h¸”¦‡²½ê¢WŒÊ°fô•Vx–œB²òÐ(uÂÄÝp²F¢ \àÍ#Ë, hò[ìYfðX*ÚqrXLJÚAA0»ª†èK=í´ü#C à/±cÑC¼ /8ZR‚ü«Ë‰Ûk£E¾?öüÙyAÅù$Ûnisø]Kì×G‘y%aýJ:ÞØÒ …Û£OJÌØÓÀ:4Ôa^Tµ`juÀ/Š%ÔB⦤Ÿ€©<\¿½ÅbÖ†m¸ÿ%"š­õYæâ9‚Ç*¿i±¹’ ‡ d¬ÄκúL<€E‘– &¡³ƒVëYx%L,î»’¿aFc’d:s9ͽ,ÀâĦYd„AŒéïûS¬˜d¿<ä’*’1‘Â(ë–¬˜{Q:Õk?¦õìÿ)4¯†ð‰RNs"^ÀùbþÛ"LÇ|þÖÂg·çÇ#"}¹f/ܾu¹(GÑåÇÓ;!;©œG”¦Ü 7îeßo½®¼Æª/üLŒí‡èƒ¼n!‘¹jÊÎÚY¤åh,’¥§Ð=ôPbÑçÙ!.ty„' µÁþY¿þC‘kÇ8ýÍò;äaX¹èµá%¹ØtéjÂ^UÆÉÆy”‡#Öå3-kuøc3}õÈú½~4E’p%ç˜ÇUËŸÏm¨¶;`~#–ˆ'R}mÕÏU ù.=¯š‘î_:rÖÙ’åc=? ZÛæ6ádž9èñ¨§†lÁj1¼Hà¾Çp•ÒëѱŸ{@á‰yp½²~Óò,?,|A§ñ„ \ª‚LJsu«Ћω¶ÁNb‡Î2pM‰¼5@¸üþü»—CŒZH±‹G»¨V‘Ö&†h¸ëW‚zuu™ºþf²z…ÅK¿>õw‰e³©¿+ÞQd…ðŠÑM—s=QÈ>¬wzÑ€ÕçÈÑÓÒŸ:ËÙ›T•“k¡‹ëÜ¥\Æ®}(uV#ê;Q saë{c¨ýXj¶TkŠj¥Ù`PoÊÌõøB+b}æ`i¡zÁ]Ái£Ä ’#ö°§²Áb9¼—m7úÃá9Ú|'eâç&Ü©TÞêGLj@ú¬æϸüÃ}¢Þ¸Sf8üA¢*~„øPO`¬©„On¨;˜ëFÚW6Iå©´9ÎÝ‹oª"qo³ÄÑ<(+ìα‰]˾¹WÆarò9{v 3˜›ÑÉØ^f•õkùàÍø*:P…ïTˆÀº‘ý÷oÀ­q†S][‹ÚÖ³L‡qnw+¡ëH'§‰¹}t«‹¼»öúöéinKÓeÑõW<ŒìLç;–»ïúäq¤áq°û³´mªE,v$å¢ÈiõaQ!E0B½l˜ƒ[j‰÷˜%þŽJå2ÙÐÄ|!^ƒëU«BãnF{˜°Þ4I¯ Ã˜)ÿO, Óô¶†¢DμòÿK«¿Åa[ô±õÂPϾ†X%yÄÇšŸY2õ âoî`…B e¾Nü—ÄÖ‰0/V,Â,E¯8NjÌ%J?±­/ Y€Êrþ%ØðÉÆ\|‚¡‡ð Wô݉ÆÞ¹¾]Œ‰Œ½áù’Þä]¯@ t·Û!ÚeÐß°öÛC-ù¸.G£qDÆ2*‡ñp:«Ågâ ].¹FôÙmZÝSÛýÿP|tôD•J¿‰‘nó¡1Hcø¤r}4 Aí´ÞóÊB ü<¼MKž0”jBF¡5¯fFN`üã!0L5Û9MW Èv - Ì\›a–ú¨?Õ«s6†Ú ^œ?¤íò[ñf3u2¢ÇÑfê+$÷‡*J’W^'¬OúœI†de|]'`øã8z–Èh=%ö¦¨¡jM¡I)7ÏO²²å™ ~Æbå²9ÄlC²Ý´:&œZk"v0=‘éî;¨É:¦½$ƒLµ``Q+.É’4¹Ú½­œ{/XîÈÛ/Úm­D_3¦xq¹Þ@‘¦¢ïØ`½|ŒÌCÞ£ q¬JôòlÕõ8X‰ú‘bÙbczÁ¬8™%Þ¡Ù÷—húDhç*Ö2‡«X×& ‘ŸˆMs{ÌÙB3,OšE!H±ýt5:í'úM/'cZ *œÏ«SÒAjf)† º£° áJR<Ѱ¾¹íÎ<³É”HwáS¸hÃþÉþÚ͇.­ªE—Ú n:ýÙîñÅD²ù mVRÃ`ÆU»v`•• 3˜»/ÕC ×ȹÈ÷ÕV¾ðgjO¥enÿÙW‘=èânHè¯ü¨³ƒsÇ›!^ ŒxòC!„eC;£`:Œþl3Û@VŽš²Úƒ8œQëj9Bp£Âôbè\{¤KÉ‹9Wò¹í¢d_ÂïÎ¥ÎDÛ∈bÍÙ |¡”‰¨â ûMF®„ ZÏ$±'õÊ{×À\Ù-Ôs¬¡ýeSÆIWW%iÓïšÎÞv¥MyýCUÓžXÿ~#¸]´MÖ×ßࡘŒQ䵆2G²ÿš½”OÖÍ"ç'ø-pqþ,­j fÄ•#«A$Ãáª'5èÕzAí¬ËÄãÐU»¢q¤ïØ…Þ”ÿc¢4ò¬¡`­>–¸y‡,y¥l¡ÐKÈDìütñ>³ÇÝÀæt=TX]Æ@þcãïªæ¦'@ñƒF NÀ(½¨ÐM @¶?–ißLË“œy`#5À]ëÏ,®ÑåŒËÚ«î/ &(ú}VÿGžaÄ”Gˆaßý—ÀM° ºìÞùÝl“Bj< 9Qnñ þÔƒ”ZQ»XˆqíŢܓBó×s)ïç¬Vè‚Âòdƒ¯^A%“`[jk,™ŸœUHeùaо- ³š¡¨óÝÎH 2 É^É8æñŸ&ÙAqŸ¼—q•xk"úר0ÍVÑú1Š®¯œ&Ï“ç­CÞkN{Úš°ˆÜ[Iƒb¿»˜Ðst}"¿‰=•㉵› Ö§êF˜‚À‚xn(/õæ¤ýÖy¨„j1?ŽM1N º e÷l:®õŠ1‰“âmt2Ë_{Î)ü[ÈHN Ákßùµ§& ‘KæT¬çeûž÷fèmïnãå%§E»†Ó<ÖmœD @ 'w½è–îvöW‘g!7‘3&äDë¬ALUJ B»­z+ÅHfz9%XŽõ~•)oR—ôJÈ'û aùèÜ':›Ç‡­ÙMý üíPB¼)XP³R1Ój+(‰Êz—ˆ‰È§F%yw ‘Du¾6>|§Æî œâl–iÍÖz–)‰ì]D¿ìÙp:fúÙ¥KcFcä6¯Z5Ñÿ_µØ·>4«6óí1YôîH—Ö›=ÆQ‚ÆÀOi:Ý”g\Ù¯<HÒÂ`1Þ¡QL $IVò7bmÂÈ\\VOŠ{P³ %ŠÒĈµ¿¾ÿ9ð™Xo=,ãã&qk".þb2ÏG¯Y”uè¥*Ø¥¤BVzr±%×zMLh™Ç”£® £Õu´û<‰Ö ci?ç­õÃYF¤ìÊKÌu2ó€5LÕà.Òß¿9D {ëT¯CË1Ùnò’ hÛ[/qv§7ò%Ñt džb%‚m€Ž=² Ûž~bV¸Ý@®¥öáÿ¨D®t»QâAmúÌ>±‰ü]–ÕId„Ê’H›ÇK“·×BQ*¿†4¨KGÃbÃvðjN¦ïÆ> stream xÚ­yUX\Û–5î$¸îîîî.Á¡p UxpIp ÜÝÝàîàîîúçœÛ·o÷ï§î~¨úöšcÍ1e̵ö¦"SÕ`³p2J;9‚™Ø˜YùÊ6f® %'GE&u •«Š™½ àÀ…DE%á4Û89Jš‚ü @h`g°ñññ!Q$œœ=]l¬¬ÁZ-u:ÆYþÚ0óü'òÇdcå þóà´wrv:‚ÿPü5€@ذ´±$TTõä”e´2ÊZ #ÐÅÔ êú§s€¢9ФX:¹ìÿ±˜;9ZØüUˆù—` 9Ímþ¸=ÌÎAŒg ‹ƒ ôç`X¹˜:‚ÿôì°q4·wµø+?vK§¿rvqú³Ãáö‡LÕ ™»Ø8ƒ¢ªJJÿ#O°µ)ø¯Ø ›?0ÀÉòÏN 's׿JúûCó›Ú8‚` ø¯Xf@€… ÈÙÞÔóOì?dÎ.6§á ²q´úWŒ •©‹…=úCó‡û¯îü«NÀ©ÞÔÙÙÞóoo§¿wýg6`ÐÞ’‰ýOLsðŸØV6ŽH, ‹œ£¥€õv Wçbn@—¿Dû×ÌÐýIÂÔÂÉÑÞ`´DbQvÿ  ýŸ©Ìü'òÿÄÿ'ÿŸÈû¿÷ß5ú/‡ø{žÿZÚÕÞ^ÙÔáÏüã’ü¹eœŠ€¿î{SÀ_wÍgWàÿçfê`cïùß8þûFà?’ý¾‡åÀ¦š"æhõG&6vfÖ˜m@Ò6@ U°¹5ÀÒÔþOÏþ¶k9Z]ìm´ý»­œXYÿ Ó´¶1·süK®@@G‹Oÿ\'Ï¢«¥¯¦-ÎðßݰïTý3 `MOg à?Âè(9Yüçâ/qq'€77€‰ƒÀÃà àecóùo"þMÃö¯µ’)ØÅÆð‰•™•• ðçÿŸ¿­ ÿFÊÑÜÉâ¯ÉÑ›:Zü¶ÿ4ü›»º¸üÑøïóÿ§è®ÿ{ ÐhŽ´¼àd.l›œ–®ÆÍ“üÔÛÍ=â\T§™Ÿë_éÔå—ümƒ¯Ìä¥*„¹~‚ÿ­ÅsþÈùuGž~w¨Çž¦+ x–CäCAד‹±JÝÆÃ°ÈbT„šr¬é}>§¸£Ïͪ½»9¦¦nTøG<ÑÆá‚p~OçOá–ëÿ‘òÎÍ×üGm v;z=fuÞÑ1õ÷ƒû;šŸÃƒý]—°=;„ ™1ˆT¦¸¾‰Gd `O—›:ó7Ø'7÷Mµ ôrhæã„æHŸ!0é¹^¿Xƒ7ŒØÀ·@žÜF[<ª”i5¿ÌŸà,öá‚Ò麉ÞzÖËqòÞ«&Ò š‚ÔÏQH8ÑÅM¤Ò„  ©eQˆLiä!nhÊob“!1dí}–£:4»[åqøoN„Æñe_Í/?ˆ$«ƒn¼÷ëq0ÎÞb¦B8ù^jÕ{¹7¯êIà¯áô3Z[n'ÏPJ¸sjnlÖVääíÔÀÈ €ÝîŠÞw–fªm4qðÀoQ+9…9öýÒ­‰ÚÁ™‹;v"Ãè§Íî¾½±Å†¡U^»¢¹¿û@ý5’3˜¦îX‘:¨Õbþ;ÛÙÚÄšRÍDÚ.}é†ÏÖ@©>½Íö=|RjZÍÆä/êÝD¦àë€7GôâB©'Pab8 žÉ(0ÙJ›”Kø£Fú d®¦xÓãG½KÐÍ ¾²Ú*¾æô¥âpôOóµ÷/@³ U.Ô æsI¦‚$µ{Ï&{Åu4~BRÃCÏtd”rútÀP`x’WöåGmê^Ô“hj[yùÛÜ`7“C™Âé³,úZ¸/¶Ç’œ×ãÞÊ ¬ dÇÎZG`GÉÈuü85VNubIÝYPt1õ«C6#ÒwÐ׉ƒòoþ¼UÐJßBóã`ªFibj‰ùU“R¡×»sÕ‹Ù5.Ñz êìÂIQì+ÝE¬1ˆvò2Ä"n_]ÞEøü?ßàÈ¢úÜ4‰¶Y{AGz,v"#o§ÏÝ÷å÷æ_:Sp¬QL\õYsST_Æ5§Mç}F×.‰Ûâk!;~烋/a³2’ h 9ugÖ]¹FÂ<ƒS†¿£÷¯ãö;;±¢U µM†å‹Ã.Íi¬Œ–é$8ã+’ F˜¶ÙÆ[TëÎf*\o !ªÕÊ—Ž_ÒÕ¶ós_{“˜ïˆáGLË^J²`Å ¢GL!£ê<Òo†&°¬é\ЯzvË6¶Ãå+I©i´7oo [ÕÁ)‡N;H§&„` ‹j€·4„º†wö‘(À„–OBÑ+HãÔQ{Aè7kd¥Üû¾”æéHì÷r YÔIR¾"r EѲ)b­ê‡ÕòˆÍÌ6îeeõ¬Bø\”¤Ë ©i·iòŒÛ4ð±o \£Ë…â”cß^\ôÉoÒPÑ¿üº_æû`ÔÄ.n§=U†<êÝi Ú¹^ç%¬Ãä;´Ïœ‹>2ÄDÁyíðþ4©|¢”y7hùcFÁ屦ƒ[%éòt6+\ìg+| kq£‡BÖnhnFN2Æ8ÜÄgºwÌñDýV`˜Äý+N0“ŽȆ*6³E‰I%³6"™‚0Œ`Z«L Á[£øA®ØBbBúž5“á´(å|¢0íùÝä—ÏO: ³Iㄚuº¼ ‰N{]ó-ò"®G+$ lúoRÚ¥l£Pª£–Œ-|ð³1gµTDZç›ß2÷:”¤WI‰ Ba©T¦ðe|~æµÕ.uiíK]¡YxpÁàO`ªûä!ÆY•µ›f¥nñ7Ü ‹Š¨ßs/nV®8h÷‡QýÓ3ƒŒF±í–U"Ê—w¦Å«ç*ð” ´0i7"•®qq‰[mÔPšú¨s& J,7Ÿ²xµ*±K*± IÎønàö›Å'Jû]´£|²k c²™Abjív¿¨¿ûÙc˜±pJÌ–¡á–qZ¾ÃäJðÓ¨·ØŒ–¬Ð" Š”å”ªX†–εš$Ýíÿ0?"ì\u`'>õŸ÷]K‹.­—¤oRb9Î^5¨o…|öŸ©†w“š^é>Na®â8qd˜Ù0NMÑ/hb|*Æå2V¯û—?}éŸØ­°_hÆÒ–0G –C¨…ßi•êz/£ûò½2üêñäþ5Û¥ûþivbt»KµºŸiÅï’ß¡ôA&aOÃÊ"Å«ÈXnVQ¼„Ÿ¡IK‡&æøÞÍ•3à‹œ§•Z°Œ§˜Øu{^SÀHLca-·°ËДƒ® |R l­HƒÌ””誇‘§t ò=<ä'"b‹Îð?Ø0a´ßFìä8<þî…?=*bdñQðþŒÙµJ¼U_\¥Ñ³…ÃÞì,œœ“†/ׯÔ!´ç4çð)qt ½áo±&zÚÊåò-Ãni ?À dyäw­1TVä˜QµãYR ˜éµÂŸOT*˜[ã‡J¼®Ý‰?´{Kƒ»F*å4YfœJ)ÍËÙ ¬LÑšg}“͆ÜLR´Í‡Ï/˜¹Üv“Úã3?äñXÖý 8ß÷ŒG_-¬ØÓíˆb ©ƒ^µ ]ŸŒŽ ‹aÔö¨ÛüEýå5”¼W|@™õTݰ¥¢vÝôbðµö)r¾Q­‰NK]jö¾„rü{‹·-|Z+ú~Ì“~Üa1ÈhÕ<‘"í Q¿zá }¸Û×ö®1R­æÔé‚Jº˜k°¦0GI-4E‹²°G7ð„4öp¼0鲕RsÇ%¨í u­ú65óò»X$!%wª¥$}_QÉwºwñ31Ê`Yç3—ÙÞ³¦§Š©P£ç\B§ýkða2²µÌ¶=22 ²HXxG½4¥¨†­Ô˜IM»[ì+á¤.°ø¸€5ZæÙ=¨çhšâ~ÉbòЙ‘ݰ´Xˆl¬¶YWl{ᎆЎ(Ç6ª»hVš/„Ë åõ8h»½K­Æ²YtìÑ* s#>VM2üÃ9ä.ßãë,FaóÈ›$[ †‚Îoìɯ¨®Q–ɲ]\Uàû/8d2¬z›9^V5s"ýG¿5¡1¤yh‹UXʯ¬Q+l+ŒOJ,ö´žÆK“øh4&Óf :DˆÑ2Pa+qÔÈð3è;v$3xvyÿ¸ÕŽ[:ˤnÙT,«¦¢4|‹”G~‹K—Æum⋞ßÉ{C"÷`ÎHN&ÛÝSÜ£z/scÁÍë`KÐèoIKʶP UärápÛ7ó{½„*²C¸SxH;&ŽÉ§Ùm_3óÔËšì_Vfe‹Ö?ñæ/y/Uî­ùÏßp¾Àü<›ÔV Q«F”yVHhaÕˆ6ýüMÜ׋pÿšJ{vÊs—η™(±î18Peª²;kS?¤§Žõ)‘Îr@:“AÇ»êf7qÿ Õ)ý§Šz6ôÕÈǃÛô 1G÷òÊÍfÙAßTÝ¡ƒ$&»YùCMÙlÿþå£%¹OåU.çÈJC©Â½…º–X`Møw”U6=j„Äu(sÛ±áû|~¿n¾‘hqÒw׊»uÍñÔûÔôÏ[[ÓØY*<ÙôoÍ'ñ=Ðmöœ‘‡´LÓxò y *ûâ.ÔñlßP°÷5¦¦esŽ¥£Kcªìó{eS’"M/¥Û‡F†.þÇö6é@¥\U®Ë½Þ}ƒ+2ÈbDß>Çöú¡¾aHQÒÙ¥ÜZrVÒi!}ím¬ât·ææ{2<Ú0Ô©Æ´BvÐu[bíÛŽê¯È×j)Tìòl¡×E’^Ô¶Ï$ fúåk¿ì¾&‡º—‘VKP¿à­ñì$éàØö;G^q²e@¡Í@¾v)¹uÉéÿèÀ‰øJLáL‚›ä­fK…A¯Üšœ„¬õåûÕ¬%c(:’ªE-ÿ2–˜kªQ dtcØHAœK&¦ÕÒb³˜ÃHÔ÷¯™¬Î¯ŠøsÁ*D†ÛÌ‹}v½$;é\zPœZ[#5 2åbJå/2é Ã\ìÙfdn x”UžðO”È‘¿}¿ÆaF¬~8Ò0Õ´K?–:¸|¡ŠØ…%.øÅ µ+p¡´~§Øý·ò¹ú§iäkây"q—<á¬tàIÁú‡õøhµ½»éQG‰÷‡Ú wéû‹›õX; 5ðØ£¨`wQ^ŠGK;u4ÉÖ;~¡ûf¦¼Ыµ1äDvûõþ=vCŸ–Bñs©âs %;}ú¥­ÉCpÁ·tNÿ"-áqš:Ú£à€) 6-ëþ¾.´%"B—£¾±äÐQÍsƨˆÓ{tÃ[öü‘ŽÃðaYPøÛÉÙ|Ý׊`=¿¡¶ôPñçîi"R„* ÁŸôÍôƒ‹·á„H#ãõ’Ö;ÕíF¶'âO›x$#“NPŸ%†³áÅš›Ïçfœ‡0{…šHýŠÛoVæ|á7Ûݰ…ãnáâ ‚OПàáJKlÕ-ó¨0C‘Ü÷Ó¸“²©Ÿ¼4呾çØ)¼„…(šI^é[FÏ[0mù“:{k0Ó£,v0öþ$/ÿp¸ >>ÇZ¯œ·¢Ù/ªši‚À]+Û)cè½Â§×Ç*Nµ¶Œž=ŒÕ^MRe¡Vä·›]”qù0Ú:Z³¾]v’Æíž.tîTá2ÒÑ Ê` ižpÄqc›oÀ`‹ßâ-‚ϹBåZ.uÎ÷÷Å ãfÆ&/N°IBv¾*©) W-=œ@5|fÑäâ#,Êï7\8cÇi($?ì‘¡ T±†[è7}€³ý 5ߥ÷HIpé›þÍS©* |ã ÏŸ° ÏÚ_þaó«Î1@ÿÌsŽQΘRgWQ£ËaKŽ¡û •’Èkâ5ãGqyý7Ö/ðÅ‘ˆmä«„ÖÙ¹ÔÁ-ð×Ö«AÛoâUÆ©B`ƺÍÞžl ÃT1ˆ2›A Ñ;y½…µß ê{>lb2I>t¶® ùö8FÕƒñóǣܴðÂá–4`oRdiVÑqÏÎ4ë.,>‹_J?i¼â ‘C»am&›0.«\’‹,1¸ ‰zp¿}¼0AÊ’V߈’Êdt³¦†5¢yøZÒ÷Ëi®ð¬´Y4Ÿ'w´Õž¤2ÊãÍ„Ý×vê ÒçÒž— XŒ˜0j !uFÔ)¨ ×Wzi9R£´ŸÀ¸ú-—å:ããCíÕ Ÿv®JŒ 6¡EÝ-t‰0¦\®Væ·ó˜í¾EÇ+‹Ÿ€âá÷ݲ4Š/Í' ª{ ,sÅ< ø®”Bè©›¤Ñª‘*Á~,oiú…-I¤œ4úc0“hº-Vár/ûeæG³íü‘û'‘\×ùLg›ÄJ°;kuq(ý‘’ÜèWñp0nXçƒ G¹’Fù|éŠ+“²®•XvøIe&]'ARXÑ­[ðFa2˜‚Á o~ó•àó+†Uõ˜,‘Q½Ùªßº°OɽOs/ÚýÛ~¤é´xA&UC µ+z¡JÀožÁ3s>3t‘W,¾Ë›¯'¨Ìä¾5Ÿtä·…>Å/BÒ¿“ðâð'K3ÙÊ_.nÐZâä˜öã¸ï4àqXå”ÈÑbPL¼‹|å°ß q–5yÓ_Äã$è.Ça0S(²YÂ+eÛ;A*Ÿ›ä±1=ëS”Í— ïŸðê¹ F&†sŒß*CÑAÊ~©ªÿ0d* æp¢L¸…b‚£±=¯ÚwºŽ~<£¥Ó¬fîÇ8ê\¤m|×z©Q^ÒÃ’{“òuª.Žz7ë¦U´œF…Õ¥Qm Þ³¿‡sBîÅm»í™a^Šê²·×~£è «°Æ¬“÷ú¦Wbdƒ"{»Qpœê ôÇG؉~ÊÖó…£Ä¬ß¾47õg,utu†rW..ÔmªØEë(stz—µo1«nšLV¼#—lµ¢Žœ¶dkYƒiƒ(èçÜä*‡„£ŸeI0Óœ|R¡îj@2‹¨Òˆ’vµÿ¦ô ·j8ܤþ`™²,UˆQtÄU7d·ÓÖ®ÓW­G[i-Ê?8³O† ? Ú<%ã¹c4Ag¾{ )ƒr³60ã#pG`±ß%¢8Ÿ¼ÏK½át©OËXMqé½èøx%Q©BÑ_ªk\EÚ·ø‚;ͤàÕ @f@ë”0#Ù!ùß GªÄÄ75½tÆpyÛèPú œV|ntݳ ¸î\âÚ¶t9*Û8Úœ¥?èïß3YîC°}•0SHTÜôr3½l=¯÷ëòïôд֎°™DÐaÒLöý0pÐwcÍ8Ï6ÓdªÁR*IïpË2-xjM:Û&Y•C†Bç‹¿¼1uûH°Œ7;²çpºù×è¸*ÂG¤zn´u;?\ý¶Œ“PafúŽ‰êˆ¯¨g²óéÝüì×fu€¬¿AåMiÏÉãÀ+–¶t‰tÙ6½"ðÖDå›d5ÂU;›ÿ{5’ˆvö-Á¾nýñ·YÁÙ2Qªed¾ÃÖ7Öê¢N¦óÈ2wF¬‚%Ó‰k0ÒèPˆÂRÍ¥˜ÁþwµRaDß#!G:Ùwõ°žÊÀâQãü{$oS¿øT£™ïÌyá¢byÇ‹Ü篎Ž4‘Ö¶Xܽ‚ Zi¼ÍˆpŽ1ìó'5 <ˆÏ{‹~—ÏQ+ÉSK\Cø>õÖçæ³@S³çvÔ¤ ®~’Ë!?25Ñd‚™zun”ÌT5òñ¤]ô%Ðì ø°gh½&ä·YO 2édžü¥w1rÿÚ#L¾Cp0­ÒU¸ô¸vd I޶ ÉÀuPúÄð>Œ½Õ“R“ãÇ´:x+fbUÙ9}7Ѫ>™ò‹ý>À ™æ–Õ—Ji:e40I¹rœ®üƒ§£}ƒ¯i Qêé›k›f´Ü·ÿ²öޏødµ­É4"z:±¯;»ù>?¹,8çd.-úsc6û3ŽäÑ>ƒ@a\•tÜêÜæi Ü$F'£í‚ÚŸ>Îæ‚;¶O ãðY´ Õ$×däž­-´ž½¢T³gE™ïÒ>ŒXKÝÚãã¾§zëh4îÏÏ­†[å@2õ¾Œ:ö;‹nl‡ꆹØ`‹o?[ D-$Âë¥ñÄ$vD;?Ö%4Ç…ñG`‰ fÞ÷(Œ–ŸÍ?¿Ú#t±˜vަì„K1_0ð»Ál<غ’kcr‰Q¸¼æ|z!…4%Ðc¡U`Þ/bb‚Žº.m`]EÏ :±çÎ9}±’ËèB´”ÙÇÛ23¸´û<gÛ %%ïÙ…X ;b8vعéÑGY©²³»Åÿ™â•3¿½ãaSi²ÂCWø^°í°‡€ŸÍ ð“84@êÓƒžU™³ß áþ J.™käÔËí-]míèwgÅãKo¯¦ Ôâæ—8µýõl»‰•c‹íÌm¼¥¬®j>UÔ¥é™%Ú †FŒ­ÆB¡/†bäòÂÕ—Uƒ|·4|›è{îj!«Î&ÙŠVúQ-UŒ I‡BéÉRZ ÿàá×6ÕD÷…Z.s+EØÙÁ-ÌÎW }»ã²¿šIôå6(i^7ÕK¾ƒÜ{žÁÀ›³Êò—¦#Cžy™Öà¾]@•gc1ê6 B^Ÿ:e ÊekЈCž<þÍá&¡ÍßBù\‰)­* —JBüP¢-«…RÜØ£ÿºNk~b۷朇q&ºó»‡wøÆÉ 9^ôIGRNB0f8ll™· <= =„ ÆûçŽÎŒãçCšeQIpï~o[ÆžÌÔÔ‡_ŠÖÊ t]ÙÔ˜ˆµŸªšž3T l¬dCÊÉÝÓñ1îlÛ"-D›t†&£LPƒ=Ü& EÞÉš’ƒ!ý¥ Œ¯f ßÜ¢|ÌMÎ:ªí"­KU ŠϦ_ ±.Ù1ª¬ì©ý=¤{ŒìÜ!ž$hôù§ð4å•ÇÞ:–Ó£‘ßí›VJÂhk½¶´]Û»°‹yý¦ºÀµ9“‡!H€ n”$Á”*XzÏ”¬„†üOøÊ—TVåÀ=™ u>ú«Ïãü¯4cÐÉþ­rm™qÑ“Âüæ—öbYVжW+@`RÝõ1ÿ|Λ†×ËíÄv’Î"Úp-.ÎqJôÕ›WåWží»|¼wF>TÝjQ´Í{ÖàÜòF ¤&–É}ŠTFbƒ¶kÙäHA²í è5w.¾“ÙL.Ë-’Ç ~Ö–HuŽ™†³žÁN´ï¼iìnœ³8x§ñ&ؓ߄ØEØ2Ó“t–Ù_=/IÒP^+ËÝgᕼ— Qb†€.:›”¥±Ú(_£ ®U€/ +íó d­ “à˱›0=‰Ý#±‘¨›A«xOo†%ôôg®Õcá%÷¥´Ô:•è~+Ó.¬–ßP5x5ú³‹ØÐ@¿²}&UÎÎóG}!Ê€ö¾tp2§49 lNƒ:¥e¤d36‡`ÓeïÛ&ÉäDîN¢Zºç\Y™QåÒ¥õî©T°¨Í…Í„!UvžªFûBÏ Á!Å×$Ãó£z&|±ý¼ÃžÑ$ìG‡øõë²Cxºü~a_U¢ÀM Fà"E–™cTÐæ sf|{u<ÀÓq\wä°¶‘ûý ËËoëÎDyQíi'r½¹Žšã ™›ÆHû™ ÎªãGÿ>×…M_ ª–̾ zªàANºeŠo’bÞ‹ïÈ!YxܧÕß •%+?Bþ«b‰Â++®Œ·à!gO€+EëBß÷tOj{ÿ<2Z> i¡§ˆ@Öý5‚&’QcêÖ,¥ͬa‡~dü‚³ ¯Ï´ˆ´Ú¤^>· Í€¤–‰ÔMH«ù¾·å+Ï~|GŠ­/NžUw¼w…°áó¼ÞAާi W\Z | †ª.ma„V•ö ŽÙ7«ÝZBoËûø`+I8]2‡CtÚÎÕs |–·{ÂÞ2Ô´"éXk`ÜÇNCn® ¤RæVrq’ïLAÀ/±ÏQ9;áXÎ`0Å1T$¨·áܾEÄæàÂÝËB*Î$’â?ù +N€Â훌`8}I0´òÝbõĽë .m{Bø’rÿóR±>3K;ú®ä í8q3;ÊÈmpõ\U#”ª¢6j,,s9çUùUí·jg†P‰;$µÂS¶X'¤JãÐEèv=’«è6}+ i—éSk3kê&E¾V®ã¥ˆ}§b\-þ´Ÿt8” 9¹PÆ=(Ȭ´‹Ã:ôïK7Ì+ÑÃVàﻪrT4J2=Êâ¶·Û<Ü?žïw¼ª¿ÈÑ~Q^]Ú¼±s ³¡ƒà¾­áCÂ+ÍãÈÌ@…¾fÙˆb{ºNj’R¿zõ—ñE‚rT«¢¥·íGnÎ’o>Foˆïq3öyäŠ0Ë2Š5g;h°8†0±™’¢zÃ"NÉ(QËʇŽý äð*/‚$qƒ…â6Þ£ )Ùx#ùQ¡Å¼Jùd¾F”“T¦¢¿¢œmÅBã Kñâ¾'åñ—…ƒ#?}ss'D©ZÃóÒÎB×T|ˆ>-˜¨Š£ûå´o¥Í™å%¡P.í[ao­ëehŠ^Í(¸ÌÉTîB3â'Üž&ÊËÞ÷ î¡Û£ëtž¹9õ-Þú.Îùâ<¦+4óp4û>„“BTa:uø> @Än‰Ð\»¸H¤Z¥N„·Ç;»3ÑŽ»X£-ˆ¤>^[z¢&˃Њ“´¹\ïL9ÿ„wQ¥a|>­p’^ócŠ–±HME¬ µ/ÇÖd5-_‹06ûøNZbf— ¶=ñq~‘ÿ˜ù—ÌhCn:®ró£T$.5¥7bã¬/LC,¨¿oJT¿ž†¨JW)­ $4EŸÝ­¸ bíC,ú0(øyë•,Ù}fàÛ³Ÿ*ZiøþœìlzzÎøP²¾é¦;ÞB±±}TóP¶Ž7uIMò ¬[zD÷f ¯n Äáõ^ySÒrÏuöYyz6lÍ·:Rõ°T9&ã#»ƒ!\¡-IíªŸ\¶Œ™a­™‘1D¢‡-îñAšH7¢¹íuUPÓ?¬8•8ÑEž‹zÛ=¸ùMÁím²í!uâi§ëg±!Ã÷ü\#›1b=ð®Ä*ê-'_[æOú?CGôE#Û¸½äz¾ÖLø·ZÓïŒQ©¨ÂAS»üÎÍ£×)m–”þÇy¥N­eÿ˜(>Ü{A€c ©½[`¸‰³¯ïXvi%?ܲzWöMå;† iÚ„=C w Ô~•©´ó‹^r®t]Œà)ʹ-4÷ç8Á¡H’u•$Û“,> ôü.Ô—„w£OÆVÐvT¿ŒÞZ.ªííñ±ÞÑ^ôújZ:gí¸þ ·™Â±Ž©ï µCv#õ,íš¶î8Üh®ÊbÊfÌza,Â]rÜ$?ªôt®íáõýi.Û—ÓrXµwN6÷ZÙ”„+Ü€lTØ(jš£œ]ÅEÅF\:äx‚–m²˜ú:„‘„>Lz1U’™À'ƒÁ5ø[UîÊ÷O[œfÀ’åúUÂi¹ëˆ‘ð¡mûNã4ò¤¥kJ~ÚŠåýhÍK¯µÔw2³˜}~b—,«é²œ=ý…”~§æc=ʤ+ެŽTÖ¢–þˆEGÖÛj×M{²º¬Åª¾i—¼¸t!SìÛ“41¹T²†•–B°Ó¦„pgdàh‰Ä6ˆŒÉŠÈ×råF‘B@4b”b™ˆM?e°ÍÉFT·«´‹ÃŒ¯]玨ݨ ™ A/Iÿæ÷ʰ(OB8v‰¤¨pñ Æ20öq[iê{ú¡:›$Õ‡ôo³þ»¸d§œ¦ í´ V☿NÂ<¼*übpt„~ýJÎÓÝ™Ÿ-ÊK® 5@šrù)¾Eúª \T·0”¿±æD€.81ºI˜¢»1rd3eáav/¡qèÝßáà<>þâò` }LÓaKÎ%äáØûún8±äb·(g熱÷é]~teÛK(ëÉ—ù.H³÷-߯ÐcdýˆW Ì#È€ìWJ3iRŽ È;¾¬_Ùs” jºù¾F‰&*Ôi|‰­Œÿ\Ø"t=Ž{œÄ¡"gvñÓ>/z×u½ T½óª\2ìEÏßiw31fûDþùÚÀs4 ­‰5·± ›«äã}ÂH¼‚qf“6¡ÿtʈ­™ŒöÀÈ:3%,VòK†ÉÞî&±a@¢ÿ銹¹>º©a쫊nF–Ô°‡Õ¬ê޼’Ñ8ÔFÌíÂÖäAÖkÄÙvBÌÏé»KX´“¢¯rqˆâüh¼?ÝQŸëßXü.kãe.zš3Û®CT$p –×’ŽŠ´Þ8#¶TŒv’  Ü-Ѥç?X~v"J5lñ„Ee…ÿ¤ÍŽÀ¬üUž‰£ÁÔìrš—™·ù$¶ža}Û ¨aR`¯AIÒÙØÑ¦90‚ÔÉ ?%ä¨eKO l,è(C s¥©Г2>÷hóѸ ^W¹ –·ÏH79%Ë?3Új½õ5ùirÛ’½¬#!<¯ä¦ô=ï÷½±¬Žý È®_"úI¶¶ÏIQuÎô=<Í%׋bpÆZùjjÿ”£IˆúAû‹7ã÷ä¼rA‚«!EI©Ècæ¯ß6ÚÑa…Þ bì Û1¥:mJó¤âŸ$ÎÏÂÙíÏ7¡Æ{‹å͉f±K妭5Æ1y7Ïåûf¦½q%JÌn¡²Èùªñ䄊;ó¯ò4X[rÇÝ(÷ƒÊÆZà» ,?Vý˜ç£ç”V‰3D5µÕ3Ìe£Û6ÃuGÖn¸›em0Â$ªÔoÙ„ËØ†äÌh=×wp¦½iÄ\¸ŠCœgO…“ë½iKkv_x ^"Ôk`Z:V½Œ–ƒ=ã¼’üb¡!ït{OiK‰MP7çíi3ËLñt’R/4ºý¦d£ì~ |"½ÝÙ8Ú)Qýšot«ü¼äÛÔ)¬ôÓ(b‡ØªÚ‰nPã§Ó½ö/Ä÷·wºwáÁeÊßHÅé·  S6$“לvJ¸üŠ}túHãp4>Ò-‚ûÎGávžµ£¶gSp q8hª±PI#©_=¨‡}š"Åã7B·MkŪç{"Ô/gÔn{þË(%¨Éêû«É–õxrtûoBáp¡9ØæFôÙÏ+A Øï¤fJ½A|×$¤é2f 3sÆrSãã(RNֵ̼Jd`öÃAG»k²gi÷õ’àéO§ÙÅZÅv¬”_éGnШ ‚ˆ(9 ÝïÝavg†!å>Ä”ž'g¬±íF¼?@VMOZAF¢mX‡Ìå"(’ HàÕ¾¡¦6[ÈÖT)ÎÊ‚»{@JIÐ'[cÕ?àv›¤é‰ô!÷a‹÷¢8#båJÁÎlâf-FüBã¡=NK;k_™#‰ú×ýìFŒRN¤’ž¢«×j" ‘'ÎLdËu<ú5¸9Þ?ø/“‹^à4Ø\¡œx *Z….¦÷€€¾6øõÜy%Y™ŒøüÎNñòí›\'ðjÓTân]¹óeÏxŸàË•àl>4†bíè½k[øIVùä<¥_Ž¡_ö*$«ÕÅ\˜ÇøU ‘¥H)²³ýæŽ+{ ×d[)~ñæ«§qyñx*´‘м¢Šû ÂÈR­‹ñЭ®;{0ãìmb¬?!ÙùI#BnÕLüTKÒÕ»µ‰t#ÂÚâºdi¬åöɾ20ú0ˆÄ Úö<ÊC®\cH ¯Ó 0…VÚ-ÉÇʱÍÓ§D$G`‚a«š î©6‰S‚º{‡°iÿCQa—³¢†ùAÞ2­ìX¯eE¬ t[°ã<¢çÖr5$AŸC³¢WÇSXï\žÄšý˜ø Ld8ª+ãܸáÙ¥’…$uqûÅ9Š)p›¨…RiìÙI7a^…K;+ÌGõÂÀ^3à¼Iˆ€&hßúR>æ“¶ÊãÔzö9ø[Hiw¬QëeôÀ§éŸ†Œ:tnapá P2k7Ëo×Û¶÷›>ÁÙ=ÛT¯hÆC…f†3yIæÂb†Rºq¢Y”ÝJ»*$A’ ß$%Ó8 »\Ý-’eÆP)*œë”œÄ¹ûÚñûÊXP|ÙKkp„uÄL>7Ô•¾>\ßW–¬”§Yã¡°5²<|tNdjÙÖK4I&H@FùR/ãÚ¶¡‘¸Â'@VxêÖR[¸0|{œžGÉÂZö¸ZÜÏL6o [™#±“Rô¢—b$ªM™¤Tú˜.'ë_ó}!CºNçŠl§»T8·±Ê;äÛð/CqÄ|Àølà¦÷g© ¨¯Ñ9è®ö“ý”,¨³Ö¤£žÅmŽéA}Ø”aú×;§Žé E6gŒZhdòCâújÍYa–¬+6+y!èÂEDf‰,Ë€_ÐÆ†²¸Ï‡Ð`"'P§AºÎL‹î'œ&9H…ýhtËÍw†ÆæÆ--œ¹yi@h‚UàM˜YËJ»°ÃÄw·“áÙc²–+r3Á÷‡®îˆ=Ý>ÄvÊíˆø `2­ŠWJ¤ÃìÙöÔûÖ¥oþj\H¥l_—0<æˆÞصs°xD#:zƒ¡Ê!ygÜOý{cx-;çB®xÊš6Àpí&0b^g‹®maJý,²y_ŽÏ0îÇbðA£Á¶Lz|´™ñVlãëUú‰Î[Y<,ÌþŽç·xŒ•™ ÓÎOþwûØ€Š™þ£êÍš4²1 œD”`8Ê­Ø w-Ø•3'EY ÝD…y!“õóKqÖÚf¶‚‘^dŸ([ }öêÄ›òm᳆U:œMºžP8àró¢\¥4%ù"Jît^úÆs!MwßHsú'cz0Ô»aâe§àüžnEìÈ8ì«¿`²Îã/S¶2Ö®º÷´UZ”®¦¬˜å (>£%m Ñn_š•Ý$ÓòKyJx£32»šeD$ Kå %ÒÄð…Ûßùn½_¶Ö惄PF| fUFécdÑéñzMó/Ç)²Á¢3C­s?Û¸¨hi†ö)n[s ³VŽÔò1uHqÆôÙxÎ-+Z¨r~ŒÍ{çh|·å+Q#õ‡kjú‚S/í$™¦¸UÍzS3´D¸ ~&‹çМËwk?ÿ;·ösNXãæEá¶y2w*Sõ{ïOú‹Œ#g\„Ü„%ç6£—[àŠ3ñ¹ôÚM9ü2œô‰$pàÆ8¿ÕÎ^èf_VÎã!"åÄt£§áŽ}ÝÝ}ï¼(ÃY¬ ®jÞúd["«Ñî ×6/ö¹¼:JvSo|(Xñ²z£?1gÎoÞu'5ì,_ëõÇ&“Ò¬6_¿+Ð9åoëv–uQ5ëXX¯²L'ÇQãF—F 3xŒ'õª¿‘€Ñ©·tQHãä^yÏ6ØS†¤CØÚÒ™µ{. ºu«»¾†'Év$Ó-¨Ûû±¿5vp:=ÝÁÙ–™ôs:´¢cÛ‹urf¿B7žÎ&{]`î£,QåðB©jÐUì*@³dvÇ(Ç›ìÈöÌt%‰+Xv––dâGÌéŒð ÀçzógÖ®GÍyÎÛx#Ð;™$ÁþþX³ú¹eª×ÅÊ\´É1ƒ”š¤Fy§ÉR0fzGž®}}+Ÿ5Fš_ù‡TR:”_@v…xø:" HQÔmä‡OÙi2 ÷¿3`-ñ¿¸JÔJ*>¾há1Ú¥÷÷Ë>`º<%gyñÚÒœºK&ߘ©Hô€‹op;–<¼}PÔ2#Öõ‚+×€T.k›pð‰í/)ÃIöžªïø«‘[ 5pDŽâò ¡úÉeË“H†ó¼^Ó²üÛHÏ‘Å[$öß*’×ïæHéåT!dO»g[·³bÿù BHéSHiUÀüST;g*³—Ë>âÜ4¾³ðËî.±õhSʨ[Fs÷Œ_\XÁ¼ÜʬíXÊä­-cE}0ŸŒï2ŠÞÌ ßî{N®§Êî[±ìü7{›„TNãú@½cŸ—úfEïŒbrX½=,j+û:±œQˆ[CWfë›Dlog©Ÿå¯T㬚ç=hÓÎyÊ{É–Æ¢çò‘²ï{1ÇüÈw©Œ…õ)vs—ìÑÜÔ'•6éX‡¾Ý\RÈnOn°ï¶‰…Ë1í£PÑ•â2«-üD­QÓE¿‡M ôŸã–25ÇB¤ë2ä%Òœïy©ºBŤøû¦e2X`]b 4~Tï€ÔL$¢NÖöp”|tçÿ™­âúI}s¶Ÿ.l»% sÓ 8Eñ&LÍ÷5ªg&fæK1ùJœwÄlÏG¬x•¼åVÁA®nÜŸÿë 2Y´-–ʼرO¥àE›E0*ñATÄF¤éËR|Õ6̈·®þ°áùÛÐÜ Ë O× mÞf7!³WÖV3ÄøñRY›˜ÉzW¨¶Žòg‰eÐÏ[¹xW‚ßVL1ªNÓf¯d}D›NT;‡ôâÔƒèÍžJ4eÅmÅžk‘Ú‹vB¹½(6*ƒazº «_{ò#¿Fh‚"; 4÷HûÝ?f±jf0]1f¸KH´80q úD.ªKêë(¨ý?!HßU endstream endobj 2019 0 obj << /Length1 1608 /Length2 12095 /Length3 0 /Length 12923 /Filter /FlateDecode >> stream xÚ­tUTÝ’-îî6îîÜÝ7°ƒ»»kpwww÷ Á‚»k€ —ÿ?Ý}zœÛOÝçáã[UµfͪY«(IU…Mm¶6NŒ¬L,<yµ±³£Š‘,£ˆ­•)àÃÈ@I)ê4rÙÚˆ9y@S€ÐÀÆ`åææF ˆÚÚ¹;€Ì-œ4jÊ´ôô ÿ´ü0vÿOÏÇMG¹ €êãÇhekg ´qú€ø__TN@€È UPÔ’–—ÐHÊ«$6@#+€¢³±È 2Ú8if¶«&¶6¦ ¿JsdúÀví€& k@7 Ý_.€ÐÁäèøñ9ÌŒlœ>zàd Ù˜X9›þEàÃnfû7!;Ûëߘ¢­£“£‰ÈÎ ð‘UQLâ<,ŒœþÊíúplÍ>"MmMœÿ*éoß̇×Édãpº9ý•Ë09ÚY¹äþ³sýMÃÙdcþO  ¹‘ƒ©ÐÑñæû¯îü³NÀ«ÞÈÎÎÊýïÛ¶Gý“#ÐÊŒ •í#§‰ÓGns ó_ƒ"mcf `eù‡ÝÔÙî?}.@‡¿Dó×ÌÐ~02µµ±r˜Í˜åm>Rhþw*3ýûDþ7Hüoøß"ïÿMÜÕè¿=âÿë{þWh g++y#ëøÇ‚|lG€,à¯óÿÅYƒ¬Üÿ‡è Ôþƒáÿ"ídôÑaó)X˜Xþa9J€Ü€¦Š ' €™‘ÕGþ¶«Ù˜¬@6À-ÿn#€‘•ƒã_|ª K›¿šÎÉý· hcú¯Ì?äù›7³ªŒ¨„º ý¿nÓ¿£?TwRu·û öuÈÙšþ×á/ [7€'#ëv#;Ë—ÇÆÂàþÌíý?äûˆõŸg9#'@ç£hÖ¿KÿïŸ'½·1±5ýkNTœŒlL?Fë¿ ¹Mœ>ýûµ”üŸç¿‡tš ¬,Úšð}KÍHsªÅÍžÓéïe…¶+iP-Ì÷«¶íñM Ûâ®0|© fjüÉóÖæ¾pb÷º'C·?Ò‹cEÝ“ ¼È#ò&§íËGß êøB¿À¬_‚œvªåy9/» ¥ÍÉ¢¾¿=¡¤¬_üCü³ƒÝîò7­¹K¾ŃŠIJýwìN´F0ŒÚ‚“Sª„£ßÔƒ£?†‡z®¡ûö鳿ÃSòáú$&:¹:Ü5˜¼º2Vód%O’šôÀ0=ÕP öR@í  [\è¥ò³oF˜4¯úÌ‹˰ý$®ÓsŽÃlêehìê6»ªˆàWü,üü§Ô˜¹3à iúïDÁFs#ëFJBÉA¾èß"á¦ß~MAš{F; ¼Ï~¦ÌNôù6È–ÆN~ô‚Häo®¦Y-‰ˆÿÒî©›wùhý&—}Åa«§1-ˆÈˆ*–elcpë7®35Ê#¯{/íïÜÄÐ4!òÖ¼Npj!ž¬ü¬ØYJÄ)©òc^ †.õ'€®,vXyA¨n^`Ú1:ìл±n÷¿R¿¾Áó4,`£0‹Î±–âÛ`û~Ç÷‚d #è]ìÇg}yj%Rꆞ­Ü3®KÛ‰ÏAø´Q“:îóսúybZ$‚kP$÷gçþå×Óßòçc¡ i¨YQÆs2¡6)ëñ¨YI–ÁêÉ>ؘÝ?5V³ÎTcŒH]"§žhˆDšW¢Ü$Cñ9c^ãÞ¤aÍ?‡;ÖÜ`³9íiû<.sJ˜KT46Šp|ø×âÍn/Aý?3ŒâÚãˆH~©&&—»Ô´Ú(lôÞ’ÄkDövÍUñâˆX;0 SЊ…'9t-%ÏJÕUµë÷Eø"UÀÛ`ÊrÖ¿LLףɋÖcps®ý^ܲ3Ã)1·.áa)°z#cýS´ýJ¢cFèSšºC/mònp¹\lñKž~ý™<ᇞþ|KD^+Œ:.TP9ÚåŸ\Š;L»Ô„Ò›‹Yô…R¾"?‚Áß­|?>ª<_ûlãœH„^Ý|wÅð—YìØäü:3¬I‚Ž»á´È¡ SÜ™ œh>ê|ý¾VMub¼k ‰«fšf@Ëͦ¶4  yŸoéÆóœ”Ì”Èõ‹Fž3Òí(Tžnôkvû—qëÙŽÐÚÌzä®úÀqù¸ ޹ •ç0¸§DMRކpðÁ7œOç$i­Òßr¦*1¥ßI{ˆˆçÙþ(‡8¢ä(µ\Ê;ÌÞœV{€õn—‘-þZ¼*±¹´Áv@+(ü&®IŸK» ðÐ’h¥`mãVKVm üTaÙ]:Iíþ¤žzc¹¹³G:1Uµt`!jZúÓ^CÑ\™{ê·*¹wá¸ú×õüöZ:Ä˹͌–½boˆ³'©âßëñ"#êjL¹ŽA= ™^Ùk4º¡ è˜z˜)ÍåtèCl„­«+來ÎëÛÅÞy»¨~~VVÒÂÉ©ó‰@…‹¡ºpy• ”4³»ä·¢ñë5_NñŠÑ¢ã7¨+uÓEÜ95Uqʰy¢_íƒÃ¥EËx¶´ž@ÐÔ>½¶£D✗îÃÏ6ö8NÉÈÌ´ÞÓöZµŽŸ4ÂÜÿà<½/KZ\hÛ¹ž È _‚ä/žþˆ‡ÓNÄ¥FJÙd®óƒ•ÊõÀF^ÿà{Œ`èn§GAÌt¹ØCöFFm —M¦Í˜¿ê®ÝóääÉV(#2Å]zÐ*rŽè³ìžs W¹gP×Á 2óî¸æ'Êgx0Òº®ËzÐ}¡»²i›¤Rî‡~Γñ— ßS >²# Ÿ¢SNPhqQàP?9m§!ßó |(˜+>EõíäcC>TsÒnÇüu \\&Bô§ìÄò›Ol<«WÉgù“„|ÿJôzÛZ;ô-'¼¼8VK¬_ߦlö—]kGÂÄä‘ðlyc ’×Äkß ØþÜуP>8·/ü6?õó™aV¬˜ùàãð<@‘.A4JßC•"}WQJ¼vƒŠHºN×í&8ŒnC#þá¦,†Y¯M©Åö–föÔÝh«Ä7½‚yæø^,šÊX%i–²c$éŽèJŽÙ’ã K¤Ìè¶ø.½ƒu¤h›ÃéöËÁŸßw€ûžžVQqÛîÞ­z±§xa¸°bkqV%»*òk9ƒyóÌvj=ÊlÊé¨0pµ ¾“ÚX~­N‚«²W¦ã·í6ŽnìÁ(F+ær¨µøxGí¡§¤åõƒ‰+šZ|)"=eÖUþnáÏ$­šYhWµ-UaJ1E>Â5y®¥!Xû^]sE3“íB A®{‰˜Z×Û´(Mº~Þ6¥É)ÈÐßý›{œÃ%Gcó² î3v³^ÃÃÓþˆ"@¯Ýˬ~Âï·=/ ó=mqœ$iq­õ{pB~L`ɰ!\µx}jV.”% ë9cYàñu•m{M0¤Ž$ö6åD´/Ê jföX¬¶bî]Ýý,-ž‘æïˆÞª'ªÝn¢@Ø&{†ÄÕkÞoÀ,T#¾ü#7:jÿ†b j…û}ÕÓzµ_:Õ¢R‚O8»™¡¾h¿GzÏH.P·G0W\öecJ«ËqS¨çØ BÌèçð¨P;Y¥CòŸ|ã2'ÕåÁð!/F‘0+zRý±&Ù‘&}r~‰ìà•I}U×FZ:îóóXE9(yÂ*ˆ6]Ýö-ß=’";æ½%•ªæïE‹‡†—&‘£~Á·«Ø¯tOã,´’I’5kÀcrÜtý¤RAÂ)bõ-ƒ±Þ‡ë¼4…†£Ý”Q|ªÄm!SC©U2£‘ œ:ù¾´Ú*†'hù›ãÓÓrËœW¶NKˆ F‡æÈñ)9¨ªûMhÖ[ëÇwõ°8„9?þQr•N|”1Æf•°/šu¼²3ÌRz˜iß©Qš÷ÛZÇõ´òŠÿ‰– •L¬ù·³Õb­ Ι_>Ø{) b§)ßâœì§Fô•ÏnE}:¾ÚÆdÐÒ{7ðn•,€µq rz]>n¸²5{¨e«¿4±’4Q…÷í$÷pÒé²wÜ 2V wìb <†³`w¹â/r]ù“ž9t‘£B`UJWUÃnÅçàmx¡·uAtY²WΣÂYÅL¤‡ÓÁ´¥8{­/€NMFQÏg‘Ãä• MŒV-'ŽÕšxÒ_â–XdŠ,ÞR÷`½ýJQë÷ùAŒïzà÷æðÇ6q…‘‡sÞCÖ¾v• K6õKÄqÝO"oå'…Y­[{பA¿.ïϪàel(¸>.íÏÑ$¨_,ùúgE%h®ñ7Cš™%v6îl¹ÖdN Õ+§iᘇ® —¼Ó. °m¢ÇMŽoŸAÒhä6·y?!ßë¡…l?›mÑ4sÜž)9J1¸vÖ^V³ÄpR šmêH×mΉ)³çò½“èîì ªJ[*¥W›oL œ®ð»†êS$ùµØOVÕ3vôÙ+â”rrf,ØWüîš‘u_JV³¾\àe¯+„â+aêLJˆ@³Jæ–b+s´,¥ê˪W˜ZO)cLf²R/lL*Ýa;Œi¾!d ˜É.š_æ¦Ñþ–©:å&@ÉŠM¶OÖ¢Ñ vå`²C: ªROAmTSVÉÄø¢úÛ™öW¹ë¥ýDN¥a0©9£qck±€ÌéN¶a³h„سVœò½Rô•u¡¾*-ºßjÇE¼ËÁä¡Î¦@&µB·ÀRë*šÖpÎûVW:u.¥‚×¹†B1_6¦‘I1¬î¼›lK§S<¤ÎÙàã´ÔÒ7#cóŸ3SÊ|æE#1 q=ˆ ó¹ÄÀ'Íuy¿£‘—5ÚÔdÕ®è¶â¹‡|z ™—µW»G–‰ñŠ»Ì…ÓZ^)¡€¬é×B„R’‡ôÒe5ŠÄ€Cf™ Þ®A©‰1f÷ø)(•÷Åf\V¾ðÁ‚ï7\íÜV-ò*Âl¨„ÃØ{th¯íJÜќȖÌãzÛ%KR4q‘¥œQñ&?¶Yˆ SíMq9—Û~`=‡Ù¹Úä¶¡‰Ô[±öd Ý£8]/X±ø2Óå¼ì/rÀSÅÁ–éí¡!Óe”¡ç€Ü4,~|!½÷-Àß-g¶‰Àƒ(2}ç ¯d³„%új±™ûÆ5—K`˜U N ¢ÉËAÏçôŸè50[tG-‹.ÉïôR(T prcž·ØÏûŽÒîÍÓ¿¤[zTdÓ» ÐcžTêˆG[Èz‹kéÑn Åi»øs<¢îšÖB)/ÕËgÂÚ ¤¯Ÿ‡3áê‹^5!½É¡5 –©cò8Ø7& {9ehâõÀqªÐsé³€èÛiŘ&‡b3˜omxØó AÐY†±'PuO‹’áŠÙÚ/–zˆ‘S)ÐLÙ·“Iác”Ï„!šÓy‚Ô‡aX£Öا‡IÀÖóU!7r­ÐÜ47˜’b³e`z5‡f4”+¯™qŠºÓ¡‘¡&cöÀQY¾_ÙGù¹ÁüXA¢°”Óªre[©á;ÀüµÉÔ>­R‰!NÇȃQ(ºìƒÅ.Xå°O9#lÿxEJ–Á˜¬šÈUDªuº£Å’ѽª¨{m“ÔS‘F«^‚4Ôe3oËð§†_ÆzÄâ–8€S`ûdŒ Á¹§¹Uô¥?üj©‚E¸ŒnÈ…-QHeµB½V‰‹ VyêùÓòj®VD©ЦJÈö'lI€¦ä±f¤áé+¡µ#Â8 &Þï´Qÿ&B¡ïͱZúv6úíÏ3O¸Å{Šì™¨Û˜–@O£óª„ûOKÞí Äí=æ$#R,i6¼à›} ae<Ä¥Kü¤E\´F‡¦J¦gÃY: 6ì)¶ ¬þYÅÂĹøÃ[éÚ¡V´îÏ7¸5CF}hú¢o›$Ù%ì>ƒÝ‡,LćŒ 53#;&Úú" G˜r=—Ê6§íÔ,ëX‚˜+ÙSuèo¤¢ÉÂxäßoÛ² ÐC%èXOêT[JÈwu26 ›AaÖø §\¨Éç“p$Ôö}jŸûÒ½€ìl3M$gt0ÑèäJëú›m!XÑ;ÿ23˜¬~¥`GNéng¢vÄ!¨ãP‚RÜ©l‹)“„…-Ý»À#[3«9\èhÒ”tAf) êc5•&‚ä„@ÚPÞ…K8¬›¿×”t?À¯ƒdábcVÞܵ.˜öi¥“/ãTÀ”Ë2¤+_ì1q¡o­¾Û#Jx48Q›Yh®¸/мJ.™{Ué4ªFNmEßÎZéç@— JiB0ﺧ±†<ñ0N^|Ú¨m~·6›çÂvŽE¾qré¥0¾m)W‹Y¬Æ¿U`ãÓI7¿|“¶ñrÅåAÒÖöyMBñ¿Ò-(ƒ[!⤑é?¼8˜‘ïiň5ÓN>\WT/\w ¬#ž=/®<£jû¸ xóRã¿5xÙ«‹‰Œo̵ôb›?^º´:J4ѧ»×KTË}QóМ’±¨¿À^´Q{ã³ 5¦E²Å›¯.জ­%y?Q#¡]Ø›uE ôúù>ȸ»GõÅK‹g ±O äm‰qïú³ÉPT>½˜¥¦ÔS¬…*‹ x}bµ˜KÈ‘yjÀÒ×_$¬0ÊÐ;»ã Mý„ª6{Í¥k4“2Õ}ƒ6Ü/Pʱç, ¸> ¶ª9¸æ5]n„3›Hî¿-óàú8/§í?>SïÎxÞ&±³¬¿É“ˆó]ßÐtЋn÷TÕ-€ã×ö™&Õ Ó2¹b4?äD^ňݲOçóðUi4:[nÇë—u;¯µgátÈÔsf–p˜6À~LË?¦ä–m«(…ÓtlËÉߣ€Vð¥8aÙÎ,¿ˆÇ"_ÕöùAFÛ›ëüÜm{™NÎR_ÊmD s{]¿ü Ãôë@Y“*o$ék‘*NѤœ‘§þXê'x”ñöxÑ2y¶©ÔV´Ÿ2ûdR>-wªÐ@ÚÙÎú;"Àzß*”jÛq°š¢o"Ùf{ÿI¨œZ$ªDça6—"FµvœÝïócß½5ªc„éR МÀ'-‚z*!«ƒƒBôC…_›»#ü$»aØè L̦ç鉗æq±²°Až?@4Ýà(Y€¹e4 þ©2–Åù½áOS(“,:[pS'FÅbŒÔRXÎ|ùÕB'¼¯{‘-§Ãü±9 ûù¤*<ê`??C!ü†€£#Ù/bRYxê›”mÐo3¾'•DgÈë]ª±q¸º÷r{ç Ó"²Ã¹”Ķtè.º‚¦é°‚¦ù%ìžž²õ+µ9ÈîJ¯¬o(¼÷®‹j é!’zø›ÅˆÌ`àlÙ¡qÕ8u1ûô5¸KßQÈ»µîCû©B C_ºPßPýí//¡â""\#ö;*—=Ü^¼â,^n¿;~Ãéµ»¾\uóukèAÅ~ž¯öôI^æ“[àûžsØD><ÍŠ¡0RþÔX¸ÆËΞβêL lJÝüÔÄ+ª,DE•4 3Ð ùc€¯INésIjšøŒÕŸ ¯ÊØ…Q¼Ü¢©uä79c?ä­ZÍJ…™ F Ò•ypÌ4Ö8nª2*õƒêÏÕFû6[˜ù5†ßk)–[Gy±ðÜÔ$;«3hÐõUªYÎ;\_nÞpfêR5…—hAQc18²ˆ à9Œ}g¶sœî‹Äø´ M*A²ScææËr¾÷¢"ÅA„üÊPâZ,>¶»!=Ÿ}aøßu½!ç麼£ëõ˜tH›Tzþ„ïvƒl?ݨiJPö,µø&%»pêÛè'¨Ç{¥•ñIæÛüV{KùÍÀĤ»ŽÍsõgžÝ("ý×ÇTR«]¯ßZë[Ä%ø·O\}!NDugIÏ.XdKM(}$cë\øž²òÎÏEX½÷ï )މED&AŒ ùsºälË¡ƒÅˆT@ä^ÉœƒÐÈÂÀcÂOz(ƒr›«á†ù@o]#1F]UA¡éYdÙÚÞN:˜2­fÚK'±¾[£ÙßT®M^²z4´¯qWŸ°nõïËoX"E(‚öαŒ¬,çP9ÝÙ#øS‚»6µŒ¢-å0~¬t(éÓh…‰\ã-°òÀ30¤CÔ#lZÝäÐ1<]R¦|¹ñEôCöÒÓé^M‹½Ñ­èŽ”ŒÏÚ9eZ>÷å¥ÞêéºSLŒµ¿Š˜÷C.¾m\Æ|¡¥Ó —çÀe¯“¦‡Z²òÉÚÄ&5üº…_Dòý¤Dn‘zŠö0wSM]1A#¦½Æ½¢`–íxz7*Qoˆ]Ü)•=¹mâÌÂÄÓËA*+'m¢*ûEb³&.t¬M„9ggì.³|½ñpT5h(ôœ:™:æqÁ÷B#÷¿ò" ä鵉Xä ¦5µÞ¯S7c4íÈQ²ŠÓ;Á¢¡xÓć²tÊbÇ3©2Oå¦O¹ótQ)»£å]0³$”*ª꾯Á7ír*Ös¹ôm° jïú¾Sê2øÍØÓ—à ¶1’v„ž»Eif¶úë4|Ðx7Ô’_¼qÉB‡‹ƒê]I ÐøõƒÒJp¢.¤ã ·&4A#[$*vÅÞºxbiÚ2×áÞ^xÀ…뢺~Cù²c$NQŠÝÑ/ËEÅòsrv‚ì/– £¨ûתdÍtÕ æälÙ,fï)ý‰ÀP§læLѯ,‘ާwëÚ0³ßiú9YÞçÔÁàDë€-êš/. ¹ ¤)¶Ô´~("v30mÁ-uD?fË4‡'=·Q)¹êÛKn\°ñ„ —•¶µ9¢a„H¤ÌwF!jB†%‰ÐÇب{¾ ^ëÔ Leû¢êÊ*1U$U†gU-à®n\ ¾¿z„Áeé+r¨˜ñµ©áë³®cØEÒK\èüžË.c¾|Ãc!©†9¥s™üºQD½c—b.I{¹x‚“ŠxÅVˆ(ÔD ìK¸ž’Õ YÄœ—˜Èwx`ñJ^h ùaãw¦P–ÁÓý^r÷ÍØg¾Î…eá–8b7ðÑ+8?þ¼ŽSV’RýêK–*ŠÁB<³Có…³iGh[”x^W÷£öJþc‰ŒÝHkŸ=ÅΠ2B¼Õ)Uðª«!v3n[dfÇ&‹š+Ê»yêÁüRd1þ¢SèâÔ‘¥‚£¥©»=ÀƒAÖ¬¹ÎN~/”hC:tÕ" ”µ-KšÇýâço3Ñ^°ƒ ×ML°öƒâ?5a¯Rö½)$•êû˜IÈ" }tƵf8yôôsŽy´tÊ÷Ê#Y¦§îâÇÉžÑZ±_ÑÎ1- çÔz? G¼³g½¾ ÞîÐóm‘¥,¡L¥ƒ0rQ~©Í®4 ­ ºË}kæ—íâË¡zóº2Á§°®„?p6Îúj–õVÎÓøz)âŽN“A³ÂÖT¼®R¤ÈÈí-½‰à>ú•ßm¯3µTÚý=ÀZÑ|ŸË“B×å¼öYÆ0ÃŒæ×•({ùÕv #ǧ e…Ô±÷Æ ‡; ;»rk0úfÖO½ª¸Øì¤cóVêbäÜgncVu-í ±¨Ø=v½kFe7úŠ0Gá‘–SŒ×—[° §$ùÎΨµ³:†Ejø"ÚÇ*óÚtT°ŠG[Ä“ø^Ï«*c¤r7‹.UI¼§r+ÛX­e5:Ǥá+ü¡¦u½¥ú£v| Œ£»¯uÖýú‡e¹dò¤6o[‚ßï;— ,ݘÍ]-ÜÞ#Ìv•äÇJ·¦n ëq+ÎuŒÐÌ…I„¨¿®%ÿ¹‰†4á?X€)1B|Õ'mâܽÐë%È)›[A{¾¾ŠälEŠÈµ!“ö˜)®Ë"=â+Ê÷3“jß[׺Ü5ê†$»#y‡Ž¦ùù ©£ua ê–†y”_G±ÿ˜1Goxêåª ½®?ÒMÍn晨‰ \Å¡u^Y<àò¢Ê‡1_X:$6ßÑq|%ÈVm7A„iAÚ_>¦¯]PV¨BÝ‚<îBø¾¥î}ÊùmoL åúœxfÃ-{®ˆÅ7Ò{u[RWơȜ,}v¨ãk@FrÖ#}+P_,à,O[b¼#ãî ¹9zçqÍb9–ö˜³,Yb½h4q:ÇþÓÔóÄ^“¢«\ @ñs«d8—*’Ã# …±)<£Oô MXŸ8ršÙ©nêäâm5. ÊÜötDZÈÒJb)˜ÛÐmIÂx‘kŒpT²ÀMpÍŠ—–±áïbž(séη’-ЏÈP˜8Þ 5ÿ¤ë›`‹l‹\Y¼Ç¿‘®¶ëùîŒ#xûj|õ:á{x{>á\C©ÅÔ¢KÞ z²š#Q¾—¹ùL|+¥q·¯_lY“Frjšť¥áƒ—óL„Ñ f¯³–ƒ™¢–¥hn(Ú TXRzå=K¥ì :#>Ý… }Q›êóôµq|{Z~–ëA´Ò%m@$u|æÎçP÷¦»âñg3SÑÚBÃ\™¥K†uq¡†ª›gfÓˆlUêeÁz¤ í[?¶·²ÕžðŸµPr·*Ds+X@bÊð3°ÓбÖ3D¢*uά Š Gb _ÔáŒ]þ²sT„äÛ—æŽjï}1LÉî‹T`aœ“»…à, p‚Þ4˜ó«ÝbÕ$´¹6#+ñüµŸÀumnðT:Áf"×ìÌ íS'IÊ9zŸíŽI|ÄyX|°IÊ”äX{ghWÑ™Ì/ùr‚t ²´ 4È\—1P8bû›MÕ•hp—˜ïJðªØjoÇ«òŒÅTª«,u²=ëÿd(Ï–^9Á¢# €£`ãˆÔŽÃµ³Ï]9Ä Xiª…‡…÷Ä.,³¤vhgt*EO3àú5ê“0¬_h§´Áª9;ŸO¯éÚôErŽ5XÒÞMÑØ| AɤJŠúl(sf\®ü¤m?3‡eDÒÞˆ-㾆ý0¥€2eÆÙK>ëÌ™>º»¸â‘mýæ.ñ¶ ß}ï>M‹<"Â,²&É%ͼ‰Œ•8&»jø¸ãZ@ìí ‘˜%¡óúäeÚF0ݱ>Sëo~ã_åÇÊP‘}w>9€1ži¢)áåÕ˜—v¶EO¥?ø¶l·[Sê5µ|£6È¿.rÈæUØv‡F$kBò¤&Atº6˜'"Éd*tž•%†i$r·fÔí “ö&ŸŽ¤TVÂc¦¢Uh~nÄwØØë–«Ðý†ß÷—ØVðþåì¶8€n.¹Z Bß*ÕÖä0x 3`% ë£uÛc™¸µÑ[z³ïQçìuRT7ò­NO£NhÜ.J{[çæÝ\P6RˆP:ì¤y4“K–fRSÐ: ªTŒèÁ dã—°³¢úb’Ž©¦“t•T[lI³ß8‰uR¹u}¹[pº4é(Ý&ͱ†1­ÿ*N@LÓï+.ESkª{Ôe1SÍ © wèÕ`Ô#?±MýÕIѰ?àb—*.(ɤÀœÿÖ³A´½áŠìÃ7k¸œµðIÐnîÁdŸj](u¾01(<=º”Ø»%Ù‡òn/½a\ÒÔ˜ÎRùÌ.sË}„wt}ž<×ïÖ¦§‚ž;%;¸3Ûp ¡dhó0Å4„]9VØ_åÓ*Ž<®°}d²ü‡ë ,J›ÌÒðš®Jؾ"vu¤£Þ¡C‹¦}Ó2y%9¨¿QŒáO"ÆÐ€‹ŸÏÉÏf‚èÑeXfùdÑV¬Ü‹“ñsê2ó).ŒhÐ0&IGÞ#u%¹ÏÎ`=k|r•tÐI…ZNéÅÍ›Ç,½oÝCŠÏÕ®!…÷cW•eº*¹Ân$û¤Ïv‘fø˜ÊáŽìÕô>Õ Wü¬t¯ä©‚@c¦XÊ¥sTi˜CŸ®ýy¾â¥î˜í;Gù~®±î$œeS/Ep²J2ºÁI*¦šöèiè…íkŸZº]‘/rxGNfòöé pÇ^톆«œ,·Ò¦O mv¾2Ø`–}‚¤Æop· šgs¾ý/\ú޵òádPf!ïÕÀWh\ðƯ&0äµ k˜|È­¼eÇSütû‰iðë/Â)L Ί+M`JžkR‰zçÙ˜wHÍ`;%Š‹¯«‘ÕÚ…_g`ëiÃË,kÅ™±àƒ×¤òZ࿾öØãº;oq:Dë×áÐŒ ^e(|3zµÌßúcìñ›¥·dç¢ÈÞozñƒ“ié`@œ«wmôÔ¾³ç·}¯‰•÷á-Ðuešw7»À,hnÝQÖú.Ò¦$ŸÃ8¤™eÙ #@õí¥Æ`Ð4è†Òu cšÿHÅ}/ƒA¢e–ø--¸r¼2º6»Pcõ§'߆²Å^B„œ”€®¼¨EŽ]qÆËß ¹f l&ì\¢Â'ÞDÀëqó n¶Ak±­‡Õ9X“76ï‘Iåj¶MvΫ„ßV¡f&©¤Nž*.å\»a]e¹;a¨štqЄ`¥îkä—9¶÷–°ðù¾ïxÞT·ïS{òüW/gB_ãrp¦´âd{¶ïыڴÚB]ãp}x¦Ë½¬¨›|ºw8HˆOYt¿ fØÚ™>·›Q[ªqŽ.[ |f^À‰ Úî-‰N™1Ãí™…s%e«rŶ¾Å|K¬(³ÖCƒX£/l󀟹¨DÖzDþ\9æð9·±Á:WúÛT“Ë 'âÏ*?– YœDXÞ˜Þæ6“¤ŒîÒÚ­§‡/¬&QOçÆõ(Ô´Ø?Íö„0¨r’ð,(ÇLú½Îm‚—ß§PØVÃû·É/ßDñŠe]ŒÑ wñ­S—uMnl¬°‡ú‘ym ÁîÆBIž(19šÅ2‰tî„…ÝÝ"m&j¸poÒqcQˆ‰£HrÏôHà¾ÊÀIimÕ–g@û±ûÅ®‹½Ç°³¸çN??ÐpùåÖóáÁ&ª3çV.ŒûÔÆâÑ7ò˜S/F=ÒN¶h- ^æâYèOŠ ‰Æ9uS£çœ´dUüíÞ¯yó%t¢³ÓüSrdc¤œ!UºV‘%•S"šúñA® ¹ú!QÞ½N)0/Z 牤ǽ­w’ÒH¡ì$Pµ2áaÈþ+Diò—‘ñaó+h&f Iy …ðâ´`a­àP.EŠˆ€nô‘y$-â%$Éì¬ÓÊb¼C|‚Œ]ŽŒËUÃ0¬0Ør™®‹`8Ù çÆ’4¥_ìäÆÔlaï(>Àÿ—? …üŠØ×{Oó…ÈËÚæÒgE®Ã'7%ܪ۳At‘ÈÝNÁÑ"ÐÕE_åAtÊ¥OÍk:Œ•ì ‘ñ^‰Gâ „¶önU¤*îã]<=Uœr"GošŸ±×'YäYŸÏYø®þÅ•‰¡`0S³´žòŠ,e__Î)MÒd­k§2C˜d^|Ž 7ÀŸ$ËS‡¨>e¸8‹'‡íKSÊáàmè35÷éŸuØ¡c´²zÆÞChWtÀÃÛ­ û9ûÚfàj©+DÕœ¹x”µ2+UŸa#¡St$(`O»eB,¡CaœW1K;¥ˆ¾eBûö3î[Ï{h£9C[Ú7_]¯Q-ÏW¦´Š’õ Ë6=ྨÐÇÙõ/ך.ïHõûæ-j,êsü낯gaQ"Ûè1Ë8ÐŽ–-jðGÕ°MÃÊfÔ"Tåî`šÃ¯~^åqô[]$9ÿèXù¡:R¾îúè…P¿ôNsõ)pUÆ›+ß6ñ˜w"‡ÇuÜ$é+7­¢6¥]>Ÿû늦ýÃ¥§¦®ˆð|ìl‘„‰ÜïCªM_¿IÎz¸½¤…&[_U¥Ù¼@&ua_u¢/¸HM/M¹”˜KÿZ Ȇ>‡Aëi4Lǵ`§ÉzâÀ«sI>«Ìú6‡Xm5ºG#9´FÜÏöX=¼¿]¢Õi¨pbÔSçCö—~ú‘ð‹óHo“‘šGg†ÐË|9Óï[f0Áø3ÿ.ÍO8Ý•¼Å?Maks[CóÔܯ{_ÿ¶Ì’è endstream endobj 2021 0 obj << /Length1 1626 /Length2 14608 /Length3 0 /Length 15448 /Filter /FlateDecode >> stream xÚ­wctfÝ–nlÛycÛ¶mWøÆ¶T’JR±mÛ¶ÍŠm»*I%·¾ïtŸÓãܾúö=Æ^“ÏœÏ\kïEA¢¬Æ bæ`”t°we`adæ(ZÙ™¸¹¨:Ø):ðÈ3(ͬäpbÎ@cW+{qcW /@ hšXY,<<æXÚ¨^TXãбËSiô^ÆØ4ÃûÑîµ|îøûP–öh¬Ë–ª7xOàGFÓ_€ºEÙÉEwÌô¥1ýB+ÚçfI~B—“YóhoJEõKÉ;áL'›3ÌÍ M ™{A ù³#’¿ijÃwÌ.”&´ºÂó ÊÄÓ—gª¡ñÑ‘áÞ;ÈþC|ºœï°|ÆØþÉç$I®^FΦ¯î\Ž ãnŽº²kbŒñfÍ æÕ[´™LƒtÕÚŒ{˵5Ïv ÉšÁÑ¢vÏ%â*nµ§ õRN­CCË„ q$å¯q}/1Í®_ÇŸáæ¸˜9˜ê eÙªêÚ¨#-úÐ#Ï@ˆ!Êä<ÙãÆ½X9’g‹‚êMü9ßM2޾»ûÏ@yEÃy® t2¼Ü!›@­kWðÃÜÇH4u®ºáLS|MËá•ÏãY÷¦¾Ý3MÏCƒ~ä‹O ׎­Þ5áÅ+~&-|ßÎåe¨™;]·†õ‚Þ±Z_ÁH?ÚNÑ~´¨bØúÀÿ\ ÁeœüJ°Tpr·’I¼hX¨!óìî›%m˜á‡yï“cjÕ„]FÉcã“JóÝÖ5+ƒÞËD¥Ã»iµ/þb(ɺ”I#ŠVÞöf‡'r|ÎÁ0ã8#”«26k|!Ú:ç—uúZèFË©‡ëGˆfþªÏü[ÉS­ŠkNsƒÅÓB X¦¢CÈ;­¤z;^h¤¡‚ÊÍu~ΰœ>V &üŸH–ÏÞûøó¿£‚è¼µ‰qN pã€ÂÛµrˆ]Ù:Å: ÝC±·¶ðøJAnGd æâ”0\wÎnPÕd¡&ã«§ÞîaXFH‹ïŸaÀ‘b³ë²:Ir[ã‘£dI¿ØÅèpòÖ©ˆŠºitXMÒ?³'ôpÀZ©¿ÿ.EE!œÒÃ^‘¸ê‚çâûå»î­ãmn½çÅ5‘åWÛ®Üä½DÂUØϱ®ñRFmº9L´CAnäÁ RS6n˜JW¹±îóÑô+E¤˜¦‚¦Q~N,"áÄ`ðÈw%¢Nž¤~–ºþ]­‚茫ù@ªùžx•\#ší;6U)„*45‘1úæl&XùÝ.ê|~“="7_zøÌq CãM ~ú‹c3ükµ¢Ajvô©ðµ +ÇÑüŽgÞ .>A¿»@lÙ>,QÑžà|ÂD™ƒž”Ï–nW¡j í"ètÍV“A:&­N¤¾) ÖùÜL/RnáIËçLɼ„ßs8äÌ …ë®9—Ž>®VruëQ®Ê(öR`\›œ0øcvþ•ÜÏXjΟí , \×ö»¡¸¶5ß±’lwÌ©† GгµÏV²¯œ©èÁ·l˜Ó{/ü“C{\‡Hy4B5í9Õ *ñë¦ d)xšf‰íÓ´O„%ii¢gÃ×”éËh«zÎu‘sob0½B8[+ó (†»‘låMÓÄÛHñ¥Í¯‡§D˜L9Øh¤kä슮;ÆNQ"²îmgÇyדýÌÝ“5\Î<¿HÛ÷ƒZn£+[ÌSR¢`ðŒÛa³_1ÎðDïø¢u~Íñtñ2:#¨à”NjëDW>(!i5WfùÒoX£Âøå—}•®LÍŠu¬ÊÙÓý+ì`÷Ù¯ûÈE8EŽòÝôZØ<“è°œt~o;·®»O Î4Eµôœvk¿–Áëâyèê*ÆnÇ÷Eƒ[Ñõv(z½]è0ó‚ak–°œv hM¸¸ ñ)ÞàÄœE¬lÃuaÂÌàÝ´;jØ›>bÌí"Ù6heEfÁ\Q! ›µ0,oøÍóé5±#ì:Qá>’!Yî6ÿþÜažVîup¥{‰p‹hÌéU9•] †.ޱháò+ÅÞ ¸TõY9ƒ°0 ÐXÓ v«ÿ”viuÞžÙk#φ¹dNZXÜTZ©gS¼9àŽƒC·« ÖŽðÅlXõFÝapªB,TÓ÷ëøv¯’e;ãeñ—œÙ£ÜK«eVÐ<øêÎ&¨/£¶JžMG(Ù$*¦*3.Ö%¶(©ô—T¾4›Âðßuô*ž…QÜáêKs#Q›Pqcl÷êþ¥TÌÊÖÇì×Ñ]Ù ¥;‰è›h»yB¤~^öÓÛ’CÇwÔh”(¹ù›êÉPŠè71îª*¢â¡S{¨¥Û¢Ët!äèIŽw«ù¤ì¨’|Önœã\8ó ¼Yî5¨ûÞl¾‘EÐÍ4*ÕuÊìL.ä”NôF$V2žÊØÔ¬õ°t`ñöÁ|¸“0²é·)|ùdZÔµñš“ób”¤^½ŸÆGv¦ÎÀ†ùf‰½XÐ"È2¯„ !SwŒÒQB¤üO ßGÅäªf\CÛZ¤–bWW—£Žj~w]ò/§ÓÈÌɵÞ’œ\é°•)GŒápØÉÕ{²Ç]ñ€²¢I2œ>ì«Í´Û­—Ù’¦£¥›åV;:ÍxÕ Ž<Õå~\zH”n·×}ŒVO<ý5½Ì5æí¨ïõôœF%Ö(Úºev«RW?þªr'É(pÚm·%°+¢´ Û'ɘòѳÆã’ég§}I“1?À7ÿÑ¿zº^([c°Ç}Zˆ1¦ð4Ê^씘çZºÙ RšÅ§ÅÔÎ5.øÂ¾Œwb5f!e/ÙM¨)U";;„0ì½¢NÍ~»rÀû ø¬wZ­¢Öc¸ío,¸ý²Ú1([ƒëÏTшoI®¶ÿýIn „#QõÓÙã…éK£Êƒ$[€Ä*íÖtŸû‘âÀª¦x£OÉÍš°­/‡o]êcÕ·g&b?NGTj©z™€7¨›¬|â?‰Œ ¯Þ{6ƒˆšyý0$Ðm}q“Õé?§8é­¬ìæÙ¾‚ÉcûqòéˆçÃuúvñ–³ᵚtºyÕìMË<±Ýú6A"^mMVV¤0`kiè*$bTžR-í'îö_ “©Í•Æë¶B¶Ã—ÿü†§lÒ±×Ý“cT]?_Y›F\j0,0z³¼c ‘ [ìœ"¢ðÒÁbœ=íÃàGùUò°½ë/ûk¿u(û%(1“–:ú‰fq%¦Ú– #;¡ ïóg)‡´ãÆË£5øeÃk†–÷È Ñü¨öü†9÷ï²î¥mâý=c³:ëdËìï£ÓËZ‹wìÍ:Ò¯H‚ʕۢ-t­¾D¯5/µ¸Ô¶¿¬ísdk>‰»)ÅM®'(Šz”“VÃ(QYž:ÀÅ.h—Uîüf 7õbib!:ÃÃeuNøÙ²˜K‡ ‚g¤4'0–W®ùN¶'ªjõ• ÂÏw Ži>æ¿´cŸ?xˆ=›+|ùÂE¹{?çשÂc%Aa¤à ±Ñm!ä5E8€OUùªöXÃh´þ=2ëSµ‡Œ;‚ˆÂC,áᆊЌuùÜCŒïá»—Ô‰^µ^KÿKÖîã+¾@7ñ\s_Žò‡Ï¡Im” ãYE”·‰‘Ÿ31³¬ÐHuß³0rí¼òã"rÄ2³ké¿2먧|Ï1v¯=jÍà…U#Ôst.õÂvüøýªlµÊÕ¾¤÷N@ r$¤SÿÄ»ºT6Úäz؈A‚ÉLWòxj=Ÿì ™Z_øVL\AG–ÁÏq®Ù—¹G{‹öU6]âˆC ×råsK8”Å6EÒñ(0’k7Y‚†®Pp\G¢tð‰WƒƒVS€Ë¾.{Œ Pðß-J‰+°‘L¦ÈγFöT}¦Ø9`Söåi€{ÇEuØ8ÿÂ<ƒL0#>ËT¿Ÿhh!Ò«¬ÒŽJI©~=ü´I‡¾€ÙL`j¿°âv(‹e:.Ýrÿ–¦tý¡]€ì)ój± b";ÒGâ=”öµ…áxléHŸ#PÏ‹).Í ø¨áQà€Ùº]²“±¨0€Â%m†ˆ#“: ¹!êt²=Yþ+@m¢ ©D½Ïò°1\BV{rð·ÿó\s8+Rج”LxkëÒªa˜ ˆñã iRg†ž&–Æm·á»Ï#3 Äöo=PHÔ“wãuÀ¨. X²m]»t‹›Îæ­UâÖY*@™wÆB)‡Žp–D{SÉV+’>W­ò‚S–?=æ ñhv2e˜â./ºF+j]D陉ì:£^dêtº—?ß~_ôžƒ%4ØÎ1U Ëúɼä¥ùhІš9ë J`ˆUŸÕW§E˜óОM/”-E¡¶jì¨,d þ fvÂ&Í?FoÌ»Ý1ìÍÁÅ´AV"óAOLí²iöTÅw7&Ÿ«Ñ­•ÇÅÿÊ$ÁDgÛÜï¢7]q”˜–„˜Õ([9/`.D &@|š¸•Ø$s7Ôç²x[vêç7Ï·NÁYµ/Ã’eÓ9„Ó÷<ù`Ve§4D îߪ\<÷Èøó¿3ç¿¶ñ$‹(fó€$8”Áxs ‚Kjª¯øë2{¢5µÇP²™Añ!Ép=·œLëR ƒà : ÌÊoìðÒ…Ésœ„‹[Æú-ç çØ¼ ý\óU¿˜#‰œÉ™7ÏÍU-Ö‡-cûÀÓg„Vߤ‡÷Ÿ ´:"}Öö:õÌŠåsÃË'ã„ÓtË ÑW¥5=Y´£±Ô!(‹aŸº[¥ÏûW}£Fg ÑÚY ì!j?¹œ¦nÿÞéLHžHHÒì0h}oÁÏe¡™o¾ÀÔDr kéS3¦eƒ–*þª¤ç‹èÁ}Y±`**´ñûý$4xñiv{ x‡o„§ íüêÄ" wiX6tQ}2ö„©Uˆiµõ³nìwÊ_‰lÌ8|•e Œ­ÈÅ|N­]¯Ün)mí‰ÈãLÔ¢ü–òÞTú‹×Ü¥«÷|MúîU.'Íúª/ &…c_Jä~®G&ž¤Jø¼ø‡êÛÓiP«­èÃÀ×™¥nʩ뾈 T–èFd$Æc’¨@ÐÑeW”þÐuõAdL;%#$žŠ€b\3£:Rpñw<Í®·%FmãGX_&M.~1é{SP™ö\ÍzÆC¢D†ÏDªH²•D¯Òz†NÌ»<ú=/ŽýÛÞ¿öYPcÀPËQbpŽ^ï¼vS2ϲÄ$ÝÈ#æßÍŸ pÆÕIŒªòHYyH‚ñôØrö%§õü¦”|L%khH/Õ½')^èTÈê‹òCm\K†u)Üw7H ™LŽzòŸ>±‡l2Ÿ›–-BU®Zo°ý=ÖÎfl9USí&%,£ÖãážÍŠö¼(N‰²ŸëG €/9~ÕQü0ž,ä[yvÁH+ÏKï\5ÉÑ|·Œ•á!ohk9 Xè‡ßwÓÞ R£øÓìçÙȦ‹ÐÜìpú3é+RhžÊÄ—­ñwÁPqî‡äîÊ"Pùvü'"ŒK%Mî¬b§Ž5Ùé£ûS¤ß…Ö½¡.ÜI ¡gêÚ³ê‡(úÐ¥!CmËdíî*ÎËc\ʼóàô·[嫃ª8 ÑÒê*ž30J‹S ^6%ø‰°Bt¬dÜ0ŒòÐü‹Èà’'8}ºýkÖß²/Š{¸@â4 `ÅqsÄÝXÀl‹x±rD/' ç‰GÙ å•AóT_´Äb. Ÿ•º¿µ]ÐgPô:±ÃÝ\ ^îÎ÷Ý…}=+‚ =tÞQ7 óùe*Åˑы§Ý«bd=ßvÒ7*'¢‰;5v‚~š™ŸÔ¢1‹½kª`•c»V¹œL-f<ǹw5ç×ÃÔ {®”7=â¤gµŽ^E“GM…°­GQTÂ@+ÀÂõhå‘Q´㚌¡X»ñý­Ayí†j[yP¹âµ`®² &þ–ç@ŽÙï"0Àæ qc»H6rA퉗rs©+oÜ`½$Z àâ>Ï%~N`~úá­|Á+­š~®ÉæPlµÉ¯‰`Àç5l•{Îô¢UsḬ̀e¨£1nìÂ@pëõôâJ$NÏ’¹®%프°Æ(Oâ×þô#/°¦)E"$ &«¼ó¶ÎxóDË&næÇ½ÌR°mò"•éåÔ¦!SKÇŠ&B[*ÃÀ„Å+0-˜ÝÌÞl›êßýÂû\äÁEY°U4  ýxñUu_Õ™’܇YYi§øÍá0—Âê ãqBšØ8¾¯¬BZŽª†·¦¨Dëžíž‰PPx…`Zü^nì°b£0^óV5-™®L[$1*ŒàûaŒ NÕ‹±l­"ÚptCM›a‘™@ …uï æm}FÅ{Þˆ@àZ,4ÝôéAûy“yüXŠj[±¬EÑ\ôÉ ÑÞLÏIµè2b;+=¥56Ș:m³Wî‘Úý¥&/0ªgHF«iFÍE`e}û“(r%­É¡ âR‰ZŽ—äH°/ÕZñ«VÙûÉFYéHbæÎ "óTþÈýâÃјɢèŠîF/q¢vÐ6š¿¨©—4†Î¶gïM¹È‘*«1Ë{«þôKí¶Û[Yýt÷ì¼Û6ßH»ŠTØÖ‡”¼Ã•c² dÃ"… 9i]ÏÎþ´ÓèÓä塸'ÑÓ$§pï{Òu%ñâ£O˜ Os'ˆ<ÄL²®Dß¡AIo9¥ Ñ•°*Øð5¼pRk>ë9Ÿ38ˬJ̈=J´¤¤ ÅË»oTÉJRT„\&9˃m}'Z >Ì «'¼BÍÝæ^+><†YéN}XŒ÷­E/§Â[j;U´îôUÛ!Æ š ‚õE[Ùò’íf7‡¤§É/>Š˜V F¯+(> þnìÊ;õFbGÛ$ª7'¥åRXÌ~îÎVÁíÓÕŸã_›y¾º£Ù¼ÜDÊæž— ònwªÏ`oÝ?W«Ù`k+ß²ð±ó+É (¶ŒâdîÜøäI ,ÇuK[€ïP”{¸½ûus8GTœtú³A’Ôí°Á p7[勒'Pæ\%Za£ÏªgsJ.¯Ã<´*¬÷ˆBC÷·½õÒ{Þ`AЩ[S°Xˆ|Tš å4R´õÇo_I@{[Nö[q*GѧespDoWœßË4¶Ç"ï¸Þ—)/\yÙ}²5U„0Ú`U4YZÄÇÛ— Qª+).Ø*%ƒªÇ/g¥ÅÈ›' 8L“Y…4>Ynº|o`᡼f'¿aˆÑ±sE¥ÿ áŒJ )› ÄYúdþÑØrtEeÇ­/¿]0¸Ax.µNÀá‹,~¦&ÖÞòéZmLÕ¬”ÿ¹À‡=Û¾ð~$7Ʀe<@ÉXãsŸDu_ ñ1H²Pù5LeŸÙÃ’ß òô~m˜ŽRuC1\‚r|Úp·«’C"Ù²T ­kñÄ:\n“à®övá|ùÜåVQˆ(ý²[9ð ¯U˧ºÈ„›|l' àuvs¨˜9Bûo(!?Ðú6¦»«3Jr¶þÉqd#|þAöŠò•ý›#A¹î˜£Üéìb:>p:ÈYìråùn9>\\{-æÃ†pât\ß…;%Q$»ZbºÒw9ФxF…Œm Š´ÞßDë6ÎÌÂ<›ûµÞB¨ç?ß8çq8”8‚D8„·æ6%è‡ d¹`õw`²¹wîÊ}ȹößöÒ‰îОFɤ)üÝYž+.-¡§ëgË(O Æ,ˆK@«æ˜©†Qv$Œ ¡ØM7þüE31(ä~ŸÂVHxõî;qˆ„ýkàÍG¶8†+q²ªXvr‚¯Éb¦×–w·¡G !Lîó%'Ì"àéÁdò¯×Éj¸QÔ³–Š—{²:'Î*+Ŭk,7:ìà°ã”,e8ÆÂYŸ:_CùÑÝÓE(;«Tõ‹twó·Cx;aÛæ©~dœ÷xEr‘·—Me2G×%Z§'ËûîÎëZé %É+H8iZ‘ai ¥|6ƒ÷²‚'ž¶Ouª>öYPj†¦¸óÎ(@õlkÛ$?ud~•ßJ–7Wè{RÈI«Yx„¶êÏ+¼Jô4A(‡ý„g󃙖ý/Ú}ŸËrq³Ð–Ga¢Xƃ±”°Š®cÁ?³ P&ȼÉõ%˜ÇyC-ôœj“¶-صb›Š[˜ šdN,:8F^ß~§á ¥»±cüDù™©ÐÅLÕ8q?r§ òăñk¦knßaÏ=rƒoÀwMSY,Èf+Pó‘Šc –xíµ6^{è;N¦î–>žö­$éw&3Чþ½+^¯WU½H§©o×î-s̤c“ðò~ø—â‚yˆ+oL“ó¯SD9ø¶’ºãïÏ2ÚŸÀ ©åÌí´z 3æÊ £ûïHéó¹Þ0XŒ?ÞluñmQzî7Õƒ}Ó!ù£] Å ‰¤ùÛë«ôßèsúéÃÉnÕ? ‡eö2ÐZ,°ô‚ÎÇl2ž˜Q¥?ú`ÊÈxÁ@fbmÖ8`ûs¶’H_|¨zØ…,Udºtç`xM©\ÄN:ˆ™²c¯:`o%iË^yA´„zÌQ¶ŠæPBÚÜÁ ‡ô@·fmu µTRäǰ‚×#ûÅk¢IàÆ™³™(™ûÜF#ŽËzH{ýóF8†PIsw:î³m¦íªD/lÞ»’ÍBÊÃRþDÝ9šâA]” l ŒÝ¸H¸D ˜$E ï Fð¬3¯{nû'c4ÔévQ÷Ÿñ3#ÖÊåì_~ú—ŒúÞvïâ­}·ß  ÄbR¼0ê‘îè5© aF ʉŽßvŠ0tq‰@ú4Á¦À'gcûûŽ­tK!…5=î$SëP}ÿŠsXt·´ñ^½ÀNN9´,2uŠPDWæK2ÓÝoù@nœâÄ—ûªŽ}?os ÷Ia÷;oÙ²€vødÔõ‚]º ¨l ^2?Ý nlX‡¸cw!=Û@P,rÇÚ´Û4 £Í@ä"˜ãó DGXÌ\œ™CK´±:ºŒï²hþ¾i³0_ñbÃß2Ù6ÒŽ…¬¢äl ëGÕÚjÓð4‹8”È],2á¤B9CzH÷7z¿yùPÔx¿íÁ@Óüp8/À*Y§Dƒ„{Î(#€‡³ß²|ýÍ·¹*¿q­4Ë&÷,rÝ@‘ÚÝ·¾zµ¾ø~ÇÙžø4»¡LÉêÂÉí‡ ×Ä”üzÓK4¡Å|äXHA[³Á²x=æ¢Ý‰eˆM½Ê’ѵST€opÄÙ(-ÑHËœA° XÊ{qCZàým¦è@¼?%Y¾6IC֢ݤu?Ê¥^Edy(²‹Ý·¸†9øŽ;ä×2WXïÇô`ª‹"Eû¦aµªžsê4ìôßÈ.™ÃJR¡)ŸKûk`Úïoj™›y³ÄˆÔ‘?&xñÚ^׳`éêÈQÁÌìŽ5 wàŽûòcÕƒ| Î0Á°ÒlúYO¬eA˜ ÈP˜–¥€¡‰<¼Ý–$€;;ý"ë§->§ßQ]"öJD?³Š{0_S&–\"¢Üà"Öo” @ŠKó²AwOAóçôµ9 N\xõȦ)‡°?hÞr˜“¦²-´@X¼¡i ¡~ÖáËó úÙ˜3’°+ºŒŠH÷_–EX¤%æÂÝø›=“ôÀ‚"´YŽ àÅ pXÄ'¿áz¥pËß‹Gíý‚¶€EÖm4 #œ2Ì—]ҹȵ‹¾r„ˆç6¢½xn>Z>•H ìYö(’"Y‹æÝ÷%!ˆî÷wÿM*z$‰CfæþAÕÆ®€3ݤíÙ•·Dy<Øî—©ª6´’˜í²5ð[– ¦>ýLEÿØ÷']Ñw§®rȵة·°H¿ÑEi–ØüË)ÐÏ¥õ±DKõ¼³fœç¶\<²qüÀõä“H‡¶:ñ¬ÚOLà¶„^Eü ðKܲ'ä’ßJÒåz9à$§±>Ìz‘®!æ üÀ÷3<ö•Ë\ÑÊÁÄH ÕD9Ã[/"›ä0„ e.pÎ@rl[§g‰ ^œENQY8¹‡ëý 13 ¶)só Yaþ¬Ê¨¶ÐwþÛžÎ}0'H/9ÝÎÓÍüm9'ƒº–Ëv©•éÎÕÅ)ËÄÔg„e‘ ;míâ•?Ÿ“EE¾aaV혹H¿öçó­f¿x¨Ï>Çâ5A¿_›Dž€µ6H%뜷<)Ï>žµÜJy±çÁ²sÝp£¯Ãr“åF –™ž~ÓKÝ;*k²x΃Ž-Z,$Myî_É<õ‡RN²0Q¦Ü+ÒLêmÏô§îºñà…]x×c~y?(x߬ÅiT¡{’_1ÛÖPÙA¨P3óÞÚ.z?ù¼•X†{WÛ¿•S.Ö+»(u°i&3`,ñn•}{å±ÂúÞ½›¡³|ê±Ã´¯õ´Ÿë~Tt!e-0†…ÆÀD±ÂsŽëz·†œÊˆ «a ë›–Óçm"}‡’Ùç‹ú|y„»D¸¿ÙÉÑæÌ\©&â>¿˜’lè}‹À?‰§òŽ}õ~š™ËzÁ^ŽmË·îRz½‘[u!Û^‚ŠJ*ø‹@Riîpï!Ø\ñfƒ“»CírŸûgmÑÍ#¡%éš2ÍVÒ ö,¾§–!.¤v†¦(ÆÉD)¼Ò›áýKæ)Rv˜æÌû;ÿŒø&¢Z—Œ¾š¾:¤ÌÄùóÊžÍE¿=ØÚ1¤…Òé|xþÍ×ú= á=©ÀÀ×Ñ 鋈çÞ Ûàï&*÷Píèí^ó?A)‚åx+ –;LJ´ƒ‡Ymz½û¡æëw1ÑB\‰\¼ GÜ?˜«|éKÉÚRÀ‰1‡´¨ð~af†üÛáN9@šúìƶ[aðà« ‹mY¤SòÑ\“Èé)A g½³’¡»Á ³¡š&bÊRÌS»ÆqrÒ¶'ð5R^ä^¦T vE¶ÌfƯXøØ‘“ “¾·[ðÄäž–SNƒWù~ûnIG B/°ƒ¨Wçº+l‚‹Ã÷¹Ø¶¿12\(ÏÖθJ¹§,‘ÆB«òœôbï^œ@ƒg± =8ç¹\$ýd¢À(ŸºãËâîÊñ¤ˆk© Ë‘]gÏ*íAçXµ‘;ö²3Þ ß lÿQûÑÒèrLž†ב¹ÿu»õQ:4L±Ž¾¶Äƒñ®OÙJ[ÿJ±#ŠL…¶g›*i©¼yp_•nyj;"«A0”°DúÉ mÖxêœÌÈ’ Åˉ$#ïFû FÈAWb“eGÒ²é³Ô%%£Uÿv»+O9¥¶ŠÈ(™T${–ÜH| `ªËÌ*ðÎÚy¶",|ýŒ:¶íy¥íœÂ‰šKÉH šÔ…ÁGEô-[Pwƒ{)®!­‰Â¿ó¢¿ùÑ%FjYŒÃñkÒr›Úãên’pF-@UQÒ¦ú-—.†ihq_GÏ­ëã <玉²7&⇠,¯p?BòççïC Aµ¦_’ñüŸqþl?®ÊÞYWƒ²ÊXÐæ9‰ü¢—ð9™]?/o:*:¶S„_M׎æc²}=O§a@2cãpÕƒåXp•ÍñÅusÄç”K¯vëB"iE˜Ðƒ 9çÉʺÁ¬´ 9¹&êÖR ΫC‘¼ÄÞ*Yˆ²˜ÏaKè;´ÊŒÈ„îBb ”Òòµ•.­­¬Oš÷?¹Ë!B U¾ïóãÐÅ¥4‘*®­CV_³ö`hèéÌAqyXÕC|—(©°F £­ \·C¼TÑõQ±âö®Ï/„q´Šý~ŠâÜÍ_Xضksûë"pÆe«:ÅŽTœnåCuXpN*T}‘"òá‹ö¼#âGŒÈCŠ™ÊãXˆ@¿Mÿ¨5áíJp@’“LlÛX¡- D\¶dGI¶ÿ("½Á`z­3D} -úB?¬$ŠäCo[³²19gu!vÊ {›ÜÞŽ@”á ©pƒ'‹çêPêñu;â:ÍãW0¥Æ›5œ–»ß‘ Y›1Qå/”¸ªgÚ[7¢pb~Án‚ñ™zïµQpoç°m+{ÊêÖdnnàY^’ñ>;V<ÙjY¡¸_ÌÕ(9ûä®Dìý•gõ•ìˆç{Ðfú$‚1’µ&»2 =ªKú¦²›xè|‘ÀæÍpéRàõaâz•½NyØB3IƒÉÃYŠf£ÊùïɘbÂòdùJQ8͆¥âÛoâÊ‘^Ó§•èÙ-IÑ™ï;…è_M•ˆ‚L9Ø›ž]²¯›ÄüåcйòWhpã-sýÔ%ÕK†«]C™ºÓ$ZaŸå·ýcƒü¤žžù¢³ üŒÙFþTámQú=?S/*¹T®"-­}Aµ³'nV$ÆW56~ís¹¡™l›¨žÓzz"a¨ÁóiHÞXÄ3ƒ 2¦ÚýиVÔûo÷ÒØùDÑ—_„ÖP>Vºš­TŠ`úDã̯qÌ0·a÷BÃùŽÁºÄ¡¤(4¦eW]R{y_!s:ˆ4ÀtïX”‹å¤“»I'Ïzrë“HLBÂ:¢©ô½hjè ©ïr^T€ÐÝúºÖïMŽÕÕ7„EBpG=²›3xèªÈ}é—%–‰9\T@ÔYÆT»Üé#xAÓ’þ4™Åù‹œÚCÛ|ÄN‰Ú ’è§àÕcyÆΜÚÓ¼½R‘!œt“ó랪kŒ]h¾,UW]¶!s8jfpOÌsû¬ ”ÆRÇ•©è¨Ùà~?Až¨ÄmÂÛx& 잟‰`bdY R[IODsª‘¾_«—à=úÏ4–“«"Z<¸oI†, öVñ£=ý©Í¦î³Ã_͘ø¶)ÍF:ëÖ/ýJW{_Íè% ‰!z£ÁÁ£éôü©W„¥ N= æë9<ú¼!vâ7%³m¡ÌD¢lV4ƒâR‰1ŠóžåÄ B­µKˆj˜¯î}ÆÚ=µóÎd(¾Ñ{ZÏ,Â}¨æ¨S†¾8Ï­×À¸fVZ<†Ú+ÝšÞ&iÕ—±Õ.³'gLy•Oj­>¹îïɡð»L–'(ér1«ô—¡U4ž«Lx/Ê"‡#nžØÁÞ™;Ø;ÎPÞÑ ˜ZE<†¢@>è´‘ráèHV#g5Yj©È”Y¿•: "j ‡Ç‚ï•‚Ä›µo„zŸô‰ôD)@w€ã[A›ÇËĬÞF/|U£Ÿ8A¢B>ZÏÄónoÛÔ6ÐrŸãæ¾´KÙ‡…ð”*fãÚù’5¾ Z¯‘غ-µÿœkÀ=ÉÙLÑáßõÅD*x,wG–T)Тâ ßÕíA¸L²¦Üâ;À æÍ:ÿ‚€ô¨n´E¤:sƒÀziBµ˱CÔ£•ÊÊIº±2‰fIŠI ÝNÔë±Ð© Š­µµ«h&á£=úê)TKa–}ʼnâI€[ÙªÔNšÖ/ñ`i™™*6‡²épÝfÔµ#ƒãòòK˜*4n°©p´ÑÊQUö0¯8zawûÄHü×áéägŽ?åc…P&oÀòŽÜå½ÍÆÎpEl¾eg{Äq-mÅ`ã î‹gÛ@¯ tË ô ÆJ±vŽˆ†;ïkBDz:7U–už(ÑÚÙœÿùª¾è¥lÊ€'-!ŠÖ¦‰´ëyTß×l¥­ç¥Û¥¨½c¥BëFðÚê[y’Np¶Á2õs$…®ˆÑ‚ŸÜíÕǦÛð91F–V¿:FÝ<êÀº.§ãýx$¿ùZ;@wyã¦6‰ž8øÀxo©p9™ Áh¡óžŸd¢Ÿ¡R PœËyîTy-{á2f:.wÕw£j°ÔŽ)o#'±ýè8?cÌ(a/«ä¹ˆß65.µ‰‹ÆNú"ÚAn>!pûx¡&:›[éZÓ¼+½}N‘+&šJÌÛ—¹‰Dœ,î‹ÍäÛB4ƒvÝY·:Bi4b!F–òu¶Â·åá0}ÙOú·bh,­¨ý™…”jã|§Í<¦Zã§;ålßönmˆg¸³å:¹‡Ó‚ÉŒ;0 ³'0ûÎèG?µg5N\Ç-òñÚùÍ"´8wôHñFmû—ÐÞwM"~V$Ogø¶‘ ÇÔX$À_F#ß1eȬûÊQiNætOà‘ÉÀr𘜎‘ƒYLÌ|º¶L` ‡á¶Äe"/t½nîÝN–èèÕ?øÛ‚øàg+V z¶tZ¯ %¥õØó1ùH‰Nà7Êð0ó<¸bx„NDÔ祕}#ÑpÏ$ßœŠ”3’€½³&ÍXY,¾ÿ³E¤-éÃËŽCb§ÜÙ kÔ®w‡û쭀éO ÞÚO }±AÀSzDF.êl’oQ‘ÌJswà¡™2ƒî]ü*+p·¶ª-ù¼`Þ+B+ù"Þ┟ƙuÔªßÄób]Œt¹ø)ã÷¯…Ò²§HÞOÕù¯üñŠª¾d0Õ>Áׄ†zͼñF¸?ohW`¿îªÃ ‡á@ã<| Ë+Ç\±33©ÿá-!¶ù¡!‡ä d˜ŽŽÈdŒÝß›³€ˆð';cW)wÚ|2qϵ´ù,x€ŒˆñˆSZžq6 «PQ²ÜœGö÷]M;0Î2v¢ÄíÅQ/•«—$Kß»G‹Ã7#Õ}ñg5ìðSxõöõ›^mÍ“Àô¿¤=ã¦B¦å ÄØ! B3·„2§ðÿ_Ð{, endstream endobj 2023 0 obj << /Length1 1630 /Length2 18645 /Length3 0 /Length 19489 /Filter /FlateDecode >> stream xÚ¬¶ctf]·&ÛNEw*¶mÛ¶mÛ¶mÛ6+IŮض¯ž÷íÓ§ÇùºÿtŸ{Œ½&®‰k®¹7 ¡¼€±¡‰¨­3 -='@ÖÂÆÐÅIÑÎFÖŽCšFÑÄÌðWÎCB"ähbàlag+làl P31› 0$!;{G 3sg¹Š¢õJþ1zü‡æ¯§“…™-€ôï‹«‰µ½‰­ó_ˆÿkG%€³¹ ÀÔÂÚ $'¯!!+ “Uˆ™Øš8Xä] ­-ŒÒF&¶N&S;G€õ¿#;[c‹Js¢ý‹%à08Ù›Yüu3q72±ÿGE °7q´±prúû°p˜9Ø:ÿí³ÀÂÖÈÚÅøŸþÊMíþ•½£Ý_ ›¿º¿`òvNÎNFŽö΀¿Qå…Eÿ§³¹ó?±,þªv¦-íŒ\þ)é_º¿0µÎ¶NgwçbšŒ-œì­ <þÆþ fïhñ¯4\œ,lÍþ3j€£‰™£±µ‰“Ó_˜¿Øÿtç?ëü/ÕØÛ[{üËÛî_Vÿ3 g'kSZÆ¿1œÿÆ6³°…¡ûgV$lMí ôÿ–»Øÿ‡ÎÕÄñ_ "ÿgf(þ&a`lgkí061…¡“µsþ@þÇ2íÉÿ ÿ·üßBïÿ¹ÿ•£ÿåÿ¿Þçÿ -êbm-k`ówþ½c—Œ-àïžHþY4ÖŽÿ? kÿ“×µV3ùwºÿ0 gƒ¿m°5ûK =-ý¿…N¢î&ÆòÎFæSë¿=û—\ÅÖØÄÑÚÂÖä/·ÿj+€†žþ¿è”Í-Œ¬lÿ!åß*[ãÿZÁ_ºþ•?¨”´€„"ÕÿfÁþËPþï 8+{ØÿÍíT#cgü?ÿÀ Ú¹¼hXÙ4Œì ïßß„8™}þ7!ÿÄðŸggG w€ÖߺéþUýÿxþó¤ó_`DlìŒÿ%g[ã¿Óö?ÿ¨\ÿ’ü¯ð·êÿ8ÿkîMLÜMŒ`V—팸‚-Ó³2œë1óF&…µû@GBìËš”‹ ýkíúüÒÃw8ªô?êBh›§9¿:<–Îì?$)Çú1¬ÉúRM® p}ˆ( ‘7I»Ø¨étËà3ÎÕ¢½®¥·Á4YéUw'uK? 𦻘¡®Ÿ)ü‰\ ýшŸì|Òãл‘šPê‹ÎÎI“NžŸÈ†Žüê»8À¡Êƒ&á2ÀôM9#LvöÐw|h2úsesª^ÊnS«ENRqóÄy_v! ~ŒÝAeȸdÂ7ûÞ§ç_6Œ“r» …e,Nä¥&šQ–Ômè^–8_a]»häåL·ÊZስ€=jŽZK'*fÙúBV%ç^ÌÒ M0W¥gGÊPÐPâ™acnøÁG"‹Å_ïÿ»2y—¿$F·ËÙЧ¨F9}¨!ç\žf„Ç”&†áÈ-òÁ›žŸ_Ã2”ò<ú òM±‚9–oûHêf3†`å”eõüÈ*8$_zKlr›ÔÕ> Óv²ø¦M3g´Dɽ÷}Šn[ŸVOoºK üŸþÌñ`³Té.”GÓˆ†xï%P¹4o¬l¾/sŠæù'¢aݯæfj­¨í*œìNÁÔ¬¾HÖ½d.¼,ÀÓ53Æ©+ŸJAê8|¨{¤ÂBì¯zÉßÀztfôÖ§’µêЮ.Í(,-ÓÆ—‚H8Õ]?é© H¡wU?ä*·üû(Rû}hoW׬¥øü¼t¢ýü¥Ï`—þ¯`L¹mû¦ ûWˆìõÔxóbC«1£Z<µT0`Tå)Þ…Iœ ÷Vx:*×'PbyNST[ngûرLU%Õ0ª0°±rÞlt~ò¿Å½¹‰gµàMSàô;1¡3¬oœù4Jg‚‚üްĥžÅþ±Å4[ÏBÅb”î»jÀ˜¡Úo0).b…}ÀÍCÞ#Q¬w8“Y¦ð'ÿäéÇ"2(·†Ñƒqa#¢\Ø«p§ÏFd8ózCê±qßCZ7{—®Mú\ïW´åNâD22˜#÷ø9ÒÁåwÊ!ˆÏ?§3Ž­Tgõ¯‡ÜX 0!AIž'SUxä0À­Þˆ\È—QHä>–ð”‡M£+FnŒL³ž8Þª wÒª$¾ëJúÍ·K«ç`"(9è¬è‹·%}³¼ŒðM´°²&W˜GÄfx{tÁU·Dw^Ò¸²Qg3•Ò]Iy𑯕ôÍñÐ ÝS~ c`,ðDã9Î >/ƒæ ë¾Ó€•s^ÛDÞ×¥¢ 77ûޱK‚Ùºð¦Mã¢ӘîŠïþ çÌ-ÐP1Þ˜~öO›Võ¿ Yí[jÊ0ŸoQ1¡\Ü•3ÍC¥ >æ&¼›!ètý=z§yþî=q ΫŸ¾Ç¦´ÒK3 ’€9ŸwS”Z\\%Õ8=´2б*káç±<¦·ª+Wü ‰€7‘>VÀÉ™æ.^å>>›4ݹ{û‹œjœA/¥ œPäó; Ô,G^#s³n‰Mñ«XÇ;¥„ÙâyôùûÞNo†ʨ½^G<ôUÑy¾UK×û#ak•KMÞê>]»ä¢;|ŒÄDRà%¾I_®EOÜ=¢L.¦L.·XñzèÚ¦; _ iûVE7°éâ•Gsm…¢ëѬUFÊ»"Œ$϶…±À[7ù*?ÈE›Ú˜æ×Uv¡•ô<)ޏ¯Á¯(y´:PŒ‡ÍG½oßá1»¯ œêü™³7ÂZkŽO O¨nŽãßw÷ åDQü ?³±¾ î¹§eÀÓ)Ýi'úæƒ#tS`ŽÓ`—Yn²}ô¥ÛE‹0þ”𼄠sÏïuô®"Ÿó ¾_-vVe¯Q?&q~‚|ªð ®T‹— _÷ ,˜Â3âz4Óäø<¾²|“x‚À,åÌ”é"L\Ê—sÏçÈœc‰ÛEÕ<\cX'’‘è~¥Y_ºäÓM"z§õH"V8朻ae>حɉî|Y­<²"dÄêUaM¼@’GÁ—s«iGuŸÃœbÆ£ù¥”¶Ÿ£5±_ÖA¼Ø‹:§+<õÆNõ›9A1Œ0ú*‡6’qṀÒ‚Àuˆ "ϦˆK5øË•-N]a7Ë.!š ô[üóU2V02¤K¬ƒC%?æÑ>=‹«$:±”Þ} NÛ§gUS~®ZÍš¿/µÆÂ3ø–`x‹·Öò2?xpàšv“¦©šôûÞsûî¿7‚,ei/ûçRÂ!Óº‡gˆ¶±q;OÔ[Œuë!»›Ô1E¼6JâVLYáà›~¨.Õõ‹‘{†-¨Œhƒ¥ ß§=9ßõ%ݘ{‹){iJBñºj‘¤Ñṳ̈*]oVSü|‹ë q@K}| xN½]Lо¤{ËP}Ÿ aõivHs'³¹»Ý›ˆ}úpþãûÎÎ .³´Æä ùÔºüN±ï{í6‚ü+õú¥øÂMàË@¹ô¹.âl±¨<ÍÝ-ÿÙíuþ)%F"ÊÀæîÊËòæ%h)u šžð%”X=Åv®¾è2’Ð70'a²½ºlZ÷Ùt¼2E~ÃKŠTóì‘¶_àY÷NsìÇçýÅs*|sôb '_²(6:¥vÌk€ð $´äÃ8u¯Zèæ<¶Ãa Rç¸áBµ2«¿1†+¯5!œ¶®¸¨QÁhjê-þ#eéD‹2;,SáþgÎΞ¸ý2'p>˃/ÈpüwÑÁë¦/åE.¸ÇÉz£…‚bCŒ‰tü¶µGhü"aêË ¶ö¯¸æ¤õj8OȲµdäðO@¼&CTU£Võ›»²GœÂÁ.6’R›ýFçƒÀ}šš¬ŒÃÒª™áiS¢ ¥nø³îÒÔï’׃ƒÀ€ßÒÜ3‰”Q/.ãº-zÓé¡.ñ¥N\S ìLÌŒMIÅË:´†‰vÃÔ)¦Z±¦†iÜ• zeõ–Îbž®4}þZ7Ý: Ž ANŠPx- [Ý"­<š1Xrmt=GÔûêÀ ¬à£GêåÂg:®å«³< t/œ›8Å×10ãz~‘«¢ÇÜ?¯ÁÍ¥¼ .¢l 5reÑO´ŠAªwô¾êèýáÛe@0uÎwq+›‚ä)œ²'™b‹xil3iƒp—LÇý2\•Š×Ì-‚ù¾î¿/%ÒÆz»÷&×ôÒ"tªÞ»KÇÚ¨Õße_bñ>üL9ŽN‡ìï¨Ä4ɉeÑ+N¯^¬e­…Â-™OÑ5uwèEZ2KlÃp9fÝ_Ãòñ¹þÜÜ:Øk±v\±qp=±aXÓN£Ò£¯sÕ;[?Ú2@ˆd=KmwMn­h œ‚E*ò &ãF}˾hÀ.úÑùyœJ}οãsÖûWøSŠm ÇËÂ,c!ó}ìÓÆ“{¸[¿ý`ÑP06’ÂäÀ„ i¸>J»®ôróú‰ ˆmt\1º‰¤Êa,[.j?+¤ |ÉF{K´µ[^©ïšYZN~;‹º>»K¬ÒsSমR_n$xŠ)Sð ,ò½”þ÷PÊpì¢@üØþãn€!°ð|þ„+b$,³÷ø&²/˜ál‘öÔ@àÃù†oMp*H½tÞœ›«ý°òYd??ç\à–¾¨'ÞW çgÅVRôŸ4­*·oè¦Úò? ?ò¬ŽnEu¿jšp½®37ýdù*:(­îU€…“-e ŽºJ&¨¤ô¿Xz›êzþ@ ,2ª'y<„<[¨Õç™1f®M{òÚ„ÄJowÎíâu%âH1 Õ¬ /Å1±oÂÆ‹” Êœ~hx˜ÍÝÐï7˜ôUà. ­z¿³ÏE’? ÇŽ&€Ø!Ô´Þ+`„™TÕ4B0—׉UÜDµàŽÞþ@ˆ¡AÉôã¹LœƒOÆO=Ôàrhi‰M‰Zc× ½wøAØÄ¢'· id³CÄúèHÑ%ü¹†î £»\Á)qhçf´³ö=εÿ£ég³–ÎB™• IŽ ö©Z{©žMÂs7\ÝÄ™g3IVRÌ)­´ô>óÑ/t圥seu :ÿt…Ò™¦ŸŽ|¯_¾µh‹ ó«¿¼¼"36,uâ¹l´]hÌJõēˢF79ÌÅ6ÙuD Ü ‰¦ôñS®ã0¦{|€ð&4Þ˜)©®]°ª$+j¸OBIõ‘tz¾ÏÄ*ÃÃ~TŽZ¾rndVwˆu…= ¯šH4h$û’û´ÿÜâ °;ÇÖÕkÄšì@Î~O9âÁ€PƒTŸföÓ_ yll^ð¿ýaTjšEŒvµp&ÒvÒ@ªû€Œ4rÒ§z¡Ÿa°‘ íÞÄ=LV¬€ÄKz‡ïÇȧ(ƒúœªØ€}¥ðâÈTxø¥[–¡~¼Ã%I®¬%‡™úàTÉi¸BÎe}ªß¾jÑh$—u×03+K¸Ñ© g)Ü¢SN~1ü$ƶñÙFP Ð7«e08Øq‡é'jâwâûžìg{7i0µ=”Iæàï¿wİ«àh¾%chWói¿%ÜbÐ÷ƒvãÄ7Ôæ%Cc ×x´à(­eg ØE¬_êª"dtPÖ¾º}ãÝuhS4‰B Ô§(úf7Æ—qI_µ ™”)ÚßÅá<ÁØjlSJÙŠùªIÊ¡ã¾È”ì–_‹Z» ù¨ù½ù^ê‹Úâ¶`Í*XW¯4eD]ŠܵV l¾|þ¢Å’ÎX[/y Ȭᣥ³£àF¶`§¸ñø=Ø‘ê“ÆHr4Çýs¾ÿ]tmÅ0YC‚ã¾?3nåhºÔƒpµnÕk¬ÃP´êêó¥K|­ÎAêq¢¤I'(qxòJÌb}J°²PnS»1±…„Ú šÙ~Ïnã'yx±1ƒ3£õU¼}’¢k䣇c1çt+¡šÄ”ch™ɪ'5àÍŽ ÜJŠq”/Ên°§æ‹WHAØa~N§”Þö›ùÒ’€Öa^a­ HeÔ(`J W GÖk`)eŸ†1^ëK¥}³¸­&ĉH=^F,ô¡Ñjiž±÷DÕÝf“w)ßÖ%ï­Œ$õbLmFEr;g£Ù ö}Ž7ýQæ/¥lþµ‰”Éʲ›6vwRëPý¤}xogy¸f]r 'ý»…ènGSCæ>«^Ì“ÓöŽÒPS¶õ!ÊÒˆ…±²™ùà»C8æÔÇ6Öß‹ÂWÀUÑoi–jé÷‹ø˜kÞ?ÈX—m€!”9•&1˜¥V~`Ëÿ EMri÷†ýµÑ¯€Aöjxe¢€E#Ä.S®(=ÌçèG 4"½n$Ù[¦¥ˆ‚z"¼x³Ù6ç7?yf_R䭹䛩˜šÑ«Û†3u;Y‚CE1Fö…媰î7P¾}yO‹7›ä'KÖ;u“ós„µ;*©·Zó ‰ËY¶ô÷ï(;—†èó¶òùRSmØ‘ÍF Eœ"J­÷jS»tÑ‹ƒÜ.(î([(Ù‚¦;ÝO|XÅ‚P £ñò(G:= ÔÌŸþɹyÃz;ÉhmQ5û®‚o8ú…ê¹¼ßÕyß9xëfBu ©/h¨Ù´ ûÝŸ¿ól:•ôÒ ¯0ÜfÆù ¤TφOq³Vm–²‘˺QZ“fŽÉQ¸XQËRõ1ˆ­÷Þ륙—@–š§ð µ uËSü³üù£:Zq)›*¡¿i9IqAÀë¸~ý$v èôvùÉ­£Àس­ÁÚ¡IÓÜ êC_½ sþÓæÅ8¨‡4õ¨Ãï{&âëÖ¾åÆuí½a¤Æt{pN$‰% ìQN6Zö l9V{s!å@Ó‘½þ ®Vd—²ò*êîñÉPýï‹üžÌàú\ÂnâmôÓ¨–Ÿ-¯}¬{Q¦¢Ãõó‹Ú$àŸ=r.´î³ó’ oO¦$ìÆu'ͬc=xnöÕST‡¶ž9Þ ’ÚŒòRt!1êíÌí”DÆCaRÎðÈs–§bXætdâyk#χšPPµ:1Èè ëóñè¬Í‰VµAÚÈôšÄo$;xrÚžóÒõ.‚’»å™ìÅ¿YÆæƒÊñÙ<´žbõÒ_ƒòÈp 'ÙüŠçó¼`öfkã6›!Qo[E< ˜(£¸‡.•Ì áa¾©ås¨]áë€ü˜æaFçëÕî1uÖ·Û¯ˆ"^€öaá†åÓÁlZ“AM'×*h…Š8Ó b*Àeå*'$?’HÁP§¯øôceiHì”$Ýq¿ËfŸÇ$Þ N‹ZAéLÇ/#¾oä]s0EŒ¨`¾ÞØç¨QLh ’üžž‰‘~n0Û¸±ñµ¦ªÝНìÊP#J|m B¥^=~-I5 ¥xð/ç²’ïÇÌúä)åñØÊÕÖl Ûœ’o)è{W| )qKÊœ÷Ö¦ Ua×{%¯äaÚƒ¤q–s‘èš|È÷ùü¾ªåg;+›m0ÏÈy|´_“3tYÄ>³È* c\ž¢ÈZ±X¶“KÅ.¿§Ãç|¤™ÞXmL2 üáí*ôªl&š_UµÍ›øS¤³p&1b9æÚ â;÷5lš%ÈTòzçWîXØ»ÂOOÍú^¥SPr¼ùÒp,fÀ‡Ñƒ4ñ³±ÐV•¨=‰¼DPÏŸ;ãÙ)âW µa¸}ô2eñKqn…E$×þ¯ŒÕðe”­>Ÿˆ® ï^œˆpÆxnfÇõÛœMþDw%WQþ ør߈–©ßvPM2zÝw‡s¹[sz{Ùì¨Ç<ØÇ-ã¢_Q™›§Æ®²áÄË(BÈvÖ¡Áç0ßxNðº^¼ £Ò}¾k;é3—©ËCÙÆ°f,¢¢}t`ïêØ?¼îåšÎ¨ù+ˆôæ.ÇDxY®¡Í­(4BQƒøæbžq@Z¿£O,"4¾F¿'>gV–GõðÕÇzâ+ûfÀ–0cû…ªÖÁKúk‹ít'‰o§ý!XeÅÍ^,ºvÏýKëªDù]©… ¸ÿ®¿‘›A'É5™žÁ²¢à—ûÌ2S]¥ö‚àFiȧ9™×s6/Yžä©1çhIc·u)eŽªÅd™&5Âý%jr©Ö|ó¼\ÊŸd¸Ž$\}~Êqk#…T ÍK ?÷ ™§¼+oo¢·¯­?½‘D¾2s2 õ¦´xb‰Ä:ÛÍC¥U!Þ\¾ÄLJb…ï0P߉ùA*mà ésíûÊØÈ·ŸKµ«,Ñ\½UT;¶`¶kSòœ…HÅ€a‚0[lb‚Ç7–ЈíEU–‰ˆPý -ÁšÛíÒY0rëÀõ;s¾c©L>6û6t]ª‰^oy·òPštíÔ-Ù—ærÏüoÕÉ- .ÅÒpï‘·N[¼<"m\ű¡§ˆîLÔN@•Ü–«µœøïë¢Þe^xYѦö.ÍÞE:z&Hk:¢=¿ð£%aa‰u×"Â˼,Û¿‹S·ãwãÕ A$ íæ«:?{õþ…K¶eÑÃVÐáâP6ÉôŒ3,zS—ãþ´2ó³FI@=ŠjE(5DIÖ3,Ìïã³ñOa…$Õ6­Š Ìrm˜éP޵8ãrà ¼šb‚aÊ`Zl„[éâ»l¿¨—d—Š˜DßtéÛª¶ý ¢RH"š=&Jú6|÷Ôñóqe˜Á×ât$z)`I«G{s¤"ídÔÆt© U⤅˜X÷¹éÞY3x‹:ˆo›O ¸êÎJsÔØ¡ýôÊ©KJ)ÿéuÚÍŒÚSäÉ›˜DØ¥ó½|Û/I¦øþv¾û8C¯•wÆ#*ÿ³ßá‰}w)G"'®‡à“Aâ¼;zŸúÂø… íâfGÜý¼ %4Ê¡ >@Äpõ4ͤ¬—(ìRÝIm’åšÛÖ PI#b»¡ PI“+5صZWì^ 6E•¿˜R:Qçç*£ûö7›F!+BP’•>PÏ|~x×Ývbgd¿%³ˆo¦WÄBU3'â°FóU8Òò;[,–p’`âº7×¹"y`V^.l&…QíúY !åòáåQ!¢›««„T~þIT¾ù±Û!)º%Ûü©Š¦­<4Ã$ ¡æ:%¿÷¼Ú°j~㘩‰‡ßü£Ë¬£“å`GE›á÷ˆSkûï:d¸*UÿB[<:ý1§•åÕxøM»=Ô€ó?ÇŽ|›°”©²–Zï¿|æ|Ž"`šæk7KjS¡Î‹ }ÑlήOK4òÊ¡XÆö[Q3X—ëQÒDÒìMr¾òuöÜ [æ5±?áÅÞ¤ìëzÕëäHSsÆBuꎦ*NDà'žÇ˜I7ôàÜËû Ú\Aî° Y?«›˜Ï7Eµ8eÓ¸-`&7 U d,J³Çülß•wÊœí ÀCܰWè2%Š'^×.ó·••IF«Ž×ýeÿë5ùr¹ÆX‹0ºìmâ"Ÿ©7býÊòr›»¤8å¶L3ɧ/!×µÏ2QLR¥í7Þèæ«™Óü‹M¢L›P,«ý¾É®ðáÞë]‰»<_ óüLj»¥j4§Kœ2(® »Hª%G§e˜ÄŸöªÍúûBó ‘g y“‚ìÀa+RŸ —›¶%uuJ%&xU®ŸÚ£éô¬®™ü 7ÄAÐ2'O`~þJ^›Û¬…ù2zCËÝ™­„!–}L]ÈôÝ}΋s£J¿&DôzN nö1†Û2:Vê ©ßMÍé:ùôꛎ²¯{„u|’D9º³ëlËAic?m.HÛèó c7èuŠ„ÿ.Û×Ï}#ßhßeÑ|îÌÎìÂgV>0Z–fXC닉0èí¶Ôìí}N':dŸ`¸žÊŽ¢çNdŽþš¥Í÷cw0¶0§eÄE pÝ IÓf^YàqlŽý£¥Äãy—)X-ð[Q›ó6út͂ѲC>ÿÐTÿw;@­ñöŠ}ž>þÚ$×#θN€ÝäÒ0!E™¹ßx|ÿ#OÎðÿc&ctOÕ ƒóQ®R‹­^u—:Z•™‡ªoÎ š¾}Ù@ÛÚëyï|é^yx FÂ’{" ¸1Û<²†|óÊ¡>øLe<ø‘0û¨_u+#Å#ë‰ÔMÁÏÐ|ùQtíw AB(k&ßG~1üÃF7Â}£‰YH+@æ!/c`~Õì<ËÏŠ=w ämŠü»OÉüû0ø§ãC:wË©ëú: jÙGñ¶Ô’“¡Ûj0™'c·ßÐ Ôt¿;cˆàäboÍgÜ<¿(ߟ8©µº¸B‚ñ—¾Ü•û)¸Ü€Ãèù±p‰Ž‰OÇR m«ºÓÇ Š%M`;µÜ‰Ý öp.hœêz°5ÚÌ/äü'7Œ›rdp±O7%yÁõ‹eùL1äºÛ¯l”®ùÉÁ>/I]»Ö}PU‹rUN ï-p \¦[þ›ØŠ#˜ å¨kiUå|†¸,‰QMö;[yL¹¸2a> Ñ‰Š©~9(«Œ„MZ2ÖmËö> yÝIu— žØjàLŠõÔ¹1ȼ‡‡ø/ç=“>ÈZvÅЃö¤{šiÞtì}-mþÑî¾ :BrÊG‹`ôÆŠƒ’ùvõyÚIн3×|Ô|?îÐ_iógT´70è!Çå¹Ï]R§öÄ‘I¦!#š¶çˆ%a=™×7+Zo!‰Õæ‹8kî_¤b-K,Çšµ¿bãd×—¼ÀS‚Áø]"yL®¸±=»‹%©‚‡e­jï@¨ù/W¶ »Yx’n!ÝÜsotváœz È£¼â€I˜o™_©•{7¼ð³w¶»ðÐC”µ0p„a69×ù²lvYÆäRGƒnKËÄKœÎh³ÆÓédÊ™?òwá‹¡Öµb6’#öМ~ð¼)ÃÛ2εõ÷ÏõX~.°[ÿÒ(–Ý9m×çËÊâpëaf•‘aY(Ÿ·?€·Ùã+4°Š»¾6V^á\+ÌÙô¶ ¡¼U‘<†qL à%îzˆ’_ÝH¨xÖß-Iüó¼8_Ay³~Ó€BeZu­0’€½ÐöÑ S‚““O& èI·n,¬7&‰ìÊõ–‘-¿½^H‚ŸÖ2ˆªœ#N£Xý ¢\Wö‘‚t‡X3{áφm4ê‹§$¸‚æn9zl Ô•!âC ‡ â×/T,©Ò­"ÔžO‰& nÁQ`°qm—Å“°ŽŸAôlôü©ÉĘÝ*µZäÙŸO`G¡dì /J0¹5ZÔ–©ÝÈeÐaiΊ.QÆõònF({•üQê:¿Û׈ûÁ1ÞV6ˬ-÷®m¬«ÆÄ¡‹(¸ìÑ@8Á:0{xIi®ùíbXÕà¿¥üŒóz§ÛâÔX`„fîq~ÈùLßTû:29kµ¢º„¡ˆÚ."×oÿ¤òH þá!穃³ÌC 'Bš8}£iR,©ã¬žT% Ö¬–ºã€¬J&ÈŽp"pAI“gÉbmú3P“‘tZ (+ã²ûÏD͸^ r(ÕÞ¢]ñ«ò¦k"ê>×å2v^ªÆå¶èßf‰õ!ÛŸÛlxGk쿊!9³óñw ¼÷•©-F«°W…;ƒ^t/š1­~ËE²Lž¡ß˜ZË:¶¨BþlT&~=-’u2Œ…/õNÔ1òЮK„»2±a…ŠÔã}4HÀÍVùáÂÈŠXøJ½p±ªà‡W9»oMšr]×-(÷Ëäaf¹¼þÖ£¥t‘e´p`ÊÁëbB®kÎqòhŠJŸ¶ZRÞ{7}ÎJ¯ã`g–Yœc8ú¦üçuãq¯õB ÌBèP¾! ½dOLøE“· 3 y+™¡¸˜»zîK\ .t®æw%Ïô™LMD1Ðöó²-‰î#•§Õòîëø<ç1A zV-Yh`¯“Y Æé!"°ÁmøLS¡)„˜¦zã7!-ùhÄV.»kXAwÜRØ+“…ºØm2ë,‰ ZêÅïôùÃ4Ûãk«û úŒTMyÚ‹ŒîÕ†øYƒÁϾµ”,àžìH-<Óþ‰ñÀoÚ‰|fjñ˜ª6þâà/ÕÔXèÛ>ôŸˆÎ:âdmÉ¢±èQbg‘rX^xÀm»¿ÌÀ€dölÖXh$u¸Pêýé9õÞ¾‡ƒ]c€²Hmßá¼J‡Ä)fÌæ0@تåñ¼ô_üº\¶¤7ôl^°Œ1à Ésip Û£:oåç P/@¸ž5$b4TG+“ÙÁY õ®ùœ šs±`ßcLÇ£ƒž¿†•Hu½EY–Ù$….>@€ìOkÇž7H2Ì`½d¢Æ5ƒG7fÜ|ë+f¯»-î‚u­¸öóÀq‹’ʱ!‹ð½T'BÖ’y>Ë\˜éQÏm6Ái£9M§žD¹BDPÔÛìSò"((Wc<57%Èö…»~ÒØ )}p€JѼý†C”ð®àe0šOA‡ø4*4ŠÉ/Æ›ÃñϦ,hqØ>&®¬ŸvË¥¦Ë=‡ht'±ýÃÜ0òú½àö5\y+›dIBš§9Œµ\>œÊ$ÕÍó i‚â $hÅëqg S \t_k›QãdÄ™ÿ õ8³®tß.N¶m ëÁ_>ÊhŠÂ/mùð3gV^9€Æ"êÇ"ÀtF†{lWÍb:“4¤¶!½{ö°—WÓH<ÿ¾?!û¹K@EŸäÓq[Àí­AATr!r|ÄèÞBwAûOºß“§«–€Õƒµ+Ñž‰tÙäµÙ0 |Dò]ÿ~·Cl5ÖL_¨#%/a€e°..ÂõšETx¹–ÓÉ›±žË4<-T•¹ÝÒý™î³6±;Á g1…ø²©Q8 ÕÖŽ›s¯Øž±ÐØ|›~"åJ¢ÒÉ­–D_vh^wÄ€P¢ÜÖIŽè‘aWBÈ(¥ì“X÷#i<ådªê¼,vÙ«>å|ÜV#—7±ƒˆKË1[·L§úý×X× ǃØéZ ™‹OôC±"MêWXZoyå.öÑÏÎ êC%ѤïÓõnšÁÒàÛZò‚ž*ïND…ћӽ[ÿ¬+ðÀSkž,—rîr¶G $= ¾Rf»‹ØÍÚLÉ ˜ß[ÅÐê‰s²z•±ovOSÓPžoŠ©.bà ŠlðRøP/´4öɸ1qZue-él/ü!ŒNÀ Ú8ælêæÏÛóI<ð{ dý?V– Ô>‰²U-ü¿¹{Ò´í±–i…óYp>F>6Ô)­“Ôíß]3>zXB–g­„X}ƒ9ÃÖ¾>naf4äñU²™Ê!ßOo v<¡ž‹ ý$£ÄÈI`íñ¯˜k}KÚú‡*£; ^´Jâ¯Ë5½¦a£qgIÅ‘ÝëÈÔv ¶? Ô„ ÃJ7tFiŠƒÁn͆¼àí†ó B`©©"e<Ö×ï,¦áò=¨ÚF Õ;9{Ë£—Æ:­ý!s}¦(ö'ý‹³t¸éÚwrÛ•º¹™cTšW+C0–áWÅÌÙºàÑëåõMՌҸŒ±6rf°¬t, tZüEM¨Úps¹" ,¨}õ^MØðL¼jØúAFô9‘‰ '–âò9ɛՋ)bÈ$} Àº ý³Îé½ðâaxÖ•“|9™ JËU²tIë?á,0xÄ*ºLÊ åq/tC޳¢ÛŠÌ¨“¡Áã?F«&¼j¦Àrɯ¡àX‰óhÃBxU¨™-áu0G9YФl‡@ˆº÷––æ CÍï0Uç{Å”ôóFAB^î…x¨B!§L¡í¥É1îç:r,M®Õ™N <˜é)‹ùTÈ+ùsý©Í¼&M™8yFsm–MUÈüì$I³²h'8HÀÃí½T£ÜÊp”LÁ!bçþþ‡ºRü¾ÊÓ¾?¯_–AîFïÐö6î*‡[A“'Ë?_–›ÒÛô¿ìëT~y)à `ÞŸ–Jªòýd÷-°e¿$º¢[sovÀ<…¼ÿcš®ö;>t~\Ë9—G|³¦W³8¿_¸¾­öýÙŒ%߉ ~²¶.ü=/«ÈY¿)1¹ Uñ¬EPéí#LHx͸vŽÄíM‰ò8ûEÔTÎóìŒÇI~¸¡Ú qFaŸ°Rý²ƒ„ì&ÿaªe/QÄ~tˆQ¹ÿÖh¿aaØ3\qp¨óÓÛ±£ÿ¸`ßt°²Ý¿¬=… 8‰ÊMFúúÑaô@Èm¿‹º-³£}(Ù)ÃŒêQQÞâ,•΃JßwêB?¹=BEa㽬ùKg\:}xÒU0šv‚©Mb¢ø 8|¹Ì‰ËaÔ~UIÍ‹Úà£T>A¥]ƒˆ/»éÄ,¦¶ ž¦xÕ{ºÉ)á@ƒòÃ-‹dwö5¦Í;¢kzÁ*’#V :Ú÷)bE¾x+ó„ǧ-xlëu™ÙѪ>hk‘Ô,]c“™fÐÒýÍù¤¶d‹xyC·Ûòs\¶º ä:ò Æ×©¿$[㾯eY˜¥…–'Mà൴¾Q4%Gä^ÈŠžI$6ÂâºG«?OÌ]Ç·ðŽ€.œÿ£i»Ë†âB#[„öx¾Åvéš3ƒõ‘q›`˜V%¹4'ŽM ¶*j·¯Ì)ôÏ%Ô†(*£š£†Å T£?~öÀ!ø-Óµô,Ö0M7› mÃçüOök õŠt•å%D+ \ÔÎ`Þcë“rlÞëÞ4óÜ¡jT—‘¥ÆJÞsžz°€´õˆewí-¥˜È{"ÔÇ1{š°S>#ÎÛ˜ÍUˆGæ„Ë£eaNXÈâæ\ø/ΟsÛtoJNŬzGÈÌÑ‚ax‘4ŸFk¶ãßbD³À“ÆÅ<ÛÄ0B\bU!ÜáSˆ®– ùÙ¾äáZ–q ©*‚nº(í†_j.Üpéì±)“CS0aA2¸>¸탡 Þ¨¬‰PVýK8èÕ@»5™–‚’6̰4Ù>M&¿Í6øÑ³Î÷Ð=O+Xîò ý¾1{Έ±2kûøŠ§4´Õ¤(wÜ7°Êj30>sZ˜,ÍbÅ@\—:3¶Âb²êÚÁ»P?»ÔŽÚJ5’Ö3¼3°fü£S áÖ¸"L]‘C³Pý%Ú¤žò+FÙ¸9"îlçÆ,D^²šJ]g]§HP¬ß]ãÑãQ6ËUàyïa>æXô WÞ%ýÿ¡|fWݽ!ö‹OƘlÀÐý|Mèçh&ËëGA¾„çp‹‘ÕŽk´)é¾ÐÆdZ£Œˆf»Dòµ*ÒB×Òµ²^r’ÅÛ¹ºr€}yǯÒ¢÷av…tÑÐîû/¢Yõ¾ŸÒ¡ óIe d‹ðÆèr ï£XeÝvdMȲZ@µhZÕÂBÉ?3BÏ%q¤IiÍìÈ1søfè«H[ùJs Î^eUù '7 )4ôc ºjš&À™Ã…>Õ“àðMµ‹ÐM|TZ¨‘7Ýý(µ(žw˜†ÅffÉp2ÑHïQK-ֹĮSº%Éi\óSÐ[ñYŒG n.ˆ£$>«~60ä›úU$žóI¸OûñP44¯à1V\ؾ†zØ5÷œÅ±Î‚¤¾ßôÌ Á§"­Û‚™lÒw—Oî¥#P)Ö¯“’•"¨1 FËŽn¤ILƒÁG?¤VŸ3 #ÓzÃ\Îu¾V^ã–Ô¨ÒUä&žùcaÁªº'#¡éWÐFŠh›ws,žùåÓAZ)rXým¬±x„œÓ~¡¬Œ©TK,EHìXâ #IÆIBX’Jþ\úÑ‹‘ž¥˜_L!›,®csÆ«ÃBGîK&{¯Þh†Jé r` Hy—„ƒf¦Éÿÿ áôâ  øÂOF ÍXjFŒ“Ý]ðÈ üŽltflIž¯íW¦T~ïº8›méà rÇ»ò!>;àÝç$%Ê `×Ý…õø–‘?¿“—’¶Í4 à›Å®ùY_òòä;£ïÿØP_^¬Zù¿)=`}yÍ|Äó3ôɾ€¼{‚ÜytÖôgnq:æ’~Î$ÙÂ$€¸:ƒ¥Np·À¿£ R$­Âã”reÿ¡™”oñëÿn4"Eí®¼§ŠéÒ°¨´òê¹4£ì^„µy€Ø©”},µ¨(ð+XLKuLmÑ` mº+ Î/µ[úñÉ VðW eJ:…>/ñ?Íâ¬Ì^¬:i¤hóŠv=ZÿšÁG8Ï@ žÔjZ*èG"Ñmâðo5gïÆEßš;:#µm˜¤‰j¯ÿÖY\À‰$šGñ®ØN~9ø ¢$ÌçàQõ”L{v5ÒºÌfœCLÅV!Þ/öWª^ÔýÈ„:IHÀ½åDÆñY‚A¢ErîÕún7a¸æÂ¯¼Økc§XëÍ8õu…ŘG¨Ý(›œßd‡{„,Ún_× ýƒ*¸Á“Ѻ&æñ¬99„»Íïáþ·} jü.ø‡5<ÍŽoLt¡²ˆPÄ–dTÜh›bóC­‹˜ïÃå^Ù Þùé¶ÖèÅ&œ_È}²è‚Ì£l¥¥’¤žÐõHÍmåEp&žg¢ú¨l:[£8Âó‚O4Ý2ÖžõMöb-Þ·³¾Fž"ôRsâxTwñD5KÇP>¹óÚãEÒñÎÁáPõS@rã°á½‰,³Êc¼ÆÀ¸W–«½ â 8óÿ Õ9Dw”ÐäùYS,SÊ\U½ªÜ¦Û¥—3[þ8®UÐxj¦SÓÍF”ïã¼¼˜9ðð¦M;ñkª£÷.­¨9è+×–"nô8xF¼>‚/БZ»Sé»ñVý8)~ð;˜uþBÛÛ0m|x{ßÂd÷Xs‚'—zb/ËûNß,0ˆËiTL§Ÿ_þyÖ¿õg¥o‚Ϊ ȇC «6ˆ?·³å·±®”"<n Q…¶Lƒi~ë™Ê1±©âé€À:Çõ|VH†®¶z6¸W]Ú¸¯“XÐè<'ÁàÐJMùG°]Ë=7rVëhÞŽVØÐd\\Z~º’&DDµ™caO©™ã¢1¨ð`®Ø~om¯T‘Nœ$žÇ.摘ÁB>é}¼ŸÊ¡ È$¬ V ÌvCì0(æhµ2Áýñ gOpO=ØTË,°Ì>Ž÷³ûx´¯X~!cv<bE0ò¿ò,WAàÏ]¼ð™áFTO²‘(NzÏ$ ß/j6Â=gT‘ûOL¹»ó˜¥ßÆwr­÷²õìýXœNÿW·Óð‚Yüooì,íQiÀ©àwv°¦ÖN°]Kñóç†æ[0à{/MÞÒÔÂ;ä@<ˆä¼í¿!êÌgèæL(b'=/5FMèªÊJÎ^`DõŠãøþ†yêu0[Ÿ'Ww`¸Td|‚#Sq¤Ý6—µçΗp‡½Þ'”ê+>¢Òd}RKÁsù©N”Õþ¬ÊÞb㇘r,t½»öç3MβïñÜR|'77¡b±¢o¨.A=Í®Ê7C{âʵݣá?KœI&c5kY;ÂúK ;Ŧñ冨T¥vIëÌ#‰\ËÙõrd,Óðü¸ÀpŒúå)*écÍ$Ù¼˜Qg Õšdš¯˜æ„*!áÞù|RÒ`ÈrÝL6¾ÃÛ«[1BF/Ú”±Jr+~ ½7çê>D¿]té,¶É:HËNô.öÇŽhÌ‚»^È ÒYóQŠ‹`F‹^úD­ÀKÜ{ˆ÷Átž¦f~BnåcL-˜¬{"Xñ ÎuÞ70‚ªc÷© Ák­¯ž¿ et+¸®˜–}=åjP‹B€&ø…¾æ.À‚&´2¶Û${¹»i ?]’ØD¯¿ùôéÜYÚ aÒ|ý0Ë >ínQfª•UŽ=”Û=pÛt¾Q‘îïeÏrœ†gf=â~ ›‰¡“JèðY%N<µ©*pÒ×ç7´‡B¹ºÎÌÅ€ç‰ÁRkN¾^¾þ؉¤3nG —7›²#ô»¯³©;¸Çy/²QÁñÍ´n׃À ¨ ÌÃ;û&AˆcWü™‘ŸŒÏ@˜Zôï…rï*§½\dÈ"øÉ©3:ðHÖ•euôêü_ï,†ößR~c"¾ø†òDh¹Iõ½Þ ×\ôÔXláz÷%–•ÞšŸS%·ÏЃ8{nvßxlü+a|þM†v¸nuâ”§TâõÖ˜e¡v¾Ó:Œ6Ç®Vÿ!ÜBÿZø8ÖÕL,Òt™ÿX)ÂöëÊI·Nú÷P›Û‚a€¾yr¹SÉè×ZìÆøû)úmü®FÊÒ¬ðjÑØS”/Ú¶'ŽEp ÔýHH%ÖÉãó:= qÏjº=¼j—ò*ÃZOD–Ÿj¦ãq‡ÞÁ\ȗŸwlZœkÀ–Á¥€7*¹É‰õ¨Þ•¡UÙ³¶ñ`ºÍ[ãœMf´Ò&\×—?´M“*V…+\!†‹w|Õ2áñ1¾‘eãdÅuì”TVbu`/86ú\T~Õ×,Û’ŠZ!3„ùaià‹¦,Ù)«"UæE6µ#çö} {ÿ³u„›Ÿ"ðÊ·L±€o⫳ÂfĶ^Ùy›³ì€ï;?w}ïnýo[êÕcŽÚm1z¼›[Ø_Fw”· n銕àÙKSéDFþËŽ›¢¡aÃ]Ì Z“r¿X«-Ý¢˜nùro/k³VK”ÇòHãa-]‘3'¡&«Îý·-NíªE¦&­u½úü†‰,ChÆ >âœFlÞG¸àeÛ‹½óSzµÊÖ3¥š&„{pÆæqîDliºjø»œã V™âÐ1ýBŽR8PíÀn[ÈVÝ"ùò‹í¥ Ulª–Hr†ÕDÜøJEeê"Jú¾ØF$wŒõÄV€Õ€‡ÚM… Š“¥êHÍQ,Ú Ãi$Á˜|Zw%-H9ÑçJ𱘦:ƒxè˜Ð;XÆë!µ…Æ*twýÞãn†~¥/|Ü )™:oås› ì¬½ñ Õ£}ñD ?iE•.ÀQ[ÓKÖQWÒho±àgÀ÷nýr-'ÁÎМæPäˆ Å10 |Cüx^´Ýõú-Tüv¾œ x¹ó¾\ÐßÏ„mQÙ*gÐ(Ó{‹¸YÖÑ““t„„/aÏ\lsà •nÏw%"¥Ôµ”˜6è3_ƒç °ç'î(Ò;¢yiI»‚¼ÇœtNôzBÀ~V4d\ý™'Ì)¼¹¬`ÓFõŒv endstream endobj 2025 0 obj << /Length1 1647 /Length2 12070 /Length3 0 /Length 12916 /Filter /FlateDecode >> stream xÚ­wUT\í–-îîNáî®Áƒ»‚P¸;wwww÷àî.!¸î’ËÿŸ>}zœ{û¥o?Tý­¹|®o½©È”Õ˜DMíŒRv¶ÎLl̬üE±‹“ª¢Ÿ<“*ÐÜEÆÙÈðq!PQ‰;œAv¶FÎ@~€Ð 4°³Øøøø¨âvöŽ s g­†ªã¿$©Œ=þ‰|X:ÌmÔ®@k;{ ­ó‡‹ÿ±¡p¶Ì@Ö@€¸’²ŽŒâgígE Àg -Ðñ£eck @d´uÒÌìÖÿ8LìlMA•æÄüáKÔ `p²š€>Ì€î&@û¿ F€=ÐÑääôñ 9Ìl?zàlÙšX»˜þ•À‡ÜÌîï„ìí>4l>°gÊvNÎN&Ž {gÀGTe ©äélaäüWl'Ð °3ûÐ4µ3qù«¤¿±7¨³ÈÖ à twþ+–1` r²·6òøˆýáÌÞôw.N [óeÀpš9šZœ>Ü|øþ«;ÿªð_ª7²··öøÛÚîo­ÿÌäì´6cF`cÿˆiâüÛd‹Àò×¼ÈØšÙØXÿ!7u±ÿ'æ tü»A´Í ÝGF¦v¶ÖS ‹¢óGHíÿŒeæÿ=’ÿ(þ_!ø…Þÿ?rÿ£ÿr‰ÿïó¿»–r±¶V4²ù€ìÀÇ¢1²|ì€<à¯ecmäøká€Lþ/S#µÇgüïÚZÀdý>ÿþGQ[ó†˜Ø¸˜¹þ!9IÜ¦Ê g €™‘õGóþ–kØš­A¶À’ÿîï‡+ë¿aê +Û¿Øàú´5ý÷>xû»–Ï*ZòR ÿͶý[Yùc*œÕ=ì€ÿˆ¤¥`gúŸ‡¿\‰‰Ù¹¼˜Ø¸ùLì<¬—ñã:ò±súü?Âþíˆí_g#gG;@—•™•• ðñÿÏß¿N_ÿͤ­‰é_s¤ældkú1zÿ)ø 6qqtü`üïmðQù?Ï_ Ðh‚°¶lg"d™–™î\‡›;<)¡ÛßË9l_Ú¨^TàWc×ó--l›¯Òðµ6˜¹išÿ½ÝcéÔþm_–þ`´Çš¦'ø;ŸÈ‡‚®¯}ƒº“‡á €E¿9ý—V”×Å¢üÔnV̓IUý’WâéNG¸‹:? ×?,Ê{{_“Ô†Xì.´&0ŒºÂÓ_Ô‰Ç÷4ƒc#ÃC=WÐ}û„ 9±ðTF¸¾É§dIÎ†Ž·&ïÐÏ®<.ˆnÈ^˜éo.þ¶äivâõžóOì~´¥7Ózb©NkM¬ž÷âB€P¢à× o©:Š“ëK´ý~;TV¢äMYŒï®Ú~w«)ÈÞR,´g2î×FyZFÚœ­R?hU׉3ÕîÅ\TZŽ¿`%äg¯8OçÏöD“Ö6Èõ5ÛJÒÄ¿$ÀŒmá¸K—x+Œ¨OÁq [QaxÆç>ŸßŸ9Щ֍™±ŸÖ¯°–TZ®E]{¾6XðHûN«bucæcÎûèÊT{\±<´²µÔHßô‰o~Ç+ÏùÁ=\Í ñ;1G^ä%YåöàJ+&ú²¦dm  ï%Y7{+_‘.\òÊŒ{*Þ&l\Ùˆ‹Û8³8¯'_AdJ¯Šg®‚ìk8Ú(ݾA¾` NP4ŠYü G·›s AÇkŠø)vYâM˜¾€°¯ÇÄ×EFñW –îOpc¬ld!HĈœš²0òß©«¾³¨2ñ÷ßÈФàe"árëwŠ‚…|Ñ;dXj>–ú~ÛG¡^9m3"1ØWÓ çsk¿Â,Eäçqu\Œá¡à†ÌG±Hû:^¡48-|1ƒÑ¬¶úª£™@¬,èóhÈžž.¦RXùÄÙ.ë[te’G}šOÊp`SÝT'ÞãNÚŒM @ßS°ÈÇõ§×ÄÇ_ÎB _Kº€[ ‰#+” îj9,jB—ÕZy&Ÿi&ú¤—MYë¢'ý 'à6"ùð0ãHŸLs=,šþÌ«ØQ4žñcäy\®Cò¾ ¡ÏÜîܨuuøkñŸ̲- i4?ßÚœgäÊô­Rwôö¶‰œÑ¼®U~c߬¤£Ôw9 êÒíKu+¼‰}·¨vâÁz=Â4ý´é7 &7CF…CwŸûYæàí¢²·@xÜVÜJèZÑg¸šÇçS#Ö>¸OZ²³g-¶3K”縳ñ§oŒ¢[ŸíŒ}ðŽ•0K M©¡Œ¡Go’º™X½k·g¥ÞgŠÙøaº{Ñô4sHÙ#MÅQZtƒ÷«’ýó+é¯CG2¨UÎEÌãÉ3b¹‚Oè)w4‹Ç,ÕUÖ¼t”Ú)Dn8æ$q(…BÀ²i¨mvº@äÕq>¤7ììo$T¼ Êv…´ÜßÏKz—C›+.ó·daºLzo%ß!~·t«æ¶Níåç­ÛE 7~ów›Ñ. Ƹc§7µaï‘&„ 3(H¹sYo ÈiʃP2àÒâ:Ø¡÷X<Š;ðjÂ)à/ò]È[ó»Ë88Ì*2ïý‚8”o2 ,×ñDxøŽïw.LGgœOmį v›BY¸¾»ZÒ°©í z wK-`õ«Øæ‡=mÿ$»)‹˜åTËÉf™/%òuj¬*BÜ.9˜uCzÕvyÜÃ6bWßcUÕ,Plœü|ÐåèÿÜQtØItŤ[hV)†²ùýséÃÒÚä¯ï>79 (Ôt:oàßãÕÀ%cç§¶ÐñZHúB–ýZmšVMöª‡Â5wM˜ì8ç\݉õ…È?fñ3b‡òzå˜í½r^BAä²{\:–÷Rh»NƒÞ7˜am½z°w²8£¦_Dèz §Æâñ¼˜)–ðÁG*É­»G46Ç3ÚYɶé¤îG)aÊãåž~醛¶T„½$6Tì“B75¢Cê¶ÀÇ»ÁwÜ'jv¸Õܼ 25“ lÑ`á˜Ì퟊áX²1GxŽXÈç|Al­ú;\˜}j@Ÿ^L:®/àÔx¦Ë [•Ž^Wˆð°žeĉD96¯üɦNi:×Xö’јµ Ž}å܇ pj\Ù†°†z¡5Žïy\ à¬b&×—/üHÉpu˜4¯5ääÔu<@bA1hê§¼N)Bykè€û-¨(0®ƒ³EÑÕÎ=ÎÇz†ï&¸¨;¦ŽÙDJ¶ø•v»-Ž_cT™Ãn¼]æm„=˜xgÅ:!ÑGKÈùÎÚö ½<˜ãY§œˆÅî'„;Úy¶Níú{Ï9Ã×°ª€Ô¥§¾Ëš=¨¸"¼¸ªµ4Å2—àíÐÞèMÎùý”Æ{J¢£š‘£ÚþÄÂíR›”Ó»È6sUÛ¶Ø5z†[ó¡´øãÜ*¦G†÷..;™™‹í¥Æv3. Z!­k ¶~Ó¼“m˜3ª·oª– Š9\Qñ¥X ¤½ÚŸ&EÂ{4‚ÑùÅ,l>–Uøãpí‘-Î}¹¸®çÉÀ§Â¶-ãüâ½®ù›KáTà ”Œ«à ƒf Â<]W¹ÎÊ«üýª2ïÖx ~ýáä–×|ŽÏNKß=¡VÈ'„Pf”ADó¶ÊyŸ2œŽ²{ãñœ¨»ýÞSî´\¬ ÿAä|Qô'æg<)ü‚œ‰_Pƒ^H´b”F;1¡GS]d×~,æ½ eÐݘ)‹ÙûJ‘èïÞ±žçF&+f}ÎRd%9ÿÒh)`{в$÷äg žË@£ív¹N$.€ÈõuVf^œM?¢›°pj)âSRÞor4\Ö0yölN”óä;€¿9uj§º®|p9_è/"ƒ¸“ë]°^xæÙr™T^s‘šE‹éÍð|ÉŽó"Ç!óµçË]Dºô™ß=eb‹ýyÃòÕ/yƒþCÈý<§JÙZ{ÓZ<ìÂÝÝÔ˜â–4·ÐÖ»K—IªA²\‰¼fKÆÉc­r0 ·å…79ž_ ­o<ÇêGʹcÝ;êZ7ëxÚÑú[I?ËßÊÞnÉÃnb…}‘¡dÌ•XÝΙ[6¦JÌ‹9àÅÝîØ>)Jß~}£‰‡oVÿlGãy³¶lË«¿¸ü.>±ú¬|>…ÁRÅ}—ûÃå5Õ‰”¯(Aš¼™ZË©øØ·ˆ@à–‚Èxè†)›ÎÝ•D"žJÑ{rËܬjÉØJ¿WIáð–âÛpTeÌ×û¼cš± v)£î¤ª¦±*ì[AgØJäëZÖÇìÚ0Ùmï_rr=Löíêò»‡jˆ.æÛÊP·(øÖF1¹«E4güŠ›•OjÖدҳ=)jH6JâP™'2®ÍŒ4\n…‰â—rLŸöxl¾qÏ–Án"¾Ö»ÛåÍO§9%9è_C¤m¦FÕË·ŽŽ3I–«h;#Šp™ÌåáZOà ~ÎŽA ,PÖ'É«(VFqu \“d_!/ô¥o³Íï|iOŸ•¤ªz^¦îÜMUqÛi£™¾)LnÐØ[zÂßýzgï %íè4‰Eì­QÐ|iŽ{¦9­ßýеÄ•'¡ĕøËÎÌûPÍ­ †÷[C ×!–›+g纺‘HœÁÓ*ì¡ÁNã‹ QÇ#sdÚru3Á{¦´ìRW6?š»kßKš¶ê#Îác‘/2…Ö$èÃ¥¼K Ì Uˆ#™œMá¬i˜Ï(ŒÜs]n@hsÄ‘vY bÉ|ÿÒˆA÷°LéwTëeõ$x¥!™·³~ µ´ç ºDβéó‡¶$m›988‰bãÂ}×DŠŠÍ0zzÛ:Ïê`úá+G”— Qa0Ø_³xq@òÖœtî|Óå“<Õ¬ ‚V;Ù™+kv:¼ô×Gþˆ{ÔC¿H@´ª†<½¥voþã—謲˜·ÛcÅëÆ~Ö‡4ª àW¥(‹Aï —ÃA·yòM4 †¶ä"<uÕNÖ"—ËŒû355N!óÙ+Šåæeh>Ñ9‘chCžl-›wïiú —¾´0«ä?«^FÖ£· &Š}ÃrJÚT3okè·‹ÊñËÅÕ÷e¬ÂU4Õ&Lj~UBŸ¨ÉL§aó ŠK¼÷ìèÈ@†”fÜZѹ7Àž«& ÿä½O¦i¦i¯¸þÈ-:еµXõV 3ͺVzæ¸ÝîŸÜ^jÞê^‹³5^ÃO¢$€ªl^è ¾.îæ¯ü- ÷)]ƒO=%µÈyÍ´Ëe¹÷šÆC¨Æ8¿a6eŒ+bDŒôÛ ½O|5KxRÁIÚ¹Ô”ÍVWoÍÖ-÷Ã~vý;³GåR;„ DŒ„þIS~sÍùå9Œ;2­­ËeÍÎ éû”þ@€M~’Å#Σ$Š(>ê@å Þ0xðå˜Dì황…k“à:Ÿ‚ò¨kÞ‘©„”à)TÝklŸOù”ùMÒ§ÑVéx©Dê…§í °;L ¹3¾ ø As¾.“Ý5'8–Þhƒ?מּÃçÏf±*d5!¹Ý`jC n«2—Ÿ0»5 E¬›€Ùz³ ²qf0löuõQ“Í#ËYæ9VKTrÛDÌ ¡$Ý +Íë(« ÁëßOn™i U}MàûvÑH­ýÀÖé,ò„¡æ¡$DŸ›_ô‹wqpy´Ôy¡£ñ w7­¯®^–oÚ}í 4 ²×1)µÒì¶§àûo™'*Ç4L56N½HÅt§îæŽ0yòøóB³åý&BçwØ‚g3JÎsÏF°ÖF6J¯Iýs½lÚ˜‚. }—µ€Âä«ÄçƒûLGöǃ¹]ܪ'9Öl½ ¡aù8é§Q;'Ê.$F|½$%!ËØ·]õůߣ.'Š¿×„ŸRº’M±³w}r7ULü· u üù–àkŽû ¡HJ˜´\7©Ùñþ?ΕºÞ(ŠôU;‰ön•&L0*q¥mÜœ8 5ù&ŒbŸ˜,·²ÿI¯'býP¦IŒ¹§R¿]vîµ?û÷¢êà*ôï4÷`4’©dÛGKÝ}½{zrû™’ x¥b ©ÌÉ Dð3Â8¬Ç–ýng,•œÑFŽ€…ˆ5ä °]ý? Z,g>V£˜Ùviîþú•@RfÌÔ¡Þ¸9t&ýýô±L¡å¼m ™ÓÛçb0ÖaÏß>¦×?¤»ã ª‚ä国7<ø3CkB^iï»Æ+€g„K^ÔUÀ¸€d÷sÜMUò`…Ç¢0E‘Y߸ .SîUÆ•-$¢~0).ƒŸ\°ãësº¡‘-ö|-Ì~Z “p^´YÙ´iŸ9,áí¹‘^r–šXç/B©ÐÍ>¡™é瑆—1¯TŠo×üÔ½©u•ø­À{IµW-záÅq?éM¼ê›-&qjz3ŰǯÖòÄŠ¸O×2h~õk±¦Œ–/@T‡8­äŽÕ² #3úíÆc¤Ecâ0ÂΗÖzÆYüODwëy†íü:téÊw…Ñ•b n­^wîò²©Ô[åç—‘ñŸ;Nnq–Tû›>i-$Íô I¤D¡³,ñt˜‹žD0æ¢B|åõnAõ®Íã Ãtok¥”„?W´ß+Í8±~˧ÙÿÈû j}üÓoÄp“´“¢1²õ¢=©bêF¶øpóÂscêx_ǺL¹Nf@ÖCÑ\仪!ä_?ÿv|8+H/îÕÖ’á¹=¹•ô ‹û5 .pZ3=úVË+«¾í®»D,wÄ–O«÷9]`$ê÷âë{îO¹m¹ÝhZ·ü‚%G&ë%<©ò_¼akx"Çi"Ëʲ)ÆÐÚîYCäÔP&‡hš:qãÑÆ‚ôÚŽévdý ó´"é™Ó‰¬!þÕW]¹ æã†÷qÂ`îú#ê£Cn\¶V3ö¡­c[à[U(dm+¸ÃI6„c·ŸÂ™nRš£žÕŽÌy†àc̸£L` XfF%Y5Êjçµí„$˜º|ßÐß`u\Å?Û!v«¤-xÿFFÝ‚dpʉK/jŽln¦vÇf⬺R/3.3†Kšù.Cg/òµ¡ìëÂOq9öâ¤zÎûݵÒkÍ*êî„AŒ¼RFƒ®«6g2ó‹n^Õ=ˆÙº`ñ};t}'ûk_)ÓÍRX†l}좃G*Ù¨'j#Öåù,w¤ù“}K[^…½·Á DSÖt>Ç#¦õœ° =K7©Ò›ö¨P!>Æå¢^ªCF3Q²á¬B¯jݼsíY\ØêjVÅ|k›) ¥q>Œ­`q‘Ýø t¬–žãm>RµqfÔºPÎŒÅ;üŸxÊOxOÀœ 0bl öWÙ±Á°+¦ÈúL cÃòD¹ñ+ýjmR‡ñHˆzRu/LßüÂ:0î\,’áËÈû°U^úrÜ¢HFë/“ô†sœA//j ÖfJ&|›®ë@`±æÜlG0TØK™wñÊWsN\iÀ ¡î¡š€Þ ù‰¥68_k^­°ã­-MÞ ÍÂ$å;(À:Ùõ"ÆèßJ¶ÔñrÛ :t‘†°rŸæõ ß{E@öMv]]’‚…pã¤ó¡âPOð(®¾^(böEkÐñzt¦"—/î¾SuJt/DmÖ5:2)Ä:æ+ŒìïçqÇbæáZà>Yi‚ÄFœc²µæÊW7P/çãñš­”,Û0ð7™§þ䊥A›ü“ôê„iêÎÎÉ­zù¦gØhv$®µieù~ʽ_p¨S¨¡Ç P]7T¸¥U÷2Ëê¹Ð wz)ƒÝ?2Ï`OkóÕ7Í7«½Öøö{úm/ö'_ŽS  ™W­æê ”¯DðÏçïtigÖVCEê1Dve¢¯ ê)»àTž+Å&ò¸á¾Uät*x¬áD¬žá|Úù"ñ¸éI3½³6 27©È5ðQó1%:sSV"~3ñIS•Íæ4[V:¡Ìé)®¦(™$Ë´<á*9ûŽLëzc$HEÌ}õâ½ð £+ihðÑnýª†®®ßEÃTTÈkب ©¡NXÓ+2˪ÈïEßþ܇ 6ýÁúº®sB¨6ŸäÔ]QáÊ4ßýãÍ`ZUbUà €ß}ò©Ñ wìÎJ& E~™ý1Bñí¥žÈdù[·Ü%ç”#BWލqUËä»jÇూ”Áá $¡ôÔ²$Ö ®J«Ì¸\2ÁBsølØ;Œ[:tlôMòtF íŸ.ˆ&¢îhí¬;Äo=Ä A¤!$OªŒyÿµÆ$ûµtÁ®(¤‰m5ˆª˜MRKðò7HXHU¼½“sýHÛù·yÛŠíªs*ÜBxåÛŒKge•7éHů#‹øIO½¾£ÊöpjŽGM9F»ñUïºQm=jôa¢ªl3 u…áøæç¬¼ß˜ý`M~+¢OŒB&øž½6hõ‚sö=ˆïÿ‚lÕ°c‹´ç—¡’&tp½O:³aS^¿'|~Ñ ¨ ß9µÅI !IÌάŽÑç½?t§¯Â+Þ™š ð×”†1Ò—­Ô_7î´, 8RƦOÊËûÑ•ÚÔP.¥Ž¾p ñð…lv1$â™(ý}§4dÚ´^¢‡¤Ä×÷xv@ݹDä|#‡Ü:ä'Ëþ+Ä8› ö¬'Áº3^*ø+’§È ÕÙ^ù©~äæ­{þÆH’Vb i0p¿£‘õã/ÙØNZ;z6› ÖkÙ)œfÆÊáUžÚ¼²Àÿ4Ë%CôÿÖSkú¬[}ÐHŒ)’þbj£Deï›e”9Câ\¹REN<á¡_·[?K=úOÿøŽ{­ª’°ª¶;µMM çkËÂU¾¹"›/$b: L¬í–3Úǰܱ¾þÛCÎG°Uu¾¤4']HuH$lÀ®}óÅÐqƒÞ&×¶f%ÊŒÅ[ÎÐ{bŒçéÀ{hÃânÖì¯ –\ר# Fãe8NZwË'›ÖQVyI¹Q!tÛ¿y*ý%mÒœ75ï‡ô!•°P™'DðéQÕ#›Ï*í—‚n7š¾¥,V4F‹Ñªƒ§<ÉËÉWˆ-ùª>Á{»Îb½ÎåÒ‚K—›†Ô/u°.{ŒÎ`>4ï¿òôcÀù$ß³ÅÍ`‡ÎA_CÛÀê¶è—|&òyÒ“îafŸ>u›qHfHJÒ)o2é-·å¦U4Ò=%ë\Ò@ µ ma¾G{õ¨¨š›¾:õjöífÈOÓø÷.æYˆ^Z¬—ôÈÒ£<ÃL»†ÈÞ‹p!`~[Q´D¯î?K©üiJº KµÃðkÄýµ ¿®­ün6÷¡WüøyøJw€áZžMÖo‰ôÕþAÆ -z¹<…ÛA&—e£NÖºÍàxÈ ½ ¢&¥}/4Y1Ü©öD~‡X›”}tVÀâ)½¢BH~ ?;ÏHQ/î6VfSË® †æúb*m% ¶³êRO ²…t!ó7ÓÔ±Á.n1v´”b«EAHÜh…÷G‚LÒRc´l힬ý,,×gHø@]•ÈÝɈhNˆÈ÷*îh Ýñ„/<¿÷ÃG^õ%È'`iÓãÙ( ~ypAÇÌiçc”÷¼ºëç4$!Mu"w›Yþ(G3!•~·fk3‡1ñ¥rbÞ§·¬kÇ žû®á¸R^ºÖý´éõ‹ û<‡Ï€”xM2R‚Ú.ÞT‰79 ÂLÌßXÃ`ÉgKº»—ªÉ¥íú«ý:xÍí‰_ž±6bn>ÉL°»:\>e.›Ë¡Ž)•ÆS” à¸#æìKàD¾TÚŽ èô >îêv¥†+¶˜¾{‰­¾4Í‘»­y­!èÓ±×íçëZùyJeßè"-‰Ûãž„CÄœ/€3_·5èVl7uðüºB 3_Æ^¢VkøÚYU~§½º¤öIQ7ÜÕ¸-'m3ÐxÍZ 6O%žIñ:i€)`Èʇ¸?OXêäm$¬ëOÖ}üioˆúÎÞ¥z]àF¸ÕaÝf'ÚGñó*Œ•ãÖ¨à“œØ›p`øEõ„užÚ-uƒ4!#zÇÃY"c4gX!,÷îÞ¨-ÕÐöl²G‰«±u‘‘¡ ùil™aì§Ì呯?Õ”6â‚§eò 8hÛ?ºtþYº+ÞZ_ÓÆ|*Iè6ZÒ9î½s'¦-1oózt`Ñ-Ûß/Í ÔSY,uµúb*¡F˜cp!Øš__¥5íªŽÄBÄiž°^÷ìnu7GãÜüQkâ×ÕеŒ­,ÛÔÏže˜;šŸÒ£ßR¼î“ž™²£tXô âÉ:*îeòÎtê •Ï:BåeÄ6×…ãtô^ò(BVh“XÖm†~Gz÷ŒTò¡¬/àN—(2JcZÅ;Ѽ°6Têzô#[ð$Ó¿ƒ‡— ­ã‡çB)Fµþãˆý§C†wÖ‹–ƒq»š¿\tLí“·@?,ûõÖ'Ÿ„¬O—š!ÍlRþB*-Ì¢•(¢Û½ Ã+51xËÃò7ö‘p i¸a©J¹„Ï\½JëøëÚ3|>ªœ#Ÿ.þàu–Ìæ×ö• v¼j¨~Õ…OtÝòˆnäºæ:ÃÂ"\ŸCª;2 ,ÚäΔ=VÊ?üe+V€LöЀnDú”™>³ñÊ¥#lr\?+Ѽ‹´Ï1Ùe¯ÔABžk0]ìfrõ6îý1"¹µFMÍtô÷ãTõý&Ruæo†næÒ UiLŽÝbñ;¾^ùîи¸H8FÇ/Çr„Pý~Ë:Îò|HãƒLVz¡³´bF6™ ŒËŒ:º ¼N‡æ³O2ý;µÔ V¡4Œ·1ä •ûË^•á‚°œ¤¢LKì8¾ÅMHR™ÏO–¼ZOA¾€÷"Ì2ùÅ`nÐ’2´´µöÔûªX®Hz•`556ûB!ª¸Þfš¾üë%àábï=‘¢h´çÚX#ªLC5Ù‹…q!óÁê;Ø]ê«LÞŠÝ ô:̨cê ‹À¸ððe(#-Z¬¯yrÃŽ–À£žN§ÀÄ|}XkDý[Ats´Îh,³¯äÊé ÆiÇ*sÑ/T*ðè†â[ÛÒB!"íg³]¨¸%'±ãù÷èU1¥gO!|bƒârR¯åwÎu.oB¤n)›CK¤ y|IÊkÈÛÕšËyÉ>„Ô¿ælð¬ø K?šöE–¬[ïZ0løOéL‚§Ýî‘#ùíV¯Ý•‚«lðüÛãRuÿx,Zæ©ãß±"VºVßOý¸¬n…öÑÛ;EPÑÊCAúKÓXÎ,Å3óÛÓ0vz½Úp±j¨©Ã«k…¨Sçé¥^ð,ôçýRtËÕì‡i@›@ÌTÐÕ~S‡.¦må?Ö:ÕÒŸÂL‰ßô9Ø’ÖŽcK³\6{‡/¡ë'˜D`tѪà§2Bê>÷Éx{xm½6&,û¦6OQ,Añ9"-“ðè·iD\n÷ÚÜвX¼Êžõ_Ÿíû0]<ó_ðGóð.n®¬4¸ —æ]+Xo{‚´ø)롃ß7Ø)‹2æ°©Cõà,·{å3Òƒ7rbòâñØDd»ár.‹3¢òêekBÏ@è‚Ò•¿l‰_Ÿ×žÙÅñ¿¬!¸% ãQŸèÒÊÝ*wÞŸV˜3”Zn¼Q@Äd2…m^®mwŽlê¾øéÒN-[n¤¬Tâü3턎1êðµs3æàÑ(A-'s®Û~m|Ê„®ŽT'{ Ú²vtý¦wyÚ$¼ãmL˜zIA-À‘»u]tû ñöºyX y”NšO)@OÅz^¸UÚYÔå>$Ýû“µ’4O‚«ûõõ—1£¹N¸à’¶…Æ#Œ~ÃnÍ(#Ÿ!/_¢!/(ýðØ¢ŸªPè²7Ɉ¾uu`Y‰~¡ë@触<íIíÕz¹'¯c–iy_…ÜÝÉc¸"âÂ!üë… ìð f«-xõP¿‰\DÞ<ðí‹<Ì åÁ,B<1âOìÁÍøx²§ßyÉçµè ùgtÔ§Xð3óWDGq’ý>zév* %$è—Lž 7ˆ(º íæ8‚zž‹] ‡n@[Ú8braÝL¶@9‡½ª]K}²jì8at[¡ €Ç‚™Æäñ¦/´Uôh¤"î_¯KÉÏ|šŒÀ–›/ÓáŸÑ³‹úN‘šÖ `å(D'¾ÕáÓÜ)~ù6Á7c 1h3¯§1âð°ò4=Æ5#¦êKr®xnZýÝ}õ3—ó±'X÷ÙÐY{¥;+£<Ÿ1ãtIö‹Z=z2„ºó•…žgèW¬ö'yÁj·A’R?•®DN¸:IÑÞtì„â‹ñYx×9¯b´ ­ß_5¨/^›iáHNí";Gâ¸Aÿ¥¡ ¶Å¼Ñä®Md©‹eêÆòÈéŒ%ÂÚ* †@wø‡ºúåõu6¬g˜ °D”ÕMoMM̘›Ýž6ž=Y"Q¢cêË­þ³òAÿz™úÂã°¾Z·\Çm¾hâÏ~ ý5²ÉJß$’PÆSß6‰ëÓ_‡Y02›Šú•ÖyÞ Í<¦Xž©~†q¨-Ü¥^;™('À$X:ÎÐØ¼Y |¤Õràgƨ@ˆ~ê,nÈ”<›ìAç×ß®îE‹äP×ïS¢Óš¼/’ÛÖþ²M(@I'§°ð¨êðm{nz‡Ú.µJ©G.œb±Pd½w zÌ›þ#8Ä3:ªÊ–ãJÔ•3ªt öã{€€/3·p¹5ï3 œaO倣ЅIó.Zß´]´ñÉOÈ9ê¤ ›'—ÜÚ–¾¦¯¼½™¸ånÃ!¢ÜdÄúƒ 7«P*¸šSç ¾" twt³lnÈÞe{]z«Ì·=’Ÿl¢Jz¬q]ÁQÞ[¼†_xÝÖiork†¥ Ÿ~m4en~¾‡D\jcAª¹Öi§Kš‘l‚ ðÍ;(F²ÌØ›z–k§+5‡ÑÃÅÛÓ'‡ qơǓý`9¡Â<¡>h±òÎ?¢Îµ‰ót1,ÕsŸ8×÷\ ¡vúfC‹ó6)º|žÑî]²o}ÄóWàU€ƒÞñ…~á)dŽ0UÏ­Ó¬¸±––ï(2¨²û¦Ê–}üÖ°Ù+_ ý•Í1–TîrdÊš,G™24zÄ£ÀnŒ+—š&âÏùl¤”d¬ì-ÆRßRæø÷Ü1‰î«Ú£¨É‘ÜöTìFM%œtuN!½ãÓ©/¢Œüb¸Ò{·©f¬â.ÝšTrÚ™0Îç&PÂ;vû¥ÈÊo£¬úÊ ƒÎ21¸Â3I¯ŒvqÛÛ¦~êÀT|üƒíóÂÇ;{\å…‘Ôñ÷iˆó }cÂA¦bă«)îh7#òâä YFy_GD„Ÿµºþ¬¿:ã½í™"NÄ8hø…Y y9â̽ô„“ÍÙáQ#Á·ÞÉßäÏ›!¶Qç“ù+ö ¹Mfm[ª%Ç’+¼ÄÉK8FÚïAÈ•§À´Z½¼}—”8!,w°É ɉ×*?5`ò´Œ5¹ áÞL\ë×Ûpf8&¨qïÕÊ~,¡Fº|¾°°Ky tRæh‡¥Q×\Ùõ:+½l }-se6[ºT1§3Î4ª_i¢”9´…Ö$íÃl›Ð.YE‡9Dòy“ìÁf§\ùOu86U‚&ɬ6³ÐG_Ó¯ ¤ðÓx6Þ~d÷ͼwŽe/–™dÚ 2¬#Í="Ô³oÆŠìùÍFý)ŠÝ=0Þ †TxF)ò†¨µÚ{“‡—“†ŠfW íqú*¼¥_³oï,ÖÑñ^~˜µá=Eñ™ðp”û&¤þa¿aŒxëŒ.¯)爉• §Œ[“o)þå¢^Í'¯¸«‘[ìØZ»–uc;Æà®Íõûkqön]Êxf®¦Ìèéϸ@Fr5U !ðygCÁÓt8„ÈÚ±ƒÎ,(Á•O[•§îå.><,˜qKéEmÓç<¾¯•ÂGCþ’©º©;ëœù" ¬µˆ!>ÍÚe¥e¤¦K{S嘰¥Š,ìnödxÝpBL¡3CR‡ W'ÿô™ÏÉ‘¯P)Œ‹ ”¯ö]w#Ú°x¼P£Jy±"ÊÉUp?×§ÿÈœåy-ÖGïËpþDË’9a–ÁϘÐl²¿ÞÅBÈN`Ž¢Y;¬Ÿ1+Ș~]büDs×ibÐä¸Å˜S NR±õ®#)‚¥ÙûC/Xÿp«ÂW¿‘Ê·/‚9pžØ†oF½¾I@ÞéìÙb›,dÃ=þÐ ‘©Aú½V_)uŠâ†*ÒsJ¬ÄO¦øKX(rÏ}É×TkŽ¢¾ö¥Áe}ð¥þ–è(„t`¦§èP˜¶;×&ꨉ=ç‘Ûñ9ub° ‰`zZ‹vC4ôLÏâè`Ïò`Bäé!]‚nõfòRf±9w—ÄÙÞÀWެ”’²uñœ•ÄsìÒ 2?LVÛ >=bÏ4mIÀ¼íŠñ+ÒC2bnfïÜ5ov÷t‡BW 0ž×}¹ì(º­ÊÌJ½mŠ©žñ"Y-ƒÝÑRA¨Ê³0¦ÂÆ+™ø(Ô¡z;’õ½qO3·¦#h)Ì„T°¯øÌ«Ëógp Q‰âón‰\•IØÝ²=êÔyf°vƒ»+‚ä4(¡¤A°¡Ùåvº5Pâ¿O'¯¡H(Jڽź̡û£1#Cû'D¿ìºˆ|ÈíÙ4;oõe~|1u™©%•ùзå\¿LïÛj¼)Òãf€Ho™‰„RÖ‘4™åïýŒ;‚ˆï#J°:ëysŠ`B¸ßÉ[Vá(d v~r{úbß™·Tg ¡¹ Š`ô2õ|¾´»é<è{þñ&§3%ðkÂøG¯xŠ$|H˜»ªˆÑ”XrODg/Û¸:hð[˜'8ϯu×Ûÿö™ endstream endobj 1940 0 obj << /Type /ObjStm /N 100 /First 979 /Length 3078 /Filter /FlateDecode >> stream xÚí[YoG~ç¯èÇ],̾/À`ÙQb[¾äCN =PäXâš"eŽ_¿U} {x %jY 0FSÓ]ÝU]ßW}pÆÜKIá^ âÞñGA¡B!Âq,‘Bí<‘Fb#Š…Fœ(Ðç^s¢¥ï€ ‰ ]iEŒ UšXaP0ÄK´—Ä1‡–8…&5#ΣIí‰wØÚ€]æ°Î¹dÐ5šæ2 "¸@ ,$0!ˆ?ýÔ¡¯§“þÛjN>úúÉ1¡ïªïsrÞ*ìýÝ› *z—U‡>KÕx>ÃYg’Ó=­f“Å´_ÍâÌÊ^Tƒaïhò|B‹Ú뮀ìqŠw?{½)t‚úÁ»lè ùf¦àãÇß~'À]Çl×Bª£ÑùvEé .Û5(âÌÕª¨À´¶{(J%º­íŠB«.ƒto(n¯€h;’wO‹uð4;<Í÷¯¡(p…èJ˜|Z DÐ ×®¨œë*¦Û¥e]fd»¢pª+•ß ¼^ $ï<Ã6€çÏï žo‚'xýVEÃX×ò=zTJv÷±,•‚Äó튰¦tùò®1i6@ÆàrŽ~GcÆÑ¸=ql(ŽÒt¹äíŠ×B·+âTë6NŒ«Š rËíaZ Ù寷+J)º–É¿äÖ®CnõÁƒÞ~7wÍ»+ŠÆZ@’·+jǻܺ=•îj¾‡ÊÀ¢ {°VE©LvžíŠÜ‰`oùã†3ëÜ€½ð¡ÜpzOn4wqcEÑhÜ0íŠÚBN:×®¨ G袌uøzÐÅ笇¿šCÊ~Â@ÊNó¨ƒ#pòÉŽ'¡1F.ßËòºM’]’s}ݶ/ê‚S1˜Aà*^5ŽœoÂ1ì>±.{׊#þÆ›úQVÕ9ð=(m„P:U— Œ©MÛUÃ}ä }ÅóTŽôF“ØG¨ƒrŒb #–ôêvIF¸CY*o¢¨jTü·âžãœcõŠÎ×uù ñ)ÚËølÎÈÍHšŒä¾ÉÝ2Á[&WˆT‰bæ&X¸kBÖÑ€>ò…~z±Œ|N¦: Ṳ̀É$ç$Ìí3¹®NÜÔ®DR_3>ä!Èå½sé{’í†qg˘ùúT.¼1 w~FÏHd0…”]Æ‚Äw‰aè}Õ9çà |×tà´‰}ä+L›‚-y[ TF;G2#áÒÚ‘ukdӈʼ̈‡‘¦(â]¥–h”(•cË(åò2úõøpÆ,PÊþ¦Hžç Üq?©fýéðf>™ÆøËÞ5Ô¼::{þâì_/‡×‹Ù‹ÉøäÁÑd4QïrFTT= §‹J’h _:9ËálñhÖdz…N+½›_«áåÕ.à4Pź\˜}:ï†ýGãËQEX‡¾W×€¼C?¦FJzèãª7Å=ÿ?è#zDÓŸéSzJßÒíÍæÕt8ûB/èE¯ÿe6êÍ®hŸhE?ÓKz9­z @¯èþ›~¡#zMÇt<WtB'ð÷†Þ@ûÉ€~¥S:£±ýœÎ¯¦UEçLè‚.ƃj:ëO¦ýFÿ ßéú'ý³šNþ£p<çã² OŠT"UMÆ/ŽïhJÚä±ô¹¿LEüÿDQHi‚=À”ÊT)=ú4N¥r‰Î%·  ošÊDV.wìÓ8ufƒiÀZÊL錃6ixÚ%ã†'¬ŒH4r‰Õ4nô endstream endobj 2030 0 obj << /Type /ObjStm /N 100 /First 903 /Length 1929 /Filter /FlateDecode >> stream xÚ¥™Ýª\¹…ïû)ö –êG?` a 7 Iæ.äÂÃ`0Î`‡äí³Ô[ÚÕ%ëÈÄçÂu·jUÕWÚ{ínÇ$õGÌŽ2TŠ‚…æƒ)±„t,Te=b |$A@EpÆ? !E”Jù†"‡öV=bä‚CޤmcD³h[ñ%Ö#Q[ä|$¼ˆÊx'"Wû“"âRGºW˜ò-µr‹ð¡i*"´¢æZQam9s<´¤ÖIÆ‚"ÈkFT±9ËAœ±9c³(6'lV® ›TÅæ”±Y±9·Þ› zÐÖBE- T 6£=ŠÍ,Gn BÇ͔°(P&:˜6Gl4¨àÌŠ5b³¢AkN Êh34È ä‚ rEƒ‚%H¾ ”ˆ æ„…`f¹½áö Š0þ AtÜþ`s#!Ú>.H%sÆFì+J7AƒRQ¦ A©µ‰I«Ÿ£AÈàm4ˆÞŽ•Á%`Q‘‘€…Ð 8¢04Äñ&¡A¯¹µ‚1 Ô èÐ%¦t\Ú8ÛG¥Í¾€Äý| LÆ»¤ÔŽºà„ƒ‚Ð'ln3eœà„™bÍ UÆYM9`3JI]°`s‘6l®í#ÈÊ@K9¶™(ÜÚå °9æ#3øaÔ¸ÚÌ6ßLjÈÜŽ£Adh›s;ÿh0—Ð6W|Nh0×Ä··ooo~ýïïOÇ›¿½ÿíéËíÍÏÿúúéùH7¼þü„Õý* Ç/·7úðÏ/Çßcˆð×Næ¹H¥/@ã\”Ü8ZXüãöîݤªõ”iäú¢§Êè¿/zªL¯I•©w•9Ž…ŽÅ¨BFN)¯I¥£™4„ó.a,FWUÿŸTgñWª6ó»LÜÊàVpÍœ {8½&•t\E{é%u¤%Eé—^“ªöfjè9ëèªR‹ž³²¼"U•N©êÖ>´:N}íÕòÝYÑ&U=áÀÒè{2ìJ¦GtNñ(tÊ•r–Yål ÖÞHÏÿƒib—$Œò\PÏiœëv÷¼/„ä5¹šÍÜuTÆF®;˼sž¿í6¹ÚCG?Çãp…q¸zÒûCÇwRàcHÞMÎ8*c1”–Cøë×ç>5±?~øüåù³Â?¿oëó`_Ø®ÈÏŸ`H}ïšIËÞi³èóõç§ߟuÚ«):\ÑçmõÅh=_ýåé?Ï÷¨oµb2-ÞjÅG­e]‘.­PwZ!;-]h…bZ²Õ"§WZlZa£¥µû¸e{Z±Æ>nÙGÇ>®ØGc¶ìƒcW샱ßz­:¯UNZÆ~ëµâ¼vTé´Ä¼V¶^+Îkuåµb^+[¯çµ²òZ1¯•­×ŠóZYy­˜×ÊÖkÅy­¬¼VÌkå%¯=£Wî*æ®ò»öÊúsî(åþ¤;+û“îOø†0éùÙiÇ}áìp¸PÏ2J>Ÿ§Ç«ž%ÎIl$³«Ã¸271Ó•Ùt§h7„•銙®Ì¦ëlv]‰Ù¬Ì6;ÁrÇtP"‡.øÍ)m>³¯œMÌqev\_¢syºê¾-W/L׌YfcIΔ+˳b™­ØG;+–•‹Y±ÌVþ.ÕþÃè[-5ðªk­½ªD ¼Æ:ö•¸›ëU扮—ùÒ9S›–ÌÓÊ)eÕ®xámôã‡eufÅÆÀu­Õ£W•°g]£;£Ç:¬QØ «ö,¶ùp\ßúaV—„ÝDÆI_Û³M„òÎT½_%Ÿ‘ݯÍä2–)#ÙÉO‘ªwñÕ¡%›[¬»èè¦H«)F›bÔ­–›é²®hÊq§Üèâêžm&!oµœ™ÄÕÝ5í°¥íÌzT9i]ì©îØSuìÂ=™YS}}Ž«h±è‰vŠ•$wi\…—éî ’¹8M.~ÉžIʪAsqš\|Ž~Oåÿ?ÝÕó² endstream endobj 2034 0 obj << /Type /ObjStm /N 100 /First 889 /Length 2621 /Filter /FlateDecode >> stream xÚ}Y]‹%¹ }ï_QÛ ›µdK¶aY @XB’·°ÍpI2;KÏÍ’ŸIõaË媗é{ueùèHòqÕ`%,˜ó’YþÄäº ùK Vù™a‰¤¼$ýNq!õKuaHò—®á,Yí1/…³üKMQbÕhP’²%",!/€úÈÞ%xç$+1ˆsªô‚!,q†Ê 0ù€ ä˜(ò%«¹è—,æ"ÎUÒ„‚ ±"èÎ\t?Ù‡3æô,ûÅ"‘Iœ“:+|Rç¤ù™Ä™… HJ)Lq.šSDåGœ•¬*y¦%Ê/ ™D¼x‰JÊõ e‰±Š%ˆsÒ€’`$!R‰$p$½ÈTÉ.æI.–/’[Ô$%µ¨ÄÊÇd$–‚|‘¼ù–„W²JQ²’¤’,X$§D²™¤”ˆÊ‹¸$V€â—A‚‹_V–įD)ŠøUКÈ_…Î  &©ˆ½HdI"ÉŸÊR§H E/ŸÄ“” ½@H?‰{Y•¾ ¬Ÿ£l#Ÿ`ak²$"«^\8£¶BÒ$K‘=¤×r —X[!íÙVí@Z+/©è–\’ú‘ôg­Y?áR€¬ÉâR"˜_¢¹Ê¾°Ö4Œ’‹Æ“þ+U{!H )¯J©´‡‚üShd™•JÖ{’`]ѳÌA fK: ^~øáåû¼?ÿóÐV’üÛË÷¿—öªëÇ¿¾}<~yÚ®ß?¿Ù”Ú·Ÿÿ“ßÊúÛ?ö±ri±è6Vt±`+µXp‹kkC9Ä G,ÎóXÛê8Y-¥=VÇa5ô«ëöëŸÞ?¾>°¿¼é·²}û×ÿÊÊïxܤ•|RŸ, [P¿Å¾ÿ¶[P« ÕÙY=¨Õƒ†z$p«ëlu«@Ê·«]=hVÔê‘â<ÖºzŠ$5¢c½c!º~§ìˆOŽxòÄÇaËØˆ·ÄG7Ó2ÄV†w±ÀÁ³±ˆ­(8e_½ÆÂÙ°c+ÆÛÕ®(8+ ¶¢@ÇÚVÏ@ã.øÝXðÓ³[‹ˆõ¶ˆÐˆ¸P÷nÃý|Ø6ÜsÙº&» iܰU' Õ ¡ç7Ì8 ­:ç«WˆaVûj¨Å­>\Ó­ì n,B½; æ¶IºÛ¤xÀá ö£Oc««LVïg³¬.|»º¯®Þ'±¨ÅÂy¬uõI#>ߟÙ!qe8`Zv˜ ¹•!ß–‹ƒ?+CneÈCx–.7â™ç{¯»eŸ`Æ>Áì„q“VÆëÉE×e^hÜ·Æw“ ÜŠHCѵñ„jõ t»{†xVjõ p+¹ÚNq¥V«Ä·±\åh6$©•$ám,72iÖC©±oÙŽnd6”>VlÜÇ[î£ã>͸ûxË=:îãŒ{lÜã-÷è¸3î±qܯ«qÆ66¶¡\øÞLn˜ÐOì‡ Â°#´šÀP˜åw—Ù§@ààþíâx ­6Á׆ûÒLÏ¿Ðj1¨ô~à¬tN5¯‰ô Ñnmu]&]ßtxaÇUt¨ið Á.N黽Nš½‰ñ Å>Lßè3!n:\n˜u’ôapö£=óÞ„q7É2{bmÏ×a€ÝÛ€Ùu»Ý¢¦a¶¦Ùå¤éάÚk›xQìû7òÝˬvÔÌæÄbúAßIᮓš`µîÝIÜë½Æw—÷ý„Ùâ—=þOoŸ_—~óÇ/Ÿ¾ûûóíãùºðtùæÏÏÇçßÁ«>õ¤Î‚f¡ÎÕ²¾Û,É,ØYÈ,ùgõþùý9ì»ûý kµüp µ¾ö®—Hµ x Ì  · 1ÈCie‹7¿_ßþõÐ>)è ’_º©õßýN·$ä⃂٪³é åšÍ¦(øµ6GœÍ&é ³!hŽW0m˜0¹°Ymž PÌVœ­ª-9è’aE— R)ãZ/@6*¯¹;yØmvödo3ÞÖ[óa3ÞªKF‡ jp\ꬉ-Ïa*‚æxSyÛºæðVÞ*Fg«fsÐ%›p1mJD]ïùµs¼‰Ê[%•·ÊàlÊ[ÍŽ#4Þ<çh¼×hD¬Ï6g˜Š 9^ÁÔ¹ Áõ¥ ¬ÉJjq| ÂÊ®ÿ_Íž «ëcÍ\ymnØŠ®w»JAkí‘¡(=OVÍzŠ­˜!ôЬ8.°Ð/ Y!¸ZÇ€nc-cˆ/›É-Ô"†Ô7Š’æ3¢{nð´ñƒëYäO•hD¹ó0*Q‚®7¡ K?ÕQsßÞÁÕ׿6M«bßqѤ*õÜE6S_ý¨D÷tF%j{-»›4w9A§ðtïÃmO<Š›ÚLG{¼I‰ÂзR¢ÐII‰Bw$%Í}ûoº¸›x]`Sž¶ÿâÜ}ÙLýé•”'t<¥b&—C5Sß½ð\?tçÝiŽ”¦í?ÓwW£ÉI)MÑÉ )MÑ©)M‘ÝBM=®¯*NèèP`º„§ý²¬¹ÎÏ:>”6_ mV¢(öõÉJ¹ŽÊJqÏpV¢¨ôYe»ìB_Ú¬¹3ί~ùPØ|%b¹Øý¹oå¬Dqê7V¥sX”(¦>…¢D±»(4Óü(·Œ•++J»*%ŠkOTQ¢²‡ÇfêK[”¨ìîÍ¥˜iÎ]9d¬\ÉX©¶¾‡§×>Õ®ÿntªÝþÝ­ Úå?:¯h¦yß•CÆê•ŒU%*;ͪF”Ó¬jD¹»QîÄ®FTv±,÷<ç®RQ¯dì]_*ô]÷®–ä-bÊî÷þ›L,Ì}<õ‰-v_…Ljsùz=|&Ä®Ï踑óõñéùþå—oí°”p²Zÿï¬ÎnC°#ììzÜßJtfkðÙÁ¼âñ®'ØÝ¯6xÆIf‡“ÝNä“}=NÎyÙ1ç¼L¥×²õ xd~ÁM&ÈpÊžÂãÙlîç’Ù#aÜ/IÝ”|aÔÙíjo’€×Áßrø?¨¸R€ endstream endobj 2144 0 obj << /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.11)/Keywords() /CreationDate (D:20141105133654Z) /ModDate (D:20141105133654Z) /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.1415926-1.40.11-2.2 (TeX Live 2010) kpathsea version 6.0.0) >> endobj 2066 0 obj << /Type /ObjStm /N 78 /First 802 /Length 3153 /Filter /FlateDecode >> stream xÚ[Mo&· ¾ûW̱oÚú , Ý[Ó¤hÚS°'1‚ö ±÷Ð_ò™‘ã‘Ä™·{ðBKJâó¥Í\É‹[‚+uñ\´AKä¨ ^2©¤º¥V¯ ¿pA#,Þ'ÖV\|L:AM‹Ï¡j+/¾úr#­"“:ÈôF‹–Öye‚TÕÉ¥ %ÓSF+,Ñ¥¤­¸ÄÑJKL!k+/±ø(6dªHNç£*ÈYñ-ÉÃ$ñ’b jÜ-)'Àð‹˜…,,‰1³0Î>ë,œ–”ó’K¬bC“I+…â=Z´”˜Ñ—"ê%xç–,Þù¥ºè´–rÖV\j"È’xÔA–—ÊÑÝH«,ä×~u¡$äE õ³w¼i|¼w ûµ%ሬóù ‰ŠÀÇ…IÜ$-‰‡óÑkSâb%±â%"®¨ ½—ˆ‹ÏÔŽ’Ù¼’d’¢–‚“¦8Y›^šTÔVØ£4%ø!°Z b-DÖyerù/'±ÄZȬ&$3ä¿@ÄZ¨ŒyÅZ`§Rq–üÁyZþ¼“0ÉŸ:ÜGMµB2ùƒc¢X‹¹H”µ4 !¾ð’hе¸™kÉ9Å+)듺@šb- #mm‚xXþ$‹ß¼¹¹ûþáããÓòÓŸžy~ÿùÓŸoÅ¥—…% nù×òZ\.Ša”׋ú2 rR¹8¤—óE¡ýºW¿»¹ûîýÇ÷Ï#®]ÿw7÷÷‡à.’hÖà/škƒXm'IÁ^Eîò@!$P§„R¼ÍAqí‘P—Ѽ¢òœ{1@Å„b #7[ËJ'®è}µë@€4‘†@Kü)§N* Ð;T½%K¤gŠ(nÑ RÎ6rºì{ÛÀ5î”{ß êZÏ;q†Ø÷âÕÁ=ûP!˜ÄÅD¯vÝÐ3æê=¬œR>:ôí=½¦Aî9E¬“~>ÎÃÜpWq&|Å´ënמ{¯%ø¸ bqŸ IÓ¸öL“®ùTú8¥±íúté}=cªÞi©@<à©÷¾LêâTûI(ùµï½V¦hƒßü£R™ÕÅ!õ.Îêâ4¬ØŒ4Vl†yè óÐþâ`¢Ï»RŸáÃÉÜ… 's¿3œ<Ôÿ¬NήÇYàä~ŽâÐùý®ÌKw}Y‹EŸÈ%ÀDOªDˆ@ºt|ïû’ѹ§ZŠÖ2¼"Úõ>_u¹ P*â€]]S¿ªBïý^±w¥>ç«î]ÕÞ_Ï®· ½ªƒãP+ޱ§T“îKeÅÁ£°õ¿âtìR©vÝЫ‹åXÝ›€‹‡dÂY2öʼnťÏ%ò÷ $äA±¬»Y¤t@pÃ:Ž;"¨=OšUJ'¬eªÒs¹‚ÖqÜAZWl 45ZT5cbðÇÝ^¥'bç¦*=»4UéÙx̓ ÕewL0¬×05ª'W?g!!†9 RÕȂ׸Çä¦*uËaŠnXÇqGyM›8IQ^Ãs™ªOqSž^fQâ${y­?±–‚ÖqÜ”àK'½ÂÕ‡ìúziì´m5´ -͵¸N¬¯+êN‹Jüzuì´xÚ¦é¾Ñ£Ÿ >¥×wg˜OÐzC‹›}†¶@kц»Ùr™º›\<£ãe:øœ¶FŒ¼A —“ä\À%y#öHoÕ%½~ØÞiÕÝÜ)m¾LŸÒÆ}&½~ÄÜi ´í ­E m¸;¹€‹JŠéŒvÊ—éàSÚy=Ò^ÇÍ'%c à”’‘)¸ÝnÝ&Z¸;NÁ'­¿G´³¿LŸÓFIJE +–+mÜ”R1hãm\R9vž•´rEIÃe*#Ú«mÜ­Rµh#bÕ¢ wW‹6Ü]Oi—YI+W”4ÜÃR5hãæ•È ]12hãN•È «U"£.T¸›è”ö¬¤Õ+J.kÉÚfpgKl쮸º%6Ê!.c‰rˆ;Yv†Ëp Ë“O &ègƒOiã:—QZp«ËÎÈZŸÕŒ\Àu-[[#nmÙÚqy˾žÑ¦YI£+J®ÙÚ]qÌÖîŠû]F.àB—ƒ1÷º —ázwûÆéö¬¤ñ% ň«_ŽÆ Ä 0GÃe¸fkkÄ}0'càZ˜S9£Í³’ÆW”4\0sš 3v×౜ -"–³¡…»s1´ë­Öi’ó¤¤éà3ÚÁ!bÆî"fì®Á!bÅ¢ˆ‹6Ü] Ú¸>åz–ä@?|JÛ#bÆîð)4»kÀç¿\ Úø ˜­1àc`6¶Æ€o‚™Ni{™>§ˆ‘E#‹6"FÆÀ—ÂLíwO~_3ŸÓž”´ÎKZÀgäl<<|VÌl¬ü°Þ [´1>;W‡/ÓÁ/ÐÿþþW'Õ`]/Ò(­Q[ƒZƒ·Æø!ØÛÏ¿üåÇç‡ßŸÅÜ—‡ßo½Ë£‘í C¡5bk¤Öh@Æš»M\š×!x1ÑP§†:5ÔÛC‚4Œ¦&à4´ò„DnsƒœäÜ|—ŠLS ù…Ã믵^,4Ä¥!. qiŽ+ Åø±Î»ûªÊû4š) vihKóYijCPýµ¿Ïxý™w3UìÚ`׿¼ÚPÔæ¼ƒ$÷_d—I×F¡6 Ô(Ps"54¯üóõg]Í5ÔPc@Í¡ÔÐ_÷ÖîóŽf‰n ¸1àæOnh8Ÿ|qp9úb°áF„‘í? Ûÿ÷%ewc°YõÛFB»ÎÁOʶFnÒõÊ—øÖ[³«ÔflÌ|c¶=à§h[#~Ók«:®>ï7߸ùÆm{톟°m þ–‡¬Ý‰¤Ù ]hìBø¦}’8íƒ4ütnk4v¡± ] £]䨞øÐb›ØØÄ«Ø°L^ºíëÉYÒ¶Çö3«àcý–T˜z­m°í[9ü’ïÈ5s¾}|’þø ÌФÿþï—ÇåîoÏ>ÿvs÷OÙ!žtC‡¯nî~øúüáý§UWÑz¤Á¯ñòÏ¿>Þýçé±u‡ð»‡Ÿ?<½ys÷ý×O?9iüx÷ûý}h‚ÆÛûûw‚åî‡/Ÿþ ÜKYSC!þY5Î endstream endobj 2145 0 obj << /Type /XRef /Index [0 2146] /Size 2146 /W [1 3 1] /Root 2143 0 R /Info 2144 0 R /ID [ ] /Length 5165 /Filter /FlateDecode >> stream xÚ%š[pùUÆçtf$Ë­›eëfɲ$˲d[’ÛòÈ–|‘d[]|·ä‹lÙVð¾Tè‚ÉR•lŠÛîÖL–Ú…"[„¡ i(–åe!lUjš„Jï¦È¦ T HæA!M!,óûöåg¯{Ú=ÿó¾œ3™L&ó®“É8Ëdškÿ8É='“ß¹„fÀq2nÑE»Hè‚,Zm°äÐêÐæ ó -‡6GØv¡íE»@Øv£@;Oè&´~´s„Í mí,a+hC;6K¸´£M£ÍîûÐN£!ìhËh§ »@7ÚU´i°¿¦UôÝ „½ MßíáÐÖŠ6Ex  µ¡$ChûÐ|ÂC`­íáa0‚Ö‰6IxŒ¢íG› GÑzÑÆ ãhhÇ µamM»è 'ÐŽ¡%Ô D;ަÃëËœB›E%ÔBL£-¡éÔ´ˆgЮ¡*³h×Ñôµ”¼sh7І •ø hд$2Í<ÚC´!B®æÄla7š–Sf½Œæ¡ .‚%´&4¥¢–ѺÑú WÀ*ZšÒ¸® iû¯‚khò¤,pÜ@;ˆ¶Ÿð&¸…vMö¹ ÖÑFк 7À´)4Yï.¸‡v ­“ð>ØD+ É¶ÀC´ hû·À#´94Yþ1x‚6ÖN¸]CT+öº\† l f"Š=rÐ.¢µRìQí.õQìQMŠBŠ=ªG»F­F{T+öl9ƒÖDH±G»Ñv¡Qç‘Єֈ¶›PhAS‘ècúÏÛÐT$»uâíh*ý—|óhÚ0Z=!«u¢)):]V<êFSRr„d+Úæ£é«’é¨í$Z–—DýhJž– ‡EhJžCˆ;£!4%OKŒ³£a4­}†ªˆFÐXûªrDEE£h—ОRÑQ´Ëhä7¢’£ãh‹h)öhB¬âˆbN QˆÕ‡„{tB¬â«ˆbN¡­£mRìÑ4ÚžŒ(öè Ú´{„{4‹¶‰†Ÿ#Š=:‡¶v‡bjÞͦíhÔBD±Góhܪë„{D±§ø JE{D±§h·)öˆbO¹9T©Áˆb(ö”›Cõ!ÅQì©Öú(öˆbOµ~×)öˆbO¹¸UjgŠ=-¢]!ÔD±§ÜDª:”N’bOo¢­ê Rìé-4†§¶juO´eB-ì&7ܪ¾‚’ò ^u‰P }„¦uÑ×—ž qѯ^&¬­¸•jÅÞðÝšÍêB}™KhjÿoÎ{‚v‘Ð5{çîÕÂ:CãÎY'̃z4®4Õ9° m ía#ØÆE¡zžÐMh2È9ÂfЂƕ¿z–°´¡=F›%ÜÚÑtÎ3„{Am r±ñ aèDãî\=MغѴˆÓ„=`?wj°ô¡qרž"<úѸT§‚4îÕ“„ƒ`»AÕ'<†Ñ””„‡Á¨ê$á0Š6Š6A8Ž¢ÉÔã„ÇÀq4.FÕã„Ú06ƒ¦]tÐhܱ«G uB'Ñ΢éðú2§Ð¸CTG µÓhºðèÔ´ˆgÐdþB%`M…­¯¥äÕ²š÷[І •xnT>OFU-‰LÃéký†e8®¾ÖOË)³R«þQ´ÂE€•}ùT©(jÐGë'\«hºP(kà šÖ ð*à:ésâUYà:àšèŸGÛOxP¿>­Ê>·×IŸƒV» 7×D_Å.ëÝÜ/}ÕB'á}@”äSÙöàa§$ÿí#ÜÐxB©ÊòeP’'Û kYpÔŠýŸ;¹á–d®=h¨’ÌÕFèžàKº:¶ÖÎ¥¤Åi!̃z4-N3aØ-ÓzŸ—†»-S~Y5[¦ù£úË|–)¯¥+­[æÖ[µ“ü³OhK‹eÞ~E¡N£ìû@è] ô€ý ô ` C`#àcà(8Žƒq0&Á àƒ˜{j'þ®Nœj”_p‰ó`œgÀ ˜gÁ9p\s`,€‹à¸ Á(‚e°VÁ¸®‚kà:¸t.·Àm°6ÀpÜ÷Á&x‚-ð<OK /}Ê2ïüª¼vÍ2?¹¢—Ç,ÀHIÔü’à—¤ìx#iX*Ák ÙOpD‚m|àƒ$ø Á >HðA‚|àƒ$ø Á >HðA‚|àƒ„Ä'ø 1Ëüû;:q¼‘P –O°E‚-l‘`‹[$Ø"Á ¶H°E‚-’“[$§.IðA‚|àƒ$ø Á >HðA‚|àƒ$ø Á >HðA‚|àƒ$ø Á >HðA‚|àƒ$X ±Lõ–¾4¶HÈ~²a™þ“4¼‘ð¸Ï…ÌI0C²i™ÿúWmÅ ¶H°E‚-’mÞ˜3À€ÖoË2?Z’¦ ÏUž}n›½oP"Eîâ¼ €Z@èõ_ïûõfõGu¨fžnÀe ¥Ep‰­jìz­ïz™ï¼ÂÕh5kûOm‚^pt˜õþXú8ÉeÀUxðÄãég—AÀ{|‘÷â€ÙðWõÙC|_±¹ä^‡‹¼ÇÞÞ‹c€wöâ1 …ÐA}pØlrZ‡šà›ç(„S€×ð¢zÒìô?j¿çw‚õœ3f _ÖV^¾‹ç¯×Å9ÀKuq\Z¿Ë`,pÎìâtRæmó蛯k`ÕìÊk—+à&¸n¶‘•¦kâ]þZ·Ìî¥ÚpÜÚzÜ›àx¶À#ð<®ÂQ*®B‡ªâÜTÁMÜTÁM•<ŸØ0ÛܯOd;÷’þÂflVi8§RóÚû—µëUðP¥ÝìC;Òöõ}ºÍž•†¹*êû¨©sÀì“_Ðb¸å»uvõsÈQE]|P!ñ•CV»ÏëcjåL5fÔ‰™0û½_ÓV R)€)³Ï™45fNµ^È~eÚìßû¾3@}•Z.¿ø}i˜¡¢¾ ¨` ¨`JÌ™½ö/Ú™·"žUrA#6ÕU°lö·´‹4²_!«,PY3ûÚ›ÚzýÊ çr^Ñâó ©­ÚÊ6M}ŒÄWj~ùÆnrÔ~˜u ò|€š.PË¢¨Q¡]Ôžh4% ­€vBAÙdöíuDÍïá*õt Ü\ž®ƒ;à.اùÄ@¢°Ð{(t:…^ÐbVý±ßÅ9PHàÐg–~U!=Ð’º=t ‡Àॿp šýߢv¦‰P8xý/Œ^ú “€Wý‚xI/Ì^Í ¼ÇFÍ©{MG9É÷˜dui†Î^× —ÀisšþNû眳3—›§t& ê¯]6§cN»,‚P»t}WšÚmk@ 5nµÑ®5ÏnµÌn5Ê6€bÕœž½:ÏÔ6Æ_e RÆ e RÆ e RÆ e5§s¦ŸÑÎø¥¬æT3PK ç”Õˆ"ñeµŸº€gÎü«úØ^VH½– Ž>(«t¨{t¨g4Ô)"ÉånsV{u¨CŠAHi”Õü©%oý³ÚŠ7Êjþý²Z>d¿¬fÍ1sî~IûñÏ{E.P¨¶ Ž(«YCÎËjÑœ4fÊs€ä•Ir¹æƒ­Ðg¹yÍ@.æ¥Ú#—e_¦¹R&ÝeÒ]&µåšžù>{•/CÏ#ÔéÞ·Ìù`ª­d¿üÜ3çÛÒîR[~hÎ/¾+t¿÷‰Çæ|ô°þһЖ9ŸQºS’œš9ÿ…\RÒ’î”t§¤;%¿)׃´ýÔä<%ç)9OÉyJÎS ;Íšó‰]:ò¾Ñc`°Ä)¶H)«¤ø Å)>HñAŠR|⃤ø ¥öSJ<= è¦x#¥òRŸb†” @ŠÒ)@ŧæüú°Îoœs¹ÈŠ;@ëBs/-\’r Kuº8"Å)ŽHqDŠ#RµêpDªÝP[ŽL§$>=iÎóÿ£ÿòÿÑMÀµ3\Ç  åC=7=ªÓ†‡RõÍjÿ©?סn°3WÑTÍ3ü’ÒO±EÊå!Å/)WT¶À*)W”«@ª]Ì©øtÜ—û~ydÎßPÈäiÔƒ° 葳´‚6 œ·Ô™ó…Ïé(Ü Ÿv€&sþbCÚ^¾BuƒZf^ÿˆ6p#xºô9Ÿý@eßcÎ_½ª‚£`Øœ7?(í0ðA­Î¿vU3›’.ÒS`Ô2óÍum=΂s€+úÓ `Á¬9ßyQ;ÏU°®Õï5pÜÀ²9ÿ9­‘ø§÷ÁP“R'¤'i-l­’w´ó¶¹gÞ§7=[°°á.sÞ}¿´Ý€%›©IEH*BRr¡ ÷–=dýB–3l77—ê(@w]²Ò/)é\Xç… À(è3·é}lPØ!©‡+Rçá²:Ï_Ü>Ã1s÷}Z#Gá1pèÂ= HT¨õ)s{¿®ÉGxœd+œä($G¡îºä($¡þK=©¦Uj¼ …$*œ6·ßtdÞSBR’²”…¤,ä©%\3÷ÈÏi?2ò8êªLÞB^«B²Òu·(]Úž® wÌ|KŸUKª–ÁíwTÝu€V±—z]j´…½F@3ØóíY¾­çš;ÿ›:ma¯ÐøõöÚ½%äqË÷t³éôm½^@·Ö;èÑzYoÐõº°Þa@oÓ£ééu˜»üDÿ9ýX¬zta½1@ïÕ;è¸zã€>«ÇÓ’GwÕó=Uo œ´I½@sÔ; Îóà˜+ `î•tº¯.€‹à¸ –€^¿–×DoÕÜÛô±5p\×ÀmpÓÜ{ŸÑ.·ÀàÔ» îžê=¬=žª<ž<¥ûö&¡zÿ.Úº¹÷¿¡ã©%Ÿ1÷ó¯¤;Ð<€têøgÍýémmÕP€ï¨íσC ™Ôâ'ÓûºX’ÚÀ3÷C—t\ä€$ä7è5÷Ùk+9Èt@¦2é€Ld5P­’Õ€¬¤10÷Wž×Hr@.ƒ s?þûÒô4LV²`• Èjà›û‰·´¿0¨ê†F~ƒYsŸÿm çÁ"8oî‹ï)‰Èj@ƒ%sË© j†Á`ÅÜO}[Ú*¸®šûÒ÷¤‘Úà& ¿Á s{EÔff˜¨ãPKÔËÑrè©ï®¹¯ü²4lƒ-s_ý¦4Ò“世Õ/êtc³ìØ‹ú‹üƵ„¾Þ¡[Äd:&µ1 ëÍýò€¶2íêPä7&¿1ùÉoL~ck:€†4v¬Ñ å·˜[yN‡¢ÎcÒ×®Êoÿµ4,“îXƒÒk2bî·~K»î˜LÇšP¿1É‹ÇÍýÎi K4¡~c’kBãÚUô?´~1åkêãZ.øoÚ@.cŠ8¦`c m¹DÆÔt¼hîOîh?J7&Ý1y‹W-›½¡ TmLÎcª6&µ1鎩î˜Å·,ëõjgÒó“И$ÇqL­Æ÷-Û9¡ý¨ä˜JŽ™ øÊÂ#Ëü‰¶><&û´l}€|DzϿ2ó³–=1¤ßºøŒü<`à7æö>Iö5HÓ~Ìãý&Ëδê³Í€¼ø{^Ÿ‘®Ï¬ÒgæwZvnE;w~á3Üð¹;ûüÅï¼ûGÀ e‹/èC€&›Ï„Ãg ï3Á÷yÇñG-{ýMí7xòŸùÌ/}ß²w^ÒVö>Ã{Ÿi½ÏxÞ§œ}fšþËn}Zû1Ró™¡ùL°ªZÍžæ-ûLŸvaŒïknżÌ״Ц‰OÐ/ZöÈøO­f¤>?1ò5vÒüè†e¾_û16ö™˜øJã†eŸý¾6h¦DgÖ×$‰Ñ‘ÏÈ´¤­[–}î[ú‹³ÏEÚWº·-÷K›jÓkŽS+ì²~’QRg–AsIƒ rÉp7_Ldó¥Ëþî´v&ñŒtóŒtó róLnóLZó¥VË~ö íGâÕæÕæÐæÐæËæKjŠuYöO¿¤I<3×<3×|IÝ‚Ì>ó¥˾¶Gûñ“%F«ù’º«äœ jž¹i¾¤áËQ˾ñSÚ™©`IÂÌ™Œæ™‡æ€æbæKS–ýŠòËì3ÏÄ3ÏÄ3_Ò”[ËÄܯ4cÙ¯×~X@ƒCM2™_æ5¿dj™×Ô’Ye¾tÙ²oê‹VWÿýµdu·F­î7vë¯e«{Ãô׊Õýï[úkÕrÅè/ Ñ©·*Ë^m´Üso³¡ª¢Ó¸ºÉrÏÿ½~Yƒáv0ÜŽ~‰Å€vG¿iÃk;Ì*w8Þg¿£¶é×Yú9–~…áv¸‰ìàºì¸ÃïÐ:Aè=`?è}àèÁCà‡Á8FÁ8 Žã`L€Ipøà$˜§@LƒÓà ˜³à,8΃ `̃p\—Á"XE° VÀ*X³Ü+«¥âó?›ùv wl endstream endobj startxref 436596 %%EOF bitstring-bitstring-3.1.5/doc/conf.py000066400000000000000000000160671271665413600176210ustar00rootroot00000000000000# -*- coding: utf-8 -*- # # bitstring documentation build configuration file, created by # sphinx-quickstart on Mon Dec 7 14:17:11 2009. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. sys.path.append(os.path.abspath('../')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['sphinx.ext.autodoc']#, 'sphinxjp.themecore'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'bitstring' copyright = u'2016, Scott Griffiths' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '3.1' # The full version, including alpha/beta/rc tags. release = '3.1.4' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. language = 'en' # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :meth: etc. cross-reference text. add_function_parentheses = False # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'bizstyle' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. main_colour = "#ffbbbb" html_theme_options = { # "rightsidebar": "true", } # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". html_title = "bitstring documentation" # A shorter title for the navigation bar. Default is the same as html_title. html_short_title = 'bitstring' # The name of an image file (relative to this directory) to place at the top # of the sidebar. html_logo = 'bitstring_logo_small.png' # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. html_use_modindex = False # If false, no index is generated. html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. html_show_sourcelink = False # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'bitstringdoc' html_show_sphinx = False html_show_copyright = False # Epub stuff epub_author = 'Scott Griffiths' epub_publisher = 'Broken Symmetry Publishing' # -- Options for LaTeX output -------------------------------------------------- # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'bitstring.tex', u'bitstring Documentation', u'Scott Griffiths', 'manual', 'True'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. latex_logo = "bitstring_logo.png" # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. latex_use_parts = True # Additional stuff for the LaTeX preamble. latex_preamble = """ """ titlepage = """ \\begin{titlepage} \\begin{center} \\vspace*{2cm} \\includegraphics[width=0.60\\textwidth]{bitstring_logo.png} \\emph{A Python module to help you manage your bits}\\\\[3cm] {\\large by Scott Griffiths }\\\\[3cm] {version %s}\\\\[0.5cm] {\\today}\\\\[1.5cm] \\vfill \\includegraphics[width=0.3\\textwidth]{python-logo.png} {github.com/scott-griffiths/bitstring} \\end{center} \\end{titlepage} \\cleardoublepage """ % release latex_elements = {'preamble': '\setcounter{tocdepth}{2}', 'fncychap': '\\usepackage[Bjarne]{fncychap}', 'maketitle': titlepage, 'papersize': 'a4paper', 'pointsize': '12pt', } # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. latex_use_modindex = False latex_use_index = True bitstring-bitstring-3.1.5/doc/constbitarray.rst000066400000000000000000000520041271665413600217270ustar00rootroot00000000000000.. currentmodule:: bitstring The Bits class ----------------------- .. class:: Bits([auto, length, offset, **kwargs]) Creates a new bitstring. You must specify either no initialiser, just an ``auto`` value, or one of the keyword arguments ``bytes``, ``bin``, ``hex``, ``oct``, ``uint``, ``int``, ``uintbe``, ``intbe``, ``uintle``, ``intle``, ``uintne``, ``intne``, ``se``, ``ue``, ``sie``, ``uie``, ``float``, ``floatbe``, ``floatle``, ``floatne``, ``bool`` or ``filename``. If no initialiser is given then a zeroed bitstring of ``length`` bits is created. The initialiser for the :class:`Bits` class is precisely the same as for :class:`BitArray`, :class:`BitStream` and :class:`ConstBitStream`. ``offset`` is available when using the ``bytes`` or ``filename`` initialisers. It gives a number of bits to ignore at the start of the bitstring. Specifying ``length`` is mandatory when using the various integer initialisers. It must be large enough that a bitstring can contain the integer in ``length`` bits. It must also be specified for the float initialisers (the only valid values are 32 and 64). It is optional for the ``bytes`` and ``filename`` initialisers and can be used to truncate data from the end of the input value. :: >>> s1 = Bits(hex='0x934') >>> s2 = Bits(oct='0o4464') >>> s3 = Bits(bin='0b001000110100') >>> s4 = Bits(int=-1740, length=12) >>> s5 = Bits(uint=2356, length=12) >>> s6 = Bits(bytes=b'\x93@', length=12) >>> s1 == s2 == s3 == s4 == s5 == s6 True For information on the use of ``auto`` see :ref:`auto_init`. :: >>> s = Bits('uint:12=32, 0b110') >>> t = Bits('0o755, ue:12, int:3=-1') .. method:: all(value[, pos]) Returns ``True`` if all of the specified bits are all set to *value*, otherwise returns ``False``. If *value* is ``True`` then ``1`` bits are checked for, otherwise ``0`` bits are checked for. *pos* should be an iterable of bit positions. Negative numbers are treated in the same way as slice indices and it will raise an :exc:`IndexError` if ``pos < -s.len`` or ``pos > s.len``. It defaults to the whole bitstring. >>> s = Bits('int:15=-1') >>> s.all(True, [3, 4, 12, 13]) True >>> s.all(1) True .. method:: any(value[, pos]) Returns ``True`` if any of the specified bits are set to *value*, otherwise returns ``False``. If *value* is ``True`` then ``1`` bits are checked for, otherwise ``0`` bits are checked for. *pos* should be an iterable of bit positions. Negative numbers are treated in the same way as slice indices and it will raise an :exc:`IndexError` if ``pos < -s.len`` or ``pos > s.len``. It defaults to the whole bitstring. >>> s = Bits('0b11011100') >>> s.any(False, range(6)) True >>> s.any(1) True .. method:: count(value) Returns the number of bits set to *value*. *value* can be ``True`` or ``False`` or anything that can be cast to a bool, so you could equally use ``1`` or ``0``. >>> s = BitString(1000000) >>> s.set(1, [4, 44, 444444]) >>> s.count(1) 3 >>> s.count(False) 999997 .. method:: cut(bits[, start, end, count]) Returns a generator for slices of the bitstring of length *bits*. At most *count* items are returned and the range is given by the slice *[start:end]*, which defaults to the whole bitstring. :: >>> s = BitString('0x1234') >>> for nibble in s.cut(4): ... s.prepend(nibble) >>> print(s) 0x43211234 .. method:: endswith(bs[, start, end]) Returns ``True`` if the bitstring ends with the sub-string *bs*, otherwise returns ``False``. A slice can be given using the *start* and *end* bit positions and defaults to the whole bitstring. :: >>> s = Bits('0x35e22') >>> s.endswith('0b10, 0x22') True >>> s.endswith('0x22', start=13) False .. method:: find(bs[, start, end, bytealigned]) Searches for *bs* in the current bitstring and sets :attr:`pos` to the start of *bs* and returns it in a tuple if found, otherwise it returns an empty tuple. The reason for returning the bit position in a tuple is so that it evaluates as True even if the bit position is zero. This allows constructs such as ``if s.find('0xb3'):`` to work as expected. If *bytealigned* is ``True`` then it will look for *bs* only at byte aligned positions (which is generally much faster than searching for it in every possible bit position). *start* and *end* give the search range and default to the whole bitstring. :: >>> s = Bits('0x0023122') >>> s.find('0b000100', bytealigned=True) (16,) .. method:: findall(bs[, start, end, count, bytealigned]) Searches for all occurrences of *bs* (even overlapping ones) and returns a generator of their bit positions. If *bytealigned* is ``True`` then *bs* will only be looked for at byte aligned positions. *start* and *end* optionally define a search range and default to the whole bitstring. The *count* paramater limits the number of items that will be found - the default is to find all occurences. :: >>> s = Bits('0xab220101')*5 >>> list(s.findall('0x22', bytealigned=True)) [8, 40, 72, 104, 136] .. method:: join(sequence) Returns the concatenation of the bitstrings in the iterable *sequence* joined with ``self`` as a separator. :: >>> s = Bits().join(['0x0001ee', 'uint:24=13', '0b0111']) >>> print(s) 0x0001ee00000d7 >>> s = Bits('0b1').join(['0b0']*5) >>> print(s.bin) 010101010 .. method:: rfind(bs[, start, end, bytealigned]) Searches backwards for *bs* in the current bitstring and sets :attr:`pos` to the start of *bs* and returns it in a tuple if found, otherwise it returns an empty tuple. The reason for returning the bit position in a tuple is so that it evaluates as True even if the bit position is zero. This allows constructs such as ``if s.rfind('0xb3'):`` to work as expected. If *bytealigned* is ``True`` then it will look for *bs* only at byte aligned positions. *start* and *end* give the search range and default to ``0`` and :attr:`len` respectively. Note that as it's a reverse search it will start at *end* and finish at *start*. :: >>> s = Bits('0o031544') >>> s.rfind('0b100') (15,) >>> s.rfind('0b100', end=17) (12,) .. method:: split(delimiter[, start, end, count, bytealigned]) Splits the bitstring into sections that start with *delimiter*. Returns a generator for bitstring objects. The first item generated is always the bits before the first occurrence of delimiter (even if empty). A slice can be optionally specified with *start* and *end*, while *count* specifies the maximum number of items generated. If *bytealigned* is ``True`` then the delimiter will only be found if it starts at a byte aligned position. :: >>> s = Bits('0x42423') >>> [bs.bin for bs in s.split('0x4')] ['', '01000', '01001000', '0100011'] .. method:: startswith(bs[, start, end]) Returns ``True`` if the bitstring starts with the sub-string *bs*, otherwise returns ``False``. A slice can be given using the *start* and *end* bit positions and defaults to the whole bitstring. .. method:: tobytes() Returns the bitstring as a ``bytes`` object (equivalent to a ``str`` in Python 2.7). The returned value will be padded at the end with between zero and seven ``0`` bits to make it byte aligned. This method can also be used to output your bitstring to a file - just open a file in binary write mode and write the function's output. :: >>> s = Bits(bytes=b'hello') >>> s += '0b01' >>> s.tobytes() b'hello@' .. method:: tofile(f) Writes the bitstring to the file object *f*, which should have been opened in binary write mode. The data written will be padded at the end with between zero and seven ``0`` bits to make it byte aligned. :: >>> f = open('newfile', 'wb') >>> Bits('0x1234').tofile(f) .. method:: unpack(fmt, **kwargs) Interprets the whole bitstring according to the *fmt* string or iterable and returns a list of bitstring objects. A dictionary or keyword arguments can also be provided. These will replace length identifiers in the format string. *fmt* is an iterable or a string with comma separated tokens that describe how to interpret the next bits in the bitstring. See the entry for :meth:`read` for details. :: >>> s = Bits('int:4=-1, 0b1110') >>> i, b = s.unpack('int:4, bin') If a token doesn't supply a length (as with ``bin`` above) then it will try to consume the rest of the bitstring. Only one such token is allowed. .. attribute:: bin Property for the representation of the bitstring as a binary string. .. attribute:: bool Property for representing the bitstring as a boolean (``True`` or ``False``). If the bitstring is not a single bit then the getter will raise an :exc:`InterpretError`. .. attribute:: bytes Property representing the underlying byte data that contains the bitstring. When used as a getter the bitstring must be a whole number of byte long or a :exc:`InterpretError` will be raised. An alternative is to use the :meth:`tobytes` method, which will pad with between zero and seven ``0`` bits to make it byte aligned if needed. :: >>> s = Bits('0x12345678') >>> s.bytes b'\x124Vx' .. attribute:: hex Property representing the hexadecimal value of the bitstring. If the bitstring is not a multiple of four bits long then getting its hex value will raise an :exc:`InterpretError`. :: >>> s = Bits(bin='1111 0000') >>> s.hex 'f0' .. attribute:: int Property for the signed two’s complement integer representation of the bitstring. .. attribute:: intbe Property for the byte-wise big-endian signed two's complement integer representation of the bitstring. Only valid for whole-byte bitstrings, in which case it is equal to ``s.int``, otherwise an :exc:`InterpretError` is raised. .. attribute:: intle Property for the byte-wise little-endian signed two's complement integer representation of the bitstring. Only valid for whole-byte bitstring, in which case it is equal to ``s[::-8].int``, i.e. the integer representation of the byte-reversed bitstring. .. attribute:: intne Property for the byte-wise native-endian signed two's complement integer representation of the bitstring. Only valid for whole-byte bitstrings, and will equal either the big-endian or the little-endian integer representation depending on the platform being used. .. attribute:: float .. attribute:: floatbe Property for the floating point representation of the bitstring. The bitstring must be either 32 or 64 bits long to support the floating point interpretations, otherwise an :exc:`InterpretError` will be raised. If the underlying floating point methods on your machine are not IEEE 754 compliant then using the float interpretations is undefined (this is unlikely unless you're on some very unusual hardware). The :attr:`float` property is bit-wise big-endian, which as all floats must be whole-byte is exactly equivalent to the byte-wise big-endian :attr:`floatbe`. .. attribute:: floatle Property for the byte-wise little-endian floating point representation of the bitstring. .. attribute:: floatne Property for the byte-wise native-endian floating point representation of the bitstring. .. attribute:: len .. attribute:: length Read-only property that give the length of the bitstring in bits (:attr:`len` and :attr:`length` are equivalent). This is almost equivalent to using the ``len()`` built-in function, except that for large bitstrings ``len()`` may fail with an :exc:`OverflowError`, whereas the :attr:`len` property continues to work. .. attribute:: oct Property for the octal representation of the bitstring. If the bitstring is not a multiple of three bits long then getting its octal value will raise a :exc:`InterpretError`. :: >>> s = BitString('0b111101101') >>> s.oct '755' >>> s.oct = '01234567' >>> s.oct '01234567' .. attribute:: se Property for the signed exponential-Golomb code representation of the bitstring. When used as a getter an :exc:`InterpretError` will be raised if the bitstring is not a single code. :: >>> s = BitString(se=-40) >>> s.bin 0000001010001 >>> s += '0b1' >>> s.se Error: BitString is not a single exponential-Golomb code. .. attribute:: ue Property for the unsigned exponential-Golomb code representation of the bitstring. When used as a getter an :exc:`InterpretError` will be raised if the bitstring is not a single code. .. attribute:: sie Property for the signed interleaved exponential-Golomb code representation of the bitstring. When used as a getter an :exc:`InterpretError` will be raised if the bitstring is not a single code. .. attribute:: uie Property for the unsigned interleaved exponential-Golomb code representation of the bitstring. When used as a getter an :exc:`InterpretError` will be raised if the bitstring is not a single code. .. attribute:: uint Property for the unsigned base-2 integer representation of the bitstring. .. attribute:: uintbe Property for the byte-wise big-endian unsigned base-2 integer representation of the bitstring. .. attribute:: uintle Property for the byte-wise little-endian unsigned base-2 integer representation of the bitstring. .. attribute:: uintne Property for the byte-wise native-endian unsigned base-2 integer representation of the bitstring. .. method:: __add__(bs) .. method:: __radd__(bs) ``s1 + s2`` Concatenate two bitstring objects and return the result. Either bitstring can be 'auto' initialised. :: s = Bits(ue=132) + '0xff' s2 = '0b101' + s .. method:: __and__(bs) .. method:: __rand__(bs) ``s1 & s2`` Returns the bit-wise AND between two bitstrings, which must have the same length otherwise a :exc:`ValueError` is raised. :: >>> print(Bits('0x33') & '0x0f') 0x03 .. method:: __bool__() ``if s:`` Returns ``True`` if at least one bit is set to 1, otherwise returns ``False``. This special method is used in Python 3 only; for Python 2.7 the equivalent is called ``__nonzero__``, but the details are exactly the same. :: >>> bool(Bits()) False >>> bool(Bits('0b0000010000')) True >>> bool(Bits('0b0000000000')) False .. method:: __contains__(bs) ``bs in s`` Returns ``True`` if *bs* can be found in the bitstring, otherwise returns ``False``. Similar to using :meth:`~Bits.find`, except that you are only told if it is found, and not where it was found. :: >>> '0b11' in Bits('0x06') True >>> '0b111' in Bits('0x06') False .. method:: __copy__() ``s2 = copy.copy(s1)`` This allows the :mod:`copy` module to correctly copy bitstrings. Other equivalent methods are to initialise a new bitstring with the old one or to take a complete slice. :: >>> import copy >>> s = Bits('0o775') >>> s_copy1 = copy.copy(s) >>> s_copy2 = Bits(s) >>> s_copy3 = s[:] >>> s == s_copy1 == s_copy2 == s_copy3 True .. method:: __eq__(bs) ``s1 == s2`` Compares two bitstring objects for equality, returning ``True`` if they have the same binary representation, otherwise returning ``False``. :: >>> Bits('0o7777') == '0xfff' True >>> a = Bits(uint=13, length=8) >>> b = Bits(uint=13, length=10) >>> a == b False .. method:: __getitem__(key) ``s[start:end:step]`` Returns a slice of the bitstring. The usual slice behaviour applies. :: >>> s = Bits('0x0123456') >>> s[4:8] Bits('0x1') >>> s[1::8] # 1st, 9th, 17th and 25th bits Bits('0x3') If a single element is asked for then either ``True`` or ``False`` will be returned. :: >>> s[0] False >>> s[-1] True .. method:: __hash__() ``hash(s)`` Returns an integer hash of the :class:`Bits`. This method is not available for the :class:`BitArray` or :class:`BitStream` classes, as only immutable objects should be hashed. You typically won't need to call it directly, instead it is used for dictionary keys and in sets. .. method:: __invert__() ``~s`` Returns the bitstring with every bit inverted, that is all zeros replaced with ones, and all ones replaced with zeros. If the bitstring is empty then an :exc:`Error` will be raised. :: >>> s = ConstBitStream(‘0b1110010’) >>> print(~s) 0b0001101 >>> print(~s & s) 0b0000000 .. method:: __len__() ``len(s)`` Returns the length of the bitstring in bits if it is less than ``sys.maxsize``, otherwise raises :exc:`OverflowError`. It's recommended that you use the :attr:`len` property rather than the :func:`len` function because of the function's behaviour for large bitstring objects, although calling the special function directly will always work. :: >>> s = Bits(filename='11GB.mkv') >>> s.len 93944160032 >>> len(s) OverflowError: long int too large to convert to int >>> s.__len__() 93944160032 .. method:: __lshift__(n) ``s << n`` Returns the bitstring with its bits shifted *n* places to the left. The *n* right-most bits will become zeros. :: >>> s = Bits('0xff') >>> s << 4 Bits('0xf0') .. method:: __mul__(n) .. method:: __rmul__(n) ``s * n / n * s`` Return bitstring consisting of *n* concatenations of another. :: >>> a = Bits('0x34') >>> b = a*5 >>> print(b) 0x3434343434 .. method:: __ne__(bs) ``s1 != s2`` Compares two bitstring objects for inequality, returning ``False`` if they have the same binary representation, otherwise returning ``True``. .. method:: __nonzero__() See :meth:`__bool__`. .. method:: __or__(bs) .. method:: __ror__(bs) ``s1 | s2`` Returns the bit-wise OR between two bitstring, which must have the same length otherwise a :exc:`ValueError` is raised. :: >>> print(Bits('0x33') | '0x0f') 0x3f .. method:: __repr__() ``repr(s)`` A representation of the bitstring that could be used to create it (which will often not be the form used to create it). If the result is too long then it will be truncated with ``...`` and the length of the whole will be given. :: >>> Bits(‘0b11100011’) Bits(‘0xe3’) .. method:: __rshift__(n) ``s >> n`` Returns the bitstring with its bits shifted *n* places to the right. The *n* left-most bits will become zeros. :: >>> s = Bits(‘0xff’) >>> s >> 4 Bits(‘0x0f’) .. method:: __str__() ``print(s)`` Used to print a representation of of the bitstring, trying to be as brief as possible. If the bitstring is a multiple of 4 bits long then hex will be used, otherwise either binary or a mix of hex and binary will be used. Very long strings will be truncated with ``...``. :: >>> s = Bits('0b1')*7 >>> print(s) 0b1111111 >>> print(s + '0b1') 0xff .. method:: __xor__(bs) .. method:: __rxor__(bs) ``s1 ^ s2`` Returns the bit-wise XOR between two bitstrings, which must have the same length otherwise a :exc:`ValueError` is raised. :: >>> print(Bits('0x33') ^ '0x0f') 0x3c bitstring-bitstring-3.1.5/doc/constbitstream.rst000066400000000000000000000153241271665413600221100ustar00rootroot00000000000000.. currentmodule:: bitstring The ConstBitStream class ------------------------ .. class:: ConstBitStream([auto, length, offset, **kwargs]) The :class:`Bits` class is the base class for :class:`ConstBitStream` and so all of its methods are also available for :class:`ConstBitStream` objects. The initialiser is also the same as for :class:`Bits` and so won't be repeated here. A :class:`ConstBitStream` is a :class:`Bits` with added methods and properties that allow it to be parsed as a stream of bits. .. method:: bytealign() Aligns to the start of the next byte (so that :attr:`pos` is a multiple of 8) and returns the number of bits skipped. If the current position is already byte aligned then it is unchanged. :: >>> s = ConstBitStream('0xabcdef') >>> s.pos += 3 >>> s.bytealign() 5 >>> s.pos 8 .. method:: peek(fmt) Reads from the current bit position :attr:`pos` in the bitstring according to the *fmt* string or integer and returns the result. The bit position is unchanged. For information on the format string see the entry for the :meth:`read` method. :: >>> s = ConstBitStream('0x123456') >>> s.peek(16) ConstBitStream('0x1234') >>> s.peek('hex:8') '12' .. method:: peeklist(fmt, **kwargs) Reads from current bit position :attr:`pos` in the bitstring according to the *fmt* string or iterable and returns a list of results. A dictionary or keyword arguments can also be provided. These will replace length identifiers in the format string. The position is not advanced to after the read items. See the entries for :meth:`read` and :meth:`readlist` for more information. .. method:: read(fmt) Reads from current bit position :attr:`pos` in the bitstring according the the format string and returns a single result. If not enough bits are available then a :exc:`ReadError` is raised. *fmt* is either a token string that describes how to interpret the next bits in the bitstring or an integer. If it's an integer then that number of bits will be read, and returned as a new bitstring. Otherwise the tokens are: ============== ================================================= ``int:n`` ``n`` bits as a signed integer. ``uint:n`` ``n`` bits as an unsigned integer. ``float:n`` ``n`` bits as a floating point number. ``intbe:n`` ``n`` bits as a big-endian signed integer. ``uintbe:n`` ``n`` bits as a big-endian unsigned integer. ``floatbe:n`` ``n`` bits as a big-endian float. ``intle:n`` ``n`` bits as a little-endian signed int. ``uintle:n`` ``n`` bits as a little-endian unsigned int. ``floatle:n`` ``n`` bits as a little-endian float. ``intne:n`` ``n`` bits as a native-endian signed int. ``uintne:n`` ``n`` bits as a native-endian unsigned int. ``floatne:n`` ``n`` bits as a native-endian float. ``hex:n`` ``n`` bits as a hexadecimal string. ``oct:n`` ``n`` bits as an octal string. ``bin:n`` ``n`` bits as a binary string. ``ue`` next bits as an unsigned exp-Golomb. ``se`` next bits as a signed exp-Golomb. ``uie`` next bits as an interleaved unsigned exp-Golomb. ``sie`` next bits as an interleaved signed exp-Golomb. ``bits:n`` ``n`` bits as a new bitstring. ``bytes:n`` ``n`` bytes as ``bytes`` object. ``bool`` next bit as a boolean (True or False). ``pad:n`` next ``n`` bits will be skipped. ============== ================================================= For example:: >>> s = ConstBitStream('0x23ef55302') >>> s.read('hex:12') '23e' >>> s.read('bin:4') '1111' >>> s.read('uint:5') 10 >>> s.read('bits:4') ConstBitStream('0xa') The :meth:`~ConstBitStream.read` method is useful for reading exponential-Golomb codes. :: >>> s = ConstBitStream('se=-9, ue=4') >>> s.read('se') -9 >>> s.read('ue') 4 The ``pad`` token is not very useful when used in :meth:`~ConstBitStream.read` as it just skips a number of bits and returns ``None``. However when used within :meth:`~ConstBitStream.readlist` or :meth:`~Bits.unpack` it allows unimportant part of the bitstring to be simply ignored. .. method:: readlist(fmt, **kwargs) Reads from current bit position :attr:`pos` in the bitstring according to the *fmt* string or iterable and returns a list of results. If not enough bits are available then a :exc:`ReadError` is raised. A dictionary or keyword arguments can also be provided. These will replace length identifiers in the format string. The position is advanced to after the read items. See the entry for :meth:`read` for information on the format strings. For multiple items you can separate using commas or given multiple parameters:: >>> s = ConstBitStream('0x43fe01ff21') >>> s.readlist('hex:8, uint:6') ['43', 63] >>> s.readlist(['bin:3', 'intle:16']) ['100', -509] >>> s.pos = 0 >>> s.readlist('hex:b, uint:d', b=8, d=6) ['43', 63] .. method:: readto(bs, bytealigned) Reads up to and including the next occurrence of the bitstring *bs* and returns the results. If *bytealigned* is `True` it will look for the bitstring starting only at whole-byte positions. Raises a :exc:`ReadError` if *bs* is not found, and :exc:`ValueError` if *bs* is empty. >>> s = ConstBitStream('0x47000102034704050647') >>> s.readto('0x47', bytealigned=True) BitStream('0x47') >>> s.readto('0x47', bytealigned=True) BitStream('0x0001020347') >>> s.readto('0x47', bytealigned=True) BitStream('0x04050647') .. attribute:: bytepos Property for setting and getting the current byte position in the bitstring. When used as a getter will raise a :exc:`ByteAlignError` if the current position in not byte aligned. .. attribute:: pos .. attribute:: bitpos Read and write property for setting and getting the current bit position in the bitstring. Can be set to any value from ``0`` to :attr:`len`. The :attr:`pos` and :attr:`bitpos` properties are exactly equivalent - you can use whichever you prefer. :: if s.pos < 100: s.pos += 10 bitstring-bitstring-3.1.5/doc/contents.rst000066400000000000000000000002701271665413600206760ustar00rootroot00000000000000 .. _manual: ########### User Manual ########### .. toctree:: :maxdepth: 2 walkthrough introduction creation packing interpretation slicing reading misc bitstring-bitstring-3.1.5/doc/creation.rst000066400000000000000000000342371271665413600206570ustar00rootroot00000000000000.. currentmodule:: bitstring .. _creation: Creation ======== You can create bitstrings in a variety of ways. Internally they are stored as byte arrays, which means that no space is wasted, and a bitstring containing 10MB of binary data will only take up 10MB of memory. The bitstring classes --------------------- Four classes are provided by the bitstring module: :class:`BitStream` and :class:`BitArray` together with their immutable versions :class:`ConstBitStream` and :class:`Bits`: * :class:`Bits` ``(object)``: This is the most basic class. It is immutable and so its contents can't be changed after creation. * :class:`BitArray` ``(Bits)``: This adds mutating methods to its base class. * :class:`ConstBitStream` ``(Bits)``: This adds methods and properties to allow the bits to be treated as a stream of bits, with a bit position and reading/parsing methods. * :class:`BitStream` ``(BitArray, ConstBitStream)``: This is the most versative class, having both the bitstream methods and the mutating methods. Before verion 3.0 ``Bits`` was known as ``ConstBitArray``. The old name is still available for backward compatibility. The term 'bitstring' is used in this manual to refer generically to any of these classes. Most of the exampes in this manual use the :class:`BitArray` class, with :class:`BitStream` used when necessary. For most uses the non-const classes are more versatile and so probably your best choice when starting to use the module. To summarise when to use each class: * If you need to change the contents of the bitstring then you must use :class:`BitArray` or :class:`BitStream`. Truncating, replacing, inserting, appending etc. are not available for the const classes. * If you need to use a bitstring as the key in a dictionary or as a member of a ``set`` then you must use :class:`Bits` or a :class:`ConstBitStream`. As :class:`BitArray` and :class:`BitStream` objects are mutable they do not support hashing and so cannot be used in these ways. * If you are creating directly from a file then a :class:`BitArray` or :class:`BitStream` will read the file into memory whereas a :class:`Bits` or :class:`ConstBitStream` will not, so using the const classes allows extremely large files to be examined. * If you don't need the extra functionality of a particular class then the simpler ones might be faster and more memory efficient. The fastest and most memory efficient class is :class:`Bits`. The :class:`Bits` class is the base class of the other three class. This means that ``isinstance(s, Bits)`` will be true if ``s`` is an instance of any of the four classes. Using the constructor --------------------- When initialising a bitstring you need to specify at most one initialiser. These will be explained in full below, but briefly they are: * ``auto`` : Either a specially formatted string, a list or tuple, a file object, integer, bytearray, array, bytes or another bitstring. * ``bytes`` : A ``bytes`` object (a ``str`` in Python 2), for example read from a binary file. * ``hex``, ``oct``, ``bin``: Hexadecimal, octal or binary strings. * ``int``, ``uint``: Signed or unsigned bit-wise big-endian binary integers. * ``intle``, ``uintle``: Signed or unsigned byte-wise little-endian binary integers. * ``intbe``, ``uintbe``: Signed or unsigned byte-wise big-endian binary integers. * ``intne``, ``uintne``: Signed or unsigned byte-wise native-endian binary integers. * ``float`` / ``floatbe``, ``floatle``, ``floatne``: Big, little and native endian floating point numbers. * ``se``, ``ue`` : Signed or unsigned exponential-Golomb coded integers. * ``sie``, ``uie`` : Signed or unsigned interleaved exponential-Golomb coded integers. * ``bool`` : A boolean (i.e. True or False). * ``filename`` : Directly from a file, without reading into memory. From a hexadecimal string ^^^^^^^^^^^^^^^^^^^^^^^^^ >>> c = BitArray(hex='0x000001b3') >>> c.hex '000001b3' The initial ``0x`` or ``0X`` is optional. Whitespace is also allowed and is ignored. Note that the leading zeros are significant, so the length of ``c`` will be 32. If you include the initial ``0x`` then you can use the ``auto`` initialiser instead. As it is the first parameter in :class:`__init__` this will work equally well:: c = BitArray('0x000001b3') From a binary string ^^^^^^^^^^^^^^^^^^^^ >>> d = BitArray(bin='0011 00') >>> d.bin '001100' An initial ``0b`` or ``0B`` is optional and whitespace will be ignored. As with ``hex``, the ``auto`` initialiser will work if the binary string is prefixed by ``0b``:: >>> d = BitArray('0b001100') From an octal string ^^^^^^^^^^^^^^^^^^^^ >>> o = BitArray(oct='34100') >>> o.oct '34100' An initial ``0o`` or ``0O`` is optional, but ``0o`` (a zero and lower-case 'o') is preferred as it is slightly more readable. As with ``hex`` and ``bin``, the ``auto`` initialiser will work if the octal string is prefixed by ``0o``:: >>> o = BitArray('0o34100') From an integer ^^^^^^^^^^^^^^^ >>> e = BitArray(uint=45, length=12) >>> f = BitArray(int=-1, length=7) >>> e.bin '000000101101' >>> f.bin '1111111' For initialisation with signed and unsigned binary integers (``int`` and ``uint`` respectively) the ``length`` parameter is mandatory, and must be large enough to contain the integer. So for example if ``length`` is 8 then ``uint`` can be in the range 0 to 255, while ``int`` can range from -128 to 127. Two's complement is used to represent negative numbers. The auto initialise can be used by giving a colon and the length in bits immediately after the ``int`` or ``uint`` token, followed by an equals sign then the value:: >>> e = BitArray('uint:12=45') >>> f = BitArray('int:7=-1') The plain ``int`` and ``uint`` initialisers are bit-wise big-endian. That is to say that the most significant bit comes first and the least significant bit comes last, so the unsigned number one will have a ``1`` as its final bit with all other bits set to ``0``. These can be any number of bits long. For whole-byte bitstring objects there are more options available with different endiannesses. Big and little-endian integers ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >>> big_endian = BitArray(uintbe=1, length=16) >>> little_endian = BitArray(uintle=1, length=16) >>> native_endian = BitArray(uintne=1, length=16) There are unsigned and signed versions of three additional 'endian' types. The unsigned versions are used above to create three bitstrings. The first of these, ``big_endian``, is equivalent to just using the plain bit-wise big-endian ``uint`` initialiser, except that all ``intbe`` or ``uintbe`` interpretations must be of whole-byte bitstrings, otherwise a :exc:`ValueError` is raised. The second, ``little_endian``, is interpreted as least significant byte first, i.e. it is a byte reversal of ``big_endian``. So we have:: >>> big_endian.hex '0001' >>> little_endian.hex '0100' Finally we have ``native_endian``, which will equal either ``big_endian`` or ``little_endian``, depending on whether you are running on a big or little-endian machine (if you really need to check then use ``import sys; sys.byteorder``). From a floating point number ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >>> f1 = BitArray(float=10.3, length=32) >>> f2 = BitArray('float:64=5.4e31') Floating point numbers can be used for initialisation provided that the bitstring is 32 or 64 bits long. Standard Python floating point numbers are 64 bits long, so if you use 32 bits then some accuracy could be lost. Note that the exact bits used to represent the floating point number could be platform dependent. Most PCs will conform to the IEEE 754 standard, and presently other floating point representations are not supported (although they should work on a single platform - it just might get confusing if you try to interpret a generated bitstring on another platform). Similar to the situation with integers there are big and little endian versions. The plain ``float`` is big endian and so ``floatbe`` is just an alias. As with other initialisers you can also auto initialise, as demonstrated with the second example below:: >>> little_endian = BitArray(floatle=0.0, length=64) >>> native_endian = BitArray('floatne:32=-6.3') Exponential-Golomb codes ^^^^^^^^^^^^^^^^^^^^^^^^ Initialisation with integers represented by exponential-Golomb codes is also possible. ``ue`` is an unsigned code while ``se`` is a signed code. Interleaved exponential-Golomb codes are also supported via ``uie`` and ``sie``:: >>> g = BitArray(ue=12) >>> h = BitArray(se=-402) >>> g.bin '0001101' >>> h.bin '0000000001100100101' For these initialisers the length of the bitstring is fixed by the value it is initialised with, so the length parameter must not be supplied and it is an error to do so. If you don't know what exponential-Golomb codes are then you are in good company, but they are quite interesting, so I’ve included a section on them (see :ref:`exp-golomb`). The ``auto`` initialiser may also be used by giving an equals sign and the value immediately after a ``ue`` or ``se`` token:: >>> g = BitArray('ue=12') >>> h = BitArray('se=-402') You may wonder why you would bother with ``auto`` in this case as the syntax is slightly longer. Hopefully all will become clear in the next section. From raw byte data ^^^^^^^^^^^^^^^^^^ Using the length and offset parameters to specify the length in bits and an offset at the start to be ignored is particularly useful when initialising from raw data or from a file. :: a = BitArray(bytes=b'\x00\x01\x02\xff', length=28, offset=1) b = BitArray(bytes=open("somefile", 'rb').read()) The ``length`` parameter is optional; it defaults to the length of the data in bits (and so will be a multiple of 8). You can use it to truncate some bits from the end of the bitstring. The ``offset`` parameter is also optional and is used to truncate bits at the start of the data. You can also use a ``bytearray`` object, either explicitly with a ``bytes=some_bytearray`` keyword or via the ``auto`` initialiser:: c = BitArray(a_bytearray_object) If you are using Python 3.x you can use this trick with ``bytes`` objects too. This should be used with caution as in Python 2.7 it will instead be interpreted as a string (it's not possible to distinguish between ``str`` and ``bytes`` in Python 2) and so your code won't work the same between Python versions. :: d = BitArray(b'\x23g$5') # Use with caution! Only works correctly in Python 3. From a file ^^^^^^^^^^^ Using the ``filename`` initialiser allows a file to be analysed without the need to read it all into memory. The way to create a file-based bitstring is:: p = Bits(filename="my2GBfile") This will open the file in binary read-only mode. The file will only be read as and when other operations require it, and the contents of the file will not be changed by any operations. If only a portion of the file is needed then the ``offset`` and ``length`` parameters (specified in bits) can be used. Note that we created a :class:`Bits` here rather than a :class:`BitArray`, as they have quite different behaviour in this case. The immutable :class:`Bits` will never read the file into memory (except as needed by other operations), whereas if we had created a :class:`BitArray` then the whole of the file would immediately have been read into memory. This is because in creating a :class:`BitArray` you are implicitly saying that you want to modify it, and so it needs to be in memory. It's also possible to use the ``auto`` initialiser for file objects. It's as simple as:: f = open('my2GBfile', 'rb') p = Bits(f) The auto initialiser -------------------- The ``auto`` parameter is the first parameter in the :class:`__init__` function and so the ``auto=`` can be omitted when using it. It accepts either a string, an iterable, another bitstring, an integer, a bytearray or a file object. Strings starting with ``0x`` or ``hex:`` are interpreted as hexadecimal, ``0o`` or ``oct:`` implies octal, and strings starting with ``0b`` or ``bin:`` are interpreted as binary. You can also initialise with the various integer initialisers as described above. If given another bitstring it will create a copy of it, (non string) iterables are interpreted as boolean arrays and file objects acts a source of binary data. An ``array`` object will be converted into its constituent bytes. Finally you can use an integer to create a zeroed bitstring of that number of bits. :: >>> fromhex = BitArray('0x01ffc9') >>> frombin = BitArray('0b01') >>> fromoct = BitArray('0o7550') >>> fromint = BitArray('int:32=10') >>> fromfloat = BitArray('float:64=0.2') >>> acopy = BitArray(fromoct) >>> fromlist = BitArray([1, 0, 0]) >>> f = open('somefile', 'rb') >>> fromfile = BitArray(f) >>> zeroed = BitArray(1000) >>> frombytes = BitArray(bytearray(b'xyz')) >>> fromarray = BitArray(array.array('h', [3, 17, 10])) It can also be used to convert between the :class:`BitArray` and :class:`Bits` classes:: >>> immutable = Bits('0xabc') >>> mutable = BitArray(immutable) >>> mutable += '0xdef' >>> immutable = Bits(mutable) As always the bitstring doesn't know how it was created; initialising with octal or hex might be more convenient or natural for a particular example but it is exactly equivalent to initialising with the corresponding binary string. :: >>> fromoct.oct '7550' >>> fromoct.hex 'f68' >>> fromoct.bin '111101101000' >>> fromoct.uint 3994 >>> fromoct.int -152 >>> BitArray('0o7777') == '0xfff' True >>> BitArray('0xf') == '0b1111' True >>> frombin[::-1] + '0b0' == fromlist True Note how in the final examples above only one half of the ``==`` needs to be a bitstring, the other half gets ``auto`` initialised before the comparison is made. This is in common with many other functions and operators. You can also chain together string initialisers with commas, which causes the individual bitstrings to be concatenated. :: >>> s = BitArray('0x12, 0b1, uint:5=2, ue=5, se=-1, se=4') >>> s.find('uint:5=2, ue=5') True >>> s.insert('0o332, 0b11, int:23=300', 4) Again, note how the format used in the ``auto`` initialiser can be used in many other places where a bitstring is needed. bitstring-bitstring-3.1.5/doc/examples.rst000066400000000000000000000057261271665413600206720ustar00rootroot00000000000000 Examples ======== Creation -------- There are lots of ways of creating new bitstrings. The most flexible is via the ``auto`` parameter, which is used in this example. :: # Multiple parts can be joined with a single expression... s = BitArray('0x000001b3, uint:12=352, uint:12=288, 0x1, 0x3') # and extended just as easily s += 'uint:18=48000, 0b1, uint:10=4000, 0b100' # To covert to an ordinary string use the bytes property open('video.m2v', 'wb').write(s.bytes) # The information can be read back with a similar syntax start_code, width, height = s.readlist('hex:32, uint:12, uint:12') aspect_ratio, frame_rate = s.readlist('2*bin:4') Manipulation ------------ :: s = BitArray('0x0123456789abcdef') del s[4:8] # deletes the '1' s.insert('0xcc', 12) # inserts 'cc' between the '3' and '4' s.overwrite('0b01', 30) # changes the '6' to a '5' # This replaces every '1' bit with a 5 byte Ascii string! s.replace('0b1', BitArray(bytes='hello')) del s[-1001:] # deletes final 1001 bits s.reverse() # reverses whole BitString s.prepend('uint:12=44') # prepend a 12 bit integer Parsing ------- This example creates a class that parses a structure that is part of the H.264 video standard. :: class seq_parameter_set_data(object): def __init__(self, s): """Interpret next bits in BitString s as an SPS.""" # Read and interpret bits in a single expression: self.profile_idc = s.read('uint:8') # Multiple reads in one go returns a list: self.constraint_flags = s.readlist('4*uint:1') self.reserved_zero_4bits = s.read('bin:4') self.level_idc = s.read('uint:8') self.seq_parameter_set_id = s.read('ue') if self.profile_idc in [100, 110, 122, 244, 44, 83, 86]: self.chroma_format_idc = s.read('ue') if self.chroma_format_idc == 3: self.separate_colour_plane_flag = s.read('uint:1') self.bit_depth_luma_minus8 = s.read('ue') self.bit_depth_chroma_minus8 = s.read('ue') # etc. :: >>> s = BitStream('0x6410281bc0') >>> sps = seq_parameter_set_data(s) >>> print(sps.profile_idc) 100 >>> print(sps.level_idc) 40 >>> print(sps.reserved_zero_4bits) 0b0000 >>> print(sps.constraint_flags) [0, 0, 0, 1] Sieve of Eratosthenes --------------------- This classic (though inefficient) method of calculating prime numbers uses a bitstring to store whether each bit position represents a prime number. This takes much less memory than an ordinary array. :: def prime_sieve(top=1000000): b = BitArray(top) # bitstring of '0' bits for i in xrange(2, top): if not b[i]: yield i # i is prime, so set all its multiples to '1'. b.set(True, xrange(i*i, top, i)) bitstring-bitstring-3.1.5/doc/exp-golomb.rst000066400000000000000000000063141271665413600211170ustar00rootroot00000000000000 .. _exp-golomb: Exponential-Golomb Codes ======================== As this type of representation of integers isn't as well known as the standard base-2 representation I thought that a short explanation of them might be welcome. This section can be safely skipped if you're not interested. Exponential-Golomb codes represent integers using bit patterns that get longer for larger numbers. For unsigned and signed numbers (the bitstring properties :attr:`ue` and :attr:`se` respectively) the patterns start like this: ============= =========== =========== Bit pattern Unsigned Signed ============= =========== =========== ``1`` 0 0 ``010`` 1 1 ``011`` 2 -1 ``00100`` 3 2 ``00101`` 4 -2 ``00110`` 5 3 ``00111`` 6 -3 ``0001000`` 7 4 ``0001001`` 8 -4 ``0001010`` 9 5 ``0001011`` 10 -5 ``0001100`` 11 6 ``...`` ... ... ============= =========== =========== They consist of a sequence of n '0' bits, followed by a '1' bit, followed by n more bits. The bits after the first '1' bit count upwards as ordinary base-2 binary numbers until they run out of space and an extra '0' bit needs to get included at the start. The advantage of this method of representing integers over many other methods is that it can be quite efficient at representing small numbers without imposing a limit on the maximum number that can be represented. Exercise: Using the table above decode this sequence of unsigned Exponential Golomb codes: ``001001101101101011000100100101`` The answer is that it decodes to 3, 0, 0, 2, 2, 1, 0, 0, 8, 4. Note how you don’t need to know how many bits are used for each code in advance - there’s only one way to decode it. To create this bitstring you could have written something like:: a = BitStream().join([BitArray(ue=i) for i in [3,0,0,2,2,1,0,0,8,4]]) and to read it back:: while a.pos != a.len: print(a.read('ue')) The notation ``ue`` and ``se`` for the exponential-Golomb code properties comes from the H.264 video standard, which uses these types of code a lot. There are other ways to map the bitstrings to integers: Interleaved exponential-Golomb codes ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This type of code is used in the Dirac video standard, and is represented by the attributes :attr:`uie` and :attr:`sie`. For the interleaved codes the pattern is very similar to before for the unsigned case: ============= =========== Bit pattern Unsigned ============= =========== ``1`` 0 ``001`` 1 ``011`` 2 ``00001`` 3 ``00011`` 4 ``01001`` 5 ``01011`` 6 ``0000001`` 7 ``0000011`` 8 ``0001001`` 9 ``...`` ... ============= =========== For the signed code it looks a little different: ============= =========== Bit pattern Signed ============= =========== ``1`` 0 ``0010`` 1 ``0011`` -1 ``0110`` 2 ``0111`` -2 ``000010`` 3 ``000011`` -3 ``000110`` 4 ``000111`` -4 ``010010`` 5 ``010011`` -5 ``...`` ... ============= =========== I'm sure you can work out the pattern yourself from here!bitstring-bitstring-3.1.5/doc/functions.rst000066400000000000000000000042561271665413600210610ustar00rootroot00000000000000.. currentmodule:: bitstring Functions --------- .. function:: pack(format[, *values, **kwargs]) Packs the values and keyword arguments according to the *format* string and returns a new :class:`BitStream`. :param format: string with comma separated tokens :param values: extra values used to construct the :class:`BitStream` :param kwargs: a dictionary of token replacements :rtype: BitStream The format string consists of comma separated tokens of the form ``name:length=value``. See the entry for :meth:`~ConstBitStream.read` for more details. The tokens can be 'literals', like ``0xef``, ``0b110``, ``uint:8=55``, etc. which just represent a set sequence of bits. They can also have the value missing, in which case the values contained in ``*values`` will be used. :: >>> a = pack('bin:3, hex:4', '001', 'f') >>> b = pack('uint:10', 33) A dictionary or keyword arguments can also be provided. These will replace items in the format string. :: >>> c = pack('int:a=b', a=10, b=20) >>> d = pack('int:8=a, bin=b, int:4=a', a=7, b='0b110') Plain names can also be used as follows:: >>> e = pack('a, b, b, a', a='0b11', b='0o2') Tokens starting with an endianness identifier (``<``, ``>`` or ``@``) implies a struct-like compact format string (see :ref:`compact_format`). For example this packs three little-endian 16-bit integers:: >>> f = pack('<3h', 12, 3, 108) And of course you can combine the different methods in a single pack. A :exc:`ValueError` will be raised if the ``*values`` are not all used up by the format string, and if a value provided doesn't match the length specified by a token. Exceptions ---------- .. exception:: Error(Exception) Base class for all module exceptions. .. exception:: InterpretError(Error, ValueError) Inappropriate interpretation of binary data. For example using the 'bytes' property on a bitstring that isn't a whole number of bytes long. .. exception:: ByteAlignError(Error) Whole-byte position or length needed. .. exception:: CreationError(Error, ValueError) Inappropriate argument during bitstring creation. .. exception:: ReadError(Error, IndexError) Reading or peeking past the end of a bitstring. bitstring-bitstring-3.1.5/doc/index.rst000066400000000000000000000037401271665413600201550ustar00rootroot00000000000000 .. currentmodule:: bitstring **bitstring** is a pure Python module that makes the creation, manipulation and analysis of binary data as simple and natural as possible. Features -------- * Supports Python 2.6 and later (including Python 3). * Rich API - chances are that whatever you want to do there's a simple and elegant way of doing it. * Bit level slicing, joining, searching, replacing and more. * Create bitstrings from hex, octal, binary, files, formatted strings, bytes, integers and floats of different endiannesses. * Powerful binary packing and unpacking functions. * Read from and interpret bitstrings as streams of binary data. Download -------- To download the module, as well as for defect reports, enhancement requests and Subversion repository browsing go to the project's home on GitHub: http://scott-griffiths.github.io/bitstring/ You may also be able to use just ``easy_install bitstring``. Documentation ------------- The manual provides an introduction to the module and details most its capabilities. The reference section has a complete list of all the classes, methods, attributes and functions of the :mod:`bitstring` module, together with short examples for many items. .. toctree:: :maxdepth: 2 contents reference appendices The manual is also available as a PDF: * `Latest manual (PDF) `_ * `Manual for version 2 (PDF) `_ * `Manual for version 1.0 (PDF) `_ Index and search ---------------- * :ref:`genindex` * :ref:`search` Credits ------- Written by Scott Griffiths . If you have any questions, suggestions or criticisms (about this module!) then please email me. Also if you use bitstring in your own project then I'd be interested to hear how it's being used. bitstring-bitstring-3.1.5/doc/interpretation.rst000066400000000000000000000151421271665413600221140ustar00rootroot00000000000000.. currentmodule:: bitstring Interpreting Bitstrings ----------------------- Bitstrings don't know or care how they were created; they are just collections of bits. This means that you are quite free to interpret them in any way that makes sense. Several Python properties are used to create interpretations for the bitstring. These properties call private functions which will calculate and return the appropriate interpretation. These don’t change the bitstring in any way and it remains just a collection of bits. If you use the property again then the calculation will be repeated. Note that these properties can potentially be very expensive in terms of both computation and memory requirements. For example if you have initialised a bitstring from a 10 GB file object and ask for its binary string representation then that string will be around 80 GB in size! For the properties described below we will use these:: >>> a = BitArray('0x123') >>> b = BitArray('0b111') bin ^^^ The most fundamental interpretation is perhaps as a binary string (a ‘bitstring’). The :attr:`~Bits.bin` property returns a string of the binary representation of the bitstring. All bitstrings can use this property and it is used to test equality between bitstrings. :: >>> a.bin '000100100011' >>> b.bin '111' Note that the initial zeros are significant; for bitstrings the zeros are just as important as the ones! hex ^^^ For whole-byte bitstrings the most natural interpretation is often as hexadecimal, with each byte represented by two hex digits. If the bitstring does not have a length that is a multiple of four bits then an :exc:`InterpretError` exception will be raised. This is done in preference to truncating or padding the value, which could hide errors in user code. :: >>> a.hex '123' >>> b.hex ValueError: Cannot convert to hex unambiguously - not multiple of 4 bits. oct ^^^ For an octal interpretation use the :attr:`~Bits.oct` property. If the bitstring does not have a length that is a multiple of three then an :exc:`InterpretError` exception will be raised. :: >>> a.oct '0443' >>> b.oct '7' >>> (b + '0b0').oct ValueError: Cannot convert to octal unambiguously - not multiple of 3 bits. uint / uintbe / uintle / uintne ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ To interpret the bitstring as a binary (base-2) bit-wise big-endian unsigned integer (i.e. a non-negative integer) use the :attr:`~Bits.uint` property. >>> a.uint 283 >>> b.uint 7 For byte-wise big-endian, little-endian and native-endian interpretations use :attr:`~Bits.uintbe`, :attr:`~Bits.uintle` and :attr:`~Bits.uintne` respectively. These will raise a :exc:`ValueError` if the bitstring is not a whole number of bytes long. :: >>> s = BitArray('0x000001') >>> s.uint # bit-wise big-endian 1 >>> s.uintbe # byte-wise big-endian 1 >>> s.uintle # byte-wise little-endian 65536 >>> s.uintne # byte-wise native-endian (will be 1 on a big-endian platform!) 65536 int / intbe / intle / intne ^^^^^^^^^^^^^^^^^^^^^^^^^^^ For a two's complement interpretation as a base-2 signed integer use the :attr:`~Bits.int` property. If the first bit of the bitstring is zero then the :attr:`~Bits.int` and :attr:`~Bits.uint` interpretations will be equal, otherwise the :attr:`~Bits.int` will represent a negative number. :: >>> a.int 283 >>> b.int -1 For byte-wise big, little and native endian signed integer interpretations use :attr:`~Bits.intbe`, :attr:`~Bits.intle` and :attr:`~Bits.intne` respectively. These work in the same manner as their unsigned counterparts described above. float / floatbe / floatle / floatne ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ For a floating point interpretation use the :attr:`~Bits.float` property. This uses your machine's underlying floating point representation and will only work if the bitstring is 32 or 64 bits long. Different endiannesses are provided via :attr:`~Bits.floatle` and :attr:`~Bits.floatne`. Note that as floating point interpretations are only valid on whole-byte bitstrings there is no difference between the bit-wise big-endian :attr:`~Bits.float` and the byte-wise big-endian :attr:`~Bits.floatbe`. Note also that standard floating point numbers in Python are stored in 64 bits, so use this size if you wish to avoid rounding errors. bytes ^^^^^ A common need is to retrieve the raw bytes from a bitstring for further processing or for writing to a file. For this use the :attr:`~Bits.bytes` interpretation, which returns a ``bytes`` object (which is equivalent to an ordinary ``str`` in Python 2.6/2.7). If the length of the bitstring isn't a multiple of eight then a :exc:`ValueError` will be raised. This is because there isn't an unequivocal representation as ``bytes``. You may prefer to use the method :meth:`~Bits.tobytes` as this will be pad with between one and seven zero bits up to a byte boundary if neccessary. :: >>> open('somefile', 'wb').write(a.tobytes()) >>> open('anotherfile', 'wb').write(('0x0'+a).bytes) >>> a1 = BitArray(filename='somefile') >>> a1.hex '1230' >>> a2 = BitArray(filename='anotherfile') >>> a2.hex '0123' Note that the :meth:`~Bits.tobytes` method automatically padded with four zero bits at the end, whereas for the other example we explicitly padded at the start to byte align before using the :attr:`~Bits.bytes` property. ue ^^ The :attr:`~Bits.ue` property interprets the bitstring as a single unsigned exponential-Golomb code and returns an integer. If the bitstring is not exactly one code then an :exc:`InterpretError` is raised instead. If you instead wish to read the next bits in the stream and interpret them as a code use the read function with a ``ue`` format string. See :ref:`exp-golomb` for a short explanation of this type of integer representation. :: >>> s = BitArray(ue=12) >>> s.bin '0001101' >>> s.append(BitArray(ue=3)) >>> print(s.readlist('2*ue')) [12, 3] se ^^ The :attr:`~Bits.se` property does much the same as ``ue`` and the provisos there all apply. The obvious difference is that it interprets the bitstring as a signed exponential-Golomb rather than unsigned - see :ref:`exp-golomb` for more information. :: >>> s = BitArray('0x164b') >>> s.se InterpretError: BitArray, is not a single exponential-Golomb code. >>> while s.pos < s.length: ... print(s.read('se')) -5 2 0 -1 uie / sie ^^^^^^^^^ A slightly different type, interleaved exponential-Golomb codes are also supported. The principles are the same as with ``ue`` and ``se`` - see :ref:`exp-golomb` for detail of the differences.bitstring-bitstring-3.1.5/doc/introduction.rst000066400000000000000000000103071271665413600215640ustar00rootroot00000000000000.. currentmodule:: bitstring ************ Introduction ************ While it is not difficult to manipulate binary data in Python, for example using the :mod:`struct` and :mod:`array` modules, it can be quite fiddly and time consuming even for quite small tasks, especially if you are not dealing only with whole-byte data. The bitstring module provides four classes, :class:`BitStream`, :class:`BitArray`, :class:`ConstBitStream` and :class:`Bits`, instances of which can be constructed from integers, floats, hex, octal, binary, strings or files, but they all just represent a string of binary digits. I shall use the general term 'bitstring' when referring generically to any of the classes, and use the class names for parts that apply to only one or another. :class:`BitArray` objects can be sliced, joined, reversed, inserted into, overwritten, packed, unpacked etc. with simple functions or slice notation. :class:`BitStream` objects can also be read from, searched in, and navigated in, similar to a file or stream. Bitstrings are designed to be as lightweight as possible and can be considered to be just a list of binary digits. They are however stored efficiently - although there are a variety of ways of creating and viewing the binary data, the bitstring itself just stores the byte data, and all views are calculated as needed, and are not stored as part of the object. The different views or interpretations on the data are accessed through properties such as :attr:`~Bits.hex`, :attr:`~Bits.bin` and :attr:`~Bits.int`, and an extensive set of functions is supplied for modifying, navigating and analysing the binary data. A complete reference for the module is given in the :ref:`reference` section, while the rest of this manual acts more like a tutorial or guided tour. Below are just a few examples to whet your appetite; everything here will be covered in greater detail in the rest of this manual. :: from bitstring import BitArray Just some of the ways to create bitstrings:: # from a binary string a = BitArray('0b001') # from a hexadecimal string b = BitArray('0xff470001') # straight from a file c = BitArray(filename='somefile.ext') # from an integer d = BitArray(int=540, length=11) # using a format string d = BitArray('int:11=540') Easily construct new bitstrings:: # 5 copies of 'a' followed by two new bytes e = 5*a + '0xcdcd' # put a single bit on the front e.prepend('0b1') # take a slice of the first 7 bits f = e[7:] # replace 3 bits with 9 bits from octal string f[1:4] = '0o775' # find and replace 2 bit string with 16 bit string f.replace('0b01', '0xee34') Interpret the bitstring however you want:: >>> print(e.hex) '9249cdcd' >>> print(e.int) -1840656947 >>> print(e.uint) 2454310349 Getting Started --------------- The easiest way to install :mod:`bitstring` is to use ``easy_install`` via:: sudo easy_install bitstring or similar. If you want an earlier version, or need other files in the full package, you can download and extract the contents of the .zip provided on the project's website. First download the latest release (see the Downloads tab on the project’s homepage). If you then extract the contents of the zip file you should find files organised in these directories * ``bitstring/`` : The bitstring module files. * ``test/`` : Unit tests for the module, plus some example files for testing purposes. * ``doc/`` : This manual as a PDF and as HTML. If you downloaded the source and want to install, run:: python setup.py install You might need to add a 'sudo' to the start of that command, depending on your system. This will copy the source files to your Python installation's ``site-packages`` directory. The module comes with comprehensive unit tests. To run them yourself use your favourite unit test running method, mine is:: nosetests -w test which should run all the tests (over 400) and say OK. If tests fail then either your version of Python isn't supported (you need Python 2.6, 2.7 or 3.x) or something unexpected has happened - in which case please tell me about it. bitstring-bitstring-3.1.5/doc/misc.rst000066400000000000000000000137471271665413600200110ustar00rootroot00000000000000.. currentmodule:: bitstring Miscellany ========== Other Functions --------------- ``bytealign`` ^^^^^^^^^^^^^ :meth:`~ConstBitStream.bytealign` advances between zero and seven bits to make the :attr:`~ConstBitStream.pos` a multiple of eight. It returns the number of bits advanced. :: >>> a = BitStream('0x11223344') >>> a.pos = 1 >>> skipped = a.bytealign() >>> print(skipped, a.pos) 7 8 >>> skipped = a.bytealign() >>> print(skipped, a.pos) 0 8 ``reverse`` ^^^^^^^^^^^ This simply reverses the bits of the :class:`BitArray` in place. You can optionally specify a range of bits to reverse. :: >>> a = BitArray('0b000001101') >>> a.reverse() >>> a.bin '101100000' >>> a.reverse(0, 4) >>> a.bin '110100000' ``tobytes`` ^^^^^^^^^^^ Returns the byte data contained in the bitstring as a ``bytes`` object (equivalent to a ``str`` if you're using Python 2.7). This differs from using the plain :attr:`~Bits.bytes` property in that if the bitstring isn't a whole number of bytes long then it will be made so by appending up to seven zero bits. :: >>> BitArray('0b1').tobytes() '\x80' ``tofile`` ^^^^^^^^^^ Writes the byte data contained in the bitstring to a file. The file should have been opened in a binary write mode, for example:: >>> f = open('newfile', 'wb') >>> BitArray('0xffee3241fed').tofile(f) In exactly the same manner as with :meth:`~Bits.tobytes`, up to seven zero bits will be appended to make the file a whole number of bytes long. ``startswith / endswith`` ^^^^^^^^^^^^^^^^^^^^^^^^^ These act like the same named functions on strings, that is they return ``True`` if the bitstring starts or ends with the parameter given. Optionally you can specify a range of bits to use. :: >>> s = BitArray('0xef133') >>> s.startswith('0b111011') True >>> s.endswith('0x4') False ``ror / rol`` ^^^^^^^^^^^^^ To rotate the bits in a :class:`BitArray` use :meth:`~BitArray.ror` and :meth:`~BitArray.rol` for right and left rotations respectively. The changes are done in-place. :: >>> s = BitArray('0x00001') >>> s.rol(6) >>> s.hex '00040' Special Methods --------------- A few of the special methods have already been covered, for example :meth:`~Bits.__add__` and :meth:`~BitArray.__iadd__` (the ``+`` and ``+=`` operators) and :meth:`~Bits.__getitem__` and :meth:`~BitArray.__setitem__` (reading and setting slices via ``[]``). Here are some more: ``__len__`` ^^^^^^^^^^^^^^^ This implements the :func:`len` function and returns the length of the bitstring in bits. It's recommended that you use the :attr:`~Bits.len` property instead of the function as a limitation of Python means that the function will raise an :exc:`OverflowError` if the bitstring has more than ``sys.maxsize`` elements (that's typically 256MB of data with 32-bit Python). There's not much more to say really, except to emphasise that it is always in bits and never bytes. :: >>> len(BitArray('0x00')) 8 ``__str__ / __repr__`` ^^^^^^^^^^^^^^^^^^^^^^ These get called when you try to print a bitstring. As bitstrings have no preferred interpretation the form printed might not be what you want - if not then use the :attr:`~Bits.hex`, :attr:`~Bits.bin`, :attr:`~Bits.int` etc. properties. The main use here is in interactive sessions when you just want a quick look at the bitstring. The :meth:`~Bits.__repr__` tries to give a code fragment which if evaluated would give an equal bitstring. The form used for the bitstring is generally the one which gives it the shortest representation. If the resulting string is too long then it will be truncated with ``...`` - this prevents very long bitstrings from tying up your interactive session while they print themselves. :: >>> a = BitArray('0b1111 111') >>> print(a) 0b1111111 >>> a BitArray('0b1111111') >>> a += '0b1' >>> print(a) 0xff >>> print(a.bin) 11111111 ``__eq__ / __ne__`` ^^^^^^^^^^^^^^^^^^^ The equality of two bitstring objects is determined by their binary representations being equal. If you have a different criterion you wish to use then code it explicitly, for example ``a.int == b.int`` could be true even if ``a == b`` wasn't (as they could be different lengths). :: >>> BitArray('0b0010') == '0x2' True >>> BitArray('0x2') != '0o2' True ``__invert__`` ^^^^^^^^^^^^^^ To get a bit-inverted copy of a bitstring use the ``~`` operator:: >>> a = BitArray('0b0001100111') >>> print(a) 0b0001100111 >>> print(~a) 0b1110011000 >>> ~~a == a True ``__lshift__ / __rshift__ / __ilshift__ / __irshift__`` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Bitwise shifts can be achieved using ``<<``, ``>>``, ``<<=`` and ``>>=``. Bits shifted off the left or right are replaced with zero bits. If you need special behaviour, such as keeping the sign of two's complement integers then do the shift on the property instead, for example use ``a.int >>= 2``. :: >>> a = BitArray('0b10011001') >>> b = a << 2 >>> print(b) 0b01100100 >>> a >>= 2 >>> print(a) 0b00100110 ``__mul__ / __imul__ / __rmul__`` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Multiplication of a bitstring by an integer means the same as it does for ordinary strings: concatenation of multiple copies of the bitstring. :: >>> a = BitArray('0b10')*8 >>> print(a.bin) 1010101010101010 ``__copy__`` ^^^^^^^^^^^^ This allows the bitstring to be copied via the :mod:`copy` module. :: >>> import copy >>> a = Bits('0x4223fbddec2231') >>> b = copy.copy(a) >>> b == a True >>> b is a False It's not terribly exciting, and isn't the only method of making a copy. Using ``b = BitArray(a)`` is another option, but ``b = a[:]`` may be more familiar to some. ``__and__ / __or__ / __xor__ / __iand__ / __ior__ / __ixor__`` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Bit-wise AND, OR and XOR are provided for bitstring objects of equal length only (otherwise a :exc:`ValueError` is raised). :: >>> a = BitArray('0b00001111') >>> b = BitArray('0b01010101') >>> print((a&b).bin) 00000101 >>> print((a|b).bin) 01011111 >>> print((a^b).bin) 01011010 >>> b &= '0x1f' >>> print(b.bin) 00010101 bitstring-bitstring-3.1.5/doc/optimisation.rst000066400000000000000000000066021271665413600215650ustar00rootroot00000000000000.. currentmodule:: bitstring Optimisation Techniques ======================= The :mod:`bistring` module aims to be as fast as reasonably possible, and although there is more work to be done optimising some operations it is currently quite well optimised without resorting to C extensions. There are however some pointers you should follow to make your code efficient, so if you need things to run faster then this is the section for you. Use combined read and interpretation ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ When parsing a bitstring one way to write code is in the following style:: width = s.read(12).uint height = s.read(12).uint flags = s.read(4).bin This works fine, but is not very quick. The problem is that the call to :meth:`~Bits.read` constructs and returns a new bitstring, which then has to be interpreted. The new bitstring isn't used for anything else and so creating it is wasted effort. Instead it is better to use a string parameter that does the read and interpretation together:: width = s.read('uint:12') height = s.read('uint:12') flags = s.read('bin:4') This is much faster, although probably not as fast as the combined call:: width, height, flags = s.readlist('uint:12, uint:12, bin:4') Choose the simplest class you can ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ If you don't need to modify your bitstring after creation then prefer the immutable :class:`Bits` over the mutable :class:`BitArray`. This is typically the case when parsing, or when creating directly from files. The speed difference between the classes is noticable, and there are also memory usage optimisations that are made if objects are known to be immutable. You should also prefer :class:`ConstBitStream` to :class:`BitStream` if you won't need to modify any bits. One anti-pattern to watch out for is using ``+=`` on a :class:`Bits` object. For example, don't do this:: s = Bits() for i in range(1000): s += '0xab' Now this is inefficient for a few reasons, but the one I'm highlighting is that as the immutable bitstring doesn't have an ``__iadd__`` special method the ordinary ``__add__`` gets used instead. In other words ``s += '0xab'`` gets converted to ``s = s + '0xab'``, which creates a new :class:`Bits` from the old on every iteration. This isn't what you'd want or possibly expect. If ``s`` had been a :class:`BitArray` then the addition would have been done in-place, and have been much more efficient. Use dedicated functions for bit setting and checking ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ If you need to set or check individual bits then there are special functions for this. For example one way to set bits would be:: s = BitArray(1000) for p in [14, 34, 501]: s[p] = '0b1' This creates a 1000 bit bitstring and sets three of the bits to '1'. Unfortunately the crucial line spends most of its time creating a new bitstring from the '0b1' string. You could make it slightly quicker by using ``s[p] = True``, but it is much faster (and I mean at least an order of magnitude) to use the :meth:`~BitArray.set` method:: s = BitArray(1000) s.set(True, [14, 34, 501]) As well as :meth:`~BitArray.set` and :meth:`~BitArray.invert` there are also checking methods :meth:`~Bits.all` and :meth:`~Bits.any`. So rather than using :: if s[100] and s[200]: do_something() it's better to say :: if s.all(True, (100, 200)): do_something() bitstring-bitstring-3.1.5/doc/packing.rst000066400000000000000000000214251271665413600204620ustar00rootroot00000000000000.. currentmodule:: bitstring Packing ------- Another method of creating :class:`BitStream` objects is to use the :func:`pack` function. This takes a format specifier which is a string with comma separated tokens, and a number of items to pack according to it. It's signature is ``bitstring.pack(format, *values, **kwargs)``. For example using just the ``*values`` arguments we can say:: s = bitstring.pack('hex:32, uint:12, uint:12', '0x000001b3', 352, 288) which is equivalent to initialising as:: s = BitStream('0x0000001b3, uint:12=352, uint:12=288') The advantage of the pack function is if you want to write more general code for creation. :: def foo(a, b, c, d): return bitstring.pack('uint:8, 0b110, int:6, bin, bits', a, b, c, d) s1 = foo(12, 5, '0b00000', '') s2 = foo(101, 3, '0b11011', s1) Note how you can use some tokens without sizes (such as ``bin`` and ``bits`` in the above example), and use values of any length to fill them. If the size had been specified then a :exc:`ValueError` would be raised if the parameter given was the wrong length. Note also how bitstring literals can be used (the ``0b110`` in the bitstring returned by ``foo``) and these don't consume any of the items in ``*values``. You can also include keyword, value pairs (or an equivalent dictionary) as the final parameter(s). The values are then packed according to the positions of the keywords in the format string. This is most easily explained with some examples. Firstly the format string needs to contain parameter names:: format = 'hex:32=start_code, uint:12=width, uint:12=height' Then we can make a dictionary with these parameters as keys and pass it to pack:: d = {'start_code': '0x000001b3', 'width': 352, 'height': 288} s = bitstring.pack(format, **d) Another method is to pass the same information as keywords at the end of pack's parameter list:: s = bitstring.pack(format, width=352, height=288, start_code='0x000001b3') The tokens in the format string that you must provide values for are: ============= ================================================================ ``int:n`` ``n`` bits as a signed integer. ``uint:n`` ``n`` bits as an unsigned integer. ``intbe:n`` ``n`` bits as a big-endian whole byte signed integer. ``uintbe:n`` ``n`` bits as a big-endian whole byte unsigned integer. ``intle:n`` ``n`` bits as a little-endian whole byte signed integer. ``uintle:n`` ``n`` bits as a little-endian whole byte unsigned integer. ``intne:n`` ``n`` bits as a native-endian whole byte signed integer. ``uintne:n`` ``n`` bits as a native-endian whole byte unsigned integer. ``float:n`` ``n`` bits as a big-endian floating point number (same as ``floatbe``). ``floatbe:n`` ``n`` bits as a big-endian floating point number (same as ``float``). ``floatle:n`` ``n`` bits as a little-endian floating point number. ``floatne:n`` ``n`` bits as a native-endian floating point number. ``hex[:n]`` [``n`` bits as] a hexadecimal string. ``oct[:n]`` [``n`` bits as] an octal string. ``bin[:n]`` [``n`` bits as] a binary string. ``bits[:n]`` [``n`` bits as] a new bitstring. ``bool`` single bit as a boolean (True or False). ``ue`` an unsigned integer as an exponential-Golomb code. ``se`` a signed integer as an exponential-Golomb code. ``uie`` an unsigned integer as an interleaved exponential-Golomb code. ``sie`` a signed integer as an interleaved exponential-Golomb code. ============= ================================================================ and you can also include constant bitstring tokens constructed from any of the following: ================ =============================================================== ``0b...`` binary literal. ``0o...`` octal literal. ``0x...`` hexadecimal literal. ``int:n=m`` signed integer ``m`` in ``n`` bits. ``uint:n=m`` unsigned integer ``m`` in ``n`` bits. ``intbe:n=m`` big-endian whole byte signed integer ``m`` in ``n`` bits. ``uintbe:n=m`` big-endian whole byte unsigned integer ``m`` in ``n`` bits. ``intle:n=m`` little-endian whole byte signed integer ``m`` in ``n`` bits. ``uintle:n=m`` little-endian whole byte unsigned integer ``m`` in ``n`` bits. ``intne:n=m`` native-endian whole byte signed integer ``m`` in ``n`` bits. ``uintne:n=m`` native-endian whole byte unsigned integer ``m`` in ``n`` bits. ``float:n=f`` big-endian floating point number ``f`` in ``n`` bits. ``floatbe:n=f`` big-endian floating point number ``f`` in ``n`` bits. ``floatle:n=f`` little-endian floating point number ``f`` in ``n`` bits. ``floatne:n=f`` native-endian floating point number ``f`` in ``n`` bits. ``ue=m`` exponential-Golomb code for unsigned integer ``m``. ``se=m`` exponential-Golomb code for signed integer ``m``. ``uie=m`` interleaved exponential-Golomb code for unsigned integer ``m``. ``sie=m`` interleaved exponential-Golomb code for signed integer ``m``. ``bool=b`` a single bit, either True or False. ``pad:n`` ``n`` zero bits (for use as padding). ================ =============================================================== You can also use a keyword for the length specifier in the token, for example:: s = bitstring.pack('int:n=-1', n=100) And finally it is also possible just to use a keyword as a token:: s = bitstring.pack('hello, world', world='0x123', hello='0b110') As you would expect, there is also an :meth:`~Bits.unpack` function that takes a bitstring and unpacks it according to a very similar format string. This is covered later in more detail, but a quick example is:: >>> s = bitstring.pack('ue, oct:3, hex:8, uint:14', 3, '0o7', '0xff', 90) >>> s.unpack('ue, oct:3, hex:8, uint:14') [3, '7', 'ff', 90] .. _compact_format: Compact format strings ^^^^^^^^^^^^^^^^^^^^^^ Another option when using :func:`pack`, as well as other methods such as :meth:`~ConstBitStream.read` and :meth:`~BitArray.byteswap`, is to use a format specifier similar to those used in the :mod:`struct` and :mod:`array` modules. These consist of a character to give the endianness, followed by more single characters to give the format. The endianness character must start the format string and unlike in the struct module it is not optional (except when used with :meth:`~BitArray.byteswap`): ===== ============= ``>`` Big-endian ``<`` Little-endian ``@`` Native-endian ===== ============= For 'network' endianness use ``>`` as network and big-endian are equivalent. This is followed by at least one of these format characters: ===== =============================== ``b`` 8 bit signed integer ``B`` 8 bit unsigned integer ``h`` 16 bit signed integer ``H`` 16 bit unsigned integer ``l`` 32 bit signed integer ``L`` 32 bit unsigned integer ``q`` 64 bit signed integer ``Q`` 64 bit unsigned integer ``f`` 32 bit floating point number ``d`` 64 bit floating point number ===== =============================== The exact type is determined by combining the endianness character with the format character, but rather than give an exhaustive list a single example should explain: ====== ====================================== ============ ``>h`` Big-endian 16 bit signed integer ``intbe:16`` ``h`` on big-endian systems, and equal the little-endian ``qqqq', 10, 11, 12, 13) is equivalent to :: s = bitstring.pack('intbe:64, intbe:64, intbe:64, intbe:64', 10, 11, 12, 13) Just as in the struct module you can also give a multiplicative factor before the format character, so the previous example could be written even more concisely as :: s = bitstring.pack('>4q', 10, 11, 12, 13) You can of course combine these format strings with other initialisers, even mixing endiannesses (although I'm not sure why you'd want to):: s = bitstring.pack('>6h3b, 0b1, <9L', *range(18)) This rather contrived example takes the numbers 0 to 17 and packs the first 6 as signed big-endian 2-byte integers, the next 3 as single bytes, then inserts a single 1 bit, before packing the remaining 9 as little-endian 4-byte unsigned integers. bitstring-bitstring-3.1.5/doc/quick_ref.rst000066400000000000000000000132231271665413600210130ustar00rootroot00000000000000.. currentmodule:: bitstring .. _quick_reference: ****************** Quick Reference ****************** This section lists the bitstring module's classes together with all their methods and attributes. The next section goes into full detail with examples. Bits ------------- ``Bits(object)`` A ``Bits`` is the most basic class. It is immutable, so once created its value cannot change. It is a base class for all the other classes in the `bitstring` module. Methods ^^^^^^^ * :meth:`~Bits.all` -- Check if all specified bits are set to 1 or 0. * :meth:`~Bits.any` -- Check if any of specified bits are set to 1 or 0. * :meth:`~Bits.count` -- Count the number of bits set to 1 or 0. * :meth:`~Bits.cut` -- Create generator of constant sized chunks. * :meth:`~Bits.endswith` -- Return whether the bitstring ends with a sub-bitstring. * :meth:`~Bits.find` -- Find a sub-bitstring in the current bitstring. * :meth:`~Bits.findall` -- Find all occurences of a sub-bitstring in the current bitstring. * :meth:`~Bits.join` -- Join bitstrings together using current bitstring. * :meth:`~Bits.rfind` -- Seek backwards to find a sub-bitstring. * :meth:`~Bits.split` -- Create generator of chunks split by a delimiter. * :meth:`~Bits.startswith` -- Return whether the bitstring starts with a sub-bitstring. * :meth:`~Bits.tobytes` -- Return bitstring as bytes, padding if needed. * :meth:`~Bits.tofile` -- Write bitstring to file, padding if needed. * :meth:`~Bits.unpack` -- Interpret bits using format string. Special methods ^^^^^^^^^^^^^^^ Also available are the operators ``[]``, ``==``, ``!=``, ``+``, ``*``, ``~``, ``<<``, ``>>``, ``&``, ``|`` and ``^``. Properties ^^^^^^^^^^ * :attr:`~Bits.bin` -- The bitstring as a binary string. * :attr:`~Bits.bool` -- For single bit bitstrings, interpret as True or False. * :attr:`~Bits.bytes` -- The bitstring as a bytes object. * :attr:`~Bits.float` -- Interpret as a floating point number. * :attr:`~Bits.floatbe` -- Interpret as a big-endian floating point number. * :attr:`~Bits.floatle` -- Interpret as a little-endian floating point number. * :attr:`~Bits.floatne` -- Interpret as a native-endian floating point number. * :attr:`~Bits.hex` -- The bitstring as a hexadecimal string. * :attr:`~Bits.int` -- Interpret as a two's complement signed integer. * :attr:`~Bits.intbe` -- Interpret as a big-endian signed integer. * :attr:`~Bits.intle` -- Interpret as a little-endian signed integer. * :attr:`~Bits.intne` -- Interpret as a native-endian signed integer. * :attr:`~Bits.len` -- Length of the bitstring in bits. * :attr:`~Bits.oct` -- The bitstring as an octal string. * :attr:`~Bits.se` -- Interpret as a signed exponential-Golomb code. * :attr:`~Bits.ue` -- Interpret as an unsigned exponential-Golomb code. * :attr:`~Bits.sie` -- Interpret as a signed interleaved exponential-Golomb code. * :attr:`~Bits.uie` -- Interpret as an unsigned interleaved exponential-Golomb code. * :attr:`~Bits.uint` -- Interpret as a two's complement unsigned integer. * :attr:`~Bits.uintbe` -- Interpret as a big-endian unsigned integer. * :attr:`~Bits.uintle` -- Interpret as a little-endian unsigned integer. * :attr:`~Bits.uintne` -- Interpret as a native-endian unsigned integer. BitArray -------- ``BitArray(Bits)`` This class adds mutating methods to `Bits`. Additional methods ^^^^^^^^^^^^^^^^^^ * :meth:`~BitArray.append` -- Append a bitstring. * :meth:`~BitArray.byteswap` -- Change byte endianness in-place. * :meth:`~BitArray.clear` -- Remove all bits from the bitstring. * :meth:`~BitArray.copy` -- Return a copy of the bitstring. * :meth:`~BitArray.insert` -- Insert a bitstring. * :meth:`~BitArray.invert` -- Flip bit(s) between one and zero. * :meth:`~BitArray.overwrite` -- Overwrite a section with a new bitstring. * :meth:`~BitArray.prepend` -- Prepend a bitstring. * :meth:`~BitArray.replace` -- Replace occurences of one bitstring with another. * :meth:`~BitArray.reverse` -- Reverse bits in-place. * :meth:`~BitArray.rol` -- Rotate bits to the left. * :meth:`~BitArray.ror` -- Rotate bits to the right. * :meth:`~BitArray.set` -- Set bit(s) to 1 or 0. Additional special methods ^^^^^^^^^^^^^^^^^^^^^^^^^^ Mutating operators are available: ``[]``, ``<<=``, ``>>=``, ``*=``, ``&=``, ``|=`` and ``^=``. Attributes ^^^^^^^^^^ The same as ``Bits``, except that they are all (with the exception of ``len``) writable as well as readable. ConstBitStream -------------- ``ConstBitStream(Bits)`` This class, previously known as just ``Bits`` (which is an alias for backward-compatibility), adds a bit position and methods to read and navigate in the bitstream. Additional methods ^^^^^^^^^^^^^^^^^^ * :meth:`~ConstBitStream.bytealign` -- Align to next byte boundary. * :meth:`~ConstBitStream.peek` -- Peek at and interpret next bits as a single item. * :meth:`~ConstBitStream.peeklist` -- Peek at and interpret next bits as a list of items. * :meth:`~ConstBitStream.read` -- Read and interpret next bits as a single item. * :meth:`~ConstBitStream.readlist` -- Read and interpret next bits as a list of items. * :meth:`~ConstBitStream.readto` -- Read up to and including next occurrence of a bitstring. Additional attributes ^^^^^^^^^^^^^^^^^^^^^ * :attr:`~ConstBitStream.bytepos` -- The current byte position in the bitstring. * :attr:`~ConstBitStream.pos` -- The current bit position in the bitstring. BitStream --------- ``BitStream(BitArray, ConstBitStream)`` This class, also known as ``BitString``, contains all of the 'stream' elements of ``ConstBitStream`` and adds all of the mutating methods of ``BitArray``. bitstring-bitstring-3.1.5/doc/reading.rst000066400000000000000000000265361271665413600204670ustar00rootroot00000000000000.. currentmodule:: bitstring .. _reading: ****************************** Reading, Parsing and Unpacking ****************************** Reading and parsing --------------------- The :class:`BitStream` and :class:`ConstBitStream` classes contain number of methods for reading the bitstring as if it were a file or stream. Depending on how it was constructed the bitstream might actually be contained in a file rather than stored in memory, but these methods work for either case. In order to behave like a file or stream, every bitstream has a property :attr:`~ConstBitStream.pos` which is the current position from which reads occur. :attr:`~ConstBitStream.pos` can range from zero (its value on construction) to the length of the bitstream, a position from which all reads will fail as it is past the last bit. Note that the :attr:`~ConstBitStream.pos` property isn't considered a part of the bitstream's identity; this allows it to vary for immutable :class:`ConstBitStream` objects and means that it doesn't affect equality or hash values. The property :attr:`~ConstBitStream.bytepos` is also available, and is useful if you are only dealing with byte data and don't want to always have to divide the bit position by eight. Note that if you try to use :attr:`~ConstBitStream.bytepos` and the bitstring isn't byte aligned (i.e. :attr:`~ConstBitStream.pos` isn't a multiple of 8) then a :exc:`ByteAlignError` exception will be raised. ``read / readlist`` ^^^^^^^^^^^^^^^^^^^ For simple reading of a number of bits you can use :meth:`~ConstBitStream.read` with an integer argument. A new bitstring object gets returned, which can be interpreted using one of its properties or used for further reads. The following example does some simple parsing of an MPEG-1 video stream (the stream is provided in the ``test`` directory if you downloaded the source archive). :: >>> s = ConstBitStream(filename='test/test.m1v') >>> print(s.pos) 0 >>> start_code = s.read(32).hex >>> width = s.read(12).uint >>> height = s.read(12).uint >>> print(start_code, width, height, s.pos) 000001b3 352 288 56 >>> s.pos += 37 >>> flags = s.read(2) >>> constrained_parameters_flag = flags.read(1) >>> load_intra_quantiser_matrix = flags.read(1) >>> print(s.pos, flags.pos) 95 2 If you want to read multiple items in one go you can use :meth:`~ConstBitStream.readlist`. This can take an iterable of bit lengths and return a list of bitstring objects. So for example instead of writing:: a = s.read(32) b = s.read(8) c = s.read(24) you can equivalently use just:: a, b, c = s.readlist([32, 8, 24]) Reading using format strings ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The :meth:`~ConstBitStream.read` / :meth:`~ConstBitStream.readlist` methods can also take a format string similar to that used in the auto initialiser. Only one token should be provided to :meth:`~ConstBitStream.read` and a single value is returned. To read multiple tokens use :meth:`~ConstBitStream.readlist`, which unsurprisingly returns a list. The format string consists of comma separated tokens that describe how to interpret the next bits in the bitstring. The tokens are: ============== =================================================================== ``int:n`` ``n`` bits as a signed integer. ``uint:n`` ``n`` bits as an unsigned integer. ``intbe:n`` ``n`` bits as a byte-wise big-endian signed integer. ``uintbe:n`` ``n`` bits as a byte-wise big-endian unsigned integer. ``intle:n`` ``n`` bits as a byte-wise little-endian signed integer. ``uintle:n`` ``n`` bits as a byte-wise little-endian unsigned integer. ``intne:n`` ``n`` bits as a byte-wise native-endian signed integer. ``uintne:n`` ``n`` bits as a byte-wise native-endian unsigned integer. ``float:n`` ``n`` bits as a big-endian floating point number (same as ``floatbe``). ``floatbe:n`` ``n`` bits as a big-endian floating point number (same as ``float``). ``floatle:n`` ``n`` bits as a little-endian floating point number. ``floatne:n`` ``n`` bits as a native-endian floating point number. ``hex:n`` ``n`` bits as a hexadecimal string. ``oct:n`` ``n`` bits as an octal string. ``bin:n`` ``n`` bits as a binary string. ``bits:n`` ``n`` bits as a new bitstring. ``bytes:n`` ``n`` bytes as a ``bytes`` object. ``ue`` next bits as an unsigned exponential-Golomb code. ``se`` next bits as a signed exponential-Golomb code. ``uie`` next bits as an interleaved unsigned exponential-Golomb code. ``sie`` next bits as an interleaved signed exponential-Golomb code. ``bool`` next bits as a boolean (True or False). ``pad:n`` next ``n`` bits will be ignored (padding). ============== =================================================================== So in the earlier example we could have written:: start_code = s.read('hex:32') width = s.read('uint:12') height = s.read('uint:12') and we also could have combined the three reads as:: start_code, width, height = s.readlist('hex:32, 12, 12') where here we are also taking advantage of the default :attr:`~Bits.uint` interpretation for the second and third tokens. You are allowed to use one 'stretchy' token in a :meth:`~ConstBitStream.readlist`. This is a token without a length specified which will stretch to fill encompass as many bits as possible. This is often useful when you just want to assign something to 'the rest' of the bitstring:: a, b, everthing_else = s.readlist('intle:16, intle:24, bits') In this example the ``bits`` token will consist of everything left after the first two tokens are read, and could be empty. It is an error to use more than one stretchy token, or to use a ``ue``, ``se``, ``uie`` or ``se`` token after a stretchy token (the reason you can't use exponential-Golomb codes after a stretchy token is that the codes can only be read forwards; that is you can't ask "if this code ends here, where did it begin?" as there could be many possible answers). The ``pad`` token is a special case in that it just causes bits to be skipped over without anything being returned. This can be useful for example if parts of a binary format are uninteresting:: a, b = s.readlist('pad:12, uint:4, pad:4, uint:8') Peeking ^^^^^^^^ In addition to the read methods there are matching peek methods. These are identical to the read except that they do not advance the position in the bitstring to after the read elements. :: s = ConstBitStream('0x4732aa34') if s.peek(8) == '0x47': t = s.read(16) # t is first 2 bytes '0x4732' else: s.find('0x47') Unpacking --------- The :meth:`~Bits.unpack` method works in a very similar way to :meth:`~ConstBitStream.readlist`. The major difference is that it interprets the whole bitstring from the start, and takes no account of the current :attr:`~ConstBitStream.pos`. It's a natural complement of the :func:`pack` function. :: s = pack('uint:10, hex, int:13, 0b11', 130, '3d', -23) a, b, c, d = s.unpack('uint:10, hex, int:13, bin:2') Seeking ------- The properties :attr:`~ConstBitStream.pos` and :attr:`~ConstBitStream.bytepos` are available for getting and setting the position, which is zero on creation of the bitstring. Note that you can only use :attr:`~ConstBitStream.bytepos` if the position is byte aligned, i.e. the bit position is a multiple of 8. Otherwise a :exc:`ByteAlignError` exception is raised. For example:: >>> s = BitStream('0x123456') >>> s.pos 0 >>> s.bytepos += 2 >>> s.pos # note pos verses bytepos 16 >>> s.pos += 4 >>> print(s.read('bin:4')) # the final nibble '0x6' 0110 Finding and replacing --------------------- ``find / rfind`` ^^^^^^^^^^^^^^^^ To search for a sub-string use the :meth:`~Bits.find` method. If the find succeeds it will set the position to the start of the next occurrence of the searched for string and return a tuple containing that position, otherwise it will return an empty tuple. By default the sub-string will be found at any bit position - to allow it to only be found on byte boundaries set ``bytealigned=True``. >>> s = ConstBitStream('0x00123400001234') >>> found = s.find('0x1234', bytealigned=True) >>> print(found, s.bytepos) (8,) 1 >>> found = s.find('0xff', bytealigned=True) >>> print(found, s.bytepos) () 1 The reason for returning the bit position in a tuple is so that the return value is ``True`` in a boolean sense if the sub-string is found, and ``False`` if it is not (if just the bit position were returned there would be a problem with finding at position 0). The effect is that you can use ``if s.find(...):`` and have it behave as you'd expect. :meth:`~Bits.rfind` does much the same as :meth:`~Bits.find`, except that it will find the last occurrence, rather than the first. :: >>> t = BitArray('0x0f231443e8') >>> found = t.rfind('0xf') # Search all bit positions in reverse >>> print(found) (31,) # Found within the 0x3e near the end For all of these finding functions you can optionally specify a ``start`` and / or ``end`` to narrow the search range. Note though that because it's searching backwards :meth:`~Bits.rfind` will start at ``end`` and end at ``start`` (so you always need ``start`` < ``end``). ``findall`` ^^^^^^^^^^^ To find all occurrences of a bitstring inside another (even overlapping ones), use :meth:`~Bits.findall`. This returns a generator for the bit positions of the found strings. :: >>> r = BitArray('0b011101011001') >>> ones = r.findall([1]) >>> print(list(ones)) [1, 2, 3, 5, 7, 8, 11] ``replace`` ^^^^^^^^^^^ To replace all occurrences of one :class:`BitArray` with another use :meth:`~BitArray.replace`. The replacements are done in-place, and the number of replacements made is returned. This methods changes the contents of the bitstring and so isn't available for the :class:`Bits` or :class:`ConstBitStream` classes. :: >>> s = BitArray('0b110000110110') >>> s.replace('0b110', '0b1111') 3 # The number of replacements made >>> s.bin '111100011111111' Working with byte aligned data ------------------------------ The emphasis with the bitstring module is always towards not worrying if things are a whole number of bytes long or are aligned on byte boundaries. Internally the module has to worry about this quite a lot, but the user shouldn't have to care. To this end methods such as :meth:`~Bits.find`, :meth:`~Bits.findall`, :meth:`~Bits.split` and :meth:`~BitArray.replace` by default aren't concerned with looking for things only on byte boundaries and provide a parameter ``bytealigned`` which can be set to ``True`` to change this behaviour. This works fine, but it's not uncommon to be working only with whole-byte data and all the ``bytealigned=True`` can get a bit repetitive. To solve this it is possible to change the default throughout the module by setting ``bitstring.bytealigned``. For example:: >>> s = BitArray('0xabbb') >>> s.find('0xbb') # look for the byte 0xbb (4,) # found, but not on byte boundary >>> s.find('0xbb', bytealigned=True) # try again... (8,) # not found on any byte boundaries >>> bitstring.bytealigned = True # change the default behaviour >>> s.find('0xbb') (8,) # now only finds byte aligned bitstring-bitstring-3.1.5/doc/reference.rst000066400000000000000000000002741271665413600210030ustar00rootroot00000000000000 .. _reference: ********* Reference ********* .. toctree:: :maxdepth: 3 quick_ref bitstring_classes constbitarray bitarray constbitstream bitstream functions bitstring-bitstring-3.1.5/doc/release_notes.rst000066400000000000000000001476201271665413600217040ustar00rootroot00000000000000 .. currentmodule:: bitstring ************* Release Notes ************* Full Version History ==================== February 26th 2013: version 3.1.0 released ------------------------------------------ This is a minor release with a couple of new features and some bug fixes. New 'pad' token ^^^^^^^^^^^^^^^ This token can be used in reads and when packing/unpacking to indicate that you don't care about the contents of these bits. Any padding bits will just be skipped over when reading/unpacking or zero-filled when packing. :: >>> a, b = s.readlist('pad:5, uint:3, pad:1, uint:3') Here only two items are returned in the list - the padding bits are ignored. New clear and copy convenience methods ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ These methods have been introduced in Python 3.3 for lists and bytearrays, as more obvious ways of clearing and copying, and we mirror that change here. ``t = s.copy()`` is equivalent to ``t = s[:]``, and ``s.clear()`` is equivalent to ``del s[:]``. Other changes ^^^^^^^^^^^^^ * Some bug fixes. November 21st 2011: version 3.0.0 released ------------------------------------------ This is a major release which breaks backward compatibility in a few places. Backwardly incompatible changes ------------------------------- Hex, oct and bin properties don't have leading 0x, 0o and 0b ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ If you ask for the hex, octal or binary representations of a bitstring then they will no longer be prefixed with ``0x``, ``0o`` or ``0b``. This was done as it was noticed that the first thing a lot of user code does after getting these representations was to cut off the first two characters before further processing. :: >>> a = BitArray('0x123') >>> a.hex, a.oct, a.bin ('123', '0443', '000100100011') Previously this would have returned ``('0x123', '0o0443', '0b000100100011')`` This change might require some recoding, but it should all be simplifications. ConstBitArray renamed to Bits ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Previously Bits was an alias for ConstBitStream (for backward compatibility). This has now changed so that Bits and BitArray loosely correspond to the built-in types bytes and bytearray. If you were using streaming/reading methods on a Bits object then you will have to change it to a ConstBitStream. The ConstBitArray name is kept as an alias for Bits. Stepping in slices has conventional meaning ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The step parameter in ``__getitem__``, ``__setitem__`` and ``__delitem__`` used to act as a multiplier for the start and stop parameters. No one seemed to use it though and so it has now reverted to the convential meaning for containers. If you are using step then recoding is simple: ``s[a:b:c]`` becomes ``s[a*c:b*c]``. Some examples of the new usage:: >>> s = BitArray('0x0000') s[::4] = [1, 1, 1, 1] >>> s.hex '8888' >>> del s[8::2] >>> s.hex '880' New features ------------ New readto method ^^^^^^^^^^^^^^^^^ This method is a mix between a find and a read - it searches for a bitstring and then reads up to and including it. For example:: >>> s = ConstBitStream('0x47000102034704050647') >>> s.readto('0x47', bytealigned=True) BitStream('0x47') >>> s.readto('0x47', bytealigned=True) BitStream('0x0001020347') >>> s.readto('0x47', bytealigned=True) BitStream('0x04050647') pack function accepts an iterable as its format ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Previously only a string was accepted as the format in the pack function. This was an oversight as it broke the symmetry between pack and unpack. Now you can use formats like this:: fmt = ['hex:8', 'bin:3'] a = pack(fmt, '47', '001') a.unpack(fmt) June 18th 2011: version 2.2.0 released -------------------------------------- This is a minor upgrade with a couple of new features. New interleaved exponential-Golomb interpretations ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ New bit interpretations for interleaved exponential-Golomb (as used in the Dirac video codec) are supplied via ``uie`` and ``sie``:: >>> s = BitArray(uie=41) >>> s.uie 41 >>> s.bin '0b00010001001' These are pretty similar to the non-interleaved versions - see the manual for more details. Credit goes to Paul Sargent for the patch. New package-level bytealigned variable ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ A number of methods take a ``bytealigned`` parameter to indicate that they should only work on byte boundaries (e.g. ``find``, ``replace``, ``split``). Previously this parameter defaulted to ``False``. Instead it now defaults to ``bitstring.bytealigned``, which itself defaults to ``False``, but can be changed to modify the default behaviour of the methods. For example:: >>> a = BitArray('0x00 ff 0f ff') >>> a.find('0x0f') (4,) # found first not on a byte boundary >>> a.find('0x0f', bytealigned=True) (16,) # forced looking only on byte boundaries >>> bitstring.bytealigned = True # Change default behaviour >>> a.find('0x0f') (16,) >>> a.find('0x0f', bytealigned=False) (4,) If you're only working with bytes then this can help avoid some errors and save some typing! Other changes ^^^^^^^^^^^^^ * Fix for Python 3.2, correcting for a change to the binascii module. * Fix for bool initialisation from ``0`` or ``1``. * Efficiency improvements, including interning strategy. February 23rd 2011: version 2.1.1 released ------------------------------------------ This is a release to fix a couple of bugs that were introduced in 2.1.0. * Bug fix: Reading using the 'bytes' token had been broken (Issue 102). * Fixed problem using some methods on ``ConstBitArray`` objects. * Better exception handling for tokens missing values. * Some performance improvements. January 23rd 2011: version 2.1.0 released ----------------------------------------- New class hierarchy introduced with simpler classes --------------------------------------------------- Previously there were just two classes, the immutable ``Bits`` which was the base class for the mutable ``BitString`` class. Both of these classes have the concept of a bit position, from which reads etc. take place so that the bitstring could be treated as if it were a file or stream. Two simpler classes have now been added which are purely bit containers and don't have a bit position. These are called ``ConstBitArray`` and ``BitArray``. As you can guess the former is an immutable version of the latter. The other classes have also been renamed to better reflect their capabilities. Instead of ``BitString`` you should use ``BitStream``, and instead of ``Bits`` you can use ``ConstBitStream``. The old names are kept as aliases for backward compatibility. The classes hierarchy is:: ConstBitArray / \ / \ BitArray ConstBitStream (formerly Bits) \ / \ / BitStream (formerly BitString) Other changes ^^^^^^^^^^^^^ A lot of internal reorganisation has taken place since the previous version, most of which won't be noticed by the end user. Some things you might see are: * New package structure. Previous versions have been a single file for the module and another for the unit tests. The module is now split into many more files so it can't be used just by copying bitstring.py any more. * To run the unit tests there is now a script called ``runtests.py`` in the ``test`` directory. * File based bitstring are now implemented in terms of an mmap. This should be just an implementation detail, but unfortunately for 32-bit versions of Python this creates a limit of 4GB on the files that can be used. The work around is either to get a 64-bit Python, or just stick with version 2.0. * The ``ConstBitArray`` and ``ConstBitStream`` classes no longer copy byte data when a slice or a read takes place, they just take a reference. This is mostly a very nice optimisation, but there are occassions where it could have an adverse effect. For example if a very large bitstring is created, a small slice taken and the original deleted. The byte data from the large bitstring would still be retained in memory. * Optimisations. Once again this version should be faster than the last. The module is still pure Python but some of the reorganisation was to make it more feasible to put some of the code into Cython or similar, so hopefully more speed will be on the way. July 26th 2010: version 2.0.3 released -------------------------------------- 1. **Bug fix**: Using peek and read for a single bit now returns a new bitstring as was intended, rather than the old behaviour of returning a bool. 2. Removed HTML docs from source archive - better to use the online version. July 25th 2010: version 2.0.2 released -------------------------------------- This is a major release, with a number of backwardly incompatible changes. The main change is the removal of many methods, all of which have simple alternatives. Other changes are quite minor but may need some recoding. There are a few new features, most of which have been made to help the stream-lining of the API. As always there are performance improvements and some API changes were made purely with future performance in mind. The backwardly incompatible changes are: ---------------------------------------- Methods removed ^^^^^^^^^^^^^^^ About half of the class methods have been removed from the API. They all have simple alternatives, so what remains is more powerful and easier to remember. The removed methods are listed here on the left, with their equivalent replacements on the right:: s.advancebit() -> s.pos += 1 s.advancebits(bits) -> s.pos += bits s.advancebyte() -> s.pos += 8 s.advancebytes(bytes) -> s.pos += 8*bytes s.allunset([a, b]) -> s.all(False, [a, b]) s.anyunset([a, b]) -> s.any(False, [a, b]) s.delete(bits, pos) -> del s[pos:pos+bits] s.peekbit() -> s.peek(1) s.peekbitlist(a, b) -> s.peeklist([a, b]) s.peekbits(bits) -> s.peek(bits) s.peekbyte() -> s.peek(8) s.peekbytelist(a, b) -> s.peeklist([8*a, 8*b]) s.peekbytes(bytes) -> s.peek(8*bytes) s.readbit() -> s.read(1) s.readbitlist(a, b) -> s.readlist([a, b]) s.readbits(bits) -> s.read(bits) s.readbyte() -> s.read(8) s.readbytelist(a, b) -> s.readlist([8*a, 8*b]) s.readbytes(bytes) -> s.read(8*bytes) s.retreatbit() -> s.pos -= 1 s.retreatbits(bits) -> s.pos -= bits s.retreatbyte() -> s.pos -= 8 s.retreatbytes(bytes) -> s.pos -= 8*bytes s.reversebytes(start, end) -> s.byteswap(0, start, end) s.seek(pos) -> s.pos = pos s.seekbyte(bytepos) -> s.bytepos = bytepos s.slice(start, end, step) -> s[start:end:step] s.tell() -> s.pos s.tellbyte() -> s.bytepos s.truncateend(bits) -> del s[-bits:] s.truncatestart(bits) -> del s[:bits] s.unset([a, b]) -> s.set(False, [a, b]) Many of these methods have been deprecated for the last few releases, but there are some new removals too. Any recoding needed should be quite straightforward, so while I apologise for the hassle, I had to take the opportunity to streamline and rationalise what was becoming a bit of an overblown API. set / unset methods combined ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The ``set``/``unset`` methods have been combined in a single method, which now takes a boolean as its first argument:: s.set([a, b]) -> s.set(1, [a, b]) s.unset([a, b]) -> s.set(0, [a, b]) s.allset([a, b]) -> s.all(1, [a, b]) s.allunset([a, b]) -> s.all(0, [a, b]) s.anyset([a, b]) -> s.any(1, [a, b]) s.anyunset([a, b]) -> s.any(0, [a, b]) all / any only accept iterables ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The ``all`` and ``any`` methods (previously called ``allset``, ``allunset``, ``anyset`` and ``anyunset``) no longer accept a single bit position. The recommended way of testing a single bit is just to index it, for example instead of:: >>> if s.all(True, i): just use :: >>> if s[i]: If you really want to you can of course use an iterable with a single element, such as ``s.any(False, [i])``, but it's clearer just to write ``not s[i]``. Exception raised on reading off end of bitstring ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ If a read or peek goes beyond the end of the bitstring then a ``ReadError`` will be raised. The previous behaviour was that the rest of the bitstring would be returned and no exception raised. ``BitStringError`` renamed to ``Error`` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The base class for errors in the bitstring module is now just ``Error``, so it will likely appears in your code as ``bitstring.Error`` instead of the rather repetitive ``bitstring.BitStringError``. Single bit slices and reads return a bool ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ A single index slice (such as ``s[5]``) will now return a bool (i.e. ``True`` or ``False``) rather than a single bit bitstring. This is partly to reflect the style of the ``bytearray`` type, which returns an integer for single items, but mostly to avoid common errors like:: >>> if s[0]: ... do_something() While the intent of this code snippet is quite clear (i.e. do_something if the first bit of s is set) under the old rules ``s[0]`` would be true as long as ``s`` wasn't empty. That's because any one-bit bitstring was true as it was a non-empty container. Under the new rule ``s[0]`` is ``True`` if ``s`` starts with a ``1`` bit and ``False`` if ``s`` starts with a ``0`` bit. The change does not affect reads and peeks, so ``s.peek(1)`` will still return a single bit bitstring, which leads on to the next item... Empty bitstrings or bitstrings with only zero bits are considered False ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Previously a bitstring was False if it had no elements, otherwise it was True. This is standard behaviour for containers, but wasn't very useful for a container of just 0s and 1s. The new behaviour means that the bitstring is False if it has no 1 bits. This means that code like this:: >>> if s.peek(1): ... do_something() should work as you'd expect. It also means that ``Bits(1000)``, ``Bits(0x00)`` and ``Bits('uint:12=0')`` are all also ``False``. If you need to check for the emptiness of a bitstring then instead check the ``len`` property:: if s -> if s.len if not s -> if not s.len Length and offset disallowed for some initialisers ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Previously you could create bitstring using expressions like:: >>> s = Bits(hex='0xabcde', offset=4, length=13) This has now been disallowed, and the offset and length parameters may only be used when initialising with bytes or a file. To replace the old behaviour you could instead use :: >>> s = Bits(hex='0xabcde')[4:17] Renamed ``format`` parameter ``fmt`` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Methods with a ``format`` parameter have had it renamed to ``fmt``, to prevent hiding the built-in ``format``. Affects methods ``unpack``, ``read``, ``peek``, ``readlist``, ``peeklist`` and ``byteswap`` and the ``pack`` function. Iterables instead of ``*`` format accepted for some methods ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This means that for the affected methods (``unpack``, ``readlist`` and ``peeklist``) you will need to use an iterable to specify multiple items. This is easier to show than to describe, so instead of :: >>> a, b, c, d = s.readlist('uint:12', 'hex:4', 'bin:7') you would instead write :: >>> a, b, c, d = s.readlist(['uint:12', 'hex:4', 'bin:7']) Note that you could still use the single string ``'uint:12, hex:4, bin:7'`` if you preferred. Bool auto-initialisation removed ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ You can no longer use ``True`` and ``False`` to initialise single bit bitstrings. The reasoning behind this is that as bool is a subclass of int, it really is bad practice to have ``Bits(False)`` be different to ``Bits(0)`` and to have ``Bits(True)`` different to ``Bits(1)``. If you have used bool auto-initialisation then you will have to be careful to replace it as the bools will now be interpreted as ints, so ``Bits(False)`` will be empty (a bitstring of length 0), and ``Bits(True)`` will be a single zero bit (a bitstring of length 1). Sorry for the confusion, but I think this will prevent bigger problems in the future. There are a few alternatives for creating a single bit bitstring. My favourite is to use a list with a single item:: Bits(False) -> Bits([0]) Bits(True) -> Bits([1]) New creation from file strategy ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Previously if you created a bitstring from a file, either by auto-initialising with a file object or using the filename parameter, the file would not be read into memory unless you tried to modify it, at which point the whole file would be read. The new behaviour depends on whether you create a Bits or a BitString from the file. If you create a Bits (which is immutable) then the file will never be read into memory. This allows very large files to be opened for examination even if they could never fit in memory. If however you create a BitString, the whole of the referenced file will be read to store in memory. If the file is very big this could take a long time, or fail, but the idea is that in saying you want the mutable BitString you are implicitly saying that you want to make changes and so (for now) we need to load it into memory. The new strategy is a bit more predictable in terms of performance than the old. The main point to remember is that if you want to open a file and don't plan to alter the bitstring then use the Bits class rather than BitString. Just to be clear, in neither case will the contents of the file ever be changed - if you want to output the modified BitString then use the ``tofile`` method, for example. find and rfind return a tuple instead of a bool ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ If a find is unsuccessful then an empty tuple is returned (which is False in a boolean sense) otherwise a single item tuple with the bit position is returned (which is True in a boolean sense). You shouldn't need to recode unless you explicitly compared the result of a find to True or False, for example this snippet doesn't need to be altered:: >>> if s.find('0x23'): ... print(s.bitpos) but you could now instead use :: >>> found = s.find('0x23') >>> if found: ... print(found[0]) The reason for returning the bit position in a tuple is so that finding at position zero can still be True - it's the tuple ``(0,)`` - whereas not found can be False - the empty tuple ``()``. The new features in this release are: ------------------------------------- New count method ^^^^^^^^^^^^^^^^ This method just counts the number of 1 or 0 bits in the bitstring. :: >>> s = Bits('0x31fff4') >>> s.count(1) 16 ``read`` and ``peek`` methods accept integers ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The ``read``, ``readlist``, ``peek`` and ``peeklist`` methods now accept integers as parameters to mean "read this many bits and return a bitstring". This has allowed a number of methods to be removed from this release, so for example instead of:: >>> a, b, c = s.readbits(5, 6, 7) >>> if s.peekbit(): ... do_something() you should write:: >>> a, b, c = s.readlist([5, 6, 7]) >>> if s.peek(1): ... do_something() ``byteswap`` used to reverse all bytes ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The ``byteswap`` method now allows a format specifier of 0 (the default) to signify that all of the whole bytes should be reversed. This means that calling just ``byteswap()`` is almost equivalent to the now removed ``bytereverse()`` method (a small difference is that byteswap won't raise an exception if the bitstring isn't a whole number of bytes long). Auto initialise with bytearray or (for Python 3 only) bytes ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ So rather than writing:: >>> a = Bits(bytes=some_bytearray) you can just write :: >>> a = Bits(some_bytearray) This also works for the bytes type, but only if you're using Python 3. For Python 2.7 it's not possible to distinguish between a bytes object and a str. For this reason this method should be used with some caution as it will make you code behave differently with the different major Python versions. :: >>> b = Bits(b'abcd\x23\x00') # Only Python 3! ``set``, ``invert``, ``all`` and ``any`` default to whole bitstring ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This means that you can for example write:: >>> a = BitString(100) # 100 zero bits >>> a.set(1) # set all bits to 1 >>> a.all(1) # are all bits set to 1? True >>> a.any(0) # are any set to 0? False >>> a.invert() # invert every bit New exception types ^^^^^^^^^^^^^^^^^^^ As well as renaming ``BitStringError`` to just ``Error`` there are also new exceptions which use ``Error`` as a base class. These can be caught in preference to ``Error`` if you need finer control. The new exceptions sometimes also derive from built-in exceptions: 3. ``ByteAlignError(Error)`` - whole byte position or length needed. 4. ``ReadError(Error, IndexError)`` - reading or peeking off the end of the bitstring. 5. ``CreationError(Error, ValueError)`` - inappropriate argument during bitstring creation. 6. ``InterpretError(Error, ValueError)`` - inappropriate interpretation of binary data. March 18th 2010: version 1.3.0 for Python 2.6 and 3.x released -------------------------------------------------------------- New features ------------ byteswap method for changing endianness ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Changes the endianness in-place according to a format string or integer(s) giving the byte pattern. See the manual for details. :: >>> s = BitString('0x00112233445566') >>> s.byteswap(2) 3 >>> s BitString('0x11003322554466') >>> s.byteswap('h') 3 >>> s BitString('0x00112233445566') >>> s.byteswap([2, 5]) 1 >>> s BitString('0x11006655443322') Multiplicative factors in bitstring creation and reading ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ For example:: >>> s = Bits('100*0x123') Token grouping using parenthesis ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ For example:: >>> s = Bits('3*(uint:6=3, 0b1)') Negative slice indices allowed ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The start and end parameters of many methods may now be negative, with the same meaning as for negative slice indices. Affects all methods with these parameters. Sequence ABCs used ^^^^^^^^^^^^^^^^^^ The Bits class now derives from ``collections.Sequence``, while the BitString class derives from ``collections.MutableSequence``. Keywords allowed in ``readlist``, ``peeklist`` and ``unpack`` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Keywords for token lengths are now permitted when reading. So for example, you can write :: >>> s = bitstring.pack('4*(uint:n)', 2, 3, 4, 5, n=7) >>> s.unpack('4*(uint:n)', n=7) [2, 3, 4, 5] start and end parameters added to ``rol`` and ``ror`` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ join function accepts other iterables ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Also its parameter has changed from 'bitstringlist' to 'sequence'. This is technically a backward incompatibility in the unlikely event that you are referring to the parameter by name. ``__init__`` method accepts keywords ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Rather than a long list of initialisers the ``__init__`` methods now use a ``**kwargs`` dictionary for all initialisers except 'auto'. This should have no effect, except that this is a small backward incompatibility if you use positional arguments when initialising with anything other than auto (which would be rather unusual). More optimisations ^^^^^^^^^^^^^^^^^^ A number of methods have been speeded up. Bug fixed in replace method ^^^^^^^^^^^^^^^^^^^^^^^^^^^ (it could fail if start != 0). January 19th 2010: version 1.2.0 for Python 2.6 and 3.x released ---------------------------------------------------------------- New 'Bits' class ---------------- Introducing a brand new class, Bits, representing an immutable sequence of bits. The Bits class is the base class for the mutable BitString. The differences between Bits and BitStrings are: * Bits are immutable, so once they have been created their value cannot change. This of course means that mutating methods (append, replace, del etc.) are not available for Bits. * Bits are hashable, so they can be used in sets and as keys in dictionaries. * Bits are potentially more efficient than BitStrings, both in terms of computation and memory. The current implementation is only marginally more efficient though - this should improve in future versions. You can switch from Bits to a BitString or vice versa by constructing a new object from the old. :: >>> s = Bits('0xabcd') >>> t = BitString(s) >>> t.append('0xe') >>> u = Bits(t) The relationship between Bits and BitString is supposed to loosely mirror that between bytes and bytearray in Python 3. Deprecation messages turned on ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ A number of methods have been flagged for removal in version 2. Deprecation warnings will now be given, which include an alternative way to do the same thing. All of the deprecated methods have simpler equivalent alternatives. :: >>> t = s.slice(0, 2) __main__:1: DeprecationWarning: Call to deprecated function slice. Instead of 's.slice(a, b, c)' use 's[a:b:c]'. The deprecated methods are: ``advancebit``, ``advancebits``, ``advancebyte``, ``advancebytes``, ``retreatbit``, ``retreatbits``, ``retreatbyte``, ``retreatbytes``, ``tell``, ``seek``, ``slice``, ``delete``, ``tellbyte``, ``seekbyte``, ``truncatestart`` and ``truncateend``. Initialise from bool ^^^^^^^^^^^^^^^^^^^^ Booleans have been added to the list of types that can 'auto' initialise a bitstring. :: >>> zerobit = BitString(False) >>> onebit = BitString(True) Improved efficiency ^^^^^^^^^^^^^^^^^^^ More methods have been speeded up, in particular some deletions and insertions. Bug fixes ^^^^^^^^^ A rare problem with truncating the start of bitstrings was fixed. A possible problem outputting the final byte in ``tofile()`` was fixed. December 22nd 2009: version 1.1.3 for Python 2.6 and 3.x released ----------------------------------------------------------------- This version hopefully fixes an installation problem for platforms with case-sensitive file systems. There are no new features or other bug fixes. December 18th 2009: version 1.1.2 for Python 2.6 and 3.x released ----------------------------------------------------------------- This is a minor update with (almost) no new features. Improved efficiency ^^^^^^^^^^^^^^^^^^^ The speed of many typical operations has been increased, some substantially. Initialise from integer A BitString of '0' bits can be created using just an integer to give the length in bits. So instead of :: >>> s = BitString(length=100) you can write just :: >>> s = BitString(100) This matches the behaviour of bytearrays and (in Python 3) bytes. * A defect related to using the set / unset functions on !BitStrings initialised from a file has been fixed. November 24th 2009: version 1.1.0 for Python 2.6 and 3.x released ----------------------------------------------------------------- Note that this version will not work for Python 2.4 or 2.5. There may be an update for these Python versions some time next year, but it's not a priorty quite yet. Also note that only one version is now provided, which works for Python 2.6 and 3.x (done with the minimum of hackery!) New features ------------ Improved efficiency ^^^^^^^^^^^^^^^^^^^ A fair number of functions have improved efficiency, some quite dramatically. New bit setting and checking functions ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Although these functions don't do anything that couldn't be done before, they do make some common use cases much more efficient. If you need to set or check single bits then these are the functions you need. * ``set`` / ``unset`` : Set bit(s) to 1 or 0 respectively. * ``allset`` / ``allunset`` : Check if all bits are 1 or all 0. * ``anyset`` / ``anyunset`` : Check if any bits are 1 or any 0. >>> s = BitString(length=1000) >>> s.set((10, 100, 44, 12, 1)) >>> s.allunset((2, 22, 222)) True >>> s.anyset(range(7, 77)) True New rotate functions ^^^^^^^^^^^^^^^^^^^^ ``ror`` / ``rol`` : Rotate bits to the right or left respectively. :: >>> s = BitString('0b100000000') >>> s.ror(2) >>> s.bin '0b001000000' >>> s.rol(5) >>> s.bin '0b000000100' Floating point interpretations ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ New float initialisations and interpretations are available. These only work for BitStrings of length 32 or 64 bits. :: >>> s = BitString(float=0.2, length=64) >>> s.float 0.200000000000000001 >>> t = bitstring.pack('<3f', -0.4, 1e34, 17.0) >>> t.hex '0xcdccccbedf84f67700008841' 'bytes' token reintroduced ^^^^^^^^^^^^^^^^^^^^^^^^^^ This token returns a bytes object (equivalent to a str in Python 2.6). :: >>> s = BitString('0x010203') >>> s.unpack('bytes:2, bytes:1') ['\x01\x02', '\x03'] 'uint' is now the default token type ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ So for example these are equivalent:: a, b = s.readlist('uint:12, uint:12') a, b = s.readlist('12, 12') October 10th 2009: version 1.0.1 for Python 3.x released -------------------------------------------------------- This is a straight port of version 1.0.0 to Python 3. For changes since the last Python 3 release read all the way down in this document to version 0.4.3. This version will also work for Python 2.6, but there's no advantage to using it over the 1.0.0 release. It won't work for anything before 2.6. October 9th 2009: version 1.0.0 for Python 2.x released ------------------------------------------------------- Version 1 is here! This is the first release not to carry the 'beta' tag. It contains a couple of minor new features but is principally a release to fix the API. If you've been using an older version then you almost certainly will have to recode a bit. If you're not ready to do that then you may wish to delay updating. So the bad news is that there are lots of small changes to the API. The good news is that all the changes are pretty trivial, the new API is cleaner and more 'Pythonic', and that by making it version 1.0 I'm promising not to tweak it again for some time. API Changes ----------- New read / peek functions for returning multiple items ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The functions read, readbits, readbytes, peek, peekbits and peekbytes now only ever return a single item, never a list. The new functions readlist, readbitlist, readbytelist, peeklist, peekbitlist and peekbytelist can be used to read multiple items and will always return a list. So a line like:: >>> a, b = s.read('uint:12, hex:32') becomes >>> a, b = s.readlist('uint:12, hex:32') Renaming / removing functions ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Functions have been renamed as follows:: ``seekbit`` -> ``seek`` ``tellbit`` -> ``tell`` ``reversebits`` -> ``reverse`` ``deletebits`` -> ``delete`` ``tostring`` -> ``tobytes`` and a couple have been removed altogether: * ``deletebytes`` - use ``delete`` instead. * ``empty`` - use ``not s`` rather than ``s.empty()``. Renaming parameters ^^^^^^^^^^^^^^^^^^^ The parameters 'startbit' and 'endbit' have been renamed 'start' and 'end'. This affects the methods ``slice``, ``find``, ``findall``, ``rfind``, ``reverse``, ``cut`` and ``split``. The parameter 'bitpos' has been renamed to 'pos'. The affects the methods ``seek``, ``tell``, ``insert``, ``overwrite`` and ``delete``. Mutating methods return None rather than self ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This means that you can't chain functions together so :: >>> s.append('0x00').prepend('0xff') >>> t = s.reverse() Needs to be rewritten :: >>> s.append('0x00') >>> s.prepend('0xff') >>> s.reverse() >>> t = s Affects ``truncatestart``, ``truncateend``, ``insert``, ``overwrite``, ``delete``, ``append``, ``prepend``, ``reverse`` and ``reversebytes``. Properties renamed ^^^^^^^^^^^^^^^^^^ The 'data' property has been renamed to 'bytes'. Also if the BitString is not a whole number of bytes then a ValueError exception will be raised when using 'bytes' as a 'getter'. Properties 'len' and 'pos' have been added to replace 'length' and 'bitpos', although the longer names have not been removed so you can continue to use them if you prefer. Other changes ^^^^^^^^^^^^^ * The ``unpack`` method now always returns a list, never a single item. * BitStrings are now 'unhashable', so calling hash on one or making a set will fail. * The colon separating the token name from its length is now mandatory. So for example ``BitString('uint12=100')`` becomes ``BitString('uint:12=100')``. * Removed support for the 'bytes' token in format strings. Instead of ``s.read('bytes:4')`` use ``s.read('bits:32')``. New features ------------ Added endswith and startswith functions ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ These do much as you'd expect; they return True or False depending on whether the BitString starts or ends with the parameter. :: >>> BitString('0xef342').startswith('0b11101') True September 11th 2009: version 0.5.2 for Python 2.x released ---------------------------------------------------------- Finally some tools for dealing with endianness! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ New interpretations are now available for whole-byte BitStrings that treat them as big, little, or native-endian :: >>> big = BitString(intbe=1, length=16) # or BitString('intbe:16=1') if you prefer. >>> little = BitString(intle=1, length=16) >>> print big.hex, little.hex 0x0001 0x0100 >>> print big.intbe, little.intle 1 1 'Struct'-like compact format codes ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ To save some typing when using ``pack``, ``unpack``, ``read`` and ``peek``, compact format codes based on those used in the struct and array modules have been added. These must start with a character indicating the endianness (``>``, ``<`` or ``@`` for big, little and native-endian), followed by characters giving the format:: b 1-byte signed int B 1-byte unsigned int h 2-byte signed int H 2-byte unsigned int l 4-byte signed int L 4-byte unsigned int q 8-byte signed int Q 8-byte unsigned int For example:: >>> s = bitstring.pack('<4h', 0, 1, 2, 3) creates a BitString with four little-endian 2-byte integers. While :: >>> x, y, z = s.read('>hhl') reads them back as two big-endian two-byte integers and one four-byte big endian integer. Of course you can combine this new format with the old ones however you like:: >>> s.unpack('>> from bitstring import BitString, pack >>> a = pack('0b11, 0xff, 0o77, int:5=-1, se=33') You can also leave placeholders in the format, which will be filled in by the values provided. :: >>> b = pack('uint:10, hex:4', 33, 'f') Finally you can use a dictionary or keywords. :: >>> c = pack('bin=a, hex=b, bin=a', a='010', b='ef') The ``unpack`` method is similar to the ``read`` method except that it always unpacks from the start of the BitString. :: >>> x, y = b.unpack('uint:10, hex') If a token is given without a length (as above) then it will expand to fill the remaining bits in the BitString. This also now works with ``read`` and ``peek``. New tostring() and tofile() methods ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The ``tostring`` method just returns the data as a string, with up to seven zero bits appended to byte align. The ``tofile`` method does the same except writes to a file object. :: >>> f = open('myfile', 'wb') >>> BitString('0x1234ff').tofile(f) Other changes ^^^^^^^^^^^^^ The use of ``=`` is now mandatory in 'auto' initialisers. Tokens like ``uint12 100`` will no longer work. Also the use of a ``:`` before the length is encouraged, but not yet mandated. So the previous example should be written as ``uint:12=100``. The 'auto' initialiser will now take a file object. :: >>> f = open('myfile', 'rb') >>> s = BitString(f) July 19th 2009: version 0.5.0 for Python 2.x released ------------------------------------------------------- This update breaks backward compatibility in a couple of areas. The only one you probably need to be concerned about is the change to the default for bytealigned in ``find``, ``replace``, ``split``, etc. See the user manual for more details on each of these items. Expanded abilities of 'auto' initialiser ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ More types can be initialised through the 'auto' initialiser. For example instead of :: >>> a = BitString(uint=44, length=16) you can write :: >>> a = BitString('uint16=44') Also, different comma-separated tokens will be joined together, e.g. :: >>> b = BitString('0xff') + 'int8=-5' can be written :: >>> b = BitString('0xff, int8=-5') New formatted read and peek methods ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ These takes a format string similar to that used in the auto initialiser. If only one token is provided then a single value is returned, otherwise a list of values is returned. :: >>> start_code, width, height = s.read('hex32, uint12, uint12') is equivalent to :: >>> start_code = s.readbits(32).hex >>> width = s.readbits(12).uint >>> height = s.readbits(12).uint The tokens are:: int n : n bits as an unsigned integer. uint n : n bits as a signed integer. hex n : n bits as a hexadecimal string. oct n : n bits as an octal string. bin n : n bits as a binary string. ue : next bits as an unsigned exp-Golomb. se : next bits as a signed exp-Golomb. bits n : n bits as a new BitString. bytes n : n bytes as a new BitString. See the user manual for more details. ``hex`` and ``oct`` methods removed ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The special methods for ``hex`` and ``oct`` have been removed. Please use the ``hex`` and ``oct`` properties instead. :: >>> hex(s) becomes :: >>> s.hex ``join`` made a method ^^^^^^^^^^^^^^^^^^^^^^ The ``join`` function must now be called on a BitString object, which will be used to join the list together. You may need to recode slightly:: >>> s = bitstring.join('0x34', '0b1001', '0b1') becomes :: >>> s = BitString().join('0x34', '0b1001', '0b1') More than one value allowed in readbits, readbytes, peekbits and peekbytes ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ If you specify more than one bit or byte length then a list of BitStrings will be returned. :: >>> a, b, c = s.readbits(10, 5, 5) is equivalent to :: >>> a = readbits(10) >>> b = readbits(5) >>> c = readbits(5) bytealigned defaults to False, and is at the end of the parameter list ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Functions that have a bytealigned paramater have changed so that it now defaults to False rather than True. Also its position in the parameter list has changed to be at the end. You may need to recode slightly (sorry!) readue and readse methods have been removed ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Instead you should use the new read function with a 'ue' or 'se' token:: >>> i = s.readue() becomes :: >>> i = s.read('ue') This is more flexible as you can read multiple items in one go, plus you can now also use the peek method with ue and se. Minor bugs fixed ^^^^^^^^^^^^^^^^ See the issue tracker for more details. June 15th 2009: version 0.4.3 for Python 2.x released ----------------------------------------------------- This is a minor update. This release is the first to bundle the bitstring manual. This is a PDF and you can find it in the docs directory. New 'cut' method ^^^^^^^^^^^^^^^^ This method returns a generator for constant sized chunks of a BitString. :: >>> for byte in s.cut(8): ... do_something_with(byte) You can also specify a startbit and endbit, as well as a count, which limits the number of items generated:: >>> first100TSPackets = list(s.cut(188*8, count=100)) 'slice' method now equivalent to ``__getitem__`` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This means that a step can also be given to the slice method so that the following are now the same thing, and it's just a personal preference which to use:: >>> s1 = s[a:b:c] >>> s2 = s.slice(a, b, c) findall gets a 'count' parameter ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ So now :: >>> list(a.findall(s, count=n)) is equivalent to :: >>> list(a.findall(s))[:n] except that it won't need to generate the whole list and so is much more efficient. Changes to 'split' ^^^^^^^^^^^^^^^^^^ The split method now has a 'count' parameter rather than 'maxsplit'. This makes the interface closer to that for cut, replace and findall. The final item generated is now no longer the whole of the rest of the BitString. * A couple of minor bugs were fixed. See the issue tracker for details. May 25th 2009: version 0.4.2 for Python 2.x released ---------------------------------------------------- This is a minor update, and almost doesn't break compatibility with version 0.4.0, but with the slight exception of findall() returning a generator, detailed below. Stepping in slices ^^^^^^^^^^^^^^^^^^ The use of the step parameter (also known as the stride) in slices has been added. Its use is a little non-standard as it effectively gives a multiplicative factor to apply to the start and stop parameters, rather than skipping over bits. For example this makes it much more convenient if you want to give slices in terms of bytes instead of bits. Instead of writing ``s[a*8:b*8]`` you can use ``s[a:b:8]``. When using a step the BitString is effectively truncated to a multiple of the step, so ``s[::8]`` is equal to ``s`` if ``s`` is an integer number of bytes, otherwise it is truncated by up to 7 bits. So the final seven complete 16-bit words could be written as ``s[-7::16]``. Negative slices are also allowed, and should do what you'd expect. So for example ``s[::-1]`` returns a bit-reversed copy of ``s`` (which is similar to ``s.reversebits()``, which does the same operation on ``s`` in-place). As another example, to get the first 10 bytes in reverse byte order you could use ``s_bytereversed = s[0:10:-8]``. Removed restrictions on offset ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ You can now specify an offset of greater than 7 bits when creating a BitString, and the use of offset is also now permitted when using the filename initialiser. This is useful when you want to create a BitString from the middle of a file without having to read the file into memory. :: >>> f = BitString(filename='reallybigfile', offset=8000000, length=32) Integers can be assigned to slices ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ You can now assign an integer to a slice of a BitString. If the integer doesn't fit in the size of slice given then a ValueError exception is raised. So this is now allowed and works as expected:: >>> s[8:16] = 106 and is equivalent to :: >>> s[8:16] = BitString(uint=106, length=8) Less exceptions raised ^^^^^^^^^^^^^^^^^^^^^^ Some changes have been made to slicing so that less exceptions are raised, bringing the interface closer to that for lists. So for example trying to delete past the end of the BitString will now just delete to the end, rather than raising a ValueError. Initialisation from lists and tuples ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ A new option for the auto initialiser is to pass it a list or tuple. The items in the list or tuple are evaluated as booleans and the bits in the BitString are set to 1 for True items and 0 for False items. This can be used anywhere the auto initialiser can currently be used. For example:: >>> a = BitString([True, 7, False, 0, ()]) # 0b11000 >>> b = a + ['Yes', ''] # Adds '0b10' >>> (True, True, False) in a True Miscellany ^^^^^^^^^^ * ``reversebits`` now has optional startbit and endbit parameters. * As an optimisation ``findall`` will return a generator, rather than a list. If you still want the whole list then of course you can just call ``list()`` on the generator. * Improved efficiency of ``rfind``. * A couple of minor bugs were fixed. See the issue tracker for details. April 23rd 2009: Python 3 only version 0.4.1 released ----------------------------------------------------- This version is just a port of version 0.4.0 to Python 3. All the unit tests pass, but beyond that only limited ad hoc testing has been done and so it should be considered an experimental release. That said, the unit test coverage is very good - I'm just not sure if anyone even wants a Python 3 version! April 11th 2009: version 0.4.0 released --------------------------------------- New methods ^^^^^^^^^^^ Added ``rfind``, ``findall`` and ``replace``. These do pretty much what you'd expect - see the docstrings or the wiki for more information. More special methods ^^^^^^^^^^^^^^^^^^^^ Some missing methods were added: ``__repr__``, ``__contains__``, ``__rand__``, ``__ror__``, ``__rxor__`` and ``__delitem__``. Miscellany ^^^^^^^^^^ A couple of small bugs were fixed (see the issue tracker). There are some small backward incompatibilities relative to version 0.3.2: Combined ``find`` and ``findbytealigned`` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ``findbytealigned`` has been removed, and becomes part of ``find``. The default start position has changed on both ``find`` and ``split`` to be the start of the BitString. You may need to recode:: >>> s1.find(bs) >>> s2.findbytealigned(bs) >>> s2.split(bs) becomes :: >>> s1.find(bs, bytealigned=False, startbit=s1.bitpos) >>> s2.find(bs, startbit=s1.bitpos) # bytealigned defaults to True >>> s2.split(bs, startbit=s2.bitpos) Reading off end of BitString no longer raises exception ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Previously a read or peek function that encountered the end of the BitString would raise a ValueError. It will now instead return the remainder of the BitString, which could be an empty BitString. This is closer to the file object interface. Removed visibility of offset ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The offset property was previously read-only, and has now been removed from public view altogether. As it is used internally for efficiency reasons you shouldn't really have needed to use it. If you do then use the ``_offset`` parameter instead (with caution). March 11th 2009: version 0.3.2 released --------------------------------------- Better performance ^^^^^^^^^^^^^^^^^^ A number of methods (especially ``find`` and ``findbytealigned``) have been sped up considerably. Bit-wise operations ^^^^^^^^^^^^^^^^^^^ Added support for bit-wise AND (``&``), OR (``|``) and XOR (``^``). For example:: >>> a = BitString('0b00111') >>> print a & '0b10101' 0b00101 Miscellany ^^^^^^^^^^ Added ``seekbit`` and ``seekbyte`` methods. These complement the 'advance' and 'retreat' functions, although you can still just use bitpos and bytepos properties directly. :: >>> a.seekbit(100) # Equivalent to a.bitpos = 100 Allowed comparisons between BitString objects and strings. For example this will now work:: >>> a = BitString('0b00001111') >>> a == '0x0f' True February 26th 2009: version 0.3.1 released ------------------------------------------ This version only adds features and fixes bugs relative to 0.3.0, and doesn't break backwards compatibility. Octal interpretation and initialisation ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The oct property now joins bin and hex. Just prefix octal numbers with '0o':: >>> a = BitString('0o755') >>> print a.bin 0b111101101 Simpler copying ^^^^^^^^^^^^^^^ Rather than using ``b = copy.copy(a)`` to create a copy of a BitString, now you can just use ``b = BitString(a)``. More special methods ^^^^^^^^^^^^^^^^^^^^ Lots of new special methods added, for example bit-shifting via ``<<`` and ``>>``, equality testing via ``==`` and ``!=``, bit inversion (``~``) and concatenation using ``*``. Also ``__setitem__`` is now supported so BitString objects can be modified using standard index notation. Proper installer ^^^^^^^^^^^^^^^^ Finally got round to writing the distutils script. To install just ``python setup.py install``. February 15th 2009: version 0.3.0 released ------------------------------------------ Simpler initialisation from binary and hexadecimal ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The first argument in the BitString constructor is now called 'auto' and will attempt to interpret the type of a string. Prefix binary numbers with '0b' and hexadecimals with '0x':: >>> a = BitString('0b0') # single zero bit >>> b = BitString('0xffff') # two bytes Previously the first argument was 'data', so if you relied on this then you will need to recode:: >>> a = BitString('\x00\x00\x01\xb3') # Don't do this any more! becomes :: >>> a = BitString(data='\x00\x00\x01\xb3') or just :: >>> a = BitString('0x000001b3') This new notation can also be used in functions that take a BitString as an argument. For example:: >>> a = BitString('0x0011') + '0xff' >>> a.insert('0b001', 6) >>> a.find('0b1111') BitString made more mutable ^^^^^^^^^^^^^^^^^^^^^^^^^^^ The methods ``append``, ``deletebits``, ``insert``, ``overwrite``, ``truncatestart`` and ``truncateend`` now modify the BitString that they act upon. This allows for cleaner and more efficient code, but you may need to rewrite slightly if you depended upon the old behaviour:: >>> a = BitString(hex='0xffff') >>> a = a.append(BitString(hex='0x00')) >>> b = a.deletebits(10, 10) becomes :: >>> a = BitString('0xffff') >>> a.append('0x00') >>> b = copy.copy(a) >>> b.deletebits(10, 10) Thanks to Frank Aune for suggestions in this and other areas. Changes to printing ^^^^^^^^^^^^^^^^^^^ The binary interpretation of a BitString is now prepended with '0b'. This is in keeping with the Python 2.6 (and 3.0) bin function. The prefix is optional when initialising using `bin=`. Also, if you just print a BitString with no interpretation it will pick something appropriate - hex if it is an integer number of bytes, otherwise binary. If the BitString representation is very long it will be truncated by '...' so it is only an approximate interpretation. :: >>> a = BitString('0b0011111') >>> print a 0b0011111 >>> a += '0b0' >>> print a 0x3e More convenience functions ^^^^^^^^^^^^^^^^^^^^^^^^^^ Some missing methods such as ``advancebit`` and ``deletebytes`` have been added. Also a number of 'peek' methods make an appearance as have ``prepend`` and ``reversebits``. See the Tutorial for more details. January 13th 2009: version 0.2.0 released ----------------------------------------- Some fairly minor updates, not really deserving of a whole version point update. December 29th 2008: version 0.1.0 released ------------------------------------------ First release! bitstring-bitstring-3.1.5/doc/slicing.rst000066400000000000000000000142611271665413600204760ustar00rootroot00000000000000.. currentmodule:: bitstring Slicing, Dicing and Splicing ============================ Manipulating binary data can be a bit of a challenge in Python. One of its strengths is that you don't have to worry about the low level data, but this can make life difficult when what you care about is precisely the thing that is safely hidden by high level abstractions. In this section some more methods are described that treat data as a series of bits, rather than bytes. Slicing ------- Slicing takes three arguments: the first position you want, one past the last position you want and a multiplicative factor which defaults to 1. The third argument (the 'step') will be described shortly, but most of the time you'll probably just need the bit-wise slice, where for example ``a[10:12]`` will return a 2-bit bitstring of the 10th and 11th bits in ``a``, and ``a[32]`` will return just the 32nd bit. :: >>> a = BitArray('0b00011110') >>> b = a[3:7] >>> print(a, b) 0x1e 0xf For single bit indices (as opposed to slices) a boolean is returned; that is ``True`` for '1' bits and ``False`` for '0' bits:: >>> a[0] False >>> a[4] True If you want a single bit as a new bitstring then use a one-bit slice instead:: >>> a[0:1] BitArray('0b0') Indexing also works for missing and negative arguments, just as it does for other containers. :: >>> a = BitArray('0b00011110') >>> print(a[:5]) # first 5 bits 0b00011 >>> print(a[3:]) # everything except first 3 bits 0b11110 >>> print(a[-4:]) # final 4 bits 0xe >>> print(a[:-1]) # everything except last bit 0b0001111 >>> print(a[-6:-4]) # from 6 from the end to 4 from the end 0b01 Stepping in slices ^^^^^^^^^^^^^^^^^^ The step parameter (also known as the stride) can be used in slices and has the same meaning as in the built-in containers: >>> s = BitArray(16) >>> s[::2] = [1]*8 >>> s.bin '1010101010101010' >>> del s[8::2] >>> s.bin '101010100000' >>> s[::3].bin '1010' Negative slices are also allowed, and should do what you'd expect. So for example ``s[::-1]`` returns a bit-reversed copy of ``s`` (which is similar to using ``s.reverse()``, which does the same operation on ``s`` in-place). Joining ------- To join together a couple of bitstring objects use the ``+`` or ``+=`` operators, or the :meth:`~BitArray.append` and :meth:`~BitArray.prepend` methods. :: # Six ways of creating the same BitArray: a1 = BitArray(bin='000') + BitArray(hex='f') a2 = BitArray('0b000') + BitArray('0xf') a3 = BitArray('0b000') + '0xf' a4 = BitArray('0b000') a4.append('0xf') a5 = BitArray('0xf') a5.prepend('0b000') a6 = BitArray('0b000') a6 += '0xf' Note that the final three methods all modify a bitstring, and so will only work with :class:`BitArray` objects, not the immutable :class:`Bits` objects. If you want to join a large number of bitstrings then the method :meth:`~Bits.join` can be used to improve efficiency and readability. It works like the ordinary string join function in that it uses the bitstring that it is called on as a separator when joining the list of bitstring objects it is given. If you don't want a separator then it can be called on an empty bitstring. :: bslist = [BitArray(uint=n, length=12) for n in xrange(1000)] s = BitArray('0b1111').join(bslist) Truncating, inserting, deleting and overwriting ----------------------------------------------- The functions in this section all modify the bitstring that they operate on and so are not available for :class:`Bits` objects. Deleting and truncating ^^^^^^^^^^^^^^^^^^^^^^^ To delete bits just use ``del`` as you would with any other container:: >>> a = BitArray('0b00011000') >>> del a[3:5] # remove 2 bits at pos 3 >>> a.bin ‘000000’ >>> b = BitArray('0x112233445566') >>> del b[24:40] >>> b.hex '11223366' You can of course use this to truncate the start or end bits just as easily:: >>> a = BitArray('0x001122') >>> del a[-8:] # remove last 8 bits >>> del a[:8] # remove first 8 bits >>> a == '0x11' True ``insert`` ^^^^^^^^^^ As you might expect, :meth:`~BitArray.insert` takes one :class:`BitArray` and inserts it into another. A bit position must be specified for :class:`BitArray` and :class:`Bits`, but for BitStreams if not present then the current :attr:`~ConstBitStream.pos` is used. :: >>> a = BitArray('0x00112233') >>> a.insert('0xffff', 16) >>> a.hex '0011ffff2233' ``overwrite`` ^^^^^^^^^^^^^ :meth:`~BitArray.overwrite` does much the same as :meth:`~BitArray.insert`, but predictably the :class:`BitArray` object's data is overwritten by the new data. :: >>> a = BitStream('0x00112233') >>> a.pos = 4 >>> a.overwrite('0b1111') # Uses current pos as default >>> a.hex '0f112233' The bitstring as a list ----------------------- If you treat a bitstring object as a list whose elements are all either '1' or '0' then you won't go far wrong. The table below gives some of the equivalent ways of using methods and the standard slice notation. =========================== ====================================== Using functions Using slices =========================== ====================================== ``s.insert(bs, pos)`` ``s[pos:pos] = bs`` ``s.overwrite(bs, pos)`` ``s[pos:pos + bs.len] = bs`` ``s.append(bs)`` ``s[s.len:s.len] = bs`` ``s.prepend(bs)`` ``s[0:0] = bs`` =========================== ====================================== Splitting --------- ``split`` ^^^^^^^^^ Sometimes it can be very useful to use a delimiter to split a bitstring into sections. The :meth:`~Bits.split` method returns a generator for the sections. :: >>> a = BitArray('0x4700004711472222') >>> for s in a.split('0x47', bytealigned=True): ... print(s.hex) 470000 4711 472222 Note that the first item returned is always the bitstring before the first occurrence of the delimiter, even if it is empty. ``cut`` ^^^^^^^ If you just want to split into equal parts then use the :meth:`~Bits.cut` method. This takes a number of bits as its first argument and returns a generator for chunks of that size. :: >>> a = BitArray('0x47001243') >>> for byte in a.cut(8): ... print(byte.hex) 47 00 12 43 bitstring-bitstring-3.1.5/doc/walkthrough.rst000066400000000000000000000333231271665413600214050ustar00rootroot00000000000000.. currentmodule:: bitstring .. _walkthrough: *********** Walkthrough *********** A Brief Introduction ==================== The aim of the :mod:`bitstring` module is make dealing with binary data in Python as easy as possible. In this section I will take you through some of the features of the module to help you get started using it. Only a few of the module's features will be covered in this walkthrough; the :ref:`manual` and :ref:`reference` provide a more thorough guide. The whole of this section can be safely skipped or skimmed over if you prefer to start with the manual. If however you'd like a gentler introduction then you might like to follow along the examples with a Python interpreter. Prerequisites ------------- * Python 2.6, 2.7 or 3.x. * An installed bitstring module. * A rudimentory knowledge of binary concepts. * A little free time. If you haven't yet downloaded and installed :mod:`bitstring` then please do so (it might be as easy as typing "``sudo easy_install bitstring``" or "``sudo pip install bitstring``" depending on your system). I'll be going through some examples using the interactive Python interpreter, so feel free to start up a Python session and follow along. Getting started --------------- :: >>> from bitstring import BitArray, BitStream First things first, we're going to be typing 'bitstring' a lot, so importing directly saves us a lot of ``bitstring.BitStream`` nonsense. The classes we have imported are :class:`BitArray` which is just a container for our binary data and :class:`BitStream` which adds a bit position and reading methods to treat the data as a stream. There are also immutable versions of both these classes that we won't be using here. We can now create a couple of bitstrings:: >>> a = BitArray('0xff01') >>> b = BitArray('0b110') The first of these we made from the hexadecimal string ``0xff01`` - the ``0x`` prefix makes it hexadecimal just as ``0b`` means binary and ``0o`` means octal. Each hex digit represents four bits, so we have a bitstring of length 16 bits. The second was created from a binary string. In this case it is just three bits long. Don't worry about it not being a whole number of bytes long, that's all been taken care of internally. .. note:: Be sure to remember the quotes around the hex and binary strings. If you forget them you would just have an ordinary Python integer, which would instead create a bitstring of that many '0' bits. For example ``0xff01`` is the same as the base-10 number 65281, so ``BitArray(0xff01)`` would consist of 65281 zero bits! There are lots of things we can do with our new bitstrings, the simplest of which is just to print them:: >>> print(a) 0xff01 >>> print(b) 0b110 Now you would be forgiven for thinking that the strings that we used to create the two bitstrings had just been stored to be given back when printed, but that's not the case. Every bitstring should be considered just as a sequence of bits. As we'll see there are lots of ways to create and manipulate them, but they have no memory of how they were created. When they are printed they just pick the simplest hex or binary representation of themselves. If you prefer you can pick the representation that you want:: >>> a.bin '1111111100000001' >>> b.oct '6' >>> b.int -2 >>> a.bytes '\xff\x01' There are a few things to note here: * To get the different interpretations of the binary data we use properties such as :attr:`~Bits.bin`, :attr:`~Bits.hex`, :attr:`~Bits.oct`, :attr:`~Bits.int` and :attr:`~Bits.bytes`. You can probably guess what these all mean, but you don't need to know quite yet. The properties are calculated when you ask for them rather than being stored as part of the object itself. * The :attr:`~Bits.bytes` property returns a ``bytes`` object. This is slightly different in Python 2.7 to Python 3 - in Python 3 you would get ``b'\xff\x01'`` returned instead. Great - let's try some more:: >>> b.hex bitstring.InterpretError: Cannot convert to hex unambiguously - not multiple of 4 bits. Oh dear. The problem we have here is that ``b`` is 3 bits long, whereas each hex digit represents 4 bits. This means that there is no unambiguous way to represent it in hexadecimal. There are similar restrictions on other interpretations (octal must be a mulitple of 3 bits, bytes a multiple of 8 bits etc.) An exception is raised rather than trying to guess the best hex representation as there are a multitude of ways to convert to hex. I occasionally get asked why it doesn't just do the 'obvious' conversion, which is invariably what that person expects from his own field of work. This could be truncating bits at the start or end, or padding at the start or end with either zeros or ones. Rather than try to guess what is meant we just raise an exception - if you want a particular behaviour then write it explicitly:: >>> (b + [0]).hex 'c' >>> ([0] + b).hex '6' Here we've added a zero bit first to the end and then to the start. Don't worry too much about how it all works, but just to give you a taster the zero bit ``[0]`` could also have been written as ``BitArray([0])``, ``BitArray([0])``, ``BitArray('0b0')``, ``BitArray(bin='0')``, ``'0b0'`` or just ``1`` (this final method isn't a typo, it means construct a bitstring of length one, with all the bits initialised to zero - it does look a bit confusing though which is why I prefer [0] and [1] to represent single bits). Take a look at :ref:`auto_init` for more details. Modifying bitstrings -------------------- A :class:`BitArray` can be treated just like a list of bits. You can slice it, delete sections, insert new bits and more using standard index notation:: >>> print(a[3:9]) 0b111110 >>> del a[-6:] >>> print(a) 0b1111111100 The slicing works just as it does for other containers, so the deletion above removes the final six bits. If you ask for a single item, rather than a slice, a boolean is returned. Naturally enough ``1`` bits are ``True`` whereas ``0`` bits are ``False``. :: >>> a[0] True >>> a[-1] False To join together bitstrings you can use a variety of methods, including :meth:`~BitArray.append`, :meth:`~BitArray.prepend`, :meth:`~BitArray.insert`, and plain :meth:`+` or :meth:`+=` operations:: >>> a.prepend('0b01') >>> a.append('0o7') >>> a += '0x06' Here we first put two bits at the start of ``a``, then three bits on the end (a single octal digit) and finally another byte (two hex digits) on the end. Note how we are just using ordinary strings to specify the new bitstrings we are adding. These get converted automatically to the right sequence of bits. .. note:: The length in bits of bitstrings specified with strings depends on the number of characters, including leading zeros. So each hex character is four bits, each octal character three bits and each binary character one bit. Finding and Replacing --------------------- A :meth:`~Bits.find` is provided to search for bit patterns within a bitstring. You can choose whether to search only on byte boundaries or at any bit position:: >>> a = BitArray('0xa9f') >>> a.find('0x4f') (3,) Here we have found the ``0x4f`` byte in our bitstring, though it wasn't obvious from the hexadecimal as it was at bit position 3. To see this clearer consider this equality:: >>> a == '0b101, 0x4f, 0b1' True in which we've broken the bitstring into three parts to show the found byte. This also illustrates using commas to join bitstring sections. Constructing a bitstring ------------------------ Let's say you have a specification for a binary file type (or maybe a packet specification etc.) and you want to create a bitstring quickly and easily in Python. For this example I'm going to use a header from the MPEG-2 video standard. Here's how the header is described in the standard: ==================================== =============== ============ sequence_header() No. of bits Mnemonic ==================================== =============== ============ sequence_header_code 32 bslbf horizontal_size_value 12 uimsbf vertical_size_value 12 uimsbf aspect_ratio_information 4 uimsbf frame_rate_code 4 uimsbf bit_rate_value 18 uimsbf marker_bit 1 bslbf vbv_buffer_size_value 10 uimsbf constrained_parameters_flag 1 bslbf load_intra_quantiser_matrix 1 uimsbf if (load_intra_quantiser_matrix) { intra_quantiser_matrix[64] } 8*64 uimsbf load_non_intra_quantiser_matrix 1 uimsbf if (load_non_intra_quantiser_matrix) { non_intra_quantiser_matrix[64] } 8*64 uimsbf next_start_code() ==================================== =============== ============ The mnemonics mean things like uimsbf = 'Unsigned integer, most significant bit first'. So to create a sequence_header for your particular stream with width of 352 and height of 288 you could start like this:: s = BitArray() s.append('0x000001b3') # the sequence_header_code s.append('uint:12=352') # 12 bit unsigned integer s.append('uint:12=288') ... which is fine, but if you wanted to be a bit more concise you could just write :: s = BitArray('0x000001b3, uint:12=352, uint:12=288') This is better, but it might not be a good idea to have the width and height hard-wired in like that. We can make it more flexible by using a format string and the :func:`pack` function:: width, height = 352, 288 s = bitstring.pack('0x000001b3, 2*uint:12', width, height) where we have also used ``2*uint:12`` as shorthand for ``uint:12, uint:12``. The :func:`pack` function can also take a dictionary as a parameter which can replace the tokens in the format string. For example:: fmt = 'sequence_header_code, uint:12=horizontal_size_value, uint:12=vertical_size_value, uint:4=aspect_ratio_information, ... ' d = {'sequence_header_code': '0x000001b3', 'horizontal_size_value': 352, 'vertical_size_value': 288, 'aspect_ratio_information': 1, ... } s = bitstring.pack(fmt, **d) Parsing bitstreams ------------------ You might have noticed that :func:`pack` returned a :class:`BitStream` rather than a :class:`BitArray`. This isn't a problem as the :class:`BitStream` class just adds a few stream-like qualities to :class:`BitArray` which we'll take a quick look at here. First, let's look at the stream we've just created:: >>> s BitStream('0x000001b31601201') The stream-ness of this object is via its bit position, and various reading and peeking methods. First let's try a read or two, and see how this affects the bit position:: >>> s.pos 0 >>> s.read(24) BitStream('0x000001') >>> s.pos 24 >>> s.read('hex:8') 'b3' >>> s.pos 32 First we read 24 bits, which returned a new :class:`BitStream` object, then we used a format string to read 8 bits interpreted as a hexadecimal string. We know that the next two sets of 12 bits were created from integers, so to read them back we can say >>> s.readlist('2*uint:12') [352, 288] If you don't want to use a bitstream then you can always use :meth:`~Bits.unpack`. This takes much the same form as :meth:`~ConstBitStream.readlist` except it just unpacks from the start of the bitstring. For example:: >>> s.unpack('bytes:4, 2*uint:12, uint:4') ['\x00\x00\x01\xb3', 352, 288, 1] Worked examples =============== Below are a few examples of using the bitstring module, as I always find that a good example can help more than a lengthy reference manual. Hamming distance ---------------- The Hamming distance between two bitstrings is the number of bit positions in which the two bitstrings differ. So for example the distance between 0b00110 and 0b01100 is 2 as the second and fourth bits are different. Write a function that calculates the Hamming weight of two bitstrings. :: def hamming_weight(a, b): return (a^b).count(True) Er, that's it. The :meth:`^` is a bit-wise exclusive or, which means that the bits in ``a^b`` are only set if they differ in ``a`` and ``b``. The :meth:`~Bits.count` method just counts the number of 1 (or True) bits. :: >>> a = Bits('0b00110') >>> hamming_weight(a, '0b01100') 2 Sieve of Eratosthenes --------------------- The sieve of Eratosthenes is an ancient (and very inefficient) method of finding prime numbers. The algorithm starts with the number 2 (which is prime) and marks all of its multiples as not prime, it then continues with the next unmarked integer (which will also be prime) and marks all of its multiples as not prime. So to print all primes under a million you could write:: from bitstring import BitArray # create a BitArray with a million zero bits. # The bits will be set to indicate that the bit position isn't prime. has_factors = BitArray(1000000) for i in xrange(2, 1000000): if not has_factors[i]: print(i) # Set all multiples of our prime to 1. has_factors.set(True, xrange(i*2, 1000000, i)) I'll leave optimising the algorithm as an exercise for the reader, but it illustrates both bit checking and setting. One reason you might want to use a bitstring for this purpose (instead of a plain list for example) is that the million bits only take up a million bits in memory, whereas for a list of integers it would be much more. Try asking for a billion elements in a list - unless you've got some really nice hardware it will fail, whereas a billion element bitstring only takes 125MB. bitstring-bitstring-3.1.5/doc/wingware-logo-180x58.png000066400000000000000000000175711271665413600224650ustar00rootroot00000000000000‰PNG  IHDR´:wsšsBIT|dˆ pHYs€€2B­ãtEXtSoftwarewww.inkscape.org›î<öIDATxœíyœ\e™ï¿Ï9§–®­×$ÝÙ¡“€YØÃ"È.Òè°ÂæUü°_·‡½,£1Cï ¸€£2ƒ€,ޏ]ãÌeY•EQÀ4`IHÒôR]ݵçþñžSuªºªÓ"‰Ø¿Ïç|ªê}ßó.§žóœg{Ÿ#ªÊžŒ³ï»Ï^ðâŸÎ´eñâýŸµÐ[,ÕËÎ<ó´'w÷Ü&±çÁÙݨ‡OÞ|s$µ­ï‚wYögT˜“ˆ7e¡÷³Tä(`’ '1 ²§qè•+W†‹–óqÑ骠Â÷÷[´¸•“D±dHв߲eïuwÏw{¬Ý= ®YùÅ£\+ô,ðe0Ä ÷ž½W/*'Y–…ˆ Wqo_¹rå5ÿIì~ì"ÇÊ•+›Š–s£ms‰ªŠ_.ÑHôáD"ñQÛ¶TA8rÑ~}øçÝ6ñIìqØí"ÇÕ+Wm[ÖW€vñhÀ²,PØgþ>…†X¬%“ÉТ()÷ºùáYË—/Þ=³ŸÄž†Ý¡Ï>ûl{Û¶m /¼±!?= 9€ Vu™2eêæx">¿··—¦Æ&\UðY¸B«åD.nÙë˜Äž‡·]?~¤Ç/:àÀŸ…CÑÓ]u6Ò ª¨*!'´iæô™ó·nÙB¬!†bˆ1M=á°þþí^Ã$ö\¼­"ÇᇞÚwñþµ´4­RˆëǦ¡Á‰eé»ìSÌg³N¾P¤©¹¹,‹xb‰%bˆZ„B¶0ùòS»ß¶…LbŘ"G×êy €#À™@ Cˆqï{e `Lèˆc-8vI²ÙmŠ"”8²B¡ê‚X4·$‹‘pÈÙ¼éMfÍ™mÎÇ'bŲ,üQU±ë}À$AO¢6Aw­žw°xï[A;gFv)1·e̦…B‘HÊbÁÞû:Ï>ó û¾k!"‚ºŠe‰aÒŠ§ª©SEáàëoy®“ø«GAw­žga¬KvEçZ„D¦ƒ¹A,–±@•\!O.›¥ZÜQ«ÀÁ‹ÞÍ3¿ý- .B<"V@]ÓÖXBÊÜÙÃQ»b¾“øëGI†îZ=Ïn>´«:oÍ/`ïâ A“@¡P`x8c&ái{K–,fÓú tÎ_€ í°ŸKÚ»ecäÒK/Í調Oâ¯A} £‰Ù~< <l†¼# ¯YÑ]S«üÜu× ¸Y¥ÒQâµã88¶C¡X„íÓ{û·÷·ÆR)\×cÊÆ-">1#"ÒÜ<}*°a¼ ŸÄ;@×êy­À§«êþœ½fE÷'Úéµ_¸îïǹ©X,V”‹X¨º%ÎŽ„)d D¶´Mi›úÚ+¯Ñ:¥tfˆ¤e pé27®¡Q„ íLôß<|ý (ïŽY³¢»w¢^³ê‹+Û¾q4—m ±-˲ú\²ÿÔ§ófÍœ #™a²Ùñ†(N(L4-Y6‚œÙ·z€‚kµOt®“xçÁéZ=O€ «ÊÿqgˆùW­:ÛûFóËWâ×u+Lm>A*äŽz÷Q±Ç~ý(³gÏ-õ£(‹¤ÓC(i@…‘0‘p„h´Á³zhi$Ù#âR&±{áû­²7€{&ÚÑW\1WBÑ-䳸®â„CÄcqBáp©M™ Íï%‹¿ü⋳fÍñgöÌÙ›{{zgΞí8%Â*Œhaú(— 2é!¶lÝL>ŸGs…ºOUÍ)ü/…Û†à”ZmÄ<6î°àí"ñZm’ð>…Û\ø»q\–IìXÀ{ªÊHÇwœ³t¯½®³mk©ïñ!ƒƒi3—ËSÉÔÆD<>ÍvBD£ L›6dcŠXC”p$‚ã8–eH»žw^Dp .ƒƒ@¨.‡öpŸ÷yz­Ê¤ñˆÎê=p†÷yïÆšÄn‚Ì­*{|"$š›—&/WÀuµ¬ûù\Õ-24”&•2:§mYÛ/\ØñÜsÏ3oþ\×%™HIsª×…b8{¡P ŸÍ2œ!›ÍyD®%®ïª ‡ ?¼_DBªZa³V#Jø8‹ò à-Gœ„áÌÛ†àÁÒúE>-p)ðµAÕ¯ùå"‡ºp;ðp>¦ªuŸzI‘»¢°t«ê _Þ 2Ç‹0žÐÖ:§«ÂZÒp³ªj£Èû]ø²ÂciÕjýˆ”ÈÅ Wà}êë‚u ‘i¿Týh­S"W)|Xá×iÕ‹ê­Ëëï)3‚šó~¯ð­´êUãü\aï±úBà;ÐTU¾e¼ÌŸ??2«cÆåN8qœ°ÇJM8\ÐæœËemYD?ô°ð¯ýµìÝ9¯ÔeYþ„J+ô‰YD‡BÄ Z[Ûhoo'ÙØX:W‹CË—/Ï5×AÕ?/q8¶âBˆØ"~X«†è‚mâp Тp¿ªUS1zH[°½kb]ö.OÀc)­j˜Ê>°ƒå!ø8p-0G Zçhó”ýJ p࿽s>Ø,Rýÿ‚¹÷ ÁyÕgû*@jŒõGjôÀX ⬳ΊM›>ýŒd2E2•"ÕÔ„ãþ7_ Tΰ÷œ½7¿øÇ?Æï·ßh"V- %5¬!å dY$âq¦NJ(Ïñ§qNù>oÌ ±Ã#ðiÀ÷{â è ¶ p™ Î=lÎMÀ="²c÷g%Žpà¨Õ¹õ,8 Wuø)ÎÃiÁS" –h ‚–à p­ Yæ‹)|È)|iœkùü ê¾ÕGÚ\÷m@GÞUëD…SÆZ¿ô«>UMÐîšÝéñÌî¸ãöŠZ ñ*$}N …hllÂvB£ä^Çvzl‘öx"‰c;e±!8ñ*Bö ê÷aÙ6-ÍM` ™Bz¼ÎŸO rñÄ »µ,ŸUª7mOzƒâÆx p§À`Yî‘ÈÎ9žv®éÿ' %p§÷uyUŸôê×û%Eùu ‘iÀÑÀOƒ¢&‘Nàbà?ÓªwߎHŠ,¡ªÃ k½¹…wÔ~G°ðWƒq³ˆÈàHëB[ä¾ÙL!‹䫊Ž,Y´¸åùçŸ#žH”ôE*ˆ¸!Cu@Ž¢!eP7ÿ~<óT}x ˜ƒC¼qCÀ2à™Õ—Óª¿Ãˆð‰/e8Ú …U‰;„@?0×e€%pW­qа Yð.\Œ7¼?€À˜7¹sS"ûŽuˆˆF) Òɸ¢ý=ôЖ)SÛ¦ù“²YNM`QÀC}À~ûž}öÙè”©ÓØ¸qD£FD­$bC¶þ©Õ“ñûge2Ο6=õ»ñÌÛÃ}Àµ–y?3!²- 7ÚÜ \›„÷?)Â2)—Ov¯ê@»ÈICF xo~>Uä[TÇÅ@ª‘ù¶À¼U?ðSUÍ%Eî.Í™µÞÞ(r8Ð |iKÀzÌÍvµwþr`»w3Ty€À¹ ÿ·_õ)€!Õ)‘o*\‘0œ{¬­pïIJ5K`!°ÈF fZ ­#þøX§ªsa‚{ ¯\¹²m°££?ŸÏO‹F£Ç¸®[ÁeKˆ`‰+E¦wLïÙ²uk[K[ŠR,Ù´iS§L%žH˜ WÄixžÂ:û‚ʦˆÐ_ÜÊ6ùs_ÍÆ5 ð1ràéÀ5¶ù“Ô­t&݃isðO~Æ;N5ÞT‘÷'ᇠ'õˆtmSíŸh_b,AW 0@Äp9p»k¸sÖ†{UU"w ¬h9Ü5Ät4ð]U¥`[p½ñ0îìCáŸ.øüT‘;ƸIÏ'ð4¨Bø–'û×Â]ÀÖ:u¸¤C;$è•+W¦>÷¹Ï hfäc·^zéʃo½µ=î—$ÕØXó<Û¶@d{G{GÛÚµÝ465•'Åb‘on$OÒ6¥ Çñu%Ÿëo‚qÝr`¿e of^C,÷>²´êï’"/‹’"‹1ÜëÑŒêë~›AÕ?$Eþ¨pj\ä@ ßž¨¸Q U‘Ó†ÓŸV€ZDNÈN¤ŸAÕ 3XJä³UOÒðß X/pRJ¤8øYŸêv…»V¸F9|ce%n$EŽÆ(É6|2à´Þ·mÀ¬aøÌÆÑk‡Õ¶ÇiŽõæ»Yá#!x"(.Õ8÷KiÕ꛵&v¸I6çÙ©?µbÅ9…bq>@$šë„B³ÓƒýTGÔù(ÝüÑGÕøØã“j2D_í L¥Y¿~=[¶ne8“1vìº(»ÍJ}ãðx ø÷y &(ëû5ÚÜ 4Zð5oô]âLQÕ\Úpþ{)˜±Çý„™àXª¦ÿ°šuLøž_?¤ú,F_8#z¼‘†Gjtåß,)… ª`–W¥§XŽ‚ÀkýªOô«>1 úO˜'à4ë‹»0ûÀ˜}Õ 7´ŠHçgV¯Nrù›ó¹ÜÖC9$ŽÅÚ‘¢ë²­§‡jÑHP–,^’{òÉ'¬ÎÎyUu•ñêº ô÷±aã^{íÖ­{×__φysÓ&úÌ]–jijQ» ÷±~`ÂÑ­hÙÚq$PÚ¦8Ÿ€ß7žð@õÆW-¤á|ÛÕp¾z[Ý&šêlT{;¼¯ç½ƒP§ò}Œé컵J~L‰œŠ¹w¥¡¡Þ\$Ä8¯vˆAÕë¾ ¨ðËz7ÂD1&AÛ¹â1bY/9ÃÙ3²##Sm/‹á†p´Ùo3’fpЈ>þ¥H%×9–WÄKÝUæÌ> •*³äó²Ù,Ù4é¡4½=½lظ‘žÞúúúȤÓlïÛÎæÍ›ùÃÆÇq™¸V}ÏT$ðÀ€jOu›AÕ¼Ÿ?|«âF5Tµ8¾…!ˆZx ¯%E´Þ7F™=ËŽ¯4ß]í!¸Ûÿî–M}¦NÄRc qV©êH½Ã6¬úKR" Æs T¯¾ ,øULdF­vO&EFj ‘%Á¶c²zE÷ýÓ>ûþxöoŸ»®èº8ª"rÂá gLßv¢1lÇ¥çàƒœ}ë­·°ÿyƯeÙ&í@¡0†9ÅÈѾ4íº.™LšáŒ”ê,e}î÷U¾µ á+e©®f.p³zœ´^ ^UxDàÏU«èxD¡®LäqÃË’"=À‘!*ïN þEáu…“¨òDVÅ‹?0ÞÐZë¸Iá¾[]7 úrJä{ ‘j95 ‡)ô*üó êKõÖЧº=)r p– §RNÑöæúl¬u^.Kb±_‘ªjÖ›÷S oŽ1loZµÂd+'ߨ¤­þ5+ºKÄú¹ë¾x×®¹úƒŸºrEOÿ@‹eY¯>óÔ“ï™;¯ó+©Æ¦³‚’Fcc©Æ&Ž=úèmwßygËA‡N*™ô¶ZÙìº.C™!†‡†ÈŒ SÈ(r0Œ´²Ì*YT„aúx¢p'X pÄšÝ5]µ“øÛ„q9ôÚU« - ¸ÅÂ^ïÇ)™6|Nš/ä™3kæÚo¼1É0¥­µ$RTscÛ²H&’^@äóyÒCiÒƒƒd³e…ßïÛ"à¸ñˆ}‹¾âó$&QB]zåêÕ3-Ëê,ºnÈwœ "m-²,;Yݾ!Ò0xØÒ¥<ø 3¦Ï„*ù8ˆ <­ª„B!š›š˜5k6³fÍ&ÕØ„mÛ^xð,s{X6ºAŸßéEOâ‹úJaÁ=UlË*B™ËZ✠Æð^ &ÎY¾\¿ñoX'wRAÈ£â§Liz#ND"¦NicΜ¹´wtOÄK³T˶¡1Û“%³ËÄ;£úSW_mÌ'ÊñˆPt]-Çj(…|®9Žv£–xpïÈp&‹' …L|I9‹h¹ïÊïAâ®ö4Zض‰ªkoŸÎÞ{u2mZ;íÓ:˜3g¯Ž<½î-®{ïPŒ’¡5—;¸MU,ìy^Ö|À$ê°lk†ñØAS*•[~Ö™-^t^|)&U%åÍë©rGÃT”ÂEý€%ĤÐ!™LšPQW_x-ýÜ„7ðzý‡€—1¢ºŠ˜˜‹û|m{cCÌ;o>éýüªª>ê•×½Þ ƒÓé‹Àkm€‘KUìz-xÿÙUªúJAÛŠzèµ×]÷hÈÍ4áz kv5Ì tP"Î|èÃù;ï¼3|ü '‘/ɘ=„ ±†–³#U§"¨5=Ÿ)í'4ý(®êMT…DN6pÞŽb ÐU4‘dswrœ¿5̳¼}–®qÜøÛøÆ¼Þ Å +l‘óTõé`½À)tíȃ…* :–™ÑQ9JAC]ZÔߨÙM8üÐC{¦N›ÚöËGáÝGÍÿà› 7Ž„£Ähnn&žLú§Õ^eâG ôT Qek¢Á¹ƒ'hÀ\åœ {¥·Z‰B2!™©ªo¼•±þV &À¨&låþ2Ö+ìH ‘ƒŸˆÈÜê§¢ Íÿ4ÖÆíÍWt(ÓìØ–Ó'ȉ ^> Yj9Ö:¨ü÷±xîÌÓÏh¹æÚkØwá"2™ e›±!Âáì0#Ù¶õm'‰0¥­¦–Vlñû #ùb‰”¬€ºZæô®ÞÔÕÕ•ý긢Ÿëà ÆÐ_k·ÅÀ¡äŠðn™ |BŒ‘ðªúÅ`c/¶ùq65ž²Ï_“¸|¼ÇäùwõÃ!5Þ¸ÛªÛŠÈ1Û¢žRÕs¼2Nø°_a^Sø?ÀO|O§ˆÜ,°Láª:*Y¼ˆœ#f?bXª5¼¨… äLzŒïŠ÷8èŒBÌ‚d®¤§]BÞtáÇ^×Ãz¨"h+ëˆ `ɱ>WT…†Hd©/7ø„vþyç¼úê«molÜDûôY¥>ªS˜2³¯pÆ ¼ùæ›47·0eÊ”ª„Œ•çùrx@®Þ¸­gÓMc,hBxÓUå%‘"Ü"„eþ+pM’Y¸ZDîVÕW§\åÀ<»hâ&r4E+7NŒÂ ºÂ³³]ª^`Ïf ø.™EÀöë„'º0=kb%NþŸ×Wg¦çáyDUXuZ³mEÓç. Xïª~~T¹ÈÉ#pâÃp•ˆ|]kGÞÝT§¼â‰k‡Ã³m‘Ö 1!Öœ ¬°dáÂ-î@ÛÊ•Ÿç ƒcAù×|‹E¶ôlᥗ^dýºug¯„zïR±JbÁ-\Ùe—ùhõ¸+=,75¡–Wäa( ! ¸Ed&p… ±¢Ù‹ùyÌÉñ dý#Ùlàw²nå Šõf jÈ‘ûÛÏA!SÕ·d¡`¢¬ààDMüÈ¿‹ÈœêŽÅ¬ÿmñZ©ê/~T„¼e$“%;\ ÁÄ{¨ë’w•BqÔHŽc¯½ï¾{¾rýõ×G«&èíLÞŸ¼xªºÎ2ÅñTöß––§úœˆÜ^€9+ÀÏCàä ç½x"ã‹-‘« µ~¤Ý[A_œ($\¸\D~¡ªÿùg<Ø‚Ù|+R#•AD¢Á²ŒQªGÁçÐä£ Ķ0 ×-bYv(¤ùЇCëÖ­ãɧžæ=Çk‰$M$“©RN?öc[o/#Ù,Z4"i0’Î*ÅHWFÓùÔ­@ȱ‘Pø¯]»¶ÚÁ$èüšÝòƒÛ@¬ê-\AÀõåÕá˜+ pNÜ¢QÒnªRw Ø–ÙÀÚùVû†>ž…»"Ð0÷Öyb½h Þ_?Ê A—0ÞàŒ Ï Úà_?á]'oRÕù7ß|3^ry u•í8`ê3M†Ø#áíÓ:èhŸÎP&Ãà@?étºôÒ RoÉdŠiÓ¦‘H$î<ýïN©åB©–1'”-uÇŸTõÕ…–È.¹ijAU³"ò,<…Øtªá”o9‹Ñx "mÀ§Bõùâ[éÏÁì›ëÒ-ëšûߘ·=Ú0£Ù²„½çÎÝ2sÆŒù·ÜòMŽ=ὄ •D\5jpk¿,‹™ÄA®ë2œÉP((‹D#Qâñ8¶mçܼ^[ÝG×êy{a’ ñN"è‰`\S:޶ªºVD.Ë­!»Wf+ÄEä€@Q;°PàZÇ8¥ ÿ¥UÙP˜/"õD2€×UuÈY³¢ÛíZ=ïûÀå`ÄŽžÆÛŠíͶmsÒ‰'èÈÈ>ô0¹Ð}a0ž¹’x+WU·µ,«”lÆœkBGEô§Ë–R±0ïÕ7P)??³3/5z‡à×è ÀÖ:æ?Ç5„òÛZ•A¨ê"rŠÂ OO0WÈXðâ6:Õ¤é-ëN AÔ†ÌSáµÎ·Ìêæô, §¿ð ê«0;£™Æ³7e~ÿú²¥isSÓì¯ýkBy§½/ëîåô`R2ý‡£û05ùB1èó§kõ¼(p&D׌c{ü€•ºõ;á–{¾Ë®ÃQ=JžÑ•êá’™/çÙØ%ð¬J‰`™¯}Á17Ï*U­©àÇLùï2ÐïkïÀšÝ»VÏûW»mŠ=;ëÁ­ßÍíÛ3·ç—üª­Ì•Lf˜\!cÛØ¶m;¥W°ÕAü¦ãì£Dô€«îºï½|ÕÓßY}Å\ŒËö(ÌÍ6¥j®YÑ=*ÛxàÉjcæ“Þl}+µA±†c#…øXo UÈyã¹æs «²ðQ­O€=˜]íúÊzcZ¿šteÈŽ>î,©Å1bWê¸qóbìÏ/(|VkdFRÈŽSy(íq ¾I6 üª¼ÈaÑ,³°ra4oaiHA ŠUŠâRÄv,u"6ápˆhCC9!ù8`‰¸ŠZª~cè%k{n¬ë€ÉösšÝ“ï%œD$h?îZ=/ŒÉ"tên›ÑŽñpâšÝ›w÷D&±ç¡‚®YÑÄžA9ÛΞ‚ ¥áIbžD=Tpè <«Â{0ùßÃÄ{Ä0.ã¸÷}Wûs”ß#žñ>{0ñ¬YÑ=¹Çocâÿg|—¦ðrIEND®B`‚bitstring-bitstring-3.1.5/release_notes.txt000066400000000000000000001473131271665413600211450ustar00rootroot00000000000000-------------------------------- bitstring module version history -------------------------------- --------------------------------------- May 17th 2016: version 3.1.5 released --------------------------------------- * Support initialisation from an array. * Added a separate LICENSE file. --------------------------------------- March 19th 2016: version 3.1.4 released --------------------------------------- This is another bug fix release. * Fix for bitstring types when created directly from other bitstring types. * Updating contact, website details. --------------------------------------- March 4th 2014: version 3.1.3 released --------------------------------------- This is another bug fix release. * Fix for problem with prepend for bitstrings with byte offsets in their data store. --------------------------------------- April 18th 2013: version 3.1.2 released --------------------------------------- This is another bug fix release. * Fix for problem where unpacking bytes would by eight times too long --------------------------------------- March 21st 2013: version 3.1.1 released --------------------------------------- This is a bug fix release. * Fix for problem where concatenating bitstrings sometimes modified method's arguments ------------------------------------------ February 26th 2013: version 3.1.0 released ------------------------------------------ This is a minor release with a couple of new features and some bug fixes. New 'pad' token --------------- This token can be used in reads and when packing/unpacking to indicate that you don't care about the contents of these bits. Any padding bits will just be skipped over when reading/unpacking or zero-filled when packing. >>> a, b = s.readlist('pad:5, uint:3, pad:1, uint:3') Here only two items are returned in the list - the padding bits are ignored. New clear and copy convenience methods -------------------------------------- These methods have been introduced in Python 3.3 for lists and bytearrays, as more obvious ways of clearing and copying, and we mirror that change here. t = s.copy() is equivalent to t = s[:], and s.clear() is equivalent to del s[:]. Other changes ------------- * Some bug fixes. ----------------------------------------- February 7th 2012: version 3.0.2 released ----------------------------------------- This is a minor update that fixes a few bugs. * Fix for subclasses of bitstring classes behaving strangely (Issue 121). * Fix for excessive memory usage in rare cases (Issue 120). * Fixes for slicing edge cases. There has also been a reorganisation of the code to return it to a single 'bitstring.py' file rather than the package that has been used for the past several releases. This change shouldn't affect users directly. ------------------------------------------ November 21st 2011: version 3.0.1 released ------------------------------------------ This release fixed a small but very visible bug in bitstring printing. ------------------------------------------ November 21st 2011: version 3.0.0 released ------------------------------------------ This is a major release which breaks backward compatibility in a few places. Backwardly incompatible changes =============================== Hex, oct and bin properties don't have leading 0x, 0o and 0b ------------------------------------------------------------ If you ask for the hex, octal or binary representations of a bitstring then they will no longer be prefixed with '0x', 0o' or '0b'. This was done as it was noticed that the first thing a lot of user code does after getting these representations was to cut off the first two characters before further processing. >>> a = BitArray('0x123') >>> a.hex, a.oct, a.bin ('123', '0443', '000100100011') Previously this would have returned ('0x123', '0o0443', '0b000100100011') This change might require some recoding, but it should all be simplifications. ConstBitArray renamed to Bits ----------------------------- Previously Bits was an alias for ConstBitStream (for backward compatibility). This has now changed so that Bits and BitArray loosely correspond to the built-in types bytes and bytearray. If you were using streaming/reading methods on a Bits object then you will have to change it to a ConstBitStream. The ConstBitArray name is kept as an alias for Bits. Stepping in slices has conventional meaning ------------------------------------------- The step parameter in __getitem__, __setitem__ and __delitem__ used to act as a multiplier for the start and stop parameters. No one seemed to use it though and so it has now reverted to the convential meaning for containers. If you are using step then recoding is simple: s[a:b:c] becomes s[a*c:b*c]. Some examples of the new usage: >>> s = BitArray('0x0000') s[::4] = [1, 1, 1, 1] >>> s.hex '8888' >>> del s[8::2] >>> s.hex '880' New features ============ New readto method ----------------- This method is a mix between a find and a read - it searches for a bitstring and then reads up to and including it. For example: >>> s = ConstBitStream('0x47000102034704050647') >>> s.readto('0x47', bytealigned=True) BitStream('0x47') >>> s.readto('0x47', bytealigned=True) BitStream('0x0001020347') >>> s.readto('0x47', bytealigned=True) BitStream('0x04050647') pack function accepts an iterable as its format ----------------------------------------------- Previously only a string was accepted as the format in the pack function. This was an oversight as it broke the symmetry between pack and unpack. Now you can use formats like this: fmt = ['hex:8', 'bin:3'] a = pack(fmt, '47', '001') a.unpack(fmt) -------------------------------------- June 18th 2011: version 2.2.0 released -------------------------------------- This is a minor upgrade with a couple of new features. New interleaved exponential-Golomb interpretations -------------------------------------------------- New bit interpretations for interleaved exponential-Golomb (as used in the Dirac video codec) are supplied via 'uie' and 'sie': >>> s = BitArray(uie=41) >>> s.uie 41 >>> s.bin '0b00010001001' These are pretty similar to the non-interleaved versions - see the manual for more details. Credit goes to Paul Sargent for the patch. New package-level bytealigned variable -------------------------------------- A number of methods take a 'bytealigned' parameter to indicate that they should only work on byte boundaries (e.g. find, replace, split). Previously this parameter defaulted to 'False'. Instead it now defaults to 'bitstring.bytealigned', which itself defaults to 'False', but can be changed to modify the default behaviour of the methods. For example: >>> a = BitArray('0x00 ff 0f ff') >>> a.find('0x0f') (4,) # found first not on a byte boundary >>> a.find('0x0f', bytealigned=True) (16,) # forced looking only on byte boundaries >>> bitstring.bytealigned = True # Change default behaviour >>> a.find('0x0f') (16,) >>> a.find('0x0f', bytealigned=False) (4,) If you're only working with bytes then this can help avoid some errors and save some typing! Other changes ------------- * Fix for Python 3.2, correcting for a change to the binascii module. * Fix for bool initialisation from 0 or 1. * Efficiency improvements, including interning strategy. ------------------------------------------ February 23rd 2011: version 2.1.1 released ------------------------------------------ This is a release to fix a couple of bugs that were introduced in 2.1.0. * Bug fix: Reading using the 'bytes' token had been broken (Issue 102). * Fixed problem using some methods on ConstBitArrays. * Better exception handling for tokens missing values. * Some performance improvements. ----------------------------------------- January 23rd 2011: version 2.1.0 released ----------------------------------------- New class hierarchy introduced with simpler classes --------------------------------------------------- Previously there were just two classes, the immutable Bits which was the base class for the mutable BitString class. Both of these classes have the concept of a bit position, from which reads etc. take place so that the bitstring could be treated as if it were a file or stream. Two simpler classes have now been added which are purely bit containers and don't have a bit position. These are called ConstBitArray and BitArray. As you can guess the former is an immutable version of the latter. The other classes have also been renamed to better reflect their capabilities. Instead of BitString you can use BitStream, and instead of Bits you can use ConstBitStream. The old names are kept as aliases for backward compatibility. The classes hierarchy is: ConstBitArray / \ / \ BitArray ConstBitStream (formerly Bits) \ / \ / BitStream (formerly BitString) Other changes ------------- A lot of internal reorganisation has taken place since the previous version, most of which won't be noticed by the end user. Some things you might see are: * New package structure. Previous versions have been a single file for the module and another for the unit tests. The module is now split into many more files so it can't be used just by copying bitstring.py any more. * To run the unit tests there is now a script called runtests.py in the test directory. * File based bitstring are now implemented in terms of an mmap. This should be just an implementation detail, but unfortunately for 32-bit versions of Python this creates a limit of 4GB on the files that can be used. The work around is either to get a 64-bit Python, or just stick with version 2.0. * The ConstBitArray and ConstBitStream classes no longer copy byte data when a slice or a read takes place, they just take a reference. This is mostly a very nice optimisation, but there are occassions where it could have an adverse effect. For example if a very large bitstring is created, a small slice taken and the original deleted. The byte data from the large bitstring would still be retained in memory. * Optimisations. Once again this version should be faster than the last. The module is still pure Python but some of the reorganisation was to make it more feasible to put some of the code into Cython or similar, so hopefully more speed will be on the way. -------------------------------------- July 26th 2010: version 2.0.3 released -------------------------------------- * Bug fix: Using peek and read for a single bit now returns a new bitstring as was intended, rather than the old behaviour of returning a bool. * Removed HTML docs from source archive - better to use the online version. -------------------------------------- July 25th 2010: version 2.0.2 released -------------------------------------- This is a major release, with a number of backwardly incompatible changes. The main change is the removal of many methods, all of which have simple alternatives. Other changes are quite minor but may need some recoding. There are a few new features, most of which have been made to help the stream-lining of the API. As always there are performance improvements and some API changes were made purely with future performance in mind. The backwardly incompatible changes are: ----------------------------------------- * Methods removed. About half of the class methods have been removed from the API. They all have simple alternatives, so what remains is more powerful and easier to remember. The removed methods are listed here on the left, with their equivalent replacements on the right: s.advancebit() -> s.pos += 1 s.advancebits(bits) -> s.pos += bits s.advancebyte() -> s.pos += 8 s.advancebytes(bytes) -> s.pos += 8*bytes s.allunset([a, b]) -> s.all(False, [a, b]) s.anyunset([a, b]) -> s.any(False, [a, b]) s.delete(bits, pos) -> del s[pos:pos+bits] s.peekbit() -> s.peek(1) s.peekbitlist(a, b) -> s.peeklist([a, b]) s.peekbits(bits) -> s.peek(bits) s.peekbyte() -> s.peek(8) s.peekbytelist(a, b) -> s.peeklist([8*a, 8*b]) s.peekbytes(bytes) -> s.peek(8*bytes) s.readbit() -> s.read(1) s.readbitlist(a, b) -> s.readlist([a, b]) s.readbits(bits) -> s.read(bits) s.readbyte() -> s.read(8) s.readbytelist(a, b) -> s.readlist([8*a, 8*b]) s.readbytes(bytes) -> s.read(8*bytes) s.retreatbit() -> s.pos -= 1 s.retreatbits(bits) -> s.pos -= bits s.retreatbyte() -> s.pos -= 8 s.retreatbytes(bytes) -> s.pos -= 8*bytes s.reversebytes(start, end) -> s.byteswap(0, start, end) s.seek(pos) -> s.pos = pos s.seekbyte(bytepos) -> s.bytepos = bytepos s.slice(start, end, step) -> s[start:end:step] s.tell() -> s.pos s.tellbyte() -> s.bytepos s.truncateend(bits) -> del s[-bits:] s.truncatestart(bits) -> del s[:bits] s.unset([a, b]) -> s.set(False, [a, b]) Many of these methods have been deprecated for the last few releases, but there are some new removals too. Any recoding needed should be quite straightforward, so while I apologise for the hassle, I had to take the opportunity to streamline and rationalise what was becoming a bit of an overblown API. * set / unset methods combined. The set/unset methods have been combined in a single method, which now takes a boolean as its first argument: s.set([a, b]) -> s.set(1, [a, b]) s.unset([a, b]) -> s.set(0, [a, b]) s.allset([a, b]) -> s.all(1, [a, b]) s.allunset([a, b]) -> s.all(0, [a, b]) s.anyset([a, b]) -> s.any(1, [a, b]) s.anyunset([a, b]) -> s.any(0, [a, b]) * all / any only accept iterables. The all and any methods (previously called allset, allunset, anyset and anyunset) no longer accept a single bit position. The recommended way of testing a single bit is just to index it, for example instead of: >>> if s.all(True, i): just use >>> if s[i]: If you really want to you can of course use an iterable with a single element, such as 's.any(False, [i])', but it's clearer just to write 'not s[i]'. * Exception raised on reading off end of bitstring. If a read or peek goes beyond the end of the bitstring then a ReadError will be raised. The previous behaviour was that the rest of the bitstring would be returned and no exception raised. * BitStringError renamed to Error. The base class for errors in the bitstring module is now just Error, so it will likely appears in your code as bitstring.Error instead of the rather repetitive bitstring.BitStringError. * Single bit slices and reads return a bool. A single index slice (such as s[5]) will now return a bool (i.e. True or False) rather than a single bit bitstring. This is partly to reflect the style of the bytearray type, which returns an integer for single items, but mostly to avoid common errors like: >>> if s[0]: ... do_something() While the intent of this code snippet is quite clear (i.e. do_something if the first bit of s is set) under the old rules s[0] would be true as long as s wasn't empty. That's because any one-bit bitstring was true as it was a non-empty container. Under the new rule s[0] is True if s starts with a '1' bit and False if s starts with a '0' bit. The change does not affect reads and peeks, so s.peek(1) will still return a single bit bitstring, which leads on to the next item... * Empty bitstrings or bitstrings with only zero bits are considered False. Previously a bitstring was False if it had no elements, otherwise it was True. This is standard behaviour for containers, but wasn't very useful for a container of just 0s and 1s. The new behaviour means that the bitstring is False if it has no 1 bits. This means that code like this: >>> if s.peek(1): ... do_something() should work as you'd expect. It also means that Bits(1000), Bits(0x00) and Bits('uint:12=0') are all also False. If you need to check for the emptiness of a bitstring then instead check the len property: if s -> if s.len if not s -> if not s.len * Length and offset disallowed for some initialisers. Previously you could create bitstring using expressions like: >>> s = Bits(hex='0xabcde', offset=4, length=13) This has now been disallowed, and the offset and length parameters may only be used when initialising with bytes or a file. To replace the old behaviour you could instead use >>> s = Bits(hex='0xabcde')[4:17] * Renamed 'format' parameter 'fmt'. Methods with a 'format' parameter have had it renamed to 'fmt', to prevent hiding the built-in 'format'. Affects methods unpack, read, peek, readlist, peeklist and byteswap and the pack function. * Iterables instead of *format accepted for some methods. This means that for the affected methods (unpack, readlist and peeklist) you will need to use an iterable to specify multiple items. This is easier to show than to describe, so instead of >>> a, b, c, d = s.readlist('uint:12', 'hex:4', 'bin:7') you would instead write >>> a, b, c, d = s.readlist(['uint:12', 'hex:4', 'bin:7']) Note that you could still use the single string 'uint:12, hex:4, bin:7' if you preferred. * Bool auto-initialisation removed. You can no longer use True and False to initialise single bit bitstrings. The reasoning behind this is that as bool is a subclass of int, it really is bad practice to have Bits(False) be different to Bits(0) and to have Bits(True) different to Bits(1). If you have used bool auto-initialisation then you will have to be careful to replace it as the bools will now be interpreted as ints, so Bits(False) will be empty (a bitstring of length 0), and Bits(True) will be a single zero bit (a bitstring of length 1). Sorry for the confusion, but I think this will prevent bigger problems in the future. There are a few alternatives for creating a single bit bitstring. My favourite it to use a list with a single item: Bits(False) -> Bits([0]) Bits(True) -> Bits([1]) * New creation from file strategy Previously if you created a bitstring from a file, either by auto-initialising with a file object or using the filename parameter, the file would not be read into memory unless you tried to modify it, at which point the whole file would be read. The new behaviour depends on whether you create a Bits or a BitString from the file. If you create a Bits (which is immutable) then the file will never be read into memory. This allows very large files to be opened for examination even if they could never fit in memory. If however you create a BitString, the whole of the referenced file will be read to store in memory. If the file is very big this could take a long time, or fail, but the idea is that in saying you want the mutable BitString you are implicitly saying that you want to make changes and so (for now) we need to load it into memory. The new strategy is a bit more predictable in terms of performance than the old. The main point to remember is that if you want to open a file and don't plan to alter the bitstring then use the Bits class rather than BitString. Just to be clear, in neither case will the contents of the file ever be changed - if you want to output the modified BitString then use the tofile method, for example. * find and rfind return a tuple instead of a bool. If a find is unsuccessful then an empty tuple is returned (which is False in a boolean sense) otherwise a single item tuple with the bit position is returned (which is True in a boolean sense). You shouldn't need to recode unless you explicitly compared the result of a find to True or False, for example this snippet doesn't need to be altered: >>> if s.find('0x23'): ... print(s.bitpos) but you could now instead use >>> found = s.find('0x23') >>> if found: ... print(found[0]) The reason for returning the bit position in a tuple is so that finding at position zero can still be True - it's the tuple (0,) - whereas not found can be False - the empty tuple (). The new features in this release are: ------------------------------------- * New count method. This method just counts the number of 1 or 0 bits in the bitstring. >>> s = Bits('0x31fff4') >>> s.count(1) 16 * read and peek methods accept integers. The read, readlist, peek and peeklist methods now accept integers as parameters to mean "read this many bits and return a bitstring". This has allowed a number of methods to be removed from this release, so for example instead of: >>> a, b, c = s.readbits(5, 6, 7) >>> if s.peekbit(): ... do_something() you should write: >>> a, b, c = s.readlist([5, 6, 7]) >>> if s.peek(1): ... do_something() * byteswap used to reverse all bytes. The byteswap method now allows a format specifier of 0 (the default) to signify that all of the whole bytes should be reversed. This means that calling just byteswap() is almost equivalent to the now removed bytereverse() method (a small difference is that byteswap won't raise an exception if the bitstring isn't a whole number of bytes long). * Auto initialise with bytearray or (for Python 3 only) bytes. So rather than writing: >>> a = Bits(bytes=some_bytearray) you can just write >>> a = Bits(some_bytearray) This also works for the bytes type, but only if you're using Python 3. For Python 2 it's not possible to distinguish between a bytes object and a str. For this reason this method should be used with some caution as it will make you code behave differently with the different major Python versions. >>> b = Bits(b'abcd\x23\x00') # Only Python 3! * set, invert, all and any default to whole bitstring. This means that you can for example write: >>> a = BitString(100) # 100 zero bits >>> a.set(1) # set all bits to 1 >>> a.all(1) # are all bits set to 1? True >>> a.any(0) # are any set to 0? False >>> a.invert() # invert every bit * New exception types. As well as renaming BitStringError to just Error there are also new exceptions which use Error as a base class. These can be caught in preference to Error if you need finer control. The new exceptions sometimes also derive from built-in exceptions: ByteAlignError(Error) - whole byte position or length needed. ReadError(Error, IndexError) - reading or peeking off the end of the bitstring. CreationError(Error, ValueError) - inappropriate argument during bitstring creation. InterpretError(Error, ValueError) - inappropriate interpretation of binary data. -------------------------------------------------------------- March 18th 2010: version 1.3.0 for Python 2.6 and 3.x released -------------------------------------------------------------- New features: * byteswap method for changing endianness. Changes the endianness in-place according to a format string or integer(s) giving the byte pattern. See the manual for details. >>> s = BitString('0x00112233445566') >>> s.byteswap(2) 3 >>> s BitString('0x11003322554466') >>> s.byteswap('h') 3 >>> s BitString('0x00112233445566') >>> s.byteswap([2, 5]) 1 >>> s BitString('0x11006655443322') * Multiplicative factors in bitstring creation and reading. For example: >>> s = Bits('100*0x123') * Token grouping using parenthesis. For example: >>> s = Bits('3*(uint:6=3, 0b1)') * Negative slice indices allowed. The start and end parameters of many methods may now be negative, with the same meaning as for negative slice indices. Affects all methods with these parameters. * Sequence ABCs used. The Bits class now derives from collections.Sequence, while the BitString class derives from collections.MutableSequence. * Keywords allowed in readlist, peeklist and unpack. Keywords for token lengths are now permitted when reading. So for example, you can write >>> s = bitstring.pack('4*(uint:n)', 2, 3, 4, 5, n=7) >>> s.unpack('4*(uint:n)', n=7) [2, 3, 4, 5] * start and end parameters added to rol and ror. * join function accepts other iterables. Also its parameter has changed from 'bitstringlist' to 'sequence'. This is technically a backward incompatibility in the unlikely event that you are referring to the parameter by name. * __init__ method accepts keywords. Rather than a long list of initialisers the __init__ methods now use a **kwargs dictionary for all initialisers except 'auto'. This should have no effect, except that this is a small backward incompatibility if you use positional arguments when initialising with anything other than auto (which would be rather unusual). * More optimisations. * Bug fixed in replace method (it could fail if start != 0). ---------------------------------------------------------------- January 19th 2010: version 1.2.0 for Python 2.6 and 3.x released ---------------------------------------------------------------- * New 'Bits' class. Introducing a brand new class, Bits, representing an immutable sequence of bits. The Bits class is the base class for the mutable BitString. The differences between Bits and BitStrings are: 1) Bits are immutable, so once they have been created their value cannot change. This of course means that mutating methods (append, replace, del etc.) are not available for Bits. 2) Bits are hashable, so they can be used in sets and as keys in dictionaries. 3) Bits are potentially more efficient than BitStrings, both in terms of computation and memory. The current implementation is only marginally more efficient though - this should improve in future versions. You can switch from Bits to a BitString or vice versa by constructing a new object from the old. >>> s = Bits('0xabcd') >>> t = BitString(s) >>> t.append('0xe') >>> u = Bits(t) The relationship between Bits and BitString is supposed to loosely mirror that between bytes and bytearray in Python 3. * Deprecation messages turned on. A number of methods have been flagged for removal in version 2. Deprecation warnings will now be given, which include an alternative way to do the same thing. All of the deprecated methods have simpler equivalent alternatives. >>> t = s.slice(0, 2) __main__:1: DeprecationWarning: Call to deprecated function slice. Instead of 's.slice(a, b, c)' use 's[a:b:c]'. The deprecated methods are: advancebit, advancebits, advancebyte, advancebytes, retreatbit, retreatbits, retreatbyte, retreatbytes, tell, seek, slice, delete, tellbyte, seekbyte, truncatestart and truncateend. * Initialise from bool. Booleans have been added to the list of types that can 'auto' initialise a bitstring. >>> zerobit = BitString(False) >>> onebit = BitString(True) * Improved efficiency. More methods have been speeded up, in particular some deletions and insertions. * Bug fixes. A rare problem with truncating the start of bitstrings was fixed. A possible problem outputting the final byte in tofile() was fixed. ----------------------------------------------------------------- December 22nd 2009: version 1.1.3 for Python 2.6 and 3.x released ----------------------------------------------------------------- This version hopefully fixes an installation problem for platforms with case-sensitive file systems. There are no new features or other bug fixes. ----------------------------------------------------------------- December 18th 2009: version 1.1.2 for Python 2.6 and 3.x released ----------------------------------------------------------------- This is a minor update with (almost) no new features. * Improved efficiency. The speed of many typical operations has been increased, some substantially. * Initialise from integer. A BitString of '0' bits can be created using just an integer to give the length in bits. So instead of >>> s = BitString(length=100) you can write just >>> s = BitString(100) This matches the behaviour of bytearrays and (in Python 3) bytes. * A defect related to using the set / unset functions on BitStrings initialised from a file has been fixed. ----------------------------------------------------------------- November 24th 2009: version 1.1.0 for Python 2.6 and 3.x released ----------------------------------------------------------------- Note that this version will not work for Python 2.4 or 2.5. There may be an update for these Python versions some time next year, but it's not a priorty quite yet. Also note that only one version is now provided, which works for Python 2.6 and 3.x (done with the minimum of hackery!) * Improved efficiency. A fair number of functions have improved efficiency, some quite dramatically. * New bit setting and checking functions. Although these functions don't do anything that couldn't be done before, they do make some common use cases much more efficient. If you need to set or check single bits then these are the functions you need. set / unset : Set bit(s) to 1 or 0 respectively. allset / allunset : Check if all bits are 1 or all 0. anyset / anyunset : Check if any bits are 1 or any 0. >>> s = BitString(length=1000) >>> s.set((10, 100, 44, 12, 1)) >>> s.allunset((2, 22, 222)) True >>> s.anyset(range(7, 77)) True * New rotate functions. ror / rol : Rotate bits to the right or left respectively. >>> s = BitString('0b100000000') >>> s.ror(2) >>> s.bin '0b001000000' >>> s.rol(5) >>> s.bin '0b000000100' * Floating point interpretations. New float initialisations and interpretations are available. These only work for BitStrings of length 32 or 64 bits. >>> s = BitString(float=0.2, length=64) >>> s.float 0.200000000000000001 >>> t = bitstring.pack('<3f', -0.4, 1e34, 17.0) >>> t.hex '0xcdccccbedf84f67700008841' * 'bytes' token reintroduced. This token returns a bytes object (equivalent to a str in Python 2.6). >>> s = BitString('0x010203') >>> s.unpack('bytes:2, bytes:1') ['\x01\x02', '\x03'] * 'uint' is now the default token type. So for example these are equivalent: a, b = s.readlist('uint:12, uint:12') a, b = s.readlist('12, 12') -------------------------------------------------------- October 10th 2009: version 1.0.1 for Python 3.x released -------------------------------------------------------- This is a straight port of version 1.0.0 to Python 3. For changes since the last Python 3 release read all the way down in this document to version 0.4.3. This version will also work for Python 2.6, but there's no advantage to using it over the 1.0.0 release. It won't work for anything before 2.6. ------------------------------------------------------- October 9th 2009: version 1.0.0 for Python 2.x released ------------------------------------------------------- Version 1 is here! This is the first release not to carry the 'beta' tag. It contains a couple of minor new features but is principally a release to fix the API. If you've been using an older version then you almost certainly will have to recode a bit. If you're not ready to do that then you may wish to delay updating. So the bad news is that there are lots of small changes to the API. The good news is that all the changes are pretty trivial, the new API is cleaner and more 'Pythonic', and that by making it version 1.0 I'm promising not to tweak it again for some time. ** API Changes ** * New read / peek functions for returning multiple items. The functions read, readbits, readbytes, peek, peekbits and peekbytes now only ever return a single item, never a list. The new functions readlist, readbitlist, readbytelist, peeklist, peekbitlist and peekbytelist can be used to read multiple items and will always return a list. So a line like: >>> a, b = s.read('uint:12, hex:32') becomes >>> a, b = s.readlist('uint:12, hex:32') * Renaming / removing functions. Functions have been renamed as follows: seekbit -> seek tellbit -> tell reversebits -> reverse deletebits -> delete tostring -> tobytes and a couple have been removed altogether: deletebytes - use delete instead. empty - use 'not s' rather than 's.empty()'. * Renaming parameters. The parameters 'startbit' and 'endbit' have been renamed 'start' and 'end'. This affects the functions slice, find, findall, rfind, reverse, cut and split. The parameter 'bitpos' has been renamed to 'pos'. The affects the functions seek, tell, insert, overwrite and delete. * Mutating methods return None rather than self. This means that you can't chain functions together so >>> s.append('0x00').prepend('0xff') >>> t = s.reverse() Needs to be rewritten >>> s.append('0x00') >>> s.prepend('0xff) >>> s.reverse() >>> t = s Affects truncatestart, truncateend, insert, overwrite, delete, append, prepend, reverse and reversebytes. * Properties renamed. The 'data' property has been renamed to 'bytes'. Also if the BitString is not a whole number of bytes then a ValueError exception will be raised when using 'bytes' as a 'getter'. Properties 'len' and 'pos' have been added to replace 'length' and 'bitpos', although the longer names have not been removed so you can continue to use them if you prefer. * Other changes. The unpack function now always returns a list, never a single item. BitStrings are now 'unhashable', so calling hash on one or making a set will fail. The colon separating the token name from its length is now mandatory. So for example BitString('uint12=100') becomes BitString('uint:12=100'). Removed support for the 'bytes' token in format strings. Instead of s.read('bytes:4') use s.read('bits:32'). ** New features ** * Added endswith and startswith functions. These do much as you'd expect; they return True or False depending on whether the BitString starts or ends with the parameter. >>> BitString('0xef342').startswith('0b11101') True ---------------------------------------------------------- September 11th 2009: version 0.5.2 for Python 2.x released ---------------------------------------------------------- Finally some tools for dealing with endianness! * New interpretations are now available for whole-byte BitStrings that treat them as big, little, or native-endian. >>> big = BitString(intbe=1, length=16) # or BitString('intbe:16=1') if you prefer. >>> little = BitString(intle=1, length=16) >>> print big.hex, little.hex 0x0001 0x0100 >>> print big.intbe, little.intle 1 1 * 'Struct'-like compact format codes To save some typing when using pack, unpack, read and peek, compact format codes based on those used in the struct and array modules have been added. These must start with a character indicating the endianness (>, < or @ for big, little and native-endian), followed by characters giving the format: b 1-byte signed int B 1-byte unsigned int h 2-byte signed int H 2-byte unsigned int l 4-byte signed int L 4-byte unsigned int q 8-byte signed int Q 8-byte unsigned int For example: >>> s = bitstring.pack('<4h', 0, 1, 2, 3) creates a BitString with four little-endian 2-byte integers. While >>> x, y, z = s.read('>hhl') reads them back as two big-endian two-byte integers and one four-byte big endian integer. Of course you can combine this new format with the old ones however you like: >>> s.unpack('>> from bitstring import BitString, pack >>> a = pack('0b11, 0xff, 0o77, int:5=-1, se=33') You can also leave placeholders in the format, which will be filled in by the values provided. >>> b = pack('uint:10, hex:4', 33, 'f') Finally you can use a dictionary or keywords. >>> c = pack('bin=a, hex=b, bin=a', a='010', b='ef') The unpack function is similar to the read function except that it always unpacks from the start of the BitString. >>> x, y = b.unpack('uint:10, hex') If a token is given without a length (as above) then it will expand to fill the remaining bits in the BitString. This also now works with read() and peek(). * New tostring() and tofile() functions. The tostring() function just returns the data as a string, with up to seven zero bits appended to byte align. The tofile() function does the same except writes to a file object. >>> f = open('myfile', 'wb') >>> BitString('0x1234ff').tofile(f) * Other changes. The use of '=' is now mandatory in 'auto' initialisers. Tokens like 'uint12 100' will no longer work. Also the use of a ':' before the length is encouraged, but not yet mandated. So the previous example should be written as 'uint:12=100'. The 'auto' initialiser will now take a file object. >>> f = open('myfile', 'rb') >>> s = BitString(f) ----------------------------------------------------- July 19th 2009: version 0.5.0 for Python 2.x released ----------------------------------------------------- This update breaks backward compatibility in a couple of areas. The only one you probably need to be concerned about is the change to the default for bytealigned in find, replace, split, etc. See the user manual for more details on each of these items. * Expanded abilities of 'auto' initialiser. More types can be initialised through the 'auto' initialiser. For example instead of >>> a = BitString(uint=44, length=16) you can write >>> a = BitString('uint16=44') Also, different comma-separated tokens will be joined together, e.g. >>> b = BitString('0xff') + 'int8=-5' can be written >>> b = BitString('0xff, int8=-5') * New formatted read() and peek() functions. These takes a format string similar to that used in the auto initialiser. If only one token is provided then a single value is returned, otherwise a list of values is returned. >>> start_code, width, height = s.read('hex32, uint12, uint12') is equivalent to >>> start_code = s.readbits(32).hex >>> width = s.readbits(12).uint >>> height = s.readbits(12).uint The tokens are: int n : n bits as an unsigned integer. uint n : n bits as a signed integer. hex n : n bits as a hexadecimal string. oct n : n bits as an octal string. bin n : n bits as a binary string. ue : next bits as an unsigned exp-Golomb. se : next bits as a signed exp-Golomb. bits n : n bits as a new BitString. bytes n : n bytes as a new BitString. See the user manual for more details. * hex() and oct() functions removed. The special functions for hex() and oct() have been removed. Please use the hex and oct properties instead. >>> hex(s) becomes >>> s.hex * join made a member function. The join function must now be called on a BitString object, which will be used to join the list together. You may need to recode slightly: >>> s = bitstring.join('0x34', '0b1001', '0b1') becomes >>> s = BitString().join('0x34', '0b1001', '0b1') * More than one value allowed in readbits, readbytes, peekbits and peekbytes If you specify more than one bit or byte length then a list of BitStrings will be returned. >>> a, b, c = s.readbits(10, 5, 5) is equivalent to >>> a = readbits(10) >>> b = readbits(5) >>> c = readbits(5) * bytealigned defaults to False, and is at the end of the parameter list Functions that have a bytealigned paramater have changed so that it now defaults to False rather than True. Also its position in the parameter list has changed to be at the end. You may need to recode slightly (sorry!) * readue and readse functions have been removed Instead you should use the new read function with a 'ue' or 'se' token: >>> i = s.readue() becomes >>> i = s.read('ue') This is more flexible as you can read multiple items in one go, plus you can now also use the peek function with ue and se. * Minor bugs fixed. See the issue tracker for more details. ----------------------------------------------------- June 15th 2009: version 0.4.3 for Python 2.x released ----------------------------------------------------- This is a minor update. This release is the first to bundle the bitstring manual. This is a PDF and you can find it in the docs directory. Changes in version 0.4.3 * New 'cut' function This function returns a generator for constant sized chunks of a BitString. >>> for byte in s.cut(8): ... do_something_with(byte) You can also specify a startbit and endbit, as well as a count, which limits the number of items generated: >>> first100TSPackets = list(s.cut(188*8, count=100)) * 'slice' function now equivalent to __getitem__. This means that a step can also be given to the slice function so that the following are now the same thing, and it's just a personal preference which to use: >>> s1 = s[a:b:c] >>> s2 = s.slice(a, b, c) * findall gets a 'count' parameter. So now >>> list(a.findall(s, count=n)) is equivalent to >>> list(a.findall(s))[:n] except that it won't need to generate the whole list and so is much more efficient. * Changes to 'split'. The split function now has a 'count' parameter rather than 'maxsplit'. This makes the interface closer to that for cut, replace and findall. The final item generated is now no longer the whole of the rest of the BitString. * A couple of minor bugs were fixed. See the issue tracker for details. ---------------------------------------------------- May 25th 2009: version 0.4.2 for Python 2.x released ---------------------------------------------------- This is a minor update, and almost doesn't break compatibility with version 0.4.0, but with the slight exception of findall() returning a generator, detailed below. Changes in version 0.4.2 * Stepping in slices The use of the step parameter (also known as the stride) in slices has been added. Its use is a little non-standard as it effectively gives a multiplicative factor to apply to the start and stop parameters, rather than skipping over bits. For example this makes it much more convenient if you want to give slices in terms of bytes instead of bits. Instead of writing s[a*8:b*8] you can use s[a:b:8]. When using a step the BitString is effectively truncated to a multiple of the step, so s[::8] is equal to s if s is an integer number of bytes, otherwise it is truncated by up to 7 bits. So the final seven complete 16-bit words could be written as s[-7::16] Negative slices are also allowed, and should do what you'd expect. So for example s[::-1] returns a bit-reversed copy of s (which is similar to s.reversebits(), which does the same operation on s in-place). As another example, to get the first 10 bytes in reverse byte order you could use s_bytereversed = s[0:10:-8]. * Removed restrictions on offset You can now specify an offset of greater than 7 bits when creating a BitString, and the use of offset is also now permitted when using the filename initialiser. This is useful when you want to create a BitString from the middle of a file without having to read the file into memory. >>> f = BitString(filename='reallybigfile', offset=8000000, length=32) * Integers can be assigned to slices You can now assign an integer to a slice of a BitString. If the integer doesn't fit in the size of slice given then a ValueError exception is raised. So this is now allowed and works as expected: >>> s[8:16] = 106 and is equivalent to >>> s[8:16] = BitString(uint=106, length=8) * Less exceptions raised Some changes have been made to slicing so that less exceptions are raised, bringing the interface closer to that for lists. So for example trying to delete past the end of the BitString will now just delete to the end, rather than raising a ValueError. * Initialisation from lists and tuples A new option for the auto initialiser is to pass it a list or tuple. The items in the list or tuple are evaluated as booleans and the bits in the BitString are set to 1 for True items and 0 for False items. This can be used anywhere the auto initialiser can currently be used. For example: >>> a = BitString([True, 7, False, 0, ()]) # 0b11000 >>> b = a + ['Yes', ''] # Adds '0b10' >>> (True, True, False) in a True * Miscellany reversebits() now has optional startbit and endbit parameters. As an optimisation findall() will return a generator, rather than a list. If you still want the whole list then of course you can just call list() on the generator. Improved efficiency of rfind(). A couple of minor bugs were fixed. See the issue tracker for details. ----------------------------------------------------- April 23rd 2009: Python 3 only version 0.4.1 released ----------------------------------------------------- This version is just a port of version 0.4.0 to Python 3. All the unit tests pass, but beyond that only limited ad hoc testing has been done and so it should be considered an experimental release. That said, the unit test coverage is very good - I'm just not sure if anyone even wants a Python 3 version! --------------------------------------- April 11th 2009: version 0.4.0 released --------------------------------------- Changes in version 0.4.0 * New functions Added rfind(), findall(), replace(). These do pretty much what you'd expect - see the docstrings or the wiki for more information. * More special functions Some missing functions were added: __repr__, __contains__, __rand__, __ror__, _rxor__ and __delitem__. * Miscellany A couple of small bugs were fixed (see the issue tracker). ---- There are some small backward incompatibilities relative to version 0.3.2: * Combined find() and findbytealigned() findbytealigned() has been removed, and becomes part of find(). The default start position has changed on both find() and split() to be the start of the BitString. You may need to recode: >>> s1.find(bs) >>> s2.findbytealigned(bs) >>> s2.split(bs) becomes >>> s1.find(bs, bytealigned=False, startbit=s1.bitpos) >>> s2.find(bs, startbit=s1.bitpos) # bytealigned defaults to True >>> s2.split(bs, startbit=s2.bitpos) * Reading off end of BitString no longer raises exception. Previously a read or peek function that encountered the end of the BitString would raise a ValueError. It will now instead return the remainder of the BitString, which could be an empty BitString. This is closer to the file object interface. * Removed visibility of offset. The offset property was previously read-only, and has now been removed from public view altogether. As it is used internally for efficiency reasons you shouldn't really have needed to use it. If you do then use the _offset parameter instead (with caution). --------------------------------------- March 11th 2009: version 0.3.2 released --------------------------------------- Changes in version 0.3.2 * Better performance A number of functions (especially find() and findbytealigned()) have been sped up considerably. * Bit-wise operations Added support for bit-wise AND (&), OR (|) and XOR (^). For example: >>> a = BitString('0b00111') >>> print a & '0b10101' 0b00101 * Miscellany Added seekbit() and seekbyte() functions. These complement the 'advance' and 'retreat' functions, although you can still just use bitpos and bytepos properties directly. >>> a.seekbit(100) # Equivalent to a.bitpos = 100 Allowed comparisons between BitString objects and strings. For example this will now work: >>> a = BitString('0b00001111') >>> a == '0x0f' True ------------------------------------------ February 26th 2009: version 0.3.1 released ------------------------------------------ Changes in version 0.3.1 This version only adds features and fixes bugs relative to 0.3.0, and doesn't break backwards compatibility. * Octal interpretation and initialisation The oct property now joins bin and hex. Just prefix octal numbers with '0o'. >>> a = BitString('0o755') >>> print a.bin 0b111101101 * Simpler copying Rather than using b = copy.copy(a) to create a copy of a BitString, now you can just use b = BitString(a). * More special methods Lots of new special methods added, for example bit-shifting via << and >>, equality testing via == and !=, bit inversion (~) and concatenation using *. Also __setitem__ is now supported so BitString objects can be modified using standard index notation. * Proper installer Finally got round to writing the distutils script. To install just python setup.py install. ------------------------------------------ February 15th 2009: version 0.3.0 released ------------------------------------------ Changes in version 0.3.0 * Simpler initialisation from binary and hexadecimal The first argument in the BitString constructor is now called auto and will attempt to interpret the type of a string. Prefix binary numbers with '0b' and hexadecimals with '0x'. >>> a = BitString('0b0') # single zero bit >>> b = BitString('0xffff') # two bytes Previously the first argument was data, so if you relied on this then you will need to recode: >>> a = BitString('\x00\x00\x01\xb3') # Don't do this any more! becomes >>> a = BitString(data='\x00\x00\x01\xb3') or just >>> a = BitString('0x000001b3') This new notation can also be used in functions that take a BitString as an argument. For example: >>> a = BitString('0x0011') + '0xff' >>> a.insert('0b001', 6) >>> a.find('0b1111') * BitString made more mutable The functions append, deletebits, insert, overwrite, truncatestart and truncateend now modify the BitString that they act upon. This allows for cleaner and more efficient code, but you may need to rewrite slightly if you depended upon the old behaviour: >>> a = BitString(hex='0xffff') >>> a = a.append(BitString(hex='0x00')) >>> b = a.deletebits(10, 10) becomes: >>> a = BitString('0xffff') >>> a.append('0x00') >>> b = copy.copy(a) >>> b.deletebits(10, 10) Thanks to Frank Aune for suggestions in this and other areas. * Changes to printing The binary interpretation of a BitString is now prepended with '0b'. This is in keeping with the Python 2.6 (and 3.0) bin function. The prefix is optional when initialising using 'bin='. Also, if you just print a BitString with no interpretation it will pick something appropriate - hex if it is an integer number of bytes, otherwise binary. If the BitString representation is very long it will be truncated by '...' so it is only an approximate interpretation. >>> a = BitString('0b0011111') >>> print a 0b0011111 >>> a += '0b0' >>> print a 0x3e * More convenience functions Some missing functions such as advancebit and deletebytes have been added. Also a number of peek functions make an appearance as have prepend and reversebits. See the Tutorial for more details. ----------------------------------------- January 13th 2009: version 0.2.0 released ----------------------------------------- Some fairly minor updates, not really deserving of a whole version point update. ------------------------------------------ December 29th 2008: version 0.1.0 released ------------------------------------------ First release! bitstring-bitstring-3.1.5/setup.py000066400000000000000000000030211271665413600172510ustar00rootroot00000000000000#!/usr/bin/env python from distutils.core import setup import sys kwds = {'long_description': open('README.rst').read()} if sys.version_info[:2] < (2, 6): raise Exception('This version of bitstring needs Python 2.6 or later. ' 'For Python 2.4 / 2.5 please use bitstring version 1.0 instead.') setup(name='bitstring', version='3.1.5', description='Simple construction, analysis and modification of binary data.', author='Scott Griffiths', author_email='dr.scottgriffiths@gmail.com', url='https://github.com/scott-griffiths/bitstring', download_url='https://pypi.python.org/pypi/bitstring/', license='The MIT License: http://www.opensource.org/licenses/mit-license.php', py_modules=['bitstring'], platforms='all', classifiers = [ 'Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', 'Operating System :: OS Independent', 'License :: OSI Approved :: MIT License', 'Programming Language :: Python :: 2.6', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.0', 'Programming Language :: Python :: 3.1', 'Programming Language :: Python :: 3.2', 'Programming Language :: Python :: 3.3', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', 'Topic :: Software Development :: Libraries :: Python Modules', ], **kwds ) bitstring-bitstring-3.1.5/test/000077500000000000000000000000001271665413600165225ustar00rootroot00000000000000bitstring-bitstring-3.1.5/test/smalltestfile000066400000000000000000000000101271665413600213040ustar00rootroot00000000000000#Eg‰«Íïbitstring-bitstring-3.1.5/test/stress_test.py000066400000000000000000000032231271665413600214560ustar00rootroot00000000000000#!/usr/bin/env python import sys sys.path.insert(0, '..') from bitstring import Bits, BitStream import bitstring import time import random import cProfile import pstats # Some performance tests. Each is a task - it is permissible to rewrite # to do it in a different way. # TEST 1: Create a bitstring, read every 3 bits and count how many equal '001'. def perf1(): s = bitstring.Bits('0xef1356a6200b3, 0b0') s *= 10000 c = 0 for triplet in s.cut(3): if triplet == '0b001': c += 1 assert c == 20003 def perf2(): s = bitstring.BitArray(1000000) s.set(1, [10, 100, 1000, 100000]) count = 0 for bit in s: if bit: count += 1 assert count == 4 def perf3(): s = bitstring.BitArray() for i in xrange(50000): s += 'uint:12=244, float:32=0.4' s += '0x3e44f, 0b11011, 0o75523' s += [0,1,2,0,0,1,2,0,-1,0,'hello'] s += 104 def perf4(): random.seed(999) i = random.randrange(0, 2**80000000) s = bitstring.BitArray(uint=i, length=80000000) for ss in ['0b11010010101', '0xabcdef1234, 0b000101111010101010011010100100101010101', '0x4321']: print(len(list(s.findall(ss)))) def run(f): start_time= time.time() print("Running {0}".format(str(f))) f() print("Took {0} s".format(time.time() - start_time)) def main(): start_time = time.time() run(perf1) run(perf2) run(perf3) run(perf4) print("Total time {0} s".format(time.time() - start_time)) if __name__ == '__main__': cProfile.run('main()', 'stats') p = pstats.Stats('stats') p.sort_stats('time').print_stats(50) bitstring-bitstring-3.1.5/test/test.m1v000066400000000000000000003645641271665413600201500ustar00rootroot00000000000000³ ƒÐ ¤²MPEG-1 Test Sequence, 25 frames/sec ¸@ ºÀR—áô¥".R”ˆ¹JR"å)H‹”¥".R”ˆ¹JR"å)H‹”¥".R”ˆ¹HÒ"Å&¤JÖ“B'b”¤EÊR‘)JD\¥)r”¤EÊR‘)JD\¥)r”¤D+ø})H‹”¥".R”ˆ¹JR"å)H‹”¥"*9JR"å)H‹”¥".R”ˆ¹JR"å)H‹”¥".R#P?Â"å)H‹”¤Z"ãÂ4ˆ±JR"å)H‹”¥".R”ˆ¹JR"ø})H‹”¥".R”ˆ¨¥)H‹”¥".R”ˆ¹JR"å)H‹”¥".R”ˆ¹JR"å)H‹ŸíŸ®ØP´›t!,Âî`r@ ,v¾°!¨,7!,¾mÊà ÑZHÏ~xš[§ß<ÜpÀ¬oFå»¶=ï»ìœ €VI缘 €“RVJv6ó@B“±Ôò•!ÐJÅ ï%Ô"Ø ·1·¹w´Q(´ w®å)J¢å)H‹”¥ê%  †¡U· K3ã”â©€  1ìL ,±°\mýò)zðàÒ  »ƒH] ßáŽA khBcâPBp—rx娓“sà)Ø[¨J¥ƒïÁǾ½àò (¢i4 ¤ÿñ{ GËr° !H``o ,´Œq£Î48èØ0P i`0,f7ã†'QsHx 8 ÷`í}Ø3@3I`T5ù¼Ûä`„œ˜MÃâbsŒsÇßn%ˆ¥ñ|ÛË$×ÛÿæÒV¨{\ùco, É,40(J6ïó.õ@#Àw›-ï€8@/€BÆ£‹ëƼ°ÒiD ¦G#R_m @â’¿ÈÙùûçâÌ×Ú "ºCú6mb¾´øn!€„ –<5$vµOîR”®.R”ˆ¹OŸR‘t¥".R”ˆ¹JR"å)Hˆ ø})H‹”¥".R”ˆ¹JR"å)H‹”¥".R”ˆ¹JV€5bP²ËÈÈGK>~ÄB9!ÿÎØÿXhiDÄt–”Œ¿ÓÛ`ÿvA)@Ð0²g-—ß¾ÁG‹»€LÀ:¸ P(bò2öù#°œÆ_K @›ˆ2ÃXe„ôÿ²yÿñwžTÀ1v”T%”Çát†:zïËÀ @7€„´ 0) é9?„s÷°% @ À1_ÿÿêH½Ð@Õˆa©Ü𔝛íœ`T —ß§½á€4Ð 0)()ñ­©@b¯¨ [bMÿ`*Y®ÖOµ€ì23 ýˆe€Gía€ˆa½Û®bhÂbÆ{˜0 vÈ@V–Û^là ± 7-Äû` Y=|C @ËÃ>XÞK´’¹Ô))+ï"h0!•Ð’ÝGhèß_Œzà€3Á"hËHCwIí™—ïHBßfC,5Üoÿ­ía€–Ro ˜4<5+ZêÈ¡þR¹™Q‘±×˜Àà1+d;§_1 p@+á €€šJ²QÛ~qú €hP@3&Ç¥/Š‚è à(¢`IO±H/%c–²5ÜàÀ0 Îßï¶'L†–×á€2&`À„BÊÅ„l¥K’ñèþ›}}?Oÿþ?ñ6–£uèìðèÞYqpúSo©r”¤EÊR‘)J%öލ¹I± bFsˆÒフœ“¢å)Hˆ ø})H‹”¥".R”ˆ¹JR"å)H‹”¥".R“€=¼„è T›Û„¥‡¶þº~Ù«h»€ À ÀLˆ¤ÐÔ jÒß¶VS‰÷ÐÁp!€cаÂ`ÉYhd%J|`t(' ®¨&ìb;gÙ›˜Ü‰}D2 €?ØnI5?Í÷Ž`€gÈc¨Êß«íó¶>’a3õÝ !n„ú_ð?îðàH`'&÷ÿ¿ˆË!€j7Þʘˆ`CJØ1)ÿã=á€è@0xLͰŠ6Û^4&€„7}¿r-Ê* €=J˜”¸9à‚@ 4Ĉhc€Àµ° ?Î-WÍÁH$`¡˜CÔ˜ºj;ô+óc.ì1 °8)8—ºr¶Ç‡L²nF¿¢€ø°áœè´âÎä¯òð€û8°@ ^ e€7îߨå˜eñP€€f Q0 À(`9=N곆€<Кâ+˜ ^¡ -@1ä1¡ooõ\}Õ¥Á\€. /€˜šPÇ<¯•½Øv€`~K)(<ü׿`@Îp a€˜˜Po)(PaGó¾ê[ßVà@i€€dЛíÒfm÷ç Ï" ò`0Ò€tŽPo3ò7aÚþ˜^åv•Õ5ÐD2ÐÇ]²ï(¤äç3ç£w×Ê À*v¨n?¨ðß ðàÄ€0§F£‡†Ä[ôPðœ1;·ß{å`€"dÐA€0!$ Œ+Œß Ãö7ã1·¨ @€dᇣä…TJÿ_È:>ÿs«@ €@à@“¿,¤”{ª·¾”41!…¥ t%﹟ZuYBsÃwÔµ6mÚ.R‰íŸô>‹¦ï©r”¤EÊ$êS»Ä]€;+³ãÞ@)ÿ Î"% n€b:ÓA]þgÑb”¤¢ ø})H‹”¥".R”ˆ¹JR"å)H‹”¥".¶½P BæXh €¡c1;§$þ”wãf¼ØP Êtè ;OÀX1??g÷×ÁÄ1€v€ì`k`¶ÿla· €0à@/(nrŠøóžDÄ ÷ëAÀ2€vˆ ;Cétõ»Š½ ‡À1 ?ÿù¨¼Ú@BÆÿßó\Ø8à!Ù[!ÆüO¾X@€ Û!;cµžÛkÈ Ð$ÐÄ!¿Øç?ß?@@yˆpÐò'd„ãö?“½¤ÁT°à'Ñ, %(OËÈs–:øø ‚ˆÀtB&ŠÁ¨ Û¥³ç[}ë‚P g¤ :‰rûåcú‰¤ÖV½`€| À¤‰ &$4b Go²Ì6ã¡+d#dl­²¶¥/l '!€„¾M/–ŸÍ"Wÿþå)BËÁˆJR¬ÿ—V\]  @@ ,d2ÐVFì7²ÚúØ @0‚J•Ãqx% êc²žò€øD €0,ÄÀ*ÙK£}ø‰—}ˆ-<° !¼–”ïÒ¼€@A(,²j5 GÜ>;9’gýï¶[Ê,%¥Èö”t™UËHI£>ýú¬ P*PÔ„*ùü€ŒžvÆÑ¿×´ 8/$]Â@Ò&€: S 7¡’ƒN^º`À€›•«@0Ï€hCC>oP I€’‚NûÇdßÂ*0 PÀ® ÉÈGܵ¨àûÁB@; @i]о÷è0@i bÀOˆ} G$ó8›â €ÀøâaDÔ –Œ×ß,Þøuô€Ž]ÀÅ T1 „ð–ÌY ¡ï‹JRôj¸œúdo¼½z#3ÇÛýÇEŒ½JR"å)H‹”ùéH‹ƒ5)ÿÞ)OÑÓ´tí¬RˆNN¤o¾÷Ð ø})H‹”¥".R”ˆ¹JR"å)H‹”¥"/¬€x ˆy[$1<öî¶Xu÷@@”JMØ ;Géa©5Íâ/Š14†›ß—nq÷ÜÁ{tbwBòRëwïÀ}x €œB+î–ßôðæ [{ô…—€vC^6áxNˆ :A(hÔì³–×x„œYÆÞTI¥ìÃS°A§¯^8°Ô€@Ða]‚©OmP@;&.\5 žV­·teõ:·¼ÅÑ @* X3 + ÛºÛ,>ç_\Ìa 1Ä –øÐ2œÜÍ»lEµOÿñ7)JZE˨àš €;pÑ© ä·Û“óç°€'b`C9 ´#öýŸßR@¢àÀ©0 ÖC% »ã„ÜÀ ƒ@€jR2? BwO3·va]>ý0 I‚É` @b½ƒzBS‰=ÛþÆÞÔ¨äÐT÷wä{ j% ~oý?š&ØøÄÐöoßß,ÀàÀ€0B6Ȉ–hFF¼À€ ‹¼!›ý?x@R€€€ …ÿ“·Çæ?qL.ì !@€Ä\ 8J?ëâ €¾À0(XK )%–¶tax=W à­ÀIÀeÛgî¢hhÍh Ð@F (&–BI0bQ¿ê^<{  :à&&¥Kß‘ï‹x b†!'§£1‹#ï°  8€bºO#û˜ Àð`žÿ£8“B¤LHÝu¸0Є1’0'Æß À@Ö,²` ¡a 9å3ýÅ(K®ûpp圣qùh P€3NÄ´âS”yÆ3 ´  Š RËÈüYÆAn‹ù"¢ÀÉ0·q¥!.=Ѽ/§ù½¥ÊR‘)Oö¤EÊR‘)JDYOûÄ7æ‚sú'>šr½IÝ“lÉI10¦OòÁ3|…È…¾)cü ø})H‹”¥".R”ˆ¹JR"å)H‹”¥"/¤@ ¸ðÀ;JËè NlssG›}Ä#€ ’ Àv’PJƒÅߟÀ€˜  À@@¡xjJèúú¨ @5‚1a€1Ùa…qŸ~ß/>s‹y €„ט<„”Œß¤ %½ýxå`^¦]É0ø HIéfNêìm¬5@p Ãw)†h`Š@LP“›ß8M)€ÁKÝOÔvúþ€nB ÀšCC% Ò·™–+eÞ% ÉÙ;¾ù÷ï¿X Y†€(8HaŸ3ð:eñ @R ` Xàƒ À7²ú¹Œâ•}( e@„°*Wá‰ÿ¥±Ü}dÐÎŽ÷Ƨûjo¾¶PH*hM¥–„ÑÆn+/ÝäÂbHe ¢³¥?m„Õ·þý( @?‚¹À€;107%Ÿ+ü;âBﲂ  f€7‰5Ëé#ûÎ8 [À€ft–GIy\Çì«Þ€)Í RÂ_ôûæÁàÀ  €`Qe£ û'ñ'Ù“ ®ÐÜrîïÈ÷A´°`!!#”IøÏÞÞD°° He `×øÁwÍA ð€˜7†ì”8Aœãî`°¡€L_éfGh-9üà EÐ` ƒvC!' B;ô6?sE ¼˜‚aAˆÌ‚‘‘°­š¼¨€`PˆEb•†°­g¾ hpР!,†_ÿ?¹˜ÖZz{ß¶P ‘À@Y $1ñ¿–Þûx a†b€3!³yÂo‹hh 0 ¤•ÉAŒ¾év¦¾Ö@T¢hI©GÜ'Þ %”Z.+§vç8â% QÆ^ÐEü(Ý|à%€Bœx¬¨ß‡â5ôpX Q˜ÜG¾n @NlR0Ýж=x—( fô` ƒ\ påyöEü\|4ð ’îäÄ,V͉ÛUÖ€&G(ÀÏÄÄnU}XnزÀWÈþÓŸr”§:qÕqŸÒ˜êF:1×)JD\¥)sçôèÔ¤6†×6Ú”¤D ø})H‹”¥".R”ˆ¹JR"å(ôx‹”¥".]À@žÒ(Âi  Äœ[ñy»pâC!CŒ”'}÷;ïšœ4@*Q 3ü”wQ¸Ýýïô Q0À„)áŠGJÙJ½xЀdMû!—| "Œ  Àtp€è3$k§l•Üò/{ë@vÀ;lC à|ÉN8uó@€^FB~¢’ðÖֳٜ É×Ú@”†pi_Ðß׌p@—ˆ‚/rёЬ_Ø@æ{° @0 0!÷ÉÍÄHøY4"ÐÉûáw @:nBJ B7s7=ä”dëüö@ê¸è ƒü £¾^éÈm•…þí‚à F€<¼¤ À!FÛônÌÇdšË>ú¸À@¶ÄâAD2ÑÙ”žAµ€) p @þ@©ežz>ô2pèü‘’ù¡ÅoR¦É{ÎÀ)nÒÀÈ×Ou¹¼ Ý@p]Üô‘k¨ Ë©ý=ÃêÀðahã½å€u€LBÅŽÌu,Úü¨ /€5Ì ß!¹hÂ]…_À¬p`i †ÀÔä ^éã¾scÅ_t€@Êà ’Z Å eÜ,€@Ä€§#>ØhY¤ûÕ 0À– / 1ÖÆ±Ú ÐÎ_kø42Lå€jR2Öè0wP2A0`  1(47†1*WnÆÂï±f I¥ ;-»þuÓF€_¾H CS¾8oæ ÷P€œXBHe¥(ÝØÎ%SÀ:Zï† PM)‰ ´“P^ONQ8æ{`ðÒ“ß‘jÀ€!!€bY|—û¹¶€  h¤<އx  é¶ÈÂ(B25åàœP“2Óžù0 MqeÄÉ@fïÐc+³¬EîA\ƒ@€Ä’•ÓŒ¾, à€pˆà€ªC1, nKûîâ°½@¾NQ0“—J] ‡ÔC/l×çÀLBÀ:!eb‘°rÒ—Ðÿÿ®å>Þ”ˆ¹JR"å)H‹”¥".R”ˆ¹JR" ø})H‹”¥".R”ˆ¹FzR"ãj6¥".6¥)r”¤EØäÀ €À4@T¬”Žyïr@€ôB †@tSì7€áÿs—³Ÿx)€b(¨bC¨bJNo“žÈ 0€4!àÒbRÏ¿C«´_G¿Ñ z Tho²Uҹפn\@2-)å'0«ó  \‚ˆ (M,:Ü´ô¥¶Î·ç3“ï©  (“ 14 0‚‹BS¸BÔ,ˆ×€ ”L{Š&'ð2­÷?RMÉUý›ËB~ï›Ì’ý”HX4¡™Zº?íydÂñhÉB>³ŸùI‰èê`1û„÷æ=€  €^žÉÄ$ü= †a tä ú:s^Ò`d2³oà%Ú{ MÌ(À1ÿlà*ò,üÀQ.¯iÀ€ƒòœN›ëëà€í<’š*CHÀŸpÀ` @†¥©;ðv ²6pá¡¥I}ÀyØ0Ðàoùe`ý;_£¸PÀbMÁïÇ^|8àHd$âcøÁx}çÌ €v¨hB@t—ýevÄ^AÀ0 ¥VÃBl³ñ˸Ä1ÀLÄâ‹Ã[«,2É»kè€ 6ðLCØfC'%¾Ét6#x 2&\À(LFB¬ÎØù€0(QEdd#!Û?b Uï€/fCf´††§³ñ˜sÖ”ôû”¥-§r‡RŸ>ˆ¹¾ô¦Í©r”¤EÊR‘)JD\¥) ø})H‹”¥".R”ˆ¹JR"å)H‹”£jD\¥)r”ˆ&â0°ÞrúÅFßø½@žJ ` Tš['£ŒÛç8ûì@ü$ `!>7Kó¹æ/  ”MA4¤ý„’;ãùúø ^% ÔR%õþ˼P@B,Cà†àž±s¨…c兀ø$Ôôó0hXäÔ#!};LD0VoßÞpèšÌ$ÍŠwJ7Š”pºzvÈǽ?äkçð :€ì” :ÛbÒ‡±Üò=ó@À@¯xp,”€ÏΗf9MfÀ@M!,À@'&†#üP¬Ç‹»Ém¶¾ˆ5Á8€jÀú ÿv7ÖMÿªý~ ˆèûœÒCU€À%Àtt”Løc yJ]i+nœ°¦`e#ïÒè# ™ HØ¥ 0Ë(À@iPwCL-ºÿ)l)C…ÜZT´ù72@vð˜å§›z@pàH@€& ŽOBð…ÙR Ì„daÛ5)hXia½ËJSÇÿüÿþå)IÅÊR‘)JD\¥)r”¤EÊR‘)JD\¥) ø})H‹”¥".R”ˆ¹J5".R”ˆ¹N½)öñ:v/jržœ¯p êÀ©%€`´!†vØó “•ÝQ,™ËBQÎNû‡ªHùqßp¨ÇßÒ$°À3 ŠR_ ãžú° g=@òÀP[ æq÷ÀAàøø4²Š„¿vuqbOÞö@A¼  @NZRëp÷ˆÀ :È d'æ`ª Û_ÑAÀ@v‰ „41+øý8 0Y ˜C!“3mÜ`ìkê°@:P(L!’bUÑÛ”~LJ+Þ ¨@À 0„ŠJQKb!•‚ˆ fà“B‰û¥ò”Øy ¡¯•ydBtb`‰ˆÙˆÙL¾?V7NɦBuì'ôÿÿ×ù¯_Âíêo¿Š ðÈiÅÊS¼{è‹‹ú?ˆ±HðÝüEÊR‘)ûjtí¦,7õi¥9i/#Xü"¾ÚC´!þ¹J~Ú›¾‰\¥)þѦûÌݼÿˆ±Jgú‘ ø})H‹”¥".R”ˆ¹JR"å)H‹”¥".R”ˆ¹FÔ¤EÒa ¡ G?|õäÐ „2ùiÒŽf k=$€ÒÊ$%(þ‡k° 2Ë` HCÛ9î:¬f¥&”ô÷Oÿ닃56Ú”ˆ¹JR"å)H‹”¥".R”ˆ¹¶Ô¥".tdÄ máHûxèÜýsm©H¤½ Ña?Dxm´EÈ––ôéñØoŽíJ+ÿ.GÚÙ‘³EÍ›R”ˆ€ ø})H‹”}D—ŠÏçÀ;Byñ‘þ::vëö½OÈy•1`'èçK%>i B5ÔïJÔfýrñpÄ ø@jÕkJgú“•ÊPn¦Nˆ¹Jo½".R”ˆ¹JR"å)H‹”¥".R”ˆ¹JR"áñê…6Ñs”ˆ¹JR"å)H‹‰ÿh¡‰_¦_·‹m©ûQ¶NÛÄ\í°}÷¬, þ^FõaôdäþÆEŠR‘)JD@ ø})H‹bi]:´°(”Qöñ,3}"ƒyB&“vBÆuËPo] ‹U>òÿuåyä|£õÌb¿:B‰ˆ+*…!¡4§ó|VÆ\¢W½"Ÿöœ­É©!ç%V$ 1 ìJr):§ï¿^Ü:H--ñnPá¿,3Ãb¥¡ K‰›rA:œ„Wäˆé àxŸâÛ€?F=À:Š@†#-åH O^TÉxLK©B$€ P¼˜ži>¨„Cä=“« xLG;U ÅfÇL4À$pø±³jR“‹”ý½)Έ²7ê chþЏ–Fk® ¢†Þ;øŸÍîRµ:vÑ(úbÈh+/Ί­"‰…–r=Ô6›½i@!I}Z¬™úsøûè,™Ã2¬R”‰ÙûÿmF‰}¢.Šwõ¤>_d@š„—èBÖ+¼Óú{c¢É ~XÔ½R3j! I!.R”ˆ¹JR" ø})H‹ŽÔJsSîñJ?Œ|ö¸ûø!h ¦ë„\¥)rŸoJD\¨3R‘j Ô¤EÁšƒ5)pe6jR"å)H‹”îÔ¤E–ôúˆßë-õ6ðlôÞ?þæB¢’†ãáHþ·,ÈHø€9Õt‡òÄÒöR~¶(#.ÛjR'ÓÓ×ÿ¹JR"ä~ DYÅhmµ)þÑ)B^¦ÿø‹”¦¤EÊR‘ ø})H‹”¥".R”ˆ¹JRCk”¥#F¹þÔ}FztoqõD•…ðømî>£ïAš›m îR”ލr”¤Cû”¥"Ü¥)þå)H‡÷)JD?¹JR!ýÊR‘îR”ˆr”¤Cû%þÊ®ÄÀu¸G¨ˆi0›˜²‘:e¡)Ì„Œðâ¯h€Ë ÊK9:Æ¢o Fãè€ tŽ¢b0t¨)`ŒÓ&Q$±¡Í¹—)JSîR”ˆxÒ‡QRt ~JV–M(0ÿGU.€™2ÈQ4 Ó¼DÇðúZI 1 !gJuè€vœ01Ù1~R—ÐÒRµ&æÀ: ¼“¢(ü}-@Peò¾²ÄQÊRÔMˆa3/ËoΖÝ=¶z<±ÿcý逨4![ÝÒÔóndÀ´˜×`DÒÌj <Ý9/¾¡È~Òo¹ÀÅÄg£ù1/U>÷Ö±à”C¯”Öœ™õ¿?¥´;Ä4b»¾û·½d££·ƒœ*v?‡Ò¸4†Q3:Sµë@€#(™¾+åDPcç ÅkédÐÞ°†ï~’ÿˆ »æ¸+¼8¯~Œß½ó€Þ"óÚ;ë¢M&âµbÅ_L95~"‚›@5½ÿ]!üÛ¨C é÷Q~"”z‘÷<˜î}éFD‘AĈ@T]ò‚‹¯Õ!…ýï‰Àšñ~´µïƒCo0M¾˜÷’V¾p˜AM¥ÿ¶òýcWмvÚù¶£µü_ØðdéCIôŸPM¤o°BoGË·}—Ϥ¾¢P-0€ Ða@:cI/ïà€ï2`çRx(ø‡íwÀbšYVP†’‘}˜ø {õÄQáÔ¯O뾂C KýwTšMéöõøŠ k&“y~Ó Éþˆ ©}óP…t§^ü˜‡÷ÃÀŽñxr󯱀Ç{à‰CëèDÒÄQýñ»Ü‚‰ŸÞ ñw‘!ê"êiרëÔ–†¿-“C1(ëïÀ;)¼E>Ä®ÞùÐâÉ×Ò:½ç€@ÉÑ~sÊõ%“óà0HÔ5çù[ܨK^z Gõ@OÐ×ÏKC_A!ûÌGx%'—A/H4›±ÖòɯhJ¬¼ÜV׆€Í¨ëýêHHtëF°FÉÒJµ%«z$ Ã@¡°ä2j6­ü°ÿÓH8 pBx/ù€ʾؽùé(¯pMGú•ìx2ù0ÂídÒ+DPOõ€ÐÁ—E—q€Nž×T¬þ"ƒ>BCûóÐ Úû ¯ƒ!ŠFˆ —•^ ?^à C Ê»ƒÀû¥¢(-ñ€6Em¯TPw¼Ò É:"ŽŸŸ5÷p PÉ÷Ë/Ÿß|Ì7%>"é)>ÄLë·¦ÂLˈ —áÁ¿íïš_M& î×Ì¢(÷€„˜KEô`t¿kæ?=¼†¢ »Ü¤"÷ž`€Uõ_qHgÖ¡—ÈÃ@2{ºX_xÈ!ï|ÊbA?ÐZ©½Ç :e9®=òo1 ÅåQ8@`,Ñ ¸1=q°I¨¤*¢8rxKwFçê >(Û}xùk÷ÉC{#ßÌ·þ"è!½ý3úôŸrˆYüEÿ+ ¸@;!ŒÒ€é SÞôé>"‚^ð@¥)ë»\ùcO÷P›ÿO¬gˆ£ò P¹heÞ@“2ÒO¾°ÿIˆiÆÄPQñà€1á¨g¾’²/ûª}kÿ`€8(2&€hB^ˆA…<Ì@Æ\©~E<È0b5å¿Ú°¤b‘µÚ!†µ=’7Ñ8RŠë< +‘Ÿ®ê>GÞÞD j ±€f¼MÿÞ‘>œ¿ëï’)3_œ`ÌÔKcBŸA©€N\ó¦hèJ¨H†ãV>ìé7\âq-N"v ¾P¾Å_¢@c×ï…j–C_¡È}qwÏ÷•tS—¯R…ûÀ. rÐ¨Š ¾*L@ÖÀB†þøXfÛ_@ øŠ @“Qò|uÆÄܤõ]–FS]U×;xŠ6²³ýif¨ íâ(.ù2~¾"L)kô˜a •x Àññ|0ýzà Ñ×iȸeÞt²°CëÄŒ÷1²Rh)û ®÷Lg¾fM3™v8œuà ›šù€ªÚŒòŒ÷6㪗@ õ—ÚÐYí1^çLþñ(0«„P¶ºy7]ÉÞ¢ %#^‘,†ÂȱQ"›@€c‘€v^Ø‘ÚâÀÏ-œ ',}gR@Ok®ñ¨ ×Ϲîœ" >)Ó‘tøѯ@²=ôòh ûŸGðì²¹¶,ŽmúH繨Ïãb(üòϾîMë¼é <³o`žñaß*¹õõB¾N5ùâ(þŒÛZƒC1zÜ€•îbP˜Š?¯€œË꾊¯Œ¿.–‹×ª,™Gú SÜìó/Œ ,÷(Fˆ£ý*|eÜJ>¿4P 7:úq4O¿TEÿL¬È&ô\`Ð “¹ÕˆÉ?DàBA „`øê€Lã ŸÄ"Š¢ Ž5tdŸžB„-kGñ0-.)Í-$ò~?ÑÆ¥)9ÑÊR‘‚I±MÆïN" 8À!ÝwÙÉ»½ù¨ A·ÔÈ` ïÕA?Õú„¿¯.rw:è¤ ÆDPIÙHoõ¿Ø@4-{W!'A;#µÈ&Ç”mÖà3ÄQø²ôãož€\K.ûŽÉ¼¯ˆ “óØ1¬2Ãz0Î3¼äE‚!o—Úâdæë·€ìЀvî…ÜúDQúЀƒ\fÖ⯗ùï H‹²hé,vÏ[6jÈÈÍ©8±ü>”¤E¥)A¥)G)JDW4©?äX“9:îäÔ@5'I÷ïŸ ?ˆ%9¾}l  L·%•—b¤E¡ €X¡5ÙÂu×8 Bߣ#…^‘Z¼¾ÿ’Ÿ סØ ¿ø¯°‹à‡Ö$DÄžR”¤E¥)G)JDQÊR‘r”¤E"g qV?‡Ò”ˆ£”¥"(å)HŠ9JR"ŽR”ˆ£”¥"(å)H‹@¤–žZzy´" ÐÔ’ËJ@Ÿ†p qp,áô¥"(å)HŠ9JR"ŽR”ˆ£”¥"(å)HŠA`,À q:B ¹4¢a©J2…Ñü>”¤E¥)H wEÍH]äÇp rmUê‹%A£`Ò]‚!nÞáô¥",X`7[‘`€Þ›SJí¼Ó-롵˜l\-´Ñ5@;APnßø7õ ƒKž ê“0âž íN pä03jqúÖþ4¶ƒIr롹c=óàÚ¼5- *uXªS»Îºp z&Èà @*ú\ªA¤JÙíåAÛ ­Éíÿ•×CZ¨-dè7ªn‚éƒK”Ç›3€ y [‚°ÁÂjC^›kÿú€–ÐjCz`Ôø1 é¬YMë @—¼MÉÖ ÁH¸h ’fƒ@lXï`o ±fh4ÅŽòðú@Ô¥E³Á¬æAºßñOWÅõÊ®ª€#HUÚpl‹@ ”¤lë¨ ri Dóùÿþg {Ðnõ`lþ/¦L·öþ²ßÛúËoëKO“ Ø6² ƒk'ðn-©ÊPiÙi”Ól6´K®iœ ruu˜i. ®oà¨!5úVìàZ¿°ˆr\­— ©¶@„*P¸g÷¤²yÄX:W'®š¤þÜ‚’5 ˜† ’„ ¥² IH 4 ÈÈ)„È)…IÑ`:W[MRpMñ€ ”LFfŽT")7# "cø})HŠ9JR"®MÈ0ie 8d „2À2WZ žû= p™ pÒ('ߥ)G)JDQÊR‘r”¤EAArmpò)„²À2WUWW\0à€ vRˆI €,! o°@&uÒ©\‚Bcø})HŠ9JR"ŽR”ˆ£”¥"(å)HŠ9JR"  º P<‚B„à9' \ *W'«ªˆøÀ×€0C¼ôÄØ Å´”$g¥È$&?‡Ò”ˆ£”¥"(å)HŠ9JR"ŽR”ˆ£”¥"*@j€è04€è$AÊA!4g `€:ºzV~ V€B¤ &;›zMÇðúR‘r”¤E¥)H@„¡Tè8èœ‚ŠŒ¤,ƒä"¹*¶ž•&¨8-@t"MÐutíTƒƒŠ®V×R *´ž•+¥£Hc, H$%p‰€ *W'Dg"*n–œjTY ‘ƒÈÉ *W'dE ’AÈÝ6“XyG „X *W'D<ƒi³R¢ÑåR±– *W'pòŽA! „«ªm–‡T{÷Œ‚/-ÓÖTªa!+üÑä  W'SVFúAƒH,&M2,*2¢ÑïÆ¬¶>Ä Wmšèò  –@™H0b#:Ù6ZÇÕ+3KФ²p WMÔ¬'Tz"³¤êæ’p\È(&@„Wd·(!«£È "»*Z³""£š—, Pªm“ @R C È$&A!4Z=I’ÁzJ‘ÈŽF@ W&¥h‚Bii䞉˖› ˜ˆ \¿dô³†Œ(S®¾a!# `}€'@öTŽ–pÁ…ŠuÒS¤ b‰Hû¥ÙÇì&øÿ`,ŠK¡™£>o‹S;}Ù½Ý;a¡¸`×Ç?>µÂŠ&–ùøk:P‚÷ÂÎüê@˜)0à®†ÓÆÃ`ÈM1ð6ò1 W'¾o³%ÑÛ”¯ö–ÖK(¯ÐÜéÁ¹)ÉÉý•¿üpí[\ Ä.”ÀNCJ00b[(#þÍ‚Õ? @ 9``š¢PgR>_FéYyoÏ㎀vCA òÃ8iyó(iM†cŽ6N,„Piá¿ddcØ#lªÓãa€1AA„ÒB94ð2c‡Pi@7H &œ ”žP \õ‡0ö®°À0Ze’q¼Ÿ!ÃÀ € i4š’ºJS§ãÂ…×ù%â@!Ç–Œâ@èú è &´ „§íÙ›4Àçx B @ÈHÐÒƒ _˜á‰ 4`1IDÄ–Ù!­†ó³©œÂ}ÐMÅB!`ÔlŸ˜ ¨k³ögËìæ@7!¤Òh¸ÀögqáÖMûÓˆiK§óøñ"æù.5ÿõÿA('’ƒ[€õ&ú‰Ÿ#†%É»dç ãÀ]d¢Ý×$¤†§Ï¾õ·ÀtÀ° ‹ÈI-3„šç»À; : HÉ0¿úqNÊÆ%Ñ Òf(4¢¸£‚jÿëß%mÈ ÀlC , MHaeÙ)ëÃSÀþ¦@î ¤ ´ ´wBvûŠô€à@iÎŽzA ‚@tHɘlÚ’tX W‚¹I NAHÏÿ2HÞC ,˜^B‹éßáê;× û¤¢ƒI\•Òœ·^P¢,I©@jJ3$½³ºŸ©ÜáäJÿ£íƒ±@]Ž1mñ„EXihAE'I/÷ (Øa`X†ôºy®E®YE»»Ö× ,’ŸÖp­]øÿ;Œ0T3üeiù%$²ŠÛ@²`aE>±:;·=D{“K˜gYh;?>ñA˜4Ø t„†pÐчlƘ&¿Á(Ýq§’\±Â bˆd0“Iˆ&ð™Ø,ƒÜ´Ã8ˆw dcßd33.Ai-Р°t¡$½À³©|pjÿ€UÀvPha4˜ZËù{°Ô“ ,¤`Æ¥n· ú&$ Ð‹À:èë :‰ :€ P4`Qg0WûžëC quþ&$ ºB’i7: d´†vøWhb &ÃC èèýÔrÚ€lQ7†€˜T˜@4C h&?Pd?<è™’L7À6ÛÐ ì¦ _ÐY5º(bp£½0 0OƒC•3ã ¥mÂ6Ih!”POÀ)(ä·=XÒ5Àð c5àÐÐw›³|ެ3oºà@|ä¤>&õ,`ܶ0O`@€€dL×èÅðÁ¥çü¿†?ÁXøš‚jPÃ?Áð@'À0 ÷ë€ì¡+ ¤@ã0:I–L&$†‚aNåüGjÿcÕ¨þJR"˜$ çϤÁI 2 H$ ° WËà;¤ÒË (jḆÈn©€ 1940™Ûî§€²¿!bË…£pщ%8³@`¬KŠ Ð £ VùLi:¿–dð*ZL/¬æáuÉ€1 !Ð'cÝ™‚ÉÖM´˜„“A¸ÔÊfÙc›…$ —ÀtÜpÂa €tû?HÃ2›Î¯ò~ÃsúRÛàzJ@bNŧ`îʯ˲@™¿èH8Ü0´¹e8Ì{ü&%€˜ ƒïpÌX %>=ÆÏk(šŒY5 !XÐÒ†)ÔØ€¯ !†„7 °â’ÇÛ•–¯ŒSò={ÉÉy?|7lõ÷ÉíËJq/–ÆŒ*¸À,1}?}‰o‚@F.¿€Ø„J, 8ÄîÀ6Fv „’a@`ÄÄaæ…Èœ5 ÀÊ Xj Çœ8Ÿ$hƒI„ÐС d¤$gùÂVÏ_âo) d0Ô ( “WÀl]ð(LA0 d $ß÷ëÍø:P²‰„2Šå á…'à”ä•Xš¹41*äÒku%ÿ l¬"»ùh…ô¯ä4°Î;8 Py«ÇɵÒ§Gç‚ñ5 P :ÊõÔ4u”ƒr Ù* Ûuˆ½˜gÅu⟹ٱ½Nõ0P¥ÔyôÁjW¨þJR"ŽR”ˆ¨(.M²@pHÙ` Wuhb‹Ý /utyç×|ÉŸ$  4„Ž„¥ò òh¥0o+“8iX3s¶|aÌ:@°˜­Ð¤ä0õIJ#@-JzCC_9ÝùEwÉY(ÄÞÎû8‘jʶNÓŽ_<  Ô“JOA¥ø4˜œ¤´€¥?4оk®| €’Lø° 0¼ZsÃÕƒÜëÜi4!˜k)™€Ö`üw̾8ÉÄ`€b0˜’€lþùœ°%Ÿõ*ƒ@¨&n”£’Ôæ¿9dúÿt¿,c€å#¿3žx[ÃJöÝ.¢ú„,tÜ‘ù|“Í´+¯îž‚[Z€KÖO’ŠÝ·(ahBw1”yÇ_|ÑþØp2\Äbðùpëù,–MÉéNù!‰C>´ q©?±ÐHoåÃFJM_rq8!)å g&–À+äNBI¨_ïÁ§þ¶ŒÜ˜„†lyí–ðܰßÓŠÈB:¤ãàà.S åÿŒØ\CJJ a›’ùëÝ&|iòJ @hk„§þãk.`hhYnœ€ ÿ£©‘ó#9ñ5˜›òN”§ä;§©-  @©4š  b„\ü¯ÒCR›¹‡h)A¸ ËwÈ_$—ÃC L… åá‹1mÀ €„0ðÓ¶~#g€.zÜ@LH{:Óÿ<#9áô¥"(å)HŠ9JR"ŽR”ˆ¬(,ÜkIç¸ eÂéÀ;›R ˆäAp^@tä ‚@ W'„;ëa #ÄêÝÓ„ú=ùƒ+¬–ÃýUÏpùD…~‚<¯’6~î”P‡ñˆ5@9FPw†äöQ¾dd üÜDÐÑ©J9)÷zRá©ò‡Ö&Oý)N)ðOÊàÈÅœkÖì¤Ã~ZF!ñ=Dxg%çb5kÛþ>léJ:Ý$[ çèÉbWsL¡û²ò~ÓefJ?¡Ž¡¥œäzAØüذÀ3&¤´¹4j9eðÝÍ|ï˜ÆÊp ! 4W è|YFlvš0à2À ᥆âßbÀ«7I¨%º~WîHâ€v¸ à†~JtrÕ¾)”nç‹\ ÐÂÀv·ãX÷î|àˆ‹DÒ‘û·9ÇQü>”¤E¥)G)JDQÊR‘¥†S@®~HL‚Aƒ”!áÙƒ”®N‹}äô¾H  >ç:|<À¹ÝK:~~ØŸ[öklgDÎa÷âÂë^Hû#$|ë&~ëûùúëûg”Ì:[3Ëmøãkøáƒ‘ˆÓŽùüw4Ÿ¡‰>¿©Ž:rOoçc’ç<Êßšeˆp«þ8Ù!}»Ö½òsÿÙ¡ó·ÝJ\4ÅЇ½¿}(HT(úórWÛ–OÑÒ‚^$sGOÒc¹Ó3rÃR[ü|ŽŒØ²â¶¤8AP–#ÂTâ$µ?à$×:_¨8蜂Š@l È™È8E™·óiR© >9X|ûçÏÔ–Êóóˆ!üøñqëW ‰ô!;‚ý,DúÕƒæs(U ™jl?3Ìîºx!$®žå”R8Óßré9–4–ÝÆ€H.¶‰º“þ~ÙÇVœ ŸÉHÅsŸJd#¥“˜–Œ†QÊëå÷ÿ'VOBºIKì-˜qÒÐÃQ[c FN=Õóà;^¸ÔbƒRÉNÉd÷Q#0…ÍŠßr°óÿ7ƯŸ7$21HFc‚å2¦®ª‡ â”Ê 7f5óæU›1“êä « øxÓœˆ° ùÜhÇçäçÓýödq¨Ì53Þ¾ZvçvOC!9id1öÔ–0ßoÍa­ÎsBÓ޾ ÈOU¯Ïã‡AZµããÖ¨ìt¨Aé'6݇i«µYµl‰3€sHc ¤ ‚ì J@˜p W'Dg"*n–œnD50·zFÙc¶jËG‡Ò #‘’, W'dE B H¤@Õ6" j@l È,<€àL0I W'D<€éÈ„Sf¥E£Ê¥c, W'pòÁ9À9 :mªÃê›e¡ÕG­“ …=0æ¿ê`°BÿHŠ`¸/ª¤ W'SVFúAƒH,&M2,)‚Õ*QᙂR1eä8¹ò“Ñ™(æÓ·/ è +·ÝPs€ vÍödº;c•þòÃÚÉeú87%99?²·ÿŽ«ô” HØ @5€è ü Â^WcýäB€BtèR’„¶)8=|ñ!C¨°Â€bY0×ñ© Ø”XÅÑs- O¥¤oà›ëÆÃb‚ƒ ¤>„riàdÇ Ò€nL8)< ¹ëaí\a€`0´Ë$ãy>C†€@Òi5%t”§OÇ… ¯’^!€TyhÎ$ Þ€ÀÐÒa`;B¨J~Ý™±ÃLw€* ”„ (0•ùŽ—ò@v”L@ém’Øo;:™Ì'×è&⊠!°j6OÌT5Ùû3åös Òi4 Ü` û3¸ðë &ýˆiÄ4¥Óùüx‘s|—ÿúý žJ nÔ˜ê&|Ž—&퓜'u’ˆhGw\’’ž7>û×À:&€Å€ ‰ÈIdÇøR»õ¯Ž°é$Ò`nN¿ (±%¼(| …†ÁˆiC•É,wÆ‘à0Pi04 솀Ғ€Â€¹}#;2»°©€)ÄÀJ)#R;÷e´ŽC©ØØ ¤’–ßä요ǔŸ’‚Ư»X¤,¨a¿Ó…À`„¢ÂËÛ§äuÈ%Àb0šMAI/äp‘k4Õ2a„2ø©_à€yCP¾ZyæÐ 3>îã§´šØg²¸B3#5$¢`a[ @ÁXÊ™†† °>¿ %6ZBü’òs ÀjIEf8Î`1ÿà Œ@΃]8¢†q SC2xw’å÷BpN6Y(ÿíÃqe zp0éGÙ{™`2€Ò’„7BLÕ000 ``:@å–‚^GÈýcÅg‰€0&à@Â*7â¢ù`T°Ô$†ÑÔ†dv *žX`a1€·ßãñ˜|€Ð‰d!ƒ{­ ³ÌÚ(1P½ÃI›a¼b±$ò5I”‚a\²ûmž~Ëçj?‰j™0@ÎY|:è? ”BÆ ¼¿4*èø dra¡£6|ψ—¨Z Wþt’GÞ˜X d€RL I#·ûãò¤‚¿£ðà%T±‰/' ¹àfLÔ3W¾‚@”XɨBCtão$À ÒCÁ›§ýöè" D3ù HÜžÂô%"8 {Æ ®RCCSR3ÿÌ€R7PÂË&W¢úwøzŽÁõÃ~é( ÒW%t§-×”(‹’jP’ŒÉ/lî§êw8y¿F Û'b€»!bÛãаÒЂŠO’_î,Q°ÂÀ± 7étó\‹\²‹ww¯å·å–î.’ÿ’œ^ËÜŸ{ýÙ«ä”’Ê+liÉ…øÅüèîÜõì M, ae ìüûÅ`Ð`)ÐZÃCF³`šø%@`‚[ 4òK–8TlQ †ri1Þ“;`–‚gÑጌ{ì†feÈ-% š´”$—¸u/ŽM_€UÀvPha4˜ZËù{°Ô“ ,¤`Æ¥n· ú&$ Ð‹À:èë :‰ :€ P4`Qg0WûžëC quñ1 UГI¸™ÐK%¤3·Â»CY0†XgGGÔb‰¼4À0¤À2 KA01ú€û!ùæDÌ’`¾¶Ü †€àOe0XêôMnŠœ(ïE +†pö@hcà2¦|a¡ô­¸BÆÉ-2ŠÉø%–ç«F©™`Q!) dâ³³#8[‡@7å †Yh!:y}ðÅL (¢h ØÄ§A¼o9¢˜˜ÄËü%èé )³ðƒ¾"À„0*‘ˆœ1[çï‡qÕ0þÀt’Ï€9²`a0 È+m·0rì`0DÄôb¸ß1Xpÿ .H@; !a…l¬…c‡Y`1Ø`iHBY ?¸áÐÙ00 “1c Z{ó³p©„´¡JJr·’®ûya)éþHÞ>%t¶uül3 Fu¤ÕÔÌhéúY'­8á$ú4ø”—C§ô8]»aÜCX¤ ËÚ¦ìLØ”LÛoÒãuðÄ€(Gp0È'@)Å`”Q/¹ÝÆš(9í$ÔúI¥|’‹ý;áÝtJ@Ü´'‡æ­dì PhÂbPQI þRxÒ&#Ñü?ý³ó®° `‚xt®B ÎÝþæR¨èšR Ä´#ºÙ}W¶ p@ÐHa¥±|ÿ²ÇÝàžäÀ€0,„L-5;ï÷^•$#ÿG¤3À Ã@B²o=/ù·X†¾²Ûþ|/Õ T7ÿÿÀp“PÛ¯ßNˆd0 1Oÿ¤jz„úvÛQâðÈet9'^ÀLbR­¶_פ0@*!€Ä†PìøËÇ“`PPò è~ù{3Þ( €4 1 ' BPRÿÕ”eE÷íGœØX€0ÿo¿Û­í€’’Ñ¿C~³¯DàÀt^AcÍsn €z£pÓV`ô0ƒ`bö[6§Ô=xÄ ^Œ1;~cÕ^˜W€‡†1kRžó`ðÀ¡E»¾X›€P2€LZ>vÝFâ þo#€ {òøÀ©4²Ã „³,rª@``è @NM &vã{ ià,€oÈX²À¡hÜ4bIN,Ç+Àb‚À4(ã@HÕ¾SN¯,0ÉàT´$˜_YÍÂë“bB! :NÇ»3“¬0ši1 &ƒq©;”ͲÇ7 :H/€é!¸á„Âè#ö~‘†d 7_'ì71ÁÑ/¥-±Î7¡„¤$ìZvìªü±»$ ‘kô$ nZ\²œf=þÀLP A€wƒ8f,Ÿã çµ”MF,š„‹,hiCê‚l@W†ÃBXñIHcíÊËWÆ)ù¯$w%ätýðݰ×Ük'·-)ľXO0ªã°Åôýö%¾ ºð€ÀiE‡ØÈÎÀ#´’L( ˜˜€Ì<йS€Ã „r@AK A˜ó‡äÐi00š´$ ”„Œÿ8JÙëâo) d0Ô ( “WÀl]ð(LA0 d $ß÷ëÍø:P²‰„2Šå á…'à”ä•Xš¹41*äÒku%ÿ l¬"¼hb …¾94„¤„(”cƒPGÒ@-A`U<÷ðÀФA€2…V:ÊA¹lŽ•íºƒÄ^Ì3âºñOÜìØÞ§ú¦{t §ã>üÑR:’‚Wÿ²@ðëÝ9Eá¨Iú¾(j0 .vû+š±Äx•ú ]$ÉÞF-$´ô¸)'˜3Ÿ½LI5^²ptRC?r’!„ÂÀÊC …e8Ô7w1±§Ã@Æp–XÍÆ€ +ª‹Ä$!I7bÇ{&pÄ”‚ÀvŒò÷ìOU1Š (ý¨0²öB{¶úö-–Q4˜µ|µfOöO¬MHWt•Å@)ß’Ã~IA¹I1c½˜ÆÀ¨Á¿ná6Æ€€7€@ÜeCJý+Xžïì@ZY?Œ¦ÀÀ€| &A0à“KF,1œ”ý[2Žáð €ààÓð ËÏœí¹­>vp“ùymû pú?€”“Hx–I¼]耀bXËOß÷ò€'nX É¥ñ§ÿi ý)Zï³J´†äeô§ýÓÖ'Ò„5À Švk €RM8&oßãÛ œ4¡»uâ%äô €4Ë‹¤¬§ûŸÇX` ;+“CP¾ÿ§æg„¥T|€@?Ò€M (gÙJË€ ZkÀL†ÈûlWQ®cYÀ4 ðܤ!â±Ìùî° U€`tPœ1¶;»»À~CÀàbh`ˆaŠe'?ärtöÿÑû@Ðv’ ÃMæÝürF›PZ¼M¥üœÏÈö€ ‘ù7 ûê@€í$0 z]ÂTJ6ÚÌ‚@¥€ZBÛ›¯©øÄ/ÍFäí{ @SRSžð`ƒLBFÌÅb ó€€’‚øE¥.Ͷ Ô|Ž {l÷C†wW°“ϯ rgɨ !#†!)|Bü€Â©A„ÌÊäÎV ÜíŸs@,&$+té9 =RR†ˆÐ RžÐ×Îw~G_ –V!ýÿý<þ,oe(ÛïÝ8ì³éÒÈe~‡Y|wA„.€Ð+ð¡[ 4žkÀ€¡00ÂIŸ‹Nc˜z°{{&€„3íe#“2ÌŽù—Ç ˜ŒP FP €Aÿß3–d³þ£ÅP`è¤ÍÒ”`2Zœ×ç,Ÿ_t¿,c€å#¿3žx[ÃJöÝ.¢ú„,tÜ‘ù|“Í´+¯tôزÐÌ^²|œVè%¹C B¹Œ£Î8*ûäîöÀ9’æ#€GÈÛ€^K%“rzS¾HbPφ­jOìtùEðÑ£R“WÜœN'HJyhÉ¥° ùÓ’jûðiÿ©›@ÀÐÀÀ Ò ÓÓ‰˜f >p*LŽ,fÏŽ´r`À*Å 1’’Z”ù›‡4’ƒá)ÿ‡øÚ™†d€í!‰Ý9-Y Èdega¤0Òa3†Ó²Ÿg ÀÀÐ y¬bfHk‘‹'c¨4¢Ò^Áª+$å6ÖLÉHA3 p»BKÙ:Aφ°¾­S œ¢4`€`€{{h´L@é %a«ùr‹ !dZ2 ˜ñÆ…Ñ4¢``aNƒñ‚h4 S†`0S eï÷Ò6 @`Q`T3J7?¹Òa˜B)ŠI(i¿äËY %”€0É¡8–3l„ºÛcŠ @(fI[á¦á5(˜RÅ> À”’Jqœ-r@`l“ÉŽÂê`JÊ C»Ü}–,5-ÍàÛÿa©Ü’ŸïŽœÎx}òŠ(bP¤›Z”ŠP`bg¬a f¸7 ¹ÿÜs@P.€B€(‰E)((šý)ltxâi1$Ò‹ý’ÌÌÇȨ1¸h @ÄÌÌMGdÜð ,‚°1 90–QmŠA-·WÂÚÀ  0 À5!PRR¢’ÐR{$þÿaüMPƒC ãwœ¤·¸€ €fM‰OÁŸeÓˆb €á&™}° bjP’’¯ÏÆQ“½Èþ>û³YL ;!dl_R[Ò¡4®w˜Á¨ç|=˜Ì &R:P#íèøà: 0•О• ¯R;~ãCzCýÑÜ5Ø–Z]$0à††pĆ–ÜýÿŒ¨Ôà1ä4ÿý@Š/quŸÿ“Ñí°o%ç»Ã*Î k ± 0oGCãÀ…ä@` (1©)Ûe6;ké@;,_|Ÿ¾³˜5€vД¨]æ0À@ ò¸©¤§£ùˆà@ËxˆÌ7#þÄœÖP(` P419:úP`@Á‰ %159”xUÄ@µ!ä“›úñ£¯,p ]€ÀT‮۫>l|ÒWÔ~:–À0À!… Ntì±6=÷ך †œ3†$j<þúœ vü¢&$e¿Àe4>SbV_Q(`“IŒZKÜšjðÆ,¢Èd´”à:JÝ–¡jZX©>Ò’Ùø±uîKÅšÃE1[€Ûò’^¸cìq'8ø ´ç;§,>©îYeä“C1ƾ ¯ˆ@Q,Q‰‰/p(LÌÌ€0[öË “©i&!ÄäbÃqÌøÀ:( ZYnÅ“>K‹(¢0|~*CÙš€É…òÒ„³¾ëGp#_ìHìK牤-B`’ÃvPÀÔ˜ÃÄe|ZáM^œHM¤}òûÅ %{w›a©Ée¤Ñ2~O=‘„¤õg¯)!ƒCBM„Á£?J~P–Xqò œ B€  À@C!¤¤%ðhflÁ¸‡@:àU)&pT“ Ù”%ºˆÔZPXaD<_lŽMîÆæp8£*džË%% r“°Ï¾êøý$°Ä–5 `Ö5k€’±,¼_ddâ[ää÷$ |ñ-œ £!<´8jµò3Öè(-$ŽË‰I) (šÃ?BùŸz™—‹%†„rO8O’Mû6’|K(´“K IãR¤HéHi`Xi $ò6GHbVúMˆH !“1ÿ•S2Z>$&„¶%$+Ð`bKlÆ÷ÜiãIE$nOÀD¼BFp P Ĥ7ã Šc0O¤ƒnVä"À"ð„À£†É®ê°‘Þ`‰˜¤P#%ó˜Û•@U) )(&æ 뢥蛃Rß w©Ÿfû ´ì1?|~؈Çh@TA€T¤ † Fß|c5»¥˜b‹t§òÐ_~d×; Ã\$gûî£þ9w¾ý%/„žxç£ùp@AÀêJ Ïßã »@ Ád5ÓŠŸÎP]äâXaA¹’Œ‘:éz €ïË& ¤óQ²ã'ê?~ü© Áþ¶ÛZÀv€'FüIJÀ÷¾pØ"o ŸeÖÀ É Sn)˜)®À‚påŒ;}ð\°mÓ@‚ ÎZC>aWDPr~c}óÀ@³*|)ñ0¤!‘÷Ͳ×{€0 Š€T¼†g÷® ˜A”„¡-—ô×GÐèï)0„’ú´¤ pÒÛ-w4 `ÃJB wøÅ]€\CÌ7R:ì¥ËýµEìíãÀ`Wv÷”H ,€ì À,ý?>ÛšÖìÀb¤ ä$ìÿ.`‚€ð o&sç‹Ô~€˜Y4¤ºì` –B!”©<}H AÀaœ ÁÐdàU 1)$¤°ÑÂí`ðÊÈB\n>_ï¨üÀ - &“ñò | €˜0¾{5êä@hÁˆd©¯.ð…À  ƒ ç³ß2x  Û]E#wQlôà ð ÷I “@b§o²÷ÄÒД±EòÃVp˜ €ßX_C0f/ñ‰RœDÒiEr0™ÐŒ5 ƒGq$úôBÊ-80°ÂƒËû£•ƒúGOˆA€Á=8nA-løŸA„ÐÂð -Ø4uDT¶Á£PVdðޡ쳺ëô Ò0@P.‚€ÈÂRI'åa#øDÑ U ;øoàe'ñ~¸j@©,4 †“Kèe—ú™š T° K/¥iOäúø„BI4¢²@%ÄzI`ÀÀ ’å–Ld·QË"¼œPPbCLN'zH¡¥bŠÄ.RxoOßìaøóޝœ Ö@@ð úKņHE†â¾ FÿáBQ|˜MåQ7-’€Ô e ¤”°`àÐá¹ö¹ N¾AÂQdÂËû†§¨1²û¾Rñ²IiØh&“Xo8¯A¼„’ÒpƒKe'£©K;È éAü€Î‚ËIÅ 8Ü{WÁ¥MH‹we£¬œø à1Ë&MN7`1Ü I¡¡˜¼¤!®Ã†‹e€¡Eò &ùy0¬¬Í×ö_uý^*°(‚hi 4°Ìî5 ä”R1•ŠNù€F¹dÂi0†žBF&'§9NI9{sU÷:€wÊBYÔ©Î+‰Wú¼$gFÃl04šC>JBø|„|5s;n qÊ¿öÁˆI-ÕÉ*¦¸ &X B³”ë2(´B,`:,!ÈE° _¹Hÿ)Í€É4†Ÿ°a-ÞœVFJw É&‡‰…€œR qIÜ”‚Ã{rX®Î£ ( œ(l¤£|€LLP-Æd’ÿ@Óœµ½üÅíÜ—»î2ÔmK1-;¯ì@‘›+°ì”±¢L»ämÀUM€ñL häþò8ÞyiâSë÷?#‰J}jÝ$# FØ7ßÌ& à ‰A¸b¾ÿ{Üppñ 5Šç󯜀€è À¢IlKØëÒ€€dd“KG)lÿk× 0Ä ô–XnC…ˆâí1NpD ‰  ?‘èý`ÀÀ¤†¥~±×“BÐLé ̧|A¶è„¾(­Ï{žÈ5Êu1(Í•v€@@ ªHd×ÈùÙ‡‹ºÀ¨ Y &v·¤^úˆ€„‚aEp‚±#Øu`@<ÕB—ºö9Í»`ƒpðÁó‚¹7‚'çfy! ˜¡(^ÉÌÍò=i à` Ò¨ñ€1` SÒ‘ö~vÄZðèa´ )gªÐdÓ€ÏX¹ø ^÷Q7€GtP` %â`Î+âue‚ b¸N^z>`âÙ HÇÆ>2Æ™L¯J@à I{òo ¹À [Ç î=cîP` €®A0 bV¿,@ð a¸¢¸Ïǧz@(C@+ËÕ¾NÉG}×¾„ ´d£îŸ|l sJãÎH¨–‚ÀÉ|$þ>€Þ„:¹Ž|KI!¿4P‡Ì_û‰”_å¯-s ¾€ÜJ Vàˆ ùT5\–û9#…_I©O|>=) ÉÉãv̲GCOgJ…s_¥ _w6´tÙ )±‰øBÞ`ÏÀIÀ"¶Œ„àà;_¸ÀÐÌ”–`"~w|ÀnŠI/rb_üJ`¸ Û8—\Üaa€6Á¦ðAd·/ ìììk $•ÓܲŠG{î@'2Æ’Àû¸Ð Ôœ1‰_Zv óöÎ:²t2%#ÌN})Ž”VNbZ2G(g¬¾ÿäâŠÉèWI)}…³:Zb +laHÉǺ¾|j¸ÔbƒRÉNÉd÷Q#0…ÍŠßr°óÿ7ƯŸ7$21HFc‚å2¡áñ&—ƒ Jz²7ð¯FpÀ VÎ0“p!ÎB? Õ„  À:&ÒqE%!YDú>  i€àœ„œæµè@€–CRýßû8 h€5å“CPæñw\ —ÃKýï¨ °€œ%”€Þ3'«}öà|À€fˆh`a7ŒÉNmÅú:É  ËOs£À†ð?Âç( pÙPpjq#ÝØšÞû¥c¯Sì+ÿBKK¬Ú9À†>Nü7cø]A¼p¨`A¼p¨`ð IðÀð EFÉÄ4 ¸hÿ"xáPÀ ‰¼‰ € CñÉ'Ëèô­‹'ѱé43åð» É¥–Œý®€CS€·¹€Zˆ²bPžWÇ\€@0¼Ü®Æ>p°€ @dÎÆ>Gç€ €©a¡›$qÉi.Ñ3¾Ušùp- &bÏkâPà)ƒ\hŹð ÈîãF??'>Ÿï³#Fa¨˜põ–¹Ý“ÐÈNZCÙ }€õ%Œ$7ÛóXksœÅWü#vÙÆ:ÙÅì~s$¥òÉNâ1¾Ìßo¹oJÿ¥9}Iýá Õþ(†BHÀÄ~È$ްœ¢>€Èb K15Æ8ÜŽÍñÂ<40˜Ð’|ÜHÅ”1( &¶ù˜¬ŒÂ?GäúsKF Šq¡ (î£&„¹_ [Ǩ”Rñ´!¤dœÛtf¤–xØCø}¼1ÀcÀ PÎö ª€WâbP¦Okp²!6Ú]¸Æº@| B^íùM¸5Gê€ ÀwƒHe°ÿm)K³€'-Èe‰´O±yï®vÉ !/óSÈ÷è I €? JM/‘èñ$\Xe¡Cÿî @€ŽM&B‹ç:é‚PR€2 )=³}ýÂ!þ&„²ʼÀ@-È1`:I`—ƶm˜-wˆà€@@Xh°ÞKm¿Gx ¤ðD;@€Ž_ì±ídÐ _“ äú²ú¬€€ÀUnÆ{€À €€NƒwüÎË·’€ bˆDÔ%<Î1t}2` %% $0öT˜óã+¸ÄÂiD4 +¾…Î ¶|Bæ¾ \„À@E,Èßènø÷ÍðU`€„dç+6±:( C£f ²RÌ€2ãC ‹ÃÀÕˆÀ€ZÈârH@So‡±£ˆ(¤Œ„fÚ1Zm¶l­  pt†¬ÌxßÂédmŽÙ¨þvAëôâÐ+µÆº@”û€Åü…±:è!!@Ê(þFov@ƒ@b a›ÿÌÆæê£ö€ Qñ ¼.¼¯Ñìà ¤Âaóí©eï}hH@' Ý ß'‘ï¿R¡ @Ð’“¾/Ÿ¸ÿF¤ Ë&ev«À É»ç…× Eüw€Ñlw¨0 €Ä¬È‚ê!œPÄ1\´`ýGœ@É¥%É|.ÄÀ4HdÀÔ—º¼ V¡šY »Ù€€h ‹/7sýà° ‰¨N - ÷?ã¨üp g$5(Ae¾ì¸à09@'+%ïx˜8i5=_y@2'ä>QE¥÷mx@€hø<€Rÿÿí¿ç=ò €’xÞ@N7ÿ²žwâë–ûçÇzp paü>°èÔ3©lWI“CC)%Ÿ'7™ „PÃ^„æú¸^=)ÜuÓˆ —Óö î"ò%“ $¡ ¦,à ïÈHqû]ÀÁì Ãyn„~{¢õ‚˜À¤Ô“rPWIû ð­GëI€€xCu†pª¼@;Nd©Œ¼²À®ø1ûr$¸˜VÊ)bdÀ@HxŒËáÚÔ (`– b7#µµ^Ä0 2F†|uÒÌÜ„Ÿ™—x€@Ä0‰OAH _SnÍ{¨F!¥‡ûÖ €€(  ’ƒ Éß Ì~s8»Ý @2€ ÀÁ7’ŒœÍ¾ÜÏŒúH |˜^Y· À—ˆa›¤Ýwİû–€Ü¦w}tì4„ˆ`Îò„s®À@8 HD¤«•¸ïGã^@`„ˆ5ê­Ž&(k˜x‹=ò@Ã@`B/ž’‘øUðy “Ò©À q:|¥:r2þÂk@B¼@oË BŒy†ÃHYh+cSö™ d #–M (1þ”ìG£©Ú´èP\ÒYhs3ë ´1 „$$•У›Û´b¡ 'é`Þv€)   ‰‰@hk)jÂÅÞ( Z€8\L @-2k2¬.8 e‚¦? FOgø÷Ußvp KOwàô¹`;J]?¬}~rjo¢/JCb–”þÿµö¤àT¼%†–žžŸØ.@tL¹xMÅp ä0Ï÷?] !–†ÜüeæAÈA@0Á¤4â¶n°åÎà  !a|®Ù;ÿÕ²î@@N"!€?zL ²PŸÙG›èù €§€0BÕS†jdü‚‰¥ Ï&ûçË×ÌŠ@`b Gß#l¡WÄBf„ƒ1Å# *œ rl,ŸZ 'Éê|1ü>$ÐÔ éIÚ  ËI@0HÎÇÌ †€Ø˜Y`IÔo„ ÐÐ$ÃõàÐ~‹–c–×tH i†F ýÿ6 3@NMBÜßwÀBÐÐÔîçßB `'À;I1§nùOµõ r  éˆ,´nùO²èèÔ4†á<þm¤†ÃRŽ&ZMªÐ`ÒoÜg0ËÓ !€œTžž±w¸Mˆ Ë_-=Åú;² I¶` ‹!§qŠ7ÔdYÉ@d4!—Õ` ÀL¸„1¹;‡(x›€„0*œMGAYoÀíÀà€Šô( Jrax1÷åü­œ]@ b`„"ZyCqÏöYàv°è T ”Pj6ÊS‡5éT1~åÕ…Ý  À@bCJ@SùæÞy©0pf!é_mºs|` ‚x€ (01!£1,¿–ãµ€\ˆÔ†ŒkqÃOpûÏh i”‰EYo»eð˜»ë€€ !@J I'x @Nv@vP“Ò;søá÷(Pi !¹ ÿ‘n@Ð͵E¾|w€L’y`&‰Jÿ+Vï·ž pÊCááó€^À¢PÏÙRRa¥`Ò’ŽrwÜ>dÐÌM)%$äï¸}|”@©/ v@BdÔ%sÇ^00„ ­¶üûBA°„_ B:Å^˜p@:ÀÈd´mÖûol”PÄ|4¤n¿òTO£õ€i 9Šç޹Àßè„p*PÄ# ÿá× €›?+vY†,uÙ @ÉÐ@À¡ 8¯·Êã·<Ù€À €.`BH8ÄýŸ#¨.Ð €0N,ã àIÈ”}0@ÉBð€’L&'œq‚¯^@ŸÀN’ñIìü×€ e‚q`†—‰}š÷là! !“zÿß‘nÀ Êéá€Q(¬­‘¯ð`: @`ˆE³a›:”}Ôù`; ûþ¿0 2 !–­×äÐ Ëʸ €d8ÈiH¾Áëph¨nÇÿìÿÛQÜ€RC¤2’ ÃÇÞA¤4 @(41™¹Ì8p˜ÁÂa†MB2;û…}æ@.Ðbb FtmšñÀ A45¸¿PhkÖƒE‚aA˜#h z>:tøÝ 'Á#øÀr€>&†¥9ROíÎç_H ð@Ðà;ØBûôŸÄÞ8'@¤ Á!ˆáBr¸›é ’÷P†²OO6ôÁ$ÊJàÕ”$}$$cè÷€;Ô°†õ›0 \5~bbCCVob|аÐÇȽ`‹!—úý=µ€€%˜´pÁØ5È@ŸÊß|(ë¾Ôñ4E¿tL ’ÀtZ6OW –7s›ª>ßQüˆðÈEè4†RöŽùK¸E€Ôd£ä£çß_[@Ê&€dC8 ú¾xà›€€hPicY³þçâp}†ðÄü7ew'zÃJÞ¸Ýóã¼ vÓT€øêÙ³RuIüÄภ'×BÉñçÀ"C/bi1™†šjï¤à1-`ß1À]!„Òj²Æ»é`ª¢ÊØkï‚}í‚HbPÝÏì ÊGQépÃP4~¼Ð €3 B @ÔžÊâB¯N¡|0¼ãî x PÂßm¾?¨uÔ¨4„‚1~Ü|‹v£@@À"hÁ¥€££l8ü}è@5Ðj_3{Å0 e<Vq]8jJÙ)Ì5ò6Çï\œ4 Òi}Π tCü„^-jÇ<ÊÿåÑØ¸øh¨þ^6ñ €ÀBC!$„ޝÐzÈ÷»Ñ|¢y`@X&–Mˆ(¨`¸(‰d ••ÿˆð·Ô,h €¡7wV:®ÔÉOp„òB°~]–ùâ|²aIŒÕõx p†M*iC ¦˜þL€ 8Ð ‰h+§â¾íœ}ôÀ@º0&€˜! (ù|Ëä À0@à:Hbsöízð@±|Xj]{ÿö[¼4€™\šŸ²Õ"ac=ÓCHA¤"Ò7såòÈ]_æ¸À`€vCjF’Ë2逜 [ám{ T *bþ•qÔo½, 4¡œ¿óýp @CÉ¿÷ € ïÂ9>P.¤ÒÆ ë©<†öù0­F@¸ÈhQºñà€´ ¾@¢P…þ…µØÐ@9Ø Ha€(wøx@P¤\P ,3>ÈìÌĈ €È`U¥mòþ˜i{j?>ˆ@ ˆHù¿B? ©¢‘²1Ûm„eRðÊF)F;m‚«€ rt(áó€jð”’€¨b Éß;/<”„£'7Ûîg‡ô} p@W¸ÉEò1OAÏøã®øˆ 7úKBtÇæ<]ᢠ„ÜÅ”„‰Öà€`¯ý%d~;i`Ôê?¥P@c!Bú8éPê³€*Âie”žBRºó ¼@džüAœN€`&&}Ê!†9µ©@€d¡Eÿ|ç1n–T}ð@0ÀÀ ’Pi B6ß×™•p0|B¸3›lì:M¶Í•©shp€2@ÂaYù³éÿÓ€Îpˆ \¿@aÂëç@°ñT–ùçÈñBÖ__08µ@5 €þ¿Pñ2?tàÔxñaÀ>.¼/Ÿ°ˆNÁÐr  ^$GŒCç#aPuèþ ž +Ç€d°èv€?ý'` W'¾dâq sW´8à€ú€;”<*Ÿû4 W˜hˆ Äcà5m¾¼Â $c@`Àa¨‹^aÇ›üà5Þð1:ü(8èÎÐ…Ëoú웪#~°êè ""ÂG,Ÿ$¯Þ«Ì"Ább}¯¾_"Xà²|ô–N‹ Wû6‰ër8°4àiDb€5æ1GÄ1 -`¡qc€ìD'.¼ 9P Àˆ‡€|ÅC™ÀgÈ•á¬8PÆÃŸè:ˆîõy‚„@Ùÿ?òoóabÔ8AÕæCϳd Ï`rÍ*ž¼ÈG–Ù\èN’´ÚUyð:ÌO4tO‘ÄjjÚ¤ ýN­3%9¢$ ƒ s@2¥f‡þ½ ð¸ŠO«X°½ŽQõä 6Ϭp]' W'½À? <('ø «ÞîF¡PŒç¯ç‘ àtN‚ÌY<;‰‡ ,ˆOÁDúþ°9 P(õ(.4Pæ½ÔN"èp¯a“‡¨júþGn±íÐa$ ]y€DÑFÖ"¨Æ7`7âüx2Êàhõæ²0Y„XéÇÁÁCÌ™ÕàQZ>P9Äó×p>« ª j׳ÀiŇ=x,Œ>Íà`#P’ ñp kÀ£”øU…Niöõèöc`DàèåãàµèãÌ¥Þ0@}ÙëÌ > ³–y®:C J®¼ÌÓ@•¡B!æ טÂ@ÒäadñM [ ‘…“ŵ7*£þ’€ ÷‡ Q>xb| `#¯àÀ.˜ðÄîïň¯à5oøA€pq žÜq˜Àdÿ ¯çDÀÀ,_ÀèyüŸÜwœ ÿàÂø¯î;ƒ Ô@n! ²,ÀÅšúþ à,ˆÂªë‘Àip ¸9«øq8°x¨Àgÿ#@>.¿“ ä=qŸ×^a<9Gu±i„C€|A‚‡´Ä%«À ÄCEp¸‰x|:ÔXá,lÙ„¦O"r=¹‡uÊÄ€B @Oج®l`P €B¼¤÷â` @ À'?À¹böP€€\¨è~JÐ $±gb5` #1'&ì I-´À4ÀvpÒ]A‰Nq[uÀb^é I`6€Þ{äuQ`€'à!µ 0쇶6Äà€1 š¢Ñ I‰~°èø ø"PIMÄC@BA0¢¸aAØ‘‡l:° jƒ@¡Kß>ÃÍ©¤Ë„ÀÔ IE'37FäH½°³¸  d²7;©È0`H)% Ø$póÌ€ p4\a€ˆh8lI€A¨ 8 2ÝšV€€Ò€ü>°LP ˆDÀïöt%Û1“ ˆdЖ”††äºyº )-<¢€ÆJ]¼žŽ…% Ü^jÁ ,‰ »0ú~Øœx0€Â˜œ£p€`ÿ¯€Dðó;¯’Óþ6½Âø#@BµðØ‘áÄãÀ•´OXu2ÄÖœ‡@áÿ_!`/'€ÎPÿÉàp}x!†@@X8è‹K•ÉÙU0G;"L,„L Èb'O·=biä¢`¢» ˜Vâ+mŽÛT1¯Ÿ2¬ÙŒ˜S‚¬jƒáàNpv"À ùü ªùà×´‰¦e:À8'B0–'rt¯BC"©r¹ªÍ¤q°>Í{9—*•¶:õГXŸ@GÀ W'•"NO%“5`t ›Þ"Ò”‘ÉÑ` W'Ȳ:, W' )H²<¦"À W'3•ôúÃéM™hu#ÏÞ#ËtôÊ5Hè° W'Tªdi¤e)›AU¾N¥)GŸL¶> P W74Ð äE¶÷¥ÈáfZÇÒ”ÌÒâ¦X W'¦¦THò"™Òu9¤œ2"‘›d{‡V}éGFTµ3""£š’98 W'E)#“²”¦È²=%)YÖJl¥$ry` W'3÷¤JO&ÂʤNG–[ pˆ \¿@aÂëç@°ñT–ùçÈñBÖ__08µ@5 €þ¿Pñ2?tàÔxñaÀ>.¼/Ÿ°ˆNÁÐr  ^$GŒCç#aPuèþ ž +Ç€d°èv€?ý'` W'¾dâq sW´8à€ú€;”<*Ÿû4 W˜hˆ Äcà5m¾¼Â $c@`Àa¨‹^aÇ›üà5Þð1:ü(8èÎÐ…Ëoú웪#~°êè ""ÂG,Ÿ$¯Þ«Ì"Ább}¯¾_"Xà²|ô–N‹ Wû6‰ër8°4àiDb€5æ1GÄ1 -`¡qc€ìD'.¼ 9P Àˆ‡€|ÅC™ÀgÈ•á¬8PÆÃŸè:ˆîõy‚„@Ùÿ?òoóabÔ8AÕæCϳd Ï`rÍ*ž¼ÈG–Ù\èN’´ÚUyð:ÌO4tO‘ÄjjÚ¤ ýN­3%9¢$ ƒ s@2¥f‡þ½ ð¸ŠO«X°½ŽQõä 6Ϭp]' W'½À? <('ø «ÞîF¡PŒç¯ç‘ àtN‚ÌY<;‰‡ ,ˆOÁDúþ°9 P(õ(.4Pæ½ÔN"èp¯a“‡¨júþGn±íÐa$ ]y€DÑFÖ"¨Æ7`7âüx2Êàhõæ²0Y„XéÇÁÁCÌ™ÕàQZ>P9Äó×p>« ª j׳ÀiŇ=x,Œ>Íà`#P’ ñp kÀ£”øU…Niöõèöc`DàèåãàµèãÌ¥Þ0@}ÙëÌ > ³–y®:C J®¼ÌÓ@•¡B!æ טÂ@ÒäadñM [ ‘…“ŵ7*£þ’€ ÷‡ Q>xb| `#¯àÀ.˜ðÄîïň¯à5oøA€pq žÜq˜Àdÿ ¯çDÀÀ,_ÀèyüŸÜwœ ÿàÂø¯î;ƒ Ô@n! ²,ÀÅšúþ à,ˆÂªë‘Àip ¸9«øq8°x¨Àgÿ#@>.¿“ ä=qŸ×^a<9Gu±i„C€|A‚‡´Ä%«À ÄCEp¸‰x|:ÔXá,lÙ„¦O"r=¹‡uÊÄŽcä-À_0ÚãŽ`!^a ÈjN£)–¹¸É:¥1‡Š2¼Ä)jXþ˜SPñWűxHãŒ0*¼Ã…¸å49v;“Œ’N#s+ߟ«l{øT¼O<9  þÛlëÌ${LI;p¥Ú¶8óLe‘Y]é[n–ÿ8êþØœx0€Â˜œ£p€`ÿ¯€Dðó;¯’Óþ6½Âø#@BµðØ‘áÄãÀ•´OXu2ÄÖœ‡@áÿ_!`/'€ÎPÿÉàp}x!†@@X8è‹K•ÉÙUâ!ö°¡î~rÁ˜¼Â(š@že“èƒ$ XYõ¹€rGqtÞÚîÃÞÅó5‹‚øU®–.×$w^ǬÈ2IäJõ©ƒóp5 UŽ<ŸAf™f¾"CÝ{Wˆ(Þã¡ÒE ùü ªùà×´‰¦e:À8'B0–'ru€>õ^`cÿˆà×ÿnëëSŸÛ¹Ç[“Ï0IÄKS… V'CG¶êSí…»`WÐãÈ„ê\®j³ioö€p±Æß;˜ÕÑŸ`Ù²hH}×fdõP‘TÇL#‡št8ÜZóÂhpò•à:t’xú9Ú¼xà;AGŸ½€Ê8ý^%‰¢p:ÍJu)uѧ0í©n,å@ W'•"NO%“5iˆŸ!løê'±ÉãÏ ¯t·äy 9ä fµžÍ…V¦e,ìöp[hšÜùìÑ—c °±`?¯0õ1Ï µ <à9{è,yZxjé` W'iŽŽøt° +lÈQõÏç´p¡dx_ßÒ‰ãŽ'רŸDXë/ù&²=yˆáøœâdõ¨:ø£€ì“¨áÄp6.¼ÌtƒY½^ЃëÄ1Õ”ï$óÂä¿Pqãé` W' )H²<¦Þ'(|8ÄN,<Ñ„ðWÂ×u 5µŠu$>^`p,v“ÇûXë>ÖäqÕæ ‹{z5XøšB &¨ ÎžÌ?¦Y¢›;!jw?`Õd R \±k‹/¿ü‡F(t¡ŠÝØïK W'3•ôúÃéM™hu#ÏÞ7Ž‹2åYƒÛ(‰^bE»BaÞÅ,Ÿ„Â\Ÿ^c›œu˜ó¤?žm,ŸbIõæf͆üÎî­HD Ð*‚a0®”§³À`€–ˆ204š§Bz=c„@;Ð ˆ`1& ˜LBKJ~;Ä@PšPB?9|â°ðê?šˆ †ä'†Ð~kÏ>¸  H){m@@R2ö_«º@ €éÙÃFa¼p«° A¬ (¤#roFÔ®;RnX W'Tªdi¤e)›Ç`:ökxî W˜ )PµQÄXvãì+ÖF ŽƒÀ?B¤!( ÿ°ÐaH Íœœ@( ÀÄ(èFÅ’‰l¸†(’ih ÙË/çÈ^¢crO?n¢5Lj4BåáV@(b`³¥¥`&¸# „L(­‡e…Ú`Ð …b€t Û3ì°ºmcS-¤Ø W74Ð äE¶÷¥ÈáfZÇÒ”ÌÒâ¦X W'¦¦THò"™Òu9¤œ2"‘›d{‡V}éGFTµ3""£š’98 W'E)#“²”¦È²=%)YÖJl¥$ry` W'3÷¤JO&ÂʤNG–S;9 tèì8]g@°ñSgœx#ÄU X }fǨ¤×P‰‘ø³ £Çˆp;ðáu‹ÁgÁAl"“°t¨TH‡ÎF êÐáаà9²£À2Xt;@€þp vÌœN"ÀDj´8à€ú€;Í¢zÜŽ, 8ÚQ€O^8Ypû€¶08êÀȰ˜•àø< úê¤%Ï.¯!G0w[…“í8<8ë¯X8ÿаdÂbqp:¼J ÀDà×^O €§GÀú˜öðØŒØdb(qƒ€[p* #TÂ+ˆòˆ ÀÌÌø#Ô ‰á Âð¸•0ÈãX@n°ŽtD€jÀ‰Ÿ(‚Di€d|`x ÃÃàWªaÑË" ])`4|àj€T}LX2ǯ—!f`Éãß™G.¦FÚØp]ÙKô¥/‡¸ &²8‹z ^}È6(@ dØP©ÏWjƒ BÜÚun BÄÈà {Á‡þ¸|ü9¯q£  @•À?#"@4'ªð؃ `` ÈÑ^$nd°ñøq(,(ÑK @.R…Õâ@f8ŸÀÁüyÊ•x ‰áXˆŠðføÊð"EÐâ‡KÀBê¹|ŽÐæÊ‡ÎÈãuLut>" ú„.á`2€=©‚€|㎀€ Jˆñ l@gª¸ Ëp8a⡬"¦0ˆl<<+¬w–Ðñ!gˆ€ŽÕL"TnO±b —ÝfÉaÕD·8ar$¾l À¾¡OBÀ7©†„ßËl)èx€7c亘³-o­Klê%oÍ_]S1ǽê±Ã”@‡-ˆðòG {dc@]^ ñ¨€_^ tÁ^'K'€Ð/W€xŒ>à@á0€<€j+À7F”FŒAÐáuì~ÑãLò4b8Qª¸l+ÊÌÀ50eCˆ¡k'àØ4øÁ S€W”µˆ°ƒàÍLbˆ$c ZÀBâ"Ç؈N]@ Â•̈xÀlT9œpü‰PƒÖ(ãaÏôDwú¦ güDü@ȿͅ‹Pá`TÈyáölyìY¢…SÔÈG–Ù\èN’´ÚUL‡Ðàby£¢|ˆö#STYü|Þ£ÉÕ2Sš"Aâ24*VhêˆPx\E'Õ¬X ÞÇ(ú’€Û>±Átà v¸ä… dÿ•^îF¡PŒç¯<ˆo¢tbÉáÜL8@adB~ '×…,BA” =CÇ 9«¨œEÐà!V8z€6 gÿ¯#Ž·Øö€è°’†®¦EXˆ Ý€Üx‹ñàÉÿ+ ÔàF 0‹8ø8(y€3: QZ>P9ƾ¸ðYPX V¸žN,9ê #³xØÔ$ˆ<\ZG(ð« œÓíêƒÅ¨ 4m.;œÄZ<ïT³öFû1° ¢ptrñŠðÚ£2—xÁô;g©GÁVrÏ5ÇH`ãd UÔÌÓ@•¡B!æ ÔÆ—# 'ŠiØTŒ,ž-©¸±T ôà ¼8R‰ðÃÀÛàc}xp ‡Áf¼ñ;»ñb+Àj ßðƒà â0<¸ã1€Éþ^t@páðœÁAÕàt<þO€î;€Îða| W¸î 3Q¸†‚ȳh ëÁü‘A]b`ò8 n75xq8°x¨Àgÿ#@>.¼ 舄þº˜OQÝlA€Zp¡à`¡Ämq j@8ˆ†Šáq ðøu ppù„¢L;¨V |s!nøy†×s ˜hòÚ‡¨Êe\öî €ú QÀt}sp’uJceLB–¥€é…5|Pë„€þ8êa€Ürš»ÉÆI'¹•ŒoÏÕ óÀ°ñ<ðæ€ öÛg^a#Ú`‚IÛ….ձǚc,ŠÊïJÛp4·øÁÇW€¶' 0¦'(ç\ ?ë:.‰áæwY(?àójá|  !ÚÀ`G‡T™à3:™bk!Ð8ÖBÀ^Oœ¡ÿ“Ààú‚`€d„Ñ5ƒŽˆ°ÑûØP÷?¹`ÌS >iy”O¢ 5agÔ>BÅà¤.îÃÞÅ™¬\­r.×$wP6ArIäJõ0~n¤ ±Ç“è,Ó,×ÄH{¯jˆ(Þã¡ÒE È¿åVDxµiLÊ u€pN„a,NäêøàUæ?ñPX>­·uõ©ÏíÜã­Éç˜$Šâ%©Â‡…«¡£Ûu)öÂݰ«C"¤–äd$DÚÂÇ|îcTÄ|`»0úu3'ª„Š ¦:`à9<Ó¡ÆàÔÄ0š<…ex$ž>Žv¨ñÀv‚> {”qú¢Xš'ìÑAÔ§R—SNaÛRÜYÊ€ pdDù gÇQ=ˆöOx]@Ý-ùBÎyY­g³aAÕ3|¦ ¶°à»‚Û@ÔùìÑ—c °±`?©‡¨ÙŒn}¬èQçËÜ€wA`Êà£}8 {·û/ý°¾Õ ´˜¿a€“ú‚ V êÅ•ø¤îE•ÇSáúGP¥åú ò€ïþÂü€€ì˜[êpÁâÃ:0bR³Ýä @¼¼¢nHJøÿGò `@«ÐòPa %7Äž–ç(ÿr2z ÊÉ!¡/²wá[ßcT 'ÑeSÔÎï0@RLÅ€íŸmÝ<}适0h ²C@`£øÆÿ'Þ`` \CÐL‹s¶K·­Gà)l"#€ ÈEt'¥ﻹìw¬@ h RŽ„î˼ì0!ˆ NJŸ}'Oƒ"r‡ÃˆüDâÃÀOõ@ákƒº€…šÚÅ:Ž’©ÀF@±ÚOíc¬û[IÇTÄcÏoF«[eQ® ÈZÏ Àª°;cµhTG'Óe0pU8 ?ˆÃq00²øG÷¯ Ð4“ ܳ²M̼èé1` ? _'kè :C !“@ª9,y˸Aè@À€=G/ãà¯w‚¡ &uñN÷8~£õ€®¤° @©a'¹¢mè(°Ô›ßÕ€1+à¥ù¾€#t¡×|   €‘ŠÊÈÂŒ¾°!¥€Ä)åõôú0BlŸ#÷¢i p®0€R¸ ÉJA¬|àà0Y c!˜üÍk€§€Ç‰Ie—\Œ IxF>´„–BîþÈ)4D4üßhÍdöjÂa7“ ß± &Ï’Œ½lL!–bnèOW£ùè +‚Q  :@}†fþð€3(ÑðJûþßß]À¤ÐÀ‚{ A¢ï—‚<Pˆã_b›_J Ðh!”—ݱï;d€–˜¹´ô¶Ìüv?TTÑ €ì˜`ÎM&—ŠB óoÕ—ýÃÿÛW?FèÁ] ;ˆaJvé_ »Àv@ °( @@ÜŸÒµ¯¯~àæM8ɨ@³í_í³õ¯Ü@à辄’’W[²þ0,>¨þhÄ'8v&“UÔK[àýoÀìØ4†JÉ&gû÷ßfÿ‘ï³€‚À 1!¥8)û§òO Û@¨ R€_ú å8ð?Öä~.ò€4"¸fá½)OÇ÷PqÞ8mÀ € ÒR@¨bFòJ¶;¹@€ @3)€Àe'%[·qÇûô8 O€fL Å€ì°ôò áÁˆ&ˆ`; &´¥þWÿ„˜Ü*é-h Ä“HIHFÜ z?”îô·‚¨@ ÀLR:F§!÷=Cœƒ`½€* ÐjC Ì”vòÝôÇðúRpàTø %.ݼmÿ‘EpÔ¡ÿöÁôl˜R1ûüzí`' ‚»:?ÜUÐ `i˜¿‹cÍ]Ð À ÃK- _ž>Ì ƒŸÞh @6@ᘰÝÒGå  rOC¹!@ˆ—Á#ÌàvöœÄ‡’ä¿VvÏq4ðÈúæ,À`“ŸþÆ€l1Ü}  f€¯mÐx«ÚðÐþä¾Rð5À¨`j7ž>8í´É €”L ýŸ³¯÷£ðÀ5!„ݽXhj …rÒv×| € x PRIns®ã€ìé&€>Åä­–l®à0(²À’?½`°E€(ÄÔ²ŠÉW3ãªbE»BaÞÅ,Ÿ„Â\ŸSÜã¬|Ç qüóhñdûO©™°® #f)…‘áíùby:¦BÔq@rBŽ8ƒCóÉP³(s‘N°¢uQ võ¬IæÒÍ µà6ïQEpY ?ˆPK -º‚÷×¶ à€ßÀ¨j PIËZït PÜC¿ûÿ˜K¨Œ×0|Øò‹ýžÇt€€4À ‹+gJŸ˜ó¨þÆ^èšL¥GÍý¤˜gy@@¢0²q oú`ûÑ€?0Ùš-óq×Ê.b/Ò9-co­Z¸`İ,“ùŸQÀ%&€éŸ„D É T¤¡)w\M|C+¯uLBJ=’t¤¤nÈü}²@b´ g±ÍFI¤4–Ÿ'ÂiÐÒ€€™É¡¨C:õä!ÌÚ¼éNÆÿGÆŒ”€Ä31éF|¸À¡`P°I¥#á ¾† `4† Æ=ó @1»€dà„5t•‚°«è¼0ÀÒðb>~’0 o›@ CÃS»d(>%èAˆ1РU7ÅdXÆNò:ÀƒÞy?#ÎÛþ}8 € Hx ! Cí¹{7S,Û¼  ¸’ƒHC~x‰í¨ý  TA à!¨A5ߤÑ8Ä^¼h8 @5&¥$¾¿Í2¬2@BY 2hH Rk›m3“~Ýk¾,@>0a(¤)«Oÿтˠ1Û¿§ (Ê÷, À0RiAŒ…‹Öà€~PB97X±TÀ€è q CLÃã#ÑúÀЀ› ”5^ó€Ð„$ @tR²QÄ·ÃîÐ`€`XNB¿ÁW01Ñ!™#s{@| €`MÀaÝf,¯Gñ @r~”: ½;Œ|ãðëÊÞä"ðbJQ÷B2ÙÖnànðü½Š%º™Ã¯´ @)À rjFq½(ϨÇûeö›€Ä…¸è ¶€'C€ Ô!-„Ý ‚n!œK~ãíâK×8À€'Ä¡¨ß9Ûg£óÈ-ชÐ¥$°$fvr5Øx818iy¬&  €† /ìùºñð’aÙà €"¼á5¤„’ЄîèÎpª>Ø ghM- lo»à!À†Q5?î¼h€_’J,¤"Ý€ „ tðŽÿñ>ÈWl2ò¨¼¢1Q(èO3æäñÔ}âɉG™9;Ù€€éÄ¥V€ÜßÙ¡#uå€è â2q´lýä\²ÐÓ8o:ÆQ4$Ò™¿ÆAiÈÏ0 @bbR”ìÛõÑòð„Mù¹—›0 ’MyÑòÏÁW@ @ „¥6ÇëŽL A0¬„µÒA¤®w}Ãï¦   È@@bC&!ºþOÀ3©‚• U,E‡n>½L±Š³#QX ˜€ôn#8ªf)^=þÓ›œÀhñ®aM(‚Ph÷<è(ðmY$ñÂêd{Ê"‹pŽUŽ3H¢8‡/œäªÐ| Ü”dîŸ|ßQü5Aèqe „‚ÆîrqG*ôଠ€ Ã@,ÈFÿœ:ð €jBȘÒjP±¿g½` W‚© d"`h`Æûm±}ÚàÀ  Ã@©D  I[ìŸÝ¶v ½@ÓxÀ0 $†¼„ßämŸö#Qû@@×0(ä¤ d7æºà”VJvkž )Ô4°—ýÔÙ °*[á÷Ì€0&í$r eßN¼š¤ÓˆX!èÙ$²Æl}΂À3!”ï÷­@¸° É¥a‹ÿc¯ @€ŽX Èa%3õÖ€`È@ €`Zyy#›fL€†Ü!›”îœGÍÀ@9Á„ÀÒÊ3¡³(yê>ñàP™€¡0 ÄfÈFÛc«À €€€01A-³ý˜Ë?í}P0e€1Ô²oÿ£'Œ ß&`À ÀLÛdôa¬@û3ã„N@€j@0!'†n‚³‡­ØËŸ}8 kÀT¡¤Ûüµß.€ :Ae”€ý¸ ”G£•ÀÀ1@À€;©HÌ„uŽ}È7T)–à*‚“Ñú9˜Û}t€`@NB&JÄ:î.­Gô@@€~ ÒЀ*L êIx¤qB—}<5A@†ä †¡!©îžkÜ@“1,š¨Êåô.ö ;/À¯H×]ñ`€n@\1œfK²×ª/÷£…‰ ;/üýâXâŒHU„¸Ä"iX¼ûüê2áAÔàdvP%÷=Øü>å€2,¢’ŽÉùì§1Gë‹!$®½B—µ€B€`^CfþØVÄÂnQ¶DÀ+ˆe A¸è^ô|@@IA€/8BJ4´ 7_0@\Á€@~¤ èG-ÎÃŒ|¯«Ÿ) @`K )8j“4|  £@„¬L+ì¶u¾ˆ(À€œYÀÄò·ýþý{©•HfÞ¤L @è0Q( ÌÛ#6¿ÿÿõÿßñ~â`€:!f“³õu‚æ&’ùHßwn«0ÃPL JRva4²º¸uÀ`!¸´X_?(ýh@2àbùhØöºà@4Äħ¼¸ d5 ON‹Ò€-Ú ,`ûYyÓx€Zx XwNÜVG¬5;" äÔ³T€d †¿†#÷¨éÈ˸@b¤9iÈQ´z1_ÓrÀ@à1&£'“ß Á¼†7„¨TÀ+)Ùíxˆ±€7Gø^£é 4²¹µ@0¼4˜^_2ÎM*!£±+…@ K-[ŸŒŽWËhð )Ò”|Üu4 À“Kè_0ÛÍÒMÐHíîø ",X§Gß±—žTn (·Ï¶Gê½à@Ê!€À4š00“™¦™)Žn `2{®€Ø²…ãÍ2 ©„A09@.hGÇßfŠb……ÕÑrW bpxpë"®@½Éâ*Œ<ÿáë 8±¤m€[¨ ãÝÈú<*ì ?‡Ö€+ÐÔBÊÙûˆµTa|0´'¾˜iX4¤•ÎNû‡Ñû@@€‡†£†nÇ=é@B àT÷¥.I.ùxP ;ßô!ž¥[„5Æxýy€ °ÀP•ÓÑÙ¾îר¤J~Icç}ñô~Ä H†M!†dG^ÀÞ$ È€@ÒB)¿oó:ÙGލhT[|„'㔫5Ò^à1[ÉCz oÖ.`À@+0¤Æd†˜û*cø}Û Z I@|¤¡YøþG¸–à@¾m€€(&”¬“óŸ›Y€4&à(ˆ‹IÈ CˆŽuè0@—дfKî²Ò¦a÷ªJ1DÞ³o›0 $„0²eðÒûäv±Ü*÷à @€B I'™ïˆð Pàƒ2QÂ60pµ'w£p€x ’º÷ÖÁ|X59ÀíÔàì¢Ö„Óh´¤›˜†_’XIJó´÷ûQÖôº@N”þ—ÿúÐ#Àª0Ç]XXyŠIìw¹ €b€!zC HŽé‰óØ@` =%¡aìd7þ†` ƒH`1ÒJCñ¨ÎÎûáÀ€¬è° €uËFÉJ20 ¶Ü{Ð@~¾`À(M&+ìLJŽ2ù˜ p („d FV;v×Ö‚ˆR`ЀXLHÝ‹ÿü(ÒVm1ü>¸ZzMÛ±äj™À3˜d$”*öú@:N(†RRvNþÔX/§çuÝàâid>ŽŽ}ä€ À$›ËÄ¥,˨M>Y5ò .À@T¤!w€LŒ:Bz ã¨ú@KC#Ü@2Ô“r’³:Áp04âÊtf¸@ >ˆ+l5—Ú €ó"è 0@Ð%•È@P·üw;£ PP„Â9®Û?i€¨0Ww+gµž–˜´î½df“Ò‚nÿ»ô{ÀN@ïÊÈßÕ€€pQ1?↎Ṳb{lÊJü¤ ­)Âý€ ‡Ý;)¬ÈFFÛ+jRiOO] Ù4)žžNšfDå9¢N¦Üã¬8¤,z‰æØªƒ¤ÕP°õ/ð ÀåQ…ž}.'“£øû=@B¦AÁðú6”w`ð9f*¢s(Fn'’a sH“d"€vL,˜œ¢óy‡»QüÌ.Á`0Ha7LÅâݾÎÄ;Þð3$<44`ôöb™n+_û|¹Àvà æ&€è„X’ámq(  à 6B9-ûª}Ñýä0@ˆ¼0´ô€˜´ o'ÄAk@€ý!¹€L_@ÖÀ±÷Â@¨ &ˆà BVëbI€€nˆ…™³¹Øaq (€5Å7 Kœz„Á*ì`À€&p–P!¤õîŽ{kÈ‚ JpÉ0¤ ®¿³aáFµá@t`È€ E-Ô…‘êŠ (31HB0íšéf À£”„ðÍß/¿a:26Ñë$ €tL)•™öÛ8òŽ”½ 4 —Ë O-)ïÿ‘ÆH8Ä àœºàA#Žá¹ÖjFJvW¤0 T™†Zvôn` ˆ@&ÁrR‘ÿþe†–Ƨôñþ$Œ(@¥Ãùú UY¸àg¡&ÁDz/ú =ð‘§kQ«â¬(€JP!Îã”G‘™YTqT`£éÀÚù8ˆ \šèì8]>t;?ç€ Ç@ˆ¿Í@DD*~  5â`2€ø€oàsÈ€¸{`Ø À8°`ÿ¿‰uÌŸàÓÐ:ü:< SÇ€d°èv€?ý'` W'šS'ˆ°šþЮ 7`ÎOäR éúòÀXûÿΰ¾ ßñ,‹`àïò¨0ÿÄê{ÉÁ@Bø2ÁÀjŸÈàˆŽÞŽ `ˆÓéÁWó2x#ìY€ØÐèÀlûù»4> [ßÃYÞžaÇ›üà5Þø`àn¢ì¿ïm$àÖ˜H â$p«Ö€gÿ¸Ÿ`Ý+“¢À WëøYárDX2Âoü äÀ0 ¬ŸÀSøþè>º€i sÇ‹¿¿Xö&X0Ø žD÷ÿƒ >ØÀlˆ ‘`ßþ àFà€ÒÔ:ö€…àä}ü ËÁö:»ùƒüì¢|6)áO þG€}À<§˜dq¬ 7X G:"Àµü @6 @#á@XŠ Ýýo`GÀ âí`QÄ[²™®ž`àÜxÖ@=v@;·¿ŠðêÜó˜xuüœÐ `0t±â)\žX Wëh Udû¿üoÁÏþ?0 €?€~ÄKsnFˆ$ ÿÁƒü`°n@/v:þ~ b8r–}ýØ À…ƒGù:0x¯ÿ#ÁãαK@ìÂéî_#´9…€²ÿ x "1€3 ó@ˆ‚€>„á €„øX  oà`½¸üŸvE ‡‡êz¸ Ëp8a⡬"þfKƒÀ8€à ­`‘`ç”ð3טà¬ö¨Ÿ²àD‰×óð¹7ô` «>Á›þ8XòÇ׈œÐ°â0CF_€èñÐ A§þ' yƒŒQñŒdKXè\DXà; ˧A„*˜ð€Ø¨s8 àùþ5ž"<}ƒ0 ©æ güDü@ȿͅ‹Pá`_Ð>͈, غóì!lp\ ßââuqkõý\O“'Ý®\œ}ÓÛš€Âuš@0ÝX8€ØUü4ÿتM€ W'énÛŽúÝ=à>äjxÀ.{ÿÿ“ìÎÿ`€l×þK°raT÷Q8‹¡ÀBžÃ'PÔ ÿ÷ÿœF°v¸œ@îþf:€~Å‹Oû¸8_Ì:eƒH u‘G€mbÀ÷ñÿ€}Ö 6°mÅßÀÙw7ú¬{`Ætð(Y}›ÀÀF¡$Aâà×r°Â„Z …Äúz¢4$дp¸îshó½z Ž5`D‹Î"Àc¯í@?€<„…3YûyÁ—ü|E0ŸÅ ºñê'D[ú¢{ÊQ'°TêM€ ÷¹…â%€ü…=?€w¸|` À»¿"þü((ÿæÀáþ*Á·þŸÎˆ<>€3€X(:ÿû`v Ÿö<¿ü€Ýv$8›ÀÄb¯ÿuÙ<ì ñœ )¯ïàöG8wx@iü 舄þ»ù˜8ÿØàâ!Ûuƒ8 Å€}O€p Ââ$áð 騱ÂXس'LÏÌÊU50î XñÌ`…¸ áæ\qÌ/àaà4»4‘Á€Àjûø°0ÿÀÆ×˜(Ò\O€.]ü ?ò@ÑÒ`¸ nÝk¤à þ³mÔ& r:¶±{ƒ'ýÿ€¶¨…~EU¬<¿ÃP7ÝþG‹°`¿¸¡ãˆ±ð¿Ãïò ÖÑ0«)d|‡@áÿ}9`ÂA°âÉôðC  €0€: °qÑ“É9:ÒÄ{/Y 3¥ü ÀÇÿÉ jÂϯ²¼N¥þã ç­KaR¯¹œO°ÙºÀwO6Q½ÇC¤Š6 |‹þPU>Dx·ö›dB pQÖ`7ÿØ4‘îÀ^F¯ãƒ„¡' Ü€)÷ú8‚¼±ÇÑ`?§ÐãÈ„é“všÍ¶e,šb À€`90"…WfwüÄY`?Œ\{Ø  `kî9‰¸Å§FœÃ¶¥¸³• W'•JåR¶K'K§ˆŸwGýƒ¸ üC€^ ‘^î¸où /¸Àיɘ‰®høˆ`2€Ýó˜£?àX €6²|bÿ€å4ðÕÒ8 W'2!ÑÑ߃öey€uL `6À>ˆ#"Áìvxªm¨ŸDXë/ù&²=y˜y;B¼ ?ñÆÃÅG+‡/æc p«X¸±êuüs`€qaÆRl W' )H¸íÊoI"dp´Ûøœb,,ñÐ1ÿßhÌqô‰ònϱ5¦aÑs  ‘,EýØ·–8ÓO¤Ø W'3«u;¬:LiÅÔ ‚ L¼êúQ§‡W™ŸDðº[Wý‡Ä{ªÝB4qÁÖ _óŠx9óÖ¦JŽ3´“]üàÏÿDxX°¥W™³ çÒÕ E°°âxuÒÀ¹< Ç€¶ìááo{d»ãx·36¶8»èv°a¿˜8w äéÈ'°Ô; 'W ( bÿ4ØðM8};6Ìd W'TªÀÐ&êߎ‡oXF%FؘáàÒì;¯1 =Þ@è/x8y:ƒ®¼ÈÅ`ôE°ðk¡g“¤©Èμ Ž÷Ç ª… jó7ñæ µ‹’©k£+Ìõ‰ÇÀlèVލ/r#Ý<¨b.€Õæ¶@¨‰o€Ùò€|kÌäHì`6;€Y @ìãëÁÔ@×ÿ2»ø ®Ã‰æ¨ÕÕ@ W75RäE™÷¤Yáó€?O(ü{I0 I˜†LICôo·‘3äÎÉÎ^b }Aãä #˜䃡ÒómÌzð$ñçoäw> £ õæ¶1`ÛñqOAÑÆ^y¦ÙQ² f?W˜"8õ˜?Ü!ÅÄhðÕx,9•r(t*–w ±Är}'ë£ lQæÀÏþObÇb0yÕèbÀ?ˆ¤ø€H gpx’z¤Ùµ^‚x„Ê€høðõîðÀ W'”¦F“«`y/JS:N§<æDV€ø3æü%BjŽ2<ǯ2³A³þGæQtfZ€9¯ƒ‚¿®ÆÃŸµy’íc©‡Òè<¿á ãÇVêßÛ‰<|ƒa‡×jÔÈQU…Ö;>!…PözF},Ì}$AVÜOœ8>þÀ¨,˜@5µ8š½øàÄpÌ@P{Š€fhêðP !1àl> Y8ëø¦|D#lˆ€ W'E)#“²”§xˆ¶³ìÛR„טzðöµ™F[œey•‡P’5c•¥˜A¡çpçzñ-@È=L*@·²q®¼Jöú4pêÓÒÁxŸk>`RúM…Ïdò-€Ðt;?ç€ Ç@ˆ¿Í@DD*~  5â`2€ø€oàsÈ€¸{`Ø À8°`ÿ¿‰uÌŸàÓÐ:ü:< SÇ€d°èv€?ý'` W'šS'ˆ°šþЮ 7`ÎOäR éúòÀXûÿΰ¾ ßñ,‹`àïò¨0ÿÄê{ÉÁ@Bø2ÁÀjŸÈàˆŽÞŽ `ˆÓéÁWó2x#ìY€ØÐèÀlûù»4> [ßÃYÞžaÇ›üà5Þø`àn¢ì¿ïm$àÖ˜H â$p«Ö€gÿ¸Ÿ`Ý+“¢À WëøYárDX2Âoü äÀ0 ¬ŸÀSøþè>º€i sÇ‹¿¿Xö&X0Ø žD÷ÿƒ >ØÀlˆ ‘`ßþ àFà€ÒÔ:ö€…àä}ü ËÁö:»ùƒüì¢|6)áO þG€}À<§˜dq¬ 7X G:"Àµü @6 @#á@XŠ Ýýo`GÀ âí`QÄ[²™®ž`àÜxÖ@=v@;·¿ŠðêÜó˜xuüœÐ `0t±â)\žX Wëh Udû¿üoÁÏþ?0 €?€~ÄKsnFˆ$ ÿÁƒü`°n@/v:þ~ b8r–}ýØ À…ƒGù:0x¯ÿ#ÁãαK@ìÂéî_#´9…€²ÿ x "1€3 ó@ˆ‚€>„á €„øX  oà`½¸üŸvE ‡‡êz¸ Ëp8a⡬"þfKƒÀ8€à ­`‘`ç”ð3טà¬ö¨Ÿ²àD‰×óð¹7ô` «>Á›þ8XòÇ׈œÐ°â0CF_€èñÐ A§þ' yƒŒQñŒdKXè\DXà; ˧A„*˜ð€Ø¨s8 àùþ5ž"<}ƒ0 ©æ güDü@ȿͅ‹Pá`_Ð>͈, غóì!lp\ ßââuqkõý\O“'Ý®\œ}ÓÛš€Âuš@0ÝX8€ØUü4ÿتM€ W'énÛŽúÝ=à>äjxÀ.{ÿÿ“ìÎÿ`€l×þK°raT÷Q8‹¡ÀBžÃ'PÔ ÿ÷ÿœF°v¸œ@îþf:€~Å‹Oû¸8_Ì:eƒH u‘G€mbÀ÷ñÿ€}Ö 6°mÅßÀÙw7ú¬{`Ætð(Y}›ÀÀF¡$Aâà×r°Â„Z …Äúz¢4$дp¸îshó½z Ž5`D‹Î"Àc¯í@?€<„…3YûyÁ—ü|E0ŸÅ ºñê'D[ú¢{ÊQ'°TêM€ ÷¹…â%€ü…=?€w¸|` À»¿"þü((ÿæÀáþ*Á·þŸÎˆ<>€3€X(:ÿû`v Ÿö<¿ü€Ýv$8›ÀÄb¯ÿuÙ<ì ñœ )¯ïàöG8wx@iü 舄þ»ù˜8ÿØàâ!Ûuƒ8 Å€}O€p Ââ$áð 騱ÂXس'LÏÌÊU50î XñÌ`…¸ áæ\qÌ/àaà4»4‘Á€Àjûø°0ÿÀÆ×˜(Ò\O€.]ü ?ò@ÑÒ`¸ nÝk¤à þ³mÔ& r:¶±{ƒ'ýÿ€¶¨…~EU¬<¿ÃP7ÝþG‹°`¿¸¡ãˆ±ð¿Ãïò ÖÑ0«)d|‡@áÿ}9`ÂA°âÉôðC  €0€: °qÑ“É9:ÒÄ{/Y 3¥ü ÀÇÿÉ jÂϯ²¼N¥þã ç­KaR¯¹œO°ÙºÀwO6Q½ÇC¤Š6 |‹þPU>Dx·ö›dB pQÖ`7ÿØ4‘îÀ^F¯ãƒ„¡' Ü€)÷ú8‚¼±ÇÑ`?§ÐãÈ„é“všÍ¶e,šb À€`90"…WfwüÄY`?Œ\{Ø  `kî9‰¸Å§FœÃ¶¥¸³• W'•JåR¶K'K§ˆŸwGýƒ¸ üC€^ ‘^î¸où /¸Àיɘ‰®høˆ`2€Ýó˜£?àX €6²|bÿ€å4ðÕÒ8 W'2!ÑÑ߃öey€uL `6À>ˆ#"Áìvxªm¨ŸDXë/ù&²=y˜y;B¼ ?ñÆÃÅG+‡/æc p«X¸±êuüs`€qaÆRl W' )H¸íÊoI"dp´Ûøœb,,ñÐ1ÿßhÌqô‰ònϱ5¦aÑs  ‘,EýØ·–8ÓO¤Ø W'6˜ª­|ã£‚Ž­ >%²ÔÖ?š<\…€zaZÇ d½yˆåf¢%ŽçBÀd:AAàW¢|ä¾<„Ÿ,\{˜(Áš¼yê`2±*MZeçP§Ôj<:¼È<ú'…ÒØ¿ì>#ØåV꣎°bÿœSÁÏžµ2Tq¤šïà÷ú#ÂÅ…*¼È=œèX—>–©,}…‡î–È¡àn<·g xÛø ØøÀлù™°°ÅØCµƒ üÁÀ¸Àcÿ'NA8}€ ØQ:½D ù¦Ç€²iÃ騠¶`ë À W'7ॖsèÏÍ”"$‚}zó3G¯‡X\“ín¸ž»¯0JãÅÇ)RV{ˆ N܉uæ$>0RÀd¥Cº…ÐÃÙØ€lžëW·5`-c¸ðíjr)>ÈÄA¯0É*6ÄÇæ—aÜ}yˆQîòAxpûÁÃÉÔuæF+ ò-‡ƒX <ž íN@8uàdw¾8MT(SW™¿0U¬\µH;X•^`¬N>gB´p•A{‘é`uDëv>¯0°úô @tH |Ï”à;^`"@`À°ÜÈyŠ`^  0¿øpy…ßÁ]vO4 @>®¨: W75RäE¼Èžôc°6,€ àQâOÎE°Ýט•ðkÿ‡‡ÄCáðQŒ×ëÑ-ßoü•-ø“1Ëu slëÌIJ²zÌ¢!4x¼^ƒ2‡0üEÍ!gf„«¶'ÞëÌA¨<|Aäs3#°“ƒê¼ä sv>¼ ó þ¡ µGc×™Y Ùÿ#Žs(Œº3€ ­@׉ÁÆÁ_×caÏÚ¼Év±ÔÃét ßð…qã«uoíÄž>A°Ãëµjd(€ªÂëŸH¨{=#ô³0ô9Xq<pàûø8 °`ÖÔà>jôp`ã€À1Aî*™£«Á@\ €0 „ǰø)dã¯â˜ñŒA°"" W'Oz@Q²ò¼õæ _0•ÔòMüñLàD‹X€ý/x値W™‹uC”p š¹L>Äp ®¼ÍnþI­B,,Žö½× Š $üñö±Î ¿â$9Xƒfˆ¥Þ"-¬À»6Ô¡5æ ^…¼=­fQ–ç^eaÔ$XåifhyÜ9Þ¼KPòS -ìœA믇ýŸþ#Ü:´Ç4°^'ÚϧXÔ¾“FasÙ<‹`4l16*¼™: ¿£ŽýÙ>À—óþˆàrÍ UüS€5ü>ÌP  W'M²!ð€ð+H ŠPy§Ò: ®ÀÄ©L•<²Z½ñÇ€×,RG3“Á”Bˆ>„Ø÷'Êó1ÂEgÊ£Ô°h(ã̼å™ÁˆØwê¼s9Í…õ…ÁT¶ñ(9R±:Ü*8:¼¤©š±`v–z]œ=ü ò#Î>ˆÄ`Ùò¸ì²½Šà™ÄI@-xÜeü ‡£â0|¡Æt€1ô°¸‹S˜ ø})H‹”¥".R”ˆ¹JR"å(üu".R”ˆ¹JSïâ.RÚâ.R™ér”§ÿD\£íý>þ6xÙì Ôšn„Ó¡0Ø|²76Ônjo¼Û'xoãæŸFÆë¢;Ò"å)H‹”¥".R”ˆ¹JR"å)H‹”¥".R”ˆ¹JR" ø})H‹”¥".R”ˆ¹JR"å(7ccËFˆ±H¤5Îö€ `]Ø4š„|?è‹ÍK` @à {C+ðë9ȈyÐŽ¢.ºM€NÀúñ€¡€Mq´˜ì™ù%z!”ž¯‚â,R;D—¢Ø£j Ô¡¢ãj Ô}GÑj Ô}H‹©JD\¥)söÔéU#ÐñÃ}ãÑ÷¢xÏ)JD\¥)r”¤EÊR‘)JD@ ø})H‹”¢Ôˆ¹ËÅgþ¶º ^``€…! `  KˆGñÈ i€4i¸`'&ñ(Ä[¢¼%À €d HY”ãsb}÷0@¡@`€3Ì Ù %ò93„8àžeëÀ Á,3@¤½€€œ1æn^ì±Áqù¼x @0‚Xá£1!$c;ƒG7sÕ@) @¦®Ð gÿ˜[öVëâoÒÀÀ€!Ä3€ìødÞZsà†£|æ¡Pÿ¯‹( pÐÐì´¤½Ê_J~Ù¹é;9 0² A€1B Ia¤ÎZ„ü°§¾¤@€‰¤2À0(š·e«7<óøœ×É À ˜ŽQLŒ?lÌ.ú V‚ñ`†Ð)ÒŽ5ÂKš"þŒ Aà K(4U.ZÂ_6ì­Ó˜:ò@€h ààrlQÓЀžâM º @Ž(šª Ä.‡-Ö€£µäAh"t¢0²1€HÿsÍÌ-ÜØ‹` ôJÐ,t€<ØÎŒ‘¿)±íÿÚPÀPh rso+ü|à,AÑ4 ËÐ0`ÐN¸¢Ÿ¨ÖCóï¿0 ¤ ðà1³Y OeÇD_”@ @”ž„@Ò_ûmÒ€ð?p< ° k€fB! Ø7”±»ìÿ3óëïÀ1ØÀ;á E¼ð 0“@4¼D¤üÐr[ž¡ñù„Ð j‚@B`à:ÃPZ²ÙNE®8 eôtwvº €*RPpÀ cù0o~éqŽiª¼ø`€h ˆBÿ^"Ì0#1 ®'…Ø€<ˆa€' ü¨4K^ÀÀ@¾ Fáw€h Z€`¤tÃPVÃþÖ@Ê*&4 O)9ò7Í–pÿ{à@¦ ` RÃDÔ¡+oÈÛëŒP€ €–„¶çþe怈À¬M( )ÀÆKÿù˜P]üë…‚Àbdâ ¡€L·/pÅ÷oµP@ÈF”§€—–,ƒÀ@ÁNVXÓøüŸŽ»‚3å[ÌH >N‡À!Yþ€ ^€0ϱ@T3œñ«±€dÔ@ç - ï¹@p B U8¤üû¼ 0‚z@ 0¢ ÿ>ù¬iêFd0‰ )$´lê]Þ €ºà$ †tlê_¿ ’ô­pü02E¡;¾sê½£•þù¾½°ÐÄ“Мßv÷)Gj<çr”¤EÊ6¥".Sÿ½(“¢.o½#»xD\¥)r”¤EÊR‘ ø})H‹Ÿ?¥=".Û{ÚxrÀ`àÊAcɉÙóïþìrïí{@€E !@¢he”R GÛ$ôÿŒÛž%Qú5@r` À©5+å–ŸùËê"]2ɉIm”÷.€5 À!!”B;'ì.¨‚`T;$ ‘b/Ï‚,à:ܤ¥Ò‡l{ü&üô€€TPÀX‡Šåd3|{°óﱂ˜  ð`!$Ä–4´2”ê‚oƒìà@4*@;/! 6Gå>ÝjøÅD_*¼È`À»€VBGOß Û*ô€š à$šB× Ü¯ðÑ«ìF»  ¤Òøh ÀÇÿ}‰j ~0˜À … ²SŒû±)Ø>Æp€:(” Ä‡›z @.À–€À“qx! -c÷a!÷šTà“ 1 %¡ Èÿ>¢.` (𠨋@ÔC€?¾î ÄÀ €€f3!\·ß¯7àß!'Èá à1 (®‚“ÊGëéÈÿ(u÷À@€Y p#Z‰a‰W -‚Ußõ¶PsÄ_Ò@† ˜¾9ãô„À rƒPâuô€‚Òˆ’ùîù?¨EPÀ@¤ˆgİÐÑ®·ý¯¥  °pÞQhœÿš÷¹3ß΃pAx.B‰¸¼¥ÞÜ SreÈgü§¼ðP c€`rŠI4†RãR»ˆ€ h\Õ²JGãþÄXèúù¾¥`€˜R²I¨Nâêòw¹ -¸j“¹ßwÓ¹OŸR?÷”XÛ=(ƒ©r”¤EÊR‘)JD@ ø})H‹”¥".%¶q×ÕA`4ÐŽPÈ&·(¤þV}ñ¯–jMÄ —Àò? ×ßÌ5À  P‚o/Ìß©—òÅñÑô°@ÒÕ ;oßðž@@-@vÍ÷îœv~y•à É¥Àbž‡Zxîå`®p À£ä÷-afÄ_ÊÁ´˜00À'HgÉ!! ÉNc›š¬ç\ @‰ \˜À;+ÖÊÙ³(~;©|t €üa€x½‰A( ~ÌÎ’Wgü{Ð@€nB°ÀCºRŒKJœ×ç."ûÀ '@®A7’{ñçž÷h ‚xô€íÀ-/oÝIê±×P‰ šrÿO$óEÖ ™Ëãb/Ê€Ðð 9LKGÌúÉ÷`@€`ÔP·,å¹LœŽñç}a$Ò ;£ý°é €@NBÃX_"x‹øð ^‚@@ @$ $ûîWC)Ö†wëê:úH `‚q` ÀbC/–4jSÏ_~uRZÐ3†¥„úÔÈ`! C~—ñ’rÁŽýW˜ @4!€=ÌIÁŠ%¡l.é˜ €ìˆ C2 ‰KýÕ¸y—ÊTÈ`1,„£ñ¨ùOŽäè‹ð`€&8pÒRwBiÙ[6Ê^¼°à@ àÎXjvSìõ€À € p (baX¬¹loe‘®Ð ]¹`0·`Õ#$ïóm@à ™aNd¸Á` @b‚Ÿ; ç^@ `Iá%fÝJëÂí…‚@„ı``ÑÆ^ô1Áì†zZ1³óx» ' €†¥Àn“M÷”p ˆdÄ$5x]óÀ Œ'ÑEÊî¹·ò°Ð@È­€&îã•lV: )(¡;ï¿V8@ëé|3€OòÉ©a5€T5Àb»†§»›ìH@€„ bwåÅÜÀ&"òxc°¾A¾ Y‚pFÒ¹ËkÒ?&àÒÓ÷7Ðà É W§úÌ~g>àxø  ‰ˆ B²3kÇT¸˜¸EŠQE!³­ZéAƒx P'ï4¸A¥€`ŽÝH"]€@5@M8 É€[÷øËÅH Ä`d€X[dÊ:ú@†x` áÀ¶ßcŸ{@.I…€ÁIB¶vøÂ}ú ƒC ãwœ¤·¸€ €fM‰OÁŸeÓˆb €á&™~†ˆ@€€š”$¤«óñ—Õdïd øûîÍd hì d ù•›ýoH„Ò¹Þ`£ðö`P0€™Et BŽ·¿(€h²€¨a†CJpÖ_ýƒßÞ0 °À¤"‹Éßýº¸ûë Àjé7 #^,8¤â\7·Ù]$ëÆ@Ñ O:ˆoíöÃzÛŽs*,­¯Èä­¸Ù0$Ä''uUó¾¼ ÂiA¨ÉGÝça<& ÉòîúHNNT\¥(—Ú:¢å&Ä1‰Î#K¾ú2rN‹”¥"  ø})H‹”¥"/@ k€‡h¸RjR3 „ߘ×~–üðÐḴ—‹‰ ko±"üî€ ð€@1n’ñXø5|xΠûôè P€7à!n¿ãI¡©Ò €” `;Éí·Ã_}ûœ?>{΀5l@ÕÀì d'¥Z2ÛüE±Xš2ŽJNìG¹€€”Ø[ ý æ}ï쎘 %„|ÎtÉ ª6Ã=ó0@ÐÒÀNMIeGq½H»' †–€t“@÷¼@ªB’ІÃõò ðâ@LLAdÒ1ÿ¯Ú€ ˆ)@ ©{a‰¼i0B^Øù#{î@¨¸b_B¤ïÇ ŽªAP³”ë" ]2&oÀ+)BðY÷íLT°+ѱIá×8 Àv¨i[“aœëÄ€"Ð*ŽQ,Nê$+ î0 2`ó!$27uåfÊVUÒä0ÀLL)( ,o0g]ÜŒ(0…  âû}‰]ïÑ‚€ -` I¡¤$¶n¼®?^0d‚! %|Æ5P @4& 0 ˜’ÙýUë€)RC^ž[’¸Jß Ç_HB€!+©,5)Áޤ~xç×ÒN =BIA™ûüqáWh8 ,†ºq@SãùÊ ¼œK (72Q’'^€Ð@)t÷~Y1'š—uäý~üø (R‚7ým¶µ€ìNø‰eï|à4°DÞ?ˬ!€8!’@¦ÜS0S]€'àÿÊ-vûà¹`Ûúh@0 9i+æ8@$0'+rÒVÉgqg¬Eą̂ð §Ä†Gß6Ë]î @2( RòŸÞ¨8BÀ O’B/ )–Ždœ~L Á䤃Æåû™ø@c0kÿ}ð€€7b‹/£ulž«ˆD@3vY­‹ÿô;¿×8 @Ç̆R ÎKR H¥BJÏ~¸xŒ¤¹à2°£¾º €hð À™‰»îÎ~¹efEá2 &“@`RI»¡?o÷"®Ïb‰:”îöQvì®Ïy§ü38ˆ–ºˆèCMtùŸEŠR’ˆ øûhâÞ!¥ŒË¡0¼kJDšœ„~¤ Àà äú c„_g_û+kô¸ _€j*‰ †þKJø}ð€@€ t€h †`ݘ1-Ÿïÿß*ý œÉ`Ò_ëÿò|E€D$ÀbVHÄ{å@€bˆôÈ…„ºRSv8åÛê€ÀUÀ”’ÌN'{äà€J  쀟 ¬О_ëìÊ?:"þИ…€HB Áã3Ú, €LF‘e“ ,¼—³ü*ÜÐ!Á¤ïAH ËÙ“‹@Á ¶P»˜Ð51ÅTCC—ŸgÜÖ?D_×Á(¹P¤0ÅýËO|Se­ò޾Š€€Àˆ ©x ÏÙ‘ïË  €\ð” ( @ÂËe~Œµ;Þ¨„ €Lrøº”œSœn=¢/ô`@WÄ›òB,ön޲p‹œø €jWH` ƒS†>خ㈗Ɖ ;Åâ F-ÂJfeç@È€pÂiA½;n1foŸì¾æD_éP €ÈìÂK ‚JÅ;ºî5P ‰½ Ã8î«óH S`à¡„Ô€€˜ŒRq9$åíÎêû¯§è GÄ€ï I5™J¿Ã¢/造T ³:#•òRî0°@_¼D4 ð¼ÎÁÅ9U€È¤ÒiHH’êäŽ@ˆ¿*À˜ˆØGJz>ư€¡÷Å ¹ P  Öù!‹ëýYñ÷ÖÜ€bø°(XN$3ï`ß°À`‚ËAhø­³ß7SzRÎÆàÍJ÷ŠSôtí;k¢“©ï£}ô ø˜ ÿA^` {öpÕ€Ä3¤¯i ,°þ1ȱ“wÓ€bMÄÂi¹€PšKF­JMå˜4]‚¢/ëÀ §ð“:Pܤ£gîýóì@¾äY})ïŒpÀ'zB””èÙ#Ï[ußb!€0ˆgbRT*"Ø@ð(^îmÈ" €.è%҆Ɖïu° ð=¼8;@ÆBp\Eø°@*ð @`VH R`îø=€ÝóÐ@l RÜB) Wÿ†|â[8—¾â¢%PÅŸŽ{Á‚I@p @§N&ƒÅÄ_ç°@:+ÀÀ.GOt¡¹ïˆê°ÞŒI`… 7wp%yÈ‹”¥",“HA€T®PjZ9ûçÖð@I0B‚ù È@js Û2²”×>‘ë@ Áp€Ô–ˆ[ü¯Æ/°¶aÇ[À  SÀÐo!à åŸý·ÃÕÎ'Þí‚ c@@)|’€nŒJÿ¡Ö¼¥Çûhÿm} €,ÐL@Ƴ¾IÌ ~¹€ ˆâbCtP °fÌÛ#:ÿ_P @@…!“bqD4lµ;³»­úwº@€ZÁ €bQESvýŸRªá¹çË]ü@x“’ahóô8[V‚@@) é9 slœçN½ø J`À €Ð´tðÇGIjÊ9KUìÁT À€99 (Õ?wØaj4æòá»håí¯å€Ah¸ñ %%Q·e–—'%‰ÖP@@€tÀÞ‚X ‹O` Ð1݇8ûôð@«n°*”ð—Ý?’xñ6` @nø†RJÙhoŸdüh™âx-–€+Àª€è†‚Üåå©Ô>ªûp ,‚ø@L€ €…?•Р3ÖÀß5@@‚\JB…ì5‹/-=(ÿq‹’ ÉŒïÍÒp 3Ð$Ä@ j Bvûîg’R¹JR"äI¥àÂ’ž¬ü+À€œð@Õ³£ÌdÜE†óµ@!¨0‰¤4œQIHVQ>ú€¦G€trsš×¡^RX K÷ìà¢×–M C›ÅÝp*_ /÷¾ 4@ Àvp–RxÌž¬q÷Û‚ð gj˜!¡„Þ3%9·î²hrÓÜèða¼ð¹Êœ6T\œH÷v&€Ä›ßt‡^¦Ø W¾I}Ö§¾ /Ë 1HßÌäÿy@ÇÈ×¥ É!9iß~ÁW™Fm¯˜baa€€§-Ƨ§¬_Uñ€Æ ¤ @*7&¸Ôô¥g·ê¹JRóï&ÊÞ!¿4»Ñ9ôÓ»z“»&Ø '’þ’baLŸå‚fù ‘ |RÇø øÛéƒ@LL ïйilQ ‚&Ä,rbP{ïªé~Ø$ÁÅ ª*@Àe VCõ‹z¯¢€- pjK@ AL!؃|(ÉÍóîg¬!€.|Hh ‰…þ®è<8è‹ý @¨~0  ~È$’ºÅœ¡Z€1 0 :K»?ÜŽË+ßœÒL°½Ð €u÷ÍÀ±u 'ð ¡(,à;fFÙ„¿'Ä_èP€ ªHe#€À·SîWRÄ^ Á´4 @„œž1ÂI‚B¯œ àÄÂÉdÀ ¡ÀY áj#Y@X€ƒ9„Ž”e'ís¢.Ð@:*À€.FNd¥1͈ë°Ómµ".R”ˆ¹JR"ØP À:&ËNB éÿ˜x}õP@€] 7 ;(07'd'8Ö;|¬¾÷€ à@Ï!Åeš@u¯½x bÀ€f±¡¸’“\Ò<É©lÓ--~ˆ3@Ã@€Ä7$³ÿ8]h  šŠ ¸¾®ìç›mÌ´€œ þ5ûÜðÀ(Y¤'1ÇŽ•¿þ¬¿| Á0d I€7à8ù·ã±:õ  É TOëæØ€€=Ha3£¤|x«®SÀbÏ_„÷òO÷bzSÞRbK);ç¨È0ÀNH)Ë•¦13Œf–ù0 ¦€ AÈFÁZø €&@€&&‘›V@V¹JRš.R”ˆ¹JR" ø})H‹”¥".RŸìnŽ +öÉGã·ÎG¿ö±JR"å)H‹”¥".R”ˆ¹uÁxøh €©A‰J”töÇí¾a÷"ê‚hàÐ @rS|JJ>î³ù9Ñο¾‚A °*˜ KJWÒ—P¾<Ÿ{@Ð)€¨ ~Ü‘o™` $€œ T –RS¿Olƒ¿çÎö`Üô$˜[ÔèãÄVZ;Ôÿ¼`€ÄLX@1Ót¹hÄÍׂ @BI J,È !l¤,‘¸â=¨P(Ø Y0ctú0 oš‚° "@ €X (d%(&}Ó·rFÙJ"ŠW’úÿHè$€< 5Ê;ó;º` P4s{ç@ ä0^”LS¤Æ;ó^ì¼ ` ‰¡¨ Gß™4£ï4ï½óÁ¤/@b«¡!„4•Ðß}Øë–@‰nH@a ' øc|7°zïa€+ Ü’O¢¨þä’|ò~˜ß¯ŽN 1kË$Ô¥ÜÿýÕ½ ËtwÿÄ@P €k¾dÜÐ@.@€jßã9¾Ÿ Mç°* @¦.œc›|H&4;!†#!+R•ÕzÐ@s"8Àa—Ê_G=\s ¾@`ÀÀ ˆE€Ü„vÙL€}I0¦ô”‹Ä„dm²¶Í©JS+•€@0@¡K`ººLš‚I(¼ù9¼Èd"€vÂðÔ'7×Ü/ ”‡î:é€Ä ËéûwyÉ…’P„‰Óð÷ä$8ý®à`€vá¼·B?=Ñz€ ALàRjI¹(+¤ýÐxV¿ZBÒíÃ:þËÃï>€ °À ”1¶0Qö$>]ðböäI222¶Â)L@ TCä2»§í²‡w>€@F|P€ì3ä—öFQ›¹÷›R”¸²¯7*å)H‹”¥".R”ˆ€ ø})O×r”¤EèN^ìÛòué@‚Vhí P²k·û°ñk¼ø gôàÁ£—#_R À$0#/#Œ_ÊçŸ×y€€xˆ )I40šŒÌWz€„Œ €&(˜LO@NÜ]üè˜*À4¼”CIMñ'¥¹Ê?Ü€ €€Àò²HA¨KçløV÷ØÀ( ÀtY@õ3„ûÌÐ T††“1`;gÛwOf^Á &É ‚ãü<9í à˜‚` [²]¸kð¶@d"€ºÒ÷ÝÜ‚ö;Ö P4© GBweÞH€vĆ'% Ͼ¹JRtÜ¥)rp @2&^ !çÉß/;y)~¬0ÁwbXie±{î1ócÞ퀱@1) ~“C1¡×Î’Œœßo‡|ñÀ:!nø˜¾7‚ú7šû €€ ¤ÀÈ(443ÊÎÂŽ>á$ L²Q¹L0g9¡¶Ô–ÛhÛm~”)Á À Pš°(„tô,¦Ù¸÷},,ADá¡¡¨Š~ra×ÃÒŒòsÞÖÔ 1ÉÄ2{¥[¸wšJÉŸF÷ú@8 7€bd§ I?h€ 3€?&þ€ ’€u¸å_ž/p@ KJ@Â8Þ¼’³a9¢«Ë ä–5`¬ûíŠ9ƒ§È]à _ÛÀìé ¡ÀL[ FY_¨~UâT"I¥€Ä˜Y4'B'þfíö·ÎÀð ß &}¶Ê+~øãõ̸°b€tB Û3 ¤oöö’ ›F+kèØ `H N…†l…îÂßæ:åÒ’Ù¤uÊR‘)JD\¥:r2þÂk@B¼@oË BŒy†ÃHZ ØÔý¦CÙHå“CJ F?¥;î§j ÏoÀ|›|ìû€ºÈ žVéw¬È@ôâ%¡ºLh0?-8\ ¡¹`{ñCͺéJYÙ\¥)r”¤EÊR‘ øyÑ~ðùô~ú"ÆûÓö‡íz€ @aÀNÒ¶wG¾Š€€Œ@bpЊNN—Û÷ëQÊ{æ@; @nèg{¨BD Ãp ²zw1î @/-, PZý¾¹ïwxQ@ÀMÊIøã[ã¯ìÀ;€ @RQ5•÷ìûç³€$JMÑ ?7ÆÞD0'(†YD΄¿o‘±®:õ Áô¨¢å ,¬³…œeó`€ @'ÓÊA7Gù¿c=ô À €€$ßø¢Ò»äíÝ…ëñÀ€®D4€éeö›ûÂ<Ì  @`CGÁ(Gìgû}l€5Ô@ Ɉ Ae|”>æ.ùˆ !cÀ5xŽ5ö)yµîÐÀTÃ6oûüw~*ðA$hh Q P7§¶Í¹ù°»çÒ“ìdÀpÐÔä#ýêíÿl¿ï*×ýµpð`€Ò°†§n•ð«¼`$ð €P´ Éý+Qªú÷à~dЀ욄Q›>ÙþÛ?ZýĈ€+èI)!…u»/ãÈÓéÚþhÄ'8v&“UÔK[àýoÀìØ4†JÉ&gû÷ßfÿ‘ï³€‚À 1!¥8)û§òO Û@¨ R€_ú å8ð?Öä~.ò€4"¸fá½)OÇ÷PqÞ8mü€ J(Í% 4 †$o$¡›c±¸Û”è´À2X vRrU·ûw¿C€ødÀÐÌXËO Þh†°Òa1 ;J_åøI®Ð@P&€: I4„”„gc÷ B^þS»ÒÞ e'1H震Üõr ‚ö¨,A© /2QÛËw×)JN.R“€? ÀQ)víãoüŠ+†¥Çÿ¶¶Ì©ýþ=v°‚A]î*è°4L_ű怮èàᥖ/ÏfA‹Ïï4  ðÌXné ¿(P `Ã’zÌi  @ ¾ îg·´à$<—%øp°+°{‰§€>G×1`€–œøG÷ã  @ ¶î>€P3H@W¶è:õ€€ðXij¶» €!8ÐÔ””§:ûÙ€\ Kßïü €U”Ãçó¯`Ïr´0Ë(˜íú×}8”€)-vPbCC£·á+s0 ¯0 .,¢A¡«ü$×ïrƒ Å#iÀ€ „m›j»Ìdø À& & ô#?7ó^ñ2 d ô#dþì¿ø›”§í©»ë+ ”¥?Ú"áÔßy’·‚?ñ)LÿR" ø})H‹O»R‘vx–BAx%-#¼}¾kШ …„¸ýo^ €¡8°(RÖv<*äQµ˜€€„ßra ²˜æOÖ€1p"‹Üz7¿FP 7€2Ñ4–L&dwWgìy· €ˆI!wÛY:7¦ÛH0`€^© °Ô(“ÜãªÈ@ƒ@ȈE%dŒÇܺ ƒ€€ÄÒ€0AÅ'!ºÿûܨ–B(¼·«0À0& 4”‚Æœø*Ç翯‚ˆ "‚˜p*K€ÑúVéu©[n«Ø€%@´!†–’À.-?;Äü÷ç"h`ðI0®,@®Ø €6Ù$ÄÀIAò@8 @€Ä\o¶Ùò>íƒçÃ76ÿJÁì0‰»Ð·Éf—üQ„ùø =GÌ »î1e%b~mH €(/‚Y÷ÂH !&N0Âð s #@c°!†“ ÚÿH0 eƒfК’À8Iâ¶þ󠀺`¨à2ˆ&•^w(¼íðûâe‚H$°!p ` !€*€8 ÷Åg jÀ‚ï~ !`Nù÷^xÁ›{ê!0$,BÄÔ–²Qß5æ­ €À²rHE!6³þÚö€€j€ @b’3$ÉlÚçûeö›€Ä…¸è ¬Å$2÷Èvh Ð ÷ÿ <]h+|}˜ÑÜé Å UáAh/}ÄV€-)%€™#3³‘«€@¹¡FTbo¥ (ü°@ÎŽ>|…ÀLMAy(/#î¯B¯Ò‚p„ÒЖÆû¾ eSþçûÁ€?"€ù$´e™ðûxà€¢‘7ÿ¿ÝGY@ J+7¼€ @ÇÈâ&F B×ìK&%däïy A\˜Ž‘ˆýgŽÕüÐ>sÙk³@IŸp@@ËdM@ÜMîÇ6×è3þ§õ`  š…xïyÐ 0¤ý¹1NÖ€Žt%$Äs¹Ó,Äaö€‚€‘ŽZYYõôø°©Èé J26ó` È‚ðbrÕÉÑx°@ŒQHCÕdk`†à¾ù\ûÝ'W€ÃxÈ Oê<.ôðÁ/ѪÀ`D,­‚ª›Q³Z†hL HÔ#8‹°˜ð ’5#q¶Ô¦ÛE%ê2µžV°ŸŽ¢‹<6Ú"äKKztøì7Çv‹%ÿ—#ílHÙ¢æÍ©JD@ ø})H‹”ÿj$¼V>ÚÏŒñÑÓ·µåµÎ˜47üZC!†¡ÕäQ3—QdÜUы޽¨  I»­ê@tC,³ô‹œ¬ê€À+‹íuÒˆv¥TÜ¥:vñ%è‹¡/G†£Cx±H€ÝÜ@£‚á¼X¤@nú˜7xoŸ>¦ï©g•¹ú€ hR7ú2~6Î ÀKS°èRÜ£ÊÞˆßë`Ð^Z4àBëF>«®™FÿI2Ñ›'ëpÀ ÁÒ ¬Œu)ÿ -)ëÿ‰¹JR'r”¤EÄÿ´PD¯Ó/ÇÛŶÔý¨ÛG§mâ.vØ>ˆûÖ/#z°Çú2rc"Å)H‹”¥"  ø})H‹bi]:´°(”Qöñ,3}"ƒyB&“vBÆuËŠ(›×BÀ¢Õ@Àϼ¿Ýy^y(ýs˜1<é ˆ ÊÔ) ¤¿Íí$±šå½éÿ´åv\MûŒõ¤ÒC#=Ÿï¿^Ü:’ƒr2Ð¥ 1͉`ЀgŸ· Y13nH'SB¿$¥€©Xˆ‹Ü˜(ï÷'Ö€3Ä®ã®.ç$@Äõ 2@“øF ¤ ±áˆ‹Ü  †§:³šö ÜšC) I«@HäŒTL+›PÀ¨`nÅdE„fÔ¥+‹”ý½)Έ²7êÅÑ;ý!q,ŒÖ7\E ¼2wñ?›Ü¥jtí¢.QôÅÐV_œ4!Z6þE ,ä{¨m7zÒ€B’úµY3ôçñ÷ÐY3†e…X¥)³÷þ ÚûD\,7ïëH|¾È5 /Є¬Wy§ôöÇE’ü±©z¤fÔB’B24\¥)r”¤D ø})H‹ŽÔJsSîñJ?Œ|ö¸ûø!h ¦ë„\¥)rŸoJD\¨3R‘j Ô¤EÁšƒ5)pe6jR"å)H‹”îÔ¤E–ôúˆßë-õ6ðlôÞ?þæB¢’†ãáHþ·,ÈHø€9Õt‡òÄÒöR~¶(#.ÛjR'ÓÓ×ÿ¹JR"ä~ DYÅhmµ)þÑ)B^¦ÿø‹”¦¤EÊR‘ ø})H‹”¥".R”ˆ¹JRCk”¥#F¹þÔ}FztoqõD•…ðømî>£ïAš›m îR”ލr”¤Cû”¥"Ü¥)þå)H‡÷)JD?¹JR!ýÊR‘îR”ˆr”¤Cû%þÊ®ÄÀu¸G¨ˆi0›˜²‘:e¡)Ì„Œðâ¯h€Ë ÊK9:Æ¢o Fãè€ tŽ¢b0t¨)`ŒÓ&Q$±¡Í¹—)JSîR”ˆx¬ˆ \šîGb©ó¬,Œ…Ìýøò2é󘀱æ@ÀOÀÓÄÀeþ8ðÓÂÅpèv>`³àaÿ] ¸¤Dêž`ˆ<€ãƒàa¢êD2ŸðÓÀÄè?Àgv ßð•ÄÐ3Ói'þša /ˆqÀr©è"@/‰ð¢"Ï€X;¥rtX W:àŸ À,èžaM?€ gY:XàÚ{à,„@,§ðü(€ÊáÌ 4Ô÷…‰'ØX;,Ž¥¹æ‡îÔ÷( OÿrA§ðgÿ6t>„€rO§°œl(?#éàpÀƒD. '“ l~ž`ñAg@åÿ{\àx:" Ôð‚)‹Ô `þù‹O0ÑnO1Ížð0:ÿÄR}<â° ÇB€è€:ô8OOA>""@ØÁ`SÀŠ#ã DUG̺yƒ€[  y<òÀ}â Ì\ªx9æK"ž Ni`m€Ð˜\±âjM²À W:à5X €þˆ³€Nd/ù>?ôþl €03Æ€³ßú@ÖÔF ṵ́Ðýýàæ{À~üÛÿÀ9qÀlÛÿÁƒþÃP4 ¿óæþò¹ -¾&ÿ £¬äþD¿™€ÒaGBcà ¯êÀ쨠#kØ §«œh°àFƒoøtOúž` @|:-`Jô:<vðp `Béæø+=……*'ÁÀ,€8âu?ˆ¯ú “@í=AaÀEàñË72À}‘<@B§ˆœÐ°â’ëú0;`ÜÒV$@û6 |°7`r鿨BØ<฿ÅÄêâÖêz<[€Ö'Ƀéà sÆppÿ¨‹§@j¨œp•@Áÿ¸ =СàÊ :žHwÈÊM€ W'šPP¡ #²¢}ÿæDW ýÀ,».ÿ ÀnH‚1€ÓÝ@t:çÂ3O“ïÿ4œ ç@>‰ÀèÃ/àéh lÿ7mØù ø,ˆ 6Ëú¸tK"Y€?Wó0€`èÀ7ÍwÛøè€7 ò=¬qOä`5„´ ‰õèX[€²Éðë¯QÄ`‘cŸȶjÜ,>ñ‡àóè€kÀÑŠ0ñOÃÃø‰Œ<ð¡qÂ"Þ¿5‰ÁÔ›éb=‹—¬Ð€Òþàcÿ€ä5agÓÁÇG@,§ÉÔ ÜtôÔ¶*›˜Hñ>h~…ØŽ 4ñ€1àÃþÌ: @ |¼"Ê|Œ'p}=¦‰PÅña@?8áPìb@<Ѐ>'XUÿáÆÒH³ˆ„áöNñ.ÿ@¨õ‘ênMÚJ;-@@F˜$G,^øyÃÉäHEy‰s@Då ‡ó\]âÍ“^fNéc¡æ»^w6ÇßB«ù<úŽRƒþ ¯0ür„<œaÔÝl¢tyç[µ½z5¨àÅó¡ Ç‹þ ý ­,FãvøÖátÒösÉ€á*˜ ßóe€þ1pò5Ó£ÐOø€ºDp @h.ž>4 R…œ|À:a ÌM@€, ˜>[¸þ n$Nöæ"Æ.Grtt W'•"ºnÒŽGQœ<^Œ<€(*<îôx÷"P×^f¿Dmc'Ñ8¿è\ÕêKÂx‹7ª8P|“kÌÂÖÙêŽ^0ðc2B…(ˆ0[гÔ9ĪL­^eÏÜœ$‹Ï0‚Ü-¼tõþZ½,ãáDèzľ¾·‰ÀB`"5ÒÄO€;£þÁÜþ!À/P ȯtõ(øŠÀÀ-¸šyœ™ˆ‘aÐ戆( <Àf"W5XÇð\ÀÁÿÀÀršxË]#€ W@yN‰O‰áT›6؈|¹GÌ Tó×üе`!aëôyì? ^fp ™k€Ñœ¥-K‡UyšÝˆ¶µzÀ4G= ¯0~váêÆ€ £Ö$Tµ[Øuz¯òépƒèq¤÷²uz%œéáù¸PQ>ÇØ€øAŠ=b.´èåm\‡GG|:Ø”Ò0n©¬ØÑqäX=ƒ ÏOQ> @ cŽ8ÐSÌÃÈ¡ÚàiÿŽ6*9X<8Hy´øÆÁÔó,Ñ 4 8NX°»ÆuÐ2ÿÈ)æ ºäÀùgÐòêH‘©ãóp#dL¶#É#ºM¶Ýºó|ZHÇŽ’¥iFç0üÄúp™-_!JØ{…+i]Aã«ÌŒ%ý°ô¦cÍ‚«’ÕèH¢q8q:Íæœfˆ+aÖ¥¨RúxxPðõ÷4ƒsÁu_ZÛ5-édÈàh´ñ€¾7Ô¡@ÓhJû(ðjÿ¦b4`ÿèv}4Ì:"@naIJ%ˆ§…ÒÄudqkˆÓR° yެ³¬I›ZÇ€}ºcÝ^Çâ=<Á≵ڨ9c¡ÇO0rœé"׃¨ƒ¡À,ô·ˆ”ólx°#fý¤ˆ…Äúy“‡ áã¡L*Œ:£œÂ% W“ÇØôð>%²ÔÖ?š<\…€zaZÇ d½<ÈDr³ÑÇs¡`2 Š ð)èŸ9/€!'ËæÊ0@¦§’=@lV%@3©ç—BŸQª4ðêyyôO ¥°5Ø|G±Ê¦ê£Ž°bÿœSÁÏžš™*8ÎÒMwð{ƒ?ýáb•}LƒÙÎ…‰séj Õ°°êyðŠ°’ñÖA€tð Pø~œXƒ=<ÈÀÀ4€Ðî° ža˜À`oœŽðöO@Q@Åþi±à,špúv(³Âí€Ø_¢ xX½b€ŒtƒÇvÞ„ø]<Ç=Jr]pr‚è,ŸJðèÌ6§™¡FÙ§z]°«0ò<Àþ|<:xõ‡Çi$Jy‚gskxQ‚ …-N°8D‡8 êx Q9g0qŒüØñy@2"H'×§™š=|:ÂäŸkuÄõÝ<Á+¥IYì 1;r%ÓÌ0H|`¥€ÉJ‡u  3‡³°1Ù< Ö§·5`-c¸ðíjr)>ÈÄA§˜d•bc‡€sK°î>žb{¼Ð^>ðpòu]<ÈÅ`ôE°ðk¡g“¤©ÈΞG{ã„ÕB…5<Íüy‚­bä…ªAÚĨÊy‚>±8ø ÑÂUîDzy€?”tN€=‰â€>  y€-€Ð j¢@[à6| Úy€‰ýƒ Àp !ä(€|}<@`4 ðàó! §…ŸNÚ‘>§T uaôìÏœq qÖ/³ :OAŽ;w'Ç€s+@ 2ždlkXR å½“ýŠØBˆóÇè@ƒ¡–*pŒéàIC‡R‡lÄé `qœ×ï¹Â?¦Vl³iæDóÿ£€9±d_~r-€îžbWÁ¯þ‡ÁF3_§¢[¾ßù*[ñ&c– êæØ‡SÌIJ²zÌ¢!4x¼OÁÆ™C˜~"泇³BUÛïôócê PyÀ$—›ncÓÀ“Ç¿iÜø*Œ3ÓÌ=mbÀ=·â➃£Œ<>žy¦ÙQ² f?SÌz‰Ìîââ4xêžKeAÜŠ ¥Âä,qŸ3Ð<È{ˆ K¨ö€^d § ‹þ" àb"@4=\õH€Ñ©è'L¨€/^ÛÀ# xê 0t(ë¡gÊyZÔA‡Ÿúá. À0W[X3Áôóz'‡]Ø–ØH<çôð –="Èú@ŸfÊXºx©˜F#WVÒÔó#1à€ÒÖ$é*[‹"Ž’¥‡Äâ SÀÄuÉÌ¥QŠG°°(*éàÒÍÆÂ€ÔÆy©æaÔ¶Y /QŸÃÖ?°à|f4Ga'Õ<ä sv>žŒù…ÿ P…‡Z£Œ1éæVh6ÈãœÊ#.ŒÀàkP4ñ88Ø+úìl9ûSÌ—kL>—AàÍÿW:›«n$ñò †]©© ¢« ¬v} C ¡ìô®taâ@„ÁæBO0: pqÀ?‡ÓÌ_ýÊ râO@þ8ñsâ š:ž àd€d&< ‡ÁK'O'p¸àâ4,žD€ xêævcëQ¢©æb¸<Ú}Ù¤òx˜AàrÍsiàH€O¡`l<óÈ÷4G°¡Ê0Ôššb oH 6^Wžž`ðµðãi]O$ßÏÎH°õˆÒñ§ŽXêE<Ì[ª£€\ÕÈÂaôn#€mtó5»ù&µ°²;Ø÷OA@H1ùãícœÄHr±ÍJçB"ÚÌ ³mJO1ô-áík2Œ·8Êy•‡P’5c•¥˜A¡çpçzx– ä¦ [Ù8ƒ×O‡ýŸþ#Ü:šcšX/ígÓ¬jGšH'@t¶è¹ÀÓ*8¢iäÈÁÐ]=áÀ?OŒFΞ` 8‡Ã£àýSÅ08Pø8>¤ W&¥lò!ð€ð)¤Å(<ÓÀéPW`bÔ¦J‡Ù-OAZIŽ'` ‰ ',£€¢B¹d°¤2Œ€oa^ç €b`*‚C>4ßÀ°$äò‹)˜åE€^C!ß3Í€¡ÏGÜD` bžWBD&ì B»ç]ߤÁQ W'à„$ oöL z3†§VéO0‚A€ì©1 |”…a/Ðð €@ŒM¼ —ŠJI¼ˆêà@êeà p` ú††’¿êÊ€/à€h霤2ñë€Bô3@@bY5ðÎVZÒa‹€v`ЀĆX&†“HIa…äpú`À·Šä¼/¾è ë€jq3~ŒøoÙf+`À4€Ø †L yEî1‰H,—øƒšÐÀ ATœ²ò]Æq©sðqŽÔÄ ð<Ð x ÿÁ„,–g íÏt@P€É!’+”Wß;sÏDÐxYDÌP ŠQæ»s]}dè /+n /bÝ€pYffÎß›L Pø:&†É¨%!HNC2üaæ@ €/ ðD.M„Ćö`1†ñAy|Üãà€7&“À '¥££dï¶ØSlOx •À¼´  ã~X[‘iàAÁ̤3@2Zr Ü—ùÑ÷Xà°ö’ÑÓÉ[¡`ð¬îtÀع`/,S³,•¡ð0p#!€Ã 3åcÙˆ¦Š3sœ,‰@6æA…“ ,;pÒ¢h!ó náêÀ?¦Ì&¤Ä©1? fG1݃ÍêÔ˜Rµ ß,¼€F€®€JÐ)ppÀ 2xíÁ™É‚Ôh0a`Œ°Ee„G  @§/ÄÔ¥Ø÷ÀÈ  ÈA#CSÔÁ#ƒíD dæ€Ôà€2À:Ç|˜À Þ0¢g¯Î¸À„4’€¢D!©Œ ˜¸˜^ª–®†Û32ž @pFrÃJ ç Qü ´C3$†€Ä¢ª@PŒ9‹È`õÄÄÐÀÀ ¼Áxê>P¦ôÑ'&””€VLHÔ(ãÏï ¤âÑ“Žð8ˆ+àÒZCà9~¶ìÞŠ2@`‚““{pè|‚ÉlHHükˆ¨b€P€Ð3·d%ÖœAA´È+qÁ@B…´WH›(†•æh PàŽã6eñ n-GÝÃP ÉÿL01X½ì04"Ä¤íøæÚ û“Fîu§ eä z9椀ä W0B ¾OÈ”Œ\lYK!Ó± ç~ìîFLð#P*‘€P˜”žéfF‰@@’@–4±˜ :³À  øa04€: à;Ol](9þ)ƒ›À€®ð0¡ àÀNCOO|VÊØ(,‰©ƒ‹€˜ €8ÃR4…ñ{âb3wÛ+‰üp%@/à”@Èè%¡iî®)ÂżˆàLQI,¡©C/¿e€z¨€Ã!œÄ@Óÿÿô§¿ëüßß“á@@,W`å æ§¼,I>ÂÄÙdu(=Ï4?v§¸@bxàø’ ?ƒ?ù°   ô$’}=„à#aAøyO€¶!pY<s`3ôóŠ :/øÚç³ÁÑXð8F§„H$X¤hKÈðÈäZy†‹r|yŽlð€9×þ"“éàp %€n:@ÔСÀ2zzÑà3ˆ‚ö‚À8§P‚AiAÆóÜŸbP É„€†àõwºJKA!=kßcZž`´#r„Â~ãÅøé4Ù ¸ïùäW”y<òÀ}â@¨NÃKèÓù¦¸úmL 2N,ÌoË9DÔPpè €1(šË+ÜÓÜt ròa5(éfêlIA€dÉ‚Ô1Îë'ÍL˜¥»Ä %·R]¡cñôS, W0FÀ`¾Û Ä}@`ð,ø˜K)$¥$¡ÈeÊøÓ"bP%65û6Nç¬!÷½0D À€#^ ÀNx ÃR”Ã@ßÛ#ÿ¶Y>péÀ,…ã@?'ÃÇþŸÍ‚ÁoøÐ{ÿHñ ÚˆÁ@?Y–:ÿ¿¼|Ïb8à›ø"î"8 €{ø0ØqàÊF—þqàßÞA$·ÃÄßဴu€¼ŸÈ—ó0Bì(èL|µýX•tm`›tõs€mvÈÐmÿ€éàSÌh‡Cƒ…¬é@‡G€Þl è]<Àg°°¥Dø8 ¼N§ñÕÿAR`ȧ¨,8¼9fæX¢ ò'€ÈAÔñ°@å€>~B_ NÉÚ O(5îHN#Á P›ÈDÐÀÔ'¡%% W³£@èŠam&`Ð#°Ä¡Œ˜‘¼Çp ÷øÐ½  Ç£HBP”ñä¥Ò ’y` W:· u=Äp8@‰ÑßúAÏþă  €6D¿´Œ@³;Ú#ßøÄX_BÅ€¶ïÿ’'€IÏdQ÷o/ý«ú3A¯þHx°èñû¿0hÿ°:áÑÒ@6°/àlÿá`Ø0‘,€d€þþ;€rdPŒ²;ßÌÂà5v!vé >¿£¶½Í%bH÷ô³bËv.ž`„-ƒÎ ›ü\N -`>§ À`…¸ b|˜>ž ‰ÀèÃ/àéh lÿ7mØù ø,ˆ 6Ëú¸tK"Y€?Wó0€`èÀ7ÍwÛøè€7 ò=¬qOä`5„´ ‰õèz?“‚\c¤ý®Q0´”çÞ¨Àv 00·VÚó@ €¨ CŽºÀ €¤ &(–îÛw$æõ¨!XÙ#œ 80 @4,â&õî!››Œ'À  „€%Ì¢‚PCJoœoqP9³D‘©üa'‚À|ì)ÀØ @åÿ“Ö 4 2@ÜÑ`nÿû'€xx˜¿Ö|Åý€"|AúÿÀY`Áþ[– à-é$€À?°dÿ À?'ßÛÉ€4°f¿™€´Ë”#€wZ‰p¨KHXƒ ×Sp n—#ur«Hú€ebÇ1€rà/‡˜mqÇ0ºàaà4»4‘Ì"Ø @O8v=¸Ð¡a÷LÄÀ@øhƒpÃÛ @±ñh y7çg)/pö5pÀÀ”‰Y’ç@`üÀ!!ò` 8éXÌw(DØÐÐ €ìø “7eˆ¼ Èe’ÒXó„D"èߊ¯Út 殜#vùñ¸@Æ{}ŸÁ“ü ." mÿ² ÿ*§ú˰aÿ¯n¡Y—þÇœ"8F<Ñ v½£Ž` Øáäù"·aÀ>sèÜ£Ìpé!õæd,-ÀYdøuרâ0 ȱπä[5nxÃðyô @5àhÅx§aáÁüDƒ ÆxP¸áo_šÄàêMô±ÅËÖh Àip1ÿÀrH°³éàƒã£ SÀäêPî:z?2 CGû”€Cy7#§©-°}Ò@boÜ*æ‚èàÒ`ߣì4p»ëÀ r€€é¼ÃñÊó p‡Su²‰ÑçnÖõèÖ£€;΄(w,ø,pô&´±Ûã[…ÓHDØpÌ&„Pªv`7ÌE–øÅÃÈ×NŒ#@l?à"ètyÀ\.<  ºxøÐ5Jqð 脃0 <À ` € ÿ9 àÒ °(YDÐIJJ^=‰Ñ @;&€€šQ ™Ø43¹\w ¦„Š , Œ”™µ4î’JSÌZÕnžØ²Ò^Ê ïQ° W'•"ºnÒŽGQœ<^Œ<€(*<îôx÷"P×^f¿Dmc'Ñ8¿è\ÕêKÂx‹7ª8P|“kÌÂÖÙêŽ^0ðc2B…(ˆ0[гÔ9ĪL­^eÏÜœ$‹Ï0‚Ü-¼tõþZ½,ãáDèzľ¾·‰ÀB`"5ÒÄO€;£þÁÜþ!À/P ȯtõ(øŠÀÀ-¸šyœ™ˆ‘aÐ戆( 4ŒOH¢ç‡‡Cz'DÒÊ€©9{e©AÒJG/ä#/¡XòuMÈÌ W5Õæ"Óh˜ñDøžI³xˆ|¹GÌ Tó×üе`!aëôyì? ^fp ™k€Ñœ¥-K‡UyšÝˆ¶µzÀ4G= ¯0~váêÆ€ £Ö$Tµ[Øuz¯òépƒèq¤÷²uz%œéáù¸PQ>ÇØ€øAŠ=b.´èåm\‡GG|:Ø”Ò0n©¬ØÑqäX=ƒ ÏOQ> @ cŽ8ÐSÌÃÈ¡ÚàiÿŽ6*9X< ° À¸l€ÞŽœS’Q°€tû$®VܯÑÌ;ÄÂÐ Ã §¡;t¹‚ƒÇDÒ` (a¨ÿnWùù¦ ˜f‰¥ÂrÀÝ…Þ3®—þ@à!O0åÕ× ÿË8ø€—RD€üO›"e±IåÒm¶vëÍð}i ;:J”A¥œÃóèYÂdµ|…+`î­¤uޝ20x—ôhÀÒ™6 8` ìBÛ„ˆž&Ñä ù ;áTÀØÌnP ¨„Ôòfý“÷%-à@+À ÁLù4˜Xcq§1éð @'$&r9hGpÇ$9‹œ4dìÔ’XÛ¸ ÀXi `1Onì³qÌ,ó`0`Ä€L®F|ÎÛ“ÿ¦„`å9ÒE¯P C€Xén:')æ$Øñ`FÍûI ‰ôó':@ÃÇB˜U<uG9„K@®‰ãìúxÙjkÍ.BÀ=0­c€á€²^žd"9Y€è‰c¹Ð°Ž…EPxôOœ€À“å‹så SSÉž 6+ ÔóËΡO¨Õxu<È<ú'…ÒØ¿ì>#ØåSuÑÇX1Î)àçÏML•gi&»ø=ÁŸþˆð±aJ¾¦AìçBĹôµPêÇØXu<ÀøEØIøÀáË Àºx(|?ÎG‡¬Aƒž˜ G Y: @`É~C Ih@ܳ;, @0ÓÙ=Šß8±P A‚È©d À¹+`=€€ Р€ÅÐ*ÀßfΗ;ð|„°@& !ð À—ŠÀ…Ʊ¤2ÑÔ„9ŠXUÇ €D!l¬`ëY´I™_ò+ЀL FB¶Û¬à € À¡X¢ŠÛm¶ÊÂ*zÀ ÂÀ¢Ä@QÏÐbPmé˜F°`à*‚a ¿”37> °@Ô~Q43”_Ùßö ðDÜ^Ø43Œ- ß@À@€Ÿ€Á%pß¾À|ÿÀ\"˜Ü “-’ƒ€‚WÀ Ñ½A ?xÀ„„™¢NNNÉûƒ[À€f‘ `P £££üýHNO0?Ÿž=añÚIž`€ÀÚÞ`…Ã!KS¬!Î(:ž‚”NYÌG£?6<^P ˆ’ õéæf_°¹'ÚÝq=wO0JãÅÇ)RV{ˆ N܉tó )`2R¡ÝBÀè áìì @6Ou©àmÍX EXî<;ZœŠO²1Eiæ%FؘáàÒì;§˜…ï t‡¼gB´p•A{‘ž`å IÑ! D2ɉáÑÒ?Û³ ÞžaëhóìܘÈù5X `(€Hg ¼/gËl5Ôm€4 K,dÄqÃ_“© >`ä0 ˯ù²Rú è~w/àýÉÐ g€„ À©1 ã?nþ Á¤Ç$›4 fÃJ@Ê` 9~™Ì&¤†¤e§à)À‰¼:Öý¼PpÀ€è  ˜B/±™óx ‰€ Ä®ä<^î·w½‘ÂIbð2`°À I€!F|¤ C“°¸X@X8c! *¸ÄCêÑJUÉ#_þôpk BV¡ñ3mp÷­ãp5=eÞðª©éÀ ®Ú5×ʬÝ :·¥Òù«µa5³Î“ëƒ ˜€Oºà@2¼ @Ç|X 鈻RŸ¾q&“© „°ÂÒÍþ]Ì€b  ^ŸÀ¢?PÄ @A˜àoJ@ŠüYW—Ä͹ N üN¹Ã À1 8šX_Žèý˜Ð@vxzSÀ`W9€¶8(nz ªSø Še>%eájY:ùú@4 OZ Ó$Á ?„`«0(ÀH_0-Büú7¸ €€jÀ€²\ “C ŠNý¤7b70ð % ¥TdBÝA ™]F@¤dÎXòjSóþ`ÿ‚0¨ &by4ŽpßÒŒëN<Ãç>˜ˆ6Û3dlvFÛhàèšpàP(XA|‘–||B€8 F¨4¬7í™RwJ8J~÷0DF 0 À4 ~’f Ø ÀS˜3¶´€-NDà !B¬°*–_ñ4èp“ ‰J@vÓÀ{èþP@4!f* @€T00Uƒ Üí J@©|ßsÀ€jCw JÅú=dÀYEc « \L@Äꌞ<›óå§Ú$†õ–žèÜ0â‘ŽÒ E#ÌX r&Hu§í¦J~ꈣQº<½´zSâßÄQ®/ÿ Š+ï,E-ôÁ¥¥†o¡o$'n½Gf©Ð@ —MãÀ¢NS"XgÇQÄÞT%æ¶G‚ЖçM9ëBžJµwˆ`Û·i$¤±ÁW‹–Jö3Û}zvö Á©OÚºXM|ù vA #øÏé¶Ú”ˆ£”¥"(å>þ”ˆ£9Ãf¥"(çÏ¢ÛøR"ŒŒï”}GÞ"ŽlÚ”£èŠ9ûhðýã›ó¢(ÆLþ}èÚ"Œ§xòþòôG£xݤŽj3ƒi‹ÔÅoÚ˜§d'6T'acL—G:›}<Ÿ:5¨7Gg‡FòË‹Bö{ID®Ïh¶áCìàþÓæòu±µ úÙa§Í]G©!ïÀÝjp vA£ø})HŠ9JR"ŽRTßG)JDQÈ“I¸3Îк€n¥6!€)l‚“Ïc³ÄX-U a1 @ À¨h°œ¢Š/•¶ÁºÆ÷áç™x¢À`Y@ •ÑÑþKnbOl@h€€€Ó’3Ã…ü†dï‰Æ> €@Ñ à P*hƒ;¶%óò¿9G „ϰF @N©4°*M,–”ÿÏzà@©p :¡ˆ J7ÅšÃÇE€`Ë& %!¶ ÅsÜä³:z~€À€2&à€èh ’–'+À& 0@tY Ùú‚üÐ 0Ѐ뤕ù#…ê?І3!ö€º°ÂEà®Ù4Ì7ؽP« `1/ nH{ÙÀ.È@Ô'' ¹ÀNÃK - Ìçê>nê£Î¢ Fy]­Sº;[¥®ÞÁ€;ˆ À¨ ûÃyb`ÎK¤lR‘¶Ã¤QA› ¤dlvÙ¬.×ß÷îæÈFU6··SX. *>‰÷[‘¥Px±ÈVN¬°ª¦|mÃéD¥´P[è}¼QŠSwÔˆ¤ ìmd ö§ ¿žF:º6@…£öÆýÄ@ÎXÐÔ`ÿèþJmµ"(å)HŠ2Z[P®ðJ2tP†ˆ£¥",& Ù`!ŠC@-H&¤š4i/§ôÈ CxP@0` ù0à;BI„$âºRÇæÏh&A ƒ@ @ 32ZIdÂÛ!oþ;¸P¯RZ˜hà @€ì5)Jx I¨t’Y§1Ç|N€ÁD÷¸h͉DÔ¤¼0îéÿˆëµ¾õy`hö3šA¥„éÀ[Q(×#D4ì ”€ÒÐ#ÈÂM¸8` M€ AU§Oä”ÿ#Æ?ˆ_ö˜ ü»}B‘·:9{Ãç£z”¤¢Á‹üÑä==>>¸ ³À_<ù‚¬8ÿ2ä?çC]ÃéóêR"ŽeÒ˜êDQʵ‘š|rºY×`Ä…¼R¹ÁQ¥¿˜#¨(ýì4(4p S‹!”Lº!â³°¼ à ‹tø R[¡l_({»djÀ0,2h` ƒÒY4´¶ù:ç@ä@+è˜3·ï¸æ?\Ð@ŽX 8`A¬Œ½‘°eÙÀ€$,}-ðáâí%rƒIíø],°°Ì”ÙÐ@¬- 0À„ÎXI-;p„N­Ð"h€(RYAWL5@ €B½%òÒ”ôî Øÿíý¨ÔÀ è €! ÛwOíÇ„±:ã€21€2bC3 2õ @š`à7ÖߨÇsÄÞh @q0¤wR2¦ÿÿ°X † …f¿¬&˜‰J?ˆuø#6¦ÛR6\d7£”§KzFûÆûØ ÿ4&6^O¨àˆp]  Ü&É"S•›& û¾=Av²´Du”:èþ ŸZÀw€©@'@̯ò¬o¦> éóülE„TQK ÿ ò‚°Lô_ÄÇ~ËР¢9ÔJ7Ñä¾;<:w Ï¢(Ï&ñÓ¼´g“áŠhŠ;JpÆ’³mVBAY‘´2<6mG6ÚŸíOÚ?®"ÁH!r†Öñ «°êÕÁ¸gJ Gû‰Ék(ýûC¤â)ôÿh–MØÚЀc‰›ÎLßÚua '+$•»ûBhåbÀÂ;¦9\o„Iˆda¤§j q™Ï°RŸ÷š%5J•N qF>—Gðþ‡ñáÍ‚½"(Ê!‘JDQÆÔ¥"(å)HŠ3ûøýÿ”úm´Ed}àá¶Ôˆ± FX/Q‹Sqx_><(:÷fø~á^ã! _ÙêÀL¦&mT58Ee€ Ä?ö¡€ƒ …ðÞ¾îþŒ!š‘G 7}d¾¤À vèi(°$^ÃúÄh¡áHBi7†›;“CN¢^Þ†n{+ïœUÅ4ˆË>¯%ã€`R;£0ˆbš"ŒQôvôû´E}GÑï©¿ˆ£½xíé·ˆ£¦ßM›DRiû‰ýý…‚‹ ²„CxpŠmë»pŽŠNÿ|ì$âuÈH@¢ZC{¤ÿ[5÷ÓÆþhø“ÿéãSÏãýiäp w@„dôú }Ÿ@ Ñ<†BHÕö¶JLF~2Ój~ØO°;x­þìœÁq§{k †ý~Pâ_GðúR‘‹k²•0<ûݬå#A¨!“J^&†á§½ÿGðúR‘‚«›l`PøŠcìBéüg ß\õ‡±ŽÞA[”C(R÷¼›{¾øýGñ"g Í"§FôÙ´ÓÞ²3X qõ&°(  1 ±1SÌÚ0F°L †QÓµ6½žâ)Ž@óGÒr‘éÉ…s%º0'Å 2¹ê” *^RbœÍ£€4)"·Æî$„n…²4Òà€\B¬  £A‰I+% {oøuÄ[iƒ@CÊÇIÑšbɈN^ŒÒ+£pœôn%îH`è ?Àô8 ôÀP­¡ôºH_)ÿ`€Fƒïó‘!)ùv ¡™dϤmŸáÆKÜë$ÂÀ&n#½‚6±¡ïSújp z=vµZêg>@ #Þ’õj‡Õ.8]r­g<–¬á‘`cÖa cð5ÀÕfXði*hÐhÑph ø#JzÈ4 €ö,—YoâÉv0C¡t5µMQ ¤ä4ž™ÒðfFÀrK.꺶 !8ú¢»ô*¦p z4k®€B‰4 « Ë#Åšoºo6çj–„P}kÞ»=Bçƒã ê©ÄêУ#ÍTÚÚ¨£×Kö.§™À rmz½rä¨|…  ” ®Œ6"YULñà-.„HQßm`-‚¦pÚ¿ðˆ \?évû€¾¾`-€[UH—´ç®À?¿A›K¶sJ'[Ø}‡ÔyX‹ W'dg3{íWM¢1Ñ,W#Ô­:'RY:, W$©»%§3½`ƒ4Ð>@Ýë!çx€bL„Ÿ³Qü=ö£ëPhx‘Øi¬é@ÿ€,…»D\$>`T @’1$"÷g: A2n¡œäˆ"A,Cp @tB&‘À¹Üfߊ€vÔ (G=@‹èá%# k;Üa<0É €lô¤ A7€€bÀà%ˆdÄ”cýb€€R€Ë!„¤Lá£5(ÜÞØLC/tBìXÊ@’ó‘àÔK$! +&á(õÈ—`!¨š€¸¢a ˜MYIÜG’”'¸T_ - IIØ^¨pÒ!4$¤Í– WWr¼Ú?ˆ—Šßó±÷l/x` ƒR†toÂS²ó‹Q×( x €0¡¸Â’F¾ø šüP T T1db Adº~ã[íÔÍŒˆºlà0Nà 1@h` €b‚K¶&W .ãÕÄàœC +ÀCùx˜ÃP4×ü@4&€ìP(‚ÒCF–‚Ie€ y¬³`@,d0Ö©àc~ÖƒÏs”äZm<P(ü :0R{e³ó ¾+€üÔÓ˜Oà KVü7,!½À?°¨šM !÷ JSÖzä`°°tXtÿk,Ås”³'ôð'Ô¥€Ði·àiÈô,Õšiü[‡RÀŒ“Tp\i:Ÿºy½‡/œÂÅŽk³Ãý6Ì,0š@¡cHI%ûÁð h€0 `ðÜ(i+7èÉ”¤¨q‘4¢Q¼P¡`v!@Ânàd1îѼ`*vB &îaed˜a·I…P&À À.è(dÒÍß’Áøð`@K€ @=;FÅHiFIHÜ¡yÞ€`€~‚Þ„a9|ÀÁô41Æ:[,  „€ûÀ`Lɶ  ˆö¸P¢Ày‘›8L,À@€-v`PH‹€T‡¸io²\#¸ÿ΀ Á ”˜P ÃI'$5+GvÎ?@X”³€:éÅ”JÿËÐ @˜,¢ùy\gÉê€ €6xP¡¥Ø#^ ÀðЖBOÀ[38ô|e0t` c+€Å)&’ŒýÜüE€©d!‰lÉ A 09IB žKC‘Éðd€7Œå ›ƒÐ•²@¸ fƒ#–|ÏÂp|B!Àù æÊNø´ u¬U0¦`À*-‰&Ž;À8á‰ØdÁ™ß²:U„c¢à`& 4 Âà +–•@ÌOhå ÄÞ0ÞRR¬‚Ð3¹>ä`|ƒm\¨ĘPi0½òqâjs<^Ù(Å£Br¾4]=)íP3è‰He€ W'¦øHH&x @€èLð Ò”; ÄòSžÈ @8f`ÈCCxÀŒåÌ’Ìl ™À€dÐø` ‹ù”¬WÀ€¸À'à ÁÀëpÒЙÛê¦ ÙCñÝÜ€Dcì{pÀrÌ (ÞiäCŸà³À; Y€2‡ÿÈÖ8ÿOà>XX ¤Ž~E'ùì[ý$؉OæŽ ppˆó@hê1gðÂûЧñãà5ÍLçDDb}<ÌÀ4}9OJx;Y¹€i`?§˜q­J:–°µšâ-Al _öÍ<ÉPàк£#ëP Ì…:øŠxíaÜ@lÕ-ÁŒáF@Õ<Ïf2C¿NPÞÖ$Ž8ŸAâ€Zôó!ç‡Å”_ Ahÿtw /=Ë;¾RÝð÷§¸08q˜ €ˆäÐB,áˆe* ¨ yœc€o  ìšØòÆ`2îð _ Üa0¤¥ θÀ€r©0$$˜ø$­ƒ@%:â<½Î‚½h@1(šVîõ{2æPi/dîï@ê‹x·¡@3“¯Ž¬ÚGÚ }¿>“` W' °=ͼp€ñ©C“¿ÜÎŽäï}è €a€‚P WâÃPXig‹œ/ßÀ´6$,˜’ÒV/ ã }ÔA¾¤ ¸ð¤¤–@cúðòû®¡qÿ9KQЄâDn}?‹0P5kvÄ@ñÒ»êÇ€ºél?<&Ÿ×í‡É] ôþ=¸åÓR Ç Öwqt$Œ :GY”ó"‹.JϤ_øéBˆÔ8°éæl¾xõ‡…Éî.¤iré\qžaêÊ ªF¼#h?C@SÌ¢|#‹ qàæŒ,¢iéKáôð$¥2õÄsä ØTêãáêQcéàQÇÊü*§4ûzz4t£¾ýÑ÷q@R ”@J@hoPÌxèárwo’ŽÌw6€ìà+€¨ yIÝmÏ£ù@¥àÄÕ`Ð q5kxy@0`” 3ŒÛ/º,RRzKÜãnŸ€€4ø4½Ò†ß¹þ>|õÐ4‚Ï…HÐÀÔJ›ª´ŒÆwÕà;©?¤Ì\Äk1©L î<*[«x˜CìR@Uèù ÜšC0E$¶(jR„3~Æ8ŽO½ W&à!jl’“ÒXj8Ö^ÿ¿äW:à‚x 8`'HÜ_%oØ~u‰SÝ@ž €“Ђ±5iÿîÈK1øsOàˆŽ¬7£L!CÂÀè]?ÀhXAaBE ¡CÀÖÇœx÷§ôÁ‹þ°ÀW6";ñÖs‹YØYЪJ䓌âȱ ý,wOãÀÝŽøFš M­ð¯ÿ?<:À8Pø @5'SQ!î i qáZ™Äƒ‚ô Í!~ΧU6Ç0v¥r¹WI0Xb{ý–~ü@ÀÀe€\²a0šZPŲÿ0¸ C ,1l5º…@€¤~@a7§3£“Ï"@ BK¸h8a{}ׇãÚ€À5€ 0!}âƒÖÝÇA¨ßÔ êÄk ;ë´€”I„¤fùB”«ŒWß["Ô`nNKãð¥Z>vä$P‹ IÉÆÔÜžÉ*šX& ßð¡áðY„ù@ñÿZÌšï«·“¨ÅÈ´ú„Þ’#Ñù°@€LtQ '/ä·Ær2ï¶8 @ @B0iaœ¢j[?ÎëZÇûàæ³^€ SÊJpI‚‡µú)€Äà8Ø¢ñ-%¥û¯d¨œOà/Z²øx[!J?øK¾Ÿ wl<| ù“Íd-D~.žÝB³/ý8DpŒy¢@í=£Ž` Øáäù"·aÀ>sèÜ£Ìpé!ôó2wÌÒ–à,²|:éê8Œ2,sàùÍ[…‡Þ0ü} < £ñì<8?ˆa˜ÃÏ "-éù¬N¤ÜÒ°ý€åsð– À4ó >iy”O¥ñó$­ag¨Gó@@\©!¡)^ý.*óa„z@^¸°(©Bqß8ëΣ6×p Z›–ïÐýÅÞ˜ +†J Ë“\o)ûžº““vpŽ ˜úi‡Ð! }Âkj@3¤ïõ`trCõ 6!%š˜¸ @,8 @1P`&,0²ÈcÁxhOÇp`@ @@Á8ð á…P‚ƺRìÉ~®s+1Í΃I„Ô ,¬œ."z  ÷@@. /|ÊÛ|ã»L`ÿ5x Ø1…‰ˆÔGõ>)™ðáÔ›f’ŽËP Q¦ ÑË€þpòyO1.cè€|¡pþk‹¡Y²iædà–:hµçsl}ñÔ*ŸÉçÔr” ðP}<ÃñÊó p‡Su²‰ÑçnÖôôkQÀ‹çB;ü8úM,FãvøÖátÛö€8Àû3˜ÀÚ?N@É ¶ç(0!€9ˆbzåT°4ȽО‡3{„ €RlÀÆ|ÏÙwÔ€2*!€'vCQñ3æ­b#ßr€ @bF´Òi_Lëp–Hƒˆõ‚àh@¨¨q@2!„7ÈØáÍjÅ#c¶ DÀB` `& aAˆB6 dÀ0&hB@ÀÀ(„…m«i8ÊMâÜ W'•"¶iG#€¨ÎN§£ ;€}=È”µÓÌ×è¬q¤ú'7ý šž¤¼!±§ˆ³z£…É6žf°ÏTrñ‡ƒ ’)@tA‚Þ…ž¡Î%Rejz®xäà¹$Xîy„ámç§F%UàÐ3Ð¥qŠ“@!Ѐ^MÄÀ à<ßíœØ4H`€XDÀªÈB½Ð=öV»§Á<~ñ‰ñiÌŸ±Û¶¸Âs=*Ôä€b¨›y €h11½ÅN ‹@qËC'0``` ø 8nå€÷c+HÀ@3TTBÐ'•·}ûrÌÑH!Vd)PͰÄÀ€ (‘3 Åm”Ä À@ðX 蘂²~ÙÃë1.¨ÎD ²À W'¦ée£‚Ñ€!Å BøfI/ ýÜ­“˜|üÒ` CQ¹1,ŽŽßušôÔÂ`ð KäßË(jûï±=‡\I SÓˆxãŸ< À€X €jä¤À`BO HJj”;;@F¬ÿ€À44¢û$cº€ðæ i$®(¿ìg§ 0 %8œ¨,xÆ)küÑ0 @,‚Ð +p+À0(1†ñ™ ™»Ÿ‚„@C0Ð4€é9 ‹Û$j}·•L‚ h @ÄžZçš €€%ËĬ¨4€(à( J’5¾ßㆊ'¼€z -I —уœ5˜hÏŽÆL29íGîÁ¬0@5`”$ —’†ø”î¡r€`Ã10 pѨ¶AmÏ "ð €hà 2Åp*LÜÔmÛ±ÿmÉ÷›. À@-pQH,ac:†•¹¤V+ûƒ°8` {€f¸2@ Ü`€ xrWä Ô»)F¼àp `ÐÐ vL‚RÓɉ)oÒçãø C, @!‰€€@Œû`Äa @!€€ÄÀ€bJ0!{!˰c|žU<€ A €T’@3&#€ÄbJ I4aa=nÍ„@ .ÈÀÃ@©A… GdtØ÷X+øšRxiEüBÉä¶"IK;TÛr)¼GYMèàjF “e€ W!ââ!ÁÆQÀ.­$õ™­Ž¤DÈ$5ÐNDèX 4V)KG|͚ͣø  ÀÀ=Ë) ´Ä À&!wÁˆq¢‘ð±¢` R¶Œ3U@¶ƒ“mãä lE€<¨ŠK'e€ u}wƒƒëh DиæY1Í€ÜôÕºEVéRVèžÜM‡qº”<?ë(!‡¸U9¸>è-‚µW&ìë"ÖD®[P}‰Ž[`)v±Ö«Ui…MÚå°|ZαUÈO."Îþ´bx¡ñTp}$å)3• ]5Dw%õ¦‰.)ët°ºÈÒ<¨÷¬úȈš&'U:=Jñ!7Î0Õ=}–"¬u\¯¥€ Wm íl)@?»V!ýé/YB¢xT 20ˆœN¥tnÉf:²ªMNýê"py¶g×[)Bn´Ñ\xš©,œ W6†uÇ€²©’b`û¥q›ˆÒéc×jÂkj/®Ð|x…ÇÂÈÈ•ìÔe©kºÔähÿå."V „ ¹àDD¡çDðúH÷s×ÔeÙzªì¹/ú׃ çÍe&wt>ºE«85AwTÅ;ÜÁ´žX Wm´û»""b)\‰Èé—"S5sXŸÍU ­; #T²tjÈôú\° W&¥i7e™Ã­T‰HØY¤×F,È*ûDØ i7,Ɉˆ \?évû€¾¾`-€[UH—´ç®À?¿A›K¶sJ'[Ø}‡ÔyX‹ W'dg Br zm!Rš"£r•\R´èœIdè° W$¤@Ý7R¥´ó¯¹už¥Žªè•›ÕÔE0䚤BhòJLÙ` WWr¼ÚÞªîáuÏ2a`;&INÂx‰ˆ¤ÂÉ Ü?\ ˆ#ÃK ,7¹§‹ð @4!ð(j÷@j `À.&€{†;¥;îØRŒÐ *–à@Pò‰ ² Ü´?ÜçuGðþ¢Y ¢²þ×·zà€f­ò†„€—6cÞé„ À €NMA0@Tk§ j;ç0çsƒž"˜, ˜Z¤"€.#vB -Ð~žWf|§`øð €vP@¢RM,f ÃBRqÇ< „À@±  €@ÈåLMH¹4šåýѲ^Ö=‰×‡ã÷ËzJ2wÃóH/d””}—¾8z«fa¼fÞp°ø„î[3î½àÀp¡ `¶ÿ+;.!“ðj…Ä0ba/bol<ƒGñä‚  ì”í(` i€€¶pÔÛÀ‚¸ŸÒÎsýò_w1µÒvÀ8Ïþ(šXÍÆáœ;ïs@ÀÇlQ Ì}®,pžÄ •“ÌéØp4ÁÙ€2  Ãn’gCwc¢Àb’ƒ~x` €0- ¿”úB Æ,<P ô˜^€ÐÂýœÀ&¸*1/%%rAgîÀ¨ð@€€äÜYdÄà,zÓ}Æcw.x ;l·8Øù0âi4¬€c€`MNt–¤®€;^>ˆCzÛÀS 4žmð€’JøÏ­©‚à²SÚ¦vZXª@¸C, W'¦ìµQãø}`à'@ ˆE–ž¤oªÿmv5I€À €N²ËÅ Oq»â)¡ð@€4°@:Hˆ)(˜B á§qŽX÷\L@ ð`XhHàU „àgdd1Ç+|`Ú) ° @t`*M0€bPê% ²ZQØ`ì¬â`@)€ ƒ`Ë)Âxú`l\ˆ õHI–ÀQÉîI8v€–¤yd`àG¥•²¸NôbÏà5…÷Oà!àÀ/, €„¼ë°+Ö#¦&òi4µ$šœ®Å–ZqÂý3œA‰ôó3ÐYö<å=(QàHíf楀þžaƵ(êZÀÖkˆµ°1Ø4ó%C€^Bꌎ?­@/2ëâ)æ,H[@x œÄÐÄV’™†wQîm‡pq³T°e‰€T PÎPnts:Ø.€ À4!fBàP £r’¦ÃÅS€Ù€Áð唀–WîÌøwÇ@~PLPž(šÈû›†3 \Ð,å¸j¡‰øÞ£ÅÀú` €€dà3ÐŒk™‡À&àdÀj Q4ŠOGÈì[.ZL(xø€Ø ‰»rR¥+Ñü€ra7ìK<]”ÀÃy]ï`¼ðÁ¨ gl•ž×8 3+èG-Ÿæ~"ô©A¡ 6!¹I•ytQù°Ääç…¨€”줻Ùwß\ :!”C+%ÉÖ‚g‰™/!^$ æëaKzÇBÒ@oÐ2gÛñcé6 W'¦éiø"¸ @$` H„,sl `h``B`ÀlK W)(ét«vâGˆ€ À!!€0ï‹ùjð ‚à I$ €3¸@º‰½°(7 ä”›øl.˜|†I¥€ì†CÙ5=!¤0ÒÉ¥¥+éHo%§ð¿t¶žOëŽvÃä®…zÜr€éÇ©c…€ë;¸ºFP#¬Êy‘Å%g‰R¯üt¡DjXHtó6_ŅǸðóF Q4ô¥púxRˆ™zŒb9òì*uqðõ(ˆ±ôð(ãÀäìÐp€<¥“ ¥í¾;ó±ê2¢ÐÄàÒ’”%}þkz?’€À :(¤ä¾g¹€0Oåg†0G|Œ"¤ ë@ €2àŠ%ÙQûúàÈ!Ç4BBä% ¤.BÆŠ©‚õ-Iý&bæ#YJ` î<*Z:06ÁA°P@+ „þ(1²§œ TBÀ’°@Ï _‹IÛº3Œg4ÝÜ/x²ÃtL-y{àè¸0šz¤œ!†dý’Ý/±ËZÅSA]pbÿ……¬°͈ŽüuœâÖvF4*ŸÒ¹$ã8²,F@ÿG Óøð7c¾'Q¦ˆk|ëé|HüðëáCà8$ÔMD‡¸T%¤,AÇ…jg Ó'4…øG:TÛÁÚ•ÊåW@W:i—4Î]’$>U4°L ßð¡áðY„ù@ñÿZ̘ú®žÑL}üÆÖg‹¤ÔÖBÔA€âéíÔ+02ÿØó„GÇš$ÓÑŠ8æ }ŽO’+vç>Ê<Ç’O3'|Í xùanË'ˆÀ3"Ç>‘lÕ¸X}ãÁçÐ1ÓÀÑŠ0ñOÃÃø‹A059Eq8Ü=X|t—¦,XîçqmH$=w›0úêEHåÙÂ8\*cé¤8"B@„ }Âkj@3ºË~¯½ëm£¼RwnG°àêÚ¦¤Û25·ÿ³oÿ?c YðâúKJÈNféHGê`põ÷@ À€BV~ЃÂ?úÀÀàˆ =€1À&HiH, ”WID Á£yìs¾4U²©±—1ô@>P¸1€¨ "‚™0^b€„‡ùd¬^&âœõþ…@ˆÁ<Ï&rhÂHJBUÎÏøé-ÜØ³DQúp A4!€ 8°o~WÙýÎ×xÈà  ; 0¾5úù£°]ó€@* P\Ph @¡}9A=<ñ_o:à€6}É  +­–QGed¤¦¡Ÿë‚ÀhÀ@ÿt ¢ˆHÔâ“ÿãÐ4ÆQ> €À€ÌÉa€òiî4 çÃÂcÅ5dP@ð@ Ųö4ñ SØ€š(Qe`ßöîO€´ÈGp ‚É`ˉ+ vøoÃÅ ¼` ‚` @`ÍŠHGP­¯@7†11ÛTÀÀ O±)éàͧŠÚŽÐ@,@@LB AoöÛ,uÎG« Š!6F«C2¥•*›¼ÑÔ=¬ t=ñU–a:¨-Åa5¸ñ’L²5m$ã)7‹r4 W'•"¶Ø4GNHz?Šb rºnø.ê)ðÀ Ëé!†!;»îÝǪ倮&äÈßGÛÇÛÑú0A@TéÐ…û»ðÄo:ç€2°@ ¶@`ƒ·vÅl Ë—‘µhÈØÈÛj=@P¨ (à ˆÌͪI€‰˜ ¤`ê¶ÔmX0TˆX1´ŒŒÕ„‡”2Um˱u'fC·ŽkÃÚ´À†»ÉŽÍy'¨?V‘­FR@¤€È&Ë W'¦ée¬$"‰ »–”r}žÂ«ø@NRRÀ'66ifÖO]Ö]Õ lô¢WæX! Ê%è3—‡À:Å ˆ@b¶|I!íh~æ@S·2€mX0K¦ éY¾FñX¦©ÜŠoÄVSEú8Ú 2 6X W!ââ!ÁÆQÀ.­$ôÁ.oõú@˜$Ùú¤­¥‹¨ŽÌ–}Héå·%±ò¢),– u}wƒƒëh DиæY1Í€ÜôÕºEVéRVèžÜM‡qº”<?ë(!‡¸U9¸>è-‚µW&ìë"×J àªÄÇ­@GÚÇZ­U¦I7k–Áð k:ÅW!<|¸ˆ8úшà‡ÄqQÁô“”¤ÎT ]5Dw%õ¦‰.)ët°ºÈÒ<¨÷¬úȈš&'U:=Jñ!7Î0Õ=}–"¬u\¯¥€ Wm íl)@?»V!ýé/YB¢xT 20ˆœN¥tnÉf:²zA ¥S¿zˆ¤@üÛ3ë­”¡7Zh®<ÍT–N W6†uÇ€²©’b`û¥q›ˆÒéc×jÂkj/®Ð|x…ÇÂÈÈ•ìÔe©kºÔähÿå."V „ ¹àDD¡çDðúH÷s×ÔeÙzªì¹/ú׃ çÍe&wt>ºE«85AwTÅ;ÜÁ´žX Wm´û»""b)\‰Èé—"S5sXŸÍU ­; #T²tjÈôú\° W&¥i7e™Ã­T‰HØY¤×F,È*ûDØ i7,ò© sp.nà/¬À[¶Lϰêú£€P5Vø²…btúå8 sfdpðd?‡ÒŸägý°ÿZ 0ÉàTá… _߬=[ñ‘ÓÕ¿GU.˜0@­@ã%ˆe~Ϙ½‰Ì÷L˜ @<47JE†d²·öâM  ˜ɤ€Ä…5€ìšH HU™¥ì`¤ÀÆ$š„nj>Ø;\€@@°€ @Æ,4¢òqîµõA4à HYÒT@ì™%W@:Ø` Iˆ&“5 Ï&€_6!ñ«D਎ {”Ý]v£ø}(”äoÿm—ÿ» ˆ  ¥ hÝ;ýñøu‘„XNAHÿùEÓR?üu,èð €ÒHaˆû8ÎZ7 þí° I6\CE†'£FïÎs;*÷ zÄÐÀvN“»a¡ÃÃ̽xh UfÐÜZ{¾$þïÄÜ€€ &²I¦ã޹@0(,›²C\CQüô5£†¤5€W•›’¥(yêz @€x~K-ÀNŸ›¨ocv4A׸r@1Ùiü5+í ;f²o$§¹¯î@À…°ÁW è…€pŠ?2Ä&À1ÙiN‰kÜóCÚè€^ÀRÆòa|ƒv ¤ß¸Já€4¤?•ÜE`P™‰ ²("f$bu@@¸ 0²¿!¤Ão  v@3,„RHiç3ÿǯ \`–VÈHUã´ €BB!’19SˆV€ H@0ÀQ$‡ µnBÖ!$ç£ù %+HÐb‹éà[|çf×*삨⠀a’Z¶)™»¯5ÆéÚõ€C‚c{Ô>؆‘‡MÂ5SFÚ£8 vج¯êáýÚ%–Q1²ÓŸÿ§#ûl¿ýèA¨+À``L, ‹CäwãV4@¤@P°—Š+?ô@(XËÅŸÑ€@° P €@²-5ûÿÛ~ÌbÕ}H,Á†ü†½ƒzú[dóx¿æ Ð@©Ø°*w!ôÿ.õà @À3,´äþÿ›y  €¢²K@Ooÿ¼à€ ’”/³½+%Ø Èeñ©ãxûPh 1Nøoy@0À44çGX«Œ €„°%”„ÿe0û”°ÐÀ ÌÇÜņ†ë-³QõÀt  €Çà,že¸ €B†&ó9#Þ A ärÀL^VoÊwgcï. €6‚E$ Šœkfa^èh€£â^q^Üàà:Ÿâ^ôQd €€Ÿdà(_Í€÷6å*P ÀNŒœú°ïÿ¾N €:ÅÊB¶tdnÿ :æ€\À €.È%€1=·èØ®€‚§ÿàÄtì5ÿà[Gõ@) qeÀLœû(”`ó¯ €Ã€ ˜4„3¶ÿŒfacÔ»Ê@€&!|J„Ä¢ì'ïÉõhB Ì„daÛm‰Öà!N°ﺷnp`;Žû« £´Ð ÀÀ:A3elÿiCKJ$>) ß[ ~ý~×·JÇÔ+^=q×TF>Î¥GTøTèʤ>j@Y6—äp t?‡üþ›m©0 Àbi 7² GOÛ~Ø*6ÿÆßú>€ ]‘Ñiåì”~ÂŒ ÷ÖÁ`+Àvˆ`U‰½¿K7Qä ΂  ZHi!“ ¿ŒZÇUõ@ÑBxËJKýÿ6óÀ d‰¥¡=ÀXÓb^_£¸HС¥ñ¯ÿæÎÐÁ %ä0×õ€é ;! ×âo0 €zXðŠè1KçÜ@;!”`ÎfÚãÙ  s¶Ôj€€¢p¤2À$±¿ïÈ×ÌÁh@ b¨²6)9;;í”u”A @br¶á Ûfý™œH«Ë@À¬Œ„c5é€-JXËH`b~Ù÷úô@€), ¥%'ì½þôv>Ppbbt +#6퟉õm¿….®žžÿ¿žÿ¿Y¤Žlâ5ª°@#j™T×BjäºUÒƒê½4ÛÇŽ©ÁURARêIj„ ¨¡õ®µpp°iÀ t?‡Ý`@§%(Ѹ,0¾Im•òÇÜ›ÞP iraDÒ`aiÃ2QÛ¸ó‡k0@:=‰EïìÀë€ì%-ýÐÁx4€¨à€ï$¾œ5!np½` I¼ä>¾ïsÁ š@BÔ§÷éáöÐ@:À;¨lïï"Ñ ™±—¡3BS6£Ààx IˆÅtºqƒýò`@‹òbp€NCˆ†ü—Èn8;.ö`€æÅ€;Äߺw- c—ˆ*¾2àÄÀ@P !Ñ¿ϲ‰Ïv€€9å` Jøîa·`8¾Œ JÒ¡´L!ƒtL(„LF( Äd!6U‚àOhÿاˆ–Sr,V)g…ØÂÉžÒ†¡‹Œ°;:Š#vŸSK¨Ð T˜< ƒ7%ÔòÏ’ø€Z0sTø¾î¶E•Ä'GV@?1œ Ç€ìÝX'QüH*|bh…'Ž'ßZôð ÀB’Ÿ†¤=}nF¾TBÃj1Ý! =k"_c€Âi4 1å’ß%&üŸr€d€ï§˜Úæ( ɽ °@ ˆY Óá"‰õÓÀ:­½Å@€Ã€„à Aý¬ý[¨Ÿ} &4ú@©h)=?¥M|Çíóñ:邘 €âË +%)1³®ÈÀ|Bh×mdè^×£ûÀP@WÌJžam’¸ûÍ‚À )Ä *”gG^c¸ïx€‚ä2ÓÀ¡ß¬`ã®p ðiI )lŽv<@]ÊÐ2B7Ds„ÇBæ1öp@À@AD#€ 1 n€Œ…¡›¹:,´”ùÄ )BÔÄh°Òøii/þña¥ðÒÒ_ýæF ÃÁn£ø})H‹@B-%%bwBqû©¢Ê &ñ…$¾ìÈÃHÖ¨.ÁŸÍX$³Þ¸$vÃé‡Ð¿\ˆÒF³[˜úŽ mŽƒ€Œ Þ"²€='ÄEÖȡվ­ä1û­ Ë“ââpê¼5À!Ä4Uˆ’þÁ>öðd…Ø!5%ë¯ZÀg4ÑÔ=¨ ±sÃÕ¸¬&¢$Ë#U'4v‚ÉðY>œ q1s U”‰ÖHðdß÷õ—bëFÔÓ€Zðö¨×y1À9 $àµêŽSQ‘œ vëÄÄrù×Â{IÔÆ³QÕž»¬åÐ k½q3*Oˆâ*8D…ú8Ú´(:G v‹ˆ‡Gº¤€ÝÕlt›æ¬X}lÓ‰õ#€uº>$|-ˆ°‘ ß\Q€Œ­ª9­€SÓU"ªLŸš„ÉÒ\M‡qº”<?ê F£Îh>‚Ø+IYª à¨¶&8u@GÚÇZ­U ŽŒY>­K"Bª&.üDœýDœâ ˆâ£ƒäçN vÙ«ãR➤DL.©MYõQ¦Çxœ;À3Œ5 úᕺ·Ó€ z*ª¥þ¦p Àä8ƒ<¯P¨Ðú‰ÄêàòÜÀg º²l<Ò%lù,ªêÚü"¨®<ÍS8 z4*ê¦ü"îÂÁ°j b” 7h«Pb3ÇÐ ¯‘+Ǫ;ºÅƒp Yuy¿ùKˆ• xlÃæÙµ,yºª‡G@Åÿ^ `3Ÿ4<“iuE«85Au"€!q°xÌà zÓî>²ÄÈÿàcÿ­Óm«kõ¥Ö…VˆÒl}N<ÐUtùœ rlñ@Ö`.¸%løDPês£ÅŠ›þg›@ˆ \à]'¦§Ì° iT®ÉÏ\ 5ñ \‘¡ýÅ@/N¤yX‹ W'I¹%&Ú€í‚T²ê0;*‘9”¦‚©\ W$¤n›¢)"šyÓî]3Ô±Ô®D¨ò©™¦‘Tª–Se€ VÎW›gjwpºE‘ç[Ó›ÿVÞ‘͉t°pº8^¬œÎºÝgV‘5@S´‡Ìô€²fZXªGe€ W'fZ¤y–å½)Jï¢uM]èUÍ’?þ=îKîæöØ€[a÷q[býûPòu¤³šWZ’T$QÄêgHùü°àRÀ W'd²yJS¦ì‰ÿ€ìmg*|me)…AUæ¼efi Õ)âÇÜÝ2*Údg)M=t“gzÌjLÀ w–GF]ΤôÝ%IÙÍd}e[ÙO#£P.`7P™t¥&r®R’k¦ø {¸š=>(ŸMfÌ}­¹<ÑL}°¹‘œ‚Aj"¦vã‹¥Ëú‹ 8d „#͘} ô‘Im Fç8,M!Á -±ÁÐp€ û„Ö”•tÒ¿Sï{¶ÜDƒ ‡]4鎤v}Ÿ\ ¨‹T镾ЍŽ\óGPöåh~¸Ö,àt¦ãÆI2ÈÔÚIÆR¹æ…“à²}* W'ERNOIòÈþZƒìü–G³;f­)p€Ôœä;xà¼=«hdˆÀby=p¹[XðR3E€ W'¦ä²uÒ[¹ÃëÏsåÖÖ÷I9ê€eIoÀ¢u#Ȳ3œŠoÄS)¢€}íMèPu&l° W'édÀ÷M$ôÌÖÇHûõ$¦ÒŇÒ#™’ϤŽN›F©Î€<¨²Ñ` u}9ààû´”;ªæšEStޤ•œl>˜eüG —Uäü%š&â}+‘笋[„üèTëR‡ÒÀ}ZaD‘ÚÕ. lµ9 ãåÄ@ÀÓF G€jÅGÌ¥&r  \š‘侑šÑZ@gMÒÂ鑤yHóÖ}h¤(>©Ë”®C¿€‰Jtg2ÄU€©ÊúLÀ W6B»[ÊPëp7rÀ?…P1ÖP­p:€ÈÑâÉôÓÁä MÕKE&SŸ½")3“ÍO®›)BnéÌ7p9=R¹8 WnWªÉGiî>pX}Ò°…aAwp3ÿÓ5‡ÞÝÇÚÄ.>ìZõkQÄ@Õž@€]YÐN—¥…ÂÌ ˆ ŸL „ ¹àDD¡çDðúVÍ¢ÁðW¤ÔýU;.E‹þšðcœù¡à,¥sè}dÐ*V– ôÔSg ËÜÁ´, W7i÷ZT"’RNGdŠMÊå+=3èUÓ'XÔ–FäJF¦G§Òy8 W&¥i'2ÌáÖªU#af“`Àp:"€w} À퀾ú•ÉÀÛyhˆ \à]'¦§Ì° iT®ÉÏ\ 5ñ \‘¡ýÅ@/N¤yX‹ W'I¹%&í!8_ ®Ìç)€kk^'©²|ê.@ kÄÀh<¡Æ¬ Ú™ìYÕ¥Ÿ"Ò©‘ÙJiÑ8*•ÉÑ` W$¤n›¢+lNéÌ8ŽF‡‡¯0åŸb-âs‰ñUÜYÎ~Q:`lUxxU£ð©$Qbp äט’x"\@ ¾õ€Î”)B½y‘«’)\8ðpñpõ¨y$À6exê[€w r(ŸMfÌ}­¹<ÑL}°¹‘œƒ‚ÔELíÇK– õ@€ÈG›0úé"’9Ú‡NpYšC‚@[cƒ à# û„Ö”•tÒ¿Sï{¶ÜDƒ ‡]4鎤v}Ÿ\ ¨‹T镾ЍŽ\óGPöåh~¸Ö,àt¦ãÆI2ÈÔÚIÆR¹æ…“à²}* W'ERNOIòÈþZƒìü–G³;f­)p€Ôœä;xà¼=«hdˆÀby=p¹[XðR3E€ W'¦ä²uÒ[¹ÃëÏsåÖÖ÷I9ê€eIoÀ¢u#Ȳ3œŠoÄS)¢€}íMèPu&l° W'édÀ÷M$ôÌÖÇHûõ$¦ÒŇÒ#™’ϤŽN›F©Î€<¨²Ñ` u}9ààû´”;ªæšEStޤ•œl>˜eüG —Uäü%š&â}+‘笋[„üèTëR‡ÒÀ}ZaD‘ÚÕ. lµ9 ãåÄ@ÀÓF G€jÅGÌ¥&r  \š‘侑šÑZ@gMÒÂ鑤yHóÖ}h¤(>©Ë”®C¿€‰Jtg2ÄU€©ÊúLÀ W6B»[ÊPëp7rÀ?…P1ÖP­p:€ÈÑâÉôÓÁä MÕKE&SŸ½")3“ÍO®›)BnéÌ7p9=R¹8 WnWªÉGiî>pX}Ò°…aAwp3ÿÓ5‡ÞÝÇÚÄ.>ìZõkQÄ@Õž@€]YÐN—¥…ÂÌ ˆ ŸL „ ¹àDD¡çDðúVÍ¢ÁðW¤ÔýU;.E‹þšðcœù¡à,¥sè}dÐ*V– ôÔSg ËÜÁ´, W7i÷ZT"’RNGdŠMÊå+=3èUÓ'XÔ–FäJF¦G§Òy8 W&¥i'2ÌáÖªU#af“`Àp:"€w} À퀾ú•ÉÀÓÉy sq`Áÿ7eV`-€[&gÐÕ}P *ª‘®4ƒuYÕ>J€<ªC¦¤“hÿäp tœŽ|9Çn ML9™ö·Z…‰³Tâ ãÍ„Y¸)yϱê Ô h;ÖÝÇØ :¦ ÃŒ`-‡ ¡Ü»Gý‡TI d«î±5¢tœê%UÁÀÔ€[ÝAÕ.ÔËG)-ÇDšÈú”¸\ñ ^»„‰ÐQ:5!dúàp ±d`ãH0ð¢< ]uغؠëŒ1p`Ð €/_B²PÇòVqŒk¼¨40 ô™Æõ6Ë€BX䥕²R”¬ô°¨ Vø €Ç§Q‚WŸÈE²z2ˆ4€© ü[cìy€ Š ÀQz1Ð rÛŸà@6H¬ðhÀn…aøt°`&HJBI¨ÅÏ|A€cÐ[–èêx ðÂ÷K áö‚`Ò€4%¿ÅtàÅœ[„žsaoñ`:‰0 €0äÀp‘j)œ¿U;¿1}…2£Ýbäèù¢`¼aä¥Ëù8Ä’¯w5œà²=GÀT>€| 0 Ü&²Ï0ƒà4[äŽuÊ` XqiC÷BQØÍ³¿á÷܈ d^YÉ)p¿|-`zT|ß²>lxJ:Úûx K2H 3ßù$”ò¸A´7nœÛˆ ƒvßÑúÒºC¼Ð /^PДð½!7 0 ‡‘n (€^xˆK÷ÉCâ=Âz9`Q8~"\ £–BHaะ À @N¬ˆZKÄÄ#p“ؼ¬Äû燑 @Tà0zLL&â`b[ó6fÃ'@T$ÌB¤Ð͆l_P{ÀT%Ø “JfbúƒÞL@Ĉ Ÿõpò< @1‰ÕÓ€Z>º*´ M4uå@çÁõÀ a€.Ú¢”l>ª@[4v€\ Êp t?Š€!˜ ‡£ögv܃}€  &frò0jH¼á÷Æ~ß7;Ÿ{à@€k^œM&ŠJIcSÛ1îs€œ Œý†ÜàbP r?lš?´€3†ÐË|ÌžG²°à““ó'sÅÀ2€$' BQÔŸ–&Úà8U þoy;âN"^[â{ê?‹¸ eî‚4¾œ‘ˆËØö kÀo¾|w:û˜ 7‚h˜ †”!£üçœ.øÐ   @Bh`jŠÙ8kþ¬¾-wªZ‚@t¾“ùõ @0H¼7 !'͈öUY\sV‡ü&€*FÄ *¸4ä2ñM¸ÏǵíÓöÇþÚöéûcúµÄÀNx A¿!“PR¿oÖ¡U¨)pœŒOíŽ4[ÞÌ0X@0!†£ÿË^K)y®¸ @!Ä%~œØ%ΰ!&!†”Kù#ΰ!,!†”5“Gòð(M ¨Z @ýÞTozp@F ¾¯ Ü4jÆžO¼ÀˆhÙ0 ÔZ7Áö ;Ñ`0,bm@v¢ÀtXÄÖŒ©£àóÔdˆÀby=p¨å ‡€²3€ vèª?‡Ý`@§$((Ó°(0½”û«õÜ™€NÀƒHA¹ÐZ:8~ùð\ˆA¼„‚ñèï"o&‚ñû½ßx €¨À€í%•ѲR`¿zÀ£€Àš‘^ù @2‚ù`$a¤ÀÄŒ_q;ó¶õõP 8bZ›óï@¸à:GwUä*ˆ‘ÝÕGP0Y4Ñ ¤ ´¡¾6ù  C‚ö&@`bhÙÆoÒ“;f<(ËëE¤¤ï¹·T €.Ì„ZR‰Üö;¼€€<(RQòÛ´€€>(RwËaÇ£üÜ ¨` ¥'%öŽýªox €ÀbF¡()~ã;íùùmx°À •‹ÐÊç+ý»ó½p À0&€€š”$®Û«·kÖÔ"h ©BP–Ý]•W€æûçËÃàýOsåÖr€už¨@;Ô@ GHÈh& _j?‡¤´Ž”ý¶Ïÿ;m{@@€| ÀP°‰¿œÙ-ºûÇ\ð@°   4&@Ttô'%/œï³g ¾° pCVC …ô’Ý)æw÷(@ T†€ÒÑò1ÛÜÀ €I¸4´|ŒvøŸG¼1 €f°Ñ½cM÷L0xøô'•¤­@À5 97÷ývP@-x“Æ ¼Äƒ¡ ™My¨…ˆ_6:ç€ìœ !àP0²Ò»‹Q·Ì I` €§OéìÏÄkè € äÐЀ™ a,èç(Ã\   „-¶»fY·ªbY\lî"ôÀ–W£=ÄI*O€gQÂ,,Teh Èà v‹‰l17RNµÑü´%½ Y]!Ÿn1óì§ãï´‚ !€„ Ð£†%²RvÅ_žÀ1Ș‰ $ÀÜûî{@Ÿ+(š²Éß8Ô#~ÿ­Çšr€1Àƒ áç¹@3À'_dz?¼€œàМ”uxdÀtÜc{É 3€fàäÜWC%,ÈëÑ€-€\ZQÊûîǼÀjBŠ0Ä£¾¼à(`Ñ™;¾£Â ˆ°\3”CJ:>fíyp@/ À2,0h ˾|7Ž×¿I0 €ÃåÐp*­¸Ôæ: €:!Çq¨Gw2`;xBÞîÜG£øÐ  ed@ª>Z~K±‹9î(`@€m`¤ß»wû(~o—}Ø@@Ò9 ¾ Nn=¬À: À ÉD4«; `€T Þè@Î)@?º¨/¾C£øH` @@çr™Ø$óå €„ÒòJïÙÉdþ»îh P  ÒÎýX œ)ÔR{¸Þõð@-+e~ZA¬­”4.à` à Õ’ÊÛý·ÉÆfˆ k*1 Ã@3!!õ¿×Þ`p(øô½ÀsðƒlÀ1 ä0(Y0°†§'7røá5†‚a7¤¶ õ†‚PnHB[>倞 €M>&£’º ߤö0=¯bî@bQ5À—¿üâÝõî@ AÐ0 Ix²ø×üƒu1'Ø Ó÷ IÿŸ`p!…·NÇû „&éÃ~cèø@œ 'fYd²Rÿš±× j̰ ÃKtÿÿæÖ¤`T †¯§½P €¨ ÃQò÷øË˜„¢` Ûm¶UÌLÑ0Mš€>&€œ†Œß¿y@\bÀÀtžÒÐá›…ZAÈ`ÃI‰I1=úó‹¾X `€² À€© ™ºÐþc±uФy@: J•œÚÜX2€tœ„¬ê>H +±˜Àƒ@ÀÂÀÆÁ9oÀåLjaH&‚‘™Ûl;eBõdÔËIiïÿ{Ó!“RC-%¤ÿäš§8:ò#€ ß\D¨À‘à@ˆøœóH”YEP’‹FJ:¾ðð¨þR€€°ø¬0²haH@o_ß —{°@½RÈD0ÐÐÂÔØa]ÔyúùU`  €2¼¢PÀ `næÙdÄ`|Éé@ç2È `;ÌžŒ£ûð .„"hÀP¶É`|xrîÈ0@7:PÄåŽ÷çÀ°@`P´¤ðÂ``a}ÿtç:ô€¤Åùa¤ÂfKÿÙiÇ{Œ @× NØ7Œâî@ ö/ŒâèþÔ1!f%'77V$ *Va‰¾d^à䧆-’'W5ÔOº€Aø0Ïò`_ã[±\(á÷908 vø/\äÀ`: À9@]ºà:¹&d†Pƒo¨ ;€^Q1?À·ÆdtÀ‚°à Åä@Ý÷ìõ€À oRPxúCƒz’Š?@LÙdÎÏåHdßÏö‚à!„ß¹¼Ü z°a©ÎBH^ž²8ÜN§Rc?J(úIÀTšœIj €ÀN^ø¤ž;Ü€€¼ˆmÐ ëØ‘È™€@„8pg,çøs‚„ZĈÒ;¥€Ä¨ˆá;ÑúðÀ@Gô£ „”¯,gf ¼¨ ‚ @C‰‰ 2xÔà|pœD¼ ‚8ŠH ñHï»t-•Îk΀0  ‘± >fü¤)ƒ®Àà$¿ÐL =w`àãA0%jú¾ €ÊÂa² 2S~7mº‡6v2ó€S“.!B!bŠ+6ÛT3l©‹&!9zì ' ‰cCâ@,º‰ 'HËMtŠz”>–ê…GB qU°ÕÀ>G¡â ª@üœéÀ vÙ«ã‚/“  0Ñ þ€¡04N"h@ î$!oׯ#/‡’qÜŸÀ䜔ã“ð`fp(€ •€ú@;÷^@ÂÀP@Y$w‹&@Aœ´¬c!÷ã‚Ðq>& šM ãqeîÿ¼ƒà*PÈaœjKÑøp € ††ô›!#Uú(FT°%§îHA™ ûñ˜xÊYp !èKøYþË€3?@Ì_Áþ´ À6Èýí²±XóV÷,ð@ d`(LFûm»SJÃ@vM!ð.ZR'Ú€ìšMà\´¤OªÏ¬–¶ÑÞ$huh:¸mn­ôà z*O«]@Ü  !ñРê …k‡Ôx²}pqLÜP¢t6êȰàÖÏ’Ê®­ rt$µ®S8 z4<º©€?HMÜ à0°ú…˸ñrucÃê G`g6>>jñÑûT œÄꃸŽN€~Ä:"€v}C@=i@ÀÈà7$°pYn…“ê6Õìw#øX| Óh(TQë€Zõ,?ê ?óH±‚šÿùœ zÓî>²Kø™à¢}n›bÃë`ÇÿZuhy[“cêp eøWO™À q³UÁ+uú¡àȉPÀìqø ¶g[؈ \?K•NæØ´ªW2Ï\ 4øÐ )š¥Äð¿.eb, W'2JMô±=ù«kµŽµŽ¿‰äqDè,JâüO0@2ÉaWRRy]rÚnK'E€ W$¤m¤ºMànÉöO¯Fü(Ò ð  ÷7€ë ùˆKø ~àvH6û‰ÕæŽ<€qŸ ÇAdý0Ÿ`,"° hÿhrB¯ã™÷ÚMH³3M2¦U%“6X VÛwŽ¤Ë¦¹ÍbˆÄiÍE¯ô‹ÃÀþD¿˜p.á$ ñb,ÐW˜.Þ á`?‰ÀÒ =Dà/êÈ„èŽ@üà ô,{ú±ÀvÀXÀJ„šÔ/â ÒqCÀÚé¬Îºn³©¤MP”ÌÒ3Òɶèê[, W'zYØëŸúó »Äc Æ„€ql@€<`,:þÈ$xû ‰Ö=dëø"p4GJ',ëù|€®.þ8e€bjjMNô*™#ø÷§÷sM°~ltÛïÚ‡“©,ÑP¸(Nd• q:™Ò>œ·¨²˜ W'zX¨puÀî^a`DÈ,£áàn/æ`{$ˆ ßòTÎ?³€=€fN€[ZtD #RndOüciœ©ñ´ÊS ‚«Íêfi Ò•ÈXùþ8ÿŸLµµfxq“rjièêÑHP2Ø4Ò° w–gÕ^a?ˆ B€60?Æœ8¦€‡ˆ5à¢x b ¡à€-Sâ:OõŠ‚œô–O$¤œÎh #é•oHæðp’x5ÿÀ/¤ŠLå\š’k¦|Ï^h üëþÀ::´±z“vÙ€Ì <  @1€Êᮀ…x(þLJWˆp <‰…¬z ;Ki),Üqt¹`ÁÿH²<‹#³",¨ºFr,4†£aÓœG¾Øæ*b óÀ }Âi¥%]i[VÙ„óBÀÖqœðP¥ñb<•ºÇø@±n{W™›%g¬Å¶4û à4ÖÊô`UxEô`P!¥?|ZãÀeŽŒl¨`„ÐÒÃ@R¤‡s1æ@(H´•‹åvø r$7 ?|©“Q¹ù«31)HoGÙà@À4½ `°)¸îÀ[-,ðÐM(¬•¤æ ÁüšÌN’g @8DR@b€)†ÿ†2ÜDQ`'A3 ã5`Ä ÐpÔ9Р+‰8 ±0€„ÀÒ@j1ËGû³‰òy+ÿÊ^1¾“ù_þ„ïŒjiDwï°ý6·¦œõ@2¤”ÛÀ¢u&¤YÎE7€gZFšÑ 3ôÊl° W'édÁÛþî©'¬€ðhaDÒbC>n•¡?¨n;ø¸¢ie$0„ZIg?ß2;ŽŽlP €¹- á‰|ý¡ØDü# É]xÎN÷6€€þ@€r°„¤R†‹ÊNf:È@E™!@[°‚s×H £€\‚I¡‰ C¤næm!p€˜³†Ý<¬VÃÀ€5Å ' ä¯ÝŽ€1rš@büUÆA¨–hqEtlŸ±Ù¬´ÛmHJyiéçþò-<´ôóÿ¦Ýú’Si`j‘ÌŠì">’rmSœyH²3E€ u}wƒƒé©[®'=+í‚€pÞéºGRJn ¶L 2ƒþ #…Êj O€ÜÄEpÀÝ$äyë"S €bÿ€]ʃý5(},ÔÓ $ŽÖ©p 8¦u°Ôäìže‰ŽCÅ@_Á Ô.’9JLå@ ]5Dw%ô›jST‡“é2™XÐêGž³é‘H>P})Èò”Ê;øH‘¡Õy̱`ªr¾“0 Wn*à9©@?¦Ð¹`ƒ¨€i”+\ 24x²}k˜ ˆ‘ºj[Dr“)Ù÷¤E&ry©õ×&Ân­da»ÏT¹8 W6ŠõL‘„vžãàg…‡×B,`g¦x¼>¶Ðxˆñ ±ðºdúŒµ¨Àâ êÏ @.¦t“¥éAáp³â(gÖPBÜŠƒø0´‰Ï°úylÕAdzFMœ¹ ÕîxYPðRGmi”Õq²¥`ù`Áÿ^(Ç÷¸<<ŠG– W7i÷LŠ„RnIÈôÝU+¶¬ )ÊΙõ“•Lœ°òù‘¹‘XúªÑéô™ÉÀ W&¥h‹iϪ•HØ[i° à8@;¦`ö8ƒ|€[Jäàœ @ˆ \?K•NæØ´ªW2Ï\ 4øÐ )š¥Äð¿.eb, W'2JMô±=ù«kµŽµŽ¿‰äqDè,JâüO0@2ÉaWRRy]rÚnK'E€ W$¤m¤ºMànÉöO¯Fü(Ò ð  ÷7€ë ùˆKø ~àvH6û‰ÕæŽ<€qŸ ÇAdý0Ÿ`,"° hÿhrB¯ã™÷ÚMH³3M2¦U%“6X VÛwŽ¤Ë¦¹ÍbˆÄiÍE¯ô‹ÃÀþD¿˜p.á$ ñb,ÐW˜.Þ á`?‰ÀÒ =Dà/êÈ„èŽ@üà ô,{ú±ÀvÀXÀJ„šÔ/â ÒqCÀÚé¬Îºn³©¤MP”ÌÒ3Òɶèê[, W'zYØëŸúó »Äc Æ„€ql@€<`,:þÈ$xû ‰Ö=dëø"p4GJ',ëù|€®.þ8e€bjjMNô*™#ø÷§÷sM°~ltÛïÚ‡“©,ÑP¸(Nd• q:™Ò>œ·¨²˜ W'zX¨puÀî^a`DÈ,£áàn/æ`{$ˆ ßòTÎ?³€=€fN€[ZtD #RndOüciœ©ñ´ÊS ‚«Íêfi Ò•ÈXùþ8ÿŸLµµfxq“rjièêÑHP2Ø4Ò° w–gÕ^a?ˆ B€60?Æœ8¦€‡ˆ5à¢x b ¡à€-Sâ:OõŠ‚œô–O$¤œÎh #é•oHæðp’x5ÿÀ/¤ŠLå\š’k¦|Ï^h üëþÀ::´±z“vÙ€Ì <  @1€Êᮀ…x(þLJWˆp <‰…¬z ;Ki),Üqt¹`ÁÿH²<‹#³",¨ºFr,4†£aÓœG¾Øæ*b óÀ }Âi¥%]i[VÙ„óBÀÖqœðP¥ñb<•ºÇø@±n{W™›%g¬Å¶4û à4ÖÊô`UxEôÙ`lœÞJÎX°ë¥¼D°ý6·¦œõ@2¤”ÛÀ¢u&¤YÎE7€gZFšÑ 3ôÊl° W'édÁÛþî©'­³S‚¡î,×ès6Z­@iXâwB]‡´ƒYÄÊól·‡¹<å‘„}…ég Í^f,!dæ'¤º°y‘å\˜‰¥”ÅnïŽqPpŒÎ4voƒÇx1A°@À¥5‰cPÎÄi©Åg5ÌÒ~(¡· 02AH€ À§è/€¥N<= @€iÜY3€™Ð•–y>€@EÔ!„2Ã}ð¥`@€s°à&P`ÂhjZ0Fv hxÈx º ÃL  ຠ•H9ë"S €bÿ€]ʃý5(},ÔÓ $ŽÖ©p 8¦u°Ôäìže‰ŽCÅ@_ÂHv¡t‘ÊRg* ]5Dw%ô›f@šw­°P „ÄF €]X<ÄPbyhËâzÃÈ€ É B€¡k݇1¸Ap´“››_dî³z`d8 8|äÀg^ݘr´ž0Í{nçûÿóÿô€àž³é‘H>P})Èò”Ê;øH‘¡Õ9̱`ªr¾“0 Wn*à9©@?¦Ð¹`ƒ¨€i”+\ 24x²}k˜ ˆ‘ºj[Dr“)Ù÷¤E&ry©õ×&Ân­da»ÏT¹8 W6ŠõL‘„vžãàg…‡×B,`g¦x¼>¶Ðxˆñ ±ðºdúŒµ¨Àâ êÏ @.¦t“¥éAáp³â(gÖPBÜŠƒø0´‰Ï°úylÕAdzFMœ¹ ÕîxYPðRGmi”Õq²¥`ù`Áÿ^(Ç÷¸<<ŠG– W7i÷LŠ„RnIÈôÝU+¶¬ )ÊΙõ“•Lœ°òù‘¹‘XúªÑéô™ÉÀ W&¥h‹iϪ•HØ[i° à8@;¦`ö8ƒ|€[JäภŒd¸ ø})H‹”¥".R”ˆ¹JR"å(üu".R”ˆ¹JSïâ.RÚâ.R™ér”§ÿD\£íý>þ6xÙì Ôšn„Ó¡0Ø|²76Ônjo¼Û'xoãæŸFÆë¢;Ò"å)H‹”¥".R”ˆ¹JR"å)H‹”¥".R”ˆ¹JR" ø})H‹”¥".R”ˆ¹JR"å)H‹”¥".R”ˆ¹J‘ŸöÃýh@€<Ã'P†1~²tdtõoÄFGOVüEÕK¦Ì+@8ÉbDß³æ/bs=Óf MÒ‚a™,­Æ}¸“B¨&`i 1!M@`@;&’~f—°€ @:“NC’j¹¨û`ír À 5°Ò‹ÉǺ×ÕЀ1!gIPM|²ft•|j6˜@; 8bC5 Ï-}ëûïqµjR"àÍAš”ˆ¸Ú”¤EÊR‘?mN•R=pl7Þ=z!÷Œñb”¤EÊR‘)JD\¥)r”¤D ø})H‹”¢Ôˆ¹JR"å)H‹”¥üEÊQ)ÈßþÛ/ÿvA,@J@Ѻ2wûãðþê"°*œ‚‘ÿò&‹!§ ¤øëå€=^‚º@© 1gËFá_Ý @Ö À €Èa°ÄôbHÝùÎge^ä/Aš²ÀÀ Òwl48xy—¯-   Àb€+OwÄŸÝø›ð!dÖI4Üq×(“vHkˆkùè kG Hj¯+7$%JPóÔ>ô@ ðü –[€?7PÞÆìhƒ¯pä4€b²ÓøjV/Ú@vÌdÞIOs_Ü€0. `-‚®@ Ñ áæ@‚Ð$4¤¼²ú¸渶º€AÔø Kü²Ö/Ýbi4†Ýkœ7'bL¸„LÊ)VDÀ A‡#_ @@¸¼„Rx-J$ûÇ8 V“@1&€¡ ¿S?稜%o} ¯úuÅe€4Ä„^OÛ': à ¤$ì»6  À0&HIÙvR¿Ïà€”­ @AŠJSÀ¶ùÎÍ®Uì0€@üÄ À*Z_(fZÎe¹ëyÂiDÔd•òQ×¾½€ À§€;-zÀ¸¥£¡–b”©Óµu³\£Óý©»è‹”¥".R”ˆ¹JR"åR‘)ÿÞ”IÑ7ޑݼ".R”ˆ¹JR"å)Hˆ ø})H‹Ÿ?¥=".R”ˆ¹ýÿŠO‚ˆ¹Ý¢YeË-9ÙÿðJr7ÿ¶ËÿÞ„*¼ÂÀ¡´>G~5cDº@t Ùx¢³ÿH…€ì¼QYý€@° P €@²-5ûÿÛ~ÌbÕ}H,Á†ü†½ƒzú[dóx¿æ Ð@©Ø°*w!ôÿ.õà @À3,´äþÿ›y  €¢²K@Ooÿ¼à€ ’”/³½ °P€œ†_ž7µ€Zï†÷” @3NtuЏÀ€R@;rYHA1?öS¹K ‚ Ì}ÌXh`²Û5õÀt  €Çà,že¸ €B†&ó9#Þ A ärÀL^VoÊwgcï. €6‚E$ Šœkfa^èh€£â^q^Üàà:Ÿâ^÷õ`À@NIJa-"þà8ês­€ AÌ  ray€yï€: @0!bƒJA!¾Åd¬IÍz@©LI  Q)= B÷sö4]  X˜M&’¹Æ~­h Âi4g|;ó¯í@T€™}JD\eÒ”ˆ¹JR"å)H‹”¥"  ø})H‹”¥".R”ˆ¹óúm¶¤À'ˆ`A¤0ÞÈ)<mû`¨Ûÿï @¤B$tZy{¥°£ýõ°@˜ ð€b˜booÒÍÔyó è„ÒHdÂ`oÅ#ƒÅñÕ}D4@†€^²Ò’ÿͼð€Ybih_Ïp4ؤ——îà C@†—Æ¿ÿ›8@0—Ã_Ö`¤€ì†ƒ_‰¼À (‚é` ÀBB( ~7 Å/Ÿqì†P ƒ9›kŒd2€LÎÛZ‚ (€œ© „0I,oÀ{ò5ó0@Z€ƒ@€j¬ŠGNNÎûeeÐ@d€@@€œ­¸BvÙ¿fg*òÀPA€0+#!Íz` @–²ÒŸ¶}þ½ K©IA‰û/½Øø@À ‰ˆ Ð(¬ŒÛ¶~'Õ¶þººz{þüººz{þü]‘æÌâäĆÑ“¸£¤}GÞ7ûÆÿu_­ @s&5&È`0B ‹IÙó¬RÚúH [‚ @MJH_¥¸ÁÜV¾’^èNÉÜý×®Ø Z€€ ‰¡¡€SÝüb;埽ÌÐ)4Å ¢ÒèsîpÀ C@LZ /þ‡Ùïô0°€dœ’“›óÅV€`ì° hB?ÍÅÞ (A\†È$4 'lÿ+ºÖ;^ÌXÀ˾ÿ^`€!(!›»¾¼Ð„ †nîø}ù°@R âh`“ÀªPÌËRÔ>ù8 2 €\L„Ð*WaˆÛõ¿Âøu÷ðÀ É &¨ïÑ·¼` .‚b€ëCJPës¸°;t%\€””¡'æÖà @ et¡'á÷ð÷ÉÛ£¾ëÌ.œ¿½Õ°@¼p ¡EĤñ[2~ß¶8(zîOF÷¦’|¢Ñ÷Ê^kÑ I¾QhoŸ/YÁ´Åêb·íLS€²iÍ•4ì"Æ.™/Žu6úy>v£uèìðèÞYqpúSo©r”¤EÊR‘)J%öލ¹I± bFsˆÒフœ“¢å)Hˆ ø})H‹”¥".R”ˆ¹uœ” @ Fà\°Âù%¶WËrox @¥É…I…§ ÉGnãάÀèô%c¿³x®°”P·÷ô0@ž *x ;É/§ H[œ/Xo9¯»Üð@Èf€„5)ýúx}´Ð°Àª;ûÆÈ„€(BFÙ”eähLÀP…”ͯ € Hà1&#ÒéÆ÷É,ɉÀ:9 bò^?!¸àì»Ù‚˜ ì|BéÜ´-Ž^ ªøÈ € @(„l_Fü c>Ê'=ÚBç•€,)+㹆݀àú0)+J„kÆEè0 ÀÄd ­¶Û6T+€€-€€°*œŒþÞö`~a ÃCtIEdý²Âqh €2!€j–+ þì0D0 RÅgýøh§ý},p @7€‡€„ BõIûp.-fÞ8A¬À¬L(0†Žöd¾ø¤à €b JÆRp€12¥kãÿ‚S#'o–æÓ£#?çý­­‡TÅì÷Ϲ‡½¸4ô@ €é%€ìe$5»»|=x*õ`A€ À’€ ðb7ø#änµ×fÀ1ŽQ]‡ýÚ€\á¥ØݯŒ€€’LBÐ*ÒJHÜj‘ÙŒ¾¸ €‚°T ¥$ÄæJLc}ó`@)r€†€TÒˆa©ñwGWgk ð@9¸Œ¡4èÃKBSзÏl`}ÌÐ 1tMA0 áˆÿd$Á0`€ìá5„<ÈÿmÌïí HE€€›Ñ³72¬€²h¥$—ó|m„1‰ NMt|ÉN8uØ Å”Ÿ—›Þq1(¥c¾÷œ”R·Wß_‚p@ž!€,ÌRò2P¢Z#«ß!p@Æ0 h€< JF†äg߯«mú@ ™`PÄôüÉÜû怀à:|C„0–V啾ýòÃók°¬bJI41n®À´riH ÙÕ¯å®ð+6®D¼ @2 Ø Ay;;}ÖÎE¨½ï¿GÍ÷^½ß¡*ù_Yèú?ýΖŸo?¿çÎÊž¾ Í©³hÎÑr”J[E¾‡ÛÅŠSwÔˆ¹JR"åu)Ýâ.À•Ùñï ÿ†gÐ7@1i ®‚ÿ3è±JRQ øûhâÞ!¥ŒË¡0¼kJR"å?jQ*ˆ·Ä à˜ “@$)<ö'ß_°@Ñȼ P¢ÓÂS¿uõõ‡| 2€OÀ2.zMÎø„œû·Î:ûÈ F€) Päô¨5,ýÍ狹¬†´—óŒmrë@ªKçf×é@€jz²ÓÿîŸP%! ! À=Äÿm!–K/ñv0@-/ð ɇ’qÂo,58‚%憣 3ˆ¿‘ `àP ô6IÛ·FuŽ|è1¶Ì*öÀ€lLøácPžCïÎÊe ]âP†½%òÀ1 ß’¯`Y|° Ã\Åkõ€æa  €2,1(NÌ–Ê|ì}0P€„†’Û§›Çß,ì†RQ,fGÊʾÆ P²€B4i'ž&â p!-¿÷ àQ mý¤©(H,ñü}àAô1bK/ñ¨PÖr=ô€ § !¡œó/ bä¬[Ê; Ö HDÄ€è·Ûvö HDΤ¾Çr5ü@À<00!§}ÒRûó·<>Ú`¤€@: (¤ŒèGüÅíýŒ À €@—p#÷ÍÖŒ«Ô‚È @ªq…¥H-±æs/T$Àb3’ò=ꘄ‚þç "ß¾ @£8@/ÙH¡­‹NÛõcÔØÛÙ= ° @©¤ÒÏæñõb@b ;%ôð¤{uÒéë¼pÀD"²‚F#^Hà „"[#¯† |˜ NLAd2þ%ãÿ¾V@% H|´–Q ¬Sm¾tæ4H«í…¤პ¾N@&‰`@M¿d:ÝlÖà :&  /m“³î/lZ^ÙgÜ^½  Å€dC¤ ÀÓóÍ"ûèÀàÁ e¡%|ÉøëóP €\F€h€NLBÜb[;·Æß[0@\!,Ø,„„í’_$w?òu p^±7ñ¹[´0SÃX„ûãL÷ôË&9½Ë @Ö,  ø5(dã»[À€hËFÝIøêàK - ù÷ e ”³¾¸‹ A ¥õüX!Á‹PÂ` ‹½9=’“N;š|ôà JÄ„2ŽN'ß A ”šà:F&¥]ýÏÆß``ƒÒ˜®’ùiFAëWÞõ@ À ÄÐ2Œ¤õÞ˜häÀšQ›~»åÒ”º®«”¥"-€¯ûL?þ@ݾ¡HÛ?œ½áóØËÔ¥%)JD\§ÏJD\©OþñJ~Ž£§mb”Bru#}ôo¾€ ø˜ ÿA^` {öpÕ€Ä3¤¯i ,°þ1ȱ“wÔÝç„ÒZ4»·ˆ±OŸR‘Ò ²o( €1Fý°Ä÷Ç„gf5Þûà O¥!  ÀcÖ”ž&øP LÒPqhCí”ö7|ͯ¹(° U(p¥Âî@/à |¸A· Åñþý!hÜ»œ` ÈHn´ á6ô’Mawàˆ°ò‰h=‡á÷¤Ð0BOx¯ A "ºrvÅ! B¸ÜgÇ^Ré‚Èâ`À @fmÑËã–O¹—¶‰7ÀbM,z{^È$ÞC‰4±éäëô`,xHˆhJ:qhÿ1ï­¨ /frI„"Ò‚_^G"5lBnL F^W÷ %²Ò”†£¥•·|ë€ xgêì@1àaŸ¨w¿´È²J@E’pãïš‚è *ðDÐRgBpÆÃ‰#Ü€À€ÁÈ@;p ›fä†;Þx  (!!‘‰mŽÙ^€`)ˆg)/HPiˆg)üʼ¤Â°`aE`<„ +mwÀ Rô„C (§%¡,Ø~÷ `*B Ù\05(ãî°(CH/ŒºˆD4‹Åëû¨ Q x@¨iDÀ‘©vGÜåÞ¨@3¼ É@îÄ~z  @bx… &“Œ_Óºµ©²ÃïHü!@¡@1rÀt„ç|…³œ½yàÃLÈ,ýŽ÷à’“ö;ŸN`@KzôRBØ–Â?#o ðÂ5(F ¿S}¶>p@0€0,¬P R2Yñ[/þÙk¼°@DÀÀ0@b6ËöÀ @ð ÷)s1ÔHÞª9H;©°áwEèAT €` NCÁ˜²ñ];²÷eåcI÷žœð(PÀ@C Ù9$Âó|à{·ëº@tR¢j G^úéÑ P5£¯}¢Á¼ AXø(gà IùŽþïÊäÀÖ|Ø € €``à'è@ÎKOÿeÿà3¾ˆÄ™ˆ@U;÷ŒÈà :)#õä6ˆøBEkç@ ÒB¼ q£( {â €ÌôÐ`I}< ¤/º¨ø`IÛÀBøà Q€;ý ÂË~^FÄP°« 5I„°(”Ž· r`Òã—~”¥éÞ•ÊR‘zü›Sm©.2Ü¥:[Ò7Þ7Þå)H‹”¥",§ýâóA9ýŸM9^¤îɶ‰ä¿¤˜˜S'ù`™¾BäBß±þ øÛéƒ@LL ïйilQ ‚ 3ï D\Ýõ)H‹ì‚À,°â҇±›gÃï¸ȼ ³’Rá~ø0 ZÀô¨ù¿d|Øð”u‡5öð@–df¿òI)äÿp‚hnÝ8· ì5¿¿ZWBa÷šà+ÊzÀr‚>¤&äPò- À1‰~ù(`¼G¸@/G, 'ÄK„rÈIïà`€¦CÄÐ ÙÇž²ƒ˜Ÿsnð <€-@ÐäÆä!-ù›2‚É×ö€BW Øj8÷²¹@T5 ò}ÊR•Ur”¤EÊ'ç§NÓ$½â,nÞ‰ &Ý%ž?£r>NýPϡڬ ¢ŠÁBmˆÔަþ"Å·ßs¾ûˆ¤@b^ „Ôœ00¾âüeøË÷õP@€^B ÀOY%·9WÔ쀖ÀO‘ïš‚0ÜCÄü–¯ÒÃñï},XhÐ¥—Ÿ¬>ò ‘Ð`ÇZò@# Äk¤ ‹N` ó{ä@€>”¤ ~–û!•}l ‰œ°“Ä{ãÀ€D‡&ð(_8¬÷ÇáÉõ§`ãª'NÀ:H~”¥êÞ¥ÊR‰NFöÑþÚçûD²nÆÖ€„LÞr`øÓ« 9Y$­ßÚ@/+Ý7œ®7Â$Ä20ˆRSµ8ÌçÜ¥))\¥)sçôèÔ¤6†×6Ú”¤D ø})H‹”¥".R”ˆ»€€€ÌÐÈCÑû3»nA¾À€“39y 5$^pûã?o›Ï½ð @5‚¯N&“HE%$±©í˜÷ ¹À €NP Æ~Ãnp1¨9¶Mý¤˜ 0€v[ædò= €€„˜œŸ™;ž.”Á 8jޤü±6Ð1À0¨oó{ÉßÈBqòßÈCß_Å\2÷A„_NHÄeì{µà7ß>;}ÌÁ€4ÌCJ‚ÑþsÎ|hP  €¡405 Ålœ5ÿV_»Õ-Á :ß ÈIüz€ $ ^“ï )K¦è¹JSý´E·ñáÍ‚½", 2¤EÆÔ¥".W€€j€ „†žÃ>Á꨺à4bL0"!“K,•Ãqh@‘™c”N äÒiE`>‰òœšM(¬¾”ì×õ€@€}[‰ @N4šîZ~ÊÌ2÷`ɤ°+Ùyî S€¤Ø°ð3Ó¹inÀYzM冸»Äl8Ñ[ŽÄkÆt9 ¸ìF¾H €›À3!p ì.ø¨ J€4¨ ÂRÇWË0ˆ}ö@@TJ0°9Ä´; ×ÂAÈâtTB¨Øae1Móîë}ÖDÞ‚`À'Úê Ro@`Áý¯‡JRôoBäH{ò»BŸo¡9÷М7|>õ€hXi}ÿg«0˜™µPÔᔃ4þ?Ú†> &Ãzû»ûf¤QßÂßY#ï®R”ˆ¹JR"å)H‹”¥"  ø})H‹”¥".R”ˆ¹uœ   NÀ\ ÂöSî¯×rf8 BB !çAhèáûçÁr!òj Ç£¼ˆA¼˜Z Çî÷÷à@žà*p ;Ietl”˜/Þ°(à0&¤W¾F  €~XIØi01#ÜNüí€}}T¤–„£æüûÇP®8‘ÝÕy €C€b¤wu]@ÀdÐD2’‚Ò†øÛ怀ؘM€ ‰ ;g¿JLí˜ð£/­’“¾æÜp@@ P*¸2h J'sØîòfð  HIGËnÒnø  HIß-‡:ÿ7(jÄB€©IÉ}Ÿã¿j›Þ¨ D€€à0Q¨J F߸Îû~~[^,°@%bÀt²¹Êÿnüão\0   &¥ +¶êíÚõ€5ÈšjP”%·We^yÀ1!¤˜PFãäß|ùx|K+—«®ìÐ g,ú¼—ŽHîŒÂ!Šh‹}½>íaõG¾˜`@#¤†€ÌÞÂãoümÿ´Ih))ûmŸþvÚú @'ù1 ‰¿bŠJ²B?º·m @špBh0GOBrRùÎû6p«ë@BäФ‡Ë Iýûû\€À C@vQ ´|„u:ƒîP ‹ ¥ËGÈGSâyý0é8 ÃSû¿ä{aOÓ„Õ^*ž{ù@6,$2‘ïñ—–…ט…×à ’p :BÀrƒ„ß $€\Iî•…d!°sð»ê € D0 À€€° —,®ý³ñk〠€`€tm‘¸a[%³a¬µkÓ @”M& 1Û¹ôAXè&† 1Û½ÕJRì».R”ˆ¹ÞÚèÞ¿Ó/tæÖÁ™RÓm©Í ¤ ×)JD®R”ˆ¹JR"å)Hˆ ø})O×r”¤EÏöô}oû>­@| Ñ‰Ò@bKÊšCq_9·M"MÅí Þ}å¾úûÀ,è-xÈé ûqŸe?}¤(Á  €í1-’“°¾*üöˆDÀ HI&çßpëØø 8 YDЀ¦NùÆ¡÷ýn<л”ÀŽÈ¼_ç=ʈžÑ8¢û#ßÞ@Nph NJ:¼2‰`:Nî1½äÀ3prn«¡’–äuèÀ‚H @.-(å}÷c‡^`€5!ÅbQß^p 0hÌß^@) @€2ᜢQÑó7kË‚x Af‘aƒ@NXÍóá¼v½úI€Tï(€PmƧ0±ÕÄÑ;B;¹“ØÂ÷tnâ=üh „²²  U-?%ØÅœ÷° @6€0ŠRoÝ»ý”?7˾ì  iœ„ß§7Ö`àd΢UÀа@*Ðot g ÝTˆ ß!„_ÂC¸7;”ÎÀ9'Ÿ(` D$&—‚W~ÎK'õßs@ Yb…V–p'êÀ`àN *“ÝÆ÷¯‚i[+ðºÒel¡¡wð0ÀpÐêÉemþÛäãG¿³Ä5€˜…Èa Œzßëï 0¸|z^Îà9øA¶`‚r,˜X ÃS“›¹|pšÃA°›‹R[úÃA¨7$!-, ð@ˆdТhñ5”íÐ^ý'±í{@Èp*‰¨&œ½ÿçìh¯rb€€jKÀ—Ƹ䨈8ÀNŸ¸jOüû € D-ºpÞ?Ø€`PL!7Nó| @ΠЀ3,²Y )ÍXëÐ5fXa¥ºÿókR°*CWÓÞ¨ÀTá¨ù ûüeÌBÑ0m¶Û*æ&è˜ ¦ÍnèÑ4$<†ýû÷”`@U,hÒRSâZ?Ã?4E` "‚Y øi1)&'¿@qwˬ@tØB!“7Z¿Ìv Ž·Vµ0 NBBNU¸Ð(€br³˜]ó€€2ðPš‚xaéF}øà渑 )ÂR3!m‡l¨^¨!–CRY}ÿ÷¦C!–KIe÷éïr”¤çr”¤EÊRŸí´µÊS}éñ¾÷)JD\¥)r”¤EÊR‘ øyÑ~ðùô~ú"ÆûÒ;íÚ"âsêÒ1eÕ[ïFÒA|®©¤¬^]¹3†f‘S£zlÚô÷’6Fk‘ (š„”Z2QÕ÷…"/´€€°ø¬0²haH@o_ß —{°@½RÈD0ÐÐÂÔØa]ÔyúùU`  €2¼¢PÀ `næÙdÄ`|Éé@ç2È `;ÌžŒ¿¿‚à@2!–Œ l–ÇLJ.ì€3p€ƒ¥ NXï~|+ JO &ß÷Aîpó¯H@€,Q–L&d¿ýÆœw¸À2 pÄíƒxÎ.äÐŒ1;bøÎ.þÔ1!f%'77V$ *Va‰¾d^à䧆-’'W5ÔOº€Aø0Ïò`_ã[±\(á÷908 vø/\äÀ`: À9@]û® +rfHa56ñ€‚¸åð |fG÷L¨ +^ ^H ß~ÁPì õ%¤0é7©(¿@LÙdÎÏåHdßÏö‚à!„ß¹¼Ü z°a©ÎBH^ž²8ÜN§Rc?J/¤œI©Ä–©¸! åïŠIã½ÁH À€fÝP¾½‰y@8@€‡rÀ`^€÷8(E  @@#ºQX @@(ް}úðÀ@Gô£ „”¯,gf ¼¨ ‚ @C‰‰ 2xÔà|pœD¼ ‚8ŠH ñHï»t-•Îk΀0  ‘± >fü¤)ƒ®Àà$¿ÐL =w`àãA0%júûà€Š  ,&‹!€Ã!%7ãvÛ¨sgc/890âD"f(¢³m°áC6ʘ²b—®À*pЖ47þ)Ô˨št€ì±¤×H§·÷$0tŸàzz`(VÕ>ŸI å Ÿî`ôœ‰P”ü¸àÄc £ý2ú>Ö3µ)HÎÍ1eä@5?jÀÞ’û.a¥ôTC åeeÚž™f! fÒÁNËcŒÎ}ÊSöÔÝô¥r”§ûD\:›ï2CvðGþ"Å)ŸêD@ ø})H‹O»R‘s¼5)r”¤EÊR‘)JD\¥)nCÀÀ;œ„X”­&‚PÂo~¡1ß¶Ëáïg¤±iAÉøGòÅ¥'áõð@8@ŸÿÈ®ýױ耂0 y! PB†õ¶g߇\:H0$0Ä@jwäg‚ÒïÜ9`ì47 Ù ¯ÐùB0ê €€(?p*B ÈWߌÄëÆRŽÄ=  ?ÑÀ€Ÿ f/àÿ} €Öˆ¶GèGm•ŠÇš·¹`€`ã#Bb7ÛmØpªšV²irÒ‘>Ð4dÒoå¥"}ÊR•NåzR"çFô©GÑj Ô¤EͶ¥)q(ɈÏ GFñÑ’~¹¶Ô¤R^…h:Â~:ˆ:,ðÛh‹‘--éÓã°ßÚ,”Wþ\´²5#f‹›6¥) ø})H‹”ÿj$¼V>ÚÏŒñÑÓ·µåµÎ˜47üZC!†¡ÕäQ3—QdÜUы޽¨  I»­ê@tC,³ô‹œ¬ê€À+‹íuÒˆv¥TÜ¥:vôÉÞ"å)¾ôˆ¹JR"å)H‹”¥".R”ˆ¹JR"å;Ò‘?ñxuÓ#h‹9áJD\¥)r”¤EÄÿ´PD¯Ó/ÇÛŶÔý¨ÛG§mâ.vØ>ˆûÖ/#z°Çú2rc"Å)H‹”¥"  ø})H‹bi]:´°(”Qöñ,3}"ƒyB&“vBÆuËŠ(›×BÀ¢Õ@Àϼ¿Ýy^y(ýs˜1<é ˆ ÊÔ) ¤¿Íí$±šå½éÿ´åv\MîJó¤ '&rCÔýãƒ7ëÛ‡R‚öËB<]…^Cáž\bG—6ä‚u9¯Éé+òA?Å·¶˜°(D‰IëÊ™  ‰u(D‘ÈXýâÙ Ð_m½P!ò2XùÊxLG;U ÅfÇA7“ n6mJR¨¹OÛÒœè‹#~ Ö6‰ßè¡ ‰df±ºàÚ(má“¿‰üÞå(ûS§mr¦,†‚²üá ¡ Ñ·ò(˜Yg#ÝCi»Ö”—ժɟ§?¾‚Éœ3,*Å)HŸ¿ðVÔh—Ú"áa¸§XCåöD ¨I~„ b»Í?§¶:,€§åKÕ#6¢Ô’‘¢å)H‹”¥"  ø})H‹ŽÔJsSîñJ?Œ|ö¸ûø!h ¦ë„\¥)rŸoJD\¨3R‘j Ô¤EÁšƒ5)pe6jR"å)H‹”îÔ¤E–ôúˆßë-õ6ðlôÞ?þæB¢’†ãáHþ·,ÈHø€9Õt‡òÄÒöR~¶(#.ÛjR'ÓÓ×ÿ¹JR"ä~ DYÅhmµ)þÑ)B^¦ÿø‹”¦¤EÊR‘ ø})H‹”¥".R”ˆ¹JRCk”¥#F¹þÔ}FztoqõD•…ðømî>£ïAš›m îR”ލr”¤Cû”¥"Ü¥)þå)H‡÷)JD?¹JR!ýÊR‘îR”ˆr”¤Cû%þÊ®ÄÀu¸G¨ˆi0›˜²‘:e¡)Ì„Œðâ¯h€Ë ÊK9:Æ¢o Fãè€ tŽ¢b0t¨)`ŒÓ&Q$±¡Í¹—)JSîR”ˆxþˆ \â©<ýÀ]O˜ `ÒªK§s×`ÓXÐ .hÐ.Ãä°©XrÀ W'I¶_I!=ù«kµŽµŽ¿‰äqDè,@>xqþ'ƒ d°«¤”Òr%#9ÊðÒNW'E€ W$¤n›‘m!ü Ù>Éôô`Â"rq`x±Ê˜€D¿€Àîdƒgÿ¸O0Œqäûˆ$øPþ: 'êxðð Àp,pããÉââu”) ð@ÊÀ ƒ ,`ÇÝmøð^È”' È?¶ïó ·<%PÄ´ŸÂv4}õp@À-~X!£Ka½oÇÜ €ì§ìq>âTØ £~Õ‚ tÀ@Ñ °Bï  0î5%ïö$¹ïð   ÀÃK- À- $'ü9Í\¬ –JÀ¤óÍ#îF€`À|° K Kž3t,RPi1°`e ’|Y 1@cç½ÈÕ‚€p²¬w<,QBÍ® ÚÚ·]5Dy¹I)5“7é) OûúS w—tMÒt`çÿ$€´ŠÖè2ÿÝ™BaC­ì˜E<ª|@'B¡àÉþ±PS€þ•Éä”›ž:û}÷70\ÈúÁ`4` d€1‚8€W¤4¥ ¤¬£ÀðRð=Ëól³ÃèÁ„ß±n+ãñ €tø ºSþZ”$÷íúÂ…Á˜0­ÿÈnøá`>ƒ0a[ÿ0@°V ³i/âúþ±½ÜŽ&/¿äûu¹ÔØv¡ ?¯20_nÊá~HààPµ¾cXŸlB©lÒw 'ƒ_üúU&r©”øÀrºÁ0 ÷ø ƒOü`êP<Ö®i¸ë©ç˜ÌÀpØÓÀÑÀÄ  >zè_¨¤€ÉwñþuÀv“lˆ¤Îl„Àg­R€}^#˜¡$CHÌb™\8êYà3°kÌŒpdÿ„hN<$PMF¶‰öfÙ`lœÞJÎX°ëéL‚eßä='SKs.ß9qy^b­‰ÖbœâT8[s=€Ù@^ëP0ÿ×™.ÖáÔké#€Ýƒ7ýƒ7ýy’Å…YÀd¡R¦Í…`ð«'Òªº{)´–Un8¢}kSɶX W'éfö(MÒI=6Ì9LN ‡¸³\P¡ÌÙjµ¥c‰Üa vÒ g)æÙor yË#4û ÒÎ6šžf,!dæâpªy‘8ààÍ»œG:'DzȆP…3Ñ¡áÔó1aÌ·±ÂUadFðÈ9l$8Ö-‡ÓÌu,.<ëáÊWf)³á«lÄŽíÂ䇨é,ü}ƒwüŽÇíGëÄ"që ¶"›g­ÜØçsÄÒm¥£ËE€ u}9ààúÜE°éT³íT’$pu6À³88ú1ƒÀ7ŽsaaDhàêy’Àƒ¬Ýgò0úÍ0ðá …oO2cKH[‡Š0󜞀Ò]O2â$…Âsš~ô–çàãÿ0«U<Ì?ÃÙøt-áëœ{kQë'Ș8}$w=C²‰õŽsƒ£…ÐU<Áî?#È0ylj‘™JÊô;c‰Ô=‡èYçSÌ'rÀAFHc,Lâ]g°tO§”>ÕZ‡rðê®èW8 W"›D9b©#”¤ÎT \š¤èò›UÒPT‡¬«'@,¿`=Â)âY pök€d!jƒ¨œO„Ìpé\‘djºY'Fꬫ»Q¼u™b*ÀTå}&` WÚLTÀríwÍ»—zKÓ(Tø@da8UÈÝUXü»Ò"“9<ÔúîÈí#]Ó# Þz¤òp Wn4k®<•Y &&ºQñçéÈ@"åƒ à4Þ/§hÃëMp}#+e°u;.Eˆš½Ï "@jÊW6Ze24 {>P\¬(ÕÌPó*„R<° W7i÷r&ˆªÄRnIÈõ9F¥tJÍ\×¢t«Q©§a|IdndV>“ÍŸIäà W&¥h‹>x íTªFÂÞ×F,È*éd;m+“€\9øˆ \â©<ýÀ]O˜ `ÒªK§s×`ÓXÐ .hÐ.Ãä°©XrÀ W'I¶_I!=ù«kµŽµŽ¿‰äqDè,@>xqþ'ƒ d‡]$¤n“‘)ÎW€¶’r¹:, W$¤n›‘m!ü Ù>Éôô`Â"rq`x±Ê˜€D¿€Àîdƒgÿ¸^fiÿ¸±Í,þx°µ µ‹Ž1ƒ«ÌâxÀ<‚è@z¼²¬w<,QBÍ® ÚÚ·]5DxÎRJMdÍúJB“þÁ£þ”À w—tMÒt`çÿ$€´ŠÖè2ÿÝ™BaC­ì˜E<ª|@'B¡àÉþ±PS€þ•Éä”›áõà@@à@LCFNJ>Ê߯1µ„'£ï•òô!=|~^¯3ZÏ`—Y8ŸFóÇ… €='VYÆel(Yò`d"½–·#‰’j­ÖçP×™/·åp¿$pp¨Zß1¬O¶¡T›f ¸I<ÿàÒ©3•L¤‡À.•Ö € ÷ø ƒOü`êP<Ö®i¸ë©ç˜ÌÀpØÓÀÑÀÄ  >zè_¨¤€ÉwñþuÀv“lˆ¤Îl„Àg­R€}^#˜¡$CHÌb™\8êYà3°kÌŒpdÿ„hN<$PMF¶‰öfÙ`lœÞJÎX°ëéL‚eßä='SKs.ß9qy^b­‰ÖbœâT8[s=€Ù@^ëP0ÿ×™.ÖáÔké#€Ýƒ7ýƒ7ýy’Å…YÀd¡R¦Í…`ð«'Òªº{)´–Un8¢}kSɶX W'éfö(MÒI=6Ì9LN ‡¸³\P¡ÌÙjµ¥c‰Üa vÒ g)æÙor yË#4û ÒÎ6šžf,!dæâpªy‘8ààÍ»œG:'DzȆP…3Ñ¡áÔó1aÌ·±ÂUadFðÈ9l$8Ö-‡ÓÌu,.<ëáÊWf)³á«lÄŽíÂ䇨é,ü}ƒwüŽÇíGëÄ"që ¶"›g­ÜØçsÄÒm¥£ËE€ u}9ààúÜE°éT³íT’$pu6À³88ú1ƒÀ7ŽsaaDhàêy’Àƒ¬Ýgò0úÍ0ðá …oO2cKH[‡Š0󜞀Ò]O2â$…Âsš~ô–çàãÿ0«U<Ì?ÃÙøt-áëœ{kQë'Ș8}$w=C²‰õŽsƒ£…ÐU<Áî?#È0ylj‘™JÊô;c‰Ô=‡èYçSÌ'rÀAFHc,Lâ]g°tO§”>ÕZ‡rðê®èW8 W"›D9b©#”¤ÎT \š¤èò›UÒPT‡¬«'@,¿`=Â)âY pök€d!jƒ¨œO„Ìpé\‘djºY'Fꬫ»Q¼u™b*ÀTå}&` WÚLTÀríwÍ»—zKÓ(Tø@da8UÈÝUXü»Ò"“9<ÔúîÈí#]Ó# Þz¤òp Wn4k®<•Y &&ºQñçéÈ@"åƒ à4Þ/§hÃëMp}#+e°u;.Eˆš½Ï "@jÊW6Ze24 {>P\¬(ÕÌPó*„R<° W7i÷r&ˆªÄRnIÈõ9F¥tJÍ\×¢t«Q©§a|IdndV>“ÍŸIäà W&¥h‹>x íTªFÂÞ×F,È*éd;m+“€Ôw) sr›²ë9t¹»zÌùêªBí…Ð}@ÕHÏaö\ ç q"p¾]™ÎSþÖ:Ö:¢z˜ð; GÀ.¡ù5¨˜ ’8Õ»SX³«™8íZ›M¥MŠIau¬:#€ {”ª' ôæG#CÇÃÇÔÖ}ˆP·‰Î$ÅWqg9ùDèU±U  4~$Š LNœ€º™šî,sK?‡l-Bíb「`ê˜+Äð€yЀ4ôx¨Š—Û÷™„ù8èv\x¸÷E7'‰´ôÓo:§UrÙ¤ê=I~ëS€ tˆ¡mÀŠíxT£*dë?»ðµ%cøXº'È"JÍ…ÔÉjg<ÖfçÓÀeböã˜:ñ¸'< ìlÝ@ÐS!dÕ`£Ý¶¡[TcÈ ?¡Æ°[T€ *¿aðœøJ‚ªÅ N€Ý‡åˆ¡Òvö*¦‚ÈäJS²3j{‡€Ëг¡ÂÕ/DlÞ¦ e ‰úìÐëQ:”£j«~^9KPº@ÀŸfºôÇeÔÇ2‡Ô²¬w<,QBÍ® Ú‹[ýé«“j⓱µtƒÚœ ¿žF:nǵLø k'¯ü$ÿ‡Ë3ƒø 7žñ̰ÈaU1.gˆ€rÞÅaä|õ …ÔÄub Æõ>³©f¶º™óÎ Ø}pDÐøfJ'ÔƒpptZ®-v%¡jÕ2Y@yÁâ£ÈÁÇ <÷¥HQêdHô>Kž·WèÃC æ©ž` (b€[}˜BaÊ Áu3ZÏ`—Y8ŸFóÇ… €='VYÆel(Yòn `2ÄU–·#‰’j­ÖçPÔÈÁ}¸+…ù#ƒ€}BÖùb}°u ’ìLˆL¸Ñä==>>¸ ³À_<ù‚«<@ëzÛÕ açÁîi‘ùÏ48X d° d€íL¤­]g#mNÌÝÀÕ(åÔC'På2ˆþˆ+D?j™}²q¢ÈãÅ(‹@/¼còŒ•1\X…X•œ8x ­g€Ô[Z°à¸Zä€Î RÁÑæ-^Ç€øEŽkªbMõÚP0ÇEÂÖt(‰ •LÍpó‡›d`ð èœ@ f­°ìêV#<;å`H"®¢9ŠD4ŒÁ)•À>¥ž9 ö¦Æ82Â4'(¦£[Dû3<>¦bÏY°ÿ‘×K°èjôgáÒGl>˜} õÈ$&6^O¨àˆp]  Ü&µœ©¦Í YÆsÀeB—ňòVëáFŹíS3d¬õ˜ ѦŸdšÙBŒ ¨³”µ©Z– _ò N(¤—ÎB:B¬‚Exxyèþ"€@W,š^+e®Øˆ `€,»¤ “s#;ÙÃ®È Y‚@0Ä1…ôb²Tìp —}1ÁdxäÔ §3âHçÁV€€g{X\°° s÷Â(þRL  ¢olvS¬´mT`@¾0:qH:2~v}ð[â5÷0*`â©{¯j@p$-¶ÙyYc}‰`€X^Ï’›$‚Jv|”Ñü$ @‡`0gý{rѸSÕâММ?}È×ÙÀ°à:BåÛ2zxy·(€ @0€„1å€)NFË-L~´!€œ3„/Z@ €NWXw£ùníèYD.Z ìjQˆÿ_E!¨(¬0l¼5K7Z‚à @c¾À;ã>XJÇ;î"¤ ÏòC škû ØZèþkÀ/À ~P¤"¾?fÄm!$ +· A{œÜßUÐ ¨i °ôïŽé>óÀ€xØ’€*5Ø`5;P°(©#*`T`ˆ•‡TûŠð€À C€Ô|KÈÃCÍ-Ív¿º;u}}۫Ꙩ,‚ä‘ì°5Ja¨Àži„sÈê`>Í~Ýf=À=¥R¦ì/Ô…X‰9áê‚ÜVQ Ž’e‘¤‰MR¥S€ t™0òqÿØ×© aX~¸Pã$UšÃ˜Ð¦'Ç?€:¢ yµ0ÜÀ3Ï>r°€'cÀ,çQ íÿP)%s“¾ç"gÁg1NRCÇèü° KV`¤ 2r]œ}õ@@Ì3†€å†ñãï…‚˜ $CWN/%lç€ÍWÐwÀbMJ¢{¿qƒÜS^p¤ ™,a÷žù0¦ìuÐ@¯ÞùÆÇ€ì •òÒO¼Ð €º‰E§ ÀEí@!à H[¹³€—{Dô :ä(2q%ê>À`P*Bø%!r€Ä˜qi8²€j@“?rbU‡}^A¤åu†'y`ÒxÉ`ÒxôQÄ€Åt¯± 'à¥büÉ,;€á8:PÀ †ü‚¼|BËQ:>!aÔ`˜R©E•ÐZL6ñà€ØV˜&”¥»ýèÀà @5,§&'ås½â”À¨ƒI©&%[å,à5lÌ €éQ(v¶jCÒIÁÕ0` Tš ´º91aÙõ¨Žp €@BIÀa‹,¡œ•²:Ýyj±ë‹þˆ S’SÊZÂÕì?$ §£9øÕÔÄ<ð`ÿ–ïÉñîÀ· Qµ‡U\$dUmj4(ö¬`Êgb|Aš;r%„ÑP!®òc‡s@IÁjÕ¦£#8 tˆ¡mÛèv4ðáDédHzŽ©‰4î·€?’h¸ñ8¸?­bÇ qSå‘“þÀÒÉÀl,t'VsÇ6#k0áÁfPÔÀìÀP!€`†‚ÐrÏÙÏÞp Áøü° HY‹ÌĤv„vX'ÄwƒPXha!)@½âË(‘Æ8ïèþHMBnî͸Ä*Übà ¥$°(QD±†¡œ;oyÍ÷Ï—‡Ä²±yz‚€3‰]DÒÂé@ ;+¾ ,.Ü^à0?JC ˆ-;vÙ â;]à€@¼”–|­–‹Â› }|ãÀ¤wFaÅ5€ @5 +‰ 0XC0\MÔ‰ €4Ô¨ß65 Dªx2ih) &èV %)WÌù¤÷åøþù?CŠÛ!F³©Hx~g'ÓÀ€‡ær}µ& R€MÊé +!·éã1Æ7¼è %\ˆ01 Ù{l¿…ÜÎú`€j@Ž’j0{ ´ Àb_îf´!€^ð’ÿªa0 Â‰…bƒ6(¤+l£ ³à?j¡ÂÛ˜ìÈÒ=ÀÜoZ‡þ¦Kµ¸uúHà7`Íÿ`ÍÿS%‹ ² 3€È0)B¤)M› <ÁáVO¥I¥T–UG5¬Tg v*}Tj;˜G®Xy•0å0Q8*âÍq@>‡3eªÔ•Ž'p„%Ø{H5œ@©ƒ¶[Ã܃rÈ >Âô³„橘°ü…“˜ñ,lçïoÙζ®?Ð÷j˜€à" 6"~u›ãÔÝ^ÖñÎ¥ªŨ"ôøO‰ÂªdN88sGnçʼnñì°â!”!AÌôhxuL8Ň0ZÞBÄ U…uÀg å°àX¶S#Ýd :Çør•ÅYŠlø@ª˜‘ݸ\ãÛ%Ÿ°nÿ‘Øâ=¨â}D"që ¶"›g­ÜØçsÄÁÎ ß\õDvr<ªYöªŽk`ÔôÕ¼Êf'¤º¦\D¸NsOÀ>’Üãœæj©˜‡³ðè[Ã×8öÖ£ÖN©‘£ãÔÁ礎ç¨vQ>±Îptpº ©ƒÜ~G`ó#2•”èvƨ{гΩ„â.Xè(É e‰œK¬öî‚ÉõkjµT8û—‡MãÎUĨ†-•¬Èò4œéÀ {w†‰bt=ÏE’c“¤aNQ'g~Ç-¬ðS…Q»Q,Ð8û5ÎÀ2µAÔN ¨”&c‡Hâä‹#CJUØÙ°BÃãkõ?¦§ z=vµZêg>@ #Þ’õj‡Õ.8]r­g=<‚;Ñõ¯<–\Õum@BqõEvèULà z4k®µï]ž¡sÁñÐuT€âuh Q‘æªmmTQë¥û: ’Ì:iP‰œ {ç‘Bô}D§yÚÿ­¢dÖHM»Öæ­L:´'Ô[<mlëR o¹³oú§j—Y¡@>§™À rmz½rä¨|…  ” ®Œ6"YULñà-.„HQßm`-‚¦p·bitstring-bitstring-3.1.5/test/test_bitarray.py000066400000000000000000000213231271665413600217510ustar00rootroot00000000000000#!/usr/bin/env python """ Unit tests for the bitarray module. """ import unittest import sys sys.path.insert(0, '..') import bitstring from bitstring import BitArray class All(unittest.TestCase): def testCreationFromUint(self): s = BitArray(uint=15, length=6) self.assertEqual(s.bin, '001111') s = BitArray(uint=0, length=1) self.assertEqual(s.bin, '0') s.uint = 1 self.assertEqual(s.uint, 1) s = BitArray(length=8) s.uint = 0 self.assertEqual(s.uint, 0) s.uint = 255 self.assertEqual(s.uint, 255) self.assertEqual(s.len, 8) self.assertRaises(bitstring.CreationError, s._setuint, 256) def testCreationFromOct(self): s = BitArray(oct='7') self.assertEqual(s.oct, '7') self.assertEqual(s.bin, '111') s.append('0o1') self.assertEqual(s.bin, '111001') s.oct = '12345670' self.assertEqual(s.length, 24) self.assertEqual(s.bin, '001010011100101110111000') s = BitArray('0o123') self.assertEqual(s.oct, '123') class NoPosAttribute(unittest.TestCase): def testReplace(self): s = BitArray('0b01') s.replace('0b1', '0b11') self.assertEqual(s, '0b011') def testDelete(self): s = BitArray('0b000000001') del s[-1:] self.assertEqual(s, '0b00000000') def testInsert(self): s = BitArray('0b00') s.insert('0xf', 1) self.assertEqual(s, '0b011110') def testInsertParameters(self): s = BitArray('0b111') self.assertRaises(TypeError, s.insert, '0x4') def testOverwrite(self): s = BitArray('0b01110') s.overwrite('0b000', 1) self.assertEqual(s, '0b00000') def testOverwriteParameters(self): s = BitArray('0b0000') self.assertRaises(TypeError, s.overwrite, '0b111') def testPrepend(self): s = BitArray('0b0') s.prepend([1]) self.assertEqual(s, [1, 0]) def testRol(self): s = BitArray('0b0001') s.rol(1) self.assertEqual(s, '0b0010') def testRor(self): s = BitArray('0b1000') s.ror(1) self.assertEqual(s, '0b0100') def testSetItem(self): s = BitArray('0b000100') s[4:5] = '0xf' self.assertEqual(s, '0b000111110') s[0:1] = [1] self.assertEqual(s, '0b100111110') class Bugs(unittest.TestCase): def testAddingNonsense(self): a = BitArray([0]) a += '0' # a uint of length 0 - so nothing gets added. self.assertEqual(a, [0]) self.assertRaises(ValueError, a.__iadd__, '3') self.assertRaises(ValueError, a.__iadd__, 'se') self.assertRaises(ValueError, a.__iadd__, 'float:32') def testPrependAfterCreationFromDataWithOffset(self): s1 = BitArray(bytes=b'\x00\x00\x07\xff\xf0\x00', offset=21, length=15) self.assertFalse(s1.any(0)) s1.prepend('0b0') self.assertEqual(s1.bin, '0111111111111111') s1.prepend('0b0') self.assertEqual(s1.bin, '00111111111111111') class ByteAligned(unittest.TestCase): def testDefault(self, defaultbytealigned=bitstring.bytealigned): self.assertFalse(defaultbytealigned) def testChangingIt(self): bitstring.bytealigned = True self.assertTrue(bitstring.bytealigned) bitstring.bytealigned = False def testNotByteAligned(self): bitstring.bytealigned = False a = BitArray('0x00 ff 0f f') l = list(a.findall('0xff')) self.assertEqual(l, [8, 20]) p = a.find('0x0f')[0] self.assertEqual(p, 4) p = a.rfind('0xff')[0] self.assertEqual(p, 20) s = list(a.split('0xff')) self.assertEqual(s, ['0x00', '0xff0', '0xff']) a.replace('0xff', '') self.assertEqual(a, '0x000') def testByteAligned(self): bitstring.bytealigned = True a = BitArray('0x00 ff 0f f') l = list(a.findall('0xff')) self.assertEqual(l, [8]) p = a.find('0x0f')[0] self.assertEqual(p, 16) p = a.rfind('0xff')[0] self.assertEqual(p, 8) s = list(a.split('0xff')) self.assertEqual(s, ['0x00', '0xff0ff']) a.replace('0xff', '') self.assertEqual(a, '0x000ff') class SliceAssignment(unittest.TestCase): def testSliceAssignmentSingleBit(self): a = BitArray('0b000') a[2] = '0b1' self.assertEqual(a.bin, '001') a[0] = BitArray(bin='1') self.assertEqual(a.bin, '101') a[-1] = '0b0' self.assertEqual(a.bin, '100') a[-3] = '0b0' self.assertEqual(a.bin, '000') def testSliceAssignmentSingleBitErrors(self): a = BitArray('0b000') self.assertRaises(IndexError, a.__setitem__, -4, '0b1') self.assertRaises(IndexError, a.__setitem__, 3, '0b1') self.assertRaises(TypeError, a.__setitem__, 1, 1.3) def testSliceAssignmentMulipleBits(self): a = BitArray('0b0') a[0] = '0b110' self.assertEqual(a.bin, '110') a[0] = '0b000' self.assertEqual(a.bin, '00010') a[0:3] = '0b111' self.assertEqual(a.bin, '11110') a[-2:] = '0b011' self.assertEqual(a.bin, '111011') a[:] = '0x12345' self.assertEqual(a.hex, '12345') a[:] = '' self.assertFalse(a) def testSliceAssignmentMultipleBitsErrors(self): a = BitArray() self.assertRaises(IndexError, a.__setitem__, 0, '0b00') a += '0b1' a[0:2] = '0b11' self.assertEqual(a, '0b11') def testDelSliceStep(self): a = BitArray(bin='100111101001001110110100101') del a[::2] self.assertEqual(a.bin, '0110010101100') del a[3:9:3] self.assertEqual(a.bin, '01101101100') del a[2:7:1] self.assertEqual(a.bin, '011100') del a[::99] self.assertEqual(a.bin, '11100') del a[::1] self.assertEqual(a.bin, '') def testDelSliceNegativeStep(self): a = BitArray('0b0001011101101100100110000001') del a[5:23:-3] self.assertEqual(a.bin, '0001011101101100100110000001') del a[25:3:-3] self.assertEqual(a.bin, '00011101010000100001') del a[:6:-7] self.assertEqual(a.bin, '000111010100010000') del a[15::-2] self.assertEqual(a.bin, '0010000000') del a[::-1] self.assertEqual(a.bin, '') def testDelSliceErrors(self): a = BitArray(10) del a[5:3] self.assertEqual(a, 10) del a[3:5:-1] self.assertEqual(a, 10) def testDelSingleElement(self): a = BitArray('0b0010011') del a[-1] self.assertEqual(a.bin, '001001') del a[2] self.assertEqual(a.bin, '00001') try: del a[5] self.assertTrue(False) except IndexError: pass def testSetSliceStep(self): a = BitArray(bin='0000000000') a[::2] = '0b11111' self.assertEqual(a.bin, '1010101010') a[4:9:3] = [0, 0] self.assertEqual(a.bin, '1010001010') a[7:3:-1] = [1, 1, 1, 0] self.assertEqual(a.bin, '1010011110') a[7:1:-2] = [0, 0, 1] self.assertEqual(a.bin, '1011001010') a[::-5] = [1, 1] self.assertEqual(a.bin, '1011101011') a[::-1] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 1] self.assertEqual(a.bin, '1000000000') def testSetSliceErrors(self): a = BitArray(8) try: a[::3] = [1] self.assertTrue(False) except ValueError: pass class A(object): pass try: a[1:2] = A() self.assertTrue(False) except TypeError: pass try: a[1:4:-1] = [1, 2] self.assertTrue(False) except ValueError: pass class Subclassing(unittest.TestCase): def testIsInstance(self): class SubBits(BitArray): pass a = SubBits() self.assertTrue(isinstance(a, SubBits)) def testClassType(self): class SubBits(BitArray): pass self.assertEqual(SubBits().__class__, SubBits) class Clear(unittest.TestCase): def testClear(self): s = BitArray('0xfff') s.clear() self.assertEqual(s.len, 0) class Copy(unittest.TestCase): def testCopyMethod(self): s = BitArray(9) t = s.copy() self.assertEqual(s, t) t[0] = True self.assertEqual(t.bin, '100000000') self.assertEqual(s.bin, '000000000') class ModifiedByAddingBug(unittest.TestCase): def testAdding(self): a = BitArray('0b0') b = BitArray('0b11') c = a + b self.assertEqual(c, '0b011') self.assertEqual(a, '0b0') self.assertEqual(b, '0b11')bitstring-bitstring-3.1.5/test/test_bits.py000066400000000000000000000327321271665413600211030ustar00rootroot00000000000000#!/usr/bin/env python import unittest import sys sys.path.insert(0, '..') import bitstring import array from bitstring import MmapByteArray from bitstring import Bits, BitArray, ConstByteStore, ByteStore class Creation(unittest.TestCase): def testCreationFromBytes(self): s = Bits(bytes=b'\xa0\xff') self.assertEqual((s.len, s.hex), (16, 'a0ff')) s = Bits(bytes=b'abc', length=0) self.assertEqual(s, '') def testCreationFromBytesErrors(self): self.assertRaises(bitstring.CreationError, Bits, bytes=b'abc', length=25) def testCreationFromDataWithOffset(self): s1 = Bits(bytes=b'\x0b\x1c\x2f', offset=0, length=20) s2 = Bits(bytes=b'\xa0\xb1\xC2', offset=4) self.assertEqual((s2.len, s2.hex), (20, '0b1c2')) self.assertEqual((s1.len, s1.hex), (20, '0b1c2')) self.assertTrue(s1 == s2) def testCreationFromHex(self): s = Bits(hex='0xA0ff') self.assertEqual((s.len, s.hex), (16, 'a0ff')) s = Bits(hex='0x0x0X') self.assertEqual((s.length, s.hex), (0, '')) def testCreationFromHexWithWhitespace(self): s = Bits(hex=' \n0 X a 4e \r3 \n') self.assertEqual(s.hex, 'a4e3') def testCreationFromHexErrors(self): self.assertRaises(bitstring.CreationError, Bits, hex='0xx0') self.assertRaises(bitstring.CreationError, Bits, hex='0xX0') self.assertRaises(bitstring.CreationError, Bits, hex='0Xx0') self.assertRaises(bitstring.CreationError, Bits, hex='-2e') # These really should fail, but it's awkward and not a big deal... # self.assertRaises(bitstring.CreationError, Bits, '0x2', length=2) # self.assertRaises(bitstring.CreationError, Bits, '0x3', offset=1) def testCreationFromBin(self): s = Bits(bin='1010000011111111') self.assertEqual((s.length, s.hex), (16, 'a0ff')) s = Bits(bin='00')[:1] self.assertEqual(s.bin, '0') s = Bits(bin=' 0000 \n 0001\r ') self.assertEqual(s.bin, '00000001') def testCreationFromBinWithWhitespace(self): s = Bits(bin=' \r\r\n0 B 00 1 1 \t0 ') self.assertEqual(s.bin, '00110') def testCreationFromOctErrors(self): s = Bits('0b00011') with self.assertRaises(bitstring.InterpretError): s.oct with self.assertRaises(bitstring.CreationError): s = Bits('oct=8') def testCreationFromUintWithOffset(self): self.assertRaises(bitstring.Error, Bits, uint=12, length=8, offset=1) def testCreationFromUintErrors(self): self.assertRaises(bitstring.CreationError, Bits, uint=-1, length=10) self.assertRaises(bitstring.CreationError, Bits, uint=12) self.assertRaises(bitstring.CreationError, Bits, uint=4, length=2) self.assertRaises(bitstring.CreationError, Bits, uint=0, length=0) self.assertRaises(bitstring.CreationError, Bits, uint=12, length=-12) def testCreationFromInt(self): s = Bits(int=0, length=4) self.assertEqual(s.bin, '0000') s = Bits(int=1, length=2) self.assertEqual(s.bin, '01') s = Bits(int=-1, length=11) self.assertEqual(s.bin, '11111111111') s = Bits(int=12, length=7) self.assertEqual(s.int, 12) s = Bits(int=-243, length=108) self.assertEqual((s.int, s.length), (-243, 108)) for length in range(6, 10): for value in range(-17, 17): s = Bits(int=value, length=length) self.assertEqual((s.int, s.length), (value, length)) s = Bits(int=10, length=8) def testCreationFromIntErrors(self): self.assertRaises(bitstring.CreationError, Bits, int=-1, length=0) self.assertRaises(bitstring.CreationError, Bits, int=12) self.assertRaises(bitstring.CreationError, Bits, int=4, length=3) self.assertRaises(bitstring.CreationError, Bits, int=-5, length=3) def testCreationFromSe(self): for i in range(-100, 10): s = Bits(se=i) self.assertEqual(s.se, i) def testCreationFromSeWithOffset(self): self.assertRaises(bitstring.CreationError, Bits, se=-13, offset=1) def testCreationFromSeErrors(self): self.assertRaises(bitstring.CreationError, Bits, se=-5, length=33) s = Bits(bin='001000') with self.assertRaises(bitstring.InterpretError): s.se def testCreationFromUe(self): [self.assertEqual(Bits(ue=i).ue, i) for i in range(0, 20)] def testCreationFromUeWithOffset(self): self.assertRaises(bitstring.CreationError, Bits, ue=104, offset=2) def testCreationFromUeErrors(self): self.assertRaises(bitstring.CreationError, Bits, ue=-1) self.assertRaises(bitstring.CreationError, Bits, ue=1, length=12) s = Bits(bin='10') with self.assertRaises(bitstring.InterpretError): s.ue def testCreationFromBool(self): a = Bits('bool=1') self.assertEqual(a, 'bool=1') b = Bits('bool=0') self.assertEqual(b, [0]) c = bitstring.pack('2*bool', 0, 1) self.assertEqual(c, '0b01') def testCreationKeywordError(self): self.assertRaises(bitstring.CreationError, Bits, squirrel=5) def testDataStoreType(self): a = Bits('0xf') self.assertEqual(type(a._datastore), bitstring.ConstByteStore) class Initialisation(unittest.TestCase): def testEmptyInit(self): a = Bits() self.assertEqual(a, '') def testNoPos(self): a = Bits('0xabcdef') try: a.pos except AttributeError: pass else: assert False def testFind(self): a = Bits('0xabcd') r = a.find('0xbc') self.assertEqual(r[0], 4) r = a.find('0x23462346246', bytealigned=True) self.assertFalse(r) def testRfind(self): a = Bits('0b11101010010010') b = a.rfind('0b010') self.assertEqual(b[0], 11) def testFindAll(self): a = Bits('0b0010011') b = list(a.findall([1])) self.assertEqual(b, [2, 5, 6]) class Cut(unittest.TestCase): def testCut(self): s = Bits(30) for t in s.cut(3): self.assertEqual(t, [0] * 3) class InterleavedExpGolomb(unittest.TestCase): def testCreation(self): s1 = Bits(uie=0) s2 = Bits(uie=1) self.assertEqual(s1, [1]) self.assertEqual(s2, [0, 0, 1]) s1 = Bits(sie=0) s2 = Bits(sie=-1) s3 = Bits(sie=1) self.assertEqual(s1, [1]) self.assertEqual(s2, [0, 0, 1, 1]) self.assertEqual(s3, [0, 0, 1, 0]) def testCreationFromProperty(self): s = BitArray() s.uie = 45 self.assertEqual(s.uie, 45) s.sie = -45 self.assertEqual(s.sie, -45) def testInterpretation(self): for x in range(101): self.assertEqual(Bits(uie=x).uie, x) for x in range(-100, 100): self.assertEqual(Bits(sie=x).sie, x) def testErrors(self): for f in ['sie=100, 0b1001', '0b00', 'uie=100, 0b1001']: s = Bits(f) self.assertRaises(bitstring.InterpretError, s._getsie) self.assertRaises(bitstring.InterpretError, s._getuie) self.assertRaises(ValueError, Bits, 'uie=-10') class FileBased(unittest.TestCase): def setUp(self): self.a = Bits(filename='smalltestfile') self.b = Bits(filename='smalltestfile', offset=16) self.c = Bits(filename='smalltestfile', offset=20, length=16) self.d = Bits(filename='smalltestfile', offset=20, length=4) def testCreationWithOffset(self): self.assertEqual(self.a, '0x0123456789abcdef') self.assertEqual(self.b, '0x456789abcdef') self.assertEqual(self.c, '0x5678') def testBitOperators(self): x = self.b[4:20] self.assertEqual(x, '0x5678') self.assertEqual((x & self.c).hex, self.c.hex) self.assertEqual(self.c ^ self.b[4:20], 16) self.assertEqual(self.a[23:36] | self.c[3:], self.c[3:]) def testAddition(self): h = self.d + '0x1' x = self.a[20:24] + self.c[-4:] + self.c[8:12] self.assertEqual(x, '0x587') x = self.b + x self.assertEqual(x.hex, '456789abcdef587') x = BitArray(x) del x[12:24] self.assertEqual(x, '0x456abcdef587') class Mmap(unittest.TestCase): def setUp(self): self.f = open('smalltestfile', 'rb') def tearDown(self): self.f.close() def testByteArrayEquivalence(self): a = MmapByteArray(self.f) self.assertEqual(a.bytelength, 8) self.assertEqual(len(a), 8) self.assertEqual(a[0], 0x01) self.assertEqual(a[1], 0x23) self.assertEqual(a[7], 0xef) self.assertEqual(a[0:1], bytearray([1])) self.assertEqual(a[:], bytearray([0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef])) self.assertEqual(a[2:4], bytearray([0x45, 0x67])) def testWithLength(self): a = MmapByteArray(self.f, 3) self.assertEqual(a[0], 0x01) self.assertEqual(len(a), 3) def testWithOffset(self): a = MmapByteArray(self.f, None, 5) self.assertEqual(len(a), 3) self.assertEqual(a[0], 0xab) def testWithLengthAndOffset(self): a = MmapByteArray(self.f, 3, 3) self.assertEqual(len(a), 3) self.assertEqual(a[0], 0x67) self.assertEqual(a[:], bytearray([0x67, 0x89, 0xab])) class Comparisons(unittest.TestCase): def testUnorderable(self): a = Bits(5) b = Bits(5) with self.assertRaises(TypeError): a < b with self.assertRaises(TypeError): a > b with self.assertRaises(TypeError): a <= b with self.assertRaises(TypeError): a >= b class Subclassing(unittest.TestCase): def testIsInstance(self): class SubBits(bitstring.Bits): pass a = SubBits() self.assertTrue(isinstance(a, SubBits)) def testClassType(self): class SubBits(bitstring.Bits): pass self.assertEqual(SubBits().__class__, SubBits) class LongBoolConversion(unittest.TestCase): def testLongBool(self): a = Bits(1000) b = bool(a) self.assertTrue(b is False) # Some basic tests for the private ByteStore classes class ConstByteStoreCreation(unittest.TestCase): def testProperties(self): a = ConstByteStore(bytearray(b'abc')) self.assertEqual(a.bytelength, 3) self.assertEqual(a.offset, 0) self.assertEqual(a.bitlength, 24) self.assertEqual(a._rawarray, b'abc') def testGetBit(self): a = ConstByteStore(bytearray([0x0f])) self.assertEqual(a.getbit(0), False) self.assertEqual(a.getbit(3), False) self.assertEqual(a.getbit(4), True) self.assertEqual(a.getbit(7), True) b = ConstByteStore(bytearray([0x0f]), 7, 1) self.assertEqual(b.getbit(2), False) self.assertEqual(b.getbit(3), True) def testGetByte(self): a = ConstByteStore(bytearray(b'abcde'), 1, 13) self.assertEqual(a.getbyte(0), 97) self.assertEqual(a.getbyte(1), 98) self.assertEqual(a.getbyte(4), 101) class PadToken(unittest.TestCase): def testCreation(self): a = Bits('pad:10') self.assertEqual(a, Bits(10)) b = Bits('pad:0') self.assertEqual(b, Bits()) c = Bits('0b11, pad:1, 0b111') self.assertEqual(c, Bits('0b110111')) def testPack(self): s = bitstring.pack('0b11, pad:3=5, 0b1') self.assertEqual(s.bin, '110001') d = bitstring.pack('pad:c', c=12) self.assertEqual(d, Bits(12)) e = bitstring.pack('0xf, uint:12, pad:1, bin, pad:4, 0b10', 0, '111') self.assertEqual(e.bin, '11110000000000000111000010') def testUnpack(self): s = Bits('0b111000111') x, y = s.unpack('3, pad:3, 3') self.assertEqual((x, y), (7, 7)) x, y = s.unpack('2, pad:2, bin') self.assertEqual((x, y), (3, '00111')) x = s.unpack('pad:1, pad:2, pad:3') self.assertEqual(x, []) class ModifiedByAddingBug(unittest.TestCase): def testAdding(self): a = Bits('0b0') b = Bits('0b11') c = a + b self.assertEqual(c, '0b011') self.assertEqual(a, '0b0') self.assertEqual(b, '0b11') def testAdding2(self): a = Bits(100) b = Bits(101) c = a + b self.assertEqual(a, 100) self.assertEqual(b, 101) self.assertEqual(c, 201) class WrongTypeBug(unittest.TestCase): def testAppendToBits(self): a = Bits(BitArray()) with self.assertRaises(AttributeError): a.append('0b1') self.assertEqual(type(a), Bits) b = bitstring.ConstBitStream(bitstring.BitStream()) self.assertEqual(type(b), bitstring.ConstBitStream) class InitFromArray(unittest.TestCase): def testEmptyArray(self): a = array.array('B') b = Bits(a) self.assertEqual(b.length, 0) def testSingleByte(self): a = array.array('B', b'\xff') b = Bits(a) self.assertEqual(b.length, 8) self.assertEqual(b.hex, 'ff') def testSignedShort(self): a = array.array('h') a.append(10) a.append(-1) b = Bits(a) self.assertEqual(b.length, 32) self.assertEqual(b.bytes, a.tostring()) def testDouble(self): a = array.array('d', [0.0, 1.0, 2.5]) b = Bits(a) self.assertEqual(b.length, 192) c, d, e = b.unpack('3*floatne:64') self.assertEqual((c, d, e), (0.0, 1.0, 2.5))bitstring-bitstring-3.1.5/test/test_bitstore.py000066400000000000000000000021541271665413600217700ustar00rootroot00000000000000#!/usr/bin/env python import unittest import sys sys.path.insert(0, '..') from bitstring import ByteStore, ConstByteStore, equal, offsetcopy class OffsetCopy(unittest.TestCase): def testStraightCopy(self): s = ByteStore(bytearray([10, 5, 1]), 24, 0) t = offsetcopy(s, 0) self.assertEqual(t._rawarray, bytearray([10, 5, 1])) def testOffsetIncrease(self): s = ByteStore(bytearray([1, 1, 1]), 24, 0) t = offsetcopy(s, 4) self.assertEqual(t.bitlength, 24) self.assertEqual(t.offset, 4) self.assertEqual(t._rawarray, bytearray([0, 16, 16, 16])) class Equals(unittest.TestCase): def testBothSingleByte(self): s = ByteStore(bytearray([128]), 3, 0) t = ByteStore(bytearray([64]), 3, 1) u = ByteStore(bytearray([32]), 3, 2) self.assertTrue(equal(s, t)) self.assertTrue(equal(s, u)) self.assertTrue(equal(u, t)) def testOneSingleByte(self): s = ByteStore(bytearray([1, 0]), 2, 7) t = ByteStore(bytearray([64]), 2, 1) self.assertTrue(equal(s, t)) self.assertTrue(equal(t, s))bitstring-bitstring-3.1.5/test/test_bitstream.py000066400000000000000000004157101271665413600221350ustar00rootroot00000000000000#!/usr/bin/env python import unittest import sys sys.path.insert(0, '..') import bitstring import copy import os import collections from bitstring import BitStream, ConstBitStream, pack from bitstring import ByteStore, offsetcopy class FlexibleInitialisation(unittest.TestCase): def testFlexibleInitialisation(self): a = BitStream('uint:8=12') c = BitStream(' uint : 8 = 12') self.assertTrue(a == c == BitStream(uint=12, length=8)) self.assertEqual(a.uint, 12) a = BitStream(' int:2= -1') b = BitStream('int :2 = -1') c = BitStream(' int: 2 =-1 ') self.assertTrue(a == b == c == BitStream(int=-1, length=2)) def testFlexibleInitialisation2(self): h = BitStream('hex=12') o = BitStream('oct=33') b = BitStream('bin=10') self.assertEqual(h, '0x12') self.assertEqual(o, '0o33') self.assertEqual(b, '0b10') def testFlexibleInitialisation3(self): for s in ['se=-1', ' se = -1 ', 'se = -1']: a = BitStream(s) self.assertEqual(a.se, -1) for s in ['ue=23', 'ue =23', 'ue = 23']: a = BitStream(s) self.assertEqual(a.ue, 23) def testMultipleStringInitialisation(self): a = BitStream('0b1 , 0x1') self.assertEqual(a, '0b10001') a = BitStream('ue=5, ue=1, se=-2') self.assertEqual(a.read('ue'), 5) self.assertEqual(a.read('ue'), 1) self.assertEqual(a.read('se'), -2) b = BitStream('uint:32 = 12, 0b11') + 'int:100=-100, 0o44' self.assertEqual(b.read(32).uint, 12) self.assertEqual(b.read(2).bin, '11') self.assertEqual(b.read(100).int, -100) class Reading(unittest.TestCase): def testReadBits(self): s = BitStream(bytes=b'\x4d\x55') self.assertEqual(s.read(4).hex, '4') self.assertEqual(s.read(8).hex, 'd5') self.assertEqual(s.read(1), [0]) self.assertEqual(s.read(3).bin, '101') self.assertFalse(s.read(0)) def testReadByte(self): s = BitStream(hex='4d55') self.assertEqual(s.read(8).hex, '4d') self.assertEqual(s.read(8).hex, '55') def testReadBytes(self): s = BitStream(hex='0x112233448811') self.assertEqual(s.read(3 * 8).hex, '112233') self.assertRaises(ValueError, s.read, -2 * 8) s.bitpos += 1 self.assertEqual(s.read(2 * 8).bin, '1000100100010000') def testReadUE(self): self.assertRaises(bitstring.InterpretError, BitStream('')._getue) # The numbers 0 to 8 as unsigned Exponential-Golomb codes s = BitStream(bin='1 010 011 00100 00101 00110 00111 0001000 0001001') self.assertEqual(s.pos, 0) for i in range(9): self.assertEqual(s.read('ue'), i) self.assertRaises(bitstring.ReadError, s.read, 'ue') def testReadSE(self): s = BitStream(bin='010 00110 0001010 0001000 00111') self.assertEqual(s.read('se'), 1) self.assertEqual(s.read('se'), 3) self.assertEqual(s.readlist(3 * ['se']), [5, 4, -3]) class Find(unittest.TestCase): def testFind1(self): s = ConstBitStream(bin='0b0000110110000') self.assertTrue(s.find(BitStream(bin='11011'), False)) self.assertEqual(s.bitpos, 4) self.assertEqual(s.read(5).bin, '11011') s.bitpos = 0 self.assertFalse(s.find('0b11001', False)) def testFind2(self): s = BitStream(bin='0') self.assertTrue(s.find(s, False)) self.assertEqual(s.pos, 0) self.assertFalse(s.find('0b00', False)) self.assertRaises(ValueError, s.find, BitStream(), False) def testFindWithOffset(self): s = BitStream(hex='0x112233')[4:] self.assertTrue(s.find('0x23', False)) self.assertEqual(s.pos, 8) def testFindCornerCases(self): s = BitStream(bin='000111000111') self.assertTrue(s.find('0b000')) self.assertEqual(s.pos, 0) self.assertTrue(s.find('0b000')) self.assertEqual(s.pos, 0) self.assertTrue(s.find('0b0111000111')) self.assertEqual(s.pos, 2) self.assertTrue(s.find('0b000', start=2)) self.assertEqual(s.pos, 6) self.assertTrue(s.find('0b111', start=6)) self.assertEqual(s.pos, 9) s.pos += 2 self.assertTrue(s.find('0b1', start=s.pos)) def testFindBytes(self): s = BitStream('0x010203040102ff') self.assertFalse(s.find('0x05', bytealigned=True)) self.assertTrue(s.find('0x02', bytealigned=True)) self.assertEqual(s.read(16).hex, '0203') self.assertTrue(s.find('0x02', start=s.bitpos, bytealigned=True)) s.read(1) self.assertFalse(s.find('0x02', start=s.bitpos, bytealigned=True)) def testFindBytesAlignedCornerCases(self): s = BitStream('0xff') self.assertTrue(s.find(s)) self.assertFalse(s.find(BitStream(hex='0x12'))) self.assertFalse(s.find(BitStream(hex='0xffff'))) def testFindBytesBitpos(self): s = BitStream(hex='0x1122334455') s.pos = 2 s.find('0x66', bytealigned=True) self.assertEqual(s.pos, 2) s.pos = 38 s.find('0x66', bytealigned=True) self.assertEqual(s.pos, 38) def testFindByteAligned(self): s = BitStream(hex='0x12345678') self.assertTrue(s.find(BitStream(hex='0x56'), bytealigned=True)) self.assertEqual(s.bytepos, 2) s.pos = 0 self.assertFalse(s.find(BitStream(hex='0x45'), bytealigned=True)) s = BitStream('0x1234') s.find('0x1234') self.assertTrue(s.find('0x1234')) s += '0b111' s.pos = 3 s.find('0b1', start=17, bytealigned=True) self.assertFalse(s.find('0b1', start=17, bytealigned=True)) self.assertEqual(s.pos, 3) def testFindByteAlignedWithOffset(self): s = BitStream(hex='0x112233')[4:] self.assertTrue(s.find(BitStream(hex='0x23'))) def testFindByteAlignedErrors(self): s = BitStream(hex='0xffff') self.assertRaises(ValueError, s.find, '') self.assertRaises(ValueError, s.find, BitStream()) class Rfind(unittest.TestCase): def testRfind(self): a = BitStream('0b001001001') b = a.rfind('0b001') self.assertEqual(b, (6,)) self.assertEqual(a.pos, 6) big = BitStream(length=100000) + '0x12' + BitStream(length=10000) found = big.rfind('0x12', bytealigned=True) self.assertEqual(found, (100000,)) self.assertEqual(big.pos, 100000) def testRfindByteAligned(self): a = BitStream('0x8888') b = a.rfind('0b1', bytealigned=True) self.assertEqual(b, (8,)) self.assertEqual(a.pos, 8) def testRfindStartbit(self): a = BitStream('0x0000ffffff') b = a.rfind('0x0000', start=1, bytealigned=True) self.assertEqual(b, ()) self.assertEqual(a.pos, 0) b = a.rfind('0x00', start=1, bytealigned=True) self.assertEqual(b, (8,)) self.assertEqual(a.pos, 8) def testRfindEndbit(self): a = BitStream('0x000fff') b = a.rfind('0b011', bytealigned=False, start=0, end=14) self.assertEqual(bool(b), True) b = a.rfind('0b011', False, 0, 13) self.assertEqual(b, ()) def testRfindErrors(self): a = BitStream('0x43234234') self.assertRaises(ValueError, a.rfind, '', bytealigned=True) self.assertRaises(ValueError, a.rfind, '0b1', start=-99, bytealigned=True) self.assertRaises(ValueError, a.rfind, '0b1', end=33, bytealigned=True) self.assertRaises(ValueError, a.rfind, '0b1', start=10, end=9, bytealigned=True) class Shift(unittest.TestCase): def testShiftLeft(self): s = BitStream('0b1010') t = s << 1 self.assertEqual(s.bin, '1010') self.assertEqual(t.bin, '0100') t = t << 0 self.assertEqual(t, '0b0100') t = t << 100 self.assertEqual(t.bin, '0000') def testShiftLeftErrors(self): s = BitStream() self.assertRaises(ValueError, s.__lshift__, 1) s = BitStream('0xf') self.assertRaises(ValueError, s.__lshift__, -1) def testShiftRight(self): s = BitStream('0b1010') t = s >> 1 self.assertEqual(s.bin, '1010') self.assertEqual(t.bin, '0101') q = s >> 0 self.assertEqual(q, '0b1010') q.replace('0b1010', '') s = s >> 100 self.assertEqual(s.bin, '0000') def testShiftRightErrors(self): s = BitStream() self.assertRaises(ValueError, s.__rshift__, 1) s = BitStream('0xf') self.assertRaises(ValueError, s.__rshift__, -1) def testShiftRightInPlace(self): s = BitStream('0xffff')[4:12] s >>= 1 self.assertEqual(s, '0b01111111') s = BitStream('0b11011') s >>= 2 self.assertEqual(s.bin, '00110') s >>= 100000000000000 self.assertEqual(s.bin, '00000') s = BitStream('0xff') s >>= 1 self.assertEqual(s, '0x7f') s >>= 0 self.assertEqual(s, '0x7f') def testShiftRightInPlaceErrors(self): s = BitStream() self.assertRaises(ValueError, s.__irshift__, 1) s += '0b11' self.assertRaises(ValueError, s.__irshift__, -1) def testShiftLeftInPlace(self): s = BitStream('0xffff') t = s[4:12] t <<= 2 self.assertEqual(t, '0b11111100') s = BitStream('0b11011') s <<= 2 self.assertEqual(s.bin, '01100') s <<= 100000000000000000000 self.assertEqual(s.bin, '00000') s = BitStream('0xff') s <<= 1 self.assertEqual(s, '0xfe') s <<= 0 self.assertEqual(s, '0xfe') def testShiftLeftInPlaceErrors(self): s = BitStream() self.assertRaises(ValueError, s.__ilshift__, 1) s += '0b11' self.assertRaises(ValueError, s.__ilshift__, -1) class Replace(unittest.TestCase): def testReplace1(self): a = BitStream('0b1') n = a.replace('0b1', '0b0', bytealigned=True) self.assertEqual(a.bin, '0') self.assertEqual(n, 1) n = a.replace('0b1', '0b0', bytealigned=True) self.assertEqual(n, 0) def testReplace2(self): a = BitStream('0b00001111111') n = a.replace('0b1', '0b0', bytealigned=True) self.assertEqual(a.bin, '00001111011') self.assertEqual(n, 1) n = a.replace('0b1', '0b0', bytealigned=False) self.assertEqual(a.bin, '00000000000') self.assertEqual(n, 6) def testReplace3(self): a = BitStream('0b0') n = a.replace('0b0', '0b110011111', bytealigned=True) self.assertEqual(n, 1) self.assertEqual(a.bin, '110011111') n = a.replace('0b11', '', bytealigned=False) self.assertEqual(n, 3) self.assertEqual(a.bin, '001') def testReplace4(self): a = BitStream('0x00114723ef4732344700') n = a.replace('0x47', '0x00', bytealigned=True) self.assertEqual(n, 3) self.assertEqual(a.hex, '00110023ef0032340000') a.replace('0x00', '', bytealigned=True) self.assertEqual(a.hex, '1123ef3234') a.replace('0x11', '', start=1, bytealigned=True) self.assertEqual(a.hex, '1123ef3234') a.replace('0x11', '0xfff', end=7, bytealigned=True) self.assertEqual(a.hex, '1123ef3234') a.replace('0x11', '0xfff', end=8, bytealigned=True) self.assertEqual(a.hex, 'fff23ef3234') def testReplace5(self): a = BitStream('0xab') b = BitStream('0xcd') c = BitStream('0xabef') c.replace(a, b) self.assertEqual(c, '0xcdef') self.assertEqual(a, '0xab') self.assertEqual(b, '0xcd') a = BitStream('0x0011223344') a.pos = 12 a.replace('0x11', '0xfff', bytealigned=True) self.assertEqual(a.pos, 8) self.assertEqual(a, '0x00fff223344') def testReplaceWithSelf(self): a = BitStream('0b11') a.replace('0b1', a) self.assertEqual(a, '0xf') a.replace(a, a) self.assertEqual(a, '0xf') def testReplaceCount(self): a = BitStream('0x223344223344223344') n = a.replace('0x2', '0x0', count=0, bytealigned=True) self.assertEqual(n, 0) self.assertEqual(a.hex, '223344223344223344') n = a.replace('0x2', '0x0', count=1, bytealigned=True) self.assertEqual(n, 1) self.assertEqual(a.hex, '023344223344223344') n = a.replace('0x33', '', count=2, bytealigned=True) self.assertEqual(n, 2) self.assertEqual(a.hex, '02442244223344') n = a.replace('0x44', '0x4444', count=1435, bytealigned=True) self.assertEqual(n, 3) self.assertEqual(a.hex, '02444422444422334444') def testReplaceBitpos(self): a = BitStream('0xff') a.bitpos = 8 a.replace('0xff', '', bytealigned=True) self.assertEqual(a.bitpos, 0) a = BitStream('0b0011110001') a.bitpos = 4 a.replace('0b1', '0b000') self.assertEqual(a.bitpos, 8) a = BitStream('0b1') a.bitpos = 1 a.replace('0b1', '0b11111', bytealigned=True) self.assertEqual(a.bitpos, 5) a.replace('0b11', '0b0', False) self.assertEqual(a.bitpos, 3) a.append('0b00') a.replace('0b00', '0xffff') self.assertEqual(a.bitpos, 17) def testReplaceErrors(self): a = BitStream('0o123415') self.assertRaises(ValueError, a.replace, '', '0o7', bytealigned=True) self.assertRaises(ValueError, a.replace, '0b1', '0b1', start=-100, bytealigned=True) self.assertRaises(ValueError, a.replace, '0b1', '0b1', end=19, bytealigned=True) class SliceAssignment(unittest.TestCase): # TODO: Move this to another class def testSetSlice(self): a = BitStream() a[0:0] = '0xabcdef' self.assertEqual(a.bytepos, 3) a[4:16] = '' self.assertEqual(a, '0xaef') self.assertEqual(a.bitpos, 4) a[8:] = '0x00' self.assertEqual(a, '0xae00') self.assertEqual(a.bytepos, 2) a += '0xf' a[8:] = '0xe' self.assertEqual(a, '0xaee') self.assertEqual(a.bitpos, 12) b = BitStream() b[0:800] = '0xffee' self.assertEqual(b, '0xffee') b[4:48] = '0xeed123' self.assertEqual(b, '0xfeed123') b[-800:8] = '0x0000' self.assertEqual(b, '0x0000ed123') a = BitStream('0xabcde') self.assertEqual(a[-100:-90], '') self.assertEqual(a[-100:-16], '0xa') a[-100:-16] = '0x0' self.assertEqual(a, '0x0bcde') def testInsertingUsingSetItem(self): a = BitStream() a[0:0] = '0xdeadbeef' self.assertEqual(a, '0xdeadbeef') self.assertEqual(a.bytepos, 4) a[16:16] = '0xfeed' self.assertEqual(a, '0xdeadfeedbeef') self.assertEqual(a.bytepos, 4) a[0:0] = '0xa' self.assertEqual(a, '0xadeadfeedbeef') self.assertEqual(a.bitpos, 4) a.bytepos = 6 a[0:0] = '0xff' self.assertEqual(a.bytepos, 1) a[8:0] = '0x00000' self.assertTrue(a.startswith('0xff00000adead')) def testSliceAssignmentBitPos(self): a = BitStream('int:64=-1') a.pos = 64 a[0:8] = '' self.assertEqual(a.pos, 0) a.pos = 52 a[48:56] = '0x0000' self.assertEqual(a.pos, 64) a[10:10] = '0x0' self.assertEqual(a.pos, 14) a[56:68] = '0x000' self.assertEqual(a.pos, 14) class Pack(unittest.TestCase): def testPack1(self): s = bitstring.pack('uint:6, bin, hex, int:6, se, ue, oct', 10, '0b110', 'ff', -1, -6, 6, '54') t = BitStream('uint:6=10, 0b110, 0xff, int:6=-1, se=-6, ue=6, oct=54') self.assertEqual(s, t) self.assertRaises(bitstring.CreationError, pack, 'tomato', '0') self.assertRaises(bitstring.CreationError, pack, 'uint', 12) self.assertRaises(bitstring.CreationError, pack, 'hex', 'penguin') self.assertRaises(bitstring.CreationError, pack, 'hex12', '0x12') def testPackWithLiterals(self): s = bitstring.pack('0xf') self.assertEqual(s, '0xf') self.assertTrue(type(s), BitStream) s = pack('0b1') self.assertEqual(s, '0b1') s = pack('0o7') self.assertEqual(s, '0o7') s = pack('int:10=-1') self.assertEqual(s, '0b1111111111') s = pack('uint:10=1') self.assertEqual(s, '0b0000000001') s = pack('ue=12') self.assertEqual(s.ue, 12) s = pack('se=-12') self.assertEqual(s.se, -12) s = pack('bin=01') self.assertEqual(s.bin, '01') s = pack('hex=01') self.assertEqual(s.hex, '01') s = pack('oct=01') self.assertEqual(s.oct, '01') def testPackWithDict(self): a = pack('uint:6=width, se=height', height=100, width=12) w, h = a.unpack('uint:6, se') self.assertEqual(w, 12) self.assertEqual(h, 100) d = {} d['w'] = '0xf' d['300'] = 423 d['e'] = '0b1101' a = pack('int:100=300, bin=e, uint:12=300', **d) x, y, z = a.unpack('int:100, bin, uint:12') self.assertEqual(x, 423) self.assertEqual(y, '1101') self.assertEqual(z, 423) def testPackWithDict2(self): a = pack('int:5, bin:3=b, 0x3, bin=c, se=12', 10, b='0b111', c='0b1') b = BitStream('int:5=10, 0b111, 0x3, 0b1, se=12') self.assertEqual(a, b) a = pack('bits:3=b', b=BitStream('0b101')) self.assertEqual(a, '0b101') a = pack('bits:24=b', b=BitStream('0x001122')) self.assertEqual(a, '0x001122') def testPackWithDict3(self): s = pack('hex:4=e, hex:4=0xe, hex:4=e', e='f') self.assertEqual(s, '0xfef') s = pack('sep', sep='0b00') self.assertEqual(s, '0b00') def testPackWithDict4(self): s = pack('hello', hello='0xf') self.assertEqual(s, '0xf') s = pack('x, y, x, y, x', x='0b10', y='uint:12=100') t = BitStream('0b10, uint:12=100, 0b10, uint:12=100, 0b10') self.assertEqual(s, t) a = [1, 2, 3, 4, 5] s = pack('int:8, div,' * 5, *a, **{'div': '0b1'}) t = BitStream('int:8=1, 0b1, int:8=2, 0b1, int:8=3, 0b1, int:8=4, 0b1, int:8=5, 0b1') self.assertEqual(s, t) def testPackWithLocals(self): width = 352 height = 288 s = pack('uint:12=width, uint:12=height', **locals()) self.assertEqual(s, '0x160120') def testPackWithLengthRestriction(self): s = pack('bin:3', '0b000') self.assertRaises(bitstring.CreationError, pack, 'bin:3', '0b0011') self.assertRaises(bitstring.CreationError, pack, 'bin:3', '0b11') self.assertRaises(bitstring.CreationError, pack, 'bin:3=0b0011') self.assertRaises(bitstring.CreationError, pack, 'bin:3=0b11') s = pack('hex:4', '0xf') self.assertRaises(bitstring.CreationError, pack, 'hex:4', '0b111') self.assertRaises(bitstring.CreationError, pack, 'hex:4', '0b11111') self.assertRaises(bitstring.CreationError, pack, 'hex:8=0xf') s = pack('oct:6', '0o77') self.assertRaises(bitstring.CreationError, pack, 'oct:6', '0o1') self.assertRaises(bitstring.CreationError, pack, 'oct:6', '0o111') self.assertRaises(bitstring.CreationError, pack, 'oct:3', '0b1') self.assertRaises(bitstring.CreationError, pack, 'oct:3=hello', hello='0o12') s = pack('bits:3', BitStream('0b111')) self.assertRaises(bitstring.CreationError, pack, 'bits:3', BitStream('0b11')) self.assertRaises(bitstring.CreationError, pack, 'bits:3', BitStream('0b1111')) self.assertRaises(bitstring.CreationError, pack, 'bits:12=b', b=BitStream('0b11')) def testPackNull(self): s = pack('') self.assertFalse(s) s = pack(',') self.assertFalse(s) s = pack(',,,,,0b1,,,,,,,,,,,,,0b1,,,,,,,,,,') self.assertEqual(s, '0b11') s = pack(',,uint:12,,bin:3,', 100, '100') a, b = s.unpack(',,,uint:12,,,,bin:3,,,') self.assertEqual(a, 100) self.assertEqual(b, '100') def testPackDefaultUint(self): s = pack('10, 5', 1, 2) a, b = s.unpack('10, 5') self.assertEqual((a, b), (1, 2)) s = pack('10=150, 12=qee', qee=3) self.assertEqual(s, 'uint:10=150, uint:12=3') t = BitStream('100=5') self.assertEqual(t, 'uint:100=5') def testPackDefualtUintErrors(self): self.assertRaises(bitstring.CreationError, BitStream, '5=-1') def testPackingLongKeywordBitstring(self): s = pack('bits=b', b=BitStream(128000)) self.assertEqual(s, BitStream(128000)) def testPackingWithListFormat(self): f = ['bin', 'hex', 'uint:10'] a = pack(','.join(f), '00', '234', 100) b = pack(f, '00', '234', 100) self.assertEqual(a, b) class Unpack(unittest.TestCase): def testUnpack1(self): s = BitStream('uint:13=23, hex=e, bin=010, int:41=-554, 0o44332, se=-12, ue=4') s.pos = 11 a, b, c, d, e, f, g = s.unpack('uint:13, hex:4, bin:3, int:41, oct:15, se, ue') self.assertEqual(a, 23) self.assertEqual(b, 'e') self.assertEqual(c, '010') self.assertEqual(d, -554) self.assertEqual(e, '44332') self.assertEqual(f, -12) self.assertEqual(g, 4) self.assertEqual(s.pos, 11) def testUnpack2(self): s = BitStream('0xff, 0b000, uint:12=100') a, b, c = s.unpack('bits:8, bits, uint:12') self.assertEqual(type(s), BitStream) self.assertEqual(a, '0xff') self.assertEqual(type(s), BitStream) self.assertEqual(b, '0b000') self.assertEqual(c, 100) a, b = s.unpack(['bits:11', 'uint']) self.assertEqual(a, '0xff, 0b000') self.assertEqual(b, 100) def testUnpackNull(self): s = pack('0b1, , , 0xf,') a, b = s.unpack('bin:1,,,hex:4,') self.assertEqual(a, '1') self.assertEqual(b, 'f') class FromFile(unittest.TestCase): def testCreationFromFileOperations(self): s = BitStream(filename='smalltestfile') s.append('0xff') self.assertEqual(s.hex, '0123456789abcdefff') s = ConstBitStream(filename='smalltestfile') t = BitStream('0xff') + s self.assertEqual(t.hex, 'ff0123456789abcdef') s = BitStream(filename='smalltestfile') del s[:1] self.assertEqual((BitStream('0b0') + s).hex, '0123456789abcdef') s = BitStream(filename='smalltestfile') del s[:7 * 8] self.assertEqual(s.hex, 'ef') s = BitStream(filename='smalltestfile') s.insert('0xc', 4) self.assertEqual(s.hex, '0c123456789abcdef') s = BitStream(filename='smalltestfile') s.prepend('0xf') self.assertEqual(s.hex, 'f0123456789abcdef') s = BitStream(filename='smalltestfile') s.overwrite('0xaaa', 12) self.assertEqual(s.hex, '012aaa6789abcdef') s = BitStream(filename='smalltestfile') s.reverse() self.assertEqual(s.hex, 'f7b3d591e6a2c480') s = BitStream(filename='smalltestfile') del s[-60:] self.assertEqual(s.hex, '0') s = BitStream(filename='smalltestfile') del s[:60] self.assertEqual(s.hex, 'f') def testFileProperties(self): s = ConstBitStream(filename='smalltestfile') self.assertEqual(s.hex, '0123456789abcdef') self.assertEqual(s.uint, 81985529216486895) self.assertEqual(s.int, 81985529216486895) self.assertEqual(s.bin, '0000000100100011010001010110011110001001101010111100110111101111') self.assertEqual(s[:-1].oct, '002215053170465363367') s.bitpos = 0 self.assertEqual(s.read('se'), -72) s.bitpos = 0 self.assertEqual(s.read('ue'), 144) self.assertEqual(s.bytes, b'\x01\x23\x45\x67\x89\xab\xcd\xef') self.assertEqual(s.tobytes(), b'\x01\x23\x45\x67\x89\xab\xcd\xef') def testCreationFromFileWithLength(self): s = ConstBitStream(filename='test.m1v', length=32) self.assertEqual(s.length, 32) self.assertEqual(s.hex, '000001b3') s = ConstBitStream(filename='test.m1v', length=0) self.assertFalse(s) self.assertRaises(bitstring.CreationError, BitStream, filename='smalltestfile', length=65) self.assertRaises(bitstring.CreationError, ConstBitStream, filename='smalltestfile', length=64, offset=1) # self.assertRaises(bitstring.CreationError, ConstBitStream, filename='smalltestfile', offset=65) f = open('smalltestfile', 'rb') # self.assertRaises(bitstring.CreationError, ConstBitStream, auto=f, offset=65) self.assertRaises(bitstring.CreationError, ConstBitStream, auto=f, length=65) self.assertRaises(bitstring.CreationError, ConstBitStream, auto=f, offset=60, length=5) def testCreationFromFileWithOffset(self): a = BitStream(filename='test.m1v', offset=4) self.assertEqual(a.peek(4 * 8).hex, '00001b31') b = BitStream(filename='test.m1v', offset=28) self.assertEqual(b.peek(8).hex, '31') def testFileSlices(self): s = BitStream(filename='smalltestfile') self.assertEqual(s[-16:].hex, 'cdef') def testCreataionFromFileErrors(self): self.assertRaises(IOError, BitStream, filename='Idonotexist') def testFindInFile(self): s = BitStream(filename='test.m1v') self.assertTrue(s.find('0x160120')) self.assertEqual(s.bytepos, 4) s3 = s.read(3 * 8) self.assertEqual(s3.hex, '160120') s.bytepos = 0 self.assertTrue(s._pos == 0) self.assertTrue(s.find('0x0001b2')) self.assertEqual(s.bytepos, 13) def testHexFromFile(self): s = BitStream(filename='test.m1v') self.assertEqual(s[0:32].hex, '000001b3') self.assertEqual(s[-32:].hex, '000001b7') s.hex = '0x11' self.assertEqual(s.hex, '11') def testFileOperations(self): s1 = BitStream(filename='test.m1v') s2 = BitStream(filename='test.m1v') self.assertEqual(s1.read(32).hex, '000001b3') self.assertEqual(s2.read(32).hex, '000001b3') s1.bytepos += 4 self.assertEqual(s1.read(8).hex, '02') self.assertEqual(s2.read(5 * 8).hex, '1601208302') s1.pos = s1.len try: s1.pos += 1 self.assertTrue(False) except ValueError: pass def testFileBitGetting(self): s = ConstBitStream(filename='smalltestfile', offset=16, length=8) # 0x45 b = s[1] self.assertTrue(b) b = s.any(0, [-1, -2, -3]) self.assertTrue(b) b = s.all(0, [0, 1, 2]) self.assertFalse(b) def testVeryLargeFiles(self): # This uses an 11GB file which isn't distributed for obvious reasons # and so this test won't work for anyone except me! try: s = ConstBitStream(filename='11GB.mkv') except IOError: return self.assertEqual(s.len, 11743020505 * 8) self.assertEqual(s[1000000000:1000000100].hex, 'bdef7335d4545f680d669ce24') self.assertEqual(s[-4::8].hex, 'bbebf7a1') class CreationErrors(unittest.TestCase): def testIncorrectBinAssignment(self): s = BitStream() self.assertRaises(bitstring.CreationError, s._setbin_safe, '0010020') def testIncorrectHexAssignment(self): s = BitStream() self.assertRaises(bitstring.CreationError, s._sethex, '0xabcdefg') class Length(unittest.TestCase): def testLengthZero(self): self.assertEqual(BitStream('').len, 0) def testLength(self): self.assertEqual(BitStream('0x80').len, 8) def testLengthErrors(self): #TODO: Lots of new checks, for various inits which now disallow length and offset pass #self.assertRaises(ValueError, BitStream, bin='111', length=-1) #self.assertRaises(ValueError, BitStream, bin='111', length=4) def testOffsetLengthError(self): self.assertRaises(bitstring.CreationError, BitStream, hex='0xffff', offset=-1) class SimpleConversions(unittest.TestCase): def testConvertToUint(self): self.assertEqual(BitStream('0x10').uint, 16) self.assertEqual(BitStream('0b000111').uint, 7) def testConvertToInt(self): self.assertEqual(BitStream('0x10').int, 16) self.assertEqual(BitStream('0b11110').int, -2) def testConvertToHex(self): self.assertEqual(BitStream(bytes=b'\x00\x12\x23\xff').hex, '001223ff') s = BitStream('0b11111') self.assertRaises(bitstring.InterpretError, s._gethex) class Empty(unittest.TestCase): def testEmptyBitstring(self): s = BitStream() self.assertRaises(bitstring.ReadError, s.read, 1) self.assertEqual(s.bin, '') self.assertEqual(s.hex, '') self.assertRaises(bitstring.InterpretError, s._getint) self.assertRaises(bitstring.InterpretError, s._getuint) self.assertFalse(s) def testNonEmptyBitStream(self): s = BitStream(bin='0') self.assertFalse(not s.len) class Position(unittest.TestCase): def testBitPosition(self): s = BitStream(bytes=b'\x00\x00\x00') self.assertEqual(s.bitpos, 0) s.read(5) self.assertEqual(s.pos, 5) s.pos = s.len self.assertRaises(bitstring.ReadError, s.read, 1) def testBytePosition(self): s = BitStream(bytes=b'\x00\x00\x00') self.assertEqual(s.bytepos, 0) s.read(10) self.assertRaises(bitstring.ByteAlignError, s._getbytepos) s.read(6) self.assertEqual(s.bytepos, 2) def testSeekToBit(self): s = BitStream(bytes=b'\x00\x00\x00\x00\x00\x00') s.bitpos = 0 self.assertEqual(s.bitpos, 0) self.assertRaises(ValueError, s._setbitpos, -1) self.assertRaises(ValueError, s._setbitpos, 6 * 8 + 1) s.bitpos = 6 * 8 self.assertEqual(s.bitpos, 6 * 8) def testSeekToByte(self): s = BitStream(bytes=b'\x00\x00\x00\x00\x00\xab') s.bytepos = 5 self.assertEqual(s.read(8).hex, 'ab') def testAdvanceBitsAndBytes(self): s = BitStream(bytes=b'\x00\x00\x00\x00\x00\x00\x00\x00') s.pos += 5 self.assertEqual(s.pos, 5) s.bitpos += 16 self.assertEqual(s.pos, 2 * 8 + 5) s.pos -= 8 self.assertEqual(s.pos, 8 + 5) def testRetreatBitsAndBytes(self): a = BitStream(length=100) a.pos = 80 a.bytepos -= 5 self.assertEqual(a.bytepos, 5) a.pos -= 5 self.assertEqual(a.pos, 35) class Offset(unittest.TestCase): def testOffset1(self): s = BitStream(bytes=b'\x00\x1b\x3f', offset=4) self.assertEqual(s.read(8).bin, '00000001') self.assertEqual(s.length, 20) def testOffset2(self): s1 = BitStream(bytes=b'\xf1\x02\x04') s2 = BitStream(bytes=b'\xf1\x02\x04', length=23) for i in [1, 2, 3, 4, 5, 6, 7, 6, 5, 4, 3, 2, 1, 0, 7, 3, 5, 1, 4]: s1._datastore = offsetcopy(s1._datastore, i) self.assertEqual(s1.hex, 'f10204') s2._datastore = offsetcopy(s2._datastore, i) self.assertEqual(s2.bin, '11110001000000100000010') class Append(unittest.TestCase): def testAppend(self): s1 = BitStream('0b00000') s1.append(BitStream(bool=True)) self.assertEqual(s1.bin, '000001') self.assertEqual((BitStream('0x0102') + BitStream('0x0304')).hex, '01020304') def testAppendSameBitstring(self): s1 = BitStream('0xf0')[:6] s1.append(s1) self.assertEqual(s1.bin, '111100111100') def testAppendWithOffset(self): s = BitStream(bytes=b'\x28\x28', offset=1) s.append('0b0') self.assertEqual(s.hex, '5050') class ByteAlign(unittest.TestCase): def testByteAlign(self): s = BitStream(hex='0001ff23') s.bytealign() self.assertEqual(s.bytepos, 0) s.pos += 11 s.bytealign() self.assertEqual(s.bytepos, 2) s.pos -= 10 s.bytealign() self.assertEqual(s.bytepos, 1) def testByteAlignWithOffset(self): s = BitStream(hex='0112233') s._datastore = offsetcopy(s._datastore, 3) bitstoalign = s.bytealign() self.assertEqual(bitstoalign, 0) self.assertEqual(s.read(5).bin, '00001') def testInsertByteAligned(self): s = BitStream('0x0011') s.insert(BitStream('0x22'), 8) self.assertEqual(s.hex, '002211') s = BitStream(0) s.insert(BitStream(bin='101'), 0) self.assertEqual(s.bin, '101') class Truncate(unittest.TestCase): def testTruncateStart(self): s = BitStream('0b1') del s[:1] self.assertFalse(s) s = BitStream(hex='1234') self.assertEqual(s.hex, '1234') del s[:4] self.assertEqual(s.hex, '234') del s[:9] self.assertEqual(s.bin, '100') del s[:2] self.assertEqual(s.bin, '0') self.assertEqual(s.len, 1) del s[:1] self.assertFalse(s) def testTruncateEnd(self): s = BitStream('0b1') del s[-1:] self.assertFalse(s) s = BitStream(bytes=b'\x12\x34') self.assertEqual(s.hex, '1234') del s[-4:] self.assertEqual(s.hex, '123') del s[-9:] self.assertEqual(s.bin, '000') del s[-3:] self.assertFalse(s) s = BitStream('0b001') del s[:2] del s[-1:] self.assertFalse(s) class Slice(unittest.TestCase): def testByteAlignedSlice(self): s = BitStream(hex='0x123456') self.assertEqual(s[8:16].hex, '34') s = s[8:24] self.assertEqual(s.len, 16) self.assertEqual(s.hex, '3456') s = s[0:8] self.assertEqual(s.hex, '34') s.hex = '0x123456' self.assertEqual(s[8:24][0:8].hex, '34') def testSlice(self): s = BitStream(bin='000001111100000') s1 = s[0:5] s2 = s[5:10] s3 = s[10:15] self.assertEqual(s1.bin, '00000') self.assertEqual(s2.bin, '11111') self.assertEqual(s3.bin, '00000') class Insert(unittest.TestCase): def testInsert(self): s1 = BitStream(hex='0x123456') s2 = BitStream(hex='0xff') s1.bytepos = 1 s1.insert(s2) self.assertEqual(s1.bytepos, 2) self.assertEqual(s1.hex, '12ff3456') s1.insert('0xee', 24) self.assertEqual(s1.hex, '12ff34ee56') self.assertEqual(s1.bitpos, 32) self.assertRaises(ValueError, s1.insert, '0b1', -1000) self.assertRaises(ValueError, s1.insert, '0b1', 1000) def testInsertNull(self): s = BitStream(hex='0x123').insert(BitStream(), 3) self.assertEqual(s.hex, '123') def testInsertBits(self): one = BitStream(bin='1') zero = BitStream(bin='0') s = BitStream(bin='00') s.insert(one, 0) self.assertEqual(s.bin, '100') s.insert(zero, 0) self.assertEqual(s.bin, '0100') s.insert(one, s.len) self.assertEqual(s.bin, '01001') s.insert(s, 2) self.assertEqual(s.bin, '0101001001') class Resetting(unittest.TestCase): def testSetHex(self): s = BitStream() s.hex = '0' self.assertEqual(s.hex, '0') s.hex = '0x010203045' self.assertEqual(s.hex, '010203045') self.assertRaises(bitstring.CreationError, s._sethex, '0x002g') def testSetBin(self): s = BitStream(bin="000101101") self.assertEqual(s.bin, '000101101') self.assertEqual(s.len, 9) s.bin = '0' self.assertEqual(s.bin, '0') self.assertEqual(s.len, 1) def testSetEmptyBin(self): s = BitStream(hex='0x000001b3') s.bin = '' self.assertEqual(s.len, 0) self.assertEqual(s.bin, '') def testSetInvalidBin(self): s = BitStream() self.assertRaises(bitstring.CreationError, s._setbin_safe, '00102') class Overwriting(unittest.TestCase): def testOverwriteBit(self): s = BitStream(bin='0') s.overwrite(BitStream(bin='1'), 0) self.assertEqual(s.bin, '1') def testOverwriteLimits(self): s = BitStream(bin='0b11111') s.overwrite(BitStream(bin='000'), 0) self.assertEqual(s.bin, '00011') s.overwrite('0b000', 2) self.assertEqual(s.bin, '00000') def testOverwriteNull(self): s = BitStream(hex='342563fedec') s2 = BitStream(s) s.overwrite(BitStream(bin=''), 23) self.assertEqual(s.bin, s2.bin) def testOverwritePosition(self): s1 = BitStream(hex='0123456') s2 = BitStream(hex='ff') s1.bytepos = 1 s1.overwrite(s2) self.assertEqual((s1.hex, s1.bytepos), ('01ff456', 2)) s1.overwrite('0xff', 0) self.assertEqual((s1.hex, s1.bytepos), ('ffff456', 1)) def testOverwriteWithSelf(self): s = BitStream('0x123') s.overwrite(s) self.assertEqual(s, '0x123') class Split(unittest.TestCase): def testSplitByteAlignedCornerCases(self): s = BitStream() bsl = s.split(BitStream(hex='0xff')) self.assertEqual(next(bsl).hex, '') self.assertRaises(StopIteration, next, bsl) s = BitStream(hex='aabbcceeddff') delimiter = BitStream() bsl = s.split(delimiter) self.assertRaises(ValueError, next, bsl) delimiter = BitStream(hex='11') bsl = s.split(delimiter) self.assertEqual(next(bsl).hex, s.hex) def testSplitByteAligned(self): s = BitStream(hex='0x1234aa1234bbcc1234ffff') delimiter = BitStream(hex='1234') bsl = s.split(delimiter) self.assertEqual([b.hex for b in bsl], ['', '1234aa', '1234bbcc', '1234ffff']) self.assertEqual(s.pos, 0) def testSplitByteAlignedWithIntialBytes(self): s = BitStream(hex='aa471234fedc43 47112233 47 4723 472314') delimiter = BitStream(hex='47') s.find(delimiter) self.assertEqual(s.bytepos, 1) bsl = s.split(delimiter, start=0) self.assertEqual([b.hex for b in bsl], ['aa', '471234fedc43', '47112233', '47', '4723', '472314']) self.assertEqual(s.bytepos, 1) def testSplitByteAlignedWithOverlappingDelimiter(self): s = BitStream(hex='aaffaaffaaffaaffaaff') bsl = s.split(BitStream(hex='aaffaa')) self.assertEqual([b.hex for b in bsl], ['', 'aaffaaff', 'aaffaaffaaff']) class Adding(unittest.TestCase): def testAdding(self): s1 = BitStream(hex='0x0102') s2 = BitStream(hex='0x0304') s3 = s1 + s2 self.assertEqual(s1.hex, '0102') self.assertEqual(s2.hex, '0304') self.assertEqual(s3.hex, '01020304') s3 += s1 self.assertEqual(s3.hex, '010203040102') self.assertEqual(s2[9:16].bin, '0000100') self.assertEqual(s1[0:9].bin, '000000010') s4 = BitStream(bin='000000010') +\ BitStream(bin='0000100') self.assertEqual(s4.bin, '0000000100000100') s2p = s2[9:16] s1p = s1[0:9] s5p = s1p + s2p s5 = s1[0:9] + s2[9:16] self.assertEqual(s5.bin, '0000000100000100') def testMoreAdding(self): s = BitStream(bin='00') + BitStream(bin='') + BitStream(bin='11') self.assertEqual(s.bin, '0011') s = '0b01' s += BitStream('0b11') self.assertEqual(s.bin, '0111') s = BitStream('0x00') t = BitStream('0x11') s += t self.assertEqual(s.hex, '0011') self.assertEqual(t.hex, '11') s += s self.assertEqual(s.hex, '00110011') def testRadd(self): s = '0xff' + BitStream('0xee') self.assertEqual(s.hex, 'ffee') def testTruncateAsserts(self): s = BitStream('0x001122') s.bytepos = 2 del s[-s.len:] self.assertEqual(s.bytepos, 0) s.append('0x00') s.append('0x1122') s.bytepos = 2 del s[:s.len] self.assertEqual(s.bytepos, 0) s.append('0x00') def testOverwriteErrors(self): s = BitStream(bin='11111') self.assertRaises(ValueError, s.overwrite, BitStream(bin='1'), -10) self.assertRaises(ValueError, s.overwrite, BitStream(bin='1'), 6) self.assertRaises(ValueError, s.overwrite, BitStream(bin='11111'), 1) def testDeleteBits(self): s = BitStream(bin='000111100000') s.bitpos = 4 del s[4:8] self.assertEqual(s.bin, '00010000') del s[4:1004] self.assertTrue(s.bin, '0001') def testDeleteBitsWithPosition(self): s = BitStream(bin='000111100000') del s[4:8] self.assertEqual(s.bin, '00010000') def testDeleteBytes(self): s = BitStream('0x00112233') del s[8:8] self.assertEqual(s.hex, '00112233') self.assertEqual(s.pos, 0) del s[8:16] self.assertEqual(s.hex, '002233') self.assertEqual(s.bytepos, 0) del s[:24] self.assertFalse(s) self.assertEqual(s.pos, 0) def testGetItemWithPositivePosition(self): s = BitStream(bin='0b1011') self.assertEqual(s[0], True) self.assertEqual(s[1], False) self.assertEqual(s[2], True) self.assertEqual(s[3], True) self.assertRaises(IndexError, s.__getitem__, 4) def testGetItemWithNegativePosition(self): s = BitStream(bin='1011') self.assertEqual(s[-1], True) self.assertEqual(s[-2], True) self.assertEqual(s[-3], False) self.assertEqual(s[-4], True) self.assertRaises(IndexError, s.__getitem__, -5) def testSlicing(self): s = ConstBitStream(hex='0123456789') self.assertEqual(s[0:8].hex, '01') self.assertFalse(s[0:0]) self.assertFalse(s[23:20]) self.assertEqual(s[8:12].bin, '0010') self.assertEqual(s[32:80], '0x89') def testNegativeSlicing(self): s = ConstBitStream(hex='012345678') self.assertEqual(s[:-8].hex, '0123456') self.assertEqual(s[-16:-8].hex, '56') self.assertEqual(s[-24:].hex, '345678') self.assertEqual(s[-1000:-24], '0x012') def testLen(self): s = BitStream() self.assertEqual(len(s), 0) s.append(BitStream(bin='001')) self.assertEqual(len(s), 3) def testJoin(self): s1 = BitStream(bin='0') s2 = BitStream(bin='1') s3 = BitStream(bin='000') s4 = BitStream(bin='111') strings = [s1, s2, s1, s3, s4] s = BitStream().join(strings) self.assertEqual(s.bin, '010000111') def testJoin2(self): s1 = BitStream(hex='00112233445566778899aabbccddeeff') s2 = BitStream(bin='0b000011') bsl = [s1[0:32], s1[4:12], s2, s2, s2, s2] s = ConstBitStream().join(bsl) self.assertEqual(s.hex, '00112233010c30c3') bsl = [BitStream(uint=j, length=12) for j in range(10) for i in range(10)] s = BitStream().join(bsl) self.assertEqual(s.length, 1200) def testPos(self): s = BitStream(bin='1') self.assertEqual(s.bitpos, 0) s.read(1) self.assertEqual(s.bitpos, 1) def testWritingData(self): strings = [BitStream(bin=x) for x in ['0', '001', '0011010010', '010010', '1011']] s = BitStream().join(strings) s2 = BitStream(bytes=s.bytes) self.assertEqual(s2.bin, '000100110100100100101011') s2.append(BitStream(bin='1')) s3 = BitStream(bytes=s2.tobytes()) self.assertEqual(s3.bin, '00010011010010010010101110000000') def testWritingDataWithOffsets(self): s1 = BitStream(bytes=b'\x10') s2 = BitStream(bytes=b'\x08\x00', length=8, offset=1) s3 = BitStream(bytes=b'\x04\x00', length=8, offset=2) self.assertTrue(s1 == s2) self.assertTrue(s2 == s3) self.assertTrue(s1.bytes == s2.bytes) self.assertTrue(s2.bytes == s3.bytes) def testVariousThings1(self): hexes = ['12345678', '87654321', 'ffffffffff', 'ed', '12ec'] bins = ['001010', '1101011', '0010000100101110110110', '11', '011'] bsl = [] for (hex, bin) in list(zip(hexes, bins)) * 5: bsl.append(BitStream(hex=hex)) bsl.append(BitStream(bin=bin)) s = BitStream().join(bsl) for (hex, bin) in list(zip(hexes, bins)) * 5: h = s.read(4 * len(hex)) b = s.read(len(bin)) self.assertEqual(h.hex, hex) self.assertEqual(b.bin, bin) def testVariousThings2(self): s1 = BitStream(hex="0x1f08")[:13] self.assertEqual(s1.bin, '0001111100001') s2 = BitStream(bin='0101') self.assertEqual(s2.bin, '0101') s1.append(s2) self.assertEqual(s1.length, 17) self.assertEqual(s1.bin, '00011111000010101') s1 = s1[3:8] self.assertEqual(s1.bin, '11111') def testVariousThings3(self): s1 = BitStream(hex='0x012480ff')[2:27] s2 = s1 + s1 self.assertEqual(s2.length, 50) s3 = s2[0:25] s4 = s2[25:50] self.assertEqual(s3.bin, s4.bin) def testPeekBit(self): s = BitStream(bin='01') self.assertEqual(s.peek(1), [0]) self.assertEqual(s.peek(1), [0]) self.assertEqual(s.read(1), [0]) self.assertEqual(s.peek(1), [1]) self.assertEqual(s.peek(1), [1]) s = BitStream(bytes=b'\x1f', offset=3) self.assertEqual(s.len, 5) self.assertEqual(s.peek(5).bin, '11111') self.assertEqual(s.peek(5).bin, '11111') s.pos += 1 self.assertRaises(bitstring.ReadError, s.peek, 5) s = BitStream(hex='001122334455') self.assertEqual(s.peek(8).hex, '00') self.assertEqual(s.read(8).hex, '00') s.pos += 33 self.assertRaises(bitstring.ReadError, s.peek, 8) s = BitStream(hex='001122334455') self.assertEqual(s.peek(8 * 2).hex, '0011') self.assertEqual(s.read(8 * 3).hex, '001122') self.assertEqual(s.peek(8 * 3).hex, '334455') self.assertRaises(bitstring.ReadError, s.peek, 25) def testAdvanceBit(self): s = BitStream(hex='0xff') s.bitpos = 6 s.pos += 1 self.assertEqual(s.bitpos, 7) s.bitpos += 1 try: s.pos += 1 self.assertTrue(False) except ValueError: pass def testAdvanceByte(self): s = BitStream(hex='0x010203') s.bytepos += 1 self.assertEqual(s.bytepos, 1) s.bytepos += 1 self.assertEqual(s.bytepos, 2) s.bytepos += 1 try: s.bytepos += 1 self.assertTrue(False) except ValueError: pass def testRetreatBit(self): s = BitStream(hex='0xff') try: s.pos -= 1 self.assertTrue(False) except ValueError: pass s.pos = 5 s.pos -= 1 self.assertEqual(s.pos, 4) def testRetreatByte(self): s = BitStream(hex='0x010203') try: s.bytepos -= 1 self.assertTrue(False) except ValueError: pass s.bytepos = 3 s.bytepos -= 1 self.assertEqual(s.bytepos, 2) self.assertEqual(s.read(8).hex, '03') def testCreationByAuto(self): s = BitStream('0xff') self.assertEqual(s.hex, 'ff') s = BitStream('0b00011') self.assertEqual(s.bin, '00011') self.assertRaises(bitstring.CreationError, BitStream, 'hello') s1 = BitStream(bytes=b'\xf5', length=3, offset=5) s2 = BitStream(s1, length=1, offset=1) self.assertEqual(s2, '0b0') s = BitStream(bytes=b'\xff', offset=2) t = BitStream(s, offset=2) self.assertEqual(t, '0b1111') self.assertRaises(TypeError, BitStream, auto=1.2) def testCreationByAuto2(self): s = BitStream('bin=001') self.assertEqual(s.bin, '001') s = BitStream('oct=0o007') self.assertEqual(s.oct, '007') s = BitStream('hex=123abc') self.assertEqual(s, '0x123abc') s = BitStream('bin:2=01') self.assertEqual(s, '0b01') for s in ['bin:1=01', 'bits:4=0b1', 'oct:3=000', 'hex:4=0x1234']: self.assertRaises(bitstring.CreationError, BitStream, s) def testInsertUsingAuto(self): s = BitStream('0xff') s.insert('0x00', 4) self.assertEqual(s.hex, 'f00f') self.assertRaises(ValueError, s.insert, 'ff') def testOverwriteUsingAuto(self): s = BitStream('0x0110') s.overwrite('0b1') self.assertEqual(s.hex, '8110') s.overwrite('') self.assertEqual(s.hex, '8110') self.assertRaises(ValueError, s.overwrite, '0bf') def testFindUsingAuto(self): s = BitStream('0b000000010100011000') self.assertTrue(s.find('0b101')) self.assertEqual(s.pos, 7) def testFindbytealignedUsingAuto(self): s = BitStream('0x00004700') self.assertTrue(s.find('0b01000111', bytealigned=True)) self.assertEqual(s.bytepos, 2) def testAppendUsingAuto(self): s = BitStream('0b000') s.append('0b111') self.assertEqual(s.bin, '000111') s.append('0b0') self.assertEqual(s.bin, '0001110') def testSplitByteAlignedUsingAuto(self): s = BitStream('0x000143563200015533000123') sections = s.split('0x0001') self.assertEqual(next(sections).hex, '') self.assertEqual(next(sections).hex, '0001435632') self.assertEqual(next(sections).hex, '00015533') self.assertEqual(next(sections).hex, '000123') self.assertRaises(StopIteration, next, sections) def testSplitByteAlignedWithSelf(self): s = BitStream('0x1234') sections = s.split(s) self.assertEqual(next(sections).hex, '') self.assertEqual(next(sections).hex, '1234') self.assertRaises(StopIteration, next, sections) def testPrepend(self): s = BitStream('0b000') s.prepend('0b11') self.assertEqual(s.bin, '11000') s.prepend(s) self.assertEqual(s.bin, '1100011000') s.prepend('') self.assertEqual(s.bin, '1100011000') def testNullSlice(self): s = BitStream('0x111') t = s[1:1] self.assertEqual(t._datastore.bytelength, 0) def testMultipleAutos(self): s = BitStream('0xa') s.prepend('0xf') s.append('0xb') self.assertEqual(s, '0xfab') s.prepend(s) s.append('0x100') s.overwrite('0x5', 4) self.assertEqual(s, '0xf5bfab100') def testReverse(self): s = BitStream('0b0011') s.reverse() self.assertEqual(s.bin, '1100') s = BitStream('0b10') s.reverse() self.assertEqual(s.bin, '01') s = BitStream() s.reverse() self.assertEqual(s.bin, '') def testInitWithConcatenatedStrings(self): s = BitStream('0xff 0Xee 0xd 0xcc') self.assertEqual(s.hex, 'ffeedcc') s = BitStream('0b0 0B111 0b001') self.assertEqual(s.bin, '0111001') s += '0b1' + '0B1' self.assertEqual(s.bin, '011100111') s = BitStream(hex='ff0xee') self.assertEqual(s.hex, 'ffee') s = BitStream(bin='000b0b11') self.assertEqual(s.bin, '0011') s = BitStream(' 0o123 0O 7 0 o1') self.assertEqual(s.oct, '12371') s += ' 0 o 332' self.assertEqual(s.oct, '12371332') def testEquals(self): s1 = BitStream('0b01010101') s2 = BitStream('0b01010101') self.assertTrue(s1 == s2) s3 = BitStream() s4 = BitStream() self.assertTrue(s3 == s4) self.assertFalse(s3 != s4) s5 = BitStream(bytes=b'\xff', offset=2, length=3) s6 = BitStream('0b111') self.assertTrue(s5 == s6) class A(object): pass self.assertFalse(s5 == A()) def testLargeEquals(self): s1 = BitStream(1000000) s2 = BitStream(1000000) s1.set(True, [-1, 55, 53214, 534211, 999999]) s2.set(True, [-1, 55, 53214, 534211, 999999]) self.assertEqual(s1, s2) s1.set(True, 800000) self.assertNotEqual(s1, s2) def testNotEquals(self): s1 = BitStream('0b0') s2 = BitStream('0b1') self.assertTrue(s1 != s2) self.assertFalse(s1 != BitStream('0b0')) def testEqualityWithAutoInitialised(self): a = BitStream('0b00110111') self.assertTrue(a == '0b00110111') self.assertTrue(a == '0x37') self.assertTrue('0b0011 0111' == a) self.assertTrue('0x3 0x7' == a) self.assertFalse(a == '0b11001000') self.assertFalse('0x3737' == a) def testInvertSpecialMethod(self): s = BitStream('0b00011001') self.assertEqual((~s).bin, '11100110') self.assertEqual((~BitStream('0b0')).bin, '1') self.assertEqual((~BitStream('0b1')).bin, '0') self.assertTrue(~~s == s) def testInvertBitPosition(self): s = ConstBitStream('0xefef') s.pos = 8 t = ~s self.assertEqual(s.pos, 8) self.assertEqual(t.pos, 0) def testInvertSpecialMethodErrors(self): s = BitStream() self.assertRaises(bitstring.Error, s.__invert__) def testJoinWithAuto(self): s = BitStream().join(['0xf', '0b00', BitStream(bin='11')]) self.assertEqual(s, '0b11110011') def testAutoBitStringCopy(self): s = BitStream('0xabcdef') t = BitStream(s) self.assertEqual(t.hex, 'abcdef') del s[-8:] self.assertEqual(t.hex, 'abcdef') class Multiplication(unittest.TestCase): def testMultiplication(self): a = BitStream('0xff') b = a * 8 self.assertEqual(b, '0xffffffffffffffff') b = 4 * a self.assertEqual(b, '0xffffffff') self.assertTrue(1 * a == a * 1 == a) c = a * 0 self.assertFalse(c) a *= 3 self.assertEqual(a, '0xffffff') a *= 0 self.assertFalse(a) one = BitStream('0b1') zero = BitStream('0b0') mix = one * 2 + 3 * zero + 2 * one * 2 self.assertEqual(mix, '0b110001111') q = BitStream() q *= 143 self.assertFalse(q) q += [True, True, False] q.pos += 2 q *= 0 self.assertFalse(q) self.assertEqual(q.bitpos, 0) def testMultiplicationWithFiles(self): a = BitStream(filename='test.m1v') b = a.len a *= 3 self.assertEqual(a.len, 3 * b) def testMultiplicationErrors(self): a = BitStream('0b1') b = BitStream('0b0') self.assertRaises(ValueError, a.__mul__, -1) self.assertRaises(ValueError, a.__imul__, -1) self.assertRaises(ValueError, a.__rmul__, -1) self.assertRaises(TypeError, a.__mul__, 1.2) self.assertRaises(TypeError, a.__rmul__, b) self.assertRaises(TypeError, a.__imul__, b) def testFileAndMemEquivalence(self): a = ConstBitStream(filename='smalltestfile') b = BitStream(filename='smalltestfile') self.assertTrue(isinstance(a._datastore._rawarray, bitstring.MmapByteArray)) self.assertTrue(isinstance(b._datastore._rawarray, bytearray)) self.assertEqual(a._datastore.getbyte(0), b._datastore.getbyte(0)) self.assertEqual(a._datastore.getbyteslice(1, 5), bytearray(b._datastore.getbyteslice(1, 5))) class BitWise(unittest.TestCase): def testBitwiseAnd(self): a = BitStream('0b01101') b = BitStream('0b00110') self.assertEqual((a & b).bin, '00100') self.assertEqual((a & '0b11111'), a) self.assertRaises(ValueError, a.__and__, '0b1') self.assertRaises(ValueError, b.__and__, '0b110111111') c = BitStream('0b0011011') c.pos = 4 d = c & '0b1111000' self.assertEqual(d.pos, 0) self.assertEqual(d.bin, '0011000') d = '0b1111000' & c self.assertEqual(d.bin, '0011000') def testBitwiseOr(self): a = BitStream('0b111001001') b = BitStream('0b011100011') self.assertEqual((a | b).bin, '111101011') self.assertEqual((a | '0b000000000'), a) self.assertRaises(ValueError, a.__or__, '0b0000') self.assertRaises(ValueError, b.__or__, a + '0b1') a = '0xff00' | BitStream('0x00f0') self.assertEqual(a.hex, 'fff0') def testBitwiseXor(self): a = BitStream('0b111001001') b = BitStream('0b011100011') self.assertEqual((a ^ b).bin, '100101010') self.assertEqual((a ^ '0b111100000').bin, '000101001') self.assertRaises(ValueError, a.__xor__, '0b0000') self.assertRaises(ValueError, b.__xor__, a + '0b1') a = '0o707' ^ BitStream('0o777') self.assertEqual(a.oct, '070') class Split(unittest.TestCase): def testSplit(self): a = BitStream('0b0 010100111 010100 0101 010') a.pos = 20 subs = [i.bin for i in a.split('0b010')] self.assertEqual(subs, ['0', '010100111', '010100', '0101', '010']) self.assertEqual(a.pos, 20) def testSplitCornerCases(self): a = BitStream('0b000000') bsl = a.split('0b1', False) self.assertEqual(next(bsl), a) self.assertRaises(StopIteration, next, bsl) b = BitStream() bsl = b.split('0b001', False) self.assertFalse(next(bsl)) self.assertRaises(StopIteration, next, bsl) def testSplitErrors(self): a = BitStream('0b0') b = a.split('', False) self.assertRaises(ValueError, next, b) def testSliceWithOffset(self): a = BitStream(bytes=b'\x00\xff\x00', offset=7) b = a[7:12] self.assertEqual(b.bin, '11000') def testSplitWithMaxsplit(self): a = BitStream('0xaabbccbbccddbbccddee') self.assertEqual(len(list(a.split('0xbb', bytealigned=True))), 4) bsl = list(a.split('0xbb', count=1, bytealigned=True)) self.assertEqual((len(bsl), bsl[0]), (1, '0xaa')) bsl = list(a.split('0xbb', count=2, bytealigned=True)) self.assertEqual(len(bsl), 2) self.assertEqual(bsl[0], '0xaa') self.assertEqual(bsl[1], '0xbbcc') def testSplitMore(self): s = BitStream('0b1100011001110110') for i in range(10): a = list(s.split('0b11', False, count=i)) b = list(s.split('0b11', False))[:i] self.assertEqual(a, b) b = s.split('0b11', count=-1) self.assertRaises(ValueError, next, b) def testSplitStartbit(self): a = BitStream('0b0010101001000000001111') bsl = a.split('0b001', bytealigned=False, start=1) self.assertEqual([x.bin for x in bsl], ['010101', '001000000', '001111']) b = a.split('0b001', start=-100) self.assertRaises(ValueError, next, b) b = a.split('0b001', start=23) self.assertRaises(ValueError, next, b) b = a.split('0b1', start=10, end=9) self.assertRaises(ValueError, next, b) def testSplitStartbitByteAligned(self): a = BitStream('0x00ffffee') bsl = list(a.split('0b111', start=9, bytealigned=True)) self.assertEqual([x.bin for x in bsl], ['1111111', '11111111', '11101110']) def testSplitEndbit(self): a = BitStream('0b000010001001011') bsl = list(a.split('0b1', bytealigned=False, end=14)) self.assertEqual([x.bin for x in bsl], ['0000', '1000', '100', '10', '1']) self.assertEqual(list(a[4:12].split('0b0', False)), list(a.split('0b0', start=4, end=12))) # Shouldn't raise ValueError bsl = list(a.split('0xffee', end=15)) # Whereas this one will when we call next() bsl = a.split('0xffee', end=16) self.assertRaises(ValueError, next, bsl) def testSplitEndbitByteAligned(self): a = BitStream('0xff00ff')[:22] bsl = list(a.split('0b 0000 0000 111', end=19)) self.assertEqual([x.bin for x in bsl], ['11111111', '00000000111']) bsl = list(a.split('0b 0000 0000 111', end=18)) self.assertEqual([x.bin for x in bsl], ['111111110000000011']) def testSplitMaxSplit(self): a = BitStream('0b1' * 20) for i in range(10): bsl = list(a.split('0b1', count=i)) self.assertEqual(len(bsl), i) ####################### def testPositionInSlice(self): a = BitStream('0x00ffff00') a.bytepos = 2 b = a[8:24] self.assertEqual(b.bytepos, 0) def testFindByteAlignedWithBits(self): a = BitStream('0x00112233445566778899') a.find('0b0001', bytealigned=True) self.assertEqual(a.bitpos, 8) def testFindStartbitNotByteAligned(self): a = BitStream('0b0010000100') found = a.find('0b1', start=4) self.assertEqual((found, a.bitpos), ((7,), 7)) found = a.find('0b1', start=2) self.assertEqual((found, a.bitpos), ((2,), 2)) found = a.find('0b1', bytealigned=False, start=8) self.assertEqual((found, a.bitpos), ((), 2)) def testFindEndbitNotByteAligned(self): a = BitStream('0b0010010000') found = a.find('0b1', bytealigned=False, end=2) self.assertEqual((found, a.bitpos), ((), 0)) found = a.find('0b1', end=3) self.assertEqual((found, a.bitpos), ((2,), 2)) found = a.find('0b1', bytealigned=False, start=3, end=5) self.assertEqual((found, a.bitpos), ((), 2)) found = a.find('0b1', start=3, end=6) self.assertEqual((found[0], a.bitpos), (5, 5)) def testFindStartbitByteAligned(self): a = BitStream('0xff001122ff0011ff') a.pos = 40 found = a.find('0x22', start=23, bytealigned=True) self.assertEqual((found, a.bytepos), ((24,), 3)) a.bytepos = 4 found = a.find('0x22', start=24, bytealigned=True) self.assertEqual((found, a.bytepos), ((24,), 3)) found = a.find('0x22', start=25, bytealigned=True) self.assertEqual((found, a.pos), ((), 24)) found = a.find('0b111', start=40, bytealigned=True) self.assertEqual((found, a.pos), ((56,), 56)) def testFindEndbitByteAligned(self): a = BitStream('0xff001122ff0011ff') found = a.find('0x22', end=31, bytealigned=True) self.assertFalse(found) self.assertEqual(a.pos, 0) found = a.find('0x22', end=32, bytealigned=True) self.assertTrue(found) self.assertEqual(a.pos, 24) self.assertEqual(found[0], 24) def testFindStartEndbitErrors(self): a = BitStream('0b00100') self.assertRaises(ValueError, a.find, '0b1', bytealigned=False, start=-100) self.assertRaises(ValueError, a.find, '0b1', end=6) self.assertRaises(ValueError, a.find, '0b1', start=4, end=3) b = BitStream('0x0011223344') self.assertRaises(ValueError, a.find, '0x22', bytealigned=True, start=-100) self.assertRaises(ValueError, a.find, '0x22', end=41, bytealigned=True) def testPrependAndAppendAgain(self): c = BitStream('0x1122334455667788') c.bitpos = 40 c.prepend('0b1') self.assertEqual(c.bitpos, 41) c = BitStream() c.prepend('0x1234') self.assertEqual(c.bytepos, 2) c = BitStream() c.append('0x1234') self.assertEqual(c.bytepos, 0) s = BitStream(bytes=b'\xff\xff', offset=2) self.assertEqual(s.length, 14) t = BitStream(bytes=b'\x80', offset=1, length=2) s.prepend(t) self.assertEqual(s, '0x3fff') def testFindAll(self): a = BitStream('0b11111') p = a.findall('0b1') self.assertEqual(list(p), [0, 1, 2, 3, 4]) p = a.findall('0b11') self.assertEqual(list(p), [0, 1, 2, 3]) p = a.findall('0b10') self.assertEqual(list(p), []) a = BitStream('0x4733eeff66554747335832434547') p = a.findall('0x47', bytealigned=True) self.assertEqual(list(p), [0, 6 * 8, 7 * 8, 13 * 8]) p = a.findall('0x4733', bytealigned=True) self.assertEqual(list(p), [0, 7 * 8]) a = BitStream('0b1001001001001001001') p = a.findall('0b1001', bytealigned=False) self.assertEqual(list(p), [0, 3, 6, 9, 12, 15]) self.assertEqual(a.pos, 15) def testFindAllGenerator(self): a = BitStream('0xff1234512345ff1234ff12ff') p = a.findall('0xff', bytealigned=True) self.assertEqual(next(p), 0) self.assertEqual(next(p), 6 * 8) self.assertEqual(next(p), 9 * 8) self.assertEqual(next(p), 11 * 8) self.assertRaises(StopIteration, next, p) def testFindAllCount(self): s = BitStream('0b1') * 100 for i in [0, 1, 23]: self.assertEqual(len(list(s.findall('0b1', count=i))), i) b = s.findall('0b1', bytealigned=True, count=-1) self.assertRaises(ValueError, next, b) def testContains(self): a = BitStream('0b1') + '0x0001dead0001' self.assertTrue('0xdead' in a) self.assertEqual(a.pos, 0) self.assertFalse('0xfeed' in a) def testRepr(self): max = bitstring.MAX_CHARS bls = ['', '0b1', '0o5', '0x43412424f41', '0b00101001010101'] for bs in bls: a = BitStream(bs) b = eval(a.__repr__()) self.assertTrue(a == b) for f in [ConstBitStream(filename='test.m1v'), ConstBitStream(filename='test.m1v', length=17), ConstBitStream(filename='test.m1v', length=23, offset=23102)]: f2 = eval(f.__repr__()) self.assertEqual(f._datastore._rawarray.source.name, f2._datastore._rawarray.source.name) self.assertTrue(f2.tobytes() == f.tobytes()) a = BitStream('0b1') self.assertEqual(repr(a), "BitStream('0b1')") a += '0b11' self.assertEqual(repr(a), "BitStream('0b111')") a += '0b1' self.assertEqual(repr(a), "BitStream('0xf')") a *= max self.assertEqual(repr(a), "BitStream('0x" + "f" * max + "')") a += '0xf' self.assertEqual(repr(a), "BitStream('0x" + "f" * max + "...') # length=%d" % (max * 4 + 4)) def testPrint(self): s = BitStream(hex='0x00') self.assertEqual('0x' + s.hex, s.__str__()) s = BitStream(filename='test.m1v') self.assertEqual('0x' + s[0:bitstring.MAX_CHARS * 4].hex + '...', s.__str__()) self.assertEqual(BitStream().__str__(), '') s = BitStream('0b11010') self.assertEqual('0b' + s.bin, s.__str__()) s = BitStream('0x12345678901234567890,0b1') self.assertEqual('0x12345678901234567890, 0b1', s.__str__()) def testIter(self): a = BitStream('0b001010') b = BitStream() for bit in a: b.append(ConstBitStream(bool=bit)) self.assertEqual(a, b) def testDelitem(self): a = BitStream('0xffee') del a[0:8] self.assertEqual(a.hex, 'ee') del a[0:8] self.assertFalse(a) del a[10:12] self.assertFalse(a) def testNonZeroBitsAtStart(self): a = BitStream(bytes=b'\xff', offset=2) b = BitStream('0b00') b += a self.assertTrue(b == '0b0011 1111') #self.assertEqual(a._datastore.rawbytes, b'\xff') self.assertEqual(a.tobytes(), b'\xfc') def testNonZeroBitsAtEnd(self): a = BitStream(bytes=b'\xff', length=5) #self.assertEqual(a._datastore.rawbytes, b'\xff') b = BitStream('0b00') a += b self.assertTrue(a == '0b1111100') self.assertEqual(a.tobytes(), b'\xf8') with self.assertRaises(ValueError): a.bytes def testNewOffsetErrors(self): self.assertRaises(bitstring.CreationError, BitStream, hex='ff', offset=-1) self.assertRaises(bitstring.CreationError, BitStream, '0xffffffff', offset=33) def testSliceStep(self): a = BitStream('0x3') b = a[::1] self.assertEqual(a, b) self.assertEqual(a[2:4:1], '0b11') self.assertEqual(a[0:2:1], '0b00') self.assertEqual(a[:3], '0o1') a = BitStream('0x0011223344556677') self.assertEqual(a[-8:], '0x77') self.assertEqual(a[:-24], '0x0011223344') self.assertEqual(a[-1000:-24], '0x0011223344') def testInterestingSliceStep(self): a = BitStream('0b0011000111') self.assertEqual(a[7:3:-1], '0b1000') self.assertEqual(a[9:2:-1], '0b1110001') self.assertEqual(a[8:2:-2], '0b100') self.assertEqual(a[100:-20:-3], '0b1010') self.assertEqual(a[100:-20:-1], '0b1110001100') self.assertEqual(a[10:2:-1], '0b1110001') self.assertEqual(a[100:2:-1], '0b1110001') def testInsertionOrderAndBitpos(self): b = BitStream() b[0:0] = '0b0' b[0:0] = '0b1' self.assertEqual(b, '0b10') self.assertEqual(b.bitpos, 1) a = BitStream() a.insert('0b0') a.insert('0b1') self.assertEqual(a, '0b01') self.assertEqual(a.bitpos, 2) def testOverwriteOrderAndBitpos(self): a = BitStream('0xff') a.overwrite('0xa') self.assertEqual(a, '0xaf') self.assertEqual(a.bitpos, 4) a.overwrite('0xb') self.assertEqual(a, '0xab') self.assertEqual(a.bitpos, 8) self.assertRaises(ValueError, a.overwrite, '0b1') a.overwrite('0xa', 4) self.assertEqual(a, '0xaa') self.assertEqual(a.bitpos, 8) a.overwrite(a, 0) self.assertEqual(a, '0xaa') def testInitSliceWithInt(self): a = BitStream(length=8) a[:] = 100 self.assertEqual(a.uint, 100) a[0] = 1 self.assertEqual(a.bin, '11100100') a[1] = 0 self.assertEqual(a.bin, '10100100') a[-1] = -1 self.assertEqual(a.bin, '10100101') a[-3:] = -2 self.assertEqual(a.bin, '10100110') def testInitSliceWithIntErrors(self): a = BitStream('0b0000') self.assertRaises(ValueError, a.__setitem__, slice(0, 4), 16) self.assertRaises(ValueError, a.__setitem__, slice(0, 4), -9) self.assertRaises(ValueError, a.__setitem__, 0, 2) self.assertRaises(ValueError, a.__setitem__, 0, -2) def testReverseWithSlice(self): a = BitStream('0x0012ff') a.reverse() self.assertEqual(a, '0xff4800') a.reverse(8, 16) self.assertEqual(a, '0xff1200') b = a[8:16] b.reverse() a[8:16] = b self.assertEqual(a, '0xff4800') def testReverseWithSliceErrors(self): a = BitStream('0x123') self.assertRaises(ValueError, a.reverse, -1, 4) self.assertRaises(ValueError, a.reverse, 10, 9) self.assertRaises(ValueError, a.reverse, 1, 10000) def testInitialiseFromList(self): a = BitStream([]) self.assertFalse(a) a = BitStream([True, False, [], [0], 'hello']) self.assertEqual(a, '0b10011') a += [] self.assertEqual(a, '0b10011') a += [True, False, True] self.assertEqual(a, '0b10011101') a.find([12, 23]) self.assertEqual(a.pos, 3) self.assertEqual([1, 0, False, True], BitStream('0b1001')) a = [True] + BitStream('0b1') self.assertEqual(a, '0b11') def testInitialiseFromTuple(self): a = BitStream(()) self.assertFalse(a) a = BitStream((0, 1, '0', '1')) self.assertEqual('0b0111', a) a.replace((True, True), []) self.assertEqual(a, (False, True)) def testCut(self): a = BitStream('0x00112233445') b = list(a.cut(8)) self.assertEqual(b, ['0x00', '0x11', '0x22', '0x33', '0x44']) b = list(a.cut(4, 8, 16)) self.assertEqual(b, ['0x1', '0x1']) b = list(a.cut(4, 0, 44, 4)) self.assertEqual(b, ['0x0', '0x0', '0x1', '0x1']) a = BitStream() b = list(a.cut(10)) self.assertTrue(not b) def testCutErrors(self): a = BitStream('0b1') b = a.cut(1, 1, 2) self.assertRaises(ValueError, next, b) b = a.cut(1, -2, 1) self.assertRaises(ValueError, next, b) b = a.cut(0) self.assertRaises(ValueError, next, b) b = a.cut(1, count=-1) self.assertRaises(ValueError, next, b) def testCutProblem(self): s = BitStream('0x1234') for n in list(s.cut(4)): s.prepend(n) self.assertEqual(s, '0x43211234') def testJoinFunctions(self): a = BitStream().join(['0xa', '0xb', '0b1111']) self.assertEqual(a, '0xabf') a = BitStream('0b1').join(['0b0' for i in range(10)]) self.assertEqual(a, '0b0101010101010101010') a = BitStream('0xff').join([]) self.assertFalse(a) def testAddingBitpos(self): a = BitStream('0xff') b = BitStream('0x00') a.bitpos = b.bitpos = 8 c = a + b self.assertEqual(c.bitpos, 0) def testIntelligentRead1(self): a = BitStream(uint=123, length=23) u = a.read('uint:23') self.assertEqual(u, 123) self.assertEqual(a.pos, a.len) b = BitStream(int=-12, length=44) i = b.read('int:44') self.assertEqual(i, -12) self.assertEqual(b.pos, b.len) u2, i2 = (a + b).readlist('uint:23, int:44') self.assertEqual((u2, i2), (123, -12)) def testIntelligentRead2(self): a = BitStream(ue=822) u = a.read('ue') self.assertEqual(u, 822) self.assertEqual(a.pos, a.len) b = BitStream(se=-1001) s = b.read('se') self.assertEqual(s, -1001) self.assertEqual(b.pos, b.len) s, u1, u2 = (b + 2 * a).readlist('se, ue, ue') self.assertEqual((s, u1, u2), (-1001, 822, 822)) def testIntelligentRead3(self): a = BitStream('0x123') + '0b11101' h = a.read('hex:12') self.assertEqual(h, '123') b = a.read('bin: 5') self.assertEqual(b, '11101') c = '0b' + b + a b, h = c.readlist('bin:5, hex:12') self.assertEqual((b, h), ('11101', '123')) def testIntelligentRead4(self): a = BitStream('0o007') o = a.read('oct:9') self.assertEqual(o, '007') self.assertEqual(a.pos, a.len) def testIntelligentRead5(self): a = BitStream('0x00112233') c0, c1, c2 = a.readlist('bits:8, bits:8, bits:16') self.assertEqual((c0, c1, c2), (BitStream('0x00'), BitStream('0x11'), BitStream('0x2233'))) a.pos = 0 c = a.read('bits:16') self.assertEqual(c, BitStream('0x0011')) def testIntelligentRead6(self): a = BitStream('0b000111000') b1, b2, b3 = a.readlist('bin :3, int: 3, int:3') self.assertEqual(b1, '000') self.assertEqual(b2, -1) self.assertEqual(b3, 0) def testIntelligentRead7(self): a = BitStream('0x1234') a1, a2, a3, a4 = a.readlist('bin:0, oct:0, hex:0, bits:0') self.assertTrue(a1 == a2 == a3 == '') self.assertFalse(a4) self.assertRaises(ValueError, a.read, 'int:0') self.assertRaises(ValueError, a.read, 'uint:0') self.assertEqual(a.pos, 0) def testIntelligentRead8(self): a = BitStream('0x123456') for t in ['hex:1', 'oct:1', 'hex4', '-5', 'fred', 'bin:-2', 'uint:p', 'uint:-2', 'int:u', 'int:-3', 'ses', 'uee', '-14']: self.assertRaises(ValueError, a.read, t) def testIntelligentRead9(self): a = BitStream('0xff') self.assertEqual(a.read('intle'), -1) def testFillerReads1(self): s = BitStream('0x012345') t = s.read('bits') self.assertEqual(s, t) s.pos = 0 a, b = s.readlist('hex:8, hex') self.assertEqual(a, '01') self.assertEqual(b, '2345') self.assertTrue(isinstance(b, str)) s.bytepos = 0 a, b = s.readlist('bin, hex:20') self.assertEqual(a, '0000') self.assertEqual(b, '12345') self.assertTrue(isinstance(a, str)) def testFillerReads2(self): s = BitStream('0xabcdef') self.assertRaises(bitstring.Error, s.readlist, 'bits, se') self.assertRaises(bitstring.Error, s.readlist, 'hex:4, bits, ue, bin:4') s.pos = 0 self.assertRaises(bitstring.Error, s.readlist, 'bin, bin') def testIntelligentPeek(self): a = BitStream('0b01, 0x43, 0o4, uint:23=2, se=5, ue=3') b, c, e = a.peeklist('bin:2, hex:8, oct:3') self.assertEqual((b, c, e), ('01', '43', '4')) self.assertEqual(a.pos, 0) a.pos = 13 f, g, h = a.peeklist('uint:23, se, ue') self.assertEqual((f, g, h), (2, 5, 3)) self.assertEqual(a.pos, 13) def testReadMultipleBits(self): s = BitStream('0x123456789abcdef') a, b = s.readlist([4, 4]) self.assertEqual(a, '0x1') self.assertEqual(b, '0x2') c, d, e = s.readlist([8, 16, 8]) self.assertEqual(c, '0x34') self.assertEqual(d, '0x5678') self.assertEqual(e, '0x9a') def testPeekMultipleBits(self): s = BitStream('0b1101, 0o721, 0x2234567') a, b, c, d = s.peeklist([2, 1, 1, 9]) self.assertEqual(a, '0b11') self.assertEqual(bool(b), False) self.assertEqual(bool(c), True) self.assertEqual(d, '0o721') self.assertEqual(s.pos, 0) a, b = s.peeklist([4, 9]) self.assertEqual(a, '0b1101') self.assertEqual(b, '0o721') s.pos = 13 a, b = s.peeklist([16, 8]) self.assertEqual(a, '0x2234') self.assertEqual(b, '0x56') self.assertEqual(s.pos, 13) def testDifficultPrepends(self): a = BitStream('0b1101011') b = BitStream() for i in range(10): b.prepend(a) self.assertEqual(b, a * 10) def testPackingWrongNumberOfThings(self): self.assertRaises(bitstring.CreationError, pack, 'bin:1') self.assertRaises(bitstring.CreationError, pack, '', 100) def testPackWithVariousKeys(self): a = pack('uint10', uint10='0b1') self.assertEqual(a, '0b1') b = pack('0b110', **{'0b110': '0xfff'}) self.assertEqual(b, '0xfff') def testPackWithVariableLength(self): for i in range(1, 11): a = pack('uint:n', 0, n=i) self.assertEqual(a.bin, '0' * i) def testToBytes(self): a = BitStream(bytes=b'\xab\x00') b = a.tobytes() self.assertEqual(a.bytes, b) for i in range(7): del a[-1:] self.assertEqual(a.tobytes(), b'\xab\x00') del a[-1:] self.assertEqual(a.tobytes(), b'\xab') def testToFile(self): a = BitStream('0x0000ff')[:17] f = open('temp_bitstring_unit_testing_file', 'wb') a.tofile(f) f.close() b = BitStream(filename='temp_bitstring_unit_testing_file') self.assertEqual(b, '0x000080') a = BitStream('0x911111') del a[:1] self.assertEqual(a + '0b0', '0x222222') f = open('temp_bitstring_unit_testing_file', 'wb') a.tofile(f) f.close() b = BitStream(filename='temp_bitstring_unit_testing_file') self.assertEqual(b, '0x222222') os.remove('temp_bitstring_unit_testing_file') #def testToFileWithLargerFile(self): # a = BitStream(length=16000000) # a[1] = '0b1' # a[-2] = '0b1' # f = open('temp_bitstring_unit_testing_file' ,'wb') # a.tofile(f) # f.close() # b = BitStream(filename='temp_bitstring_unit_testing_file') # self.assertEqual(b.len, 16000000) # self.assertEqual(b[1], True) # # f = open('temp_bitstring_unit_testing_file' ,'wb') # a[1:].tofile(f) # f.close() # b = BitStream(filename='temp_bitstring_unit_testing_file') # self.assertEqual(b.len, 16000000) # self.assertEqual(b[0], True) # os.remove('temp_bitstring_unit_testing_file') def testTokenParser(self): tp = bitstring.tokenparser self.assertEqual(tp('hex'), (True, [('hex', None, None)])) self.assertEqual(tp('hex=14'), (True, [('hex', None, '14')])) self.assertEqual(tp('se'), (False, [('se', None, None)])) self.assertEqual(tp('ue=12'), (False, [('ue', None, '12')])) self.assertEqual(tp('0xef'), (False, [('0x', None, 'ef')])) self.assertEqual(tp('uint:12'), (False, [('uint', 12, None)])) self.assertEqual(tp('int:30=-1'), (False, [('int', 30, '-1')])) self.assertEqual(tp('bits:10'), (False, [('bits', 10, None)])) self.assertEqual(tp('bits:10'), (False, [('bits', 10, None)])) self.assertEqual(tp('123'), (False, [('uint', 123, None)])) self.assertEqual(tp('123'), (False, [('uint', 123, None)])) self.assertRaises(ValueError, tp, 'hex12') self.assertEqual(tp('hex12', ('hex12',)), (False, [('hex12', None, None)])) self.assertEqual(tp('2*bits:6'), (False, [('bits', 6, None), ('bits', 6, None)])) def testAutoFromFileObject(self): with open('test.m1v', 'rb') as f: s = ConstBitStream(f, offset=32, length=12) self.assertEqual(s.uint, 352) t = ConstBitStream('0xf') + f self.assertTrue(t.startswith('0xf000001b3160')) s2 = ConstBitStream(f) t2 = BitStream('0xc') t2.prepend(s2) self.assertTrue(t2.startswith('0x000001b3')) self.assertTrue(t2.endswith('0xc')) with open('test.m1v', 'rb') as b: u = BitStream(bytes=b.read()) # TODO: u == s2 is much slower than u.bytes == s2.bytes self.assertEqual(u.bytes, s2.bytes) def testFileBasedCopy(self): with open('smalltestfile', 'rb') as f: s = BitStream(f) t = BitStream(s) s.prepend('0b1') self.assertEqual(s[1:], t) s = BitStream(f) t = copy.copy(s) t.append('0b1') self.assertEqual(s, t[:-1]) def testBigEndianSynonyms(self): s = BitStream('0x12318276ef') self.assertEqual(s.int, s.intbe) self.assertEqual(s.uint, s.uintbe) s = BitStream(intbe=-100, length=16) self.assertEqual(s, 'int:16=-100') s = BitStream(uintbe=13, length=24) self.assertEqual(s, 'int:24=13') s = BitStream('uintbe:32=1000') self.assertEqual(s, 'uint:32=1000') s = BitStream('intbe:8=2') self.assertEqual(s, 'int:8=2') self.assertEqual(s.read('intbe'), 2) s.pos = 0 self.assertEqual(s.read('uintbe'), 2) def testBigEndianSynonymErrors(self): self.assertRaises(bitstring.CreationError, BitStream, uintbe=100, length=15) self.assertRaises(bitstring.CreationError, BitStream, intbe=100, length=15) self.assertRaises(bitstring.CreationError, BitStream, 'uintbe:17=100') self.assertRaises(bitstring.CreationError, BitStream, 'intbe:7=2') s = BitStream('0b1') self.assertRaises(bitstring.InterpretError, s._getintbe) self.assertRaises(bitstring.InterpretError, s._getuintbe) self.assertRaises(ValueError, s.read, 'uintbe') self.assertRaises(ValueError, s.read, 'intbe') def testLittleEndianUint(self): s = BitStream(uint=100, length=16) self.assertEqual(s.uintle, 25600) s = BitStream(uintle=100, length=16) self.assertEqual(s.uint, 25600) self.assertEqual(s.uintle, 100) s.uintle += 5 self.assertEqual(s.uintle, 105) s = BitStream('uintle:32=999') self.assertEqual(s.uintle, 999) s.byteswap() self.assertEqual(s.uint, 999) s = pack('uintle:24', 1001) self.assertEqual(s.uintle, 1001) self.assertEqual(s.length, 24) self.assertEqual(s.read('uintle'), 1001) def testLittleEndianInt(self): s = BitStream(int=100, length=16) self.assertEqual(s.intle, 25600) s = BitStream(intle=100, length=16) self.assertEqual(s.int, 25600) self.assertEqual(s.intle, 100) s.intle += 5 self.assertEqual(s.intle, 105) s = BitStream('intle:32=999') self.assertEqual(s.intle, 999) s.byteswap() self.assertEqual(s.int, 999) s = pack('intle:24', 1001) self.assertEqual(s.intle, 1001) self.assertEqual(s.length, 24) self.assertEqual(s.read('intle'), 1001) def testLittleEndianErrors(self): self.assertRaises(bitstring.CreationError, BitStream, 'uintle:15=10') self.assertRaises(bitstring.CreationError, BitStream, 'intle:31=-999') self.assertRaises(bitstring.CreationError, BitStream, uintle=100, length=15) self.assertRaises(bitstring.CreationError, BitStream, intle=100, length=15) s = BitStream('0xfff') self.assertRaises(bitstring.InterpretError, s._getintle) self.assertRaises(bitstring.InterpretError, s._getuintle) self.assertRaises(ValueError, s.read, 'uintle') self.assertRaises(ValueError, s.read, 'intle') def testStructTokens1(self): self.assertEqual(pack('b', 23), BitStream('intbe:8=23')) self.assertEqual(pack('>B', 23), BitStream('uintbe:8=23')) self.assertEqual(pack('>h', 23), BitStream('intbe:16=23')) self.assertEqual(pack('>H', 23), BitStream('uintbe:16=23')) self.assertEqual(pack('>l', 23), BitStream('intbe:32=23')) self.assertEqual(pack('>L', 23), BitStream('uintbe:32=23')) self.assertEqual(pack('>q', 23), BitStream('intbe:64=23')) self.assertEqual(pack('>Q', 23), BitStream('uintbe:64=23')) self.assertRaises(bitstring.CreationError, pack, '2L', 40, 40)) def testStructTokens2(self): s = pack('>hhl', 1, 2, 3) a, b, c = s.unpack('>hhl') self.assertEqual((a, b, c), (1, 2, 3)) s = pack('Q \tL', 1001, 43, 21, 9999) self.assertEqual(s.unpack('QL'), [1001, 43, 21, 9999]) def testStructTokensMultiplicativeFactors(self): s = pack('<2h', 1, 2) a, b = s.unpack('<2h') self.assertEqual((a, b), (1, 2)) s = pack('<100q', *range(100)) self.assertEqual(s.len, 100 * 64) self.assertEqual(s[44*64:45*64].uintle, 44) s = pack('@L0B2h', 5, 5, 5) self.assertEqual(s.unpack('@Lhh'), [5, 5, 5]) def testStructTokensErrors(self): for f in ['>>q', '<>q', 'q>', '2q', 'q', '>-2q', '@a', '>int:8', '>q2']: self.assertRaises(bitstring.CreationError, pack, f, 100) def testImmutableBitStreams(self): a = ConstBitStream('0x012345') self.assertEqual(a, '0x012345') b = BitStream('0xf') + a self.assertEqual(b, '0xf012345') try: a.append(b) self.assertTrue(False) except AttributeError: pass try: a.prepend(b) self.assertTrue(False) except AttributeError: pass try: a[0] = '0b1' self.assertTrue(False) except TypeError: pass try: del a[5] self.assertTrue(False) except TypeError: pass try: a.replace('0b1', '0b0') self.assertTrue(False) except AttributeError: pass try: a.insert('0b11', 4) self.assertTrue(False) except AttributeError: pass try: a.reverse() self.assertTrue(False) except AttributeError: pass try: a.reversebytes() self.assertTrue(False) except AttributeError: pass self.assertEqual(a, '0x012345') self.assertTrue(isinstance(a, ConstBitStream)) def testReverseBytes(self): a = BitStream('0x123456') a.byteswap() self.assertEqual(a, '0x563412') b = a + '0b1' b.byteswap() self.assertEqual('0x123456, 0b1', b) a = BitStream('0x54') a.byteswap() self.assertEqual(a, '0x54') a = BitStream() a.byteswap() self.assertFalse(a) def testReverseBytes2(self): a = BitStream() a.byteswap() self.assertFalse(a) a = BitStream('0x00112233') a.byteswap(0, 0, 16) self.assertEqual(a, '0x11002233') a.byteswap(0, 4, 28) self.assertEqual(a, '0x12302103') a.byteswap(start=0, end=18) self.assertEqual(a, '0x30122103') self.assertRaises(ValueError, a.byteswap, 0, 10, 2) self.assertRaises(ValueError, a.byteswap, 0, -4, 4) self.assertRaises(ValueError, a.byteswap, 0, 24, 48) a.byteswap(0, 24) self.assertEqual(a, '0x30122103') a.byteswap(0, 11, 11) self.assertEqual(a, '0x30122103') def testCapitalsInPack(self): a = pack('A', A='0b1') self.assertEqual(a, '0b1') format = 'bits:4=BL_OFFT, uint:12=width, uint:12=height' d = {'BL_OFFT': '0b1011', 'width': 352, 'height': 288} s = bitstring.pack(format, **d) self.assertEqual(s, '0b1011, uint:12=352, uint:12=288') a = pack('0X0, uint:8, hex', 45, '0XABcD') self.assertEqual(a, '0x0, uint:8=45, 0xabCD') def testOtherCapitals(self): a = ConstBitStream('0XABC, 0O0, 0B11') self.assertEqual(a, 'hex=0Xabc, oct=0, bin=0B11') def testEfficientOverwrite(self): a = BitStream(1000000000) a.overwrite([1], 123456) self.assertEqual(a[123456], True) a.overwrite('0xff', 1) self.assertEqual(a[0:32:1], '0x7f800000') b = BitStream('0xffff') b.overwrite('0x0000') self.assertEqual(b, '0x0000') self.assertEqual(b.pos, 16) c = BitStream(length=1000) c.overwrite('0xaaaaaaaaaaaa', 81) self.assertEqual(c[81:81 + 6 * 8], '0xaaaaaaaaaaaa') self.assertEqual(len(list(c.findall('0b1'))), 24) s = BitStream(length=1000) s = s[5:] s.overwrite('0xffffff', 500) s.pos = 500 self.assertEqual(s.read(4 * 8), '0xffffff00') s.overwrite('0xff', 502) self.assertEqual(s[502:518], '0xffff') def testPeekAndReadListErrors(self): a = BitStream('0x123456') self.assertRaises(ValueError, a.read, 'hex:8, hex:8') self.assertRaises(ValueError, a.peek, 'hex:8, hex:8') self.assertRaises(TypeError, a.read, 10, 12) self.assertRaises(TypeError, a.peek, 12, 14) self.assertRaises(TypeError, a.read, 8, 8) self.assertRaises(TypeError, a.peek, 80, 80) def testStartswith(self): a = BitStream() self.assertTrue(a.startswith(BitStream())) self.assertFalse(a.startswith('0b0')) a = BitStream('0x12ff') self.assertTrue(a.startswith('0x1')) self.assertTrue(a.startswith('0b0001001')) self.assertTrue(a.startswith('0x12ff')) self.assertFalse(a.startswith('0x12ff, 0b1')) self.assertFalse(a.startswith('0x2')) def testStartswithStartEnd(self): s = BitStream('0x123456') self.assertTrue(s.startswith('0x234', 4)) self.assertFalse(s.startswith('0x123', end=11)) self.assertTrue(s.startswith('0x123', end=12)) self.assertTrue(s.startswith('0x34', 8, 16)) self.assertFalse(s.startswith('0x34', 7, 16)) self.assertFalse(s.startswith('0x34', 9, 16)) self.assertFalse(s.startswith('0x34', 8, 15)) def testEndswith(self): a = BitStream() self.assertTrue(a.endswith('')) self.assertFalse(a.endswith(BitStream('0b1'))) a = BitStream('0xf2341') self.assertTrue(a.endswith('0x41')) self.assertTrue(a.endswith('0b001')) self.assertTrue(a.endswith('0xf2341')) self.assertFalse(a.endswith('0x1f2341')) self.assertFalse(a.endswith('0o34')) def testEndswithStartEnd(self): s = BitStream('0x123456') self.assertTrue(s.endswith('0x234', end=16)) self.assertFalse(s.endswith('0x456', start=13)) self.assertTrue(s.endswith('0x456', start=12)) self.assertTrue(s.endswith('0x34', 8, 16)) self.assertTrue(s.endswith('0x34', 7, 16)) self.assertFalse(s.endswith('0x34', 9, 16)) self.assertFalse(s.endswith('0x34', 8, 15)) def testUnhashability(self): s = BitStream('0xf') self.assertRaises(TypeError, set, [s]) self.assertRaises(TypeError, hash, [s]) def testConstBitStreamSetCreation(self): sl = [ConstBitStream(uint=i, length=7) for i in range(15)] s = set(sl) self.assertEqual(len(s), 15) s.add(ConstBitStream('0b0000011')) self.assertEqual(len(s), 15) self.assertRaises(TypeError, s.add, BitStream('0b0000011')) def testConstBitStreamFunctions(self): s = ConstBitStream('0xf, 0b1') self.assertEqual(type(s), ConstBitStream) t = copy.copy(s) self.assertEqual(type(t), ConstBitStream) a = s + '0o3' self.assertEqual(type(a), ConstBitStream) b = a[0:4] self.assertEqual(type(b), ConstBitStream) b = a[4:3] self.assertEqual(type(b), ConstBitStream) b = a[5:2:-1] self.assertEqual(type(b), ConstBitStream) b = ~a self.assertEqual(type(b), ConstBitStream) b = a << 2 self.assertEqual(type(b), ConstBitStream) b = a >> 2 self.assertEqual(type(b), ConstBitStream) b = a * 2 self.assertEqual(type(b), ConstBitStream) b = a * 0 self.assertEqual(type(b), ConstBitStream) b = a & ~a self.assertEqual(type(b), ConstBitStream) b = a | ~a self.assertEqual(type(b), ConstBitStream) b = a ^ ~a self.assertEqual(type(b), ConstBitStream) b = a._slice(4, 4) self.assertEqual(type(b), ConstBitStream) b = a.read(4) self.assertEqual(type(b), ConstBitStream) def testConstBitStreamProperties(self): a = ConstBitStream('0x123123') try: a.hex = '0x234' self.assertTrue(False) except AttributeError: pass try: a.oct = '0o234' self.assertTrue(False) except AttributeError: pass try: a.bin = '0b101' self.assertTrue(False) except AttributeError: pass try: a.ue = 3453 self.assertTrue(False) except AttributeError: pass try: a.se = -123 self.assertTrue(False) except AttributeError: pass try: a.int = 432 self.assertTrue(False) except AttributeError: pass try: a.uint = 4412 self.assertTrue(False) except AttributeError: pass try: a.intle = 123 self.assertTrue(False) except AttributeError: pass try: a.uintle = 4412 self.assertTrue(False) except AttributeError: pass try: a.intbe = 123 self.assertTrue(False) except AttributeError: pass try: a.uintbe = 4412 self.assertTrue(False) except AttributeError: pass try: a.intne = 123 self.assertTrue(False) except AttributeError: pass try: a.uintne = 4412 self.assertTrue(False) except AttributeError: pass try: a.bytes = b'hello' self.assertTrue(False) except AttributeError: pass def testConstBitStreamMisc(self): a = ConstBitStream('0xf') b = a a += '0xe' self.assertEqual(b, '0xf') self.assertEqual(a, '0xfe') c = BitStream(a) self.assertEqual(a, c) a = ConstBitStream('0b1') a._append(a) self.assertEqual(a, '0b11') self.assertEqual(type(a), ConstBitStream) a._prepend(a) self.assertEqual(a, '0b1111') self.assertEqual(type(a), ConstBitStream) def testConstBitStreamHashibility(self): a = ConstBitStream('0x1') b = ConstBitStream('0x2') c = ConstBitStream('0x1') c.pos = 3 s = set((a, b, c)) self.assertEqual(len(s), 2) self.assertEqual(hash(a), hash(c)) def testConstBitStreamCopy(self): a = ConstBitStream('0xabc') a.pos = 11 b = copy.copy(a) b.pos = 4 self.assertEqual(id(a._datastore), id(b._datastore)) self.assertEqual(a.pos, 11) self.assertEqual(b.pos, 4) def testPython26stuff(self): s = BitStream('0xff') self.assertTrue(isinstance(s.tobytes(), bytes)) self.assertTrue(isinstance(s.bytes, bytes)) def testReadFromBits(self): a = ConstBitStream('0xaabbccdd') b = a.read(8) self.assertEqual(b, '0xaa') self.assertEqual(a[0:8], '0xaa') self.assertEqual(a[-1], True) a.pos = 0 self.assertEqual(a.read(4).uint, 10) class Set(unittest.TestCase): def testSet(self): a = BitStream(length=16) a.set(True, 0) self.assertEqual(a, '0b10000000 00000000') a.set(1, 15) self.assertEqual(a, '0b10000000 00000001') b = a[4:12] b.set(True, 1) self.assertEqual(b, '0b01000000') b.set(True, -1) self.assertEqual(b, '0b01000001') b.set(1, -8) self.assertEqual(b, '0b11000001') self.assertRaises(IndexError, b.set, True, -9) self.assertRaises(IndexError, b.set, True, 8) def testSetNegativeIndex(self): a = BitStream(10) a.set(1, -1) self.assertEqual(a.bin, '0000000001') a.set(1, [-1, -10]) self.assertEqual(a.bin, '1000000001') self.assertRaises(IndexError, a.set, 1, [-11]) def testFileBasedSetUnset(self): a = BitStream(filename='test.m1v') a.set(True, (0, 1, 2, 3, 4)) self.assertEqual(a[0:32], '0xf80001b3') a = BitStream(filename='test.m1v') a.set(False, (28, 29, 30, 31)) self.assertTrue(a.startswith('0x000001b0')) def testSetList(self): a = BitStream(length=18) a.set(True, range(18)) self.assertEqual(a.int, -1) a.set(False, range(18)) self.assertEqual(a.int, 0) def testUnset(self): a = BitStream(length=16, int=-1) a.set(False, 0) self.assertEqual(~a, '0b10000000 00000000') a.set(0, 15) self.assertEqual(~a, '0b10000000 00000001') b = a[4:12] b.set(False, 1) self.assertEqual(~b, '0b01000000') b.set(False, -1) self.assertEqual(~b, '0b01000001') b.set(False, -8) self.assertEqual(~b, '0b11000001') self.assertRaises(IndexError, b.set, False, -9) self.assertRaises(IndexError, b.set, False, 8) def testSetWholeBitStream(self): a = BitStream(14) a.set(1) self.assertTrue(a.all(1)) a.set(0) self.assertTrue(a.all(0)) class Invert(unittest.TestCase): def testInvertBits(self): a = BitStream('0b111000') a.invert(range(a.len)) self.assertEqual(a, '0b000111') a.invert([0, 1, -1]) self.assertEqual(a, '0b110110') def testInvertWholeBitStream(self): a = BitStream('0b11011') a.invert() self.assertEqual(a, '0b00100') def testInvertSingleBit(self): a = BitStream('0b000001') a.invert(0) self.assertEqual(a.bin, '100001') a.invert(-1) self.assertEqual(a.bin, '100000') def testInvertErrors(self): a = BitStream(10) self.assertRaises(IndexError, a.invert, 10) self.assertRaises(IndexError, a.invert, -11) self.assertRaises(IndexError, a.invert, [1, 2, 10]) ####################### def testIor(self): a = BitStream('0b1101001') a |= '0b1110000' self.assertEqual(a, '0b1111001') b = a[2:] c = a[1:-1] b |= c self.assertEqual(c, '0b11100') self.assertEqual(b, '0b11101') def testIand(self): a = BitStream('0b0101010101000') a &= '0b1111110000000' self.assertEqual(a, '0b0101010000000') s = BitStream(filename='test.m1v', offset=26, length=24) s &= '0xff00ff' self.assertEqual(s, '0xcc0004') def testIxor(self): a = BitStream('0b11001100110011') a ^= '0b11111100000010' self.assertEqual(a, '0b00110000110001') def testLogicalInplaceErrors(self): a = BitStream(4) self.assertRaises(ValueError, a.__ior__, '0b111') self.assertRaises(ValueError, a.__iand__, '0b111') self.assertRaises(ValueError, a.__ixor__, '0b111') class AllAndAny(unittest.TestCase): def testAll(self): a = BitStream('0b0111') self.assertTrue(a.all(True, (1, 3))) self.assertFalse(a.all(True, (0, 1, 2))) self.assertTrue(a.all(True, [-1])) self.assertFalse(a.all(True, [0])) def testFileBasedAll(self): a = BitStream(filename='test.m1v') self.assertTrue(a.all(True, [31])) a = BitStream(filename='test.m1v') self.assertTrue(a.all(False, (0, 1, 2, 3, 4))) def testFileBasedAny(self): a = BitStream(filename='test.m1v') self.assertTrue(a.any(True, (31, 12))) a = BitStream(filename='test.m1v') self.assertTrue(a.any(False, (0, 1, 2, 3, 4))) def testAny(self): a = BitStream('0b10011011') self.assertTrue(a.any(True, (1, 2, 3, 5))) self.assertFalse(a.any(True, (1, 2, 5))) self.assertTrue(a.any(True, (-1,))) self.assertFalse(a.any(True, (1,))) def testAllFalse(self): a = BitStream('0b0010011101') self.assertTrue(a.all(False, (0, 1, 3, 4))) self.assertFalse(a.all(False, (0, 1, 2, 3, 4))) def testAnyFalse(self): a = BitStream('0b01001110110111111111111111111') self.assertTrue(a.any(False, (4, 5, 6, 2))) self.assertFalse(a.any(False, (1, 15, 20))) def testAnyEmptyBitstring(self): a = ConstBitStream() self.assertFalse(a.any(True)) self.assertFalse(a.any(False)) def testAllEmptyBitStream(self): a = ConstBitStream() self.assertTrue(a.all(True)) self.assertTrue(a.all(False)) def testAnyWholeBitstring(self): a = ConstBitStream('0xfff') self.assertTrue(a.any(True)) self.assertFalse(a.any(False)) def testAllWholeBitstring(self): a = ConstBitStream('0xfff') self.assertTrue(a.all(True)) self.assertFalse(a.all(False)) def testErrors(self): a = BitStream('0xf') self.assertRaises(IndexError, a.all, True, [5]) self.assertRaises(IndexError, a.all, True, [-5]) self.assertRaises(IndexError, a.any, True, [5]) self.assertRaises(IndexError, a.any, True, [-5]) ################### def testFloatInitialisation(self): for f in (0.0000001, -1.0, 1.0, 0.2, -3.1415265, 1.331e32): a = BitStream(float=f, length=64) a.pos = 6 self.assertEqual(a.float, f) a = BitStream('float:64=%s' % str(f)) a.pos = 6 self.assertEqual(a.float, f) a = BitStream('floatbe:64=%s' % str(f)) a.pos = 6 self.assertEqual(a.floatbe, f) a = BitStream('floatle:64=%s' % str(f)) a.pos = 6 self.assertEqual(a.floatle, f) a = BitStream('floatne:64=%s' % str(f)) a.pos = 6 self.assertEqual(a.floatne, f) b = BitStream(float=f, length=32) b.pos = 6 self.assertAlmostEqual(b.float / f, 1.0) b = BitStream('float:32=%s' % str(f)) b.pos = 6 self.assertAlmostEqual(b.float / f, 1.0) b = BitStream('floatbe:32=%s' % str(f)) b.pos = 6 self.assertAlmostEqual(b.floatbe / f, 1.0) b = BitStream('floatle:32=%s' % str(f)) b.pos = 6 self.assertAlmostEqual(b.floatle / f, 1.0) b = BitStream('floatne:32=%s' % str(f)) b.pos = 6 self.assertAlmostEqual(b.floatne / f, 1.0) a = BitStream('0x12345678') a.pos = 6 a.float = 23 self.assertEqual(a.float, 23.0) def testFloatInitStrings(self): for s in ('5', '+0.0001', '-1e101', '4.', '.2', '-.65', '43.21E+32'): a = BitStream('float:64=%s' % s) self.assertEqual(a.float, float(s)) def testFloatPacking(self): a = pack('>d', 0.01) self.assertEqual(a.float, 0.01) self.assertEqual(a.floatbe, 0.01) a.byteswap() self.assertEqual(a.floatle, 0.01) b = pack('>f', 1e10) self.assertAlmostEqual(b.float / 1e10, 1.0) c = pack('5d', 10.0, 5.0, 2.5, 1.25, 0.1) self.assertEqual(d.unpack('>5d'), [10.0, 5.0, 2.5, 1.25, 0.1]) def testFloatReading(self): a = BitStream('floatle:64=12, floatbe:64=-0.01, floatne:64=3e33') x, y, z = a.readlist('floatle:64, floatbe:64, floatne:64') self.assertEqual(x, 12.0) self.assertEqual(y, -0.01) self.assertEqual(z, 3e33) a = BitStream('floatle:32=12, floatbe:32=-0.01, floatne:32=3e33') x, y, z = a.readlist('floatle:32, floatbe:32, floatne:32') self.assertAlmostEqual(x / 12.0, 1.0) self.assertAlmostEqual(y / -0.01, 1.0) self.assertAlmostEqual(z / 3e33, 1.0) a = BitStream('0b11, floatle:64=12, 0xfffff') a.pos = 2 self.assertEqual(a.read('floatle:64'), 12.0) b = BitStream(floatle=20, length=32) b.floatle = 10.0 b = [0] + b self.assertEqual(b[1:].floatle, 10.0) def testNonAlignedFloatReading(self): s = BitStream('0b1, float:32 = 10.0') x, y = s.readlist('1, float:32') self.assertEqual(y, 10.0) s[1:] = 'floatle:32=20.0' x, y = s.unpack('1, floatle:32') self.assertEqual(y, 20.0) def testFloatErrors(self): a = BitStream('0x3') self.assertRaises(bitstring.InterpretError, a._getfloat) self.assertRaises(bitstring.CreationError, a._setfloat, -0.2) for l in (8, 10, 12, 16, 30, 128, 200): self.assertRaises(ValueError, BitStream, float=1.0, length=l) self.assertRaises(bitstring.CreationError, BitStream, floatle=0.3, length=0) self.assertRaises(bitstring.CreationError, BitStream, floatle=0.3, length=1) self.assertRaises(bitstring.CreationError, BitStream, float=2) self.assertRaises(bitstring.InterpretError, a.read, 'floatle:2') def testReadErrorChangesPos(self): a = BitStream('0x123123') try: a.read('10, 5') except ValueError: pass self.assertEqual(a.pos, 0) def testRor(self): a = BitStream('0b11001') a.ror(0) self.assertEqual(a, '0b11001') a.ror(1) self.assertEqual(a, '0b11100') a.ror(5) self.assertEqual(a, '0b11100') a.ror(101) self.assertEqual(a, '0b01110') a = BitStream('0b1') a.ror(1000000) self.assertEqual(a, '0b1') def testRorErrors(self): a = BitStream() self.assertRaises(bitstring.Error, a.ror, 0) a += '0b001' self.assertRaises(ValueError, a.ror, -1) def testRol(self): a = BitStream('0b11001') a.rol(0) self.assertEqual(a, '0b11001') a.rol(1) self.assertEqual(a, '0b10011') a.rol(5) self.assertEqual(a, '0b10011') a.rol(101) self.assertEqual(a, '0b00111') a = BitStream('0b1') a.rol(1000000) self.assertEqual(a, '0b1') def testRolFromFile(self): a = BitStream(filename='test.m1v') l = a.len a.rol(1) self.assertTrue(a.startswith('0x000003')) self.assertEqual(a.len, l) self.assertTrue(a.endswith('0x0036e')) def testRorFromFile(self): a = BitStream(filename='test.m1v') l = a.len a.ror(1) self.assertTrue(a.startswith('0x800000')) self.assertEqual(a.len, l) self.assertTrue(a.endswith('0x000db')) def testRolErrors(self): a = BitStream() self.assertRaises(bitstring.Error, a.rol, 0) a += '0b001' self.assertRaises(ValueError, a.rol, -1) def testBytesToken(self): a = BitStream('0x010203') b = a.read('bytes:1') self.assertTrue(isinstance(b, bytes)) self.assertEqual(b, b'\x01') x, y, z = a.unpack('4, bytes:2, uint') self.assertEqual(x, 0) self.assertEqual(y, b'\x10\x20') self.assertEqual(z, 3) s = pack('bytes:4', b'abcd') self.assertEqual(s.bytes, b'abcd') def testBytesTokenMoreThoroughly(self): a = BitStream('0x0123456789abcdef') a.pos += 16 self.assertEqual(a.read('bytes:1'), b'\x45') self.assertEqual(a.read('bytes:3'), b'\x67\x89\xab') x, y, z = a.unpack('bits:28, bytes, bits:12') self.assertEqual(y, b'\x78\x9a\xbc') def testDedicatedReadFunctions(self): a = BitStream('0b11, uint:43=98798798172, 0b11111') x = a._readuint(43, 2) self.assertEqual(x, 98798798172) self.assertEqual(a.pos, 0) x = a._readint(43, 2) self.assertEqual(x, 98798798172) self.assertEqual(a.pos, 0) a = BitStream('0b11, uintbe:48=98798798172, 0b11111') x = a._readuintbe(48, 2) self.assertEqual(x, 98798798172) self.assertEqual(a.pos, 0) x = a._readintbe(48, 2) self.assertEqual(x, 98798798172) self.assertEqual(a.pos, 0) a = BitStream('0b111, uintle:40=123516, 0b111') self.assertEqual(a._readuintle(40, 3), 123516) b = BitStream('0xff, uintle:800=999, 0xffff') self.assertEqual(b._readuintle(800, 8), 999) a = BitStream('0b111, intle:48=999999999, 0b111111111111') self.assertEqual(a._readintle(48, 3), 999999999) b = BitStream('0xff, intle:200=918019283740918263512351235, 0xfffffff') self.assertEqual(b._readintle(200, 8), 918019283740918263512351235) a = BitStream('0b111, floatbe:64=-5.32, 0xffffffff') self.assertEqual(a._readfloat(64, 3), -5.32) a = BitStream('0b111, floatle:64=9.9998, 0b111') self.assertEqual(a._readfloatle(64, 3), 9.9998) def testAutoInitWithInt(self): a = BitStream(0) self.assertFalse(a) a = BitStream(1) self.assertEqual(a, '0b0') a = BitStream(1007) self.assertEqual(a, BitStream(length=1007)) self.assertRaises(bitstring.CreationError, BitStream, -1) a = 6 + ConstBitStream('0b1') + 3 self.assertEqual(a, '0b0000001000') a += 1 self.assertEqual(a, '0b00000010000') self.assertEqual(ConstBitStream(13), 13) def testReadingProblems(self): a = BitStream('0x000001') b = a.read('uint:24') self.assertEqual(b, 1) a.pos = 0 self.assertRaises(bitstring.ReadError, a.read, 'bytes:4') def testAddVersesInPlaceAdd(self): a1 = ConstBitStream('0xabc') b1 = a1 a1 += '0xdef' self.assertEqual(a1, '0xabcdef') self.assertEqual(b1, '0xabc') a2 = BitStream('0xabc') b2 = a2 c2 = a2 + '0x0' a2 += '0xdef' self.assertEqual(a2, '0xabcdef') self.assertEqual(b2, '0xabcdef') self.assertEqual(c2, '0xabc0') def testAndVersesInPlaceAnd(self): a1 = ConstBitStream('0xabc') b1 = a1 a1 &= '0xf0f' self.assertEqual(a1, '0xa0c') self.assertEqual(b1, '0xabc') a2 = BitStream('0xabc') b2 = a2 c2 = a2 & '0x00f' a2 &= '0xf0f' self.assertEqual(a2, '0xa0c') self.assertEqual(b2, '0xa0c') self.assertEqual(c2, '0x00c') def testOrVersesInPlaceOr(self): a1 = ConstBitStream('0xabc') b1 = a1 a1 |= '0xf0f' self.assertEqual(a1, '0xfbf') self.assertEqual(b1, '0xabc') a2 = BitStream('0xabc') b2 = a2 c2 = a2 | '0x00f' a2 |= '0xf0f' self.assertEqual(a2, '0xfbf') self.assertEqual(b2, '0xfbf') self.assertEqual(c2, '0xabf') def testXorVersesInPlaceXor(self): a1 = ConstBitStream('0xabc') b1 = a1 a1 ^= '0xf0f' self.assertEqual(a1, '0x5b3') self.assertEqual(b1, '0xabc') a2 = BitStream('0xabc') b2 = a2 c2 = a2 ^ '0x00f' a2 ^= '0xf0f' self.assertEqual(a2, '0x5b3') self.assertEqual(b2, '0x5b3') self.assertEqual(c2, '0xab3') def testMulVersesInPlaceMul(self): a1 = ConstBitStream('0xabc') b1 = a1 a1 *= 3 self.assertEqual(a1, '0xabcabcabc') self.assertEqual(b1, '0xabc') a2 = BitStream('0xabc') b2 = a2 c2 = a2 * 2 a2 *= 3 self.assertEqual(a2, '0xabcabcabc') self.assertEqual(b2, '0xabcabcabc') self.assertEqual(c2, '0xabcabc') def testLshiftVersesInPlaceLshift(self): a1 = ConstBitStream('0xabc') b1 = a1 a1 <<= 4 self.assertEqual(a1, '0xbc0') self.assertEqual(b1, '0xabc') a2 = BitStream('0xabc') b2 = a2 c2 = a2 << 8 a2 <<= 4 self.assertEqual(a2, '0xbc0') self.assertEqual(b2, '0xbc0') self.assertEqual(c2, '0xc00') def testRshiftVersesInPlaceRshift(self): a1 = ConstBitStream('0xabc') b1 = a1 a1 >>= 4 self.assertEqual(a1, '0x0ab') self.assertEqual(b1, '0xabc') a2 = BitStream('0xabc') b2 = a2 c2 = a2 >> 8 a2 >>= 4 self.assertEqual(a2, '0x0ab') self.assertEqual(b2, '0x0ab') self.assertEqual(c2, '0x00a') def testAutoFromBool(self): a = ConstBitStream() + True + False + True self.assertEqual(a, '0b00') # self.assertEqual(a, '0b101') # b = ConstBitStream(False) # self.assertEqual(b, '0b0') # c = ConstBitStream(True) # self.assertEqual(c, '0b1') # self.assertEqual(b, False) # self.assertEqual(c, True) # self.assertEqual(b & True, False) class Bugs(unittest.TestCase): def testBugInReplace(self): s = BitStream('0x00112233') l = list(s.split('0x22', start=8, bytealigned=True)) self.assertEqual(l, ['0x11', '0x2233']) s = BitStream('0x00112233') s.replace('0x22', '0xffff', start=8, bytealigned=True) self.assertEqual(s, '0x0011ffff33') s = BitStream('0x0123412341234') s.replace('0x23', '0xf', start=9, bytealigned=True) self.assertEqual(s, '0x012341f41f4') def testTruncateStartBug(self): a = BitStream('0b000000111')[2:] a._truncatestart(6) self.assertEqual(a, '0b1') def testNullBits(self): s = ConstBitStream(bin='') t = ConstBitStream(oct='') u = ConstBitStream(hex='') v = ConstBitStream(bytes=b'') self.assertFalse(s) self.assertFalse(t) self.assertFalse(u) self.assertFalse(v) def testMultiplicativeFactorsCreation(self): s = BitStream('1*0b1') self.assertEqual(s, '0b1') s = BitStream('4*0xc') self.assertEqual(s, '0xcccc') s = BitStream('0b1, 0*0b0') self.assertEqual(s, '0b1') s = BitStream('0b1, 3*uint:8=34, 2*0o755') self.assertEqual(s, '0b1, uint:8=34, uint:8=34, uint:8=34, 0o755755') s = BitStream('0*0b1001010') self.assertFalse(s) def testMultiplicativeFactorsReading(self): s = BitStream('0xc') * 5 a, b, c, d, e = s.readlist('5*4') self.assertTrue(a == b == c == d == e == 12) s = ConstBitStream('2*0b101, 4*uint:7=3') a, b, c, d, e = s.readlist('2*bin:3, 3*uint:7') self.assertTrue(a == b == '101') self.assertTrue(c == d == e == 3) def testMultiplicativeFactorsPacking(self): s = pack('3*bin', '1', '001', '101') self.assertEqual(s, '0b1001101') s = pack('hex, 2*se=-56, 3*uint:37', '34', 1, 2, 3) a, b, c, d, e, f = s.unpack('hex:8, 2*se, 3*uint:37') self.assertEqual(a, '34') self.assertEqual(b, -56) self.assertEqual(c, -56) self.assertEqual((d, e, f), (1, 2, 3)) # This isn't allowed yet. See comment in tokenparser. #s = pack('fluffy*uint:8', *range(3), fluffy=3) #a, b, c = s.readlist('2*uint:8, 1*uint:8, 0*uint:8') #self.assertEqual((a, b, c), (0, 1, 2)) def testMultiplicativeFactorsUnpacking(self): s = ConstBitStream('0b10111') a, b, c, d = s.unpack('3*bool, bin') self.assertEqual((a, b, c), (True, False, True)) self.assertEqual(d, '11') def testPackingDefaultIntWithKeyword(self): s = pack('12', 100) self.assertEqual(s.unpack('12')[0], 100) s = pack('oh_no_not_the_eyes=33', oh_no_not_the_eyes=17) self.assertEqual(s.uint, 33) self.assertEqual(s.len, 17) def testInitFromIterable(self): self.assertTrue(isinstance(range(10), collections.Iterable)) s = ConstBitStream(range(12)) self.assertEqual(s, '0x7ff') def testFunctionNegativeIndices(self): # insert s = BitStream('0b0111') s.insert('0b0', -1) self.assertEqual(s, '0b01101') self.assertRaises(ValueError, s.insert, '0b0', -1000) # reverse s.reverse(-2) self.assertEqual(s, '0b01110') t = BitStream('0x778899abcdef') t.reverse(-12, -4) self.assertEqual(t, '0x778899abc7bf') # reversebytes t.byteswap(0, -40, -16) self.assertEqual(t, '0x77ab9988c7bf') # overwrite t.overwrite('0x666', -20) self.assertEqual(t, '0x77ab998666bf') # find found = t.find('0x998', bytealigned=True, start=-31) self.assertFalse(found) found = t.find('0x998', bytealigned=True, start=-32) self.assertTrue(found) self.assertEqual(t.pos, 16) t.pos = 0 found = t.find('0x988', bytealigned=True, end=-21) self.assertFalse(found) found = t.find('0x998', bytealigned=True, end=-20) self.assertTrue(found) self.assertEqual(t.pos, 16) #findall s = BitStream('0x1234151f') l = list(s.findall('0x1', bytealigned=True, start=-15)) self.assertEqual(l, [24]) l = list(s.findall('0x1', bytealigned=True, start=-16)) self.assertEqual(l, [16, 24]) l = list(s.findall('0x1', bytealigned=True, end=-5)) self.assertEqual(l, [0, 16]) l = list(s.findall('0x1', bytealigned=True, end=-4)) self.assertEqual(l, [0, 16, 24]) # rfind found = s.rfind('0x1f', end=-1) self.assertFalse(found) found = s.rfind('0x12', start=-31) self.assertFalse(found) # cut s = BitStream('0x12345') l = list(s.cut(4, start=-12, end=-4)) self.assertEqual(l, ['0x3', '0x4']) # split s = BitStream('0xfe0012fe1200fe') l = list(s.split('0xfe', bytealigned=True, end=-1)) self.assertEqual(l, ['', '0xfe0012', '0xfe1200f, 0b111']) l = list(s.split('0xfe', bytealigned=True, start=-8)) self.assertEqual(l, ['', '0xfe']) # startswith self.assertTrue(s.startswith('0x00f', start=-16)) self.assertTrue(s.startswith('0xfe00', end=-40)) self.assertFalse(s.startswith('0xfe00', end=-41)) # endswith self.assertTrue(s.endswith('0x00fe', start=-16)) self.assertFalse(s.endswith('0x00fe', start=-15)) self.assertFalse(s.endswith('0x00fe', end=-1)) self.assertTrue(s.endswith('0x00f', end=-4)) # replace s.replace('0xfe', '', end=-1) self.assertEqual(s, '0x00121200fe') s.replace('0x00', '', start=-24) self.assertEqual(s, '0x001212fe') def testRotateStartAndEnd(self): a = BitStream('0b110100001') a.rol(1, 3, 6) self.assertEqual(a, '0b110001001') a.ror(1, start=-4) self.assertEqual(a, '0b110001100') a.rol(202, end=-5) self.assertEqual(a, '0b001101100') a.ror(3, end=4) self.assertEqual(a, '0b011001100') self.assertRaises(ValueError, a.rol, 5, start=-4, end=-6) def testByteSwapInt(self): s = pack('5*uintle:16', *range(10, 15)) self.assertEqual(list(range(10, 15)), s.unpack('5*uintle:16')) swaps = s.byteswap(2) self.assertEqual(list(range(10, 15)), s.unpack('5*uintbe:16')) self.assertEqual(swaps, 5) s = BitStream('0xf234567f') swaps = s.byteswap(1, start=4) self.assertEqual(swaps, 3) self.assertEqual(s, '0xf234567f') s.byteswap(2, start=4) self.assertEqual(s, '0xf452367f') s.byteswap(2, start=4, end=-4) self.assertEqual(s, '0xf234567f') s.byteswap(3) self.assertEqual(s, '0x5634f27f') s.byteswap(2, repeat=False) self.assertEqual(s, '0x3456f27f') swaps = s.byteswap(5) self.assertEqual(swaps, 0) swaps = s.byteswap(4, repeat=False) self.assertEqual(swaps, 1) self.assertEqual(s, '0x7ff25634') def testByteSwapPackCode(self): s = BitStream('0x0011223344556677') swaps = s.byteswap('b') self.assertEqual(s, '0x0011223344556677') self.assertEqual(swaps, 8) swaps = s.byteswap('>3h', repeat=False) self.assertEqual(s, '0x1100332255446677') self.assertEqual(swaps, 1) def testByteSwapIterable(self): s = BitStream('0x0011223344556677') swaps = s.byteswap(range(1, 4), repeat=False) self.assertEqual(swaps, 1) self.assertEqual(s, '0x0022115544336677') swaps = s.byteswap([2], start=8) self.assertEqual(s, '0x0011224455663377') self.assertEqual(3, swaps) swaps = s.byteswap([2, 3], start=4) self.assertEqual(swaps, 1) self.assertEqual(s, '0x0120156452463377') def testByteSwapErrors(self): s = BitStream('0x0011223344556677') self.assertRaises(ValueError, s.byteswap, 'z') self.assertRaises(ValueError, s.byteswap, -1) self.assertRaises(ValueError, s.byteswap, [-1]) self.assertRaises(ValueError, s.byteswap, [1, 'e']) self.assertRaises(ValueError, s.byteswap, '!h') self.assertRaises(ValueError, s.byteswap, 2, start=-1000) self.assertRaises(TypeError, s.byteswap, 5.4) def testByteSwapFromFile(self): s = BitStream(filename='smalltestfile') swaps = s.byteswap('2bh') self.assertEqual(s, '0x0123674589abefcd') self.assertEqual(swaps, 2) def testBracketExpander(self): be = bitstring.expand_brackets self.assertEqual(be('hello'), 'hello') self.assertEqual(be('(hello)'), 'hello') self.assertEqual(be('1*(hello)'), 'hello') self.assertEqual(be('2*(hello)'), 'hello,hello') self.assertEqual(be('1*(a, b)'), 'a,b') self.assertEqual(be('2*(a, b)'), 'a,b,a,b') self.assertEqual(be('2*(a), 3*(b)'), 'a,a,b,b,b') self.assertEqual(be('2*(a, b, 3*(c, d), e)'), 'a,b,c,d,c,d,c,d,e,a,b,c,d,c,d,c,d,e') def testBracketTokens(self): s = BitStream('3*(0x0, 0b1)') self.assertEqual(s, '0x0, 0b1, 0x0, 0b1, 0x0, 0b1') s = pack('2*(uint:12, 3*(7, 6))', *range(3, 17)) a = s.unpack('12, 7, 6, 7, 6, 7, 6, 12, 7, 6, 7, 6, 7, 6') self.assertEqual(a, list(range(3, 17))) b = s.unpack('2*(12,3*(7,6))') self.assertEqual(a, b) def testPackCodeDicts(self): self.assertEqual(sorted(bitstring.REPLACEMENTS_BE.keys()), sorted(bitstring.REPLACEMENTS_LE.keys())) self.assertEqual(sorted(bitstring.REPLACEMENTS_BE.keys()), sorted(bitstring.PACK_CODE_SIZE.keys())) for key in bitstring.PACK_CODE_SIZE: be = pack(bitstring.REPLACEMENTS_BE[key], 0) le = pack(bitstring.REPLACEMENTS_LE[key], 0) self.assertEqual(be.len, bitstring.PACK_CODE_SIZE[key] * 8) self.assertEqual(le.len, be.len) # These tests don't compile for Python 3, so they're commented out to save me stress. #def testUnicode(self): #a = ConstBitStream(u'uint:12=34') #self.assertEqual(a.uint, 34) #a += u'0xfe' #self.assertEqual(a[12:], '0xfe') #a = BitStream('0x1122') #c = a.byteswap(u'h') #self.assertEqual(c, 1) #self.assertEqual(a, u'0x2211') #def testLongInt(self): #a = BitStream(4L) #self.assertEqual(a, '0b0000') #a[1:3] = -1L #self.assertEqual(a, '0b0110') #a[0] = 1L #self.assertEqual(a, '0b1110') #a *= 4L #self.assertEqual(a, '0xeeee') #c = a.byteswap(2L) #self.assertEqual(c, 1) #a = BitStream('0x11223344') #a.byteswap([1, 2L]) #self.assertEqual(a, '0x11332244') #b = a*2L #self.assertEqual(b, '0x1133224411332244') #s = pack('uint:12', 46L) #self.assertEqual(s.uint, 46) class UnpackWithDict(unittest.TestCase): def testLengthKeywords(self): a = ConstBitStream('2*13=100, 0b111') x, y, z = a.unpack('n, uint:m, bin:q', n=13, m=13, q=3) self.assertEqual(x, 100) self.assertEqual(y, 100) self.assertEqual(z, '111') def testLengthKeywordsWithStretch(self): a = ConstBitStream('0xff, 0b000, 0xf') x, y, z = a.unpack('hex:a, bin, hex:b', a=8, b=4) self.assertEqual(y, '000') def testUnusedKeyword(self): a = ConstBitStream('0b110') x, = a.unpack('bin:3', notused=33) self.assertEqual(x, '110') def testLengthKeywordErrors(self): a = pack('uint:p=33', p=12) self.assertRaises(ValueError, a.unpack, 'uint:p') self.assertRaises(ValueError, a.unpack, 'uint:p', p='a_string') class ReadWithDict(unittest.TestCase): def testLengthKeywords(self): s = BitStream('0x0102') x, y = s.readlist('a, hex:b', a=8, b=4) self.assertEqual((x, y), (1, '0')) self.assertEqual(s.pos, 12) def testBytesKeywordProblem(self): s = BitStream('0x01') x, = s.unpack('bytes:a', a=1) self.assertEqual(x, b'\x01') s = BitStream('0x000ff00a') x, y, z = s.unpack('12, bytes:x, bits', x=2) self.assertEqual((x, y, z), (0, b'\xff\x00', '0xa')) class PeekWithDict(unittest.TestCase): def testLengthKeywords(self): s = BitStream('0x0102') x, y = s.peeklist('a, hex:b', a=8, b=4) self.assertEqual((x, y), (1, '0')) self.assertEqual(s.pos, 0) ##class Miscellany(unittest.TestCase): ## ## def testNumpyInt(self): ## try: ## import numpy ## a = ConstBitStream(uint=numpy.uint8(5), length=3) ## self.assertEqual(a.uint, 5) ## except ImportError: ## # Not to worry ## pass class BoolToken(unittest.TestCase): def testInterpretation(self): a = ConstBitStream('0b1') self.assertEqual(a.bool, True) self.assertEqual(a.read('bool'), True) self.assertEqual(a.unpack('bool')[0], True) b = ConstBitStream('0b0') self.assertEqual(b.bool, False) self.assertEqual(b.peek('bool'), False) self.assertEqual(b.unpack('bool')[0], False) def testPack(self): a = pack('bool=True') b = pack('bool=False') self.assertEqual(a.bool, True) self.assertEqual(b.bool, False) c = pack('4*bool', False, True, 'False', 'True') self.assertEqual(c, '0b0101') def testAssignment(self): a = BitStream() a.bool = True self.assertEqual(a.bool, True) a.hex = 'ee' a.bool = False self.assertEqual(a.bool, False) a.bool = 'False' self.assertEqual(a.bool, False) a.bool = 'True' self.assertEqual(a.bool, True) a.bool = 0 self.assertEqual(a.bool, False) a.bool = 1 self.assertEqual(a.bool, True) def testErrors(self): self.assertRaises(bitstring.CreationError, pack, 'bool', 'hello') self.assertRaises(bitstring.CreationError, pack, 'bool=true') self.assertRaises(bitstring.CreationError, pack, 'True') self.assertRaises(bitstring.CreationError, pack, 'bool', 2) a = BitStream('0b11') self.assertRaises(bitstring.InterpretError, a._getbool) b = BitStream() self.assertRaises(bitstring.InterpretError, a._getbool) self.assertRaises(bitstring.CreationError, a._setbool, 'false') def testLengthWithBoolRead(self): a = ConstBitStream('0xf') self.assertRaises(ValueError, a.read, 'bool:0') self.assertRaises(ValueError, a.read, 'bool:1') self.assertRaises(ValueError, a.read, 'bool:2') class ReadWithIntegers(unittest.TestCase): def testReadInt(self): a = ConstBitStream('0xffeedd') b = a.read(8) self.assertEqual(b.hex, 'ff') self.assertEqual(a.pos, 8) b = a.peek(8) self.assertEqual(b.hex, 'ee') self.assertEqual(a.pos, 8) b = a.peek(1) self.assertEqual(b, '0b1') b = a.read(1) self.assertEqual(b, '0b1') def testReadIntList(self): a = ConstBitStream('0xab, 0b110') b, c = a.readlist([8, 3]) self.assertEqual(b.hex, 'ab') self.assertEqual(c.bin, '110') class FileReadingStrategy(unittest.TestCase): def testBitStreamIsAlwaysRead(self): a = BitStream(filename='smalltestfile') self.assertTrue(isinstance(a._datastore, bitstring.ByteStore)) f = open('smalltestfile', 'rb') b = BitStream(f) self.assertTrue(isinstance(b._datastore, bitstring.ByteStore)) def testBitsIsNeverRead(self): a = ConstBitStream(filename='smalltestfile') self.assertTrue(isinstance(a._datastore._rawarray, bitstring.MmapByteArray)) f = open('smalltestfile', 'rb') b = ConstBitStream(f) self.assertTrue(isinstance(b._datastore._rawarray, bitstring.MmapByteArray)) class Count(unittest.TestCase): def testCount(self): a = ConstBitStream('0xf0f') self.assertEqual(a.count(True), 8) self.assertEqual(a.count(False), 4) b = BitStream() self.assertEqual(b.count(True), 0) self.assertEqual(b.count(False), 0) def testCountWithOffsetData(self): a = ConstBitStream('0xff0120ff') b = a[1:-1] self.assertEqual(b.count(1), 16) self.assertEqual(b.count(0), 14) class ZeroBitReads(unittest.TestCase): def testInteger(self): a = ConstBitStream('0x123456') self.assertRaises(bitstring.InterpretError, a.read, 'uint:0') self.assertRaises(bitstring.InterpretError, a.read, 'float:0') #class EfficientBitsCopies(unittest.TestCase): # # def testBitsCopy(self): # a = ConstBitStream('0xff') # b = ConstBitStream(a) # c = a[:] # d = copy.copy(a) # self.assertTrue(a._datastore is b._datastore) # self.assertTrue(a._datastore is c._datastore) # self.assertTrue(a._datastore is d._datastore) class InitialiseFromBytes(unittest.TestCase): def testBytesBehaviour(self): a = ConstBitStream(b'uint:5=2') b = ConstBitStream(b'') c = ConstBitStream(bytes=b'uint:5=2') if b'' == '': # Python 2 self.assertEqual(a, 'uint:5=2') self.assertFalse(b) self.assertEqual(c.bytes, b'uint:5=2') else: self.assertEqual(a.bytes, b'uint:5=2') self.assertFalse(b) self.assertEqual(c, b'uint:5=2') def testBytearrayBehaviour(self): a = ConstBitStream(bytearray(b'uint:5=2')) b = ConstBitStream(bytearray(4)) c = ConstBitStream(bytes=bytearray(b'uint:5=2')) self.assertEqual(a.bytes, b'uint:5=2') self.assertEqual(b, '0x00000000') self.assertEqual(c.bytes, b'uint:5=2') class CoverageCompletionTests(unittest.TestCase): def testUeReadError(self): s = ConstBitStream('0b000000001') self.assertRaises(bitstring.ReadError, s.read, 'ue') def testOverwriteWithSelf(self): s = BitStream('0b1101') s.overwrite(s) self.assertEqual(s, '0b1101') class Subclassing(unittest.TestCase): def testIsInstance(self): class SubBits(BitStream): pass a = SubBits() self.assertTrue(isinstance(a, SubBits)) def testClassType(self): class SubBits(BitStream): pass self.assertEqual(SubBits().__class__, SubBits) class BytesProblems(unittest.TestCase): def testOffsetButNoLength(self): b = BitStream(bytes=b'\x00\xaa', offset=8) self.assertEqual(b.hex, 'aa') b = BitStream(bytes=b'\x00\xaa', offset=4) self.assertEqual(b.hex, '0aa') def testInvert(self): b = BitStream(bytes=b'\x00\xaa', offset=8, length=8) self.assertEqual(b.hex, 'aa') b.invert() self.assertEqual(b.hex, '55') def testPrepend(self): b = BitStream(bytes=b'\xaa\xbb', offset=8, length=4) self.assertEqual(b.hex, 'b') b.prepend('0xe') self.assertEqual(b.hex, 'eb') b = BitStream(bytes=b'\x00\xaa', offset=8, length=8) b.prepend('0xee') self.assertEqual(b.hex, 'eeaa') def testByteSwap(self): b = BitStream(bytes=b'\x01\x02\x03\x04', offset=8) b.byteswap() self.assertEqual(b, '0x040302') def testBinProperty(self): b = BitStream(bytes=b'\x00\xaa', offset=8, length=4) self.assertEqual(b.bin, '1010')bitstring-bitstring-3.1.5/test/test_bitstring.py000066400000000000000000000060051271665413600221410ustar00rootroot00000000000000#!/usr/bin/env python """ Module-level unit tests. """ import unittest import sys sys.path.insert(0, '..') import bitstring import copy class ModuleData(unittest.TestCase): def testVersion(self): self.assertEqual(bitstring.__version__, '3.1.5') def testAll(self): exported = ['ConstBitArray', 'ConstBitStream', 'BitStream', 'BitArray', 'Bits', 'BitString', 'pack', 'Error', 'ReadError', 'InterpretError', 'ByteAlignError', 'CreationError', 'bytealigned'] self.assertEqual(set(bitstring.__all__), set(exported)) def testReverseDict(self): d = bitstring.BYTE_REVERSAL_DICT for i in range(256): a = bitstring.Bits(uint=i, length=8) b = d[i] self.assertEqual(a.bin[::-1], bitstring.Bits(bytes=b).bin) def testAliases(self): self.assertTrue(bitstring.Bits is bitstring.ConstBitArray) self.assertTrue(bitstring.BitStream is bitstring.BitString) class MemoryUsage(unittest.TestCase): def testBaselineMemory(self): try: import pympler.asizeof.asizeof as size except ImportError: return # These values might be platform dependent, so don't fret too much. self.assertEqual(size(bitstring.ConstBitStream([0])), 64) self.assertEqual(size(bitstring.Bits([0])), 64) self.assertEqual(size(bitstring.BitStream([0])), 64) self.assertEqual(size(bitstring.BitArray([0])), 64) from bitstring.bitstore import ByteStore self.assertEqual(size(ByteStore(bytearray())), 100) class Copy(unittest.TestCase): def testConstBitArrayCopy(self): import copy cba = bitstring.Bits(100) cba_copy = copy.copy(cba) self.assertTrue(cba is cba_copy) def testBitArrayCopy(self): ba = bitstring.BitArray(100) ba_copy = copy.copy(ba) self.assertFalse(ba is ba_copy) self.assertFalse(ba._datastore is ba_copy._datastore) self.assertTrue(ba == ba_copy) def testConstBitStreamCopy(self): cbs = bitstring.ConstBitStream(100) cbs.pos = 50 cbs_copy = copy.copy(cbs) self.assertEqual(cbs_copy.pos, 0) self.assertTrue(cbs._datastore is cbs_copy._datastore) self.assertTrue(cbs == cbs_copy) def testBitStreamCopy(self): bs = bitstring.BitStream(100) bs.pos = 50 bs_copy = copy.copy(bs) self.assertEqual(bs_copy.pos, 0) self.assertFalse(bs._datastore is bs_copy._datastore) self.assertTrue(bs == bs_copy) class Interning(unittest.TestCase): def testBits(self): a = bitstring.Bits('0xf') b = bitstring.Bits('0xf') self.assertTrue(a is b) c = bitstring.Bits('0b1111') self.assertFalse(a is c) def testCBS(self): a = bitstring.ConstBitStream('0b11000') b = bitstring.ConstBitStream('0b11000') self.assertFalse(a is b) # self.assertTrue(a._datastore is b._datastore) bitstring-bitstring-3.1.5/test/test_constbitstream.py000066400000000000000000000073141271665413600232010ustar00rootroot00000000000000#!/usr/bin/env python import unittest import sys sys.path.insert(0, '..') import bitstring from bitstring import ConstBitStream as CBS class All(unittest.TestCase): def testFromFile(self): s = CBS(filename='test.m1v') self.assertEqual(s[0:32].hex, '000001b3') self.assertEqual(s.read(8 * 4).hex, '000001b3') width = s.read(12).uint height = s.read(12).uint self.assertEqual((width, height), (352, 288)) class InterleavedExpGolomb(unittest.TestCase): def testReading(self): s = CBS(uie=333) a = s.read('uie') self.assertEqual(a, 333) s = CBS('uie=12, sie=-9, sie=9, uie=1000000') u = s.unpack('uie, 2*sie, uie') self.assertEqual(u, [12, -9, 9, 1000000]) def testReadingErrors(self): s = CBS(10) self.assertRaises(bitstring.ReadError, s.read, 'uie') self.assertEqual(s.pos, 0) self.assertRaises(bitstring.ReadError, s.read, 'sie') self.assertEqual(s.pos, 0) class ReadTo(unittest.TestCase): def testByteAligned(self): a = CBS('0xaabb00aa00bb') b = a.readto('0x00', bytealigned=True) self.assertEqual(b, '0xaabb00') self.assertEqual(a.bytepos, 3) b = a.readto('0xaa', bytealigned=True) self.assertEqual(b, '0xaa') self.assertRaises(bitstring.ReadError, a.readto, '0xcc', bytealigned=True) def testNotAligned(self): a = CBS('0b00111001001010011011') a.pos = 1 self.assertEqual(a.readto('0b00'), '0b011100') self.assertEqual(a.readto('0b110'), '0b10010100110') self.assertRaises(ValueError, a.readto, '') def testDisallowIntegers(self): a = CBS('0x0f') self.assertRaises(ValueError, a.readto, 4) def testReadingLines(self): s = b"This is a test\nof reading lines\nof text\n" b = CBS(bytes=s) n = bitstring.Bits(bytes=b'\n') self.assertEqual(b.readto(n).bytes, b'This is a test\n') self.assertEqual(b.readto(n).bytes, b'of reading lines\n') self.assertEqual(b.readto(n).bytes, b'of text\n') class Subclassing(unittest.TestCase): def testIsInstance(self): class SubBits(CBS): pass a = SubBits() self.assertTrue(isinstance(a, SubBits)) def testClassType(self): class SubBits(CBS): pass self.assertEqual(SubBits().__class__, SubBits) class PadToken(unittest.TestCase): def testRead(self): s = CBS('0b100011110001') a = s.read('pad:1') self.assertEqual(a, None) self.assertEqual(s.pos, 1) a = s.read(3) self.assertEqual(a, CBS('0b000')) a = s.read('pad:0') self.assertEqual(a, None) self.assertEqual(s.pos, 4) def testReadList(self): s = CBS('0b10001111001') t = s.readlist('pad:1, uint:3, pad:4, uint:3') self.assertEqual(t, [0, 1]) s.pos = 0 t = s.readlist('pad:1, pad:5') self.assertEqual(t, []) self.assertEqual(s.pos, 6) s.pos = 0 t = s.readlist('pad:1, bin, pad:4, uint:3') self.assertEqual(t, ['000', 1]) s.pos = 0 t = s.readlist('pad, bin:3, pad:4, uint:3') self.assertEqual(t, ['000', 1]) class ReadingBytes(unittest.TestCase): def testUnpackingBytes(self): s = CBS(80) t = s.unpack('bytes:1') self.assertEqual(t[0], b'\x00') a, b, c = s.unpack('bytes:1, bytes, bytes:2') self.assertEqual(a, b'\x00') self.assertEqual(b, b'\x00'*7) self.assertEqual(c, b'\x00'*2) def testUnpackingBytesWithKeywords(self): s = CBS('0x55'*10) t = s.unpack('pad:a, bytes:b, bytes, pad:a', a=4, b=6) self.assertEqual(t, [b'\x55'*6, b'\x55'*3])