ploop-1.12.2-1> H HtxHFTHO  Զ%S\3b +لj5\Ew 'Ca3L8c606f5a5cb2ff6f92582db37e0e04005c9395623W3cU",K|FTHO  Զ7vQ/^#Ǵ=D/(VL S8B4 ۟C~%>8R)?Rd  `dtx       < s (89:7FOCGO`HOtIOXOYO\O]O^ObPdPePfPkPlPtPuPvPwQxQyQzR{RCploop1.12.21ploop toolsThis package contains tools to work with ploop devices and images.TGTrhel5-64-build"GNU GPLApplications/Systemlinuxx86_64 dA 큤TGQTGQTGSTGSTGQ0c096597ee9709f45d72dfb731ed6ee0fda7eee861580b0f22329684a4eebafb21c2c2675e978ad0ea26fb20985034df1888d404837e4e7542ce28790d9b51bd52e3ed81cc8325f14e508c7f113e6bbfrootrootrootrootrootrootrootrootrootrootploop-1.12.2-1.src.rpmploop@@@@@@@@@JJ@/bin/shlibc.so.6()(64bit)libc.so.6(GLIBC_2.2.5)(64bit)libc.so.6(GLIBC_2.3)(64bit)libc.so.6(GLIBC_2.3.4)(64bit)libc.so.6(GLIBC_2.4)(64bit)libploop.so.1()(64bit)libpthread.so.0()(64bit)libpthread.so.0(GLIBC_2.2.5)(64bit)ploop-librpmlib(CompressedFileNames)rpmlib(PayloadFilesHavePrefix)rtld(GNU_HASH)1.12.2-13.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-64-build 1420183380AAAAA331@M1@K31.12.2-1mount.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 -m64 -mtune=genericcpiogzip9x86_64x86_64-redhat-linux-gnuBourne shell script text executableELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), strippeddirectory  RRRRRRRRRRR RRRRRRRR !7SRZ Ⅿ(?ZklW'vo 6M帎ԉq8xԳ3u84*-B5BQR"~JB*hhK{f$Q,y.qKՓ0=6:<22ڣrKjlX}=ÝAݼcT4;Rc{F&gGGǑ񡑽cx;74 ڻG^;TMÚ}ہI|ijlxdpj2bˊ3cbx` aJemF;4vF .Sa 0`;vs:60'2ʔӭXki%cF >Jm!^ZF/$Fn%qk,1 v"QgvPw$,".nYqi-v^3Y5Q}bZX>s 5ͬ3NaRӬ?PUN8D,qNTw ɶ j.C+DQVi-eU۷ˀ(g|I#$ d@Td[oQ_D't霼5OW>,!pls R&Cc'j~9vx;lpnI8A j yP7oB /hf:_i Ioq5ljAہe -áE28&w*~֎ 6a=fDW:eQ6=EI |^i\J2pRWdZ.u8'qp,'7XH dQxrQEgHBu}c㥙 pxCΥq PvGA6E;: Z8{'I S 4GǃUJұtP^aGgEvHy #MrF+~!vX,~!KN /rPs2+-®)ɍW[Xb89p\4sZqI5Ѫ+E=/`X)ڥhs~j΅3zpZX_tbs`P[*~EWI5.Yctٲcd\A3/oZ~9150sI]([F?"ӁʧeUz# r[ W0{#t }Z JO*($ǰv!\e/[r8/>}=+WoR=ݿtJ}-S.L#e ӰGG:INsMx4+:8ΦMW?-7{N.oS~Ҽ^f1k. W\\lurઢ\p_5uc?pjGmmm͝ӻ<_}`sSO.>ϼkYW8Ί=~t{o>'>\ˋZ?zm_|q: r}]A>i$C?%ʿD-3/˒&w$Tߕߗ.=+GoIq{)I7Ҍ!҂_f I_"uREEIo$HC1!&y ~Nh=H$' dm$bzJ*g:D~aoK8{@39I+X(ߕz$ mFJqCjIx3H%~3ҝ]/w_-,\t%41}Z[VgǥD$G$s~KxunğA: 1^)_4&?tH6oKߧ.P{w#a~8&_E/I>_Hҏ%&PϿcߐ\~%<#ۗI9obW*z#F_͂*loV!EΑpZ)䆨P#V/?[]1=IӨGe~Pw\߁8B[,[&'?z>. \/օ8ԋ~,Y/̗~Ѽ|&8Ηyl~6|$֏}"NeL5ɧsW=gcrVԲhp=RWɛKB5Z}W$>i%-m+ze15Z"+o[5 "e=-R vvr&dJt!xŪNMѬkid{z8ByS3 8Gs$|L5@UaLxZui6ȇ= zY8L9p{˕0Pk_OnͺZ7N^4>פ5po|:p4@Y $e4lM3 =@Mp0w$"E!x\͙YL$~bR} GSe _*Y|<lmpTo` H*$Ah"@ES@^殢 8;PSejVc FELNPsv椕$w>9{%MbW~Ć"==UD\t]'}ѧkER/zH/z_4_}_giEF/ѯ>[/Ϳ՚k4jEzͿ4~_oP/Mi4߬Ϳf[)z_FͿ57iEU/ͿK5ћ5/\/z_oR/*Ϳ밋Z/Ϳk5~_;5jE_<}6&}g6{cs?RN`Em+s}0EGGx#<509O`#EvU`o<_?Sp>iO> NwW?5pip__EW? xg?y?x_Ck:'韼<韼\CZ'/ϥr#z'/ϣr-x>got'OHO|EO>Ǹ_o[\O O> n;O~ D4V'^BK|?x9w[x蟼r蟼|;WW?yx k韼ɵ;< |'[^vݾVm><w29E2ýMY^ w}od vY7nNUOor\>44ۚFNX s^7Yi_`Yս k]?Z.|ՎlNݐm$\J`ҩ1{;gl3KKE&\ȯMtPtgT_pP@ogr4|f+?S`o'@~``E@qcׯvHs՟SgQHP_׫Fӯ?zPlfH}vԿn^i~QB i+K)Wm/] 6!ހź R|?'Qo_Їn3IkIFCZl{R%FWM6 oM!.:`QY5']<&gos\pSzKm}CK?eaֆDݹx` !MuVdi2ؒ9+6;vftE~"qeD>JU;Y oܽް&nۃC@b=aRs$Y}ڦ`-:rϬ9ÝݽdbC\@r0?mBe'09̎esN.ol7\{ͻ]"tu{wg^5NV,_;vz٫4i?٘>vΙC#-A 7;xNk$7϶x!T>B^w'_3чWm <,#edeqƠOa=?ϟ|7U} ;蛪>7-_ 9dtrW_-/W91ݚ,3_LgM= xUIi5Tp[wEܲRiֶڴ)L$CqU"-E:tUX}_uaŊ7!EhsL?f2{={Ɍ/rV㜋L0}|c6`6.b%zdl+\R=*Ϙ8H2:'}QNh`m|Cg ]>]ø\>P/p&TI9CشȺ[sX51A~}p"F_wg4ݪI:jZU)1g^Il*QNE5Vgdp٭͌P!܍lgTw1JuV=J|δvXGu=cJwiDL.7O,6pmD'\ aJ|J 2QDaʓ ~yra2gzϢpc`jfz][ձA*rKȎ4n}~~S'` ܝbNí]9|)ݳkQ9^,$C%  ui@7 '@Ar`k:7&㍶pi6/V fs&k{92=ݮrK'5g4`\>F)Bz衦rفoEoױ]u\nmS a+1LmE LExXDDy}!Qpg1  $1%>-=#xmȯdAG :w4Y̽L#R*75qJIF%Hr*'ۄ Bg =Q¶ҺޅLrê7? b;^J!kEu~QDuj$vsZba]DnNfe#1`1(VNt2wN)&@vK[( u ݋DH֒P'[W'!vCV4= ^"a)OѕV#]&![ٚ0@W'ڄ2 8nu䭎(}S}FRw~I]g> Rf1J;U(tн&t&K}~bM !D<&߽lpĂgLϑW{pχb4 9]E`D`x)"LKϾU[9|mg5^@b藵4XBH)?I 4а+ d0=Rc=bş,i Z4X(J#6Pz@ȹ;+1ط%iBNPΜ)9i;eBoKE']fO&Z~I7D4[ҳ$w4wBOW&_w~ d4& #3s47anp؊B6`i2v'4.Sl<5{Ի/F B@p̕e!ZWoX>P!q 8ˁ~hNlfG}[nar [Ä}HسM7IJ0#CzqnlM>FcÆ#ߌCb@u3neFI L rNe ?Q)?HJIGXL27${Q; 0;8[1JE0yN>=XM6_z pe< I)Z,eRA5w0Ľ!gCaGg0 ZAXx Pf@v dG%ea.} 5 vCJ^|^VDs4?mEA4l">F.Cݧfy6y};\ 0g0{`dK5#p&gӪx{ n|>ʌŊ2TcȴvՊ;p%]LK⸖$p-IZƵDa.!i b |dpV"< iKSwܢ&Tܗ@w)˗gJ;ÂW#2zl_{A'+8ަp W: mO]ؘOPDH3;H F, !xesm?LͤEE j- vG츆XE0Oj4jM`KזmL} vئ$zO|y&gN;|&_S;JK}+ xA<()7&Q)sX<#P&է._M2H7@9 "wL["9Y<ȿ23caP9BNw5ݿ1"M@"}{:x]+c>'b ɓHX"M<?OAEHO87)jkRM[ʊk621|h j-"rwlS\C1zp 6|Rk@yZ[u )}hwp4u j OT&b~S?0iw+_|nn=>#KBx:أ`]M R{[5G|7hB?ȷw+L1RW =(].]Y}Z$?;=h+PSxz?G /FFCҸ} ?/!v-ҕ(<BOB:ɘvPof4$nfrz-Bf$g s~<'8ݡ!DCsQ_ϭd4fu H2-F߮"\}Ҧgv+Q<7Џ{ fF.jytN:Xufu=O2AAh}Íޚ9:wf&n\ B̑}m6O>ߠ~2ޡ=rEvHSLb|k>k pO}%4b`,v{Bv }H?\C-pAt( W`A#Ӭ!GQc)϶e|>=H̘ 1(`3I<G.x y[wP{`ԍԓJO8 {yTwZdyR[A.N`a6;~O J}ᄚ0|R@cdYϠ!T![vwޝ:&{=ȉZ%\h qS>j.1"Xf Cگg$f9&v`~]L# 2! u'vSQa`~Yy a qY:Fݕad0LEXtÌT f1 t3`2̺N`6FR|oͫaO{Z0phicDq7\[W-I IP^ݍ8=:h`|{)kԥ xL '#f֓8g^oW(hE_I Xets[C^ (ONOծ;/k\*p݀7ڛAMD֪|26† VO,:یfzh2w>&$iu ]zǫnon `CEZ s͵rt@] QX#_":ণnys)Vb% {̔f2#xJxqR_)x1_1ٵN2ΑԸb"#rΔł5"iZ$xԇ5}Ī@ku& dV,S}@` s MqBۍ)ݹ!H^!}eywH}< n^(񋧤ܝx;>X6s .nܤidY#_wA߬Z\%1oX#wiʱHã8ܠǂ2 F' ͽm*+09MDLJކZD5q"R]^PBP3: =gœHtnk$ː dn`Zhߥ'DJN->fчe:;W Ӽޜ#'Kp*miSiI-nSwwkYݯMA(ͻ~A 0TӋ=qyYCbqM%L$]B*\j(b=1fgbsdzl^p\IGѬͯtv{.ytLрG3s dm A>D3=\)c-Gp OA%ӷ m]Tv!+"0)~Zeΐ\L!UtI>9O&:&*7}Gþ_.5k COb+|c$ <+{.vpyA[|sXcC [Q+2[nVAX{Ջb{eWX |, ,MTy#.SaO}#M|$!"RV/K,=,z`HCh8 ڗlmP&}16!_;mUt4<#fNx _ >hgmP(omnR=/} `DqhղkAF4|ǟyUopfϱ48qF~,fbF~,fbF~,fdbF<FڣZ, t'  !k&kƳo:`k%TyS ۿJ׍5Y|JDO̸ vZՈ0aJbI5>IbC<$o^3 "5}$IXdclAq TDϧs*EȊՁ;~^W~xس.tsnbEz(w1'kɗܲV2J*~t+N ơ)%OKtKIKj +0O)޷ï5afOqmr JF)f{de '`Ď7j[0j`fi{=bM8bBf ~br8?Eq`~s_jѶy&dU>3PZҰJ>ϡ02ëXҿQkįHA:yj?Moҭ ? Gs/_v^|4:w9vt:+ C0݈6=4v+mUL*OX^ZV'd{ϦOSw5~73KҞ5WWnܪ< Do@Z_C[IT 73 xZ#cj #MW3o۽y+˃Wt@`mex?=_4>"^J3x@s[ w7 :|Px]_r3)k^aSxPk0_? fw.&\R읶LākKr3w+#s(+໗:qJB 84@S MSZpfPT4*R4kC?& ]SLA+ZCK$[l oʖFNzi\.~ 3Yr(gЭ4 bX-odWiґ/w~tLD3 `)LUF܃S>%shP94RBDK3D 摗~98zHHl3#b4#q̌$D 1XfՀؑ WwhZfxf%`U~|fA0 Wa.ݘA; w~7ܥT4bj !Pp="N+GEUSk`ww6rr}L/R'3\W1+K>cz}:G>މ>zҺOio¥nG%q7Ew:`Ԉ`R:хforӌ/Ƞs|P{w;P3 v3SlPjgހ!'mo`ej">dgGD#~ T+xkbpwzĮ#|IaTc=J&DgߔʀaZG?\Db[\Bկ%.ib8KLn}zu  Ƥ +*9A-_BjIIbNF *=JU~ZA%|Sj\jq9&R>MB㯧! iޑ}$wr拺?rfĈ9Y1"Үxa=aVD@+TșU}ʶ:­<589߮WJA&K/B2tKE/!;c-Ưb sH!wvܝ69V| cu fIp"ȍmP&GRK ḡb&̌8̌tX[-nFyN)-?s?$f V5`hjϯ7= iXBOZ4/7_UDJ6.6aCsϋ6LMv%\9EɆyٵg.Zx͍6ėJ'Jr 1Ƀqr 3anJ]r hx'`]8gqRX&700d3dWG{\(qKƱhG).^4x띀/ڐ +/L^d(N6m; xÒ%yxu"9=9?Y"rУ3(;~216}!9el*`Ӳ 9LtòIɈD-1.|sq9ڻ ˊ09dD{i3Hs3xpP{{dj;{$i`On5Qم%DH*dV %o5?kg>4?oɚ:)Yhv>;R·e̳f9)wƀ߲HN#35ݱFVT̼ޅ3,k=+1uVVz _Ȍ/5k|3I=fA\ / Pk>,L:/* w@%y+Bk Ƥ߫;J r7O6=6@iS~pp@ 3IeyPzSZNh7[s|yjp:GfAtf͙5y2@9y.6G& B?m32I$ EEr\/T9dv|f>N晃$LoS mq؇lIN%(^7J<||41OC5z ]Mo@͵T G)"6P"i qTVFp{ͬ?hz/awvvgvd S$._\/'ӫP^pkfOp5^Gm5pvvִYKۯ$)!Oo%Es@W_>|FXo#5Fʮ2˛۟_WldBA n&U,[i֟G MAʙJli '/Ԙ,s #rOF*ˊv+ Ju׋J [u\6}9X ]nm(G@LL@4sAe3/V/ #1lLQai0C6ٞ[ mSm9' lG+4-ʏf ]v!RA35}t&UOT02dNo!F?_[~)Ҥ"nX5&aWK Q&4ɾ9jKy'7)AMN6hVrh0"3Q5 <&84 u,.,x+fty{/&$7۷!xx=aMLq_n2uHvnM4>V*P,l Xni[ ? IԱ?5gy)*̿]buߔ2D/\jr@Pk{PEKeŬ08tx>Ch 4l2K䇗N.E 7Nj. b/, @~ByBL{}~^2*=ZrP"#t\rpSwv,o,|4hdi{~Iicjzn'cIeG|t4qlfe1W<=f5y  FOg )Ô Gg}n0G5{2Hz`"]]lW޵BX <&1mtN\+YOvvg7V22BNMZxdNS;:חbG}Dѐjں}%ҡYL+%fwSH]87˲ZӪ*90ĢA´areN6ɶާUMCEɪCS!&/$rM⢚Z-w@>BX!P&Ԣp%+2*bT2+J#'=@vNC8'e& $]xn45a #(݋]w*M7 UqZ=\7rńJTk?B 4 QnelJa4ƽҹK 2G"׉VjhEI+fWp7) Q$uz9p |6W@=bo"w^q$kcC MB:XY!DJðM>$>xK\+q_X?$3AD]]>czƞG":GvE<=&}"WhdYze2| XJdѰ0esZ% L\,,نCfmӍBt1G;*Z A]Kv]O 38EVq6vfS}L>'A</zEĻhrzMJ"ݲhY1~?`̧.r+oޫJI-%%>n]kRM(e8}ٲ K@zyN?Ҏ/Z *sڲցi&Ix~eҁ]i.0L//v\ K![}}v =K?sͫbY5NoԲ:Z N@9}g7i+w-e=Hv =w떵Q:p䁷ޅ^o!L'׀C-wh_ :M@{vh9Po_ssQִֵ&U6:KQAOhqB<;'h~ǿ5*ӖL[<}aǃǯ<}qƒ|ރ?~̓goy5ǎ:zAO}>LW[&Lf)[J{DX}E]nQ֛l=q __n>˾J9qޭhS5=/yqtF2'\3Rߪ?(G*&1J[Xm^ٳwRxw_'!]IeG%=7ɾ^]PqNيrKU'Og=CU{>zfm^ - ,JrH+?]&o@X HGtv%>h37$ՂtJѯm7TfuU뙯&Fq7H[{~2Qoח<]Z`1韬 e+3\x8wG@E&}1l~QO쌿:^}vtͧ<~<9T" Kq~Fgw? ~3|ߢ?~ O_c׷o?$.Rٮqisf\}7s7yqRS5:M pu=J@`QDMV9B UUlRY2GVHYa bmN_f2̛ q$.X~w47Y;9ho 򒋭 rZl kt=qOO_㷲vxUZXa?O=.^?3%gɊ5sȉj1fYb͆-;8rbt>c&̘dŚ [v9pJ}L1gɊ5sȉѵ0cΒk6lٱ3a ][hY>MKDQADF Jt 2*j ^pl4im֙)VU_VRb>PEWDŇH}A]Uؗw69?F /;̙3:,o7|}9wOO*q/_++6 t⨳݅ 5 Ec;/*AwALNgR]lÐrfִ KO19W2F VFްq[һU藳erh#ם՗s;muKgr&i=l(YLvVzs:{-'enM +~F_c ^ :o K9? ~"$}؎ǎo /Hp+ 4Z=HzDI^#-#Dڂ\_!xX@3z?>Z(ڙ&uDF*]NOZ??Ō5< &#s=PП#r`ܳ㚀cH7Fx{l^7^|.P騭D4fw/_'gpC N -=87x6g0]ǿޝW:o@^Ya@0a-'.yO/ǶOOޛ>{֦_vf|t]pK@bD8)3$zA?(˟$KnOC#2rNN3:jud%3ѩ*ԁ)v~~o>;<=ͭ]R~j_}׉oNپgfr+}VOU=r2Kϳ}Г|s4_g/їx)J<MοusxFW;?{pW: ?8XZˌlgU|2*q|cw ~1Fϯ Sb">#LuznykЮOퟲHO+7П|cvz>M{Xzm.*+C7>,!͢zb%F,('A+e*$DM#_ Er%(t:-0 $H%r> tڐzȳӍ3hАd/&O &iSO`~a|9+i0~2~.nf;)~I8}џ[*R%I;%a e,mRJ M˚m_{csoesX. nN/tO@g3qK~bO;P~ێsUH5'5g΄g˶gZYJ}ٯH'qm4uYJ}Lv |NЛÓT#yN(:yqmH"/e*a0˄_, YY[$x9/[j Ndtxrmͻd~GSzl B%.hu,,ҟ?-|Q*/^?yM.+oAxۤ%uHd9{{Bu dvBv\\JÆݟ˳-x7ZdZ6Aϛm1&_n(pe> s*ݹHLKvؗJ)Y=1mZRlp@j|웡Y +!tK;έ­0w|֞y(QՎ9d;zBo{@?x)/- 綷2ͷ}Ӿi?EHYhQmex2缆`&k-u>-7+>/zhXuzYzb=V`YY I!w=>~|aN<(h3]11.EbDi1$-JOE K.(R9Eo{5ۇZ1Cndkn2Me=CLJ Tu!{Ni#<)ntj?RS|ؾ SVxL I[NQَ5翅&E]fXɾ/5t.JD-0?FtFSFwP+|~BN<";OU”*ҊDKMnVX>QG0Dzcu"f$75#Y.P4Xۡe+Qk3om.x?zγWkdt' ~q/OcK5烦Y^8z C|,O0}8k[Nu-@/2k[@Æ/0)8AN7$R+)KR(̒_ۅ/0"lcၝ 4vbJ` Z B -J5("~7 O̐h ^&EPEnnPfmAth g!8mg۠gXP}aq8)]olSUgt-ۂ.R}hMAu1t^Cǐm2YǬ22lE> b`~ f)!9g{nsλ\4U=@{@z?:*^Q<~oVBȝ,LPHc?lÉ, UIw0h {R@v˼i/]Z܅mW?cV"}QX hNe#ߌxsRzia'kso]y )JCQ^WSӈj}! @]!XQmu\j?^7"7cyV'>u}*jE mOvFi/~)?Sdt,;zTsErZp?>F+Oˆe[bq \\ZF P36<>` y8 (P6 oBHy穗dA=OmrU|O2T02IgEFWsgۗ(\ց3FIq *WwE_8dET RR5GlP;EH9c .,W#i7>96کY6r=u Zx{\x3a\Ln#uX,Id:}$2 S.4 KpwW2ֽ\R&21I T]BRe C噓"Kt)2V(TDS r2S"GzֱBx3J͑c>It-n4v1Ҹ αm! vmAPFd2QFIeM01V< IXh+a4%6ӎB]Y#-KԵςdoyhkvchs|V5\z|'u>|S:,>,ҫm^; HGB`z<, ],9ں].7oƶ 1Ec/J*h?aF*@#b6<\R%~01*y- 2Q̉R^~9ғh ILxz1;y~,Z} 7Mru;}ld<6hcY(h@f<8~*ĴAJw7p<ꁙ0y/ _OLa(J<]Asǀɘ69ML4ȴiwS ()/{vFŖuh!7l 셨lkZ?W/ "A|`.l uО:61J=c-sZU9Mh~m;޶< אKw\ȲJĥsBes·in|K&_v?ck#1a8HI\s]OʁEZhډ8rB1A8.2r8CCVvT@-ߠW^"eZD EJtS ʹB`-6(WpzbHKʵb%$&Eb1w@%5ค-[[o3 R@o:q1$$Bŀ.9 *C!ʃdPkk,H?/yPg!*3 JK+*A1B@(J9CVvp-*r4$2p8D( !reQ̾/<"l:lf2ؕ3ݍZFG P5T ܇ ]auL3NCB@+/8윟i>f7I6YsoWʆNS˻|F{Ө8Џ?o+(E o 3]yFzyUP!)O)U@^m|C<`7]f"ae4n4c:6d2pZdjcmT˹wqBe]ЧD2ԏ<*>fR-3mHOվlsMFg{Lj{N&Mq”ĉuxdfgdLj@;rJ _`BN<^9^fedCPן=VYάHaHanwN;N)rq˼'ƆA"ΎO[-)W(hHGJ?s ݫb~Ts@;J]xwaS1e+Gf&U4v͉({*Hu6gVr>1XJp\6_o5@/ȼ#ɗ!]=5._SYSD[sFX.AZBeIɥܙ;~O̙9'"ˍL?=6LoH%ĉaj^"3Lie2l<ov؋p=8]Q"x#\6K[ݴi ٨5MPю%De* 5穤MuUrl|诜;0kڵU"PG*-*O, 5NE o$(b!LL^~tJ$*@_2Mo5_o~sh G{eYHZz;SPObK6CQ| ?W) 8+M 8o$?_Zqnj(~.>hJ;uNo[*Eb%,CjyPcW-iTfxOQf11u<&AcX| 0DOl ;0t*)#P!:QZ6[Y{o3k8IvH{٘%nѴ8,?hBm] C(~fV'@l"Z*LcYqs3P|ww}uJT1%.Cg/:b6{~:CmbM!i_h4|`u8$SHD A1}2;3̩ "RD"RXnt(bMaGMw>BK2hwG([rT8[HM]݄<24,[(nRffAklKO gU)Ju˃3GsOEHE8q0:cz=2<,v&:.PbJZl,^Y\rYX4?wbZˌ4?=eU84=z=MUbNbDX)aBVss$na2+yUx իGзRW)IRt8hd):d|:!Lwe8D k#%0qQWY#ӑzIhe'/C;lH|)qgu8Lm#\\D]H~OЯllbr]^$!$} F'(Jꗏ5t %$(H1>6Ov~w\)HXCߘܸB;u i8@!o:2^t ZQd+9qyZ̬dX:N+\Sײeui'@ Œ#jMS/BT lr2 T5Ƙ'~DWѲ]sN_,9L]IU],S,o܈!/wif,&]RS^PʵH5G+{a1;aZ*K2x'XĨאk gݏQs]Ă|[< WGHzq^:R4ubvS&HJ@ljN)}YJ(gGHvDdUҎpZ#PbwKy*x9D^G2 bYmt?Q2JÐH]x7Tre,r' ^re"`q>B7d;یL$S&Gu7'h%7;V#&{pZBvY\xUɁkmS%!&z|nSٞ8U!$yEB*sJտXӈ%I94K!U_oŠ_-qa:"I0*9<'YA c1ƽ8@B*C` ]Rby7UڤP*_8d.[\%F͠vLI-G0@㡶(%*|c~olPJyO2׾Ԩ6ݴ 9a8ӯOC ]`bVn>+mԇPvdGXDNZS/~4 )\/^@"KߣT"*(Uo,GYqb u"^+IDo LYPuk@|'0S Lڱ`wq>^Ptu(葠Q'wM^ yA /j)a$kix<F׬/vz_g pJfхMjڽ,ܽ~9~d#Z[0p'$ \6]fV3sVsRQ\v$jVjQj&ƵO nŹJZYմدFH*(_<9bupCZkd~lE %vPV%|Om#TXط6D%ivg5{mS gI;鶖OfSp<ˍL!Z:\-Gq@H1a^T8kp~4Y ~wΧ$Q$!`V;2O^YJbbagZ *R-BD #JKb'X;u>))9W Q+9SDdBQhBM>-XxHBk ǕIj 乪In;_h|,HgM#,LQ^eFZ7 {~5`1!ي;&a+ܥL[{kLkRGV?ӤTX<lX|0T'b*vSXU&9!F(AcˬpS>!gtr4~/3lUGʟxlemg-!ћVrxo4MuJsq89?|J2ɻm}ۏTGTFYbJ&R4m_upm׳J,)q8FߟCoaXj[X>u;u\ )&@I aD"8 z'o4[0Z(7Ez] ң`wtpx=-7֦[ '<&-I>7u`V+W,_uNLkIZ!3v|.h:'0Wdp[^vd)U+Eu\hَ=Ԋwd>èKg$'"T >kR eu93@"yGwbQx*H{Wg:8U6ڧ}JԮUgg#Csu}q+z)н )}L76+G?$ 0p6m oqr_TnWfxl=ߗL576d7RR2+R5${A^ P4T#/EE0oh~S҉3^5R1U#QBFAYǣӌχce*{QQ ߭y :݉;LCcD>7ʈB6cRe?QAIB\a#W3xq.'|{1*=?{2KƧ>2m-]q:%CF> |~U @OXuy=/W53hߓ:y:&Ԙˆ2ig.WW:]?]1[.On sumx >a4!(@=0dH7ŏ|&ә_gv!ۂA 0/5d]m*zjL-׋rMx3 n1Kr A%Jt?ǂ1*~SiU?dA*Z>7! FW $ЃZP!no%5J7_/$hKre`fk{_l'(hh00\d%