spfs-0.09.0012-1.vz8 >    `A  }Dͭ*iVkr4k+H\(<\L=35nΘZSg_Հհ(86? 6RG^hkMw`:r DӜ@NO4yl:W=۠833f28e35f9d87b9114e440f7aa075b5b7c41df3fb0eaa70a42268de0b06d0528497c129ebf5e0328c97217f7a1121b5d05aaaf9쨈`A  }Dͭ* &଩*@vRo쁚{ [&s>t*'Dj L0~=Sj0ѝO!Hۉb$RS]Mc/=gqE`9.œ!DISd1W٤6,>p44?$d  . (@W    * ,4H\d%(8 S9XS:SF~dG~H~I~R~\~]~^~d~e~f~~~~ Cspfs0.09.00121.vz8Stub-Proxy File SystemStub-Proxy File System allows to replace opened files from underneath of running process. Required to CRIU to be able to migrate NFS mount points.`Abuilder8.eng.sw.ruȬVirtuozzoVirtuozzoGPLv3Virtuozzo (http://www.virtuozzo.com/support/)System Environment/Basespfs-0.09.0012.tar.bz2https://git.sw.ru/projects/VZS/repos/spfs/linuxx86_64Dၴ`Aj`Alb1e1fa47ba3bd039183102591eed201a0aa2e8f5f12ceccf884a04b4cfe21d8c6f2577da453905e847c291555622a35ec980a0dd2391060949e05cf5bcfd8552 mockbuildmockbuildmockbuildmockbuild  autoconfautomakefuse-devellibcap-devellibnl3-develrpmlib(CompressedFileNames)rpmlib(FileDigests)3.0.4-14.6.0-1x86_644.14.3`s^`Zg#Z 0.09.0012VZ Auto Builder 0.09.0011Kirill Tkhai 0.09.0010Stanislav Kinsburskiy 0.09.009Stanislav Kinsburskiy 0.09.008Stanislav Kinsburskiy 0.09.007Stanislav Kinsburskiy 0.09.006Stanislav Kinsburskiy 0.09.005Stanislav Kinsburskiy 0.09.004Stanislav Kinsburskiy 0.09.003Stanislav Kinsburskiy 0.09.002Stanislav Kinsburskiy 0.09.001Stanislav Kinsburskiy 0.09.000Andrey Bondrov 0.08.024-2Stanislav Kinsburskiy 0.08.024Stanislav Kinsburskiy 0.08.023Stanislav Kinsburskiy 0.08.022Stanislav Kinsburskiy 0.08.021Stanislav Kinsburskiy 0.08.020Konstantin Volkov 0.08.019-2Stanislav Kinsburskiy 0.08.019Stanislav Kinsburskiy 0.08.018Stanislav Kinsburskiy 0.08.017Stanislav Kinsburskiy 0.08.016Stanislav Kinsburskiy 0.08.015Stanislav Kinsburskiy 0.08.014Stanislav Kinsburskiy 0.08.013Stanislav Kinsburskiy 0.08.012Stanislav Kinsburskiy 0.08.011Stanislav Kinsburskiy 0.08.010Stanislav Kinsburskiy 0.08.09Stanislav Kinsburskiy 0.08.08Stanislav Kinsburskiy 0.08.07Stanislav Kinsburskiy 0.08.06Stanislav Kinsburskiy 0.08.05Stanislav Kinsburskiy 0.08.04Stanislav Kinsburskiy 0.08.03Stanislav Kinsburskiy 0.08.02Stanislav Kinsburskiy 0.08.01Stanislav Kinsburskiy 0.08.00Stanislav Kinsburskiy 0.07.06Stanislav Kinsburskiy 0.07.05Stanislav Kinsburskiy 0.07.04Stanislav Kinsburskiy 0.07.03Stanislav Kinsburskiy 0.07.02Stanislav Kinsburskiy 0.07.01Stanislav Kinsburskiy 0.07.00Stanislav Kinsburskiy 0.06.19Stanislav Kinsburskiy 0.06.18Stanislav Kinsburskiy 0.06.17Stanislav Kinsburskiy 0.06.16Stanislav Kinsburskiy 0.06.15Stanislav Kinsburskiy 0.06.14Stanislav Kinsburskiy 0.06.13Stanislav Kinsburskiy 0.06.12Stanislav Kinsburskiy 0.06.11Stanislav Kinsburskiy 0.06.10Stanislav Kinsburskiy 0.06.9Stanislav Kinsburskiy 0.06.8Stanislav Kinsburskiy 0.06.7Stanislav Kinsburskiy 0.06.6Stanislav Kinsburskiy 0.06.5Stanislav Kinsburskiy 0.06.4Stanislav Kinsburskiy 0.06.3Stanislav Kinsburskiy 0.06.2Stanislav Kinsburskiy 0.06.1Stanislav Kinsburskiy 0.06.1Stanislav Kinsburskiy 0.06.0Stanislav Kinsburskiy 0.05.3Stanislav Kinsburskiy 0.05.2Stanislav Kinsburskiy 0.05.1Stanislav Kinsburskiy 0.05.0Stanislav Kinsburskiy 0.04.0Stanislav Kinsburskiy 0.03.2Stanislav Kinsburskiy 0.03.1Konstantin Volkov 0.03.0Stanislav Kinsburskiy 0.02.2Stanislav Kinsburskiy 0.02.1Stanislav Kinsburskiy 0.02.0Stanislav Kinsburskiy 0.01.5Stanislav Kinsburskiy 0.01.4Andrey Bondrov 0.01-2Andrey Bondrov 0.01-1- vz7/vz8: add targets.list to build both spfs versions from same code branch (Pavel Tikhomirov ) (#PSBM-102629) - manager: don't reuse readlink path as buffer (Pavel Tikhomirov ) (#PSBM-102629) - list.h: replace libio.h with stddef.h (Pavel Tikhomirov ) (#PSBM-102629)- PSBM-101521 (Alexander Mikhalitsyn ) (#PSBM-101521)- spfs: Main process wakes and kills its children on exit (#PSBM-80055) - spfs: Handle non-zero exit status in cleanup_spfs_mount()- manager: use join_namespaces() to enter container (#PSBM-79733) - manager: join_namespaces() helper introduced- manager: use mount ID when available for resources matching - manager: pass replace info structure to is_mnt_file() - manager: store mount ID on "replace info" structure - manager: collect SPFS mount ID - manager: extract mnt_id when parsing fdinfo - manager: discover fd link early - manager: improve debugging and add more error messages- manager: move main process to freezer root cgroup- manager: disable readahead for SPFS "restore" mode (#PSBM-73023) - manager: improve debug prints in content copying - manager: improve work mode change prints - manager: add error prints to work mode creation - manager: do not try to detach from unattached process - manager: improve error print on status open fail - fixed issues with inclusion spfs_config.h (Grigoriy Melnikov )- spfs: check system call was interrupted while waiting mode change in Stub mode (#PSBM-72314) - futex: don't print error in case of timeout - manager: mount spfs in interruptible mode- manager: treat refused connection as temporary error on mount attempt- manager: do not examine threads - manager: simplify iterate_dir_name() helper- manager: treat timeout as temporary error on mount attempt - spfs: fix shutdown procedure - spfs: switch to mount namespace context only when provided - manager: remove obsolete "mountpoint" mention from help- manager: remove temporary original mountpoint dentry when replaced - manager: unmount SPFS manually only if daemon was killed by a signal - spfs: remove access check for proxy directory in gateway_full_path- manager: use ns_mountpoint when replacing resources (#PSBM-66944) - manager: add support for "ns_pid" option in SPFS change mode request - manager: pass mount namespace pid to spfs as a parameter - manager: add "ns_mountpoint" option to mount request - spfs: open proxy directory in child is namespace pid is provided - spfs: improve debug in case of work mode change failure - spfs: mount namespace pid as "Mode change" command parameter introduced - spfs: minor error messages cleanup - spfs: wrap paths in debug prints - spfs: fix proxy attributes initialization in create_work_mode - spfs: switch to mount namespace in proxy mode when opening proxy directory - spfs: pass mount namespace pid for proxy mode to work mode creation - spfs: "--proxy-mntns-pid" option added - spfs: switch to "mnt_ns_pid" mount namespace on actual mount if provided - spfs: mount_fuse() helper introduced - spfs: store current mount namespace in context - spfs: "--mntns-pid" option added - spfs: fix stale_work_mode() helper - spfs: simplify gateway_stale_fh by comparing work modes addresses - spfs: use /proc path to proxy directory fd as base path. - spfs: take proxy directory reference - spfs: fix debug print - spfs: optimize work mode update on restartable operations - spfs: get work mode instead of copying - namespace: set_ns() helper added - namespaces: pass binary type to open_ns() - configure: remove "tags" redefinition - spfs: print error if root directory is unaccessible in proxy mode- Enable hardened build, see #PSBM-58107 - Make build verbose- manager: create new path if "link-remap"'ed exists (#PSBM-64299) - manager: don't close file object fd if negative- nfs tests: add "sk-unix01" to supported list - unix sockets: restore socket rqueue even if already opened - unix sockets: restore DGRAM socket connections properly (#PSBM-65010) - manager: unix_dgram_peer() helper added - manager: move DGRAM sockets handling to separated helper - manager: open unix sockets in corresponding handlers - manager: return socket fd, if already set - unix sockets: alloc_unix_sk() helper introduced - unix-sockets: do not try to delete already unlinked socket- manager: use current directory as logging directory, if not provided - manager: add "log-dir" option- manager: move to target VE on init - manager: revert commit ce578e797811554ae693d9b76fde67326ccbc16c- manager: allow SPFS mount on top on non-empty directory - spfs: add carriage return to error message - manager: move SPFS process to target VE (#PSBM-58606)- Rebuild in 7.3 environment- spfs: replace error with warning in case of system call interruption- ptrace: fix ax register value check for "in system call" status (#PSBM-53384)- swapfd: sync all the private file mappings (#PSBM-53303) - Makefile: remove explicit path to libnl3 headers from flags - autoconf.sh: new helper to configure and build with libnl3 - configure: add check for libnl3/netlink/msg.h header - configure: add check for sys/capability.h header- swapfd: check, that mapping is accessible ater replace - swapfd: mem_read helper introduced - swapfd: open_pid_mem helper introduced- manager: check that private file mappings content is equal after copy - manager: copy content of writable mappings only (#PSBM-53249)- manager: copy swapped pages for private mappings (#PSBM-53161)- manager: expose process state if seize has failed (#PSBM-53092) - manager: expose process internals in case detach has failed - swapfd: create a helper for ptrace detach- manager: remove per-process share_resources flag - manager: do not detach from a task even if it doesn't use resources- manager: do not duplicate OVZ id per SPFS instance - manager: aling debug print for better output log - manager: restore cwd on return from SPFS context - manager: spfs context leaving helper introduced - manager: do not duplicate manager namespaces descriptors numbers - manager: mgr_work_dir helper introduced- manager: skip resources swap handlers call if nothing to do - manager: do not detach from a task, if it doesn't need resources swap (#PSBM-52883) - manager: use add/del_parasite helper - ptrace: simplify "in syscall" check - ptrace: fix error prints in fd sending helpers - swapfd: Add errno print to recvmsg() - manager: fix error print in transfer_local_fd- ptrace: adjust ip in case of process was traped in syscall (#PSBM-52809) - manager: add debug to fd transfer helper - swapfd: Add errno print to sendmsg() - vz: increase spfs exit timeout to 20 seconds- manager: detach from process on release (#PSBM-52700)- magaer: revert multiple integration of parasite- manager: detach from process after examine and attach again for swap (#PSBM-50800) - swapfd: return error from destroy_parasite_ctl if failed - processes: add/del_parasite helpers introduced - swap: do not postpone exe link swap - process: remove empty process from the list early - processes: inject parasite just before process examening - manager: reduce spfs log to NOTICE level- processes: fix size check in fixup_source_path- unix sockets: fix possible write beyond memory border in unix_bind_socket - shm: simplify shmem data pointer assignment - namespaces: initialize return code in set_namespaces - xattr: fix dereference of freed xattr in spfs_removexattr - unix-sockets: do not close socket in unix_listen_socket - unix_sockets: fix typo in error print in unix_bind_socket - trees: fix null pointer derefernce on error path in collect_fd - swapfd: fix various leaks on error paths in set_parasite_ctl - swapfd: fix close of invalit file descriptors in copy_private_content - swap: fix handler check in process_do_swap_handler - manager: fix uninitialized resulting variables usage in replace_resources - manager: unlock cgroup in any case (including error) in replace_resources - replace: fix fork switch - processes: initialize path to empty array in collect_process_cwd_root - processes: initialize return varibale in iterate_dir_name - processes: check source size in fixup_source_path - processes: check, that readlink returned non-empty path - processes: close fd info stream in parse_fdinfo - manager: use xtoi instead of atol for all 32-bit variables - util: xatoi helper introduced - util: make xatol_base static - manager: lseek freezer state fd instead of reopening in freezer_set_state - file_obj: fix leaked fd in case of fifo_file_fill error in fifo_file_open - manager: check unlink result in cleanup_spfs_mount- vz: add static/seccomp_strict to tests list (#PSBM-50020)- swapfd: Suspend seccomp while changing resources - swapfd: Parse seccomp state- vz: move static/unlink_mmap02 to supported list (#PSBM-49205) - swapfd: Test for private content copying - swapfd: Copy only present pages of private mappings - swapfd: Fail copy_private_content() if size is not aligned - swapfd: Use pread() and pwrite() in copy_private_content() - swapfd: Make available /proc/pid/pagemap file- vz: add socket tests to supported list (#PSBM-47017) - manager: support for unix sockets added - porcesses tries - porcesses: some precursor work to handle sockets - manager: unix sockets facility introduced - trees: add sockets tree and helpers - file_obj: early_open operation callback introduced - file_obj: always unlink path if silly-renamed - manager: fd_skip_fast helper introduced - manager: some swap debug cleanup - manager: small nits here and there - manager: use get_file_obj to collect fs - manager: use get_file_obj to collect exe link - manager: remove obsolete file object helpers - manager: use get_file_obj to collect file mappings - manager: use get_file_obj to collect file descriptors - manager: new file object related helpers introduced - manager: drop process_info argument from is_mnt_file and is_mnt_map - manager: cleanup create_map_obj usage - manager: move create_file_obj to file_obj.c - manager: move handle_sillyrenamed to link_remap.c - manager: export fixup_source_path - manager: include to processes.h - util: fix sillyrenamed_path int case no slash is present in path - manager: netlink diag interface support introduced - parasite: keep service socket inode on parasite_ctl structure- manager: disable timestamp print in signal handler - log: add timestamp print control toggle- manager: close spfs namespaces after environment cleanup- manager: do not detach from processes on resources release- manager: always cleanup spfs directory on its exit - manager: improve startup logging a bit - vz: update unsupported tests list - manager: fix spfs release on repalced exit or master was killed - manager: cleanup messages log level - log: print file and line in error messages - processes: pass received file descriptor to create_file_obj - vz: stop command sequence execution in case of error - processes: keep received file fd while collecting - processes: split collect_process_fd- spfs: remove bogus error print from gateway_real_path - vz: toss tests a bit- swap: remove excessive debug print from do_swap_exe_resources - trees: destroy file object on cleanup - manager: fix unmount of SPFS in case of error in mount_spfs() - manager: unmount spfs wokr directory unconditionally - vz: increase wait for spfs exit timeout to 10 seconds - link_remap: fix and simplify links deletion- manager: added support for unlinked files (#PSBM-47074) - vz: add "unlinked files" tests to tests list - vz: add support for multiple sequential jobs to nfs_tests.sh - vz: set running_tests to test_list in empty in nfs_tests.sh - vz: make "kill" faster in nfs_tests.sh - vz: fix "test is running" check - repalce: added TODO comment how to replace monut point properly - processes: add support for "link-remapped" files - processes: improve error message in transform_path - trees: fix memory leak in collect_path - manager: new "link_remap" facility introduced - file_obj: destroy_fd_obj helper introduced - trees: simplify collect_map_fd interface - processes.h: remove redundant struct replace_fd declaration - swapfd: select only private mappings for syscall injection - processes: add "replaced" tag to fd and map structures - trees: rename collect_map_fd internals - trees: hide replace_fd structure in trees.c - processes: collect only unique fs - processes: collect "exe" object with maps - processes: collect only unique maps - trees: collect_mm helper introduced - trees: fix NULL pointer dereference in collect_fd_table - trees: return pid of the fd owner from fd_table_exists - processes: use create_file_obj to collect mappings - processes: split collect_process_fd - trees: simplify collect_fs_struct prototype - trees: pass file object to collect_fd - processes: rename map_open_mode into map_open_flags - processes: rename release/destroy functions - processes: rename "mfd" into "pm" - file_obj: pass "void *file_obj" to create_fd_obj - processes.h: align structures - processes: rename create_file_obj into create_fd_obj - swap: change exe link after all other resources have changed - processes: improve fixup_source_path - processes: small optimisation to get_fd_info - spfs: check link_remap attribute for any file - manager: spfs_link_remap helper introduced - manager: simplify do_replace_spfs a bit - util: sillyrenamed_path helper introduced - manager: pass source mount reference to replace routine - manager: carry spfs reference during replacements - replace: collect process pid on spfs info structure - manager: return handler result from spfs_manager_handle_packet - manager; rename mounts_info_s into replace_info_s - manager: rename orig_ns_fds info mgr_ns_fds - manager: move cleanup_spfs_mount to context.c - manager: update_spfs_info helper introduced - replace: use generic examine_processes instead of deducated helpers - processes: export examine_processes - processes: treat mounts_info object as const - replace: remove unused ns_pid from __replace_resources declaration- processes: carry original process state during replacement - swapfd: Add debug print of used mapping (Kirill Tkhai ) - swapfd: Pull SIGSTOP handling from criu (Kirill Tkhai )- manager: do not stat mountpoint in init_mount_info- replace: use context namespaces instead opening new in do_replace_resources - namespaces: treat ns_fds as const in set_namespaces - manager: ctx_ns_fds helper introduced - manager: close spfs namespaces upon deletion - trees: release fifo paths on trees destroy - processes: destroy processes object trees on release - processes: destroy processes objects on release - processes: release process maps in case of error - processes: release process fds in case of error - processes: pass fd_info_s to process_add_fd instead of it's parts - vz: fix process search in vz/nfs_test.sh - scripts: add more useful logic to nfs_test - processes: remove "unlinked" from fd_info_s as unused - autogen.sh: add "x" bit to owner- swap: fix root and cwd checks in do_swap_process_fs - replace: fix code execution in case of error in do_replace_resources- swapfd: remove redundant code pieces and debug - swap: pass file pos to swapfd routines - processes: collect file offset during fd parsing - manager: remove excessive debug - swapfd: format debug - manager: remove mappings collecting from swapfd.c - manager: remove unused code from swapfd.c - manager: use swam_map helper for mappings - manager: swap_map helper introduced - manager: collect all mapping attributes- manager: use new swap_{fds,maps,exe,cwd,root} helpers - manager: swap_{fds,maps,exe,cwd,root} helpers introduced - manager: remove debug print from get_fd_flags - vz: some improvements to nfs_test - swapfd: Do not force a change of mappings during fd change - swapfd: Print error message in case of memfd_create() fail- manager: split resources replacement into thre different functions - manager: remove obsolete and outdated fifo code - vz: make nfs_test.sh executable - vz: add additional cleanup after tests to nfs_test.sh - vz: improve test script output - vz: improve nfs test script- swapfd: Pull compat mode of parasite from criu- manager: provide O_CLOEXEC to fd swap routine - swapfd: Allow to fcntl::F_SETFD - swapfd: Check retval in change_fd() - vz: nfs_tests script added- utils: strip_deleted() helper introduced - manager: ressurect get_fd_flags and use it to obtain file flags - manager: improve error prints in files opening - manager: fix print typo in iterate_dir_name - spfs: improve gateway prints - spfs: do not remove xattrs for hidden files on file release - spfs: take link remap attribute into account when path is hidden - spfs: fix attrbutes comparison in find_xattr- spfs: fix debug print condition in spfs_getxattr - manager: colelct map file open from from /proc//map_files- manager: teporary patch to fix fifo migration- manager: remove freezer open_cgroup_state helper - manager: cleanup resources replace helpers- manager: drop redundant "ns_list" option from mount command - manager: remove unused join_one_namespace helper - manager: use set_namespaces instead of join_namespaces - manager: replace spfs mounts without ct_run macro - manager: mount target wihtout using ct_run macro - manager: prepare and cleanup spfs environment by using join_spfs_context - manager: pass ns fds to __replace_resources - manager: join_spfs_context helper introduced - manager: split enter_spfs_context into namespaces and chroot parts - manager: move mount-related code to mount.c - manager: cleanup interface functions - namespaces: treat empty ns_mask as error in set_namespaces - namespaces: open namespaces with O_CLOEXEC - manager: create all spfs-related object in child on mount - manager: pass string agruments as consts to mount_spfs - manager: store init namespaces and pass to SPFS info structure - namespaces: remove unused change_namespaces helper - manager: store ns fds on spfs structure - processes: collect fd wisely - gateway: return spfs xattr if match - spfs: xattrs support introduced - list.h: include libio.h- processes: use fd_info_s contents in collect_process_fd - processe: get_fd_info helper inroduced - file object: discover process mode outside create_file_obj - processes: small cleanup to is_mnt_file - utils: unlinked_path helper introduced - spfs: do not treat gateway file operation result as error - spfs: handle only existent cur_wm in set_work_mode- processes: pass process info to is_mnt_file helper - pie-util-fd.h: include stdbool.h and include/ptrace.h - ptrace.h: drop bool declaration - processes: skip anonymous map examining - manager: infect processes right after seize - manager: seize processes before examining - processes: rename processes_collection_s into mounts_info_s - processes: collect_processes helper introduced - processes: rename collect_*_processes into examine_processes_by_*- manager: collect process root path string - swapfd: Use transfer_local_fd() in change_cwd() - swapfd: Chroot after chdir on given cwd - swapfd: Implement and use transfer_local_fd() - swapfd: Implement fchdir_seized() - swapfd: Implement close_seized() - swapfd: Export set_parasite_ctl() and destroy_parasite_ctl() - swapfd: Fully support seized send_fd() and recv_fd() - swapfd: Implement sendmsg_seized() and recvmsg_seized() - swapfd: Refactor recv_fd() - swapfd: Refactor send_fd() - swapfd: Cleanup: use mmap_seized() - swapfd: Bind local socket - swapfd: Cleanup rename parasite_ctl::addr{,len} to remote_addr{,len} - swapfd: Add chroot support- manager: mount spfs with "-o no_remote_lock"- manager: fix typo in error print in prepare_mount_env_ct- manager: fix typo in error print in prepare_mount_env_ct- manager: print fd open flags in collect_process_fd - manager: collect fifo file to avoid multiple content restore - manager: collect_fifo() helper introduced - manager: "fill" callback for fifo introduced - manager: remove get_target_fd() helper - manager: fifo file object added - manager: "file object" introduced - soruces: move namespace code to src/namespaces.c- manager: move process need replace check to separated function- manager: improve debug output - util: simplify create_dir helper - manager: toss fd open code a bit - print: print_on_level_ts introduced - print: remove print_on_level_va declaration - manager: check either process is kthread in actor instead of loop - manager: try to find search fd table before fd collecting- manager: collect map fd which parsing processes info - manager: map fd tree introduced - manager: collect map files via /proc//maps - manager: split read link and actual fix of the path to open - manager: fix print typo in iterate_pids_list_name- manager: ignore collect process fs struct is shared - manager: fs tree introduced - manager: split collecting of process struct fs and exe - manager: split process_env into fs struct and exe fd - manager: do not collect process files if fd table is shared - manager: fd table tree introduced - manager: move kcmp code to separated helper kcmp() - manager: set 10 sec timeout for freezer and print in case of timed out - manager: rename add_fd_to_tree into collect_process_fd - manager: rename fd_tree.* into trees.* - manager: include list.h into processes.h - manager: rename root into fd_tree_root in fd_tree.c - manager: unmount source mountpoint right after replacement and redirecting - futex: fix wrong treatment of syscall(SYS_futex, ...) result - futex: return 0 from futex_wake in case of success - manager: "replace" mode introduced - spfs: use futex helpers instead of plain syscall in mode change helpers - sources: futex-related operation moved to src/futex.c - manager: move spfs creation into create_spfs_info helper- manager: do not collect process files if fd table is shared - manager: fd table tree introduced - manager: move kcmp code to separated helper kcmp() - manager: set 10 sec timeout for freezer and print in case of timed out - manager: rename add_fd_to_tree into collect_process_fd - manager: rename fd_tree.* into trees.* - manager: include list.h into processes.h - manager: rename root into fd_tree_root in fd_tree.c - manager: unmount source mountpoint right after replacement and redirecting - futex: fix wrong treatment of syscall(SYS_futex, ...) result - futex: return 0 from futex_wake in case of success - manager: "replace" mode introduced - spfs: use futex helpers instead of plain syscall in mode change helpers - sources: futex-related operation moved to src/futex.c - manager: move spfs creation into create_spfs_info helper- manager: unmount source mountpoint right after replacement and redirecting - futex: fix wrong treatment of syscall(SYS_futex, ...) result - futex: return 0 from futex_wake in case of success - manager: "replace" mode introduced - spfs: use futex helpers instead of plain syscall in mode change helpers - sources: futex-related operation moved to src/futex.c - manager: move spfs creation into create_spfs_info helper- futex: fix wrong treatment of syscall(SYS_futex, ...) result - futex: return 0 from futex_wake in case of success - manager: "replace" mode introduced - spfs: use futex helpers instead of plain syscall in mode change helpers - sources: futex-related operation moved to src/futex.c - manager: move spfs creation into create_spfs_info helper- manager: reopen freezer state file on each state check (Stanislav Kinsburskiy ) - manager: trim '\n" from current freezer state in freezer_set_state (Stanislav Kinsburskiy ) - manager: return actual result in spfs_freeze_and_lock (Stanislav Kinsburskiy ) - manager: try to rollback freezer state in case of set error (Stanislav Kinsburskiy ) - manager: wait for freeze cgroup changed the state (Stanislav Kinsburskiy ) - manager: freeze processes in replace_resources (Stanislav Kinsburskiy ) - manager: convert mount paths to canonical view (Stanislav Kinsburskiy ) - manager: open map file with correct access mode (Stanislav Kinsburskiy ) - manager: adjust patch by source mount in is_mnt_fd (Stanislav Kinsburskiy ) - manager: fix strsep usage (Stanislav Kinsburskiy ) - manager: do not try to manage namepaces without pid (Stanislav Kinsburskiy ) - manager: "switch" command added to interface (Stanislav Kinsburskiy ) - manager: make repalce fully independent from spfs internals (Stanislav Kinsburskiy ) - manager: cleanup and rename processes fd info (Stanislav Kinsburskiy ) - manager: move all spfs-related code to spfs.c (Stanislav Kinsburskiy ) - manager: make replace interfaces more abstract (Stanislav Kinsburskiy ) - manager: move cgroup pids read routine to freeze.c (Stanislav Kinsburskiy ) - manager: untie processes info from spfs (Stanislav Kinsburskiy ) - manager: "mount" object introduced (Stanislav Kinsburskiy ) - manager: rename mount.{c,h} into replace.{c.h} (Stanislav Kinsburskiy ) - manager: set SIG_CHLD handle to SIG_DFL in mount replace handler (Stanislav Kinsburskiy )- manager: lazily unmount spfs working directory - manager: do not close fd in move_to_cgroup_fd- manager: do not close fd in move_to_cgroup_fd- Makefile: make swapfd "noinst" program - spec: fix repo path- sources: remove spfs-change-mode.sh - spec: fix repo path- manager: try to unmount spfs working directory few times before give up- Add swapfd and spfs-change-mode.sh to package files- Initial packagebuilder8.eng.sw.ru 1624523201spfs-0.09.0012.tar.bz2spfs.speccpiogzip9utf-8cc7a660a45c34e92748e0d0c2da654be2d3f9ef4e3d85aef2a692bd8a93737b2?W4^n^` F`"IE7:$z"zDx/9k?URFT!qA;QQ!qEEmm!$'O7{O~R~eO?LMM`u{пZh`"7ٕk=avryҶ;=\3?q +Ac`8Ll?_/ ~Z\C@=U'{ݷƲՖ+t06yB蘦p}ڧ4^N IFץ(eo :YC}Mw*U]ˆ#;4wO`$q9MGm:VK~7ܬq閅s*:hhXmi7ů]]oݟ.AC~N4k!# SZ0Lh1OeNaUcڵi|09 t[M[r cxo 3iK G Ҷ! +F[o|wN Vg>T}0k8rqGaQoǡʈ/s(r6y+=/œʥ<mqWWkcKk5DSkG-}מ?$yN;L-ldGF:_̏|VsdV[jZ̗EW;Fvvm+|5s~f&z埶,pS?PGP؝o+yZ;;-kW{|=wyv4 yF^Fo'R'˽eef5&y[gJW]^uZN6]e7s!Z0xcpb}⟛~ٷy,{]cѷx3ۡ3oǖ(ߕձi~yλJu,%1X Ӏ]]qiny&t~ǐ~wv:ͷ#kX}S]qĄ 3PZ's`U  [s Ѽ09[ ƀE;^#nAl,$_M.vfF9 ق9feE'uRDg/ *J;:/ɦ4G v ,E**q|Af~AOYwy2>]ᄁٲЉ`U6E Qo:-]?voy;5㟫s, emك\J vM8{$:b8lHC9+eһg>FV ~<>8_t1g?lA"/ DXEЅSQZp-#\B:$!a$0IgL>\LEH ,F=fcIQ`bAG'o)8ՍVg@âI6$CFVXGgi5R{ݍpqBҊٕ1(i}]b\̨iFsO!O] P P!QU`7o]'k﭂3i{zѽE`%AW0B1ˑhؘ3mǙ9G07Had9W鯡2X-f;0mɖY EhpF2CHWj!H`VaLdItUMWғϦti3+C.UtS쇚QLU>6O>&?dwA`'mO."]=bbăxp+xdب￉i2.kWl$)7;kjnl#*'V=GUnZ>[Y|WcYAթS0NUQ| 23 D± a GfcdTh%.-H1!So -){/c,ϰN޷Lbl=&bQӈRL\P%0B. "QZhVZT]0"_$.%  0j Pkh(SET alA =H8NR 'aJ3\N=] @1 > 7蟨{b3 **V1#&R)qJ$ӢBDBIz(0" ^NEIPEIGR9)GE(qfԶmzZܓ@TH^!V7S*. ֔ QfuLH CC*uJDt3vyn+7/9߽Ww,-}Z1._o\yϏ[[/?P MZ2@=BH$v~È<,H)I2z~_hP;z%gEb u;@*c"?iK0H~F@3wGV,9~s9vn`@݅j[UzIއo_=^bInF&ģy{c퍱%\V5>eĀju}iWh~ǡxsU$W^dD"0#vR@1!ec΅߁ڊT(ljH4rB^N\KsN'5"^M5'1<*Idv_h)]9Z iI8[2X;4rےd'6i< :rgum{y`֖`VcK%|aq깣"Wqgwb&mGgbnhP$^_2a/i76nUTpip#[gJxβ:hKMg+C L5 6ٙ%Ulҵ?ku/b4VFF\$-,L(p{174wE(Y\"`fT2$Y9rQ<8.RE`l %;7L眯RۅՍąe̷ڗpq;Rd:^k~\BRRՉ1'пJD.(-b|;$9V抸Rk w٥-Iy &Rim 祚8iG*`BT9&Q,23츺+T0U_IA/(@l1hNq 8Td}'s L:hV^ifh_(Yu!l`jsL)պT,]od9o:@$N2FqKvxR4A&8]Ql+$'/LN)fr-W- Gj dy܋?R̟9|Ny+#e uXS_pH >36"&6=:#YϥkXH"jlp!vrpPm`Aߜ_8 .PJ)qp9m%n{{BUU{g9,-.ufL⬾i;sQ&/[]L5Tjc)z+U;u2(GWWbԈ՘jaB?m=\ʱ{͍*T3-UDy^_-2 Hl$8^C1I<-]Y81CbA"b =zI9rB\xE;l(HuQc`;|:b7nXd*xJ FsSʍW([l|CWcͤZuG `3_|ewo-ש9MVo{#KMSo q gaD Q OL_*zB`KЍRM:#$p}MhWIB)D?h0Aalvx饅`rMfҁNJ¤B.;Tieiܴ tV ns$h\|=^Q멸{*J/&n}_к'{Oك{|Ȳ|ԛn\α./9>}vݕd%ZtrR& y^)Pwh>y?*Ǧ'|jKQ['LJ` e8# EWWu.4N lـ#FE.wXfg.;ճm/NjP1 _)U?O\,@IGzlܹe1 2Ü(E;sBOT\M` .;dC좙C ͦiT=IGQ3Z^Z"]o!W.^ Ӣ:AvԓReSL2 pΣVſ O(Ӣj̦ɐu߽_żymJ0cVN0n4l"t=oZq5&G`wU2.=O(8͘ ;C5Ă#֨B"X? 'aj =!`DTgM~KQQtLQBXjvYYlPZDd:oGM_oVɳ| t* JQ`q ג3e=Zmr*l 3 3`~XIbu{F= p7p]23kNwGc&S5*9 aXs3PXzG.K&prT#~Z$oY6wDKovo27ET(4py7A`TW|Yg~=}|*U eٺڜʾ6j??h'[B#kmxjb-fnɮdb5W6P35FC*gg}۟޹|;X7%ObWfƫr~{)&8b`l~ۦc_tS`顑},q]7>"R5{JWN$;i@FҦE9_ZtRAgtDžJ7tCHɐD*X< n VRңTiAiGUܴf5#S6sw=.2(moڠùݗG\]?nׅz8\&}C\]uHfå@?ƾ=_{NGg_ O8I(p-6h[Uu46$Oi9q|8)N٨{R3Z-<4mn'ĸ6[e;Ĝј| \ ܘRj46oPޟ۱@[맗2-v z*uy|s97pw̜Rgim?kS¸XQo'L]gh%^-$5C `D]Pw&!Z +D׃/$=a!]'''7ogrˣHqd=5yI>W$-. V-Z>#!B(;5YXD^b)f?Aаi?E*~S 4avȡz_; xx@mܾ$ IJP<X[K%`i$Jz¯oxaBEqv?֕T]Jxw%]Vh[r|,3%pyDIPjʌދ1哦n"`E/)/yySV5+_  L~y}Dǰ0ԃ*U`.eKv!Y IצSY ]~.*ŋ7ưwj>vThafmL%Nqwl de|F|%;xW .lz4{,YJ?aVw"hPb_}7Cp3)7p#,ΈԆY%g, jٗ4'9Pl|O$;q=2 `Ωcs7xL4*@= XV"'%j8g|PaZ:7/†L4ԱE [YrK S4;Ұhh D{*9 3tj< d7);s3 4U<֋Mк0!J;.! 8)W-͑L&Qw,V!@s$131ܰլ3ԾXx8^SqD'Eq#hv1f*S|=ܩf*"@}XDpcߦ HM9y:#k9_#V[o޽ظ]V2NE}{Gy=Gs%P I-+^e\6CDS}/#(_9 V+q//@xow3p|sLv|Q9]WÏM= =g #ph5 ފHʒ#hPL L\tbqZUxA i"BGӃnI)cd4&/II aKn(MF&@Q.r?iu,?K}𩷦?/TPZ鎷\7"R7BP'mu 9CGŶ\}I\́ ;KNg'Q5'|e1!T#jY#OQmp&6-xS~ p "p,aZ Su3<?mBκ[ZT<*uo҃7f`3c7{BY0᱁Q #2v?{mN==xl y&\C Bʹx baem˴ޠ3yV! r0l=X zuu&V̠Gkڟy{$g[fgAG^[)bX /A0a_;* 3_z𫵇e/{j_S~Ӄ|&l lD:CI浝ws8b߇A{Șk5apXTfŏVpL vS\jL2~)N"Vg6*>@^S#\q -َwFSEr7AN«,]*qb򽜷kA~AAA3|9KġX5QìQ#P;`XI-$AT@~uW=wJE{1v ok(/ t~%\D]P u`c s1URn 7+c#QR,пw_'1Z[Jxˆ}?K%kgʿ @-xy+#~>|0N~Wgz^9_G-v8drA?"B9 =_Sciz4hLKʣ0ֺ )֢I8; :N6?G5PE3SF~ӸyCusȹ&x3^!zW;Oߔ]K6t.jZ{ j6Nsd+ _(SSRzԹ$ۣ|"T׿/g79W#m>wZ@xQ!THick, OvV6 AlB9l? mq71=E(?rlhIgy'#^8Yj Ǜ˨: y}+6_1}`j[S(uQi461Hj">9wbmR2唺#0TIʴe\_p$tv-&<n]X}\?PYNfu,e 9;EefcFLoҧ?䩺ZAExC k^,~cP:[:6 5mi^O>(|g|'_ $G|}RL)5AxQ%Ϫ"7rR*~uуuoU(hhmS 4J&yF?f酚ܽ^Ջ I.|;>69ň?D7?"H,MJ_J(Xg'=;ʅCE@*!Xp"~hi` ypJtspg"stqjzp_I`mas;e_[JOO2Jʡi#O4\+ 82~Mp CJ(cWhs=tի|wFo23:/hThHS͛k,#Mrqs{Bl!TcMח ^aqo9IqR{ FU~#t>Ya:-^*v39suKjT'z$RS3i4ɽ̢LqEIK h|?>uJ ➋%N g$zFp=gTSS-Ϳޞo͘V=: @_PR 9&Q6s'춱g[#۴g:QV:KOySvu ](|#rEW[}lNv0C)=$]{) 9'=^z$F}&(bRE |BTac ި(GD{=dOB$]>@CWd3Tlj(OG:8ӄ-pXHd=^Qoş,ZVk@1$?}%jsO<'N?5aHq_'"BMjIN0bn ྙ p6޴]jE.ə^ NPnI*B6?3\5xwN.kF0Zz^ϟx3FH5 Ps^bz/3nsY4]^ۿP꽲Qv lțJW?ģ(S;}OCy;D2U\2whR)cdro0Zm1[E m2Џn0 -sOb {/>'"Rݞ6ɩ ,lql #6g=&ב]_7@ `m4L O8 @mOᄡ\6Hz?/4XB_9<)Q׊M&бᤑ{Uڲq1_nz}y1/nڄu>VV;FIfF2 J/;}DR7Y#E+:rk$<ʉO@! q{Oܧf&[)\ehI[j45-AG9I(\9% TJ~c=NhgY #f\%) 9'B8,Ü*s$C̚ Q1뒎HZуM8$/VV0H6©,U0-+&(y?MJi@Y-tZdo2戱L?Jhq0C}w8,b_:m3{9`50saju:\ĸilW쉌Sq1h(wMQEsDa{(}\J9?k{\.^Aڗ/^\Ćwcx)W [4^_M{u< K4zXHйū xRȌH'˯4>٘*(߰ Zb.yz9{DI_PGZ jk"'S!ܚYdiA ZSse1_ m҂6/d~ruUxX!ٹUm^JH`&GbB'{77M!K8}X1_H?H Ug1券CAHi p X t/^-"\OC"乪aC5۔/c!W$bKb~aR & \2_6g1륯'tXR4k848 yjtpbB $Vl̊ ?V[>Iwʦ Bcﶩ)\bYlTfb^дPyV̪/z3{'ߑ'xvTvUR}D&1aVgb %qןs9|9)9^cc;Ȕ_;ƄJJʎ[#Z[)7R5 wL} ?@8dj1CίWRLQ?/![/~N)…=ؐᮦ#  k $ȆZnV:-߫>MGml=o[{Q)yi,HZ{xxunO%(U1.O&I FD'8I@׳4T[(@׿*$a0Zjz.#]CQ3b $H4(fސ[Lfؼɳ^V|'Q6P̪hñDDľ̾PeU1"0Is IvX /1Th! 9B|VT 0Eߗ(0I!w"]xB5Uueu*CM0>4f#K0A/f~><~%VLfhb)hGATP# Щʫ`hJ–@UT 8 [&=9*":} ?_ZMM3 ンyk>hF/.,тV'mlxg~}]l7IH0J5[a_T kw "# 4NDY٦o(=djpZqX򙃍S>c4ZNE!  5=y\pR{/#  QFԒR.Q|J] u`/F 8l_ c=p))bXNdTEUN=J7÷yA6¡f%NegLqI E12eLh栳A o|dM߼htUw+ UUUUUXLY^eUJA,3X J0n9AncyX޳9  9~(ʟ5J*}DXx,ou[&-Eq0fm:3HNhH؎f9]͠emxA DdV@ohNҼζ3/8e$ABTSD&EHq]H|U)0^XY,VQWj Y&kA +gc< cg΋/KY=b)XPBh!Icg,,>P~&@C}LJqAU2tAE.*E$rudm5cL#p(:PVN翚׋̣mИ3FA lR@XNFЖm0X)V]uy$yTX`t8tCsEMO<g M}bׅhzD@鴸&b a X %LIȉ{ĄCI)Ħhɒ0 JM:FA܅=Hr bmq4QF,A)*6G 6rl>bTĚ+~;Q.6dY !A@T Q0~Y?O[ k ( DeTSwAP ܐ"@`Wʸ#FR#U. !8Af=}2&<|Ӝحe[`rh_ Q8nyb$SIb)㊈crx$Ǯ4s>J5]Bl#>٨O]|JA%HCTbQFMLj"(4 ( Y4k d B(MpEÚi)%4e#ZfDCrgsPp1 , %<VsC$֗NN5*n4h u-ژınH%öcjҠ_}8PQ  %鈸Zfa1DKj곏(a䊪UUUUUU$NI~HϝsW[U!D<Gbr# R5 mC'孨 tAD0qL\sЍ " %)uF˅rK -^n8 ! c(]l O'VPw,f8Z[fuhK6|i tV4Gh, UI^N.ۛ>Vw祸51rvZ#c+l*eDJ2sy;8B5 G D|VK8j8FkHjqdu`]`RŠuiBr)sWpsLqk)E,psfɕb!`iWYaYi:&ka`;z| [~^=jUNjh}jSWb״{{L9gij4nPWuQ({3֎*x;[kګ-edGFV6S +5 qL- #$)VRmV~zcP J/#t- s5Z)r=!!Tp:r``5J'V AHO[$+Ӛcy59_ ϖ/޻^&Rl G]^ʂ~~&ب뙀Ois.*Agt {Sc6`6%JH};ʣ'Owj/P0-MĀ23SHʴdRe+h[(yZY[D)dSbQQMIT#c9 5݃]B=/{j Q:k:UCJoҹ<8UTcykGjl 7/Hw~OO#p |ʙDfaҫQg=XAyD ,Ū$ n+7Q)WYL2Q-Rѯ }o!:XH'z2\z@@0YÆy`sw¥b5pwQiF6*3Ţd^ХFCuuE;wWGp!@!ٵf#;hn+V ۴# %q  x ௌ3ÇeWPaR&o !4bť-av8u@?!PzJ CJ `0i` %bFT:<;VB`$ EG T )B_id%/;I֞<]8ۺ\fy9t QZAtqz(Z/ءN "S';ZsҘq<ȿjcxf b"҇ a)0҃gh6o֎WŜr׊N~vmMnAcIi{ 1Iy1Θ$ MpuǨHS,k)fwlmjeU cqdGœp5.׎T!9w7>PI`;p5p2c]WdaҭEWXu:i=qP_ovmifG.׹wW y,1 wo<}OB 5P&XZJd2I@CP v2RB(5hS2ٖ lK}~/˼ε62Ld rf?;,T~/PQ?U0c_1g7A'%+*Gs ,'i{N/!txk!|?sg𘊹Sك]  B4P P48Ǽ=<)MРqܑPBz?{;?_J !e )QaJD o0ѷuD( N~}SGiu) Gн:e= qI8YޙvkAE,EY MHw L R$$]G?oPG_l @<^E*r!v]pu=pNʪ"Tw^mΉL 'Xm:tx`)PbQ9S\Q=ՖkUs7{R pG,s) )d3"GB(h5B'-Z0n9[j ' g]mr]m~?͢Qs" :`X3l٫O?g8<!Y5+Ad.ُ}Z $(j|a)ZfJ6*Hs;X/""Vps1S5 s+Ս4a7Lh ;u=r;!8+d/]xhCo 'kP:~Y@lrE BX$j_lm* zVZhjŠ" XX* ɭjBi?4E8EaLOT T%A, Pԩ~G7;nS~^~R{eZ>*rgu<Jerf?m@ jtbTaDN60T9ج;:dAX\` vLyt~wKu vOb#2lvz6nKt>Mm$"3~0 'mAIu"؁.w0+*|o19fH,aǍMŎ1ObrbBq?’ RYԩ*rAIі&iJ#-Ya)f&Da38Fa+Fn1H,.ATt=@&)ĪfH|rV F0C?3(!1'uO3څ3"^0վBVNs`-47`xy0S;Swe,غ漿|lH́5D|H ňL;j8u8`otiz5`Lp^J7I`v!R gu*;)C@!Em5g{^[W29'q~Ѻ͊{NfK`1~i-6˓Lv_ӿMA&̆MuS1ӟˤ.#W<>ۏ̣QV=g}ѰLB袵 bC%ρݕbQNNјQ3aM*oA°3d %kڜP9h~")=F㊊+ v5_,)ƞi AA63ݮ"Jӯ;FH" !L=mS#a]VҞk^wjm5}qw5'"8rpJdOc ;DV'B&T@I!qm"4ckhM1'`jHS ǞA+'Otwg%diEvN1pGt/f Vy^,HF[=0r$B+K`gK oˮ>P>;u(ѪQF$}=ºMTqc{ǡzW}_u?m.}xNH@լ3~1c2ŸL#|@D K'zsGC-PBXR\f'xh6(H7SQ*P%8IIP $]mRִ`AȌ#D m1 <'CcG{j7%N8zM}^Jѯ>"/ODW͒j:&,S1?r^'{gB&E!;[O@k㏂vx+O9_#wQTAĵFQw>k~)tQuO;y=Gc zun}_8\%U]tx@SfwC8R:0xL"f8œO  0Ve}$wT.%fV/C5`R:(m؊FT:Ag80Ѣ5(q&0$x 911ĎqmXeS`ɺw)d q| 3ipֱЃYp[,NnĔ .,DGێ<ɜZ| |fP8Wh_mbA!{7w""Ҝ`2DFS`3&!}ѝD}t,}DŽ 1 k^Ղq=BT`J#wP J=Z㠀 2]f<9~zY}Iȟ15X{mV^1>:UF) b=L/ 3ycxNx}5+&Vvb䉎8Θ%A96 "6Tp>L*]ت}=~mSol(]sѐmk?bUPJ#*ŐEJQX|%RKis^X :Ĉ#FJYV IR{ZxU3v2BX*Ő_ƪoe1y:DȩVQPpA9%vԇZǀRqREB*E;[tde*f%I:MO6cլOOo2;=5VfeU82B#(."$>wwŝj÷P2*;&FNEgGr %{<~k*th_~̫Ua fR{aXygahV{q^Kdr|pMF8oV#o'"N z$xg"7VGɇh/җOI8lJWwTXC}vӅ%z񫮅 lzMC' Yէle oP6o44#-Ի'8gcY Z9o#-uL°1L.'|UD_`f~:C*W tz|:OqQBJw{~U9k#˵wv nўo_¢`)δc4>gP5a_Xkr$XC(vy[FZ`kqOgô,72OY֔[(7<0$vw+ <0#ߎb]h>N*](@6ٲ+ȰdƲf@El^]73՘lh)›.grdv*kr=ə\]Èo{ܧ7#ւ`IQB<4|Dre|j\z6Qyђ卷Bރ8(QAۍaf#^ P9]In삎T7;7~崙x.Kvioσzvξ󭁸qˣ ;cnrs{k gxpn[rO۽E1)54b%tMfM|=*r@{ܲد)) 0'06U{xW}tFWDSQ1# Ŗ,56fXWA[eC\9^;Z2Q7>1dž AFefX_!ªE8uH+B~ΔVlXYiiHUL&K1ӣv9ڤ\|j❒>fz׎TFU[{M/T>je:^W "=e5cDlq#\8[¦Jgq5M˱}sY?=K)i TA4It#Vw$|tԞ+xt4Y};+- <fW)IMp< f9T*#`nU. pIIGX׷hvgJx A( u hzUFpEaS&Sjd+}=_1em_ɒM,F_ @ƒԦ|2*w 5shٱl&%,]Fm1Ƕ\WzK)+VamϓϲO ˖QfxӺOeIPz=Z a|2U~5iv X4 =A 3 qT @gvTMPB9`1@ON,Yr2E&7KPn;biJr.]ـ7 9G0DTT:fv;pn!q緱G?-~%#_ 8 ފts#Swy:'*Tǯ_ךYXy PԚ8C26"X%tX䰑Aut 5rVi (!ʣ3xw&yurΙ7sIg 颇SiאPDvP1BF,F]@򶗹w3 k5;uMN̿ulX8=^Cpn"PR22."p {9,9NR@V?u 6.eq?<9 ,l<01f)j"^@$!<<2T~ǎYGEqjSӦ6G[* jjuj'nu\fvS`w=/5}CRBEK k7>aT'X*`g"ofɟb)*Hme 8G!乶 hFɼ HA:0ރilhrqC4MH\~Bf]Oog>*#DBp$1aQb@GTLu+4 ªR`!Vty.&:ӶRQE$zg~Xnpo9tZ8 L5 Oʏ~!_g7iƊ`""W)s_>,WRZN!ca**Nf<4+uJm7 d 6`cDA#Pw@&30 )Ëޫ67? > &(SUTi"7$8#Sc "SzG,.eGyvM4$h"H8X euAMD}64skŰ R  #W9 YUP0PJ:Sgs}-&û8-a㛸4rTFJ:ozuu/@5 %(%n(G.JG&B4U9-73=QogUtq -Vw%|^kMmae 0fPar@wz0;F[d> b?!OfQ+$ nݦ9@b*P 4dHdU>OrUuָ宭LP1k/Ǔ@qJI`Ǘ|gGҠv}x:{$'0Niٞ_IGtiJ=\Ì^!6fu>ږ6u̖8.w+#P@b(ɈWDP(^wqU!6vN(i?F]A$w r <'cneun3_E~Bfֿ84x]ܔHEE΀L`%5vP70c*c 0.(P R=Фu@ƔDB eb.<bŽ ;9>DTGP(J0axPࠨ$XrIq}^Stw Ur 2a@a.@˂ChC 6SVZΕkJ;Lޮ\TV~?I"{)xV/KA44MFs2Xϝ& vv<|^9bν$X~C0 bOЁ0A`_PPܞ8GgиhOy}"{7t>/u( [j)J= s;:ϒ^(uQb\9YGQr^yrU eI{ϋϦ{`|#!؀͡P 4.39xDžg *5 ʾfZ] 0=u9Eo_3MIpֳW!ٳ{7{mQΎ9}MAbonw\K-SÎ9HaHfrwbZF=NGBo36!x::ҋ활NpUW,QbtEHpz(CEaEM't9؛7`imuLs̮#wӣp<詃s1zp'y˄A+#%CZ;f Gu۴W)0jεT(6BA٧p@_IܞfIj0e?|v쪲 bv{*ىnRĢo-$*ɷnD@Vh`LUus:WyorBt4B!Nd|^DE+{EzB9E8-|+d*у7y*҃7wIۖ0X|Let?V۾I^v qpJn~/ nSR6.،N! wKgCKÔcfYA+A+G^+J4)ugŢld z+AAZ&Ԕd̬jj8]s3u:S[s,D$,>}1L7Myk_dZZ1~l><~yi2c.BvNĆ?]&?xt@hȟôۡ([+s=ݿix%gR*Æ?SG_>$rog$M1pլ7ձnN);'m_~+Ԟ6-Z/vnNhTcnnkx5q .<{Zq^f7౓k\Afq]Xϊ9-HZkkwou5JD|`[&kRfnZFB4|u@CtoʊBj0)J^,]izAceI͖k\pTq8mD8Aсg騅: mU/~H`kR"E* C'ݿ7 R,峿= C| )>( CUA4/mK)}gO( 6@ 朦L1 2ԥBd.g2/oT*?z^ɼÒ'A<WM~S@f >yBe5 <:wN% (Ca9@Ty'wum0OS=|gҪŔL6 H„ |]wօzrUϸ~[:MOÒTm<7:ϛUE#YXf!HG W|w<4#HDiA}H ittin?=sA {exa rO&p~u`{ ߗ_T3Y.D޲A BRmժիtafH4Bqޤ4/ ' T ~!}Ad+H~ Wbk)J߸ wvt=}*U ̈O_~?A0?ץoo-V3g;JXIa6y\?ce'Ȁ 9&g@! `LHf][qﻼ Oӿ:pN*@*?ۀ|9q7;C藢( HcCL~]l8{pOxW\㝅m Ep|uI) E&a>r) zH*sW~pާys<5{PNWay$xKJewp~ u3'}uGǫ{wtbl/tW{)WX 8¯=@(n@1BCW obwzpDmmUTrȼDqoyRoGIqՋ={ݦfng\E!)&YC'q( Fajă@KQ)I03CEG=4KT__ۙ PNk "_ϪA1w%1ڛ́E?m9/C`T"BNϬa tQeE[+Xw?=$(w'{g/Hs6}3OD@43ވe"ML3QZIG~ѲC.l"6v8 bQ.꯷|#@,IUI'<:rj(W,7nu2}Drκi#i-rw3fi B@^f_bG*'wp~t B\@k~pfa}O!H1Yz꽦s~? 򐘗{i)_zNo ~GTGR@7<"wy}q8x[nekU~ZeKwB$C}@;14d&DP)u0ԭ㢺L ;! ׿!6$>2(l:b93M _1,g Aow;kT*?7x'w ~xV^u n,- آbM9$yvgo/9N:>=wl~:L@@A? OMKߗi~ UEFu*SZXWk~ T4P,/A?׏g!AOa(d)N;-+җ4aEK ~.0c\'њ1,H3/:YR>%<3{[RB䞆_of$ٓ)?vJ _hI~*j_g5jw%;,A}Jh@(!W7ي<:ҍcJ:xtU%~-CtA ]C R$T_wջu#N#߁V>ub'~=.I~TW-!HM,֠%=Q0fG""&IF.Mt:@C'` +ߚHW4b&k@SKc Mz*5 j`)g?8־OV]Xܠr/񲙫 >L2`J~7l|GFಽLJgA:5^  @).~c3i?،~0zTB+~)dFXAOTIT" X(/O0zՋ~ kث c׾Nin̈́xԵ0Q!MZ>M35©2*Mb! E~1ߣ Am9mUk}~jJ'/0Py"l4M oXb`*#9B\!ũ߷SB %$Z Y`œڷ=³n) X USss2&рTOk(dz'q |;N:!`oNyHC$ݨ&u~^vq^~p)@? :]QC<!;{=6护R rSϟ*&QX%}|ٍw\^{JTto暎c*ː5/-]ĩ0և8MG[5(-R $ HͪT0,*߇8R)͔7/ ]y?_OVx<۪յf)׫ (%'l-FChEȀrL~o1 Ŕ>pD"SwAJ)9'XzSA#sX-炈C֬+"U!*ic$*Ye,)%p3hP\V@Ԝ]/)\>xnw+A`k&t6f2nqos^[JAc-N%"Cc&;$*LgL9ڑ.B+Iz ȏQLFP 8#u:F8GH)fwS:|ֹRb0\0P(J)R/0"%cэHԎ$zw6&T!_=7zrK!=j Fy3_ :gm->-n'kQ@=Lu-a)ե9䴴v.%>'Y/0@TA9}cg_cC)TvZWgFU0obJu+d;3m:iEGNVT֪g\2\aݡ{äAZ2x+Ā)֋m1iRxAđRYj^S ]<l01 ֽ/9C58D35ʳHp aO2FzL~MSje$U 2D@iG|d ?Y! JeG `0HBƐӚ۷),CImmGBɨ]sn7LHU VnQ53Z %(B '-%l=*8m!?sI'yEkuu2FI% Ȉ1 t1[N8BSġ#Z)0qFxbb'  s`PąHN&A0)hCr(HoX l 2, +֍,$;J!MҎoѣKxhAHk .j+gNgP4l!G! ,"''1_ Oqيͺ>yVx/ $H aJ 7Bk_%ӏ_=0gzF ~e)46 , @BPA(,4qPH>]zMҖN7 $ʧ"bhwtkuS\z$ vt ak{Y?Ǭ樂Vƅइ>CTis/C_\D/;_Cװ?:,ޣ˭?p3&/Y~TcAO}@ xDw0N|L;!rfs粋}.HY ӓ8fGu'@S='w?G{CнP;7wthv00J'1 ?VYrB|Y{j߉=a> /ix}pSWOL`ވ;Q`G01#!7Ep SA`j A:2tAF!\8\ :$u>aĆgD_;L32WͅO?o2vJ>{< |:Q˧ַkoh|zXϝW5إCYwc̰4x.f]ޒݔNrSA,ۚK,gHޜQ}`:?G:裖 M,cJЂ-Z$;݇z"ǖֱ^,1rwC|-v~slzѤ8X/ܚ!-,1{ѿ )l7<'ck ? F12b?{H4(҃@K`Q<d&KUISOLȼj"9H&]y/9Y gGaf s~oU6.X1NDa@ t'v۷^۰q/UYM8R-Ԛoi4*-jЃ:v;x , $ m:<(fqN>svИ'~㵹@EJT+*wӪRI%߄4VF oPe)Q{ŧAJ*P|#' f"o Hm"r lq.[2;sp4OWl.N iӮUhpF3fcm8k01|v<8dzFxL2i9`fj HlxH`XB֔AyC'Pw{;NMIȮEQIe W\{&{jD,}lN`Nh]TmLCzbﮆbUMX%|`$|rBF$'h8{ Ho`P8HNaQhh[Yq6T,5/ ,dN.ds |yNt@ނU!(‚h6x0p&A [q!ᴁ 0Y3"g`ƊZ 8֌6 rjOp0r 9K ^A-=sDE~a#60q'qՁg=k #o('>aҮ  p u0ư5Kav:'9]ǁ*;a) H[czS}Pˬ;00p2zD) MLNɱb_AT9 | PJlR:_ɒr(؟ Ң! ]-hUp|=&!w3 E5|hR_c OzgL0LADLRD!Tp9_v|YaYSۡ|YF%=KZ{btR5yFi ٯH">Ќ`GDPm5=[NA/1WR M &@qBrV<{O?r;)_,`7f:G~BKPB猛$Ϻ5֘`$̟MbX_/`i{U8܏ ! h(81 Nxj|l{R~}*=ܽep1Pl2A+Hxyp `W:jPn3m^QMYaM/}hiE3O!Ǣ Gj`@VH)K}p!@cdQ<>Wu^@@-BJD{ZlNH9}>;wk]'po$UwSC: RxYt[R.J^NJl~}xGyA{;&>#ðM18p:&C׻o^4 r#Rjd.&"'/y܆ H`h{r?7 v {!dytt=xwJ^3[S62hs62e7`S.!C$0540{,;Ӵw74ŧJ]U2ml0CU?ŅYc i>"Sbӗsrz# hQ&*ElgCH׀z'AHL2YN$;Cs(gR76kxdп`>QIq>qS2%]%Fb߶#Ya\iv"@ r`Pn)Ay9#4H[6G(daO<_)hJ }p0|!N1@Px_O0CКvPItwf;CW+aAAQn^á;;wtr 9u>;tYr tWKmSԚ&~XTᖅoL۞.`HW}Iܥ7&O~$& }7!2}!trS4 r88ѾDŖXZCjc %#~'aL;}YHT0lņ J*daGa.|Kg:7:g0`, *c $B]FCm|wwq$;dlE)'f>SgTkctح*ܼY4J6Y6P9H F$/(M~vWϏqgQ]ȱ*Laڐ־({JX !2$L2"-$4nؿ(t6&".%kLN/=,p䰌f1ժq]C@7uRAVEZ(@yZF]c9}i21gWj!PJA¼Dk]@ ʁ!kKt.)$l3to gGʪ߁?o9S1 %Dr= ϟ (I?0|hW{p1|@B\>fg`׻- "aBڱ0-*CR u>O>z?yzϲVf#o369Ty m| ql#30waHOr/b=c/w}tƐR!n 49ITU7K?l(D5XlO 烁P[>zQ$ ֳzaUaW]R;] kpz:Ȩ/d5oGl-e .2wB6@0MwƧID(iM)BYe5uTLdK8ۊ4 {Gs@CR,6`rr/cZ[2 COkólD ٬\>Ex^ACL;!b)z@wa=gRޑ>IPO A5)횫= Z ~HEt H ? !-l5P~~߻(v O?a ?io16,Bi,c\pdtHy7nNA?O䓉j8a{cK sse_V}`B6۪( 'eb;QE::&陪>RMgmB{J33r"(qȾE<]BSΣ%$(kw<^Nh(: H2¨;GɄ sbI*5K{GzHjf[Txx5({ C})j^q5%T8 FAb0BͨB#кoXq xh'3{:#5ɭs 9WǝPCMmMh,' ˑ̦R$O"\j94L$ҙfg[wsc7ppsfYTӟs3glѽ 狣6d+2l9􇬾$mJ w[kΎoJudx|>[{X1,UkVAf򜼩Ruúcu6k-jX:˾*dʄst_4}E&#WR4jKm9 rÓ[M9mC- T:͒!냕 B O=\̖a 1k>Eߴ| w²yUxCxC8gTv ll#d+ueU(XI9rnۛ/˫ѮTgý}O1ێcȊ":͛Es{CAq 4M IEVfd{4=SbvZI̴ ()s[ sa#A`F00brh{ZSi(hEdzt(΁y< M"]I9f(s]h5G;/QJQIL"-C)ERrBiK[8("}Y溒bZ8v6>A|R^R?Oq݁ Q[.`(ttzEqr9 .òqszEtlQE{DIWv8:2 )%EEm :B 4U. -}rꪩ2%c#ְgOK#K1m9&05D*S_w6IJ"矌335Ȗ6uP)c]lo`e LTsNG;{,q;LG.jG8%,v`LYvv(\4NDʂalyOrXϚĕ'ˤԝǁDuD5֑Xk<}j῜6ݜ# fG_٣uܮ3C]EuxU{cVs B5a "C*(Q7g6c)BSfa);#S{<#@B P>M}EXx_}?G߿DMzjPpG[q ,01XbY`D߸QpifWt4#QN]xB3pRfq785JAԇ&E '-44VE)Ri9 \v `h-F :46N(>8jIE63x9s`j n6) X[v=j"e4*B. D$̬u-$eDsykz68c~΢ lb9p90>Ahnb¬x`aOs7<ʗZu(I(A߸eObOa6cM(hu7N)~*FbԒRqe0v[&kW٧aESh6xF"$cE(hVCP^Dp,g PH)Bϼ8K:Zµ4y ugL`VV+=CJ<8]{&iv7?HAXё@@)ٜD(,2iqh .LWliІċ}Ik@8Ф??_VQĽ6mnbr\': :' *xg7h~_m0M,IJD)xOJ$@?piA>~4yJZI_|ケVbA,T>͌EDP=1Qx~;U dM@W}c༃m}o;W)F}~sͷ{$9Y!Iʿ1m3'.71]s s>HrS!NЄ@ Ry""jt}N&$N$Bf! d 0ІRg 57 qpC<A1PyF@PX3iA zTyίr d7z 1d;9l B\|?پ/9 Πp䰓mL1ȉtpC页Ml1#Td3[SU ; x~(TS0 b/GVGCJ|d8O-$.t"d˟Z< `"4YDR2h(kh(T6fΰt~1`?Ґ2rrI|A9}I.Yщ7ފE7)I[]M9yphT9W\"sS<)+ bʱXJVAiS\hIH!BFXp.6i=SI)x46@`pz\6g]23*J!b%,#jhf"X"J$v5VRyvBoPḥC F'?AէjP[ ab,gkZƊuiM%?|5H!z.mF+&4'*Qy8"J(ġ0G!d)hI J3 _׀NJ UEfB@I- Ha%+HCOJ EYüX.1Eq޹ $reljICkOGV,ODKb*.?$4=d .t3|w}F\ !Ae$z=ORx *-4/Zh%$ gO*!~%=*нZsS^u Ȳ(醗7ix!g` `Bgƅ1Qwg"P ؟x@hqgƳ{yhtKЦ}m}hazCNx:> OB<\IHYT, Й>ÅhB:0be"-~>d |z;e`Fax*#f_F.yi"M2 #B+5TTbT1o]4+9(f1d'%J6QO%_@5gͼcnZW>dS47 =τ'Ć+AfRtI!p78KSrz,KJן(&Fj2D&XTD(bDR(XX`DHIf2$rNMQ5J< |$,bEYm+7bEHO`[r:[Xbx Z(i$PE=|fѨr;1 "$1^z Cy;+={(4s 'YL |K 虘0%Yuolw>(YUEp\+,ؒT +0ʜ"IkPIfeyE陰uhˆݗ2ytC)jrgzp.Ɣnijjr'E :O [Q:IY5k"F u`L!X%m ]6=aۤhSJ2)8rf,ZyҚGJ$e2LDIض? Wt;Pz^edSPjur͔b k}s/ KP-4آ-f ) q1,X{=F.꫑q6Beͬϒ<#3“1phri}/GQ[i^QRx`T!Fd@Nxtl1wi*AgBηvճf:lZr**#.J5#fA岱 cH/ۡӂ/v&zV15Ced9s9E-n5^VjJ(}[:SH(؊ûSưFuL"ljbŀlK4X1[J1ncct VƜ[J DIÁ8W8T,eBWP Fu 84U |ltРj㫻wXҩh©M {s4i^ଡkBYmKiƩU&ak آ`sP4kt:L%Y:=J4=8Um@ Pʂ 3. і#% |2nt2!;f3 tYt_AڻOfT4F9rnb^f@>} шFN:U[aOzix6fQQAZ66PakꇛQGZQR=]#G ia+eQy8ЀF3YVhB$67Ojpĺ kۦ b-"PD)cr] f&R<RCE,BFy&@o'@PR!z C;YٴuM:M8#Oc ab;i\A҇"t%K3iZ ۯĮMٳXkf_ c\e% j򚌡P' {OCK"oh*&Teڢ0X) [fE̤d'$2A%ED RI2`ۮ7q֜1DD C p;A{C?̩J+99Xið;z^NK]MSQ!N ]KvI3eSxm'*120{'ۚ*s6QM1SMaR|P Oy!s"%F@xa6(akrvYa9XǴ!hR3:>߆# A/yD+!Ϟl ʞۯW'ҫҊ<% \F8x_yX`UhnƺӚݒ{y,un-*,v]-l8L(",9~[8FǟpKR?o pMgNr{AnGK O]'̋YOKeI0!5+yP"9su t=Tz _%[uӪOh6L:O;}u5tLrX4uH*S\RX^@Pұ\=R#a"1VO7(F9 yJ!ay{eh^<^ٽD:~/%VNsx~z=Qy=]1HM$x [ 9^sE9]4S$8Q{ÓvQ\kثgpӤ/i0'@z|vxs:Zdh޹V}xÎu^qwx%nG4B-t|'; o* g|deƮt<&6 j|mqBl[J %BWE$򍛁kH|dDcT]gg &"},?iH">|Xu }15qu*ci`FY+@|ho S"b)L8&m`@*q|b]vd]^S|J8!(`.7Uv"UcYBpLFB* eKC`IsVo'^kVVglsyaZm-s2EX+.E.tu^2uZ7Īz*62kqEIUhEJsWR]d3q:zcL;}Y-qʤe0kk Ӧej׹UߊUz<:\WNwNQ1&pslݰ{r;pa՛ÿq gFp5w:Q4T16UjXN|4Kxǻ#OMwX.e:dF1Pb#Th %%3(!ᅠ>E,"´Y3,]15 dWty|&(Ǹq|mЈ9*jy!档SK2}>|/Q^H18 sMbMZߞ{5nbK5Vq"׍ oZLum}DiH֧n w hԂ,=wq2z]˂g31Kޣu֕sYq`Κ!/ߟnuTNwrnP/&шKgsYLӋZS^LWGJbLr7ęfoDMopUi$ŃQAP<"VdvZ);4ˮ-NŮ0}O[̜ԭ㤫!3u%*kLppOWǷ5xor3Ӛ[Ǜ7끬qypixZa^e= UsdhLeNץk\q㮑 ֝:#"78qYRng5G* ,3fqXb#{! D =foHml▵3v1s+uxCjKĩdY*-iU"Y$RBa"'9Nb5,T͕14|"%A{;=h=W9HDhUwo׮*Vk8 ufQbY),- Jl b 797/Q%Q}:hcȴX$֧olJMJ8k~}OcI>WnꨦۭM:^l@qp,lvKoeeH8G@"vJ# M|:Z<٭[>oüS:dﮛÿdjw =zpls+js~!i;Liwd,'B)"hЄE!hU)0X+AP{jA:Vхži:¼J2v,.7e$vh9-4uڤHN@,EbՂfgbחQ6st{ :$#:@)UO% jֶ߰bw"|AT惠T;!H(iP&W=,EC)5k - d :˧eyHUmAZU\$0qpGb : 5u>5W\q]s[zɢiW\ n#s&V3 I%j֨`<\9f͝ʬojqD4!:TqRSVAuuti,JT$i^8.ڭw>%J md 63 |fkA֑~4:9 + sxZ j@.2kZ8JeKC8-H8ګb:H̺h#7"#gqt0d}]>|byfiR$/&хɒ\ɇtt w9JwʯR"nU( 6E\iYF߅J8M|'f:9^\Gь;h,^w3H@h>ǽE&d=f ɱ TXz2m̌ݼqZL@Dw>:`)ݜ!^Y~z uA{pHUE;pǡv ʘ<ȅ?48l'G6Oo@sGۜ؊p 0g}K4v.<0d>I28I'GfXSX߹au{nyɱ5N81? I((bOoĎvuB,`﵉d&^3[۲!R!""C6k>愃>kE.l-4j :>DFtX`n`@iRBPn7~۔,ҴtF鑗e4qfe8MSJEE *XJRV"µirB;X O7 rԣՎ%~uD9X?hʆԝ膄, C$zIRNɚ،mJJ_MaCz AcvSeE򤃂r>-&2 ={|l4w (~I\EEu Hh:F״Z|k/ +>/u}VCb yYwl&esa!QlKb8yT;&/e:P)z?JD~c@wM3DӦJӅǀ9#װ|{/aykm5`I(tqyym0B%Q6d$Du~w8^sJRAH׵%J*VpjRn *e7c 9 G[;]"Q[a ]uֵٛ8ukS|]1Rgy'[֑ e&+̺sуRECYt$jB> Eyo]91oOz=adžLC*y=uBHFAVpP\5}_ a#2.ztKZ'AI _rh0B`t1x\՝ѕ3 1 H BvxAsF wY8⩏Zp|]yN*( Uv!%%u_NQSR@!*B&J:XT㴲VٚӣiyX eJ$/@u4j6R(䒙vɥ"k(XLEқ̽_fiS]pdP\lMn$1A1@qE©'$ p yoŶx}YϾ8F?50ǖDb>J-=zI #g*Ν骢H` =}D3 + DM1$$LD;KD{ܛM/lNӽuzq A=?ʬS93AfbƃW΅MCo&zB dO98 gLgiT;z3oAH+s Q 2!I P4Q@HGؤ݆@I4 ZGy|!!@L1wӰވ"O^׻ƍ^CXCbI6P $}:.(L)\Z-iI[&c 7$K$ff Q#|2)0^I(1d)uublHi qG#)0MJ^=Ef2ӣLvD*`z>|Xª<5k?f#J % 2(RR+,Q d!Z)Ġ< '[ti:/{.@KC +iF\QH}]D~Lgd}08>-K۝Gæ:_&/;/O;I̾MdjC9B+ J-&SXҦYMx4쒏o&p$7TlY!TY&fޖk.;іTZ|6s <"& Ae"j&("s;߱[gedžv> ʧ'VU&ޥJ1DᑕǫnyTE@kr(˵x~Y1*2\UMT-h"ô~'|f1ZRK5܉-Jj%3DcFыh+{8Wק@`}"Z R~i3G|0? @g8'l*l*h $bZQyfX M!tK)x hxʗ V/ZYHuZ𐔞 thNM-xY-8OW/t/eԌAջT>\wbk OBOm=d$F HP@ؐ L>d$F*ldP%jRHBɑz3ijlJ;`SÍI҈)@= tْckn1Sc<[ =u" ]akgl6SҿYBnswkYKmtӂ`VAcG ZyYv2~i9Z ~41 `Iz -"BL 1 4usQ Nb0pbop*iR̳ ێI.+ߛ$GM(.d.IIOT63ԉڂGIGZs\Hqn⹁RhUz`n4B' J4B85<ݭX6G׵OwSأ(fjji* <܌DʦOC3I0:C̔z uz EEیd ?túa^*)#,#TB+p_z{q$w(zʝv\GDz;sO{tt$=vnS/bx}?S۝z =4&}  Di;{MENkLF Ko5"_Xp8<:LOskRmn+ );㛬U)г1 _yz`4SD1QÁT-V$gkH;n&BXIrUqBHcHRʖqdy)I$^dNh5(i \㎐a48j rX:)7efy{^ xfHӹ^ aSr~WWg8I14_BdHA TAC D ;>=/gQb &~C)nlW ~LV"WUn61H&޸PSyv8pݠ'J6|;h^CN^3 ! 0?.\{w>EIXiCiÂ0&>  hv8=W=Fy&=FX41tPQ Y`"(eYJIPZedEQL24f|z -rH ©?Tzż! =_ N4;m dET#ZM 8,ShąDc -Sb]M& UrihZZ[PCS9Y"r@O+9_N@sl"4,҉`Z4 P J,! $=F5A0d HaR yҢa)ԡ̦B)@ˣPW8E]`ZEdjY BVT&y,N< 0b CR8o Nb~arQr:wA E\AtD:u?-ДS4#H[Sm CuأZ0w撡8ffRDC%6OF@[r3bv· 9N5˗zz#6*9udN<ŽEWOٚb$gˆ [ $CA _[PGPAV2O+x5~I}gV|xc6 ,-ӵHAE'U h!*?>1 CJ5.V7oalC@cY$}i2#{?ScaI$ HDI@$${ZDO9cjtr}dEm`"rwN2A!?9Uxk!$.2-NF%gZ99_%~:N{>Z(|J#%gAޏyڿs38Ep("BF'?=.գ^ԬZPi˜c*T.l*)B3쭑cR =sOǷS2_ .'88eX5 WhZbi`H_"R~z4({l jƭ4bAK=ޱ&)$-XV&E8a$c&YIg3R""ozg ׊ssWfge_{u3=ݶf kZd4v1rӦwxOOvY֐*WR3a_"8_;K26 "?Y&\J zo_?(|Jh<0dN o5C i~/*F \v#bQ1";14bE @F"ŁQ,`"T1d I!L[(##F#AR!Fp4D4EJ A2uLaЈy  2p-#(?/C{5 E JEbK TH\`L`ER ] Bk7A"tdIneM־Cixrg`@PxYՋ<¨F+~Ă}>@"(fZP‚3HP ;=vAHE,ZL""(@r<~?PAuėĮ }|37^pg MAZPZ UnzeY& ꪰsXYb 8;F7;c?o_0 201I"DL] 4[ˮ͈#$ 87zJ.ܜ!q̽~d@(]3R??jp*jL1(QX]la&[Ǯ Ѩ*0MkBҖ1(8oKiӢt"`G] gOL Xby&*m&`SUF*-BДX"#%FH*J"2hfUN5 N)l\"X!Z1"dYĄ$,6!.\ŽLĜ0h)3 dem6tax&t@N!IA(hBr8H6 pb`u mNP`覈!JF* >="I}*"bEc<2|'ǗxcOHv Ig44:C0fN*Aet窻4Y}`{`8*$ 1XW[[hDF1DDgٲ$I}KQiYieFxy4-є2vC!A*d+Ha/v  h燣zNwTŚc7N,d7 ;F3YLxXpK iʃ2]f;U+26 0v6̼-]ZHP[H+8FRH[><1)| $n6؜0xHS@Ana2lS|Ҁ݁؀gZ>RiW^h葃8h=؍&ǀ =!ƬKK3, Z1; XT%),} #ىrPsY-(?gQir3ԃzjltVs=b_|,FC""8YR@AAIDCK<' ))eINjz_ɘ!!78O)p!KHáFÇOta~&NG[F@;p⦞2(jU૷ʉ tbn?2j=QSQG`aAɞ3Bl?IueVo\`ߕU^L26fs Hbq u3w~K j ᆌ;znjNuCOG`2/,.EZ4}iDEB(Xow]=эڲM_`Sd̲$; &Mkp42 e\1`mSlĝ~t}xD{gilּjJ*3kqq5Tkfoh=39hof%ӀQ8.wMAQ^ 8+icN:iO/U<=#bi~t+tس:UTzĈ)/ u3ͱ#֥xZfA[@LSkB2G~OBP88YHt ;kcT|ٚ?V؃CD˯s4׏;( M4%\>wxxx%Usu41㐠({5լӍCCR.˲ ]"[ye Оz1,XlN^Q]G,T}[zT"v;QA8HhZV`λ0QsSF~mK {m[:fä9yzETJLٜ^PKQr۶AAjOKO2'ľ?YT^4*ܫ?y{ũ;j^'hoha+0c;# @g8I'هoSusljGqgiPѪu3Oz(-ƙO\1A7qN&*KGf_aJU@ xyAKD!Ņ_ ix yݹ VKˀ璈RK~ϜaZj d".PR3, ͂B۳*z0; $I! J̅%%Ir@*&a(* R) !dd!OBa`I  y~?r} >ClLFƈNMBgA7 Dx DCyCOOßp}{9f-͘-*P}n__44pܼo?[4+2k>~^%1LPs1pK ާHp8'". `BQŸ/A;V)u~i0rTah" &X#\ Rqqa EemfaA 9!%+b@F`ԮAa$8-# 0 J9R`ThXePaJaB@DdCA0S@*H2^NZR%\Rf;N"@-,%QcVDDQX,SRMZD VẼFh%4eX^]MSR5-CӀ*NdGI1@Ĉ%pڍ՘N͍2pvjbBX]i0txi,4H9EH\xn(F38#􆀚=R:ʤ UOz!N?q,E-|R|'q.>qwEHiNL53K $ș!!MNn07;ʆ;܂CV@w#z(: n xq(Yk u"y. pL]ZT!ݓWL)"RBIPNS]7yڪt hY<1]hRRF5*PŴ3%+~i }%ᦣ9HI~.IȻ'43QQ_ץ?iE5D(UAzå=C #1(L HXIȚ 4fc| *`fH$X()XCP\nPB$PJA' PXڠ'kKR$0Ĥ((%f)Id*(*@!e ( I`eOPL TԌ"I ؙ ;Û;|쪾q'3 e2 E,%,IQ_X(b#&HĤHad*XbR)(Q`в{yyzEvZ= H QDP@Pp3* Q`\h~檆f_Z x$gP'Dp9'L$('s󪧀;8Z J hJ"23 z{w9tm 3tGAG`yS$mݦ4`<'TNNCe}ΝM=PĐIx&Ԟrd&M!HAICTD1%Y1A@R4 RO 10њ%L ySx_58PX`9?y'3o0F7ix|xJXaR7T>*#Q<5 7 |%tMȄJ!)HT$\A2UWiRe[J=?-/4y]ҫEh Xv VRa-KE(Rϡʶ`CRM,DrM2ȗׯӽ&PS:aIM = bq9fc %i=}Qo؜#Y_HPwc6HzUXC8/v@*--SZdKx8Lb]B8,wZ1BV=8af$LE%~ x~ V")-?ʫRAP itc,a')5˯OVC8MF B@4$ITa!HҔ JKD9MQJ\hL!P4 Yxuڴ5}U8>ʑ4M(55P J}k˅Gi'Xjq rG`p%!H4FX$EA 7C! >A* "" R`H'7Iv%^jPYuяoۊ IOqϼ3F][Z 'bnv A7xyҔ)ޫ brZI $g:(\uޥvT H(sG9ۉkό@I30Sӧ {M@ P1NdpM OzGVDy 'i3Tt X䬂%궀9oPSlh\7-a^h`Db'} i:@9S0Ձ [7?5Й>\'v;2Qu׵Mc;며2Vk2 q>^&Ot7q|.:Rʯ).wͫ($)|-8AeOYđ1#B~ԝќ 9[~b'=@.B&1xa$'NBLIHPd5BeC~ ^e{GU4a7_16|IN61y*k[JfYB9\,>|l5əs)&vh[M, ۖ!b/P:xNXnQ-9 r`aG2"pNbE: ֻMLsXJYJxeCPV LG D:)paCkDրڊ6=(NF|nNI= ۫? c@ݐy-!EPS4@$P2IBEI!l!6§7m{T=C2{{c2*m 0'#J NتpׅRvDfBjhh) MaBO{x94 RR?Ae&-MA{; ! 3H)b:ޑs#'&$39hf1hee+2R*\!`lq*MvZXsJQHc w]I rK5>r!#$Nb1:OooÃXd͉) 2O\fA}&@DSxOV'rMX@P+#Ut6mhv;z/gO2 T^s;ߘ6K. ZVlAIT<=}X 6m+D3$̌GqCdü |*geet硰XV)pY òѦNAvC`wMW!_IENN?gA}sYXP2G*sCRfm!װT0bE(*RQU)&(P"dB H \ e%TAN'_Ύ%h9wP!w++vU%F"MҕuAj5o[\=z3uOuನ:xf(qVq &*LYC>׹+sZ&Ҕpw{I6u.V^WrYu-*1$HHηj)Cr,s7 |[åϲ`9zPڹY8ґNVbC2сz.e®˷vlW茏gIq!\0SO!쇌1,JqcSANwsSJI k#=$/迌]p u'D䢚Ø'ȅ[ 7 `RvUA D4Ge۽BC*m wr`,ӘQpLyPb"^>EE/O3IxS |=Ѩ86af.3܂¥Qe]B#lcqØqh<@H;KD6 BP\3Š41qL*Xu`H- [F9>:yqPP )so3j!YJ0  !saLR[0a״o=:#gDŒ*Bѥ`PX0V*-&*(e1kL[3U-k8d^p<6I28#TP هqPJgԥ˫P>Y0CVXJŐN8A9&OL:(Ⴉֆt8tmDlm`pCb`Qr"M/tbbh5 EC.Q%F!tXmЯP͸ TWtn@۟`uwȠJf26CM(L !'*E<`1m NĊINw.Q%J*8&hrsb<Ɣ A>y;9]vFӐ@^2p(4'1QCa4nך$9Dܺ<Df .bb?ݥ"zֈ~LbB1 11(*UcO*ki>M|}6uHNGᩜ :,5S=fSw~P0=>{kxuCW'K}dI283 ˓!b,l%dCF[ HP:]ޟPYALJ -HT#H SG;wLLû))Տ^ cYL]LFUf NIz|g^JUʂ17j HuQ\<'2G';hO R҆D=$iʅJ9f .[i :$Lř,98,l%f6 6K{{l϶4H$!DLib>uZVd)1_OQ4" !qs9)Sb6Yh0xhZ BˎwZ0%$֛剏0D8fuxdXj5;@5 ]0 pJBGbq( K{L-m/*?2BDr ZU_ 8}AC &D- (0&:'=mLGp!ݚ7/ Oh@ 0(*' C8/k0y"!aև`!_Cյꕖ%AbSo}TuN/^)]svVs@) > )L{b<;`>GI  m{0b8w[ Har!1~< L+Ԋ a@J3"' yX3~tĊH1 @P (aTM=2)( "B}ttu'>;/g)\3=ۍa=-Dڤ3(~  -úoW&ؾx0}Ba| 7AI9=G~l|>N J]{1=;S]"*gpp@jP +IrH䌶b1" Z !E( t8 >4i0-hKضĖ(@RL$Oc#Bt g&IZ<^66E 8cC4s70iSgh8.cZ 25KFuĭ4+ %# UWoy%awON68?G7)zήֲ]eq}*[cg[-P\`7R.,ZKA!> >>rjXSB;%A,1 0rwX:֍#;ar帽[q:Z,|R;((޷CSíbT+b(ݨic!]4Iip}IgI(/uG.Aeܖ׽E I+^/':q!=iq%ȕR*y[&+բE-/s%GXRs) &Esk掘qS{,z">so7E0qqm[/}wWDfQdI Z =LD,PD:VgV_\U14#v5wfǓOƯk$ s鷢~VW=nX,PEjq&7קm=]?2_Fْ6켼,cN#&"B¦ךz|;IET&xZ(X bhCH1\I\RY„L3,6?γso^kx}4nZ˓(H\_[kOxYgY>wXwzz;ޞ'a7hkƭU*i ΄GDRk k'rlxe ֬\t恵%rpen|}T0h]Eē|uU >>9v lbK@p6XcM#=^tSdZgka>*Z89(V'2iz)JMgx}]փ}nW]*kb2Z.Ҷ!<(pos|uy%{{yDtϥ | M2 +3[3ܯXyΡ2%WhSnYճќ|]{T ׋{vugl3=gό(8C~w9TxWP pL)"#k\8\:F ^+@P0g& 0ecbPM!B"! _閇od4g.߁}NPQ]iżړ|3Bi!߯R8NR@qJyHcS)fxW>a?5T#΋ftkD^-_x1 a6Oh*+ޡvHr}g9#v}J).ILX``)A/`]+#ݥEh*g.}ZkLI Z^m7 x/GDN/sNl*hyx?9E189]/U{_w =%BMX!殞V|u= զK۝WGGYtsK1xHAV&{;'i|v0(~:(8F˒v#%xu0QAT˩d F1Nwv$S5^6#S'j mp>U!_?ͩVo.4p9{dFAH,&ld PY:L1T>k tƥ͢κZ82KJؕ,(|p@yFJĔ "*$M&ֽ:֞t ?i/V؟cdA!=Sg(ptQX\ n"xj;[IJYAb}g-*OLq%Q i|5{dv`/9B ?nABi$yFOQlj <2.]I-i*)=CX8B$/M7PtTC(a)NB'?ciR`R yJuIbWMٺ<Z 9T"`܅"a|JGbfl= CT<-ꢆչ ]JULOWڑB(Us]#Z:Jz5 Q;88ˮâ(D>}6? 7,N]=4`k5:xo>^_o|?k/~??o޿s}?[W'8/Uw$;ZȐN녙wtq"Da+S'ALݤM~tzWs i #gYNI^灶EQEXZ5LNėEЗ|aor*YUr  B`e vbi S ]\z1qAB jiD@Ё"(kҀuB1Rс}{)Nn擘 ]Qvx(ܓ`Ynv22U%l]B. Ɔ5 SpB$=52 Y#)$KbY0,S*ұ*G}yPąݵFq.q/,e s-fEy&ObCL→SMBF1Bh4 H1#snȺ Ϙ $}|{Pxy!iQ=&O$7ۃ YDtrIJ[),au‰C7_R^^62Zc&_܃$Pq Ͽ%C Y b1+ItԼVD%N<Ѐr.﹒16?Қ(aj5njn2vցtbpx2fL3d@ N/֥=sB$8eT\6oeWha1:NpVf65M Jn`*%(0Dj_V+gʱ.l* )Zb![R'9\z׉*' 0(# ಂNgaJvj۰Ȗғ4֏]X.UHn0$,3qeH쌀8A%mv{75RXg,V@lr* Cyp 0&pzh5 sŖ]*Y5KS8ʪK@>"=VHEA C~c'̯ơ=vb/C[(? o q{N*X;RO8?-|*OXa5=jT1r)f%lvajRR䳯һMSM HGw>7 B ag<f (k}Ӂ)3=},u` aH5BTeP*wQߋsDžuHd=;%rRUX1P46T  &3UkF1/}J([ЉAry«Gь!" )[SAJ}̕6uHĚ6Xν-u՘^L 0DQ0iP.w#v}m.7 ,zCp6 ׂXƱm%HEY5y.O.8e$O4Qt{۳1ԚbqdT %PJ^e5ǞHc}! iLKۂlO7 geeqD Z5h MS(/ <,5\,;pymRsse߲T{ڝ7lA@(bBNxkjJ"k}6,p9 ksAYwpчGl녹Kx}-m h[.QfLݟ-Y+0lnN.3zV/:5|Kg9߰g% =# PU`Sp1zCs_G^o\f=3ԅf{|3WN̖`,QldyIr"qr*L-A33M@%p%ֹOG874C%[Zwn&h?+dW{UHRt un[(en-&IQf,d )dX `0S!( $zĤ,, #0 A8'#?6Ԃ4#_E i#`߸ qZ5CPcV˽{qn":(MpkZ{t:1S+]<Ǟ>^{xl&g#uвɠ1qg1ѷcn޵q.@? Gu'S`'P=<~4tx='&$ hRQu:`D {a~d(0 4 8d(fT" yC<& i_2/% B5s20CRJM*4()RPd0#J!0!`Ą ʑ$WP%R"J(_9P.H"+H4 R!]Z̍kMJhD5Z9!?AAAfXa HҾ`Msxz.4N&z"Iv& nC@wa5=mQ:,)h_I?iYpea*#ppH>cf:48O]ѐyĢӨ׍YLLȌoSFf#T4NQK F**Cu᳂fg!Օ%DREيQqڊ&reu(QRt䔜0E0qB!,Msx-(˚6eU]Kl2AQ *|T:@m4mh1P,J¬@dj*)or}Aځ?5cS*&[f442k<Ƿ }]S")}b!H8@eCH"K0dB:w !(TS015jKX̔$臎( \= sHX^)Advۆ@HَH3J) NbhnTLTI6jX-H YJb) f@(V*r>csA o#u=]"vXTCNjCx=)yCD$Ժ>?{4/*ywyf`}OY??JVc߀. )=!1р`=;*a1=bP* $J@*Ī ,HI0O*bIEތnqe0(ɪZ5E(LNDF,[Khs6 HsЕG=,@S(./M]2Tϫ!;~ui)R?H|z.s3?9ȰؼUGE'tkL?`;0J&_it"?州9. с4aR!j wvHO߭#Rc C3"z`kS68b4%q Mp3i}!$ FEUTiDfu*F6&m{E$ >}91OKCAPHVRathM6Kk@ !:Uf9SOLO '6)!Dzٖ\'Pw>mؤ$љft`*(s 71+!$q!0!`:Wpso)w 0٧͂_V:gQ6&9)%_A<Ïuۍa"52\ 4r2@b!a}xI $ '\C=FAIO!"؆9˩ @P5Pa'҇PQ@s``(4x՗X>Xo2bؓ+^U0u9yI/Em{C7緢7(Mg )}xoɄL38iS#̟wo^1>J{7UJZ[AKYh֖ff'a3$ ,,I@AL//feCkȡ((^EHrGS`H_#>R~TCMqngհvlQ- 4I~4`<ߎ?z[/Zb/H@( eD2(&yzenM?.A׀Q"{ֈ #ܶf?u%4 S q=G%1Bdti1Wv!7HD)/+ 9s?7ٯs^(~%؂QOvYu8sHZNPp+)v0addL Cy g} Uv .%(,BȐIBBnfU+]TUL B|Xxʊ FE]DUQdEPaYSuzyvy~swy9}]_|+~߻c򱷾6?˕6|{폎.~=>ԓ'v97;'sޯ:wE+z+ϼ3/s6l)_}qN^yW_{gs Mعێo\w^k9|H;cޣ/]s1ܹ\yʊO;F{pO:kqU~yͲ}hǯ|'?x >}g־wd~8ky{~.9g'o^ }^o>p-cۯ9~׏~5k''8b]<Yuio_⬏̽UxB- x+[~{k_^q^n^xәG>x>|Ooc_yKߩpm{h|U}[U>=>䫏g枿Yo/=}=?O? './36>eOW6z>윑rݟ'߳sVuXy￵x[νjp5K]}?5~;?=\r[sV^p^sq돿{&g 7>?9a?qrcG [|}Whý c~rGjO6tkx|l_ݿwGߐ vM?߽r[ګxT|k^~_ܶ]ﺤ%O<5sĵioKWoc}鯼uKX<9Gܺw߽wpc+y G.MG=v6'╫M{s͟; n^uu3&z~_ŗ=/;򱣏|Mni;XȆJ{~ݹዞ:w=7zơŇ^Q'N,Z6q_rĪ7lu/=vWn:餿z/۰g3q7rg3ʧw{soX[o/Zgedd؞#^UspM۴}|o~۶9;^}sۖOeog?+_{]>yԋٟ7KG<- ykp0lRV?(9EK+5d4jxsv Rmif3mXQdƵYs-m]cTX=٨q gǵ&ܓj3-d6&su[7 dyn1.F83:u,ٱmV ?_? yTߏKLMdy\+׾\`xb,$6vA?5]yݘfMYlՒi4:~wkZӷg؄gVǵa}x7=r3;kk4=5y33^qlLX޶~4v3m^;ݦh vYڀI3K}4ZXI1$W3KOv1m֭k7N:cYz{{X?'ȲR`՝g ڎ67o0*ZWN۶u~֎'m[l~v,/x!>fs~U7jhj8:L6'tk50P믟`sg@ ׶h(Xz±:M4|>aWkŚu`YԬTpd`Ԍu< })9AGFbRPc 纁fVH(-B#6AMlT_0t0ptYX-h ;BN 2mژNvui>7-?!18PK'73dy-ll0 *.e>dlhe))s0M-2-7-:Ϯ&Vsi45Q.>Zը"29f5W#M{!~(RİsZ93ZC5CC$8kzBp3d@aآ ؜~&j]gn3H*#2\3I;@RƦ@m[ȶ'k.3:K2D lDS&hW h +A@`CBʕd% ȫmU1ұnwk ,C(4JxL* wIBB"Ҁ̃9Z'5mGXv7@b[vY ! FH<\ji0G扈*bdq(C8ޅeUf^nj:s)}HXʷG=N{""`o q@{ˆ ʂƦF*T)ظv,9Yt@,_ȵ!I8}ʜPȢ!j0.e*1XѳmMWLҶ [n:eAuKU\ e;@8>j5 Hͫ!8I@qxv , KnC(~&u>lIl 1Y֑'":>Lu>;sTJF"\vt-U jvޠtl^I4'ayJ#Pp'^S,S4bR.*1`>;<>NZg Ӡɣ @TK($ mkx1Lߎ²wpٰ0&xm`6BYyJ?A![Gbi$P%3[ bNdtꉍðYhQ7 q2Q}#&Bx-&eҸn2ZZQ ί1dR h._+f5Py kЃi. ꃙ8y ’3hxZq E{4rd 2X( ^űԠYRlp ca8\3!!i]nSFk˟k:\%{)(KwiJy`Щjp%BƝ{O6Iaosހp$݆|osU7Rd"rsH+W )/hu\8^7IdD_ 2QC=묮QV<=`()+d4v >48=FgDv z#Q$dXgd^7l_Rg.((uGr=JQ0dR1XkXw!H:FuG8eCrQzUŴ`L G!&4iQX5`C rgXRZp#b#E5Qw"9dn (Q4dI9Р@YBà4GdC{riPÀB Z8@ʽSXX\v(^.dh9(H+' s8d[_ /yZZ{(h N#O͞#үW{( @Z ҈1~Rr=ua.B9xպo-#0x%|眈ٔ0 `3/-fad;aɊſX9>NC# Z 'EmX4AiK8<"# (Cc joڏw%TM VqF44};`"aVpn:E6   R0۸/t|@ /cWӢ< N^lqz;&>++c'tJȢ24ՒyFK=/I:f&:$x]2x"Y9, eh\[ꉔNK\@(B֕'u:iR0o.pm5qdnL•b_ 8.V (05H˴th х m*U6Q:*LS@t^]t(S3 n-j,RPV#f%S$*mUFxđ"&LVsf{s. :`5YJe NE1M5Qe4LVukJQe5Wwun!5ïr6 $Ͳ 31N,J$צżT o\Gy+v_cP09i)EE\suh1$Ѓl۷Ln!łΪ7 z.AT`V5c]2d^=p%2)ųq,_l'&r>d. ċXHrzĢ}x+U~@$Fʘ3kUˊ!V*D (UxhKp!Sm(NUSn U.nYBՈp6hS)Q4iVjJN1l&n>"mޱqc2M6֩H&F3 =W%Eh^%輺9*mwZTO`< B\,vW6QS12`ŰJ5QXM&Q +ۛge``=ۨgKθ@Ӭ , bIqϜ<ZC"{Ca;(.^5f!rV!\&/d"'Ӱ$Ўh^O]'?篃P7'ظL/2&#>5INYbZꄗ$SH[D_bQ"-ޔN=x<:6e_P%aa[ %X[DXH4WjIePAGnn:to_GmIVv xjI[BvfMĨ.Еv& ]{X|+f~֯ھekt݃(i T#hZI \o t6zJ'lC5]=5Vp+6 Rlgztp'S! `P]$@N0JI>dyIAwGWvȒ7 xD]33Nbfwt҄ƣ=Ӌ*XeknT>=Nk6b/uL eFD?t9^ЍGt2Ї/$$!VmpšQr{%7Z`fx։TpB7\$Bp].c@%_I%P 5V@=j:ؕ8 |L<0c+TJ+P'廚|$M_˲I -Z^ m"4 /G }Νo["_0mb$LƉBN"Ps}f{@azns^] uޛ'6DaU4@-(0d*`ۍ9wu}*$AƻQ

+ ?CjoR#&(Z۴Zx#}/?|wK\ W q!)bP'Il:tx2n3p "E|^W2 qk>iQaLpqߓ0YMfYF&dVqW~+5 O8)HyV3a$@f3mվe<U̓_.OH[+ WE(_WYR֑zTٺ5!w"Vr88];6CۮVX 0#'R ['S)^qV/!~$Ƅ*vnœGŅ]F;\GfVbɖtV/Rx'K-}\wI M$o3EO{,oD,4gxjnijUDxM5K%eeY؈ܩmL&4䋽]V)d2>TX^˪nQˀTᚥ"/(h?ie6: OKK8 TdЯzNP/lױ)2UЅR0AE=.)1ZLCU&1 HsPp^͙K]2a6+KJ/eWS(8*IdGc&Ky=ΖDа.XVp.x:Uxf詙|'zHĽJfSO|m?PNI+{u[Wy + sQh㖹;XJOTpGtʩN䐼a?vEb7m>L3ZRRhTKMq/AhϬ+M| 9Q3)Zr\"HAmPǟK"4~tDV4g=3p@%W謼OD(7էx,qE%M35J^Guuѯd>P4/ .FMzm r_>?N9מ=![=;[#2DfMxxv][v#*:^Rf$+]]~SQO@lYϕBeY\1.q<$!U/Eg1]ʴQ$0bcLwf]BVPX~}@3Ju;xNהZ>菋4fQJ$*.v4,7? ie@#:LT`l"YA~@}Yfq.H;Q  Mα YWXKoʑ3-ʏ `%)?l6~mK,?w,