openucx-tools-1.15.0-150600.3.5.2<>,μip9|øO_RɦAO,a-^I.TE\t;3)4Dr{@֊|yEFr M2p”mVv(0l9Iqf(C6^ <0r^$=#Sq$օǤx_1?|-!5/d46F%t@!kJWqa?!S&ipuӛ?./\s>?d $ 6lp|     c    6 \  " "E"(8%9%:%F{GH IXY\]`^b-cdXe]f`lbutvw\xyT8z4DHNCopenucx-tools1.15.0150600.3.5.2OpenUCX utilitiesMiscallaneous utilities for Unified Communication X.ih01-ch4cSUSE Linux Enterprise 15SUSE LLC BSD-3-Clausehttps://www.suse.com/System/Consolehttp://openucx.org/linuxx86_64P pXHgaj: #P3AAA큤A큤A큤AA큤A큤iiiiiiiiiiiieficiiiiiiiiiiiiiiii785efc3d66faa2ec858cae803352a6e1ef63bff07c88cde1b5854030e1ae37b7a5eabeed87cc09e9c07a4b3a9ff9dc0031bd34935573fed1b1a65b55622fed01de09da77b6efde64ef111e9fe770718640f26d4a4e7d36374da9142099731fbfafa7483ed6376ad7ff3ec378c5db8b56af61d54459c936bacda5b098fbca58ea5fbfe61c8d3bad5d286b202a872e99d3d8e982e986c0b7b8eedd815490cf0b5bfdba7a97203e661fd08de4b1c85f9b4414569c474038a4fd7599984b4b12f727425c43b7b37d5a4db97b6152cffcf2a9e9b0e2b5b24fa4c4fd70042be2a48c3472f83d13224ed92e9264c0131074c5d3ee761cc7a74e3889aa4dc212340ea8dd090459b884fa8ee2543d12380268ccfcaeb73b1d49edaf4a30f13f83df33dafeebb5c7fa3d2e20fbee5431a975c7196779647490324dc2346cc561f0f044048dcc291b7e22e4d11a847ab0803c39646bcc05391d488974b29a0f5c2626498f226b7509ae9e5f975138a0dcb2744e67fcfdbba7f05f11485b42b211310d5af16e84407297fa98ea0a90b062f1eb467e7cc5badea8fe505c9df78977cbb0f5cd1bdb51f2499d8924ad1e62ea2f1a050e6aaf5ab9f3117a9b1adb40a0bc15e8495e9f11c5785da9c00f24d015d74e0d3c3b53eee08acce5c970dce443cb5560d4ea0d618d4650ed8674b28dda1a4b88df1db885589e7269f80d1bd51b8afb24ac70d4214780b9364cae0cceb0afc8bdb6c3cbf7b837e640fb311bbc5bc190138d3797d82a722b7923ff202c364754b917fc91d11fd63bd841ea0fba528a525fd6dc989f30814d5755885cca495652cce1d88f4a051470fe7e8ecd433908b04148853f3f460a0bf39b3273dfcb590e5db476d1d68b3b8ef9970e36894dad3473745a44bd26f5f50087ab4f124b228d267fe88ba0833309861d2a39f701a46676fcefe24145afe1640ef437c3ffbd3120bc734f0ccbe93d8c8b299ee6094cba118c8d9e13bb88a603c1223dac70b509a7c00d8d47583dba685473b89972b469329e29rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootopenucx-1.15.0-150600.3.5.2.src.rpmopenucx-toolsopenucx-tools(x86-64)pkgconfig(ucx)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    /usr/bin/pkg-configlibc.so.6()(64bit)libc.so.6(GLIBC_2.14)(64bit)libc.so.6(GLIBC_2.2.5)(64bit)libc.so.6(GLIBC_2.3)(64bit)libc.so.6(GLIBC_2.3.2)(64bit)libc.so.6(GLIBC_2.3.4)(64bit)libc.so.6(GLIBC_2.33)(64bit)libc.so.6(GLIBC_2.34)(64bit)libc.so.6(GLIBC_2.38)(64bit)libc.so.6(GLIBC_2.4)(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)h01-ch4c 1762188828 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_Updatedrpmxz5x86_64-suse-linuxELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=d207698cceb8939366dd3f72bfddd00390085f8e, for GNU/Linux 4.3.0, strippedELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=6e0997b93ad32d637bbee4db8d02a8fac4d311d2, for GNU/Linux 4.3.0, strippedELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=86e03bf26a85ceb90a8e1558b27295e6454bb27c, for GNU/Linux 4.3.0, strippeddirectoryELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=50caca16064054c680bf4f70c96a3eabd52c6689, for GNU/Linux 4.3.0, strippedASCII textpkgconfig fileC source, ASCII text  4 RRRR R RRRRRRRRRRRR R RRRRRR RRR R RRRRR R RRRRR RRRRRRRRRRRR RPRRRHz:^蔽\utf-87c5655b8f02ac6db8845fa9adfa82781aa925ce504ce761df357accc85883350? 7zXZ !t/f]"k%IN6cბbMb-.vj_+- bCt}\"LIgZZĹ}aǔhzl5 "ݔ*t\p 97= N:5`BK_BphNkeŠymvXދ"%Mx3E9FZ{iWǂx_'xHgzXN3`"ZN4 # 6OM7P`1 Q*yܰ[Mᣊ S:1 44aFdmɲa˛no=?@0FH{UynͱbkX:b1ϣ/|F{G1Qjb,טF3HVTVyt!Lai&gm$4:s]kI Y;VQmIݏ*'(*a[Wf#꽷tz;UfO:I#݂Am Z8-n y; h *03rc"Bpa x GrѺdASioP~Ѧ̇YP$>%i}2ɜe+гzr@m٬z]`IyRF$š֫?!EcSupGᏞa ;Pޱb'#(<`0 ,Qe>4˵OX\YqOx@!/>"w+K^*mJV2;HQ,P}nۀ?s3$o,j\?"3I~I5l優XH9 S͵œdh+../brˠ|_6 y]RnG߾`^ŇX% 7j%^ LObgSRO|o-hD:`hm0$?tv2@0!qD7Gvb{^0vi7>8j guh>/p {AEI1GϋҕSn54\{TTbG=a'yx+0':D =HDy=7A;1o0]6#,x%;p&)(9 1YCIU.'8 2 JOG*wDz%W%Zm15]=pqJITN=?5c vI!S`U8vcŇ{bQV"l#ktCxSc*tZiH=~"TVE-k a8۟T,tk%&V$,ق0J*+^ҭmz$`ٷۭ=`c&jz7v~,M,uBAon:@M/U+Ʀ2ߏ.|jcJaxޡaaz;+)<7&'9PPoSU bg> ?vNz-,} .9;=J?MإʾMnW\8R+1{r @WM=绒 əeQhF%6͸ΘM>/x;Vթf 2QGNf< =YgY0Sl:_bAa:Y+s!`D,'(/pj5(yd'Wikو6rFCI2Xt*jDFMi9KZU WG.4^Eb(&{@uhsfn$G6o=.([(QC}Ok%nrSe^T꽈bT2PK0{F*[N㌴" =ӅcT#表"۹1DcEۗSζjv(Uyð`A*xЁz4*C)' <XoҲ87< lKUB mF/N,⾉S2a䭻I XWId $J)St*GI:IǗAlt+;$fmn/]־CK`*}G~k {tH3m!֑?ڵQMLiGCs=`lG,gr_&COSk]C\.wa'h;`&=ag5O|y}]d>ÈwX=4uT+=1 O2(௡;##xʻ\)!Eootxw}Rmm*9!ax mC3 zlsݙ3Pւ=;)1sY*2xe8V^nK@p{AAo ­?Wp6/vAYU2(4ɽp:Oi!Ӛj^ܾGAwXDhګ(XMB0[ +'%b# QA .i (4tu>j D˪iJ8RGHRXBXH. g-bj>z{YL.I!0SȐtˋX"Dhd (%ǪIs5 P3簴%A?^zZy3nGkDUV7$/}iy簍փ+!sAh;  pB[+l7L?f_Cʜ\ȚQ(Za׃+EzxT$C.$}{fy_L|R=YP3~b;d ˓`թ0z|m%ܟ.g#5z >쐄>u٨ռ Gu;__kˀ1 Cqmp^$[gE`A=C }-nU*;'-@\.tО׼PP}~H i{Bd1OyoYX\/)gDgeH\E="^[_ S25h!muv5W~\HSM ͵W #6C dg_59#yaqQJH[xJr[$Yj {4k6`Lr}耩3ՙ}1k / Kgų)(^4\K]{yoDjX 뵻;uԵk 2:rgb'Yl:bI۰) + V]J`j|kmNAjAoЂϭk?{5`wt41fOiVوb$M.%r {j(e* PN4(릞3pL1Q$/fʘI/s/Zs"* WtV*I9M:8?bki+0n1$P>X!_e/X3rEuiA[׹@L8^7?=E2^|N#6%OIGDŽGcsPk{\͒uC'JwhLJ1V]vV.It@/*l5]Ud>r

NN~Y!,EiX߻(X=wN|OR_A;f9u<1) C.jh RwRoCZ˪Ȃ4=%9  ޮioloʓV5gu ~(H!Elofynz!{GS@A%faq%䪑zgtABʼn3l0KOf1P"hPpSh4^vqT4wj[`=@sTߏXZ}C3XJVt1~Ql @98Un }<&]Ġ; ?D9~u*;ᲤBթǁw De[f 7I< E~ r< rD`Q"mpak2 o-\ւU0M{PBD}7<+M~ypOfWužc/#5w7:rǿQޮ{ iCG"3Ku4^ Pn-LikZky[~)kbBΉW -PPyD LdcB a Z젵> `ۨWs7Bl`~s4ɕfEi4@ o%j2|ߪ5w`C󞃅77__ߜ2^9ْ"ZDҲM1Yu6:J󂆳wlN 4H^A!P"aV8>| {wsI+KBmD9$Ug\W/[ǣ0]=>JH.ݐ顃II` |(7o;@Xy\$zڞb&{{!C7Ӥ}oKl%~}aۡ8y^fbW"h,\{W iIh9YOL`)[IZ {Ꟙ3 Ko탨_,? 0]-g2Ir +d~z aY!8ٺLߣ`g&BeB-O>9*H/\_2NĬ(Jݐ?#\5~/C*{Qd@0Ǻp8/]2!óEڃl vk`]{ұ߶_1aBhOvVޓ9 r 'Vؿ+ ݜԊ#&*Kr%7ݠxg;#ePA\< OAWhewIh #A^G1^y9cDfoߢI_}xUq!5CոpFc<ۦ1T r  Er [O[@ OJq( )Mì>~~?טkON&1* ?ؗZC~x넀RM|I ܯ5k˖WDñ$Zʎ(-lW&}ϕ3*wAVQkiM+`ce>[5z`^4jցC08XTM9XWn*tΈS) #{C.X)pzcu *# }YQD2^·t ]9Q-h!b5-N FEV4&\BKfoOܒC EN}k8[P2''9QQ 6mdʲͻEϐ7is!P98IЂ Z%R:?^ܓ(ڝ{/?Ԅ2XӼGf[ y[u Wldf/7%˨_أ4pgEWa#!5wޕ5 ]LYoc1v<`"KcR`B/UpCgVG[@u:Jw7RnЄjA 3咡y'`smWŰ;*(- ;eyJ~2m;#1b0@"d"ƍRP[AjݪIJ+!BJ85W WJe+#^#'w`[3eRᲗZbw epSX'EGe5K_^/MDf0]il^`T65C . O;٪WJL34R<8CIAIl;\z45fB8)j\kLUBr[SGI:B   4{nh {%yB\Q6[ǴᡙL \\J-dRCll m͗lDuFr-x[wJ`5$W(Ym\>]U%zŇTIHМ%J{o%qOexBuc(f[1=>(o=Um)q=džG<CȎCz( ,;Z_Uq9~2zTC|'V s*v_ЍѠ0S|ZΘɠcטMo6{aDR0IQ  %eCp4 Ks;\lOKYV)4}~WseïpD}@w+>AB4( OBf(~ {'xI$\ٟ$Σ, Fw p얮 5 LA KYX9 5bG-K-k][Q-T9ޏt3ܾ}`>r0sݞ3x3c'|%5BspQzFh4:b0-h>Lqũo2F]6&Vy""ܖ*m'M.~%(*^]`/*Ӓ7+#`uK"5xK {v+/ï E嬘Ux٥ o_EAϜMjer,[;JycmqF*;ݥL+,7t*@ec{L2d3#r< %swBs:4q'p5t5?W1 , ߜ,~c:_,!ôHX^P`a3..:au?xi]]yȰ]dL7,\:wU.E^_ےHL ; _Z Ӊ0R}}0s:ыKVeCe\6́p Zsb ocTkT8>Q@#Yw;s/_=V{pmI!P4!@խmnZZ 7Jsbv=!R6an+LjWIA\w $t65eR|Ǹn뎈X,Oz(N-\x8z te:/m p{Ѷ\+3Thje( nWR"KA3T7oj r+\ 6+\f co)8?Cgqd-JM{_e o&xMN~5ʘܲmx+PwVih|/gV.Yl+_iyԃ>FGA%V\b_F?ƚNSܩ=ip]~_yI".岑2pdxkmc@G~wMKZEկ^DUE!0{SᇝB3VAV@wt| Cj& `Oa!"Ge@v䑻"`._l2-eO =t}s~എOa#9Y6r`eGEm Dzz^%]8TǵV @J{CF֢ẝ4 rVDyM?GΌ-ŏ%YvI.z䐡E/ǃ-)i}] Fk6s@9+n&]"h YmZ-?:)^;]t{P,D(nv<"ƛiiA_ս^J~нB9K㇋7dwE]*67OmB!}TU%Ljt>[,O Sr[*|oR>Wj$HR6Nhxp3>V)1_iJRe]p,Ɋu OL@u+@I?G;B*q>Ncq3|Y{zlVtě= L+=1͟1`:Vu؁2(O =X;߯ !G2{^~ajϤ-`n̘/3Y3Jtx:zƺrd~u imic5h.fHK푏"=2FAڧUem&sn#}ȴv[8'3 DG?>j*vkx GrRVkӰ%.hnGID΍;KT4բZ&He,ĞHcEYmm-\BݍV46h^^)Xbg=`NId`>%"[""7]BԶ g,[ Ξ?Ht&4( upi5.@(`-֪謮"VMd>|Z1`c]]1re]ހ1>l0P|'pnMVOT*F hs eBQ_ăuTxy:ۨy0ڒu"Iу轨;ŧSm Cv}mFr#eʗuT&9Π: r9Hfcr 򞮉fhpC$Ucxrp\q9h'hGrUˈ%GY8p.[Lado~Q5~ʯT,{%~[{Ev[Mx Ի MA̙,es[0cA_3 -ih~Tg+RНw8BfNNM&,"أL(cCn㇐jw(b (gem~{/ʜ&L)qز%pv}mCI>S<( oI9b!%aiy+lD11%f _ vCVD^7^ܻX՚j^Ҽ`D+X 3wVޠf|"&C/b]Zg0,4CGC1CS|1@:Hgk3]']hx7]x-/f~;YiQ [Cݠ'S51*1O3{hqq2UDnG`t5kHn|& Q7ܓTQhG 8YL VkNaZ`oǥ4:{ϝbr:0ҡFQp>E[WZ$W+i ;1es~.'Ho3S)")FMQ2G/\v2dòtϸ\ X-UݝtB枩*/X~J%ٓX[~$?i?+UrN =* T-h 4֑?*G/bOC4-쳽FdN] UZ"+ 8dVNvY &մ?"Aʘ^fX#lD cٲejz^5k2cje`)]zѡ iBV\F 6(<|^320[nܸUR/L~9D LGxEk+P)Yn.> Վ /@$똅+Şk'j] XnLjx \ns"34a%a_:\ld__΁|Cn ŒUl\K}TcqOG~> &JX[vVH͟*" 9vxTN&;ަkcbspY{jHuc(U :)R5YÙ6s`~:(]o_i)pBh1j0d$ї_; 2P[D^[(Y4QL MF}:)JYV!Nk7.b[aSO-N\-օ&Xᾖ vKiO#.'ͧ)1 ƚ33%I-=8z!tK7ޫ-㔇9hv#FpA-2P~07Q:(jSi}k$)2wS2#$M3=rs[GixUBT؞,OITDs̔cVwwbMs.x)j} Gȩap+>~'--ix`Gݠ *+>Onϕp·Izf-`MfVO@~fGBkV2XD[IM=ݚv"<&d0G-ZS6P ;xކ.nGgvGѼ^ZDtr *(xh ._ѦI2:3XXeDXDoxqcxoVN@p 77>@ѭd Tv.\ .]|qdTXjXz)u9%GXsnT0(!qL 1js6g8klo}GjsI1?tCe30%-G0o %hG;2u$ M\Jҩ_T*l A?9O4w66sgP- `3Q*fb/%b%=0c/cZC |ƨ]P(>lWWvo(+)<*̜]ɔdm шPkfRýnG)%LW-h@kx|@\ҦϴPI ck-yvwAhr,i#(k hI0b;Pv:K?X\8f$g ~<``yR"En̿dQB|w`h >zUtls٧&TzDUGTzZCZ ᯱCoZVӰ1`ٝ!Cbn0REn 1{ѹtxH';Y·m/Ԓ*(?T8?\o> ihKv$%5bJrs~wFk(h.U4Qu>#X ]1NI_5?d߿gX%Ήߜ=z^D><:7(-8M|<eKGyFZ옞+A:u )g{R9!v KX^2C$RQd\aJ١'PiUy U8|j|v:=y葀n3h&ZЊE*[N;xo_8Ln7atry|ro5ק!!vo,g ?#VLT\i$OB_b\7$ t`R7N!X޿_çoB"C 5xriD|,:!R{OT)ZGLFXēEP 2q$x#oN3>{y.ȌZBS>=j kw㪧c;P 4 +$f(':2q:J&Mp\N $)ɿ_ODTK&R 9t B]_0g{669n]21 PdzC *H1x G#-lޞ"qR#"QM4jϷd"[U]D @xNS u5û]_W͘oY̡ϾogQO&f;#ݙ{&a a ?$tgeT$6 @"6 p4Co^zT>m@?8 ƻINF֓tI4mrsקH3ηTW jƋj3BWr 6 &⭯xhC $}ɆoKL#Й!S^,uY4k:A̭,䞅 c=џ(/oFо:P `+q0#C h?mRa}5gz'%6'~\jJ@m2X^}wsD׿r<_Yb*7` XGGF =ޱ Ͱ@`eC aW ]^ֹ%LmjSQfՖ&ua#8U"bT2(f˗V&t]_78"&0>72˿.  ?\"tSdS-11 %};]Ub@T_dØPs`/Ÿzvѷ,PCz9}?a]kvF; fADÐ~ }mm\M>7xoD=eUryc .[EwFϔ,Zr]8ŽGŸ ,̓RLBf-۝ w͕dN+"<>< + 5qGA.}$> N W-!0arp ܎lJ͋P~ē!ue}w)ͫ kש5"r-L:(8779/M*S3DZ^d;x%;m7>%t%(|NiNVbHA=#&J7JА)W`Ku϶7jp:f+ sXz"zډB$2xۑ>21&eL'&Lp'8;N{'?ҡ+c ۆ̵X7A#02MY'֫ga8t,vy᭱Ҁe:GH'M7GIJ!I,J)q\u)% Lp8|L]5ʿl!nRuQ ☊d5!vʕ1_)ASOKW-;FioIJ$Tk(xʗl S0 6sD<+b:Xw*0}/0ԅNBA]2sꢏ/"H:Di/?{/+,o效 m&sgV=BO#U:B5':DctGfo^-/SN'>߱ra cMD͸*E7o_U:+8ȗ BSgS%ƒ}(orRz/ >fZQMєin^( :' dӡl!wȧ8B9Ui L>r >I!U胀 NE&38/ۑ#~.)EދF4$o!"5o >=S@} t .-~< {~ÿgcPYWcVo4k@â`Lׇ9rIp!hNW}dD -}@$ V#q{<ȕ]r>x⼀,>UVX=لfq.S})Ldpzc59-5ODT'yz0}A=/9W B)$AjIv f6mdP//!4ϕNt¦Нd%0QVO}|6mJVy*n`}p p~V930\MZ*it"qEN*mId2aL<酨umL$g?ïI8ʨ\Slx5斔m4[3C`)kx"ux9aq]:7l?[Z(@6r7)c&YlMK}bV"gis`3x#51~#"9ZtIdPgJIDKTYuz_9@s M{ܬNZOtfAMJO+';Mx{d~?0SaMj_,`APZr=fӊ:V!*X h$/x9!qZs]]ABtncR}ͽN|E$t.d^$O]fwۑ$;m3DFC0" <ͱ2-}L41;ZjiAi~`ɣ@kC?Wc2JcEZ&<>jKsEojEÑJc|r cPLI];AeI1*vyORϿT dh/Ԃ,Rz bc"?=qO[.yXܝ쮏ǔP,F{ĊQ,e v-0u\D . C(a)}è3j I^tsldݜ ;; G|S=%?atYv\ gdb^dp*grv pNڕv/`"#eJ$[ORpb DkrAx0UMpl%j68{g>Pw4e-=Y-Pvؗ2 ED.⹔4*Aˢ;[c6Aw_r'A LQ-}EO#? 5d8%`L[ "G;Lgpz "?6—Ů$H%FdVBa Ֆ櫔~FIɛcNp༩*_FW ^ζkF7ԗvC~RpdܷRHܘaܦ:!HzNlM ~Z=Z}^`-oW~k5-,̩V7܊b=;Q!0c˕Ld=T҂l4]Y3Uqx[ S@ m! N B0g8s:<'tII9lFZl0f95AlJ܂fYCF8'GyS\ u 3(wȩ  yQ!f tL5V";sВFS``E;{o12&=DD|40OC؄G`d|$E9ǃc /nuptggBs'19׆'Xu5`!oj$IksQ@bxy"b~!X!Uߔ.PTdIޖBN(%>zTM̎AX},,MPxͫ S_e]xm!<Y>:)&)m/Njq;b<# p!'¶54Exv2Z3bD966-͈/v)!W#ɻUOa[ETE.d>ft[懗B[!RSkmU~&>n4\Up^/&qsGZ94/3Hs4opW(!RR(6ܹ^/Hs,GhXM`4;8M'K,E볒޺Sy:f]vT,$FK]gz$t]7fԧ?n{%JҙOmΌßȯȣTxIoz(iA Bn@ \+/RQP4](!ʰ1lYGM{@M(M}4rBqb-ÒK)R&TmM1%WTnbaȸ^(ҖVi9TQa@"R]+p C u#^sбqbR8׿vs9j2:ˡ2?zȧWL:H`F8~eC] KܽVs~MV"+*aUJf#K/s!(BF\wV=WE1˧-sFI%D؃Rn\(͘'ri\(Gg./pLKNC9݅\dl8vr[Y3:DvGJoJ! KCSLe*p@So ' L͌Fl O8eV5O1φz*<>1  aS'<@iž9].ggAl%߱)Aid=C,]) ZCx?G9Wnvsfsj@D ޟҗt죦wt!WyE* 4*_6ACOU҈ͯNw3sx׊<`,\,;k)}_~6s`(5$zL˄U(H0؜!/4~B wMnfXRC[/3d|rע5o(uo`VF0ۼKo_/yd-s:(J~ӱgV7E(,եg:ŨϮ1c_7 9`FRLDӚ -WWX8TJ k`zDl8$-&0 X?m\pXPs_&a"b}%-E\|Cnő/th}5umcw4)'?B=}ȸ%ȀelVl+^+sbGS0BOg.w!R>A=c7NSа/BLۑ韇Y%So(SIVE!oz}'sTRs OZ8wwvzT-EbqOV  ~0nHVs?\+c[>ti V@+ X4ck_7$fՖ(3CԳydN0W*>>w ȩ4҉u6K+Xc0|ܹY ζeU#"WH|AτS1F}t._Bn̷W8-*Ca}/rFZ˄ ߊPZV!DhwC(_q->]?:xR3P9ǮᷥjJt~u6dxi$VFBAM@y tVȳ٠;N-(ߔ\ ș7۲no}wy$^!va쥻1d5BcO| ׊ZɃ5vVA_ YGc@+ؚCE횎ZjXjؙ']TV\k TT\$fECś PGb6J0z=%9Qȃtv-wi!؃ei^qZ1EB;Z(@#$KL5T4QuFjpFui ?#jJգZaL|pA~=7bPg>c(vΫ6d/@ָ Ƕ_<$ᔜ]g*`{nHp5E#kR&5w^a6'eGE4'T3Qs<'}gu ;_8*ndP~c"e;%8^#U{c 9Rk4P o=Vk_cӅKu@+*R7VwJh,c΃'{ڮO4,wd tF1 un3ᾢ#oLF}VvVUz>ga%>EuBw92ee~?aL 8-[G1ϼ@|2L]a^ 4)tn'A㥺bZf%1)p~*l{:o8hR2졠([:| IHד43|6Lc! *ը=n+Z} A0CzE"U2N `r~k'01|c}[_xF 4ꪵkmd$[c1rgB->]?GٿPSLkP[;JT>43Х!D&nݵH&(Ҍn⮣JȠx!Pbƶtu$AHYq$$zH3VKt7NV&Y8#Jim=nAڧjA{WAVbcpN\i/7 ҉V|a V eߣ)с_ mAz=56<]q Xo~|IrBϢ.o}'9d! b]hfhcs /<+^+˒vC 򽠔ܟ0<z>| >Xw"5>[m5JMjQ;KDBBSRWϫ>0]=N";s<**S[/N9hF|$+o#5h3nRHoŔ}!u|g17L4зP7)Hbrְptz]Q3_|Z2Jϭ*}%rOS4%]p(4?B;oB'9G ள|4i4. / Ji""AT HeUOd.c we 6I/r}"p9Oe;=JnyFz 0%*RbtlM ?ĽE{%ei#[@Y]V7q<^P$.q"1*n2*u5yB j#0Hа2$&g&p4w zn+IJJ^A-Mc{]I'i<ϡٵ7mdӼ7*齀hg!WN@3΄i4Bjv4JX> -GM;[FLe#Im 2E,7($U\,7 {ghY/z,#ܒfYwOrԉcRw\u u'񖢉"goJ?!k~$ɭOe)L[+D>>s?6YE}-5o?[&yXj#3YN&Uק*dj>K~:{Níb |0&l*OBi'AUaan[;v (}XQr?TbL7*r0 6 vw=hQ>eJƾsBh’u{ğ0总.Ef2?.ai=eҘ#84'$ƐPR)CRVN>֢k|ka)5sEQ .i C=nDT܋( w$+7`Wtug>؏{DiBH{ʄXq1Jbr m7qK ϋ嵥ы m^Ѯn'2č"?r;`Oݶ(g7IJ2>{OY}t8M|?W){k˹O$we!%m*Xf)Qd֛jaޤS)mI+DWlUՅ&BїoƧqee[s,<{J+6J Rr"}gӐ}1 [wTN s)Y^^Zj?rkvqRFkh5f>L|^5RlmV!aF` =l[]HT| Zo_JЈ,}eCu9Mg-B9:7X ѻ<;{~n pѶJPw1}ᰐ׫&_=IFv}KK]%rIVΝQ I ",AG7,( 4\^X[fI7ss5ZK]vfFh l :"4 +~*U-nuI22b5}bzUȫBE˃3 +@ jg sujL/!~P\=? c}|n7tW[}P 5fWZ<>hyjIjf&dj-MYcYZüFX<apu  񭤣d'u5 ÷?0mo"F?6RÆ uϚojg[G8L jY(ุ+#kE (1> 9ph~Y+BPނ<I̊C?>xT:Jt!es+}b^~_HjIAk7̀1b p(J~Qf'obu6U*r4Ι8zL+XjlgnKY}me4n0Łf*֨Afd 5"U-ףA qJ?2\ .0??C֒)j>j̄%qOVϫ<jTpe9/֔GqE'13BKKw?&JC-j[|o;݉Jhݛg;'z.녽}o]m3:j!2U>:_9: <3\&!K ;eytF"O<9+&~V3Z/850,%..*h0A빸4Qnr;Px%_{2!5   5Se[]Bv.o" =!?t:Q%5so;jo o7F\ſ3ʩrVxpqDLr>(OEYޘbMMZ_YBtDgD0`(@{*vh:vW ;p^1wι2CP+557x` * g.FiA2Xy9) <5@&u6չ`k) ,wzNbŌePZE9[S?cViD/;KcWFHE$Jp7}{7[HHaǟ F+kTžuKl\rR)߄ȚI L]oViVZ=逕n|\tU%OҺчOyדҞ5]"f\Nu!9˼K> vCJ͍`34sib7*A4v?T ܢWzdz!#;d %lK}F^k9)TCaw^k K)_*Ww(^bMDBn̽-oEU))dSh'K'ev@lh 3S{#F\_ӬxWA'ڢ˛(Mgt-Bˀk;gSHYUb>V=ȹI}lk<SE3T42{h\IᝇZx!pE Wvj/nVNI4Mwژ2`F+_ը u)5)р1\,$dxRd tYqe8(uz?ƶ*>2G^I`t_^Z͌(o=mCA+'zj5џȱL&%~qu&d~C3h%B0&>8]GC[BU%rdQV!XQF K9lƴ]K/8X 4v[3xC 2*SrdD>k- ?4dPbLeK8YP4dlU:Y[|g(E jQנ)"W4s<>]9 lsec\۱GxIU>$6*И16˨jDLó Qy {3{%!&7噲o;)U9\E^];b )N8zs5VnwkujRR޻}Ӝn tsk`2reL! UI1d=u, dCPn>jMۉ JČoC Q%eOL4U7o/r νrQ-Pr9Aih DcZF;O?Dj=1kXI,Ql(D8>& ךCɳ)eJLt ƕJ#ȧЪlb 4=.~v5|TX;6}9 I T@42\%Wާ dmERUzI?ypF>*?voi#`U{Qa]bkU k%gA;Zp?*DMp K.kMB|:rWLxk0z{e1AZ{B5ϋ\5(x_FW5zn?2~;!Pθ?ێfZ?XRy[&Oc+.U zՆ#O`)^3lTۨv9(M`38b pi]Ff0A>zBh +8@6Z7'Љ\+QRq5Fk`댄|4 m괔z#jԲ݅({27աֺ3U b(Sw`vc|Зic-D\P{d\A>-ff_ ="2ZCZ7r_ GNBN\/[:ij buuoػ)3"j;2Qbq ?4L(a/C:NoL,bU݋7PDRh#6G]Ze S%×53zX=He4OQ dcE`\a9ӵX:W`Ma QRzdm!z5szTEî7J2hPn2uE"dppAQ~T|=m22);ZKK3ٖ1cC1KhdIf~ \@V+ԑNz-fmj G2%/~D(ԞV*?0|&#Rh#ЙYJytX{E9 ֩ЍDvY.G5T|Jcف)Zϑԋh2f[+aXa 2ddØ o_DJiS+PN3 kVM?E֣{mD peiA4As( h+%x&k4)q&~!⊨BKLJUG@mlEր&A $n{;q.PY;"oӮ kmr (L >qc1SZ@bLRms.%5(Nm`Ts),XNS:yV\,6&ԡNxiJRvՈ/˜Tr`/3R og $7l+|@&I1 =?%{1xʺ!̿RKP՜Cauqcg{1WcX.uIF< NrTL~w)?~rKE:I@!@}#Io [UW)Q5dBoG}JSXmc:uݦTM?9zOhhYN+yAr IT@_$ $}Ӯo}[{,[wM6 5Yа oA_T m (KTrnߎdB$~_藵e,X@C8r_G@0c%6iKUϻ"?wGl Vy|`#cViݚVL/~/HMB|)yANtpw/:rRS&9ovv }M&F= l>j=w·\ЄhJj \`5j.8LhG&-(ܢ]<,(Sbm G=/c܆ [@>,pᅱVesq}t@u7 lAяk/ ^Go޿#pX <^kbxqʀw$.sn߰)Oq?sI UApnѽa޲tP &sQ): D C"gZ3b`XsI#fȣm_xBTY!Y aa΢i7"pRҧ=Jxr+p~ YXT1Jsh]Pd? f7 6Q~9rr[`羖&! i:ך6|"'a.|3?Jގ6(_UsR' }SSSqKP 22.6A$op>#O}OgUH!w];όMHWM*]w:Izk۟]-|$(aalac%mpT8:qaKk$:Б x(S+ۉփgoKi 9MkUobDDn:dB~8L{%nFMYBUWf4x*9!9E*=hl=qz8y"V:X(oM3+ x$j+Tzt6&덵C*h A*^.H$u>Bos ~HyNGV k8&+GrپĀXD)ޒFW+N.RW"daIB?rq:gpf_*XOM.ץ  i]l,V!h'DR?汎jnh}.dr4 Q6+U t]҇K I([+Dx5E|Rzuk+8߳sȺلqsC's!)Q=nNQ`^9cf&rjw|FB^\ҳ(ڲg-fayaBwίgוvid(*9ؘNzu)0v5xX@-4=v\rsȒPipq*  Sth&B#J*0ff"/vNBF8ζoM;rSI*kc' ݖC̕4^_g-/ơi4DQ!Xf'@ eViyHzo1:Q{1Ӵgb@AhCzJ7ƒN:zɼD\䪎%Lc_[ nnZ-"4ْ|x~Axf # e BWGE}Gc"tm$'rIݡ\W\M)Ty@-#l cfz%& -ԠK"P1u>yuE24r9>M@J񈸃0EPF > L  >Z7f>5eypN&ek*Ə wMǭlTE=mz\@N \?C&=ľcr;‰cK/BZn>uͮ-voki&6~֩BAj+ԫBg}H _Ǻswy"}>@Z\3HZG!MbgCFAw(\g#B Jh_2TQ|?w(6kV 0w:ڥ>Y`Km'+|ZsYJmw4އ{1RK}dWVJ3<&ZMG{eM ߴ&HGJ6Z*hl}o%ULE:^]I=̫kWVH!-?\%aO6E-v5mkW=v =WM%VʓV aNٲ>½ސF'72 t4vr s+{k?iEFZ7˴ʕS<9mY{]$nNbVjh0غ^B-U*t[ b(i f_'iWMkn!ܨAC|ͨa4\;`Hd3D׋.JƾODºO I[)vW>O]<6(q|YgeXв2zjL(4s;[8 1/`+#O&\s%d}@$v0'{?VDrr6efKӔfdR~X?*$45o>8m+XBuLI-.ڛ3 yx m Pk+ ĝ2=>CzevH 0rEliP 3*.L㨰fLJL7[W2=۽A"dR؄R9) v)y}eW&A*MʙI[` ?k6F%s!bKݖoJ%X@!- B K%=X6+HdDJHyfJOm[nxaM_ONz=$REՖc !cWI_ jݜ%?0ͻ8!&`)IUqjʡ2;VץixU!0UV.;^Uq1 x1oRN WQQ eMXh=3"~'=Ltzu]4ev9W6"7=|1/M0i8_͘-@ѐO(B~ϔ`6Dy0Ӯ2cuWZOOZzuNlmiɜ0a*BQx5rꉨ7oh[c1m!a;hq3VIM$?FO֮PS_}é*Ȼkq#χ!+ad4Pz@ C?#5k=5zͿD\zնLNdoaܱ=kf s?t2AoLxj7/yOTI{E6Il=4W+D#M]3k -іĥomppR `&.ŹE[(05'Ă.vtY|$%DUpRfydʼn%~Bu,_M.ͭ/UQ[^VJp%b.z߉޳ ޙTi0 O[O<} s$l\1|гc\3 &[ZƐlK "/S:"FW2{հ}lVJ!6-nsYo,u)_Cw] I=T6_Kj;`.FDu2Z窧<[t8ܖ2E|'vDF\%IMP;p˪Sk0pqN]VyҚ:RR}$h!S:+yi?TCq]bش=!0 ehx|cNeqdRpƥ? BYytC cxA#-L7*8;Fu57\h87=ݵ6BCF֕ǵQ7EMBꔧJpI[NVk ~qs*Kv@}B$z׫M'IŻ-(O8mܻ;.'r\b'PW2I;,!ݠ&I{%ɫN3FԲ[%3hYrSʗp-@S6J|싱V6į{ h_*b=0 w0's1g66:JFiHaL|Nh"sdᵓɁau~\v.f- @lU*>Ә'8GoK8 G;<ЩX0R30`mhUURv2Ru.u+7"2cԼ d;gqTԒpr\OP.5\*{~o~e`2N̶E)9C|:ޯc V,aM۔4>-NqfHWߠv?Y}Kdz5J>qHƶHo78Bsn~b TSэw6_n^QZ~ݫ%F[oUj4Lj)G ?#'(Z̖bvK$%I|dM=bs_x9:m  E:>NFg:&jRi̢o՜pu}.13䘇0s%M]0@۶]$oJ^DӮeSUv?cdzMLR]. k aKnN+"` cCɼ. JCo<NhC zŃX7ox#hiDJC[{~ViNP5G @ˉsĤ@X䞖X@Y.Xj1, jaoMRƉ$z0Je0L^S=$]o1ϾJ^þIʱy2*+¿HU).~ї(s/#]\a~e@/|:hBWe~гrksO[ PRI- p$NݯX;KźXҢwr'3Lus_IU11 P1g$ExGyP[cVtK׵?m0бme)mY -!Iht}g&Ne80X6g^B[(#1\@Y2 fN]^S*34BkN6Dd".5 ]kUkoz%_[>rK𥀷D^S^( c78G':1sN 76N8`jb~#K&T%3CdAwL݄DO>CG{.EL 0 5'G>Cƣ9d G:n8'u=ȟz(irޱWe\gm%b E딖(V?V'28: [Bca,ةmڻUuõ$>ށUȉW}nٮu-" %`bY{ípbx`( !/;it.¾ݖ *}u6ĥ-: /OƩNO xF1UV(=Fw= JsLs= D¿4ke;Qz#C.<,,S8j% ȧ!fvp}w~#płI/H4ȅL86kKl1xa8fVݷ!t zD՝$Q~`CZju[+:#u0clf|JJw}&܉{z%Gp-݀\@uL$\Xt.lQ!LZAAA)DQYG&!k#_V6״>-=H> G *t"6nZL_otSJt[Z):w\9<0<$w.%e3)β%t9U1Ǫ`aUMv%M=k@ čnEw ^}T`e|G5|w6W6]/Tچ{a'{NїXBq .g"Kn9=PL'Ća2v;qÍ^x0n'Cxπ G|Llhm( :'sGM; S/^AN (IV m7RHLA긩Ilz-:cHl;~uWKso0cpXӹ슣WtЭ&R9qWgӴ+\Uš+DUэ[ 4,Kv)a.6&T7`RbOsI-teH>@jF'C{1}9VA66-gTu)dÎ1I" iا`o1L`珔}qtxgxFdMBcq8%{٨bwcS7w.BRCe+z6t֚z/:0=1_QO¤4CW< =K8LEl"4"p"Q4i5ޥ@o[pHp)'Gea"E[Ih;k3Z5>JϲVJ\&dxˇ uxj8 V,NwgeWecnz4XhJ 6rEDV,RDSA$'VuY}2PTF(NH3y >1樶KC=˴|Eخu/pܔwlj+JI¾Lq ,˾׹ *aː j^hϤ `pSwz1Oha-clkvxopv/+e[ yu C47Z8N:E[( Bq snDT9$wh|drM]XO+hP ?CSs+G`FP>&[|0;>rαEۏ4zKfv<'xM#f8`1=G`  :608X&ZiqMW%>9sŠsH0\ծ*`|qJiK+p-/шIrn4ج[D@j[+RW ͈yU%39٘OѬA*].Hx6 BI)*cA5VՑ, =Tşl5m\l)ֆט2VvJ]Ѫ7jy)A2L #`'q wB~q]`^ G:݁/QV- _oD@5|CUsckN9D 2 %)p}d9ap0(i"њ^9cגE]4uenqs{ZR;rx 0SM"O=T˶)#'p[/QPMp[E+`  ˾AF&c4^|63q6;Kn}ʌI ydRoJUVL 5q`1 I-l6ye-jB=MOMH VN jc6ZAsT~;u{69DI46wE ~:j=s0'~n]c4J^"Dc{n>B69Jđ&{\JI"}V~! L)J(XN]Dzr_&#?#}!5ʀ=64hG=4(ݛq_`_ j(׵y C3A]ׄh9bI:)u١ґ,4y}3QJWwv-Nnl+/Va I`3\Kt5k7Ė~',^] ;6hw[U}ڗ>cI<{-&ŏx1}X0=O j!]%qT_D%@MV"w0ȵ`ZtyXW :88PoTDYqt5Ryw}Z7i8W23kB"BӼ1=7uHig DJbQ_uzBDQ7@5 ̟(*ѲtAWZ~ s~ѹlrOc`q9DCHze4Z4? *\?&u浊. }l'I֑uxovVuc}zg f >7,5SO#l#@{ YrMo%$T\&9~"a֒:LR>FLA}Zh",xS7#a{ԟӞsX14_ƃPbZ$bx®Q(+޼6=LqC]Uz z@z?5>KU#1 G9UվL$L8(Sc/ D#C%X6\0o0mʩ_0ʭu`ς9ƙO hHJmIJ7-jSvq< +@w7ȭ6[j $@E\gxhk=`#IEWh9f}ט.k!tuHxBނjr;UK+ %a}Q&*(${Fx\O“fs1쭿xR#'-+^ZHR/iᖞݎjkCna]܇:/R &m:sk옟%V]Ⰷʸz_P uq,?_X떚wٰ4yqdSlUXϮY/?Xr؜rX)'Ω+j~BϞ*VAU:^þVo:z-WΐLMY^5Ta WyCYBӤ@qG=Ҩ2B<0{ѥ#((Zo6LIiZMZF&MdXAu8΋mO^2WQ*s7+v\fTZ1GW ZiNKş PEJΐ.~*얞Β';®$<"_z]?&.7Qf-JaX||ipAqC1'f#LZ>hSS ^DV]49- ]pBLxX DrhqCZKsQ%zȔ-0<+G(@s?R $:{3rˡ<aҥO/TXE:޳;B/>nRគIp#0t[grpS &bt~!(B9.[$Y&P˜S@&BS "OƉ|ekOt`2aTrSx1noڈNj )8`ZtAcTdpR4zo}9a 05qB8%RTx誟e3 'ђo-)x43+D*x鍐p;*GGxSrɝ`\je! o7idDEr;.*!:T2c^ jg 0$Eަ vbLrKD4DteZݷ/+h*]FOѪ[ѯt )!5T4uܴd1r5d_m鎘mTYXb9C,!$Δ ѳz94GfQHuts0rO$QKXWK@zx*S%9L t} 9-$ߥRKoO ZQ`o1&X3'Z)S;u;.4#Z j-PV ΅.j0!ڭ-ﶊu翟grx7llcW5~mq,x@(ǒ##rtc ݋0h@O1w\[e d8œ>=JRƪQ0ZkoT Aguj>\` É{xQ/IY%oU0y 3Ju H6)NoӠUSշ&*lj}y"C6BMJkԨYE9uuUAHJsEj]=%̱nRmA7|]XC5V%$zgtTb"G jc> DrFw7з"_ ?>KVn7́5Zo~${9.Bs+*^]Z#5T>q fO߬#=϶&Gg/69QUreElk];v0.*ߐS-ӝƖƘ~Yk< "Z5 ЦS7^XhxX @=s v:Nҡ8 ौ.OARr:.ޝ(X-R @|Jxm"#X7&Q2B`<|ߡcViRХӄ(t='M7g1)HȿZbB98ۀ!c b1-f]v:4֏SQ'OFhPilGzΡFIi{fq/RSDUCljuV~e+ t HqB!ߦxe?[ԓ0@fl=)k;Zk<эyIѮA=և'fg1)䘤,b(stc c3Ԑf !CMb4N M5Z!b".5ZnMd/o"r76ak@_Ŀ#%Ʊwس%k$e'u5/\TtU4×WM?FJ{czA`Tyh$T&5KImS.99nܕ{.3C](~*̕mʁBbdfqecr4;X2{V>lMULd$g /k#q"K5"D_'[rMp N?g+iTV,h1&sX⵼(2۽NG\B j9HRM yq3Z9|-l]uL22@9-Yj1(oɲ7! ՞0=n KCp 9zÅ)=b ʚ?W =L0Wa.Ypݥ:[Vtst̚D3He w uCSMdlCϊ(t/r^B{TE= ^h \eQb`-Lo O"E0ƼþmgԤyͪf#3|i'il[:U)xn9Xa1T]X4bMitKq0I&uX FȢ @@ wFX_&%] eqtBUFG؃7,dd}m2$i9y%I4Ζ)Mحpzk;7, 2fhA Ľ Qfp">GMaE~8IVAf!J-YNBգUd.g "gL3yW| DG]o wg|E "ulF}SH:Y\M/BŔ*aIpen@9BA1`&qCNKsJJu͵"?DH^Ó,v dvOgw{m>KZH>>eZd+kA:u2i;?[YK!&pQY)"察L9l>`! _t#^p\ʷ}a 1jI W2^T,HmN:]Z”WS}(ܒ>p{S* r0D%%; %^7L\r!m YO3e+ψHBff̪9g=TÉ '3I;P[l&iɹ8eb6cX[w狝 +\uٙ^3,pF (}8uقlTyZE6a-}W7#RW,@?}Xr 8".qΓA2{?TYJbTkqRtOd gUȃY&2΂Ahdza`7{ TطL5TjVX*AIeo ӌ =/}s[DԘ =5l4Ќ19L2܉fXT(r[&~7zME淾j 5t!;7Ok`nc J{P' )} xYd3d܈`ZRIUA(ȯ*)g"[ḑ+~"bߡneaP[r;kO{y:Hǂv /툷CC=FiQBPnqc>tkɚGtncَ闌nT|-߾Ѳ m7lax!Kz]~TIH0 y jCEuRǡShՠɄy,9$7Q" ᲏tcG/0Q a:RDq)A [.^\_BC5ǪǺ'ēŎ H8Pّ6KX}op1 BPd9uCL82MX^θC)۹]3m{A&=0Q,tR3At{~l= czivb$Q^EȎu$}2߮+ i<\m{F^:= H ͙J ǕfB:Λ\n:B ^PỤiE. 9B*71 R}6`T|,d g$ۈ_]UwRڀO86y1΍[1Vw? j<'򹞈Dz:\A8-Z9SS7K6o~%aQʀ)64ԡ-wFm*lYi5jaqAQYDQ ɂ q\o_DX+Y| ahgg%^R.4W=˳ /Jn|w!6%g w;gFAʅוswr낥L~ҎvL.Z?Qe/'yf) xO.ohhRVke$ϵ;ɽnGBq5 ?CN \[p Na@sy>3ACrr\k&seDz6H& ~O|tHW,*75UyU_sLI>kѓr4Eg=n.Տ ށ ٤qjs4%zAEf\‘^+Rw,|]؛8 {:Qv9/xSNz{"eұpc $YyylC.h U$HHZ?m~eNWHTBnI䊏qI^Cbu!hc9vTu‘5.hWyByk)3*PvƦ"+6"syғ.FhPsm'rÛx&|cmx@Mg +>C w5YJV!L[%h(xr4µ1ZO[ j3A箬DT(I@ 0(jցt-0@;PPO=hpj,||$d}=;Jbafv(CF)X+)$LD{n&J//M=Vg8'cK0 ٫?IYt [nr]@ ΛL(> u}VɠUlsyXAJI,C)y^kpܣ-#h}Aonӂ֕ b#hzwm㭮/ȟ(S*j( j"rRgF‚B#{`g̋-^ŧnF̆5#4w+x/4/7P}G %v)Ц WZrkF^f*=][ֆ(ͬMcE:L9@{ˤEi`O/ޢfn\s U."]Kr]uJ&;̼EHR M]җ=yWa*w_DTzkі: m:[:H5UDV/@26AˇqC48]Iկ-)|M_N+0K=q{5OA-oF,~21YrG'n@^D8*L M@&ؚS ޅ ` 'qt;b-KlL)\[ҔĽuK#x櫉5hR4sR]NaCF"ζZ6Գ yўD N#Ֆqy,䥘4\Y+Ix̡fV(9ɼ*idlGdgo+kwϨc !#դhQĿ~e`KPlRFÎ".DeM:A{Ϣ cyV=֋|/6445X۞,fe置U0a Bk(4-iĪ T2zu+U˲ߎSfz6 I)}P-zH᎞oB!]4Γ_Ҏ":XIO oV:;.:ͱuUpS>Q:fږ:H'/"H|ºSFU.*g8㖫v%jVQMtG+af-&])ٜ Xa _6MyrZ4n|EDP)HJ7O mC)>cz%cل0e!)V47)i PTf\<r,qtQ'?R~.AgbӚÕ;ݨkҿ"rں|cvu%=^Ryo pO/&x!,j6gfPt,% " h*|cFկYJ #F!VŇZ+_lF/6 6(gV5 ^ 8aeLMՈ{ALVA! j p7GV8ۈx~;)Ycb _xtar.n˙fkg)o^Y,e,sf1KCCB3àjI*˶ߑDew8F:†bwЦQ7M>Y)y~ə!(y)M+M(ad6C%vGjg:e-h KDӠ[ka2UW fRyjġjr "o2rZIB%GՉ=Ĕ 5*m1Wp"}\A;En?ї0mRq`C9r0Uy%I!?p%z_DWWse c? ' '|IqM37,%nAAw42MATsr(%[|wdF6fI}s5y!#uNǟUVEI 1@; P˦ڷPɺ\#;x窾(')B HX2MF7ڧNnB+`rvJf}z.Ȟb%J^RX3# ޘakz*ϕCX4ݽg K;b֤C! V^e:Sd`T( r'IR)#I,Zm}f~YCn[UZ9˘oPʵ dw[}*+Y*ݥӞа ˪EcOE6+B Z'QRIҸ%UuX$QFT6ׅyPm"wdz` %G'h2-31 M5z>";&@V+Wv8T"Nvw |Z`;"0= rGiJH{7,&'Oк;)gUd*j5VÓ~ƌPwٰs`HHY )^-ÊoZ@N,-v~wV^#KifIsڪ L_e 5;NUhuRNO PyT^T{89puClD+| RSHX:&M|{2e$حXDr@1d@Oy2:/τ74X^ \kn.b?B'X7Nؤ2͝n3x=ucYRu[0@&؞+$`VڹsC5uAz[xo!qNU;,ev3i9k ؀g9Oثydw9%oy%`"f:>A!a7pwQ'JTۑI1KoPg,eWZd)լ)v7>T g^<`y2]1q)=w!4 .mFIbmY 38` (z|/: 69LSa4~ hn˜v=/|ã~vc)5b"ֲ+ۘ?*JZi ڵa\*j1>R.*n}'ROU\p*Eb ~tt x05f[6;jVⴐ `'YDZ:r[ Lm4%#t͎G|d z<=OuWEʤ AЩ* ً:.& ztu'laGN24Eqc9iWH5**p|LF|6Fޥpbཀ4d¶(U'\ twof5،?/w(DK&4NƿuQ[xT ,Ef4qՏw;WSAHd.kn*X@z-MIRX$5 z+gVêDb;Soߍt瘈٫lo%(&: N :Z>i{Ya.,d!.v;jد".]~ML Xư_d28<U;.'k#PhU\:9w1{CUȍ`z(u]sn瓶JM]&rnrS ^l1%@h-0 4X")Zߐt~~m2ͫ:b7(c, i'=XyO拍h#>/M N)}3~$ CBqrC/~ YVzLl/^FԶ8o.}n7wPЎ1}oY;+Ex=xC>Ej6WXG愡%SR{gܼu&`dEbp&G & ꂦ>P+㴶jSb'# Ct"㌉xCD_FX\c" (O'<qR_<7ܲ\v5v< rl%-RH;Fb$k{g!Ye+F|EBey:^%.N05s [1` d47}G)f7b)&DhO3GHU:g5r,t;*UՕJu4Q|jmt;~z-p fQهʍTC#d*Q Ȇ`:RW(Ro;~AaYړ TǦsqxv32ׅPNcFkϾSl`;g[9\!}Wш$۫{T!$_Wׁ4]Ђy ?U2 Ԭ+]|M[hj1 4\OSPA)[nEw> glTMwYԂ-+%Dmt[pZ^T=c  [3ul&ql]*G5c48dknԋ忂THA!B^} !ɹ|JQ*S =1C?ܚ|}xBI!}ZgB̽SQy|(a[ը c~KNB;r5@txѱڗdaITΏ_ DVs`Q7!UOsg a&E (sW/n>Z ˩_ N46yyCqSR__r+9H}4PX0׍Gт UԥO`e H9-\)yTޏ_q(=[3Pf,=ߚ?ҥ' iĶzIb/+ڻBrQĒEZ%PGs.X;3$)DR,w( ̐X2T`ϖQe4auPFE'=W^*`3'Fu[SOkF{2n&(KTXjjp3jp.>=|.  %#)\*QkM? -m9Y8kkVD|Krc:gi>):6=ER`{bV"RAʯ zS|{-Ǎ ܏)BlZoK= Bgb5.20uK@i}*-˜3Ҥ)/xFSUMUOpǷAS?iL"!\ t{K3y dՍ0K{sK!QkFC)94~iG}d/6O'ЪTP!1q3S ?5sbBHJŇJ ƴ00*Zֶ>)eN% ̽ w3$OhP2iʭis9:AqٰT+H\S@? 0RD#Ey(]:/BhVCV2p\_>T[l<nmװ6Klz _ Lg* ;>=d@Ķ ~+oETUwMiE^kB Uc}qZP";5P"a'` TUVɳp8H 3JPL%ﷰ]QR~*J+ m vy h8T~-, {1|(tɨ!moN[e[ y1b;ּƴ''#i=g]|K14DwoZw`;]Ex'Zg鎎ՠ\<.L/n%OΊNlZY ޶Kp'UPU\)v ޖՉ[2%%E , }otW .GS1E{exoӣrj!Alzu|.(m+8U KnPs$SȬC`=/#ܝteWr2v&޼Pŝy)e2R }Y丌J &ViA[Q"PQay{fv[!CJU(j ,BM4]%SiοK5NNPr|vU}\򆔇L{1 5aL$u,T 9*M'%#ɼah TKD[<4&%' nH*p c59G( טaKYhRkx;ֈ*e>=% ?V۶;#AI%fۻn3b;~[9O~z.{(ZYJ@WmbR3 ! *+QޅUC1^>p uۄHG _)k%b< UA;1mfu)=E$ġeKW΅i 'fPXwUnn<Mm:K}_fqkuO ]~#0~  V7(ZpS-lK"ՌTrKZ72Gmmx=]{B_)(!Kلh&ԏrYZ'mɌa2a c?2]m ؋O޶2n-A5s]q/_)}&Hh38m2 !3kZvtϚJ\`a5)J:.33jGb0ȳ".~E?v‰)8-o?r\ 8}1Mm&6cP~vu4Պjs\ 5d4;^U:!/{@z.SIldZ_ͦf##/pTy#a'W[zl?TEǿ>fCs0Ж2š<k-"jFXnBU-Df݇({O*T. V Siu {C(6mp%Afltoer_ǫ03SH V';ËZx;oQ+`+֩@35jnLc"3qx W,]m6Y!vzKb4Z*I \(CW^觋c}/ðTYb+MjZc6zDe+.SpTњ݅,e`IӓO'TP"DQY@j b[3 F{D/pykZ!>u/=p 920yB 1u3yd=91Y[yzrJ03eLXڣkDǁj&!b s -{[N{Hýi%k(%O \(\o* TS23ź ϘC.UB3=:7-;Xޙz΃ nA/4Fl sdMbǠ֗w{kx T͵̀(l)9~`IWATi9fw-CKؼI$6y%}ڀЪ'y}ir8.*?@҃ |1:)a ֏PNGS#9NwIfpq%΋s`Yc9zB*;Z7R+m1z ܯJ9uhhbPCͧ=L֊n؉t-zeo? {Aʜ{P&@amYes@^j=WB%ZM|>FeO f v `'j1/[L0n5@Dgqb&.݆WgZ"4Bç~m>0nKfag=v'@䳿*djZ޵ TS agc Fd&"";bY QU`A3,H%;_{ʡ/I9p 1yIE`x'-`/ }Op3ֿټ Om)Q@a.!a@j=l tEMbi7[#'eR]]x?Ӽ)no*O--f  )uU." ޶!jd2"}m+pON}ֺql?vݩ+uYi]F) ENg4 wdq<띓16kru[bO(= z`+ ٍb*mvaC JǩaV>fp -وA <(@#s2XOK6:xGMm`*2F.?R_Ymą 108MA^"ϥ\3YޅFT?aYҪ V׻*}Z~o](~"?zMdL u8 @r~^; bKׇwډEc>G]=irZZƍ5UZIQF FO5wmc=ojj- g5B-٥^|U؁tf1mYV8^V06}zwDN6;"fK/2BuEΒgevV)R, !SM]LѬi}:} BIɕyOv|Lj~ fk5SO(Z; <{i^s\1+Fm)J%M'I }==HD%=^sהJrAxϜKh%v)coN~! ʹnܪv긁'>#W/A#pr܏`u:Xآ({ۦu*ERo|Svv$ 5oZw*\VLZ<Qd}yGZ6yN!7U5.;/U0,g(Zki[d Yy 2ꯈ"Ԥhԑ0 (4զ1p=ܐ/l-яג|颇َPE{†!JtwuCFJ?Ϯ(4Bj6CV,sjCq z[R4\=;DbT' $ )!Ym[FW ni7g kxOy bXpKʯG!!fH0:t;d,ʥW %sr~,̵-կL[废QOi|Uy@jJ'1Dx8&!0έzIվ1g$)Yx;wm-„ff@ezai:ƀM#G8i_D@ryTktA=HPúߙ-`gZ78*ߊ@(1f=Wı> ˆfdNΤ *T@Qlۚolo׈{M'SڱX; Jnb)(h1HwRڦx5ߔg3ێ&RHZi-ҟL0YQJ)C*֪T1:\=J (XnPTjiLVtsq-N;`2Lwfv7RmlpVîFIA6{X핕R4S1aTv5k}Vգ0gU_N]@һԧλ_ =I{8J 7f%ܕZF>ꤕL溸#ҍMAŷY,yf7MvQ*ߛ>TCD$d|BWQW u&= dx呗lQ$I2,ɛDȿziv o_gJI|Az6؂VaYժ"l(Jq58jDr6FjkOzM R#ɒW|I6oqV5Ml鳗y[ U%+Q3ζRZ/DI)DH%Kfͬ2!Vҋs(e*^O@LCutKTa>s*/%`tb:pㅏ`#j0Dλf;@:tb506oȴ`+]<q9|@„@o.q#S P((]eh5ͣ P<oh)@2Dfc)cQS jهkVZM-m;I2>ch!<夠BOR;]<^2(ܽ5'2nn &-LC$;?t>% >DKBv9b,hb$2ozG_J3cou( 8~\5:;#߉`}xa` Q1werD JճDw )iYGǾ%* {8 \?wмm_QY9T4a]dክ >N*I7BbWo "JcUo=&# ?Z0vD\_8s/?FոE"B@$!f.I. >_Ldz,7-A1gϜoʬz8wvUmyr* 4N!JDMvTOVʕQpUzPFeSwFM&Č!=݆6 %ڳ0ĥ@8w;'HJцdod m\Zk}H̕­9/2ii\ *zjQFQz|ZB,z%WevЏnGV'ؠv4s3y-RM-ʯeS]w_tl/Q'Bp)VkQX@=vet(e߉Pmg"2hrV}WЀϏ{R2wٛ,p{^lzW-6F\4 51*ndA)ᅸ%N=\ÏD/Mtzz%>[Q`7w4C77Qm}\3jwԨ/Y I* EgE\"k60Dv!@m2Ph>֟zHW̤ĽAqSokL\۾ ߪCϏҗykWԽc]OMsB% :+쥩a`kqn P ESg3/^z9TT1_Fc 'fMзr;LnS ^̧yA,9^`/>NL6,qV0% vg T P*5w23{!s@NևşeU-+b$nz@zn(xmv}Ere'`1&D*NPׅe>'#6st&dKpNc\ֽAjǰ|f9҄gDIB"g7t_*9Zo7, OO?Wc'liZ XJu(տv DJ`|Ҭ'(,F^@Iu\^=ʡ!WrNT_mŗ=]~UE|z輅 љk[qwt8)cd6ssv63_߿L)'u*lEWwG,HF`$7f- v 'B,+\V?B5$ 9VHVnx0_W'8QTlJ%C6!bZ,g$/ۯoaC8*h\[ZKoP0ݰ'OSk55)w;dvr߫S2,D` I{!=3oiK+|.{1PU8E{}:;%JQyIB9?Mia)h{(([ANtTo|r?*5'!N\[(:',Xxn;Tޖ7W". 1AVFnvCMv`͂PSkQ쑰4綘)IbUNƂ[h^ͽt4u*\=0EPXW5۱)o"ur:DM^S{^>F`gc%cv%#=CW|Pz"l7IbnȰfʽ3 22pIɥBsT|XmE0ܘB9g \Qt`Tw'h$u#IAp}ON"} $BI. ޛb7HVD\ٟwGl,4H\>aat 4PPK&ȋVQN3:;# 6n39%:G9Z$f}#5z?a0:N."%`c'/vEwJ@ 0\pMo UQ=*&cV{wtO cl 3^OODgOZ|TeN\ R=Yc?7T<[@>!C28ۓRQ%|@7Hk@aDFVټdZTU#+';M@Dq,Bp+fc0c-5gb bЇͶ*z+݉u?/ vC|B T`¶޵$xޚ&/ L_&W2vD;yYo\Lɉum*T?ّ%Og#љՄ7*p՟χQm}/3t)R szm9Ua&`RX0;<*444Ԣ |#} -EaO)yb;:& %6=sPl攂\#DJE| Fr1sֹ^n[LX7gU'gs$d&{#W1^d \w ߂ jXbj [!mF~ͧΈA)(X hC+ (l!Ϸ*}^TcA:k:<Pz78DŽHFcҪ`eeCvetoG]CMV笡fN#@7~ ފh8ODsN .$Hz0 dKKkY?2BHBih4|՛ 'P+a}Fnn!H8KrAa_I@bU-|dZ+'%v4FVc RKT$B)j܏VUS^Z zð23 zG4ӧGif( % Юӂ=Iw%{n.W8k;$RrFdDT6 ;dϓ74m^5 &A: 6D.(yxvLXٖ 8TwIQ%ǹqRoAb]5x*ˍ +u'D dL~刼f2n4s@Nr=frWNhfj_D3(O,GoCRUhm?j|vEp Y_5EWBaol̓3,O;VM~\ 씳 C4]f?C4*:g%\SNjg"=& tILª11yMX'kI3>M5` vqVU,/%x#[#^ä xޢO?rr/:Թ_A`Y@H10bO[0uԽc%㕶)\?c ?j(.yX5!{&L^IèZJxsޝP+YPggdX]W&&ɟ rAy>“~eEvuZuwM}䡣Lo.%r s1$!\m&U:T\/"?pW8$p<:Vʑ[濧0 ݝ`}ԌiM1kT2fxO)x-Bkq-v|qbڌ_[lw,Yo28nv\DTefN@>~BM*M-.KX oX@V叞 *\V5:乪ޟE*_nBuRhc+=QqGZ-qY;hk-&8%D]vgQb yrPӡFQ gHk=!R?ﲗLb,a@ A8-G&;=`(j% ""3!`666Y^W|LUfKϱLt׋p ZHխx׃#U^$ڧgm6}K"SNHsZ -Gj.c>YLhn 1>h5"B/Ȱ0XI># |#a@cߝVTg#*[q0^ŵp 0-M `z˚Ru$873:%@^=S]@`t &(j.VXރZ6/fcEW ȶd}YuJ͸$Eum*CYу}WeOAaeK#)3I /Oj؍@x`Gef~IX?GgYuK} 5q="BqS F W~nUOĪLSsrTVi{x,i{u4Yqiwe]!Fr.*uW=$tM"GЌ. ? dIgvMQ9%=^O/@on5Up~k 6|H9nWP={4$y&y(r۬t+sg cAzߴ-e >A'?R UqIk ?kC UeR$A^ZU(8bn(O]2me)r>R6=w4OludvM@ֶ߀1JgisvG܂JM]t ;IawHֲ?YM(@xa m8@MC ޹|{DRo'Z+t5"at )̒ʹk0ހwA[,o]eWhHcDIѵ/`Q*Ǐw]9-Psl.}5 '9{*!FS YZ