ploop-1.12.2-58.g361886a> H HtxHFU  Զeg˰X Z<,O$LKC]G͘QM14c1463911a905deb1c76139d911a932b67171d6ؐ_ ާp G}FU  Զ{O <;z8O cEUU~y[y8kA=|>8R?Rd  'lp      Ty(89:GFOSGOpHOIOXOYO\O]O^PbP+dPePfPkPlPtPuQvQwQxQyQzRH{RXCploop1.12.258.g361886aploop toolsThis package contains tools to work with ploop devices and images.U_rhel5-32-build[GNU GPLApplications/Systemlinuxi3869큤U]U]U^U^U]5a5021a4760b56e87702ba39f7f18d7104259c52f2d97349c2d66a096585d2cb95e12645566b2812b454e12d60a427782b6a985a93b32676f2cb57094f0b2a640f40c78e061b4c73c4434bbec261879arootrootrootrootrootrootrootrootrootrootploop-1.12.2-58.g361886a.src.rpmploop@@@@@@@@@@@JJ@/bin/shlibc.so.6libc.so.6(GLIBC_2.0)libc.so.6(GLIBC_2.2)libc.so.6(GLIBC_2.3)libc.so.6(GLIBC_2.3.4)libc.so.6(GLIBC_2.4)libploop.so.1libpthread.so.0libpthread.so.0(GLIBC_2.0)libpthread.so.0(GLIBC_2.2)ploop-librpmlib(CompressedFileNames)rpmlib(PayloadFilesHavePrefix)rtld(GNU_HASH)1.12.2-58.g361886a3.0.4-14.0-14.4.2T`T\S8`S 1.12.2-1Kir Kolyshkin 1.12.1-1Kir Kolyshkin 1.12-1Kir Kolyshkin 1.11-1Kir Kolyshkin 1.10-1Kir Kolyshkin 1.9-1Kir Kolyshkin 1.8-1Kir Kolyshkin 1.7.1-1Kir Kolyshkin 1.7-1Kir Kolyshkin 1.6-1Kir Kolyshkin 1.5-1Kir Kolyshkin 1.4-1Kir Kolyshkin 1.3-1Kir Kolyshkin 1.2-1Kir Kolyshkin 1.1-1Kir Kolyshkin 1.0-1- Fixes: -- ploop balloon discard: fix wrt 042stab10x kernel (#3156) -- ploop_merge_snapshot_by_guid: fix offline merge with raw base image -- reread_part(): repeat ioctl if EBUSY (#3081) - Improvements: -- check_mount_restrictions(): check for all images -- ploop check dd.xml: lock dd -- ploop check dd.xml: skip check if ploop is used -- check_deltas(): read-only check for non-top deltas- Fixes: -- ploop copy send: fix a race that could result in image corruption -- resize: fix resize working on an older (pre 042stab092.1) kernel - Improvements: -- ploop mount: warn if host filesystem uses data=writeback (#3030) -- snapshot-switch: don't show ENOENT remove error -- ploop_is_large_disk_supported(): check ploop module first- New functionality: -- ploop copy: implement two-way protocol -- ploop copy send: implement async read/send -- ploop copy send: add profiling -- delete_snapshot(): handle snapshots with multiple refs -- tune_fs(): use EXT4_IOC_SET_RSV_BLOCKS if available -- Introduce ploop_get_max_size() -- Introduce ploop_copy_{send,receive}, obsoleting ploop_{send,receive} -- Introduce ploop_create_dd() -- ploop info: add -d to show ploop device -- ploop_check(): open image RO, reopen RW later -- check_and_repair_sparse(): reopen image rw if needed - Fixes: -- ploop copy: fix open_mount_point err handling -- ploop copy: improve fd checks -- ploop_store_diskdescriptor: fsync DiskDescriptor.xml upon writing -- ploop_resize_image(): handle get_mount_dir() error -- ploop_resize_image: auto-mount fs -- do_delete_snapshot: fix wrt temp snapshot uuid -- ploop_switch_snapshot_ex(): don't return 0 if guid_old is bad -- do_delete_snapshot: deny delete top delta in case parent snapshot is temp -- merge_temporary_snapshots: fix infinite loop -- ploop_switch_snapshot_ex: fixed case with PLOOP_SNAP_SKIP_TOPDELTA_CREATE -- ploop_delete_snapshot: fix for temp snapshot -- create_snapshot: clear stale top delta inuse flag -- e2fsck: make it quiet- New functionality and important changes: -- support for 4K sector size (including GPT conversion) -- ploop replace -- temp snapshots support (ploop tsnapshot, ploop_create_temporary_snapshot()) -- ploop copy: implement fdatasync before freeze (improves CT frozen time) -- New DiskDescriptor.xml read API (ploop_*_dd()) -- Obsolete *_diskdescriptor() calls -- Obsolete ploop_get_base_delta_uuid() -- ploop_log(): implement subsecond timestamps (with verbosity >= 4) -- add ploop_is_mounted() -- ploop snapshot-list: add snapshot mode (-s) -- ploop check dd.xml: add -u UUID option -- ploop mount: remove -u base feature -- ploop tool: add -v option to set verbosity - Fixes: -- skip max fs size check on snapshot delta creation -- ploop_resize_image: resize up to end of device -- ploop_delete_top_delta(): fix wrt top_guid -- ploop_read_diskdescriptor(): fix get_basedir() len argument -- check_and_repair_sparse: handle EOF properly (#2897) -- ploop_resize_image: add missing gpt size sync -- ploop snapshot-merge/delete: deny snapshot deleting if mounted (#2887) -- grow_lower_delta(): fix a memory leak -- ploop check: fix -b option parsing -- get_partition_device_name(): fix chmod argument -- fix alignment on GPT partition resize -- fix GPT partition alignment on ploop init - Improvements: -- ploop_resize_image: enhanced inflate balloon to max size logic -- tools: add {} to specified UUID if necessary -- check_and_repair_sparse(): log filefrag output -- print_sys_block_ploop(): speed up -- ploop check: try to repair non-top deltas if they can be opened r/w -- e2fsck: return fsck exit code to caller -- make_fs(): add -i to mkfs -- fsync_safe(): use SYSEXIT_FSYNC -- Fix uuid strings size, use define - Documentation: -- ploop snapshot-list: fix and update usage -- ploop copy: fix usage -- ploop(8): document snapshot-list -s option -- ploop(8): document ploop replace - Build system: -- Makefile.inc: fix dpkg-architecture handling (#2877) -- Makefile: add ability to add local rules -- gensym.sh: better usage and error diag -- gensym.sh: add run mode- New functionality: -- Added check for and repair of sparse images -- ploop check: long options support -- ploop check: add --raw, --repair-sparse -- ploop-check: add -b BLOCKSIZE argument -- ploop-check: accept DiskDescriptor.xml argument -- ploop umount -d: allow to specify partition device (#2788) -- mount.ploop: implement -v and -f options, as per mount(8) -- umount.ploop: add -n option (ignored) -- mount.ploop: add -s (ignored) and -* (reported as error) -- Added ploop info -s -- ploop init: use v2 format by default -- ploop init: create ext4 by default - Fixes: -- ploop_get_devs(): fix snprintf usage -- ploop_global_lock(): create lockdir if not exist (#2767) -- ploop_grow_delta_offline(): Fix uninitialized struct -- ploop_ioff_to_sec(): fix for v2 -- lib/ploop.h: include sys/syscall.h (Debian #728173) -- umount.ploop: fixed (#2788) -- get_image_param(): added online (from sysfs) and offline (from image) cases -- make_fs(): turn off periodic fs checks (#2769) -- ploop_store_diskdescriptor(): check rename() -- ploop_store_diskdescriptor(): don't return -1 -- resize_gpt_partition(): check fsync() -- ploop_balloon_change_size(): don't pass -1 to close() -- ploop_grow_image(): fix an error check -- Don't ignore chmod() failures -- print_output(): fix output -- make_fs(): fix max_online_resize type overflow -- do_umount(): fix diagnostic lsof verbose level -- plooptool_stat(): close file descriptors -- ploop convert -f: do not return SYSEXIT_PLOOPFMT -- ploop check: fix exit codes -- make_fs(): create ext4 fs with 128M journal - Improvements: -- Support RHEL5/e4fsutils (tune4fs, dumpe4fs) (#2812) -- do_lock(): open file in read/write mode (#2730) -- ploop_send: use ioctl_device for PLOOP_IOC_SYNC -- use access() not stat() where possible -- umount.ploop: improve mtab handling -- mount.ploop: use case in option parsing -- {mount,umount}.ploop: don't hardcore ploop path -- ploop-check.c: rename uppercased functions -- ploop snapshot-list usage: fit to 80 cols -- fsck: use fsck.ext4 not e2fsck (#2812) -- check_size(): limit max ploop size to 16T -- ploop_resize_image(): fail if umount failed -- print_output(): improve output -- ploop_mount(): fix/improve error message -- dumpe2fs(): don't hardcode path to dumpe2fs -- print_output(): use our own default PATH -- do_umount(): refactor and improve -- do_umount(): eliminate extra 'lsof' call on EBUSY -- do_umount(): don't call lsof again if not found -- print_output(): check return from pclose() -- print_output(): return exit code from command -- Fix some wrongly used exit codes -- Remove unused exit codes - Documentation: -- ploop(8): document check, balloon discard, info, list, copy commands -- ploop(8): describe exit codes -- ploop(8): better resize description -- ploop(8): fix ploop umount -d description -- ploop(8): fix ploop mount -d description -- ploop(8): improve convert description -- ploop(8): add missing OPTIONS section -- ploop(8): make IMAGE FORMATS a subheader -- ploop(8): other small fixes and improvements -- ploop usage: improve -- ploop usage: update ploop check synopsys -- ploop init: fix/improve usage -- ploop usage: fix mount/umount/resize - Build system: -- ploop.spec: require -lib of the same release -- ploop.spec: require lsof and findutils -- Makefile.inc: add -Wformat-security -- Makefile.inc: proper LIBDIR for Debian case -- Makefile.inc: add CPPFLAGS to CFLAGS -- Makefile.inc: prepend, not append, debug CFLAGS -- tools/Makefile: simplify SOURCES define -- setver.sh: introduce build id -- setver.sh: use getopt -- Remove stand-alone binaries: ploop-check, ploop-grow, ploop-merge, ploop-stat, ploop-copy -- Makefile: add Coverity generation logic- New functionality: -- libploop.so: implement SONAME and versioning -- Introduce ploop_get_devs() to get all mounted devices per dd.xml - Fixes: -- make_fs(): reserve max possible GDT block for online resize -- do_lock(): set FD_CLOEXEC explicitly on lock fd -- fix raw image creation (broken in ploop 1.8) -- return SYSEXIT_SYS on ploop_find_dev_by_uuid() failure -- ploop.spec: run ldconfig on install/uninstall - Improvements: -- Display mount data in error message on mount() failure -- dynload.h: pad the struct ploop_functions to 64 pointers -- gensym.sh: add code to check sizeof(struct ploop_function) -- etc/Makefile: ploop.conf should not be executable -- Makefile.inc: support Debian multiarch -- Makefile: add distclean target -- Makefile cleanups- New functionality: -- convert from/to v1/v2 ploop version format (ploop convert -v) -- ploop_mount_fs(): add option to run fsck -- ploop mount: add -F to run fsck for inner fs -- export ploop_is_large_disk_supported() -- add/export ploop_get_spec() -- ploop fsck: rename to ploop check - Fixes: -- resize_gpt_partition(): skip if there is no partition -- switch snapshot: read parameters from image we are to switch to -- ploop create: error out if DiskDescriptor.xml exists -- e2fsck(): properly check e2fsck binary exit code -- ploop grow: check size wrt format -- tools/Makefile: don't strip binaries on install -- ploop init: fix an error message - Improvements: -- create_image(): remove useless assignment -- number of log messages improved/fixed -- tools parse_size(): print error -- tools/ploop: allow T suffix for blockdev size -- ploop_grow_delta_offline(): use delta.version -- tune_fs(): drop absolute path to tune2fs - Documentation: -- ploop init usage: add -v VERSION -- ploop --help: rm -P from ploop mount syntax -- ploop(8): add -v for ploop init -- ploop(8): add ploop resize to SYNOPSYS -- ploop(8): add ploop convert -- ploop(8): add -F for ploop mount- Fixes: -- default image format is V1, unless specified explicitly -- tmpfiles.d file added for /var/lock/ploop (#2493) -- fixed creating strange directories under ./ (#2623)- New functionality: -- Large ploop image format support --- Now image size limit is 64 TB (was 2TB) --- Kernel >= 042stab078 is required -- Move ploop_grow* functions from tools to lib -- ploop grow: add DiskDescriptor.xml support -- ploop init, ploop_create_image(): add FS blocksize parameter - Improvements: -- make_fs(): create ext4fs with lazy_itable_init --- 3x smaller size and 3x faster creation time for 20GB image -- lib/ploop.h: "unexport" some internal functions -- Use /proc/self/mountinfo to get mount point by device -- More clear errors on parsing DiskDescriptor.xml -- print_output(): generalize print_lsof(), improve -- add_delta(): print more diags if EBUSY -- extend_delta_array(): print errors, return SYSEXIT_* -- run_prg(): print error if execvp() failed -- lib/balloon.c: print file name in an error message -- Introduce and use p_memalign(), fix errno handling -- Improvements and fixes to ploop_grow_*() to be used from library -- ploop_read_disk_descr(): set *di to NULL in case of error -- ploop_find_dev(): always assume ploop cookie is supported -- resize_fs(): try harder to find resize2fs binary -- Makefile.inc: ability to add CFLAGS - Fixes: -- lib/lock.c: create_file(): make sure dir exists (#2493, #2597) -- lib/fsutils.c: use ploop_execvp, drop absolute paths to binaries (#2595) -- ploop_log(): fix loglevel checking for file logging -- ploop_snapshot_switch_param: guids are const -- Recreate ploopXpY devices on ploop mount -- ploop_find_dev(): treat ENODEV as ENOENT on /sys reads -- use basename() to strip device from path -- ploop list: check for extra arguments -- ploop balloon: fix -f option processing -- Fixed lots of memory leaks, mostly on error paths -- open_delta(): simplify error handling -- Fixes for other issues big and small, reported by Coverity- New functionality: - * offline image shrink support - * tools: added snapshot-list functionality - * extend switch snapshot functionality: ploop_switch_snapshot_ex() - * ploop.spec: disable udev iosched config for ploop devices - * ploop list: added functionality to list mount points - Bug fixes: - * ploop_mount_fs(): use mount_data for first mount - * ploop_mount(): do not allow to use ploop on fs w/o extents - * ploop_{create,resize}_image(): fixed size checks and rounding - * ploop_create_image(): fix memory leak on error path - * ploop_get_info(): fix reported disk size after switching snapshot - * ploop_get_info(): fix when ploop device is not mounted - * ploop_{umount,resize}_image() and many others: do not return -1 - Improvements: - * much faster resize when using resize2fs with EXT4_IOC_RESIZE_FS support - * ploop discard: add cancellation support - * ploop_resize_image(): use real blocksize - * parse_xml(): deny processing DiskDescriptor.xml with several - * do not auto-generate dynload.h, instead check if it's uptodate - * create_image(): display error message for incorrect parameters case - * introduce/use SYSEXIT_DEV_NOT_MOUNTED and SYSEXIT_FSCK errors - * alloc_diskdescriptor(): log error if calloc() fails - * ploop.spec: require util-linux, e2fsprogs etc. - * ploop.spec: require libs of the proper arch- NOTE: this version requires vzkernel >= 2.6.32-042stab061.1 - New functionality: - * switch from old /dev/ploop/ symlink-based to new kernel cookie registration - * snapshots: switch to schema with constant top delta uuid - * use /proc/vz/ploop_minor based interface to get free minor - * if ploop is in maintenance state, try to complete it before doing snapshot/resize/merge/mount/umount/copy operation - * ploop mount: use in-kernel I/O module autodetection - * ploop balloon discard: new iterative compacting support - * ploop balloon discard: implement --stat - * ploop balloon discard: implement --automount - * ploop balloon discard: cancellation support - * ploop balloon: allow DiskDescriptor.xml argument - * ploop umount: implement -c component_name - * ploop list: implement - * /sbin/mount.ploop: do load ploop modules - Bug fixes: - * do not crash on empty DiskDescriptor.xml (libxml2 workaround) - * ploop convert: fix converting from expanded to raw - * ploop copy: fixed check for opened fd - * ploop copy: do not leak opened fds - * ploop create: fix gpt partition creation to be 4096 aligned - * ploop create, resize: round up size to be cluster aligned - * tools: few exit code fixes - * multiple usage, log and error message fixes - Improvements: - * ploop mount: check that mount point is a directory - * ploop umount: reduce retry count from 60 to 6 - * ploop umount: print lsof output in case of failed umount - * ploop create: for prealloc image, use ftruncate if fallocate not supported - * ploop create, resize: add check for correct block device size - * scripts: de-bash-ify - * assorted code refactoring, cleanups and nitpicks - Library API changes: - * add ploop_resolve_functions() to aid in dynamic library loading - * introduce optimized ploop_get_info_by_descr(), remove ploop_get_info() - * replace ploop_{alloc,read}_diskdescriptor() with ploop_read_disk_descr() - * remove ploop_getdevice()- ploop copy: fix data loss during migration (#2287) - ploop(8): fixed according to doc team review - ploop mount: tell about unsupported underlying fs - ploop-copy: improve usage - ploop-copy -s: added mode to copy to local file - tools/ploop.c: do not return -1 from main() - tools/ploop.c: fix/unify working with diskdescriptor- New functionality - ploop copy is working now - added pcopy's send_process() and receive_process() to lib - ploop mount: added -c option - ploop(8): added (still incomplete) - ploop balloon discard: add --to-free and --min-block - add Preallocated item to DiskDescriptor.xml - add add ploop_get_mnt_by_dev() to lib - Bug fixes - fixed offline snapshot creation - fixed race between register/unregister_ploop_dev() - create image: if fallocate is not supported, fail - ploop init, ploop mount: fix -b option value validation - ploop mount: fix usage, -d is optional - ploop info: fix usage, DiskDescriptor.xml is required - ploop.spec: make main package require -lib of the same version - fixed a few ioctl-related error messages - ploop_create_snapshot(): check for number of snapshots limit (127) - ploop.spec: do not own _libdir - fix SYSEXIT_PARAM value - tools/ploop.c: do not use ploop_err() - tools: fixed/improved usage for many commands - tools: do not forget to print newlines - make install: use /usr/lib64 LIBDIR for x86_64 - ploop_create_image(): free disk descriptor if fstype is NULL - create_balloon_file(): fix file name in error message - create_balloon_file(): umount and remove temp mnt point - create_balloon_file(): fix error message and return code - parse_xml(): add Blocksize validation - Improvements and cleanups - ploop lib: add visibility=hidden for internal functions - tools: use parse_size() and is_xml_name() where possible - remove merge_top_only param of get_delta_info() - ploop balloon: make it accept either -m or -d or both - ploop convert: change -t to -f - tools: unify parsing -f option - various code and headers cleanups - setver.sh: add -v, -b, -i- Added ploop_get_dev() function - Added ploop_set_component_name() function - Fix: do not clear in-use flag in ploop_fsck() - ploop-fsck: add -d flag to forcefully drop "in use" image flag - Fixed handling blocksize for raw images - Added user_xattr,acl to default mount options - ploop_mount(): added ability to pass MS_NOATIME flag - ploop-balloon: add discard command to compact ploop image - ploop_get_info(): return old info in case statfs() failed - expanded2preallocated(): if fallocate not supported, use ftruncate - ploop_resize_image(): Check is it possible to fallocate before inflating balloon file - Fixed merging all snapshots - Some fixes in ploop tool usage - Some log message fixes - Add function, source file and line number to error messages if DEBUG is set - Build system fixes/improvements- support for variable block size - default block size changed from 256K to 1M - ploop_set_log_file(): make NULL a valid argument - logger: introduce, use and expose PLOOP_LOG_NOCONSOLE - ploop_getdevice(): expose - ploop_store_diskdescriptor(): fix for a case when image is in root dir - Fixed expanded to preallocated conversion - Remove some unused functions and non-existent function prototypes - Introduce and use SYSEXIT_MKNOD error code - Changed image -> device mapping schema - Use strcasecmp for guid comparison - Made ploop_merge_param.guid field const - tools/ploop: remove -b option - tools/ploop: remove unused and untested replace & add commands - Log/error message fixes, improvements, and unification - Makefiles: fixes, improvements- initial versionrhel5-32-build 142663971199999@W@X1.12.2-58.g361886amount.ploopumount.ploopploopploop-balloonploop.8.gz/sbin//usr/sbin//usr/share/man/man8/-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tablescpiogzip9i386i386-redhat-linux-gnuBourne shell script text executableELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), strippeddirectory  RRRRRRRRRRR R RRRRRRRR R\vvW.ibsystem_u:object_r:sbin_t:s0system_u:object_r:sbin_t:s0system_u:object_r:sbin_t:s0system_u:object_r:sbin_t:s0system_u:object_r:man_t:s0?WmOHW * EҊ+ТRhI,vNRٵq NU;;̬}6]w|tw{ >.m^Uoa7dg4L67*'֦ %CX9 23@fAts۫Bmc!%]A<6QƓLxwMlY{ٱyw̥'4KDk~m}~gj]u/U{yV-.O.wl^>c7x5 mi3&a2n^} \+qOƐOM- 飿g<m}:{ut:=zONO;IV- mWU FpWɥ s J{x UVaDrj1؎QY@mG)rlu+eB>Z *c;M;'xEHj$ 2f,\|\8۰Q'ha5ƨ#$ݱ=(O㉱)^AF? ,ggdD@A )UJx<+26"djmnUWt̖lދx n""7!k_!k~L-Wҧ|MEę+((%.٣N (sY~nvy%%q!4WBCH^M5y0g(, Q]uP.x ]Kx ykP tEW$eMOXA c j;ë6ގ`0(Q) cj>U.A}`N,n#`yc8- B7&œy` }2-ėP ]OhG !i؂v8OrP@*lĠJ󙿤rk }0 iV' ]'ʚ7<$f *Fڟǒk-o@i_I+O16Ow ~C%Qf~Hj:UWqyA"\W/: t.&ma&VYvGdSZj7+'Zn|MoKo7[}M'z/?lzWǃa,?at1>cyɨĦ={?6yMm,X7z3zԋ'fzހY8g<SvyMzdӺ-N/Mx4iL[sh+}CZ^5&L< zh||xH9Ch㺍˪Zm(Oam5O(Rc ]Ϟ̹~Jq-,, 3Ї>n 0f0R@M84| nb fR,@ M@, CJ!g`a~ V` @1T HEr |a6 4h7+B xZ2e:qVT 0@<3_I++3 @ KN X b!Y& | +VVĉ@ i@ę@ą@\ %@\PwVq%/~VёB;{?ҺY!UPݏ'tyd}lu˱ dĔb Ef0$a{W{t%`$L4ė 20b$hRC#E%|]Ky˽z?6#6vrbe>YӒҶzo{#+ v6uxfFj[k6xZo̞wW>p=3^ɟi0՘̍!o` {'t6??)s!-ojb[# ~IT0d ~ {l8c/F{cW O"ߛ 0s> /]&Jo@|?}}5;_|ce6%$x yz6¿ۆބs\S@η˨}ﵟ3#}hVT7up-ND鼈,W*]ÚbgϷɫgOjzRG)W)M?\T= E\9ql$>2C m^>*>󡿉x9*طտ5= 70 󳔀}S6*@=D!U`}.qMzϞOQ頠gR?K'ۅ|[3-ۣuJ,mxxLfM%³-#~*_X+QBJ+:/ 3M9FK>2'n%挂oՁ3e ~@IOpL_6tI0@+ *V&hNrl3gHRþ4s9772~teW=>ɵJ7@q)lOvӺ.!'D@̥"^.-^m$Ʃ(ȱJj[<-N;E+#S48oz*Jo”MPz'A{:w<<2ϣZlSqd#݂FGF'hCm[F608YK3?$LtG{r .P*ǭ.0{d&Rj&KKbgHaٕ]9l"gX C7Ⓚ7ppIӋB2z~k(A@+~_z QQf[G'(D+/+@Lڂ~p$u`=({=CR/e7H$({hۀG#Wj (U 3^(P6)g<(]"ŜX/JUMtPJ?PoRJZ|Nl_;&?p(.?`[&Li,DHm ŸJ?2'+>:UmӫTr*-? ϒK |q"GQrDFJH9O#FrDn#Gd]50 ^MH Gi|T<:DD}:JL}zzzz:Fd=Ah=Il}z:Ax=K|O4rwrIS?eɯO>OS?_I+cȌ |RW#SQrdL]"GԵȠToo$GFՍuȬ"rdX ^ML5x92Wȼ[#OO̬OP?92~rdj=Bzɑ## 'GFד/</hhȷOexCOWz/gooGξ6a[FǷlZ}4i ?o_5m۷ߖo3?]cOnG}mn# _.γͬo4nƏ̼;W"6f7D- h>N~#4bp;͕ğ#JpN)ҎQH/ӑY{`Ǒsy%>*l8:u)yaj&fChھ?0 "c]V~|VT:=ݟ\jFl7i I4 <I"i43ȝ30C"ZlVDHd3L`ZeΌyx~CB,#iRKK&dn U/'W"Te.rxޜiG 6w~4//LW#%0xɁ1$w a~z|#0E2eiĜ~}-#-uиƚD;+]oyFߏ'foDk wm}oA5G.X2AٝMfӨk?rxiE}8d}pbOܺCttX]hUPMdbMHƟXTTbyT">Hՙń./R$J$RVwHj#$(̸kwӴ݅YwJ_ssMl!V Uy#oiš#Aˍeܒ_i[HֶTѱ}yv }c^SƑ٨JBI^)qتfXw=(RtyT]} X2LL9S΁[OQg3g2jjgq>n Q8uJ!0%)Ţ_>/{׋8 յ!|U^rnUމ뷨&m\+ºExo,E7i+jIUHb01?rZBrlU=g!㄁&9 \0jlq f͟D=F ĸ CX% d&vrT\QZ2"UA a$*]=^w{ %27M|gB!XʁxLԈ]\O8lݍWq({K q&S\Qk緺݃7N\r{:P_~yohv EqW,]wzOr(i+Si坆/C8;wJwK$M-;Bt| _ܾ;oعbhl'txǓS1$0!=Kڃ9n%?Tqݱr_^$` VrEtt65i+ _g^źzEZ=!#I2 3!?n]\UVE::Q z KRG ^Ö́RN'e]H8!(Gcy$b#\@ 4h| SirPBƊ_UKR#4q9zSBzc&ӸZQ+bW&lZ1hAe IeOrg#6Q ;4`UA!9xJ\N\!iL9$E`*i0Ag٘nvfvkWH$i]|Ƶ ] F8WZ5o~W[Zx%4ќu#ߍH"9Zᕿ!+Xqyze{&ѽaґfT[{gL i~Qn77xNsF>8h:6I?3F@4ZG) AD<^wiNwyv-K D9edVMw&W^.jO+Dj]b:Y|w:*q/쿪kfo9)M݂߳aܿ$ sxfnEAvϓWO;/v-H3=>c7:,K;:Yb+8SK ";VrRQ]2Eӳ\Qya5%>׾bIs]MwO~ݑZ#c;_kd}Oqm׼`Q }L{xX|)^R@Xu SHj [hnI$He!V6 -BXwFyl+tJ_!7 ˱>W1e14hOao_>`5z<#JY\?~uv49hS6i88î i=6I2lpd[{會ה _f- lmwP4ZV?ߓTv/ ]j)(vX *MƀSθMNƔoS7c GY:7'c /')ot"fӜ s^V@_m}0 f4p WB>x1OoSc3n Q`Ën1ȉ { eX "0h_ΉZqȩn0HQ8x"R,( Ϙ=YAQ'[ ŷew(Q$n__EB}wf2 !XT.]BpeXKʇvo>2!0 M: z凤\:t 2a21ђ:<X F~շJS;i>%y,j^L $0F b7$M wqna%x|KxΝϬQ>FYoFTJc_Lgwb;=4ekk̔Ӝww>wy:; LYyXV@%ڼ{Pjm^B [6%)X ~htJpr1$19%(%q ,t4XV2hqLaϞHq#`\_f0w̖(}PS4K o Ŷeĥ6u]AQx7Oᡓx̞ӤEy$<1 2!MѨ/@3;)pZWx~#unvJD_7rlO3m tx$3wq#k@` T%3eq~G@v3duG B ;c再  وYh,X1#rt]GOI8䎨pUhPm=o*짞{Aʨcᠲkgwo0~j73»Oy)*ֲa;MF/1h{DIuMT%N%yߧާtm3>q Nu=h,op7bלɡ-^T y\,fO&AqHP_n8^+/1R*Z@?0t6W!Vax19A3)G>k8(ιG4=ۖ yo{1\ d&Aq7+wq(>l\`6ؖANOd+*Qs'.G89ť rB|o.Wݮ/g3qg+3Y/תcu?wȐTD d0H ay %\+j@ .,=G`M'JԄr1ôF$#V5&tȺ1X`-p8[0+NV ?⣀?k%aW> /l G^G!?cNJ`YYBZKH"+&.Ou^IL1cF.<}iK'5ƴ`qF w2)Yi\w^d\$?D==?<ɼ-c1YH_?t텓vGa o n?cŕϩU# rIQzVBo(W8urǀ7T?[zӖ$*~ F+|/vR.nb'z8@3tFq7]vOX!|s{‹$ԃ1G9g1RB*fMjiU6-YOkRUE6Xjӆ9mpU@Aێ/ד|b-0Lm(ܿK:Z9S}xrڰD}Er5DfY֞Q鬎Nuw8d} j#*cG8X^&C(I0! @:{= B`iG#\nw,GqQ-5nWQ^(uQ}oY'}V-*RG+LwswNZw6)wSR¶ v66ðh<C),l#i|,IiƆևc8۟% yyYcCmK4DkfId?|FvKkgtз۷:P#Y %?+gqh2eN71Oe&mc5}l8͒s̘">8ܘJW1vj.䐮i^dDR677e%`-N⼞}0JywޣwXعJr30QD5G: N0 ̼ȡn6a1d%9?ꄽ#Z}ِ.MB7HIQpcտc[D?hRS=Jmbr/1^Ѥ6Ù"Wϒ1 \zܲ 0D%9`ӠMaT8*wEm>OӾ9 iT΂ 1"'@I梏ڨw۷j/1}?]! c)x,̏9ڋ6$UKn OsS >*Q] LV'`ֶ 7\y&Y?D'mZF#6Eui~SуϩC;#jG=2!(4'3Gc'z- E.4AͪevZ-3q{kYEv"Kmx_K5 'sx td| :]csҷ["g(O3 O%B"`xZi#<x;Owሒo"lcFr \k!%)AK"²u/s MZEy]u)ա6~yգoOp\(eT5R6Q]%+4oG}TIWWDJ)W({Ԣ  A+#] UWZ -ʙk?^hٮgrJ6袂mMP2ɥXgs27)tC`q;vnw7JfeSh,\+n-0A5]l[lo2lфS24_If`tp{YF匃DS%"Ӊmx1=ԥ #eXRY<+D@*G77_3\ ݫPs`&>KJ,bs,4w"!E),5Wܰ:h[ ' ÒEX(u囁 i&Agy̢VVXx,ʺMGVB()e1A>tac17IXaAROXM(ޡ'N<+}yo< vJ-VCE]s__'i&Wlw)\Q3!&{F= ԫصOn ҋrșUiR(zó6@F Xv谣*QsR}4z 6~1+? 1Iys= >d܌Ojn&QlV#&؞ݪB2GjMZ)߅[\޹m!mZ!N>F `LQ3<*fCq9RǢ> +q `SĒ4nv452[Hښ W6]F8'iӄ9D)|MSwQȅ)H<;쪂|[NUW}ى险ꪮM}fn9Rb*2{Ab79o@n&}=vס ON*}C_-J8!;>( e[oQG<i@}e?WB_=L;O_ /:WÌع8s"F|箬y)p"<8kQɏX͑2H[X6~"5G5K(7ʵMްxtu>$H4,7F=<t,nYl\wgbH>蚖 I9ћoi3*Y;F܍6b?p,nl&qLILOkV$ 6`iga!K< ǀfPMISuKh[;!H! ׻[zl,qBE9L4u'D"J-BsYՕ0fJ+ZRcJe[ __˅lŎ"B&ҷJ9*#qS@C eeY .U *T7(HEoe,ieǁ?6b)2Y'UIJ=jdԁ';wxq!n+G:/-e/./*<Hw "p}v%,!*"c`h" ǩ*e5Z\LR FÆ{ɱ}#)Xt~担Ri\ۆ}^^/߿)oÜꈅ87` zis#u%EEO5G9̇ꁚA嵥\2=aY"^ǶAzq:rVazһh6hy6!zƵ)dZoko qt&cbٟ?:K]f(\`a;6zR-,oc) 6D^L/#Ɋ3@&V,-˅/E>oKjnѠBN 5XY*Ϡ7}o4uWnGDbtCLw8U]*E6I=KKabx~&)>Jɟ6HuDH;j@:.҅;#uնLtka'M\"ALCl@%j2s{CJ`.~ÛC+BRD'= o꫃̦^JنP߬Bbj4> L _x1{9vq~zmhv}jFRX]Z,+c=COR&uQm:d7={ 't0  ACӊ]ҍ 0Zxst^?50BxADx1Da'=YiO0Ɇ x3hHzU 鞥9dCW"H&`{ZDYD 0ԫ9r '}k5;dλ1Or2ݛx\XJ>%0Ob5YlNTxN{zAzy977KanqHZЙ+ρmp3ذC%/]n@ _q,Eq4)# "R"rؽi{vfؖїK+:\.Fy6ebkI^3m8^~y:A[ItZPR@B'CCduDÙg `v,$r7X-Gxx$n7%یyaCXI[nh$E `F߽o7&UE-JǦm(9U=UMUqVpA))"(J]˞?;wE7%ʃq3f9&pw&P [?PDbB㫂.p,|BS g {aA.°hMP[׶ ]VؑU8210ؤZ1㉤Kc_>ks KC~*:`8c3_À&K@1Ղ+ ^c4S2`aŽ:Y8|w܃p?Wĭ-Fʶ@̐whME˞ `E SEih+>:-)9%DT,I7R<4-91ܸ5(?Jxfxj*TmH~BN"h4R9tY]_lErsmiM4^DsWbbNbZ4BmMt X-ɕ+b&EԘAhx>M7{wG /v7}xc)]Kt*-\&B#%3$WlaDV6䀅F k!] Txh6Drp9G)`pe2s*`n0Ϭ[Jl:o݁|(UJ@66򙤩B, I'Rg)u6]bҍj1VZY`u)s*ܢ /'T) GtLU JedәINRg)ZlFC~YݕTI%Cjz$sR<^dI4,qr9+"8UT: 'Wƽb^i6{#"EbwaVOl_M3dV&vw\[za!ui\K7_e QvJޅ(G`ϣ=bCۼ\Zk"rkK{;ymʝD=W;D]JUU߁6nf 0lD2 ]Oga_g+A"tXkO %',`l`֔q[j.ȦeaCmޚ22/A⏵e.Brk}YSo}W#^?ϵ5S"~rs ?hQkiRqR j]SBm/%B\BRN.%&Ad:Ku Y,ݽpW[zɻ޽.wj$.ݓ~?q/vrQ~r;_7&XԍAR)cQ>*~Rަ>} }G(hZ]׍yA.,Ouӽ{_n4L8c:*s|7-Yiir7LKk6-Y|!FF~Y[~C"g9y՟oa,\uvv KwLY mۤK P0_y.q8(*j&Z NB!q8(*j&Z PFʨh:. 1؈ATQC 4BGB 6pPFUPGMAtPFʨhW= NS?x?'%3i< |y(/sen^~+e0OM+?ޒy3[GڤQX׼Vɦ槌w}'n+E72Tq9Cq3Uc/vSrU.Y*g-5we3r37Jyܿ*dnP\bȝa")9Cyg8?.zC'gi+ރ߷OT#=3a$~F{y9}q4)lx$10'?7a=vD v0@1򌎏Kۇc77=w7e_bo] t iEJ@[,J#"Т U:0$FIҚZ@~)?ȱ( ,ԈT'H5 !}wfg#͛wξ[IRS獱NR;(A^8sm8T wL\]A}U|o .p) z8c8hIoLu5W?b $8%6܊[<+^##e6k;V ghA땾6p O6;n褛}}wBn?5~07 W<[LÎouG`zSvcWOwr'=@23'̌%2ޘLfk5nVyy0 -IY I*bci,4sv+m Cs=`os5m]З>{F]GOīv;@m^W^GuԆiM$6ۦ}ψO"VtF5e'n=oDN0  }OӬX]֖ߗ7p橾eoӸb7D@֟yI\-Yh_J| zqd+YN>}z {Lʚ>_9䙓GO}w^vЙ۶}9tfݗZy4R!4N|i{Mr|DIA7XOjiׅΒu?# [' }Lr)B~BOz(P' zWbj\;K]rwЫb=_%MB/ׂU"*t2苮\ zB/UmT-N={ϩjݱn}?+jo-'Vڹ?֐s!Y[T(F=O\_V=7kz:>5O3lS>b;|Hw!m<LkzNqx^=( |蓤??ߠLI2}/{A:h^6Y_zKZrET22uբ졫Y jzFF;IڪwVc+70߶ l JKBgn ,r2t:K:;,$Ʀ:s1RUĽL3-Yg>,sOed24]0( QFa>:"'3@Fr3sQpązdW.hu4jh3ucblTioPe;Adm->;;\vӎk>wSu= }B1VwlwD(kZ?4a @I`Pdʁ^By݇(IQr wlh6 T?dkȘj,FH"4f'9m:A& & иu!oI V1 @g0fNb1p4,c`@xa!zk",eՑDX(3 /J?Ӱ:iXXg5xLF5iXg7<~ayixQg`3 0yL3ixgbvעϦTICOXi`}Z@.=v{:=6P"n:\c lX x!VKT̊l5!]PS4? \j^,O~ƷAELA/Fgbtu~~Mum͂:7%m]S.-Nyo ~j;~`8'?9~S[׆'[O b@\%!oj`㿠r`K9y8Gqwl@5M`b)?4 ov6dQ}HX J-  Aƈh?쵿Re(O G[͜UWDI-&n7xHƍ= rN5\t]%]ϧה4КhZ٪r4e!Q^bIK85M.pPM.x;=dUn 4nU4/|K}n(?1JjhړGTkVx!l,J,F6J}w7ȳm4Mʧ6[YGn+VSacɈХ63[ԦQqfaj=[WEz[M"B½(sD"Hj}EDҋ\d8V],s *j3'S bx`2ȢC-G-4>>o|ġ1WE2jJa:;, w!OKƧHܽx#1\br8ҿYZVuR6i,rZȲjkE¾upfH\vx{)!*G9ϋWE\/)'#C,x6#IRl]k.F"̴1Qw2OV*쩄 k\* rm۷ea5PUN9EUj7tK9>mw(wE7cvL^BrjN/өO tթO޹<3EAm-J9{-Vxi2:Qi2%r8n x_qo ?/_Rc?m Q Mlt(~ j8EHk8.ʧ 7/ gYc=[va=7_mpbcA=;|~jafMvճɬ~Jz޳ A#PZR:P *PA s/(-A)hCEB ՠԙsuɩ7ɷk~84>V~3= i4[yX2xP4JZi-A-j%1X[˴&R5R}kdp cmmVmyϙ9'}=s0{<`L3eeGr̞9㬜)$)K<}gLs{3>M쬝)Ӗ *(kgʜc2g;S5i?Y =S9piIY;ӯ~r3e.Cv̅> Ljg;S/Q3eC`Le'9su̜?p]꬝)RUEUԙLTn̙BTLt D(\}R z\z=V@;N,ۈ;UaښҩJ[vN/k=A[9VN7xoiAuw i> UДQKi Xj"[eil a.K-iaboa"-9"HѼ|k܂,1,Q5]PpN%Ͻ20zop}zF ZR-@K^9鰔^"cȆ][=oYʥԺ~yt/:ra=FJMӖf?׷X`lҶWc޸<'{cOkbL"1qJie H]ܽ_#Rl:cl2^fLO2rvJ[xm_wf$SQ98eG<QM uM2C!z>cK% aЩM#䧢b0IRMwTP$r+Jb:.}rQ͗86tNiⳖ0;.Id囬‘gӸ2b6a׼>ڜw/ю1N.1Θ-h]t<#QA #k, _5G aW߳:P^zRձu=(ڔճs3[kb<{ y J碎jH=%\RVo撑[ˣ*HH.PKƿZ9W'%t R}yn)a찜?֍ ȯ_(-Qy#2|FyqEcKKxo)IEb~7k:2y+#In緢 94}k'jeKjDJݪٝŗL6nk,/B $d|3g5oQV؇ RZd(!%:)2y&u,aN펚?ר[B f&K`vS]jF64d`RU\7wlyayaxz_P2 `ꍡoj lvE8I ܖU 7s2\ZB#M{ޢBul( c83EtaAH7u"]u`@'٘oQ 4Deo|;]E ? <%Ԗ]5r]\|Nw-d2Gda?:p9xVwAwμ{`^("Kstn欶\ޑIMBH &HNDvdAZ3++Eή_^͝rqW6-5j}^ dm!pa<,qVMdڣ rbU;9w_v[ߤYr*aO, K@z]]_ݹ,G4@X0c,'4Nڜ$-Q !)73Yd(8@`d#/ӢcК9<dtD:Aw: ) LA_@֠ I a eAEQ8BĞ X)  61k`RA"i?kR8nDV UwOv@6Ƃ*;7 olwnN ?~ 3; &xZ`Ep"rBKO¹3978:9?!?$\ݚz !OIp=d@}d-HEG\A&R F6A Xм w4f_k)1x"^[LuYk#تKy'T ?/01w%!/pEQl>gCYgGj"iJѹoݞGFYNtGV{K7f4j<[QԈŻZ,e mMg1q *-3>*Q  GP3dZ2"uh}''n$}V Ip}#ᄮȃ`軀$ CkrPApd(9t^GIddX-3;Ϙjp.x̪ ^'Vy7#z.z9('~ ]]H],@ɀGPS 0?ci]c,1S;r,Mf rr e.AuRbCd pZu/:BasؑqlA׎dҶ ^qΊxU܎XU=.Bc!rd[Rh%Km"i1*&)1Vcp%FGB!E`X2KOZpb8#,mZ``zs@9Us +٢G.Zdmo*a%" H8 sh b8Lri8;:`I`$\ f!4<>32%mIUrsU=;*rVqo^TJG,Ծt0kD֐YUfhNG7@%lQA5ewGf 7ſ.6SEʣ >ZIߞ\:΀u:$VqB+1 "*: l(ZzKHvkJ;jP_:?AAkd7qM<@i[W淀YnvB7^Lz4CNk$}"'ԡ$vO14vr:_bRrqhQZZ8,dۼhư:H'ɦ)0؀ \%uki=F4[bOb_͂{@~/S"&3^yI@Pg:yuBLWo+PZYҀ(j"M\jmڤa)+L5N @ \֎5Z,T%@Kh H\>_/( /pJzevMAiR#ty|SHƾF7[*#69 #KJTeh1 +©}ER*ngna{R}D, HQ)~ۺ 2T?<"_aJEq1m2>`.k+LOQ܅QQ?کwů5w)ZؕZnO'aL1 ]$jNT|k^LA'[d\w"6ӐCWriUr[ci9 tD> ."zVv.yz؝SMǛ+.2+ҀTJ8usc҆PA3Qı3t ĶR;ɬ֍ *ߟU$*CPHX"?J+CPSjØlTs xM.(SQ8ekV}=t9XZr<g*3xܠ-Ф.r0#s”j7:<ʋb>[2:y#`8BwDӅw%Q1+RQ 5!G.ug]+djC5g\;Om +e;Vqsᄠ_LOmU}̠cɽ+@jr~{ZRd8m#J}F7^?_8`RO\hXw­L)v뮽Ex=~Ětp/FOXMN&@R=61#cLYq|.,Fb*2?"F}*V(<$mC0([<t)pC0,k`  8weNѵ겭*#`m[фS kYO [C0g*y;^@ɷ|I^ _a7!H@_co)ejHc>\ |/7\C͞aLVnASeij#1]g&2>.''c[=ϥ;7c卟buĴf5X3+􌢄oV7 k%ߝq|nxgy{'uZ2Z[םI0ZlNѪ5r >LqLd7= DKD8SsL(H5R8i ⯼%7o?;u0BnbN5຤/JV>l+L5JikFl [/m6ĚBKWfr@X|1P]MӦD-h1u/yre.}W4Ax$|$[{IReefyEJPyn*5e %{9`كӞVT})'r)pD q~^% Է,!Σ%i]"Ӄ0В2>Cڠ`Ҷzb8tcKc?MAjd,]ޭIOQ3ɧFI) LI^r oa>h|j.Js ļ$T`~O $*IkBjƑ%7ug>$NFiKaL`o 5:VE/=]-Nlb=dE[j( 套<t*<(YDrqY,YO@2JT}*:F$wtQl f6$sH\9uq&vR'f6@Հ!Ģ[gfniRC(t\Sa ƁVh 3@_RŻU5#i5U2Y%kg}uPZkWw2f֙Ѹ|'p3-/# \['c<}Þ]!kOQU`q|Z)PbP}2r#a륒SNׂ*UTi.|g驨},Ms@-kk$ڃ*Hž{+X,xEuswOMS:ghdLcl{gVA,UfUqy;rVXS :=t{s=Kʵc+@G3Lzk½`҈wK QJ(q =W4&qp8YZ)r2owHíc5q.*ꁻ}U=8_1Pw Y]V]$r^g|^#2+g܏C)'y|OjKĔ87RYZl5F<ʥ%Sjy[Ė=*^^+;r/۔YwTH()n~b9n(ԭܠBRDž W-ZŁ6$N~`\V^0K5NAd|W*,l/uV88S8##m0n mϱS0)]1Hb(.E7gNz'g g%WBd2'7Ȭ&.[uj\]}z0 Tu ."FIhS؎X~C:3zܛ7t#$#,+\4pҵyN_6}ײn߿L"y84%0 q̠/.@$5ݍz<+\c8Co<~S2.mG,Tx>L=QCW/: 61x\uftzM烺$h犌th_p+Qz!IwN''q73+uL;B7e3c0M9g?U/[0GkJ́RB?Y欷*8wC>wJY3| EmJ^v?ǭʞ%vւO4kLy~صDk;ce^ؗ[zǷ|*~TM1)# Q *߯lupWV.[2{qCYr+~6m٣O^gvi@xyҥfimH%d53n(dqs͋Kpw*ְWW-VL=w nEW&˧>\AЎAbwmw]`<|qÃb ec[lej&[ͦ9G9;׻*\:=|mWew_YCq+ѻ=}se KMfDז9aKLi{'w]ha?i0_{Q"O.~:ouwIu7wgVv3?ɴxyaսhCWz%u-_%Jf-~.wj?:Sv27N4{{L^4ѩץ/x+cbĿ*SlcF+_$m~]k,#߼?{~xE}ReJ왹8vrEA*}^(ο/eTlə<ɫjN?_ḁ̇̄U` GO EEQbn|