openucx-tools-1.15.0-150600.3.5.2<>,Ĭip9||L_`M$;bOrWQUMzA!˿?vpB ^7ƼY9O҃gwj%4Yl$"HO݇o.q c44+Z4~@)9w ? (Kl'э|x0<*vO%s8`Ӵrj#:sbهIåi+,oqKR-1Wl3EzPhDkepBq[t~>>?d $ 6lp       g    : `   (8%9t%:%FGHhIXY\@]^Gbc2defluvPwxdy+zCopenucx-tools1.15.0150600.3.5.2OpenUCX utilitiesMiscallaneous utilities for Unified Communication X.iibs-power9-17SUSE Linux Enterprise 15SUSE LLC BSD-3-Clausehttps://www.suse.com/System/Consolehttp://openucx.org/linuxppc64le 0 gaj: #P3AAA큤A큤A큤AA큤A큤iiiiiiiiiiiieficiiiiiiiiiiiiiiii53ab6bdc3465f8b22d86f6778d89304641eeb5b81bf58a40ff7714d45cdd15573881626049319c50699e481a9fa4f346b140427186126926725029a0ed83f0a42aa0f1041faf616079728072c93b84be9816c5985229355d948a7288190bb1389bb7b5d325c265ce4f2f3277ad3f484ad2ff666597ee40bea595ad1acb23894d5fbfe61c8d3bad5d286b202a872e99d3d8e982e986c0b7b8eedd815490cf0b5bfdba7a97203e661fd08de4b1c85f9b4414569c474038a4fd7599984b4b12f727425c43b7b37d5a4db97b6152cffcf2a9e9b0e2b5b24fa4c4fd70042be2a48c3472f83d13224ed92e9264c0131074c5d3ee761cc7a74e3889aa4dc212340ea8dd090459b884fa8ee2543d12380268ccfcaeb73b1d49edaf4a30f13f83df33dafeebb5c7fa3d2e20fbee5431a975c7196779647490324dc2346cc561f0f044048dcc291b7e22e4d11a847ab0803c39646bcc05391d488974b29a0f5c2626498f226b7509ae9e5f975138a0dcb2744e67fcfdbba7f05f11485b42b211310d5af16e84407297fa98ea0a90b062f1eb467e7cc5badea8fe505c9df78977cbb0f5cd1bdb51f2499d8924ad1e62ea2f1a050e6aaf5ab9f3117a9b1adb40a0bc15e8495e9f11c5785da9c00f24d015d74e0d3c3b53eee08acce5c970dce443cb5560d4ea0d618d4650ed8674b28dda1a4b88df1db885589e7269f80d1bd51b8afb24ac70d4214780b9364cae0cceb0afc8bdb6c3cbf7b837e640fb311bbc5bc190138d3797d82a722b7923ff202c364754b917fc91d11fd63bd841ea0fba528a525fd6dc989f30814d5755885cca495652cce1d88f4a051470fe7e8ecd433908b04148853f3f460a0bf39b3273dfcb590e5db476d1d68b3b8ef9970e36894dad3473745a44bd26f5f50087ab4f124b228d267fe88ba0833309861d2a39f701a46676fcefe24145afe1640ef437c3ffbd3120bc734f0ccbe93d8c8b299ee6094cba118c8d9e13bb88a603c1223dac70b509a7c00d8d47583dba685473b89972b469329e29rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootopenucx-1.15.0-150600.3.5.2.src.rpmopenucx-toolsopenucx-tools(ppc-64)pkgconfig(ucx)@@@@@@@@@@@@@@@@@@@@@@@@@    /usr/bin/pkg-configlibc.so.6()(64bit)libc.so.6(GLIBC_2.17)(64bit)libc.so.6(GLIBC_2.33)(64bit)libc.so.6(GLIBC_2.34)(64bit)libc.so.6(GLIBC_2.38)(64bit)libgcc_s.so.1()(64bit)libgcc_s.so.1(GCC_3.0)(64bit)libgomp.so.1()(64bit)libgomp.so.1(GOMP_1.0)(64bit)libgomp.so.1(GOMP_4.0)(64bit)libgomp.so.1(OMP_1.0)(64bit)libstdc++.so.6()(64bit)libstdc++.so.6(CXXABI_1.3)(64bit)libstdc++.so.6(CXXABI_1.3.9)(64bit)libstdc++.so.6(GLIBCXX_3.4)(64bit)libstdc++.so.6(GLIBCXX_3.4.11)(64bit)libstdc++.so.6(GLIBCXX_3.4.15)(64bit)libstdc++.so.6(GLIBCXX_3.4.21)(64bit)libstdc++.so.6(GLIBCXX_3.4.9)(64bit)libucp.so.0()(64bit)libucs.so.0()(64bit)libuct.so.0()(64bit)pkgconfig(ucx-ucs)pkgconfig(ucx-uct)rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.0.4-14.6.0-14.0-15.2-14.14.3g@ed@dJdc<@c< @c2a@aLl@`6?_{ _ L^3^@]4@]@\@\s\o@[@[ā@[l,[!@Z2@Zc/@ZaZ*~YYYV=@YS@Y9<@Y(We7Ue@U@nicolas.morey@suse.comnicolas.morey@suse.comnicolas.morey@suse.comnicolas.morey@suse.commliska@suse.czschwab@suse.denmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comjengelh@inai.denmoreychaisemartin@suse.comjengelh@inai.denmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.commliska@suse.cznmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comjengelh@inai.denmoreychaisemartin@suse.comdimstar@opensuse.orgjengelh@inai.denmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comnmoreychaisemartin@suse.comjengelh@inai.dejengelh@inai.dejengelh@inai.dejengelh@inai.de- Add UCT-IB-UD-Use-GRH-to-detect-address-family-on-non-Mellanox-hardware.patch to fix an UD init issue on non-Mellanox RDMA HW (bsc#1240204)- Update to 1.15.0 - UCP - Added 2-stage pipeline protocol in the new protocol infrastructure - Added reset and abort functionality of rendezvous protocols in the new infrastructure - Added zero-copy rendezvous data send protocol in the new infrastructure - Added support for user memory handle in the new protocol infrastructure - Added option to force ODP registration for certain memory types - Enabled lock free memory region deregistration - Updated allow/deny transport list feature to control auxiliary transport selection - Multiple performance improvements of the new protocol infrastructure - Multiple improvements in error and debug messages - Fixed assertion when sending from non-contiguous GPU buffer to managed buffer - Fixed the race condition on endpoint configurations - Fixed endpoint reconfiguration issues due to asymmetrical selection - Fixed endpoint reconfiguration error due to wrong locality detection - Fixed crash during connection manager cleanup - Fixed rkey index calculation for rendezvous protocol - Fixed rcache dump function - Removed logging from rkey unpack in release mode - Fixed dobule free of rkey in rendezvous protocol - Fixed rendezvous pipeline protocol error flow - Fixed error handling in rendezvous get zcopy protocol - Replay pending requests of wireup EP CM during connection establishment to prevent potential ordering issues and wrong configuration - Pass user-provided memory type to the function that checks whether the buffer can be sent inline or not - Avoid memory registration during UCP context initialization - Fixed CPU/device atomics selection in the new protocol infrastructure - Multiple fixes in the new protocol infrastructure information output - UCT - Split UCT_MD_MKEY_PACK_FLAG_INVALIDATE into two flags for RMA and AMO - Added put_zcopy and get_zcopy scheme support for self transport - Added base implementation of is_reachable_v2 API using intra/inter flag - Introduced MD capability for non-blocking registration memory types - Added check for dmabuf kernel support in ROCm memory domain - Fixed exported memh packing - Fixed an error in checking return status of multi-threaded memory registration function - RDMA CORE (IB, ROCE, etc.) - Added implementation of is_reachable_v2 routine to IB interface - Added option to control CQE zipping per CQ RX/TX direction - Added option to specify how DCI selects port under RoCE LAG - Added hw_dcs to the list of policies to select DCI by an endpoint - Removed implicit on-demand paging - Added option to set RoCE lag dct port for response under queue affinity mode - Improved IB memlock limit logging - Fixed dma-buf based memory region registration - Fixed memory handle data corruption when PCIe relaxed ordering is enabled - Fixed performance degradation when indirect atomic key is not supported by the hardware - Fixed remote access error to strict-order keys because of wrong offset - Added check for UAR support to memory domain opening - Fixed updating port counters for devx qp - Fixed ibv_create_cq error message on node without Infiniband - Fixed performance degradation due to using 2 paths on NDR400 by default - Removed unnecessary async lock which otherwise would block UD progress - UCS - Added ucs_string_buffer_rbrk() to split token - Fixed lane selection and added bandwidth estimation for Sapphire Rapids family - Fixed displaying wrong environment variable suggestions - Fixed VFS warning output - Fixed SEGV in ucs_debug_backtrace_next(), upon previous SEGV handling, due to ENOMEM situation - Fixed memory corruption when using UCX_MPOOL_FIFO=y - UCM - Fixed conditional jump patching - Fixed mremap() override - Tests - Added a rocm docker container for testing - Added option to send client_id in iodemo test - Added support for multiple connections to the same server in iodemo test - Added synchronization before exit to hello world examples - Fixed wrong usage of ep_close in examples - Tools - Added user-side memcpy option for AM benchmarks in ucx_perftest - Added wireshark LUA dissectors for some UCX protocols - Fixed memory access flags in perftest - Removed support for librte from perf - Fixed worker flush deadlock when using multiple workers in ucx_perftest - Build - Added support for binutils 2.40 - Added versioned dependency to switch between packages with the same names - Added a separate xpmem deb subpackage - Added aarch64 support to the binary distribution pipeline - Removed dependency on libnuma - Documentation - Updated ucp_worker_release_address description - Refresh openucx-s390x-support.patch against latest souces- Update to v1.14.1 - Fixed ROCm to prevent the locking of host pinned memory - Added CUDA 12 based UCX builds to the release flow - Increased the maximal number of endpoint configurations - Fixed filter for a slow-lanes in selection logic - Fixed TCP transport bandwidth calculation - Fixed device detection for ROCM - Fixed compatibility with CUDA 12 - Fixed rendezvous threshold for multi-path configurations - Fixed error message in case of static link - Fixed BlueField-3 detection - Multiple fixes for Azure CI pipeline- Update to v1.14.0 - UCP - Added API for querying transport and device names on endpoint - Added API for querying datatype object - Added API for exporting and importing memory keys (no implementation yet) - Added support for non-persistent active message header - Added infrastructure to print protocols v2 performance - Multiple performance improvements for protocols v2 - Added support for non-contiguous datatypes for rendezvous protocols v2 - Added support for reset and abort request in protocols v2 - Added support for user memory handles in RMA API - Added multi-rail support for RMA API in protocols v2 - Added support for up to 16 different lanes per endpoint - Added support for dmabuf memory registration in protocols v2 - Added strong fence mode for ucp_worker_fence() API - UCT - Added new uct_md_mem_attach() API to support exported memory handles - Added remote completion mode for endpoint flush (via new flag) - Added support for dmabuf registration - Added new uct_ep_connect_to_ep_v2() API - Added new uct_mem_reg_v2() API - Added new uct_md_query_v2() API - Added support for IPv6 loopback address in TCP transport - RDMA CORE (IB, ROCE, etc.) - Added ECE (enhanced connection establishment) support for RC and DC transports - Added support for hardware DCS in DC transport - Added UD interface and endpoint resource information to VFS - Added CQ creation via DEVX API - Removed support for accelerated IB transports over legacy experimental verbs - UCS - Added support for auto-correction of user environment variables - UCM - Implemented CUDA bistro hooks for aarch64 (to enable memory cache on this platform) - Added support for CUDA virtual/stream-ordered memory with cudaMallocAsync - Documentation - Added FAQ for using pkg-config tool to build applications with UCX - Tools - Added runtime library version to the 'ucx_info -v' output - Added support for memory types in ucx_info - Many bugfixes. See NEWS. - Drop patch merged upstream: - UCS-DEBUG-replace-PTR-with-void.patch - gcc13-fix.patch - Refresh openucx-s390x-support.patch- Add upstream gcc13-fix.patch fix.- openucx-s390x-support.patch: fix use of clz builtin for 64-bit value- Update openucx-s390x-support.patch to add missing ucs_ffs32 on s390x - Drop baselibs.conf as openucx only works on 64b systems- Update to v1.13.1 (jsc#PED-912) - Core - Added new objects to VFS: local and remote address of endpoint, statistics of ucp_ep_create success/failure, failed/destroyed endpoints - Added support for UCX static libraries - Added profiling for rkey management routines - PCIe relaxed order enabled by default for AMD CPUs - Fixed not deallocating memory from ucp_mem_unmap if no rcache - Fixed versioning infrastructure - Multiple code improvements: refactoring, debug prints and assertions, etc. - Multiple improvements in build, test and docs infrastructure - Added new objects to VFS (md, component, log_level, etc.) - Added configuration variable to specify which loadable modules are allowed - Added build-time configuration to disable sigaction overriding - UCP - Added API to pass pre-registered memory handle to UCP operations - Added implementation of AM rendezvous protocol - Added 2-stage pipeline rendezvous protocol for GPU - Added support for fragment mem_type for v1 pipeline proto, disabled by default - Added active message support for proto v2 - Added UCP memory registration cache - Improved adaptive progress - deactivate iface when all p2p lanes are destroyed - Added support for user memh in proto_v1 - Added support for selecting local address when creating a client endpoint - Added option to limit GPUDirectRDMA size in rendezvous protocol, UCX_RNDV_MEMTYPE_DIRECT_SIZE - Deprecated UCX_SOCKADDR_AUX_TLS configuration parameter - Resolving remote EP ID when creating local EP disabled by default - Added client_id to ucp_worker_create() and ucp_conn_request_query() APIs - Added ucp_worker_address_query() API - Updated ucp_ep_query() API for getting local and remote addresses - Added address versioning to correctly preserve wire compatibility starting from version 1.11.0 - Added new client/server connection establishment packet header format - Enabled rendezvous and tag sync protocols when error handling is enabled on the endpoint - Added iov zcopy support to RMA operations - Reduced memory usage of unexpected messages by fitting receive buffer size to packet size - Added support for modifying UCT and UCS configs by ucp_config_modify() API - Optimized unpacked rkeys memory consumption - Added request flag to influence latency vs. bandwidth protocol - Reduced memory management overhead with new protocols - Improved performance calculations for new protocols - Added AMO support with GPU memory target using new protocols - Added put_zcopy, get_zcopy and pipeline based rendezvous in new protocols - Added support for user-defined alignment in Active Messages - Added support for offload tag sync in new protocols - Updated ucp_atomic_post() to use NBX flow - UCT - Introduced API uct_md_mkey_pack_v2 - Introduced UCT iface features API - Introduced max_inflight_eps parameter in perf_attr API - Introduced UCT_SEND_FLAG_PEER_CHECK flag that forces checking connectivity to a peer - Introduced UCX_RCACHE_PURGE_ON_FORK to enable/disable cleaning regions when application is forking - Disabled PEER_FAILURE capability for XPMEM - Added API - uct_iface_is_reachable_v2() - Added IPv6 address support in TCP - Added latency estimation to uct_iface_estimate_perf() - Adjusted knem and cma overhead cost - Increased built-in TCP keep-alive interval to 2 seconds - RDMA CORE (IB, ROCE, etc.) - Introduced NDR autorecognition - Introduced CQE zipping support - Set the default MAX_RD_ATOMIC to maximum value supported by the hardware - Disabled mlx5 ifaces on verbs MD - Added detection of IB NDR devices - Added check for CQ overrun in assert mode - Added bitmap usage for releasing detached DCIs - Added configuration for requests ack frequency with DevX - Added remote QP info to tx error CQE traces - ROCM - Increased maximum number of HSA agents - UCS - Added topo module infrastructure - Added memtrack and rcache information to VFS - Added API for a per-process aggregate-sum statistics report - Added memory pool set data structure - Added new ptr_array API for bulk allocation - Added ucs_string_buffer_append_flags() for string buffer - Added ucs_ffs32() - Added ucs_vsnprintf_safe() which always adds '\0' - Added thread-safe put to ptr_map - Improved accuracy of the topology distance estimation - Added prints of leaked callbacks from the callback queue - Removed a diagnostic message when fuse thread is stopped - Added configurable limit for the memory consumed by rcache - Added configuration for VFS(FUSE) thread affinity - Added memory limit support to memtrack - Packaging - Added cmake config files for better integration with external cmake based projects - Tools - Added loop-back transport support in ucx_perftest - Split ucx_perftest into separate modules - Added process placement option for ucx_info - Extended parameters correctness check in ucx_perftest - Backported UCS-DEBUG-replace-PTR-with-void.patch from upstream to fix compilation- Fix UCM bistro support on non s390x archs - Add ucm-fix-UCX_MEM_MALLOC_RELOC.patch to disable malloc relocations by default (bsc#1194369)- Update to v1.11.1 (jsc#SLE-19260)- Update openucx-s390x-support.patch to fix mmap syscall on s390x (bsc#1182691) - Core: - Added support for UCX monitoring using virtual file system (VFS)/FUSE - Added support for applications with static CUDA runtime linking - Added support for a configuration file - Updated clang format configuration - UCP - Added rendezvous API for active messages - Added user-defined name to context, worker, and endpoint objects - Added flag to silence request leak check - Added API for endpoint performance evaluation - Added API - ucp_request_query - Added API - ucp_lib_query - Added bandwidth optimizations for new protocols multi-lane - Added support for multi-rail over lanes with BW ratio >= 1/4 - Added support for tracking outstanding requests and aborting those in case of connection failure - Refactored keep-alive protocol - Added device id to wireup protocol - Added support up to 128 transport layer resources in UCP context - Added support CUDA memory allocations with ucp_mem_map - Increased UCP_WORKER_MAX_EP_CONFIG to 64 - Adjusted memory type zcopy threshold when UCX_ZCOPY_THRESH set - Refactored wireup protocols, rendezvous, get, zcopy protocols - Added put zcopy multi-rail - Improved logging for new protocols - Added system topology information - Added new protocols for eager offload protocols - UCT - Extended connection establishment API - Added active message AM alignment in iface params - Added active message short IOV API. - Added support for interface query by operation and memory type - Added API to get allocation base address and length - Added md_dereg_v2 API - UCS - Added log filter by source file name. - Added checking for last element in fraglist queue - Added a method to get IP address from sockaddr. - Added memory usage limits to registration cache - RDMA CORE (IB, ROCE, etc.) - Added report of QP info in case of completion with error - Refactored of FC send operations - Added support for DevX unique QPN allocation - Optimized endpoint lookup for DCI - Added support for RDMA sub-function (SF) - Added support for DCI via DEVX - Added DCI pool per LAG port - Added support for RoCE IP reachability check using a subnet mask - Added active message short IOV for UD/DC/RC mlx, UD/RC verbs - Added endpoint keep alive check for UD - Suppressed warning if device can't be opened - Added support for multiple flush cancel without completion - Added ignore for devices with invalid GID - Added support for SRQ linked list reordering - Added flush by flow control on old devices - Added support for configurable rdma_resolve_addr/route timeout - Shared memory - Added active message short IOV support for posix, sysv, and self transports - TCP - Added support for peer failure in case of CONNECT_TO_EP - Added support for active message short IOV - See NEWS for a complete changelog and bug fixes - Refresh openucx-s390x-support against latest sources- Update to v1.9.0 (jsc#SLE-15163) - Features: - Added a new class of communication APIs '*_nbx' that enable API extendability while - preserving ABI backward compatibility - Added asynchronous event support to UCT/IB/DEVX - Added support for latest CUDA library version - Added NAK-based reliability protocol for UCT/IB/UD to optimize resends - Added new tests for ROCm - Added new configuration parameters for protocol selection - Added performance optimization for Fujitsu A64FX with InfiniBand - Added performance optimization for clear cache code aarch64 - Added support for relaxed-order PCIe access in IB RDMA transports - Added new TCP connection manager - Added support for UCT/IB PKey with partial membership in IB transports - Added support for RoCE LAG - Added support for ROCm 3.7 and above - Added flow control for RDMA read operations - Improved endpoint flush implementation for UCT/IB - Improved UD timer to avoid interrupting the main thread when not in use - Improved latency estimation for network path with CUDA - Improved error reporting messages - Improved performance in active message flow (removed malloc call) - Improved performance in ptr_array flow - Improved performance in UCT/SM progress engine flow - Improved I/O demo code - Improved rendezvous protocol for CUDA - Updated examples code - Bugfixes: - Fixes for most resent versions of GCC, CLANG, ARMCLANG, PGI - Fixes in UCT/IB for strict order keys - Fixes in memory barrier code for aarch64 - Fixes in UCT/IB/DEVX for fork system call - Fixes in UCT/IB for rand() call in rdma-core - Fixed in group rescheduling for UCT/IB/DC - Fixes in UCT/CUDA bandwidth reporting - Fixes in rkey_ptr protocol - Fixes in lane selection for rendezvous protocol based on get-zero-copy flow - Fixes for ROCm build - Fixes for XPMEM transport - Fixes in closing endpoint code - Fixes in RDMACM code - Fixes in memcpy selection for AMD - Fixed in UCT/UD endpoint flush functionality - Fixes in XPMEM detection - Fixes in rendezvous staging protocol - Fixes in ROCEv1 mlx5 UDP source port configuration - Multiple fixes in RPM spec file - Multiple fixes in UCP documentation - Multiple fixes in socket connection manager - Multiple fixes in gtest - Multiple fixes in JAVA API implementation - Refresh openucx-s390x-support.patch against new version- Update to v1.8.1 - Features: - Added binary release pipeline in Azure CI - Bugfixes: - Multiple fixes in testing environment - Fixes in InfiniBand DEVX transport - Fixes in memory management for CUDA IPC transport - Fixes for binutils 2.34+ - Fixes for AMD ROCM build environment- Trim bias and filler wording from descriptions.- Update to v1.8.0 - Features: - Improved detection for DEVX support - Improved TCP scalability - Added support for ROCM to perftest - Added support for different source and target memory types to perftest - Added optimized memcpy for ROCM devices - Added hardware tag-matching for CUDA buffers - Added support for CUDA and ROCM managed memories - Added support for client/server disconnect protocol over rdma connection manager - Added support for striding receive queue for hardware tag-matching - Added XPMEM-based rendezvous protocol for shared memory - Added support shared memory communication between containers on same machine - Added support for multi-threaded RDMA memory registration for large regions - Added new test cases to Azure CI - Added support for multiple listening transports - Added UCT socket-based connection manager transport - Updated API for UCT component management - Added API to retrieve the listening port - Added UCP active message API - Removed deprecated API for querying UCT memory domains - Refactored server/client examples - Added support for dlopen interception in UCM - Added support for PCIe atomics - Updated Java API: added support for most of UCP layer operations - Updated support for Mellanox DevX API - Added multiple UCT/TCP transport performance optimizations - Optimized memcpy() for Intel platforms - Added protection from non-UCX socket based app connections - Improved search time for PKEY object - Enabled gtest over IPv6 interfaces - Updated Mellanox and Bull device IDs - Added support for CUDA_VISIBLE_DEVICES - Increased limits for CUDA IPC registration - Bugfixes: - Multiple fixes in JUCX - Fixes in UCP thread safety - Fixes for most recent versions GCC, PGI, and ICC - Fixes for CPU affinity on Azure instances - Fixes in XPMEM support on PPC64 - Performance fixes in CUDA IPC - Fixes in RDMA CM flows - Multiple fixes in TCP transport - Multiple fixes in documentation - Fixes in transport lane selection logic - Fixes in Java jar build - Fixes in socket connection manager for Nvidia DGX-2 platform - Multiple fixes in UCP, UCT, UCM libraries - Multiple fixes for BSD and Mac OS systems - Fixes for Clang compiler - Fix CPU optimization configuration options - Fix JUCX build on GPU nodes - Fix in Azure release pipeline flow - Fix in CUDA memory hooks management - Fix in GPU memory peer direct gtest - Fix in TCP connection establishment flow - Fix in GPU IPC check - Fix in CUDA Jenkins test flow - Multiple fixes in CUDA IPC flow - Fix adding missing header files - Fix to prevent failures in presence of VPN enabled Ethernet interfaces - Refresh openucx-s390x-support.patch against new version- Ensure /usr/lib/ucx is owned at all times.- Update to v1.6.0 - Features: - Modular architecture for UCT transports - ROCm transport re-design: support for managed memory, direct copy, ROCm GDR - Random scheduling policy for DC transport - Optimized out-of-box settings for multi-rail - Added support for OmniPath (using Verbs) - Support for PCI atomics with IB transports - Reduced UCP address size for homogeneous environments - Bugfixes: - Multiple stability and performance improvements in TCP transport - Multiple stability fixed in Verbs and MLX5 transports - Multiple stability fixes in UCM memory hooks - Multiple stability fixes in UGNI transport - RPM Spec file cleanup - Fixing compilation issues with most recent clang and gcc compilers - Fixing the wrong name of aliases - Fix data race in UCP wireup - Fix segfault when libuct.so is reloaded - issue #3558 - Include Java sources in distribution - Handle EADDRNOTAVAIL in rdma_cm connection manager - Disable ibcm on RHEL7+ by default - Fix data race in UCP proxy endpoint - Static checker fixes - Fallback to ibv_create_cq() if ibv_create_cq_ex() returns ENOSYS - Fix malloc hooks test - Fix checking return status in ucp_client_server example - Fix gdrcopy libdir config value - Fix printing atomic capabilities in ucx_info - Fix perftest warmup iterations to be non-zero - Fixing default values for configure logic - Fix race condition updating fired_events from multiple threads - Fix madvise() hook - Refresh openucx-s390x-support.patch against new version- Disable Werror to handle boo#1121267- Update openucx-s390x-support.patch to fix support of 1.5.0 on s390x (bsc#1121267) - Add baselibs.conf for ppc- Update to v1.5.0 (bsc#1121267) * Features: * New emulation mode enabling full UCX functionality (Atomic, Put, Get) * over TCP and RDMA-CORE interconnects which don't implement full RDMA semantics * Non-blocking API for all one-sided operations. All blocking communication APIs marked * as deprecated * New client/server connection establishment API, which allows connected handover between workers * Support for rdma-core direct-verbs (DEVX) and DC with mlx5 transports * GPU - Support for stream API and receive side pipelining * Malloc hooks using binary instrumentation instead of symbol override * Statistics for UCT tag API * GPU-to-Infiniband HCA affinity support based on locality/distance (PCIe) * Bugfixes: * Fix overflow in RC/DC flush operations * Update description in SPEC file and README * Fix RoCE source port for dc_mlx5 flow control * Improve ucx_info help message * Fix segfault in UCP, due to int truncation in count_one_bits() * Multiple other bugfixes (full list on github) * Tested configurations: * InfiniBand: MLNX_OFED 4.4-4.5, distribution inbox drivers, rdma-core * CUDA: gdrcopy 1.2, cuda 9.1.85 * XPMEM: 2.6.2 * KNEM: 1.1.2- Update to v1.4.0 (bsc#1103494) * Features: * Improved support for installation with latest ROCm * Improved support for latest rdma-core * Added support for CUDA IPC for intra-node GPU, CUDA memory allocation cache for mem-type detection, latest Mellanox devices, Nvidia GPU managed memory, multiple connections between the same pair of workers, large worker address for client/server connection establishment and INADDR_ANY, and for bitwise atomics operations. * Bugfixes: * Performance fixes for rendezvous protocol * Memory hook fixes * Clang support fixes * Self tl multi-rail fix * Thread safety fixes in IB/RDMA transport * Compilation fixes with upstream rdma-core * Multiple minor bugfixes (full list on github) * Segfault fix for a code generated by armclang compiler * UCP memory-domain index fix for zero-copy active messages- Update to v1.3.1 (fate#325996) - Prevent potential out-of-order sending in shared memory active messages - CUDA: Include cudamem.h in source tarball, pass cudaFree memory size - Registration cache: fix large range lookup, handle shmat(REMAP)/mmap(FIXED) - Limit IB CQE size for specific ARM boards- Update to v1.3.0 (bsc#1104159) - Added stream-based communication API to UCP - Added support for GPU platforms: Nvidia CUDA and AMD ROCM software stacks - Added API for client/server based connection establishment - Added support for TCP transport - Support for InfiniBand tag-matching offload for DC and accelerated transports - Multi-rail support for eager and rendezvous protocols - Added support for tag-matching communications with CUDA buffers - Added ucp_rkey_ptr() to obtain pointer for shared memory region - Avoid progress overhead on unused transports - Improved scalability of software tag-matching by using a hash table - Added transparent huge-pages allocator - Added non-blocking flush and disconnect for UCP - Support fixed-address memory allocation via ucp_mem_map() - Added ucp_tag_send_nbr() API to avoid send request allocation - Support global addressing in all IB transports - Add support for external epoll fd and edge-triggered events - Added registration cache for knem - Initial support for Java bindings - Multiple bugfixes (full list on github) - Drop UCT-UD-fixed-compilation-by-gcc8.patch as it was fixed upstream - Refresh openucx-s390x-support.patch against latest sources- Remove libnuma-devel on s390x for older releases- Add UCT-UD-fixed-compilation-by-gcc8.patch to fix compilation with GCC8 (bsc#1084635)- Use right documentation path.- Update to 1.2.2 - Support including UCX API headers from C++ code - UD transport to handle unicast flood on RoCE fabric - Compilation fixes for gcc 7.1.1, clang 3.6, clang 5 - When UD transport is used with RoCE, packets intended for other peers may arrive on different adapters (as a result of unicast flooding). - This change adds packet filtering based on destination GIDs. Now the packet is silently dropped, if its destination GID does not match the local GID. - Added a new device ID for InfiniBand HCA- Drop doxygen BuildRequires: The documentation was already not built with this enabled. Removing the BR causes no regression in the package but eliminates a build cycle boost -> curl -> doxygen -> openucx -> boost- Rediff openucx-s390x-support.patch as p1 to be in line with potential git-generated patches.- Switch to version 1.2.1 (Fate#324050) Previous 1.3+ version was based on a development branch. Supported platforms - Shared memory: KNEM, CMA, XPMEM, SYSV, Posix - VERBs over InfiniBand and RoCE. VERBS over other RDMA interconnects (iWarp, OmniPath, etc.) is available for community evaluation and has not been tested in context of this release - Cray Gemini and Aries - Architectures: x86_64, ARMv8 (64bit), Power64 Features: - Added support for InfiniBand DC and UD transports, including accelerated verbs for Mellanox devices - Full support for PGAS/SHMEM interfaces, blocking and non-blocking APIs - Support for MPI tag matching, both in software and offload mode - Zero copy protocols and rendezvous, registration cache - Handling transport errors - Flow control for DC/RC - Dataypes support: contiguous, IOV, generic - Multi-threading support - Support for ARMv8 64bit architecture - A new API for efficient memory polling - Support for malloc-hooks and memory registration caching- Disable avx at configure level- Add openucx-s390x-support.patch to fix compilation on s390x - Compile openucx on s390x- Fix compilation on ppc- Update to snapshot 1.3+git44 * No changelog was found - Add -Wno-error and disable AVX/SSE as it is not guaranteed to exist.- Update to snapshot 0~git1727 * New: libucm. libucm is a standalone non-unloadable library which installs hooks for virtual memory changes in the current process.- Update to snapshot 0~git862 * License clarification on upstream's behalf- Initial package for build.opensuse.org (version 0~git713)ibs-power9-17 1762189033 1.15.0-150600.3.5.21.15.0-150600.3.5.21.15.0 ucx_infoucx_perftestucx_read_profileopenucxio_democmakeucxucx-config-version.cmakeucx-config.cmakeucx-targets.cmakeucx.pcopenucx-toolsNEWSopenucx-toolsLICENSEopenucxexampleshello_world_util.hucp_client_server.cucp_hello_world.cucp_util.huct_hello_world.cperftestREADMEmsg_pow2msg_pow2_largetest_types_ucptest_types_ucp_amotest_types_ucp_rmatest_types_ucttransports/usr/bin//usr/lib//usr/lib/openucx//usr/lib64//usr/lib64/cmake//usr/lib64/cmake/ucx//usr/lib64/pkgconfig//usr/share/doc/packages//usr/share/doc/packages/openucx-tools//usr/share/licenses//usr/share/licenses/openucx-tools//usr/share//usr/share/openucx//usr/share/openucx/examples//usr/share/openucx/perftest/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.suse.de/SUSE:Maintenance:41432/SUSE_SLE-15-SP6_Update/2317d2503d39928489709d2799d2b271-openucx.SUSE_SLE-15-SP6_Updatedrpmxz5ppc64le-suse-linuxELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, interpreter /lib64/ld64.so.2, BuildID[sha1]=5c9e1b7963938833cbe5360a83c2b3474f27b3b0, for GNU/Linux 4.3.0, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, interpreter /lib64/ld64.so.2, BuildID[sha1]=a24d73217c9bcba66e3b8115281881f644bd92f9, for GNU/Linux 4.3.0, strippedELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, interpreter /lib64/ld64.so.2, BuildID[sha1]=dd705ee838653174b975b952092cb4eac911b68d, for GNU/Linux 4.3.0, strippeddirectoryELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld64.so.2, BuildID[sha1]=36e8a231f1c772181ba595bd9505f44be214c808, for GNU/Linux 4.3.0, strippedASCII textpkgconfig fileC source, ASCII text' RRRRRRRR R R RRRRRRRRRRRRRRRRRRRRR RRRRRR RRPRRRINbp81&Lutf-8d2d45ee676c5fc109b77b598db8a58edb05cc356364224d9045e8a0109b017f3? 7zXZ !t/m]"k%N6cბbMb-.v%;Z N^&E1{Hh1m4rM,ɵ%֦7_0ZeBboWݟ8)”o祹Q&U 5w2!cL Vrڠ1@P?5Y:n+Y[L []n:7ƅi 9El̑-J#xlp!P%hߝ*$ Tk; %D1fs  BR#Y?RNnYFKسvj SK̽iR}ݺ`OXj$Y!t}P Ajߕ`nzp2wEӥA o3%y - (|[?ܕ(2P!(WvHC6Gsٞ{rtʦj"+"lU)Ɋ$*l ۪2J1=wrsa&tM^pLpIaw)&pnD`"M Bv2|:')eɼs ~ 'N0J\aWQ7dO4G:'Vh(?8 H/Ġ$oA#iet) BΨ&)xH%n*_?UP q Vۜ"u&@hM0^fLJ#԰q] ?N&5'\iRqb5IīA wjW^,5 0d0DN_AH*_`l68D~Ɣx{|7%q0@)"!'U%V)79 8{sng~>^xctᜃgAj!3% AD-TS;F usе8a%k&@r|(=xB\6̯WE3ӱm^ @'\Vs_a=Mɓܒ%=NFĹhNE%8ߍD(_6d FԹâR7ː)V4P':Ǭ: `YuydJ:mY(eOFT@(K(͵nax% RvzrOI*drYLkܑ\|NJ)}*~˵#j.B'zX]?D2`KYm{UB3JyGd-Wũp=V^5\!/ m_ENV|=0dE˝clgi9<+V 6u¹{]͂զ14d3m}nWn]da)sS3PSАsi&ܽW%A+ڴAe0I}9{޽-9e&plgZxj"JC BbKXj/xDm6m15IE7s{`@5"Dd9Bq6Ljd"{8$'IJ̨_V/ wԘUpΪ:^YW<_a[',J󸧑EayIZ:b*Iɦɡ#,rקGd<%)M;Uqbtv,?[:'eRN_0C#0gy|#zF7$=^ $kwIĸ_R, ö{U1V{p0r|݉,*X.T6#2rݴv:fߍ51aŠNꮥC<6eN [µ]@4l1 nԳC)"=KW"#x"ymDRY>bFt 7 $DY's4:JǴoZ6">1Z;3T#*uVjgL MBww1jrN( >s7+ԁk $Uv[G7;ao!YzhPo抸QEQfy9ʶ  G`8T9J+R}zKTr81Ś5,[р 5U \rP0&߸^5Cp >KB~MFYt &-sI3fm7ZtCV9cԜ~0ʞ5Y*=o&\>@C޸4qNSnɶ1tܕ1WYpͩ ^c6KS 5K^rTIJ㪲Ւ3(sN!4YeV[Iڀn{!'U|ّX@{S`l"=a($+טꂅR8~s qJ9\VU#"h֓G0VlRH>(wmo X'O#!Z "MG)҂Ǣ7aU?dݙ4sI%_;T)ƹ(8]*xJ9nI\ X^Ͱ'[b YֿRZ&h_adgSB ;p%m0$IQ "a~z2\rǓM h v4ڡF `L7]?`Kl׶&>Tj;NU@K9S# k1xIiS_OL"D& Q.bӘ"D8*r֛Ŵmvyu5_ӗM>NwSpLQA6Qi <-)hqlEm>pXHSMq=-n]ID,Ò>hu:v!.?)୩r.xOL_Y4`'7 !Z8x5Q;47mJ ϸHo6 Y'qZ.vIMӈ^'W\ﰉPJ<)jUV7MP6n-FJvQ3F|MR*AH3'1|W"h[ f.c+};o&X2xX$32l_0C7||/ٮL׆PݦCϷ@=KtsDY^/K -S!(1nOcfrFG:c72`2 ӄF&Ne+xJ*nQAJpmJIZ|HbHp5RGeq5`4{|4/pE:SD$$Z06Fv1T T$Vlw3(RRM#ދ)UP4?>ۍU fEĦ1aC 3pY8x FDwuv`lU6nD\tr'}/"B.*?1^%1 ݈/巣7pQ, [}2Ũ˽xh:'6[n}3y=Y`E..MF'ҙ?OO0YGI{V c"9Zr{y̥S^>`-C7 .EUM`{Tw՛gr/ڜ\p+<+KhP&r#KNJ֦lq8$r% \=rpRY? zvyrL{SXrcZ +[CMa]]Fqø2nk+Peu7E Y|i %Pm}v¢ԏKq[qf⬰eL5^Yn("|lf_`Oe٫S^"q̃>Lirf~X|94,YBq^DMÂ? 4=0 4A`r fBJoUo0ƾ#xћ&qvl`-mS!>H(MYIBUjPe>qʑ /ɗ"P 9_Xl!w ^.dcRt\GD|%[zmdj^seQ>"_lɭY}}Vib(F"$I7rDnݟRĵ.&qZ lx9 |k1'gPMm_|JC[lEzLt47;sfʙrvx/k]d[jU'G@R=9:V!P0mcb„ܜˀ[(I\7\zRo?!鵵YTDz\f$y ϼQ `VtZ s=0?>!uH8a YaK"J%4 2bq;hdZ?[EѹD(YR!ݻ86 %~b,]], h JSxWxѓ zZgmxt -!w%=9& 4^?v_LCt})G91Qyֈc:*'9-Q僲Qb݋e8KQ&r5I1&ᨎFC f0^2"#*bp@GAEH,ȩo*ʝcE ?Fuo=dBڑx<^$81ʾ0[=}s6ۅ%)5hBބu77 n+;fv6HPcڎ"Tl</1s8~cS^g REXFC]'֍JiF5[&<7ZwUx3qpu0&=.)"{zS&&Q&J xrlqXyI%61'%b=PY-[K< !Z?J#6kƹ胕/bU[jUF6Y5Zx]#f7׿s |.{ 6 3~ׄ S>+14*Ϻ+tN8Vud8R}\Gp֘?R%h7ݨR#Y3< n7w mvQYȉ5j~`\ْ. {Ia[>Ev Tz =IMf9lFjqt"*`~Ǔ),a`EthN7KIOy!mA*sYx.2of_N`Gb@ PU]I?(s$@wE:tAڹEV=.0k3*Fr᫙,SH߶QI|eOp ~WE)b:/^iO RLxwxvaةZs~/Ԥ7'G=@Xl Z/(/K&ҹ$dDxZ]"%~ӭT/3qeT6 vOLD&rmxFfl?= b/qa-\('a@.?bda{{USQQ3R}jH|\ j i4q5g|+^Ш_Ql\;:c)ʊ 6 rkm^'|T=Dn Z[y Yx5c% opq ;viuaYaKa>lU>Hڜw-0SˁPB_ ߸tUILq 4_M@zRd B;e-t2x&*j7d\I SM9dE{'WT#g,($eܷdޕÕMId?Fι:+ss0HtW>78 64^:" i +)ཋ@H).O ^6Ux"ϤoL#' S-&xJjso4m֡?>*kvu?k73:_)=YP;MaM%q 1hw>epD9{0!1K 6僶$.KgضGrs#k-%::Yd^7(ط 3ֈԖg)vкY<HrAρ6I7C%"k߬ .vdfM:gMb+YbKzZX0w3 O`x w%0ְ>ǓX#ӱ*[kb`mBZ$W^5IŹbHФH&STdk"Ws(O@+}@gnbr5}+sZ!j T1b>+1eA  MRBh+tDM,?׶ cj쑗&ɫVFi2)Ǒ(6+(F:P% 'k͞ÒĵNLI=Z_9$ e#}1v?U;+y!`y?c3[׵Ktp'%hQiQv'=#nƥ\>5UUX)5?i9x9g&7};"Y~s@MA@@R/և#tS x|;˸Wm\=ߡŽhC4m' JtPU%NT(k9iBYjP];"pnephcyO$l_^}| UىC4 D:Z,rNNXAϩVIdWP BdO3aGd]gzOE"ȍ ?[<^ Iz)!#L>3sz%"({&MrPT8g"{?j=cЯsb>ީprTEo0~&r:=Afl ]lcePj8>6ℋm%>Dgf^`YD~C0v #) >'L?OQr ,KPrfR{';WVi+֑Ft~dmE屺+% DKKT/nRٴ~ mDˏ qZ%2;@-9̐/c:*Z1(P>bA[ٰAupq0𡽨 ZffNy OT'Vyd$Q(ĐXV>4} s̪;0AޯxKS['|O U0DI,tp#M:ی&L,'d!.h3ΣZ^UvIxB$ Kd5[+p 3e)0|)>HѤFZ4;FĄQ0WR_*w8 # S]zǫ"pk! cW18w?|`:e蚭p!7D EOB_Fo3^$'wu`|Z=^?+LG2zZ:y|MR+jQi)9O'wb[ L\;|tq-PHE6TSwWY+ |_ALI}nsv4vغ? 5ͬ4v_o?=~ݪ3 vZa !i )"]1ӌX{\ohV>? %hn>iF1:v:L). ezAm-h޿6Ʊu\LWi/셩XN2-Ew# 'edHdH70v\ , l ]iuc -/Qr:;Nɴ}-.= =IUf"(gR>+3#cAO@->ppM$n:p<LqXS5ߩU<زC27I5О:?eNB'oFH& 8$r2,@Ȼ2t>]Oz z/.g8lj q_4f~i"dO#Zx-5_R y(G|Uf{O꾣ܸ 6j\373>`Ю'YZ8SvNSm 1﨓!.=N>,SZ!F/&.3TppKhMZnBM1W]!p&7t",Oyъ!4ć\ ~ AKo6M?˅(&k׬xqqa[~b)@?>Q ܦC1e=Tfq$ݕ! 79(5d]0x!wMk-V6%sX'TPRDR# C5z4a4ʹgz):XJ$ $U+WPv9}p1'en` x,VQ)waqGfN4[~ .i P;dMyL}eW]@pXI_‰pIi@c;DbM-Rp<+ަIo2r+7ocߏpCN$%;Ɖ1n<|P1X C= n|&alݲ`7X䣆Quv7)<2>7_ǻ j }Sy*6ؼ6ܖ`RW݇J6N,80w^9טڭ3k?:&v\J4RM7x(jt,C7rlÞ Ri1=d< Z8 `N,UZkd(6u9Uf@ejY<˸2ǭ*`}ˎj! cA~;3M.iH82]I'fʆ-'@]"l8i{d y|vw>fs*F^fpE8ܣO-vo(|sccf{Lj+{Z,4V<|Yg\ hYJ`|b1VcMpi?{bIN"ʄ)h('SoVcEֽ çsvkS jo獁=vZ/tra6&?mA#ZV`3QFR6=7a' j ?E)sgL瘄3wrSF+R?jx9>*^<p8bx֥`]΃{(n1jaYLAԟ|M=O˿=ړ|[ ֌J~eTh1{Muq1 Fϳ6X0Uހ]~cT7WWBYR4rN'sMekeC"ٗCzQכk.+K H KXREdSDpüG! -HB%9dGxR0:VEأx_R^j !!n, ܇ߑdx:{A*%L3#N%}jH<]N yqC@Ol.iˆc\3GY} \cX{8Xr)2 Ġ{ tZB{yzQUC hV{S5v`[wj`hڏCNlBDpϹ8tn__N_` 0b[z8Ce,B6J&9BûȨ .j'nks%# PRW0q=;H^P 'Σy2OpG=uR%(g3D82U ŦFcASߐQg>+o62WViYPw2d_s(Z]E,Sw[3sN] ܣaSo甂BKK\OomChSJ[M)mrij4.9qДjาnYxH&_G/)p|'63̩,;>EF4y;"e8/ecWG֋k4|xEԨL}ԖKXoOy|}{X6RI*F&ܵ>돹lr( *8,^ |{`m5&~|:EXj`HQJZR+geś'WX_NZ &DtpwpجYzڶ)4D]ۯ~!;-#7 j׷!i\D"^آvݏ7:7ib/TOT6?ʑ#4wBA K$PgʩL7)Y_RaTF&~]PIĀԲwt uE^z"㥴d` jPzG杰[ KLS̹/"" ycտqmy_$֋2.Y USgCUlXr2hq]ԿԛXBPMtGAutC0] u<ê L2 jW/Tׄ9t-0ͺ7 Slnߜ?uv5_kNCyo DxvGC;ڗa@rDrɶk~I0Puz{AʲlwP˴SzD_:A 6F7Q.AO%ԋVJ2InLZCI<{/vdt7a0qʎ $Q46E^K딯JV %e]c/S^zcTԭ6-n ʧsczMeB3蔋өÃ%\8fS]YpA[~2{-Ab/s1.l=jo9IIcm|"hMq`=Vg@{֕`wbU1Ԝj[rƎΣkfj>SiJ|ʼnxۻ'1ƭ?)Vxjq<*YJ&Q 4kY򶆒)qW3Ts~nָm n 8/7Xm}&I$&2LxI4iHE:78ӲN ejf B{hV7__|,kQw҂+ke5]mL"Ղf",@z4y5U3)nR$؝̹#}:f_Y5_^z]GC7~tW.mtk4pӍV?j< 3)4S.m?q:ΣGOQ(1J@1)1qZ'BtX繯'<%7{Ieܨ0-tRΦ%Gl[ZIQwijn /Z$^_Z x%p!s[l{ 񄯋 "."gsqWVdXr)FԧazRt@pG/A =0s~x@o)jhz:α4HE# K8 R8! A W#QZȱԂS];*.:79;z+QΜ+o˧!R|Dek/~81sضtc{06k>c]a`ucb\SEjޙȾ߿xrS&`%_ :C#8~I QS Qfiߥ /\VSW~݋^C7;2L1+RexPxcc-4G m-maMc@Y=!ہԓd1tRӟ`Zr)UډBMCP2_}҉5OX$K NRАQ^p/y+vc0,8|; Yq݈;]FېYDy9&4Z3jv2cB*[GДgAVyīV́\&hu'0*֙b >$ޙ~y-vsUzFR }&u @2{ġZI~ םy-9B%`<}^6Ȓ  [0k7="؈r d|rj { H˧Fp5 P'2CEGVki,C4F"%dUKk$2^ϽכaW"lZ/7Iqd2Mqr| I}<)iM]9~ŲΔB4׽CB&c6j24XVbK;IȠpY!< @2h`>=N$Z"3t^(]#[0>2ԏtiHm/p[‡=8{8\t "C.?R4? RQBSkvܸq,uͿԨ$" (s1܎"{*>QߗRNuH7Îozv z:v!Wv=Go Eq$IBEPy$rPD`M;3[0?~-͹' @eS%dVv$FxA w+]:= ]oܢ1%SAl|/qBv7WVNO׾rIl[Iʼnƃ$W^U* ă_>a,w~x&y?ѱl۶ž/ ۜ\@^TW9k{ ߦDR2&O˧dO T|xTVNsu|dY;q&A6.'KSYs.v& oc^^'JTJmԑvc~gSn 7 8|tM[e|ر"BQu=\ 斦CpvW|Sj ~EE‹W\Lwkws"qZfzTo-@ >aLEbW*Y&Ca3:y,.g$O#_5ԛUB_uF6,܈ε-vXxu7תi_yqj>H9pf$܉A6-Q%F$ 2cԟ{fla2+4vЕXMYrC7Nٕ覡O RK]'[yHLJ\k ]=!V }؎M/F}ީa=1j}oG4lt72^9ȕY#mŽʆCFN/ g-j5X+m аmJLiฤCƜ1iDJhjH_ـ8\7r[_Zx }9}ߜt7v 'E]'=5u1ĝƭ!Gl H"?jzɚGabm@4G.}XHCkіLejxRC%K~BpZܛۆj_\&iڢr'Xpd1i(vdn1ݘ6h8cՄ ]PL,{1qn1 S@=l)|[L(l{Jc Kp#Ȥ)-яig:oM]|5#F"0Hx^9{be|y-8sk~&9晗B6 doKjV}Ox3[\%ȄݢkN XHL,X=֚aqN9> ![E 3 Zvӗn`PszBfbcgİmssT;땑2ӹq*{K픏Ĝ ~#S4exK'‹564W>Em]̷ t$yݶ":0uD%-kA*!!3H6!b 09flܢ9+8M3{qewi6/vP_?kW"D#g<9A%4 +3x){CKO< 'W^}ۿVԴ^^,t ҍu {|E4qh7]:1le|# ?Y FEե|qG%kB):P" Ekngh.΂] oyu5KZ y_v}̝`?ϨOܣцX[7=cy'0 wr42q),N3dq&ĩ_0GB٢'q܌YkkK(x⹀*-oEYWeR}TںK8 y%PJ_^ƀY { >eI|L$hFɷMa2 3Ȗ`4 ⶢILPqzp<1Hսd]T(l7EQϝTBo02wvSyvSn?wp@E:',dЋ}u7ơKTp-3֟eԒq%v߄`aWBЕ9$;*̣.ؔs2_z۞TGL"Ҭ~aJW- 9 {yhG"}9{r^h(lKጮn]A5'lNBv7FKK-r }!/O|۟}22dR%t-[(k93572Ewr (vU P|_2N<#QxD QDMu;mcu[X|7'Yv~L9 ¦dAn%Blo@f1 q da1 1]3/Pt}KS"?p|kf >TYF*v}b PH@ٞU>A FV%[ qV ɒ[|PfVBw)f-o(DUq=Y%(\3eGt)dc8[8 >L|);\(BPn "'J?#&f{F͏އ i)WzjGWEqyԪsVt&DaWFD`"썌v L]JjˬHRyk Tsx}/F&7L8nECH{Q qJBjc~,AS 5`N* `LcwO&r% Zq@ ]903&FXnyJ,Hޅ]/L.t #X(J*rf󯟀uy`[F/}54s{.af)\Vx/ҫ՞WY|ǭ\ 'rVިa+0xeaybWVFIнprв氘>,<EA'&Ef^I^je/嬻htD< !y0)IL^݁i*0q(WObN 9 )n“ObHOJMD<>o fXb\1b,߬{Sh5م1V'h v,q|~Jt L08\&Z 'xp}lWhs2?=,\v31v)Ñr) 1q t]RHCJ+&. ETDž¡/;­fA!}VQ!吰%`-SFOڨ9^h %"x {/^bi B'|@Oਁr'|GȄTLdR"bMZ W. F&$ !+%>[~<2&p S2(N} :q7nwVLhӁvdY$npQXl[kq,K֨ej 3c㏻-M*dz 5"y{ x{ c$WD¬ec tuPqq|fL\Ӣ!dTn+Mo"fB~S*ɪbnͩX:O-F?Q `/A )?eSMuqѓGwi2/lDI=fe.3$EoViZ G0:ŔR)TϓvqI'HGeH`1OVZ`$e`0"9p;]rD~MQc E͔^(YBFgL["rW\NP= 8iI?RA8zp 2-_ Ж'_҇_ $ ݇`f Z}d3tB|0l$0#PIU@ۓE.sQki. i냝ԂJrwW?ˀd PA59t-^1lӆIJǑH@))Ǥ6Az|9p|>*g ϙ}Ps(YdSSѩnBoG5] x8^!gל8> ǵoCVO0JD|#M6{o XQ۸;]-y)G$l7پV`q煕 9i[THQ Q?; vLqP;=r64^&R`@C_m)%Stn+f3@%r"j! s8:v,MU? w|%~X(4lI^k2نҕޝn!qpԨfCt.Qx"7["!e!jjhv}h,%mzڻb8ʴ3:ChM'z઄b 4 쌥RjIѾݤfSWg;OBϯ?΀Lu{ @TҵuSV$aSQd{w깋`\QƒPI>II9$^kqmơ|6qpQ@A'r`I#)yXn>{Mn+RL" zʭθPMYk -mfN}N4|ͣI3وpi`uwN*NW 8zI ud<0#] 2=WUQ콵%Z꓿h*$uhفf$@޿2M:>$tGh;]0%tdxJ Uxd= gϯj d8I .0`YVO ͘7N=MBO'Eԍ~vV~ Mяbڂ< MGgv44ޑ]P9'_$1Z&`,_b`wwƜ9LXAIE9fiP듓_K[rcFQ0DN"Noh khT],8:ՊDC\OYߣn&mӛO4k]45/kc9=qzƪeȱ冾F*v'n}\ upy2G -h-g5s=}0"7场ǂ[ΏO`/:،)ZNu>\r6=-۴:na*\)bL~hX.UJUiDv9KO8]ϝ ~e |H߫a#eMˑg?vwD3_ƙBBT}ؽw%X½RTZ,FKc1] !ʬO#3 ^(%cLsMC dvniE6#o*.r}7[gӪs\(1@KboA  nz2kzJR)_ȼU"^;.) +hٽtƽ5zr,?S.<`#t1tz?߆ڰT k y]aH*r6j~W:v>!e[8ߤY ]H'w*O#4e2XC-P˯Rnȼikٻϣ]یv=ugXmKW5gu3O˽d_:#Ry}-65LW8ľ@WghOK@GvIJ}]㛚Mnw}#oV94 a4ZS;R'84.kU.heSv7Ojվ?a=5? {0'.K P`Mb]eAza}(βⱆrD$La&ЬԸbIqz# }[P ZRQɚjxr܆Ӎ%(h״ԟ\<cDkz.ssO9VCp"(/uZs|<Ͻ*v&>պ Xm`GIìf=yGD7q<>>ojGJtՀ/`KD*r1[NrlHcm?Pa.QN,M>I4UZb-lT<(Qҏ.04<Z6jZg=Í/, ۬nJ1t}jvR7byX)U;~ 9Nw9#N ^f|+Cr:\˶dHT80G@B]$auF[Ky3,u(%.WUNH67Ek&,D~^^L4tLY\)PcŠM`M R%^aA2 XAv5xSpKBe5UC}nn* jyQ)XN{ 2gb'l]a'>ϹL9fe{z*ዒGl8, ,[}/އǏ{$Дo&)s <~hګd㖺#5~+Kb27;|d|܁j裥ZdR+B\lQjt@0P*ZeU-#HP+_kXSZP u*{I>K$fD}|o4sf:JBrzlR:$l"0Eqf j)fN8nS$3@`m}ᾠd4A5]zD:pk0hnX{aƹl ]Kqwv]$/9X.@麲tA>tʗR% S?_FfM1#˻Σ ;3d%+)1(9w \GW,h2  uv:XsI FþQ69Nl*B?J~./Xѷx3jpK+0P6Z'i&ߪ8_jJ?BEd)!phm˩;"<_]lQ_l'.XP(2ORЮ-4%p֛_d;o0۔dZ a,K#p&MNfJO‰wmi!πYˬZ,Rr"2S[.g>O) W'艼RɄJwn˼)i>'D2|YS\MgZl\WE&Գa1@ǸTfpYGOi(4)3}v>Q-jƏw(1ğHɀ篶y8m"?n-Pi+M(U!4*HeR 0sQτzsbC$6eL=s0$AO}ęx~}#j}a<4EG~ }ETs?I9c|W05%Qpd^-3,k} Ϣkp=X~ rb6)Q>ފ5Gfy j) 8@/;#Ҳ<}+.'wfnFNZae=B9$%@g+1=u+aQ=ь/hv6D;0{-(z`}2ZJ饿;e M[Ȏn<.ha[*ARGm]I%[eP]` wk"CU3%P)p|/9wg6ș\u,wUIoHYaY›uvO6ލ\hFAt>z] $de9Y*8ꬁj8C)~ Z7$WqÆb'xO[Kp JƷt82$"cR}xKs}nl2v'MA󐌊'IG ; n0 m2mVRv~QĢ[=DJL} 3D.'˅zt.|`%(0e3!B)EF8 =9[WN`L ջ( +gL֯5Ҧ>X `Pډ.Ew[\Lu䃧ן2oZg4`xQGڵ7EeS4`lQdZ!XiT}O3 QCd^M|!k,{b X<7 BXHxu @Q- 0/č^"(PsR3b ="07\yld(ޒS XټHB4SD'A|r[ɎO _YL̵v^o׽Ut O]A8V6蝬(޽Xt!r4T]8^&I!n.le[rzQ=?6jLu;OO1daV}e>* l\aOW Y&|s&P~idtU ;蛝]lA{@l8;'%"6% p[ DcBsxp$U;|,6+$QfE\&u Fo\;X7yT#>nD;poœwɁ.3 ѦIvDzӦ+*}$YHp7b^ q׃t.Ti~? 2E%Ɔ<c.I?z7]̛T:-r:.k]C\7Ci["wK3uvvU{9e~L*O)QD1/{e?T>iSڅ) z-f[\]v Ϟ(4/2d4SOQQͽoI*V.Vƙ(8yzPM1'*5'_6PV1ijx([d:)ȡ$6z2/٧>\ȍ |Z-kː2\5Hm!t5AFme )*7vi,`ThzHwŕtn>bhהxM,SmXĤ78\){zvJ{dIWT95#3K牁fQ\VUWC ,AAOԶgl[īdZ+:Up<KYZ6 5j'V;8׈n)KUA+ĩ'ː4+^QJ(N4-g*ex_b6+ 0-%}-m^ /oε"ZuBV&IdX, 16~j\җ9o. |P?uͅձiSYm ٰ @!fR(k߶[RɐO݄b4>Q <}J5ei(2Mci0]b|{_ڰu@1څ yg4z]q8)6Y]Y}WR'!׼)1p;ISӄYᥰ곔G9_2-mŊ~j֬C}9dsM>rO׵j!g#ᑼdIC(p^!DyPd!mQyA`~RPD¼{q0ߤqwyD˂?+wcoBWZV>&6^|.34ٿw!IlDm#{+e ICÂ'}F!m|ꮻ3BhXs̹4^9*salm^$k po=6>#ߟ댩{1)qO7OyLqn ֎lqt$}&QQºHazu+eX<5OVg>> 's!_[/klD{xwƦlkl-+ ݐ y[UtiCy'U<(2' c.2F&/6_ ߫1z' 'zt`3O R$@l6g~~Xע.yO9XTe%޸<->4c<퓀|ދ(q8.xZߌ!P~:>'>[ؾ3r~m-Ӣ|߭7#ꟅC^]# Uݛ4"X٭Kx#h*ԴґL~+(w,/<ܲ=m4޲]{Y9 DAwSJ@[0ObŬl@ޏy39ZUO0Cȴ|Ѹi:䄵VV\dD HBMRk++*N҃o`17dګ>&]?fB*Dc`.] UxY9 +888phptu6̧81∷ r(1?<3^5/a#IƳqTߪA6ib5my~V@է9BG2Hx؈jkKUZm '.i\ =WۍLǽ&Hmw(չ/:]5.L"dW^Px Ҳ7 _)S a)(؀+φT+n>Ґ ^ͫoSbcs4YMQ'_,NsԖ4WQj L3j:գ+y& hl9iL&Η @PbDgӭ {ɉ{ &MR ~L6+X3ÏdOi3˱-,L ,͔}!˺K^E&JYw#YJɱ3=H723ֻi"ndy6|#u@p"FV튇% 5pi]Ϫ @pbF`MDқ955YI)WeASw4R=B'/ "k;+ -ʽ{7,حvpBU2cո)ENӢAΤ> !rߎ^!p5BY _Nd\ j@Lyr?!Ϻ/Oئ@snFi_7qL4ZQu0LD>HgU-|C#)vs$Ѣ{_Whohvd$ Vz.EEgC7P '%zq?vV2Xo4tnr<׸ӓ Zc=ᢀ yh_nEmX#racAh\1-)Mm-NZP[_&`!$@yӯߜ*jA|>ǻ;$Hc>qeZ ؠ[z`mO-$$DS=~xCS,[E)!A!oBJ"!2N@*Q-J ߀G)>pԡ1M^-.vZB\?˺}JO<0R:U.2 zgE%͖YVa\#c1^a C.(K <&11ć)xnܢnƋy jn(tVR$ҜDr+;tʞ0~΁[^~5_Ihkҝ҈c} ]#2QG`؉6>!_DR|aS@IşCwE5)(~ X&@YDz%nU&fPa]+Q6!]sI~Juoz*bdful܂?-B#ߟxLnj~`8'r'ӨzdJ~{IӰimQxiP)K>ƀ>|$}#+=avPNNr0Sm ĕhX|]Kunw*? O[z=\@]6`qR0%M#U%R,u?BrKfb"FC8R ,zKnR#Л@v+O J tͥN]4O$^[#۹Bh(&]dUct=hNNJ]uC8^*4 k U./\@d8 ҉>E !gg8,eg8ހH VT <ӈm%_~h:MIf:Z'LVF''\^0?Hhe=Pw+ă4@g4,vFnzQWTl0{Eˠ+|Z&p O.3Smqc9HrQX5z/HcS :^RPP`9VsnYaho]صw+w/Y!1؛λHz9GdeLdJWQ=T>mViu؊@iEFTF`@XJ/b9*ܤuɑV21Pq͹ (-Fރ/䩝,:9F~?}'RC0C?&݌T]?5ag2ۗo(pwAFd,q4zr.nT^/csR`e2|c0 M`8O]fRkal/QTđ$ڦ񂾼IbzRd T$Xt!P*ѩ&0!dg@eED_*wcg:3^hߣg3Ř&S0 88\ aP^%tzӁB;<)[(i;lG|`j xh9r42ņxePމfi\>L57=% 6.ߵu|m 7RQ1-j[jz~(-!m&{$✐,F{)zV,4f*'DWÒlJRRN}Wk((xMjl$|vJ'!P{dktX"SHSs=N~ d$2 (~/`*ȺBR81觫U}];cqfUxO/DՎx71V"Y$~'0ĥڙur -H:b!sqχ[ED9Q .[l~aDAh&hXar Sd] Muy<Ɯ (D X?qQްG;GR٪"M8Q̦G.^ciO?no.#b<:Gw0HD |[mvZ`ygd$!t"sE$BQrKLJ_l)#}8ILI ǜ#qϹ$CW}wIׂThoR9)|ᵽ׼iks:yrI%Yԕ&\_< NMBPJ̼yՏ {JnGCt`sd2YHǀ>= JGqr, Vj02W^4EU9fEeHPt4yF8ʌ[ݜ I~7MHN[W`IEÚu_jH~S-9ai ϭDٝќ7aaױz0aRM JhdܜIDBa2+sv/VvM~:!3D)=8ؿ bW_p`f4H#֊i X]A|n,a7 M.m.:!gi0e[W dXcC gTTϩ I`Qʁ VShS3 ]YfQ'X."dR#jQd졉t?@D1\%RcZYrU2Ƅ9,CC`JN8rxLb\M!BZt6zCׇEtp+Xi[t7Ÿ/ܜx%޼myZ%DvA:$BpmԺ o~*9e;OϚH_?Ŋr&c褨÷"$(VŇeQ@u3=B_QΎ=2\r6nrΩc)bElVyc70z1-lTcӇL;y+^cAe]YE[*t*Z0*Q͉5[Jay gP؂ FFA$Wsv z B$J!yڸ Xޜ=^2?861ݜ̺BBWO5Տ6涍9tb X`U3a_dyҌ$ḷaXhdZ:%{}$7L@o)gЍlq\X89Fw.~ 3En0: oH=O 9| yR?WgmQt~C~Vg:DtВlkDWJ]rH)!`Mu]2Of( `\ V zSlj3_E F&U by֖J1n^-\C 6ml+*RTZ|.@iE[/'*1P]E)G9rl>D[bLe2o?'܁[DcwAS-D.+/2ȁn4UIǃIq7R!+ GaB߄ tP)uڎ,p3]QsXotusN} rHe&A_W`aF 9n,=E9KeӖ-_Fio/7+<_j)(W> Ǹ^y̑ż{FsRq`dШS:蟗?H/,7s)> a 0j>0(Tgڎ@%ɋ֥ 题.+wKtÁPԁC$Mh ?{Ijݜ|TT=rwoP$ClR_ oLaʨRNz`K@bOqQ9 >XKƝzpm'=c]zu ,%WKH910C >]SBÕ2Ʈ"|Ry hnT7$~]f xf:;d 1hanKuHD'U٧#6:>ᵂ|pAT='=ۗFMu-__mljNeP&/͉;1`H ߲*+BLZ#w C LLz Z$U!6x?NV9<Iax]OeY5đsZzt=UeX< mTp)`B?M! M PmjDj}k8w@yO;yg j}"dqv؅⋻yprh+b0:cZ y ɯ9%/3!K"ԏMg" By~pݯэV%%&젉p+OfE$R.R~u>nEU~$fbna;뼎nus( PoPn `0ɌK]ϐ,]@Xxwy;_#w]yf(Luz>1۽+SMG\r&֭c ƹI}C/u(bJQO(ϕ%A#P&R*T/"U,6l\$l 76,-NaYGc~A`jzl| 4(p,n {/eʛZHsJ|`V~3\V#b/v6}O<1O8 (Aԇ]0e |H.u5Ҋ{3Z7#b[~_BB͉st$XgՔZCB)?-o[kHqKĝ;kO7ݗ|.!KXwꃶb}am2tSvgwIc%@hJOH `r&X--ݢCo:ȅ݉밖C̮S`޵dD\؍Z{0'Cc$iClTDx,?%GҭKn6 }EwuV1&W!ݨ.Z隼RMn_.;?<\ ךl)}]wu36ts a3dWɵ]v3UgA|P[Kmd~;vrUI8AmBLn|םyQ&v25@OZ*٫JV%Y4{~/r%ơt0hVEǶY3M_K+ZzvXp}K.3r¢hQ =H0t\QC)6?,ux9٤&{?d ÚchbzHn<<HθA~e)"mVs5̛eq+z~ 6dBw5,Z9gTAd27%=Qm=cLN2-+y俈u/ñ㾍V|_9GǮ`u!$^?;])}"zkb$aaf ȍ]8Av#=!rs7VDNRUd(Rg@⚩. *S$ Ȇf:s&b XpYqfݑ J,u>J`7P/"89sҍKoĬldokdYZ!j6vf.[@؛UkkE6HI pУ½!MDy64vʛS8Yţ|m\o{PBSzg큙EOfY*ߨ|)319%D.ث/ @s?`ql}F &KG\̙Q|E5b}wHj`JҶ?OV6 e) MGmM|r,ɟ Ԣ? ]6Ty ?X Ԭq.0ɫ>d"(LRr+XY4񶵗:Ͼ3Qׂ|zDɛw;-{P+ki1a?J)W^-gmpa*-i;z.?tN,}<+/iYz^ P 7tM}'&$/r+v[?K褨jM6vDߘYN"fG.ԛ(0K:"!4~?4'k n '暻EۃK O,%**̄dh)X ϿV=A So\1-7Jț K^OnD8+p%U=&R:snhc }k$AIk7 .XSۺ^EWOHʻg⋃9获AUg\ͽ$M4*ڀH^"-cn #3J}"62@=+#9n?C-49 )D#+.p|oHdDd#[tY^ӓdFr]̘u%@8ZUV㭻KR>lQAT}n5~xzôϗR+~*/7IIIKz 'LvҀyRE>bİdN:1G Igr VQ0蠕9K,fMDiɂ`홐&}l国pf`"M/tLK?6 d TrBX ͥ 0sΎf٤xX!11F* jh΋m\.0Reb)[en݋Cf'k%67T_~ip}%vcل{ Nlʋߜ\n[0RdP!"g O҆%R2XV JF\| q|/XH '/u/G+YV(uN$xrvSmXB_\$Lj*dNxZ)+Rj0o R1yS-(p:=>ub@>d~6n ǧwL8'ȇzm&`yI,J~TF>hz.};}B~ѓhm%j| Aqǟ0GE9?WaP8Taku&k`wcO[Vn^HaC)fFkUɤY@~CqrFw&)W_x&v[ǹ}}dqΆ<SJLgh䥯UW&РR731l5Uoj- c}aqM#L"mP. p9k#/ҽ 4>9+^lt?2 I|>@z}Uy.v>⎘O7"l94E)Ɣ, *wJ/y.2M{,cK9O> `HVZc{I~ էqח[YïZ~u h5_ՒBؖ6 rįE|d[وR !tOhqJf:sd ?.sB~Ø ![.dگjOQOP)B Ț$Hj9!h rE98N~"Z;nA9p XPvnao5k c!Y7g8N Upc%X5C4& y:jm-FK1p aEiJ6*gPyY :&M h|!fFY<)ZbŚ?O$;B~ SC/3?m 1 —؅XTQ_ڕo衕ڦ3zcz.o?pzxigaԨ(,uTLnwSwgBЬaJR^4Ag~~y׻V/.[ƹaJ^dV|dL\b">Nxfv/Nb8\/ ٖtgT[\3-ڼKRS+z[:ѪSY XP2Tj=e+E(e[W*V/V  07XDijIRV|p"qd'y(%dO*: N;d )_y1 ; դB vC)~%:IdgPSC'>1hʕ[Vj԰3{G/g2%ہ-zjX(gЯj);5v88Fؔ"ג$.%W6Jr>r=S06!_Ij2oZ#GWc@X Z̭RSxpcf҈,Qp8Pi FItb(~&ݷ4VJზ=|~vPacRli~:x x{\] O= \aKn+~sޭ9q[h?oJp˧UP: !9B$ AWP 羻;!*!Ԧr׃۩+BƑBYm5{ OZjPG݅Mf:=ĭ m%3 1t/\PqۦxC"+,q"6KTMF9L"_S:9U]&)Q:ڙ茍EA\1ShRg}Q(6ETd [0%h;>e ojr;XbHjBO%BM99Y4K,;Ty)>1.amջYduLpxțrgW9auLtMmOt~[}ƌo{{$yy0iSMjjs(/`|15. t갉Qbb[n KGxN:Q' ڝح Հ2[6,X}i:@٩r {>ǖ)!w`A6ɪEzR3KosET<l`9 (2]UBl nk2TEyKL$+j!9"n =F-.]IKu2To}HkLKuHXzѐ+3heUD7| Z"z R|%RA ִ #=ԕ&3AIh^474.r{1۔ЍJ!G]`}3r]=~g-k~2W3jݻKmZ>4&Cpil+'WM]L?3ְVpQM`Ċ/|g.\S jJdE6$ :!QazDoHnC0eiZ mJː a*+O㝀FudX nt̕`=iL;!״D) /AFr#uY {&Y*'g!2qA!EΣqT{GMـMPFҤxÝE\ ş.(\̂bTwDgHN :.>Wg i3`mKk=&N]Uپ&6g5ݲӝn"Sv&,NG$kXɿn UkPRf]0uq%Bߟ~})$ߩ'oΒĩZ^rCӅCOLR&klUl"C};|#(?I+1V?PUj@^#MT km-Ea(ZjE,λu:9(?7qy\T;}%ASɎRi~1Wq|~ c, 5|atM3v'Ej[y0-#uzE٬'en"/af⃒L6 7\j3-'{] GI!c>׌+ΔP#amT]z'=jG+I CI/zoFOE*{~>]Ȑ+5!~OUa«?2li? DeQ꜋ܼM6؉ݟ}]t't+ guz=RUyCCUN_]nBWۨ:A,Fc6v{Gb_ȈLčb w 7xL;B *j6؈$J l˩znB48Kl.WU>i7Hb0TrN&K{{cd(΢>U\>J0=S"ԯrq?-S> டw䖨oA*\NP}2N=8 4íh-@>XE`bxԖPZ, hjQvɓ;YTǝumʌ wT鲶JGN%C4D\_'FS[U ha! +)жecK~=O)ETZGQvȇK*rZMwtB "x$P;HbИ IlfC.׬+﮷f6f85#dy*Q KDᖔTkľ eW۹w<{r.<~cWgrRU"Ez+ϧ{"Eͥ)׹UD~6zeHPHo6D߬<e1$rM) L] ٻy3chra^!n9d@9u*pC,A1~y H^ɤ7a|]>ss["]:AtbFm7J1e^"0fJ%AfI#үzZ>S zWfߐs()b.Zђ -^@"ŰP%0H^ p7%\A2's DQlsqYTswp+$B5M;:Na4VWR-vЍ5#}ZFyFNJ7\$F- VY?ܽ~yE;g< 3X/[;y>C6 );\{Kҹ#ac}9x79d`ep0/ulfICOZC4и0!K UN5Vt09!dl0 k8VR먭>.;XG1 Bh|} 3K3(aÊw#+l#\Ukd;$va0d k<@zoِ;4 q: TGmvQv!R;ew1SKɐLD3S!Rk . qP$PVԠN6O$ rѬ VWW8QKWGg jg&ZȕMgI*ռس\mS)w̻Q+ӑ!ѽt^=6d C*Zݡ}7/+8`:+ڂt7ٮυ/UBs &<a6'XN|N,/*wi]dF[53gvO-rE7h+VЕ\m68X*<*TH|RwMZ.)MRwA]ļ<fS[/NT;&nwvvSp(ϱ 2BaG 8u (Bs7 j+U^תcRM˗S)Ag hKz}U}cx|{2@@_Iq*Jh0+֎Z̵z<Iǟކ ϬÛ++~mG;\=h T8>SFԫSe[' |+,B|k0mZ%iDF \cfʇLӻ˗?S'@msxEǰ^RM '`nm5p}!,B H #==k*^?\UF!ϖR8Gp<يRaFgYX|uHDfzb(Jf۲ {=uR"R0k4LBE{~^<9 7nRP.HvI z.yK3"m^ySYs&iK3Zp͠,Z*N$X(ztЉZc`]2u;莖&^ъ q?ihͰi)~^ij7ވf4r@?/,mXo e\ge|, MM>v9\ϣ')HAKHFDw1Cթ?;7Xnu_ olf1>V4jƢG#h0Y#h̃dZ6=*&[qśS-[Yl 6I,vDoHF"1GHp(3IM0:n٤ GvH^ kݩZGwq%| 8^Kb>?u;{;%U(G2O9&@ɩ%7'G zQ𙵀Cg*Uz' zp.k%{6PE7II+Z3C.3!-{"WIR$M58҄b+EK 5)nsbfdB8?",CFfƮn;7 ekPyj yHD˩ 䅼y=iL>knb,(O`]frWxexS 91O1em=ڒ/ OD.g}wK&FVFpE(%L B@EDQc>zCdhA!KZH#\SUӵ{ëz%(ܜ>*b+ۤԫ]'/˼o^%PZ(%HLu,ņ G=~^C&*cXb<6*cO|G"7@ =PD;旷Ͻ.EX^˦d\e;3OT¶Trը=@:I?]$Nn=(Sbe {9?.bcmbnՍk~B4!޽e2(nl[ Aag$:yNQ"}b?y͑6^W-NS!fw{I+RF$0H:V{?~SDF^+x"2v]\Zl^@c${ ? 's0-HAhzgv֕=aIZPh鍅8 7)pwWkV/ -wClU",< c>,Az{uᆙQR$c6i! 3Z۴fniXx֔4JT*}.6B9&j)dHtC\X ɑNR:3ݹ )KJ4.cЯ+鎩i\MdZlQ'ʏCCxGx^tX0pg X%!n;Շ@#Y_w҅U#S%h%U"ȕ5NOXA:G2J@3 HCuf3wPŒEΠ]kLRq6 zݳONFg  vV%P_<'j\^ܣhA*Fl:lP:#RI 7i/;M;3o2:%X~ز㶲zj}jGȚRN23>5N+FXNcxG' EE{nV"fqUf{u}-Z X+ƻ>c'm"*$IROIFjE0: y̧푗X)pK(fiZ@)!͵ިFf]2on"`:\e{?@uTy߸9pG}<A>WX{j6jnZ^yϓ9^#u RPWAQ=r\9BO3[kP$V -7U*ǙtjvҭQΧx[HZj]gILԼ`ub\8r8ځEB4cc(?Sjmt3r"xxhqDn[?# 'ɎyQ{9KemF <(DҪFW363{{w%Wۦ:8vqЅ69a>SzXr5*F0HHNd.W o OT0-4d|vlBJqF7@B -I(N&cl5eP f:,k7v䔓IseoFT¡I`|ު5.AbMѬcv~lKEb9 Ț)[Yʯ=˻m:!h/oB).5Ttkq;%8?>SMvWDgXHk̖Ժ ǡj@H9(9ݶDKFu :=iC՞GГu^CVz|M9Ix}o ë ONLz00\̈́?aaGe}V_$ 2txn"'phM+d`T Lv0_AJ9 dN-tey!tI:FJ`FK-./BFmkB,,sg1:(?gpH2씗;~4X$]N!>*hoMDBOjw0:b&diIc4ohPE&sxr ]_m6dj6U?ʚg&Y[t5ԩY'ƅ.p^$ۺ/fHۙVr?e7WFq Ef}StLr!}マ,$'Zh %4yrKDHjfJsGa`\?8*B_PzB|t/ X:jЗ'\ϷZ(]i T} hxZeDnf0TQտ@+ >:eYFv<ԌDB,`PW$(7ΩcmW۫~ ׅM ݊k|AͨYRmS_3HftՎ_S|YbzE M(6HES@zN)j &3`Q,zN/d%R)[rP`0\/!TP&;M^C28t\F5Kt^\U`3lScO)ڢlwEw%@ Kk/r99T-NjG_r7({^ ^dKnYU>E]q_1`7E oyE@9#Q媫CgmL(oA D`}rE`.Тu{H{0"P9. !qFm ?^ãS;0*GtXǡ#R]u3[á-B.dh’: u}c2ˑ&1AvRT}fMpyؾj,/-=; o=)>)s; \NgG*gSUkOawaEUU^֜}LpY]½_x4%…YBc*2K`n"»srڐ,/kN1Fyʱܿu4}$1GFJO4vu|D룆->ȏݰެtSUIgz.bPx_f2z6ds&# Q$Nήs l7!5C &r}dg΅F4뱲gcflRq%+'sL,7zO4v7 +x`D|-kǣ=B9:}Exi!ao3,92`34k4>煮X"iʡ!Dj \qeb/ pUag4DfEqBNBྭsbi?kX9&}^w'_*waGDgqge%f C@-ؕ]rI/Q=BaGbO6+_<#rR3&tVf(h{{rvvBFax}ן7Rk}DHF$b+Mlq(1P3-ǢvKH o;,:ih1)@W儔"u_T#C]eBL[15?,ܰY?*4Aqgض^g=Z S$W*VZn4m Rڈ=n{4Nz+*Fyjث忆̓C +W[݊#0 :UEShlӤz 4<0U\G{l)Z'G׻Q -/MX3[=̰ l^m..k8PDqHšR $Q}P+3m䫡`Xxd *KJ9 a,6z–SphLB"ݴ%0FnKzCg!I`)4UYBYOwlyȖhB4 `R$E oΧ1lTxR45z-n|hKYׄۮEE@^9~IZ@9`[`ndA<&Q ıɘMcg],u7ʩx} ŹN*C! =B[I hDƢ˃!-Rerq~p2КDd@NI<)}[ɹycSrUc7O:\"] vUdeӿsz8;`hX.SYsN W[=nI$;öW7tI=75"Z;&5L!#\e̦Y':! A9^ڊY pyџlw3WvO䎚Rl!%ʞgN 8ic%]3DӸ1-WW~=^EIt\;~}g3kۧf?-QgN4W?-G?Q;-CsvmqH[,M1# 5r~09Ƃy2olzsn1*G s(߮zw|QzokFvn@k9͛j#2I0e,^R)PXM چmݥ3/>[%CKDzlg~FNQެ^;t+ Q-YBU]IA2l8ɦhq ^SA{3~b/jhKaAij2B\c+6W HuRjz6Y 9CҦ<%+~X,fk.J$F0zJь=&Bk=`l |\|~KJ_2oRyJŭ{?nש$IẳӾBLU8!Qt[ ULw&%1ZG@tx -Ԙ!yCXI Gߘ_G(j[;>4˔4A UCoj'5]4!<b#*@ sPU?c$.[ Hy˖N<_@ (rE{^hP2J(56V)q?K† ι:Y9W?1YW$J@{:5آ _>MYDzq W}"kM #X9lk4 -AΣNm1 x*9xq8W_U:z4pyrp#AwQe#đ *|A1m^*CxESȭ0slo]o@깆^CkYgNC@hdZD~bMT`-P Z#$y6Y{kj~)!?kV: xGREo ٫Taᶼ k:WZkt0`H'+&V]Av:OEgQҬpZzOqتO$$Q*gW@IUM-<ՠ1szquAei>a ڄ[w^3B bXg0,fOaX/aI<;v#Onxz3VF[%5¬0ъm p8~Jm-:ZB{U:<91$Đwyф\.MQ2o%5oh#`W!t0vZy?5NELcN>kA9s7y+ж C啽abǢg3p(L]D(f +̼iS.0?-g\-N6-HRId1߅Gjt#iMAh/|ibDWO5pQUx>}5PZzMh <ϲw"OBuEN}Jl1\N[C.n g_DSٷn\ hf6*ɚMG#bhS1氻CT?e3x:|RV>s3_2[01 jgWc I/_#]_mr͐zƵh`*OM`[zr%p#5ʆ#Is:7k$gE F:ֱmDDnȾ=oC9d &$ˮ-&"2*|G*mJ窇TI; DߚG<ý=v3 }6F/a{B̥_< mXsPtGP9xl*is]by2S(ZQu!`pN/06 2 R,&f\+V=C?L<ϕ2XpMН4".L~Чn8a<_`"k{*м_trDdQ뺾8En,I.0hA?{ΏPc0 ]S#KH[n.yEenϺ_IĹI Nyeq?q|Dd{㝳Uf'e٧^բ͒/c.xT}!`#za-xZ˔acй/5U ڌ:$#(aNx` ͆I)&S ӱ_b'rEw&7Ejؖ! ;wڶ@fyפ*֋r+>:,avrSҳ1Dr3& g)+#,FI (?bgO!an}=v U`҆mD#rƚu[*kʼn}~]MMto>8d0I. 5W]BR6fd @\:< +N$Ûd0(8h¾Jj, @/n9m}fز H[4 yTkاoz1w~QȎ]U\ icɖ9=s' Ks-TQūx-1A_z(E $ 2ߟ?wd@VLEjb L t7`_#?L!kcwJ"IƩ咵׫b1(K;M؍zIb>&]'"iVv<#QMKgU*9˽\o6)-WJ!4%dU H"ǜ3]g >xKOcȶGn7 Iuد{%7b%mof6iq\$h#|>ZR6䪷FM,P=bJcIn/8#tF${gN4{CHD(Le4nL$|vz6l"*c2wã!D gDmq%t=uFw- -wU`"~vQnyK.=bZ97AeGs֔IGEԽ{I_-i|x}nۓb68 w x"-c\#K*gG:tx௔ʉ/⌦$H0i,1!-]4bg)m$~">7[*PNa\f4`#}8rչP+zodG={FEH@ A&h($!'jwh/mgfRIm3Intr`PRFv*cST=22fé 3%. P[F?- GPnO()"J>Y2 s-;KF|)~w{^`vs1^L)1yΉWooK?xy;N[̨Ҏ\!??os l<4POn!-%!b( x5jb 0AP% :CnӼk_.{@}.>EC2JϪAW95yX>t?̛yFf_gG (%~uX%pnLp(7ߢ堔W^p"ѽXS8#n0`22LkHUDt% $ԃ .iUGK} /l`d:9F~}dc~ ObH$ b|>HCj%~&HAaGri7✦In>TsjCu[ybDz|[|9;knFTvVF>r7X {CAXH|5Qb4n9Nߠ soJZQ6vA=?[Yߚi$i 7m]/M%#we>MX#UvQq{(㯊7)^U3^cԶpN-]Z]R^ NRר_;s E 6a~ }هّAt,ؠ`-JFeSwsdVDD#F i/6 a;4wo} o29-P7ERk^a WB}i@>+Ls鋚!ݻ&̹wwDVWcЇ~5.:7!P$@'fOz@k L-j 28xkBAK^s̷ `%jq5YRSҡH-9l!*|@/^AlU}A@tZvn9%V+w){k,D dv[4㘩 kpf. Y1vglb9*d+;Qp-> 7i8<]<sa,،e| ڎf=`}ߌ_Jfg6`3tO*BPia%ؙjRx‘yw'XbYX286`x,ae6kܬ-tH6BrU}'jw+(A#rcri m) n(NiFRY#D`p]:2ݟf`:Hǣ"KGc=sVOd7]_,J֍5@ˤCԴ9OV#1[^Ak<)| KJjpȧktz@c*VDnV> Ҁ@QO2zY,l&Q=VpV^d ^(\eC ⸷PYV(A#MYI2 WQ8P6kQL_X_)%f m9Q/9'D)~ n'%lh0t2zmW?ۨ7Xvp#BY],y/ߕF5Cc) 慩"'Q#Q-$=;>]?N` ~`2=7qQn "͗m[o5dih/{XI( ʟ؀Z1{6k@ZH}qu`(qE냘;" O4Пz$i[,ź- >veVq;!`%کlot` _yIJ 3PO%ܮ'vm 0zON}tJiiS*.,&ZCA֯bw72 P0On.S?+}hm uO!CZ$gߵ/I ']Gȗ,Nȉ*@ =!X2-RZy%%|uhdDG4Q逖qkǑ˻d54$R5|ݍgHyܸͿM%!rd%:쐦 Vq3&vG^KChsLϦUӓ.VP\rz'mY@iB2{j^t_0{O3yl"!]FW/nQ8Irl6M]PgQpaR ՏxZ5xAp0y+r&O]qJyŐ?}ADk[^]- 5]pߥz2? D@(nU|<*O,a#zѾ5zj_@D0Br~iA*SajY98!+Ϻ4C3|r+do#7\߄C !vͬ7Rν^V噾Ti|*"%%n^@ۙ 6٠adžy9dbkԊ]rRﵱ!ڣU x )j?c׶& VӹmMɊw^`ǦZWC -S"17% Ȥ)WbK_!;8wwF+(%U||HegbOB;C4\ (rGH!Q) Cp*STlXaύcŶ'?!Te['ӠTYǘ JwJJ?=-¹@UH6 %%0:")FfGL 27@o$aEm~iD5dDgAb 1X̥츞o&A7DSsr=K?3<_T@SA9/`hWg,K п;(q졶"ٸ{Af2iJot{]b^lN]t>{nثF iO} R`[+'_RZw3D_CWIkXER:禒S[驆EDXTct&dbNaFw3WO5"9R}jߒaEsNmSx\CCA(Vy u:Ȳ+˪MR,?(vA0wTe Ju楗H>7 #M.6jbȶ%{Ӝ`T]`Motc)?^YbaP) z.},Z&Im2W/X[ݗ*:JlnAq pK#^n vHs7tʉuܣ|eͯSlAF !L(sF,W,F\'"xIA&VOk3&zLbz  ݩ~8`HVWK9@@DM0o"a:C@ 3b"h"M!*F}V_Ohh 3ΐ&>AEq!%殞ldw=lȦI($:h&Ltq2}ј4WTI+վԷ^1k=R1/!ZKeb-W7d"o49")N6k:/fJCuJGY 󹰆O,dhf?^c!):~H?RH-'bOB8Aӓx*ߍk^Kx1^V/m-/@G))&=y12*vASDQX-rՊQ[44I7QѣgJ;r߀qϴ!T k0ܵ=af[:fI؊׾C$uǶ'j\F}"CUj /,q (_'D5xͿݬ-V4w.Þ4.=1J֟hms} "",% a{Bj\lNxr4ц;Yw@F($"A4< jMt/c \KT".j4;vc% jq7?=,/tq4P7&1wըda&imۧ Ux3ߴy;宠W$8 џ#xX P hWfVHxjAO?i;9 wimft6V95LrD-]B>5`v3=ߔ8^Jrh,*-QޕV`__ɞp@րKVv |S_>&moCQgRQ'CS6hU0wEqىinWџQZN@УF[* ɐx=&/`Ӝ:Īo$Lo| k\Ny{p ( ىC u&BM"BIlǯ P{]u@WWvI;9E,'dVTd3y7J|+Az /UDP|G_KaWT[rT%<#@O?PȶfЩIw?ǫ8f$yz='Hԣad A*3.5"î% 1 o=ilTh=8)jgڴCܜIKp'ӹ F#!=ǩ%2/$MRzCqw I%ߨ5\v< 2v dX)0D:}"t` " x|9_iR=T 5^w43r~61<Ź% jLtwه|uWv Y,-:#vAؓj}V nqvpՓ"c)[+,J^减FX:'_+?d&2?teqݜyx>0$BGU {MQp}PUIpֈMDz]cu:OMB[\"zbȇނ]l7> 8%WC"gr;\Rb/!cY M` d<T|=qn@zN]knOe6w8UZB H],F+A38V{%ΰY?&S_mw<4)] b ?Ly mO| phhSLsvr+bݠk4ײo?ynv"g`%+bx!7T;RF\svi-, F۸鲷ilK%K !oLxBD72Xي|ɪT`PB13.,M:KV_]lG0\{h(Ub{%x Cyv/(0DA(gU0%}nNB~yhC7>lFi48%ѻ~>ԭpfʾ(+/l}{ܮW) nFF`7p$Pq3WhC[~-^Ҁj4<QvnD!mF*h{-iTFM.l n=7 |nF[.\?0:DZ)CO^ 9ZEl{9?šk@ָ[,uòpG;STs\FЗ ΦuիIL}MiDz֑Xڒ+^fC:1Si,:7I%"0Ӿ8dp$x0tuHqFE˃((i`9ȅ,';XэTy;+٭sPWj.c)xɤȷd&@Frm(W ÊaGLם"F:|L/ ˥~ⱫmA|OxqʽRGxS[>Pq6E硈*]aa,ġ+x%)q!%J651"EJz'u5#25>Q#]A19 Pi; YZ