fwupd-lang-1.5.8-150300.3.3.1 >  A b 5p9|U Az(I+t&3iGv3Q+ ea)6y*sճ,c0c257a410664fcc50db53e5b900eadffc9f424810c097c29948bdb2b6a0975bebd2dc40dd890f83a57fd8da5d0e6a54e063ccc7cb 5p9|nL0E4hhioA^-S1?Ev}!;PN!6uUF A\8xzƅ)R˔_b0hz7`r#2'$! ҮN4aPO))A=qD9tdn$.3Ū0b\OaCIcݦ5T5sT*2/_.p_҃#^@o,onW< 2P eeKa >p<3?3d   ?pt|  $,  $        R t    ( 8 R9R:RG*pH*I+hX+Y+\+],(^-?b1jc2d2e2f2l2u2v3,30343:3<3@3F3Cfwupd-lang1.5.8150300.3.3.1Translations for package fwupdProvides translations for the "fwupd" package.b 5sheep52 JSUSE Linux Enterprise 15SUSE LLC GPL-2.0-or-later AND LGPL-2.1-or-laterhttps://www.suse.com/System/Localizationhttps://fwupd.org/linuxnoarchĔBV<G4V v 3|_x\])x3`0]*):ꁤb 4yb 4yb 4yb 4yb 4yb 4yb 4yb 4yb 4yb 4yb 4yb 4yb 4yb 4yb 4yb 4yb 4yb 4yb 4yb 4yb 4yb 4yb 4yb 4yb 4yb 4yb 4yb 4yb 4yb 4zb 4z56408650dab72c80c21963c6c3992568ec44c8c4d83c796e1dcc3ee9ad3027d5233d64b972becfb427857807e560c4a81586ff05808c3333efb2631911fe7f8cc29d12a568beaeb927402ae2397b914d1ab86febc3e67cdafed2ab4ce3bda390d2d76e4e6615a403ae7007bf05b2ef6fa6dedaae125e2cc180184ef9c5b61219e916dd9303869bb34ac9125635e71e18d60b0c97e8a8304c4b9063dff1e6c7359bb1ccc929ffbdac746ef0067db35786448810f5204d49507b33486cb81d99bc5e8e34d1b5cbb5c60266437bef0fc21c2b43f2ccf6350bd2b8fb83a051e66ec9f1147c50e0ba6cb99f798817c2511a2fe8458d3e656ccb5b3c7e67c678bf95fd5f4284485374792c4b2644dcc0e732b7207039f17b69141c3e9faf7139d2c837d793059eab6d3c5bae9bdc9032d23163c334adb89041a79e6717e101e3761df436140e47c93498595b665a24ec7299c0343a48b005dab19ea75e10469bd0df6054b28441e0cf99578d0ce4805ad1f973f5236e8e00ab225565d79dd5136f42a4b642118c5ba09b37ced9d03ea23776b8695b701a8840e9059a8046997cac52faa944b621b26b097056f8f44bdbd5f590bc2e959d169a2dac798305c7e9f690284c17516b1d4564e97ecb53a8d796145b45c5057742a6d59c754a1d94f595c030600a5ac2247469e5b41e60469a9374aa4dd931772082cd7ae034b20a020c8e27fdb149d2031f20255309addceddd50048f8f6ee73fa74d75526a0827c038d4f30548ba42f6adf5fed0118a448647ac64d484591219ddcac905b199d461e46f9ab7de226d3075cee6379ca18227ac6617b65af219d54e2b06c0be13a8875e3ba3d3d94b240bd97cd2067ef3960e3104cb17d7f95e62259dfca4649c085ecaa362a2862d57a9a409bcd855049a1085519ceeda4f69bcb73618ee76c18922474f1c36a01298f3e510fb2bb80211f521b3b4c6c9a6ea199fa79edd0f72148c4eaae13a7c51ae6e979e01eea54bfa7633b3706b99c661d104ef06fdbeb32b1bf0def3984cab0bb26a346ba00dbcf7df3f664a0baaf3fac77adac42fed4c6345f7ee9f0f8cd1d6cc2d6de123cf82e854e219ed3c79f94484e2c1d56429acfa37146341da82bef6e622b0cbb6eb9ddf093a7e2d000e1133a6ab3ada408b8087ca86b5483442c30d43c25534b2f015cd0742c3cac2865c2651f7a78313ff80b4e39f6ffe71d922b39266c5513a94e62de875b9ad2a93ccce56085d93efeb6fde7abc82cfbac7ab8100d0a572fd4071718aaa8de2670619a5bd9bb7e05f1114aa0d2d265d8ada298e07400fa279c4088d5c3537fcaba73dc05ba413d8e1a2a240c99a7c0dcbc9a2835ab335e5c608cfa71ef19dcfcb3aa760766f7ccebac7928978f31bbarootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootfwupd-1.5.8-150300.3.3.1.src.rpmfwupd-langfwupd-lang-all    fwupdrpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)1.5.83.0.4-14.6.0-14.0-15.2-14.14.3aZ@`e`c`KW`6?`.V_S_м@_$_i_F@__@_O@_"@_"@_"@_@^א^א^1^@^h^)^ @]@]@]c]8H@] \\-@\@\Yz\73\\U@\ @[k@[Q@[\[h@[Xf@[GB[E@Zľ@ZlZ@Z`@Z1@Z1@Z1@Z;@Z8@Z2gYYYX @XX*X*X*X*X*X*X*X*X*Vii@Vii@Vii@Vii@Vii@Vii@Vii@Vii@Vii@Vii@UeU+U+jlee@suse.comglin@suse.comglin@suse.comglin@suse.comglin@suse.cominfo@paolostivanin.comglin@suse.comglin@suse.comglin@suse.comglin@suse.comglin@suse.comdimstar@opensuse.orgdimstar@opensuse.orgqkzhu@suse.comdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgyfjiang@suse.comdimstar@opensuse.orgdimstar@opensuse.orgglin@suse.comglin@suse.comhpj@urpla.netstefan.bruens@rwth-aachen.debjorn.lie@gmail.comschwab@suse.debjorn.lie@gmail.comglin@suse.comglin@suse.commpluskal@suse.commaurizio.galli@gmail.comdimstar@opensuse.orgglin@suse.commail@bernhard-voelker.debjorn.lie@gmail.comglin@suse.comschwab@suse.deglin@suse.comndas@suse.denico.kruber@gmail.comjengelh@inai.denico.kruber@gmail.comtchvatal@suse.comoliver@getspam.deoliver@getspam.dedimstar@opensuse.orgmpluskal@suse.comantoine.belvire@opensuse.orgfcrozat@suse.comdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgstefan.bruens@rwth-aachen.defcrozat@suse.comstefan.bruens@rwth-aachen.dedimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgmpluskal@suse.comzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.org- Add fwupd-bsc1193921-nvme-ignore-non-PCI-NVMe-devices.patch to ignore non-PCI NVMe devices (e.g. NVMe-over-Fabrics) when probing. (bsc#1193921)- Remove valgrind from BuildRequires since it's not a hard requirement anymore. (bsc#1184248)- Update to version 1.5.8: New features: * Add a new internal flag to opt-in to GUID matching * Add D501 Baklava device support * Add fu_device_set_battery_level() * Add missing uint64 read and write helpers * Add Qubes wrapper source and create packages * Allow enabling plugins only matching a specific HwId * Prompt for unlock keypress if reset command is blocked * Remove obsolete dell-dock non-passive update flow support * Remove the Hughski public key * Show a warning when parsing invalid quirk files * Support for GATT characteristic signals/notifications * Support more than one protocol for a given device Fixes: * Align the CCGX DMC firmware to 64 byte chunks * Be more strict for custom quirk keys * Check pixart firmware compatibility with hardware before flashing * Correct a thunderbolt assertion if kernel failed FW read * Correctly erase STM32 devices when transfer size is less than sector size * Detect SREC overflow to avoid adding ~4GB of 0xFF padding * Do not show a critical error when flashing footer-less binary files * Don't allow device updates while needing activation * Fix a regression in the elantp defined IAP start address * Fix a regression where activate stopped working * Fix firmware update of pointing device on Lenovo ThinkPad Nano * Fix the HSI plugin 'Disabled' state * Fix the quirk key name for the Lenovo HDMI with power * Fix writing to the GD32VF103 bootloader * Only call elantp->detach() when writing a firmware blob * Updated StarLabs GUIDs * Wait a few ms for the Logitech hardware to settle after detach - Remove GPG-KEY-Hughski-Limited from the filelist - Drop upstreamed patch + fwupd-bsc1182057-fix-sbat-section-copy.patch- Add fwupd-bsc1182057-fix-sbat-section-copy.patch to set the proper section flags for .sbat section so that objcopy can copy it into fwupd*.efi (bsc#1182057)- Update to version 1.5.7: New features: * Add initial support for Bluez bluetooth devices * Add more supported pixart devices * Add support for the RTD21xx HDMI converter Fixes * Convert MBR types to GPT GUIDs to help find the ESP * Do not allow updating a synaptics-mst device with no customer ID * Drop unused heap pages after startup has completed * Ensure SBAT metadata is added correctly * Move the plugin build logic to the plugins themselves * Only allow verify-update for plugins that support CAN_VERIFY - Specify SBAT metadata for openSUSE/SLE (bsc#1182057) - Adjust the meson options + plugin_uefi => plugin_uefi_capsule and plugin_uefi_pk + plugin_synaptics => plugin_synaptics_mst and plugin_synaptics_rmi + Disable Intel AMT plugin in non-x86 systems- Update to 1.5.6: New features: * Add SBAT metadata to the fwupd EFI binary * Add support for GD32VF103 as found in the Longan Nano * Add support for RMI PS2 devices * Add support for the System76 Keyboard * Allow downloading firmware from IPFS * Install the UX data into a single .tar.xz file * Add a plugin to update PixArt RF devices * Add new hardware to use the elantp and rts54hid plugins * Allow specifying more than one VendorID for a device * Detect the AMD TSME encryption state for HSI-4 * Detect the AMI PK test key is not installed for HSI-1 * Add Maple Ridge Thunderbolt firmware parsing support * Add --no-remote-check to ignore checking for download remotes * Allow creating FMAP and Synaptics firmware using builder.xml Fixes: * Add support for the Starlabs LabTop L4 * Allow using an external ESP again * Ask the user to reboot when required if downgrading * Be more paranoid when parsing ASCII buffers and devices * Check if the fwupd BootXXXX entry exists on failure * Clear the pending flag if restarting the system * Do not allow flashing using flashrom if BLE is enabled * Do not allow Lenovo hardware to install multiple capsules * Do not parse the OptionROM image * Do not show Unknown [***] for every client connection * Fix dnload wBlockNum wraparound for ST devices * Fix OOM when using large ArchiveSizeMax values * Fix several crashes spotted by AddressSanitizer * Fix several places where the Goodix MOC plugin could crash * Include the PCR0 to the report metadata * Report the lockdown status from UEFI and SuperIO plugins * Show a console warning if the system clock is not set * Fix flashing a fingerprint reader that is in use * Fix several critical warnings when parsing invalid firmware * Fix updating DFU devices that use DNLOAD_BUSY * Ignore the legacy UEFI OVMF dummy GUID * Make libfwupd more thread safe to fix a crash in gnome-software * Never show unprintable chars from invalid firmware in the logs * Allow using fwupdtool as non-root for firmware commands * Do not trust the Block.HintSystem boolean for ESP filtering * Fix a memory leak when parsing Synaptics firmware * Fix a possible crash when reading the Goodix MOC USB request * Fix crashes when parsing invalid FMAP, DMC, Solokey and Synaptics images - Deprecate fwupd-bsc1179790-disable-hintsystem.patch- Add fwupd-bsc1179790-disable-hintsystem.patch to remove Block.HintSystem from ESP filtering (bsc#1179790)- Update to version 1.5.3: + Lower the CURL version required to fix build in RHEL + Do not use meson ternary operations to avoid bumping the required meson version + Added Lite Mk III + Allow setting the GMainContext when used for sync methods + Fall back to the misc device for serio devices + Actually implement rescan in FuUdevDevice + bcm57xx: Refactor CRC code to remove extra byteswap + bcm57xx: Fix CRC check + synaptics-rmi: Don't crash if calling ->to_string() before - >setup() + Fix a possible critical warning due to missing retval + Add the serio->firmare_id for UDev devices + Export the driver name from FuUdevDevice + Allow the client to send PKCS7 and GPG signatures + Force the remote kind to JCat server-side + Only parse the signature if the remote is JCat + fu-main: Fix sender_features insert with wrong size + make platform integrity plugin optional and disabled by default + Add quirk for Western Digital + Mark more user-visible strings as translatable + modem-manager: validate firmware update method combinations + modem-manager: remove unused byte counts in QMI/PDC update logic + modem-manager: make sure the correct interface number is used for QMI + modem-manager: udev monitoring only if device switches layout + modem-manager: plug udev client leak + Restrict loading component types of firmware - Enable supported_build to clarify that this package is supported (bsc#1179790) - Drop fwupd-platform-integrity.conf since upstream disables the platform integrity module by default now due to incompleteness. - Address fwupd-refresh.service in %preun, %pre, %post, and %postun and provide a rc link for it - Version "Obsoletes: dbxtool" and "Obsoletes: fwupdate"- Update to version 1.5.2: + ata: Add OUI quirk for Toshiba + libfwupd: Restore recognizing gpg and pkcs7 types still + Register the SoupSession gtype when required + Switch from libsoup to libcurl + Fix sync method when called from threads without a context + Move ABI check to Github actions + Enable github workflows + libfwupd: Add fwupd_client_download_file() + libfwupd: Add fwupd_client_get_user_agent() + Only download the remote metadata as required + Add breaks for fwupdate 12-7 (Closes: #960688) + Install modules-load configs in the correct directory + vli: Do not be clever replugging the MSP430 device + vli: Make some trivial debugging more specific to help debug an issue + make gcab optional + Fall back to FAT32 internal partitions for detecting ESP + Add a flag to indicate if packages are supported + uefi: a new option for uefi configuration to use UEFI removable path + Add a section to man page on scripting + synaptics-mst: Improve reliability by waiting 2 seconds after writing data + hailuck: Add an plugin for the Pinebook Pro laptop + Allow setting global flags for FuHidDevice + Set the SMBIOS chassis type to portable if a DT battery exists + colorhug: Don't set the version format to triplet at startup + Allow components to set the icon from the metadata + colorhug: Fix detection of version on older firmware versions + bcm57xx: Fix reading vendor/device ids from firmware. + Remove HSI update and attestation suffixes + trivial: make dbxtool executable to fix snap build + Ignore an invalid vendor-id when adding releases for display + Notify the service manager when idle-quitting - Refresh fwupd-bsc1130056-change-shim-path.patch - Changes in BuildRequires: + Replace pkgconfig(libsoup-2.4) with pkgconfig(libcurl) + Replace pkgconfig(systemd) with pkgconfig(libsystemd) - fwupd-msr.conf and fwupd-platform-integrity.conf are moved to %{_modulesloaddir}.- Obsoletes and Provides dbxtool since fwupd 1.5.0+ now embeds dbxtool in the dbxtool plugin- Amend the spec file (jsc#SLE-16818) + Only enable fish support for Tumbleweed + Only enable the MSR plugin for x86 + Only install dbxtool in the architectures with UEFI support- Update to version 1.5.1: + Use UDisks to find out if swap devices are encrypted. + Show a link to discover more information about a specific plugin failure. + updated fish completions to 1.5.0. + Remove the duplicate parent-child data in FwupdDevice and FuDevice. + Show a less scary fwupdate output for devices without info. + thunderbolt: recognize authorized value of '2' as well. + bcm57xx: Make hotplug more reliable. + Use a different Device ID for the OptionROM devices. + contrib/ci: switch TPM simulator from ibmswtpm to swtpm. + Delete unused EFI variables when deploying firmware. + Fix probe warning for the Logitech Unifying device. + Include the amount of NVRAM size in use in the LVFS failure report. + Add external interface messages.- Update to version 1.5.0: + Add a compatible re-implementation of the rhboot dbxtool. + Add async versions of the library for GUI tools. + Add commands for interacting with the ESP to fwupdtool. + Add firmware-extract subcommand to fwupdtool. + Add FwupdPlugin so we can convey enumerated system errors to the end user. + Add plugin for Goodix fingerprint sensors. + Add plugin that can update the BCM5719 network adapter. + Add plugin to update Elan Touchpads using HID. + Add support for a delayed activation flow for Thunderbolt. + Add support for ChromeOS Quiche and Gingerbread. + Add support for Hyper hardware. + Add support for the Host Security ID. + Add support for ThunderBolt retimers. + Add switch-branch command to fwupdtool and fwupdmgr. + Allow blocking specific firmware releases by checksum. + Allow contructing a firmware with multiple images. + Allow firmware to require specific features from front-end clients. + Allow updating the dbx using the LVFS, validating it is safe to apply. + Include the HSI results and attributes in the uploaded report. + Support loading DMI data from DT systems. + Support LVFS::UpdateImage for GUI clients.- Add fwupd-jscSLE-11766-close-efidir-leap-gap.patch: Set SLE and openSUSE esp os dir at runtime (jsc#SLE-11766) - Drop _multibuild and build option -Defi_os_dir="%{efidir}": with the above patch fwupd can detect esp os dir dynamically - Update the efidir related %post and %postun scripts in spec file- Update to version 1.4.5: * Add XB_QUERY_FLAG_FORCE_NODE_CACHE * Add support for a delayed activation flow for Thunderbolt * Allow firmware to require specific features from front-end clients * Allow multi-byte FuUdevDevice preads and writes * Be more defensive when remotes are missing required keys * Disable the SQLite lookaside cache * ccgx: Add more hybrid dock support * ccgx: Modify readme to remove customer info * ccgx: add new protocol for dmc dock * ccgx: remove verify flag in plugin * modem-manager: read the vendor ID directly from sysfs attribute Fixes: #2209 * thelio-io: Add the DFU instance ID as a counterpart only * thunderbolt: Add a new subclassed thunderbolt firmware update type * thunderbolt: Allow quirks to skip the authentication step * thunderbolt: drop support for force power * tpm-eventlog: fix PCR0 calculation * uefi: check for free space after cleaning up ESP * vli: Add dual-image feature for VL103 backup firmware * vli: Add the project ID shared SPI PD controllers * vli: Allow chained usb hub devices where the parent needs GPIOB reset * vli: Do not modify the class vfuncs depending on device type * vli: Do not use GUID matching for the MSP device * vli: Rename FuVliUsbhubI2cDevice to FuVliUsbhubMsp430Device * vli: Set FuQuirks on the shared SPI object * vli: Set the i2c instance IDs in probe() * vli: Use the GPIOB reset for the MiniDock VL103 * vli: Wait for the root device to be replugged when updating the MSP430- Update to version 1.4.4: * Release fwupd 1.4.4 * Fix regression when checking for downgraded metadata- Update to version 1.4.3: * Release fwupd 1.4.3 * ata: A OUI quirk for Kingston * ccgx: Fix a potential division by zero * Check the device requirements when returning from GetDetails * fu-engine: Allow --plugin-whitelist to use dashes instead of underscores * Always enforce the metadata signature has a valid timestamp * ccgx: modify install duration for dmc device * ccgx: Add support for HP DMC dock devices * dell-dock: prevent updates to occur via synaptics-mst plugin * dell-dock: Capture the dock SKU in metadata * synaptics-prometheus: Force the minor version from 0x02 to 0x01 to make sure the devices can be updated back to 0x01. * Generate a body for github releases (Fixes: #2034)- Build the package separately for openSUSE and SLE using _multibuild (jsc#SLE-11744).- Update to version 1.4.2: * vli: Add no-guid-matching for all VLI devices * vli: Remove a copy-and-paste mistake * Add two OUI quirks * ata: Add WD OUI quirk 000cca * synaptics-rmi: Essentially blacklist Dell K12A * dfu: Avoid communicating when bitManifestationTolerant is off * ata: Add OUI quirk for Western Digital * dfu: Support MATEKF722SE quirk * Fix various build issues with -Wdiscarded-qualifiers * thunderbolt/dell-dock: Delay activation for Thunderbolt updates * Switch the default of EnumerateAllDevices to false * Add OUI quirk for SanDisk * vli: Add two standard USB instance IDs for shared-PD devices * vli: Use GPIOB to reset the VL817 found in two Lenovo products * tpm-eventlog: Correct the display of final calculated PCRs * wacom-raw: fixup switching to bootloader mode- Update to version 1.4.1: * thunderbolt: Don't show safe mode errors for USB4 host controllers * ep963x: Various changes to make the plugin actually work on real hardware * Make tss2-esys conditional * ep963x: Remove some dead code spotted by Coverity * ccgx: Only update the FW2 partition of the ThinkPad USB-C Dock Gen2 * ccgx: Expand the FWImageType for future hardware * Allow specifying the device on the command line by GUID * Fix the DeviceID set by GetDetails * wacom-usb: Fix a theoretical buffer over-read to make GCC happy * vli: Only show the i2c devices on the USB3 hub * Allow devices to be updatable, but only when upgrading a proxy device * Reset the progressbar time estimate if the percentage is invalid * ccgx: Always report 100% when finished writing * Add a device quirk that forces an explicit device-id match * ccgx: Set the device name and summary from quirk files * vli: Only do the APP5 FW bug fix on affected hardware * vli: Show all the buffer when debugging with FWUPD_VLI_USBHUB_VERBOSE * fu-engine: Refresh device name and format before setting supported flag * Allow a device to set the logical or physical ID during ->setup() * ccgx: Split out a trivial helper to set the instance IDs * ccgx: Set the device name to be more useful * ccgx: Set the logical ID as the FwMode * ccgx: Split out a trivial function to set the version * ccgx: Do not reboot the device write after installing * ccgx: Do no show the flash parameters when unknown * Allow devices to match the proxy device by GUID * Do not skip attach() if the device is marked _WILL_DISAPPEAR * dell-dock: Port to using fu_device_get_proxy() * Allow adding a device 'proxy' device that can do actions on it * vli: Do not show the USB 2 recovery devices for USB 3 hubs * vli: Add metadata to identify which is the same physical device * uefi: correctly format firmware version of Dynabook (né Toshiba) X30, X40 and probably others * synaptics-cxaudio: Use the ->attach() device vfunc * synaptics-cxaudio: Wait for the device to reboot after writing firmware * logitech_hidpp: decrease verbosity of messages that hid++ ID is missing * Prefer to update the child first if the order is unspecified * Do not modify the device priority for child devices- Exclude fwupdate from the architectures without UEFI support.- Update to version 1.4.0: * Release fwupd 1.4.0 * Allow removing device flags from quirk files * Use black to format python source in a consistent manner * Define SOURCE_VERSION when building a package * Only set the parent when adopting children * Do not conditionalize attach() and detach() on IS_BOOTLOADER * Do not crash the daemon if a plugin does something dumb * wacom-usb: Add more sanity checks in case the daemon goes crazy * wacom-usb: Use a per-device cleanup function * Add some more device regression tests * wacom-usb: Add a lot of missing metadata about the devices * wacom-usb: Hide a lot of debugging behind FWUPD_WACOM_VERBOSE * Only auto-add counterpart GUIDs when required * ccgx: remove update message * ccgx: add parent guid for hybrid dock * ccgx: Use a smaller timeout for i2c read and write operations * ccgx: Retry the register read and write with a i2c reset * ccgx: Fix buffer overflow when reading out i2c status * ccgx: Retry the HID disconnect up to 5 times * ccgx: Show a better error message on failure * ccgx: Allow forcing firmware of the wrong app_type with fwupdtool * Modularize the hardware tests * Ignore indirect devices that replug during the composite firmware update * Export the device state as part of the D-Bus interface * Fix devices that use CounterpartGuid when more than one device is installed * Use the GUID as a fallback rather than the connection ID * ccgx: Fix critical warning on i2c write failure * logitech-hidpp: Do not add peripheral devices for receiver in BL mode * Install the installed-tests only if tests are enabled * Load the signature to get the aliased CDN-safe version of the metadata * vli: Only reboot the USB hub once * synaptics-cxaudio: Only use the PATCH2 address when the patch level is 2 * add STM32F745 stm dfuse quirk * dfu: Add a way to set the timeout from a quirk * Export the release urgency * Export the release creation time * Check the firmware requirements before adding SUPPORTED * data/motd/fwupd-refresh: Only order after network.target * ccgx: Do not add the HID device that will disconnect * ccgx: Use Silicon ID and Application type to set flash parameters * Add a new daemon configuration option to control EnumerateAllDevices * logitech_hidpp: set the bootloader protocol * Install meson from pip for LGTM * bash: add completion for fwupdtool reinstall * fu-tool: add reinstall command * fu-engine: export fu_engine_get_releases_for_device in header * vli: Wait for the VL103 to timeout to fix detach * ccgx: Show the UpdateMessage in the correct device mode * ccgx: Add extra instance IDs to match specific firmware * Use a static version number * thunderbolt: Rather than hardcoding to PCI slot numbers, use domain in GUID * Revert "thunderbolt: Create a unique GUID including Thunderbolt controller path" * dell-dock: Port to fu_device_retry() * nitrokey: Convert to use FuHidDevice * nitrokey: Port to fu_device_retry() * vli: Port to fu_device_retry() * Add fu_device_retry() helper functionality * ccgx: Implement writing firmware to flash * ccgx: Add i2c status check when reading or writing registers * ccgx: Add 5ms delay between read registers to avoid an i2c error * libfwupdplugin: Use fu_device_locker_close() * synaptics-mst: Use fu_device_locker_close() * Add fu_device_locker_close() * ccgx: Do not store the silicon ID in the image address * ccgx: Add device quirks for the Lenovo Hybrid Dock * ccgx: Switch HID mode to HPI mode at startup * ccgx: Clear the event queue when in startup * ccgx: Wait for hardware to settle when coming out of reset * ccgx: Do not mark the device as updatable when in boot mode * ccgx: Verify the firmware app type when preparing firmware * ccgx: Set the update message when running in backup firmware * ccgx: Read the FwAppType from the hardware * ccgx: Set the HPI version number for the current firmware * ccgx: Get the silicon ID to map the flash parameters * ccgx: Read the HPI device mode at startup * ccgx: Set up the HPI I²C config at startup * ccgx: Create devices when in HID and I2C modes * Add a new ChromeOS CI target to build without GPG and PKCS7 * Use Jcat files in firmware archives and for metadata - Removed fu-keyring-gpg which caused CVE-2020-10759 (boo#1172643) * csr: Allow truncated HID reads * vli: Only consider the high nibble when building the sub-version * csr: Parse the firmware as a DFU file * Add support for EP963x hardware * Add FuHidDevice abstraction * vli: Correctly attach VL103 after a firmware update * ccgx: Parse the metadata block in the firmware image * ccgx: Add a firmare parser for cyacd files * logitech: Correctly set the protocol * Add the optional device-id to the update --help output * Fix a difficult-to-trigger daemon hang when replugging devices * vli: Remove a dock device from the whitelist that is never going to be updated * vli: Add some trivial debugging to help track down a bug * vli: Never add USB hub devices that are not upgradable * uefi: Don't use shim for non-secure boot configurations * Start fwupd-activate.service after snapd.service * dfu: Actually reload the DFU device after upgrade has completed * dfu: Add one more m-stack device requiring a quirk * Apply version format to releases and devices at same time * Ensure that the DeviceID is set for child devices * Fix a daemon crash when removing children * Allow waiting for the parent device when replugging * Add fu_device_get_root() shared API * vli: Fix an error when detaching MSP430 * vli: Fix a critical warning when getting the USB speed * vli: Fix the error enum values for the MSP430 * Do not add blank lines when tokenizing Intel hex files * vli: Fix the version calculation for MSP430 * vli: Ignore one more error when attaching * vli: Always expect the VL103 header at 0x1003 or 0x4000 * vli: Do not fall back to the recovery write for usbhubs * vli: Only show the 2nd header if the device ID is valid * vli: Fix VL103 reboot from ROM mode to FW mode * vli: Add some better comments for writing GPIOs * Add a helper script to add a DFU header * Add 'firmware-convert' subcommand to fwupdtool * fu-engine: Make two passes of requirements checking * fu-engine: Copy the VersionFormat from the CAB if specified in `get-details` * Add a new plugin for CPU microcode * Don't build/install fwupdagent man page if agent build is not requested * Introduce a new VersionFormat for `hex` * Drop UEFI quirks we now inherit from metadata * ci: build Debian using libflashrom * When TPM PCR0 measurements fail, query if secure boot is available and enabled * fix fwupd.shutdown.in according to the movement of fwupdtool to bindir * ata: Add OUI quirk for Western Digital and Intel * improved fish shell completion * vli: Set the MSP430 version format to pair * Always return AppStream markup for remote agreements * ata: Add trivial OUI quirk for Micron * added completion script for fish shell * Do not fail loading in /etc/machine-id is not available * Use xb_builder_source_add_simple_adapter * Create FuCabinet and untangle a lot of legacy code * nvme: Do not try to handle integer version numbers * Allow server metadata to set the version format on some devices * fu-tool: Correctly append the release to devices in `get-details` * For the `get-details` command make sure to always show devices * fu-engine: Copy the version and format from donor device in get-details * fu-engine: Use unknown for version format by default on get-details * Inihbit all power management actions using logind when updating * Decouple the version format from the version itself * Add raw versions for bootloader and lowest * Allow server metadata to set the device name on some devices * Remove support for GCab less than v1.0 * fu-device-list: Check protocol before de-duping devices * Do not allow devices that have no vendor ID to be UPDATABLE * ata: Include a vendor ID for ATA hardware * ata: Switch off the verbose logging by default * Always check for PLAIN when doing vercmp() operations * Discard the reason upgrades aren't available (Fixes: #1678) * Improve the description of `fwupdtpmevlog` for man page * Move `fwupdtpmevlog` into `bindir` * uefi: Move `fwupdate` into `bindir` * Move `fwupdtool` and `fwupdagent` into `bindir` * Use the system provided flashrom on Fedora * Add a plugin vfunc to run after subclassed FuDevice creation * ci: use standalone script to generate build dependencies * Move the daemons from /usr/lib/fwupd to /usr/libexec/fwupd * Use the recently released flashrom v1.2 * Generate an additional UEFI quirk file using the stable LVFS metadata * uefi: Apply capsule update even with single valid capsule * Fix a critical warning when installing some firmware * ebitdo: Fix the endpoint address logged in the error message * uefi: Find the correct lds and crt name when specifying -Defi_ldsdir * upower: Move battery threshold declaration into a configuration file * upower: Decrease minimum battery requirement to 10% - Refresh fwupd-bsc1130056-change-shim-path.patch - Add new dependency: jcat- Update to version 1.3.9: * Release fwupd 1.3.9 * Always check for PLAIN when doing vercmp() operations * improved fish shell completion * vli: Set the MSP430 version format to pair * added completion script for fish shell * Always return AppStream markup for remote agreements * Do not fail loading in /etc/machine-id is not available * fu-engine: Fixup broken-ness from 0c0fada18fc9cb2a0efec351db67f0867bf045cd * Use xb_builder_source_add_simple_adapter * fu-tool: Correctly append the release to devices in `get-details` * For the `get-details` command make sure to always show devices * fu-engine: Copy the version and format from donor device in get-details * fu-engine: Use unknown for version format by default on get-details * Inihbit all power management actions using logind when updating * fu-device-list: Check protocol before de-duping devices * ata: Switch off the verbose logging by default * Discard the reason upgrades aren't available (Fixes: #1678) * Improve the description of `fwupdtpmevlog` for man page * Move `fwupdtpmevlog` into `bindir` * uefi: Move `fwupdate` into `bindir` * Move `fwupdtool` and `fwupdagent` into `bindir` * ci: use standalone script to generate build dependencies * Move the daemons from /usr/lib/fwupd to /usr/libexec/fwupd * Use the recently released flashrom v1.2 * uefi: Apply capsule update even with single valid capsule * Fix a critical warning when installing some firmware * ebitdo: Fix the endpoint address logged in the error message * fu-util: fix a logic error in report uploading introduced in e076d48afb74d1447936d353f12781755f13b047 * uefi: Find the correct lds and crt name when specifying -Defi_ldsdir * upower: Move battery threshold declaration into a configuration file * upower: Decrease minimum battery requirement to 10% - Update to version 1.3.8: * Release fwupd 1.3.8 * Do not use fu_common_vercmp() when the device verfmt is PLAIN * altos: Output raw buffer data when using FWUPD_ALTOS_VERBOSE * altos: Prefix an error to provide more context * altos: Add a trivial _to_string() implementation * synaptics-cxaudio: Make the verfmt match that of the existing Windows tools * synaptics-mst: Allow MST to fall back if no PCI device is marked as parent * Allow specifying a list of subsystems when setting a physical ID * synaptics-mst: Fix trivial thinko caused by the wrong dock connected * vli: Invert the logic to reboot the parent FuCliUsbhubDevice, not the child * vli: Switch around the hub tier values * uefi: Fix a build regression with Fedora 30 * logitech_hidpp: Ignore detach failures (Fixes: #1183) * logitech_hidpp: When detaching to bootloader use non-blocking IO and wait for timeout * vli: Show erase progress when doing a v2 recovery * uefi: Do not remove the 'Linux Firmware Updater' boot entry before update * uefi: Do not rewrite BootOrder in the EFI helper * vli: Add support for the PS186 device * Set up more parent devices for various Lenovo USB hubs * cxaudio: Set the update protocol to prevent a daemon warning * vli: Add support for Lenovo Modularized dock * Add an extra instance ID to disambiguate USB hubs * vli: Remove the unused tierX custom flags for each device * Revert "Correctly delete UEFI variables" * uefi: make debugging output more readable * vli: Fix a potential buffer-overflow when parsing firmware * tpm: Optimize the string parsing and fix the boolean logic * synaptics-rmi: Add a missing error enum value * synaptics-rmi: Correctly identify a checksum failure * synaptics-rmi: Fix Coverity issue that is impossible to hit in reality * solokeys: Parse old versions of the bootloader string * Add a plugin to update PD controllers by Fresco Logic * vli: Set the device progress correctly when erasing a PD device * vli: Use the correct command to get the device firmware version * vli: Correctly reset all VL100 devices * vli: Set all standalone PD devices to not do SPI auto-detection * vli: Mark standalone PD devices as updatable * vli: Set the protocol for FuVliUsbhubPdDevice types * Support the new gnuefi file locations * Cleanup ancient fwupdate-* EFI variables too (Fixes: #1739) * Detect kernel lockdown status * vli: Add the DEV instance ID to all devices * tpm-eventlog: Replay the TPM event log to get the PCRx values * tpm-eventlog: Store the eventlog hashes in binary form - Update to version 1.3.7: * Release fwupd 1.3.7 * Correctly delete UEFI variables * ci: allow working with podman w/o aliases * ci: fedora: force correct rpm package version * src: fu-engine: check version was updated by checking version * Correctly import PKCS-7 remote metadata * Add 'refresh' to fwupdtool * Add 'get-remotes' to fwupdtool * Generate a win32 setup binary * Fix display of UTF-8 characters on Windows * Move MOTD population into the daemon * fu-util: Discourage metadata refreshes more than once per day * Disable the battery percentage checks if UPower is unavailable * Allow getting the list of updates in JSON format from fwupdagent * Revert "trivial: Attempt to fix Debian CI" * fu-remote-list: emit a changed signal when modifying a remote * synaptics-mst: Skip self tests for systems with amdgpu * Allow applying all releases to get to a target version * Split up fu_engine_install() into two halves * logitech_hidpp: use the correct timeout for IO channel writes * Allow quirking devices that always require a version check * Shut down automatically when there is system memory pressure * Show the device parent if there is an interesting child * Allow the client to get the list of FwupdDevice children * Set the FwupdDevice parents in fwupdtool * Don't always get the vendor ID for udev devices using the parent * Add a runtime warning when adding a device without an vendor-id or protocol set * vli: Set more of the firmware max sizes automatically * vli: Add a SpiAutoDetect quirk for some of the PD devices * vli: Use a different protocol ID for i2c devices * vli: Add support for standalone Single PD devices * vli: Move generic SPI functionality into the FuVliDevice base class * vli: Remove the PD emulation code * vli: Use a more standard GUID for the child i²c and shared SPI devices * vli: Allow setting the device kind from a quirk * vli: Make more function names match the docs * vli: Move the SPI command quirking from FuVliUsbhubDevice down to FuVliDevice * vli: Rename FuVliUsbhubPdFirmware to FuVliPdFirmware * vli: Allow the device to specify the PD firmware header offset * vli: Add a FuVliDevice as a subclass to FuVliUsbhubDevice * vli: Define the device GType in the quirk file * vli: Move the CRC calculations out of usbhub scope * vli: Have one 'DeviceKind' for all objects * vli: Rename the `vli_usbhub` plugin to `vli` * Capitalize GNOME - package has grown a few new binaries: fwupdagent, fwupdate, fwupdtool and a tpm event debugging tool, that is packaged separately: fwupdtpmevlog- Drop docbook-utils-minimal build dependency, manpages are generated with gtk-doc.- Update to version 1.3.6: * plugins/coreboot: Add missing fu_hash dependency * trivial: synaptics-cxaudio: Add Google type C <-> 3.5mm adapter * fu-engine: don't expose bootloader version errors to users * trivial: dell-dock: drop unused quirk keyx * trivial: rename synapticsmst to synaptics-mst * trivial: actually set vendor ID for synaptics * fu-remote-list: Drop fallback path behavior * libfwupdplugin: Make sure systemd created environment variables exist * trivial: fu-remotes-list: drop usage of `FU_SELF_TEST_REMOTES_DIR` * trivial: synaptics-rmi: hardcode Vendor string * trivial: Set vendor ID for Dell WD19 to USB:0x413C (Fixes: #1653) * trivial: Document the use of vendor-id in each plugin * superio: Use the baseboard vendor as the vendor ID * uefi: Use the BIOS vendor as the vendor ID * coreboot: Use the BIOS vendor as the vendor ID * flashrom: Use the BIOS vendor as the vendor ID * dell: Hardcode a plausible vendor ID * emmc: Set the correct vendor ID prefix * fu-util-common: correct the default prompt for reboot/shutdown (Fixes: #1617) * Split out the remote loading from FuConfig * vli-usbhub: Fix the quirk for the legacy VIA 813 chip * Clarify error messages when no upgrades available * trivial: Don't handle a vendor-id requirement error that cannot happen * Only check the vendor ID if the device has one set * fu-install-task: Enforce that device protocol matches metadata * Add a new plugin that can parse the TPM event log * Allow other plugins to contribute report metadata * trivial: dell: hardcode the physical device ID for tpm to match the tpm plugin * Add a new plugin that exposes the system TPM device firmware version * Add fu_udev_device_set_flags() * trivial: Render large values of VersionRaw in a more portable way * trivial: wacom-raw: mark all Moffett SKUs as self recovery * Throw exit status 0 (instead of 2) if there is no firmware to be updated * Add a `dell-bios` version format * Add support for multiple LVFS::VersionFormat tags * Do not do semver conversion in fu_common_vercmp() * trivial: Deprecate fu_common_version_parse() * trivial: Support 'plain' in fu_common_version_from_uintXX() * Add the sysfs 'description' as the one-line device summary * trivial: Also print the parent keys when using FU_UDEV_DEVICE_DEBUG * trivial: Add fu_common_version_from_uint64() * trivial: Convert the VersionRaw value to a uint64_t for future use * Allow building on Windows with MinGW * synaptics-prometheus: Allow incremental version major and minor number * Replace 'scheduing' with 'scheduling' * Export the raw device version to the client --verbose output * trivial: Only dlopen the test plugin once * Export the device protocol to the client --verbose output * trivial: installed-tests: try to display journal for failed tests * trivial: ci: debian: enable verbose daemon logging for failure analysis * trivial: installed-tests: explicitly choose webcam device ID * trivial: debian: remove obj-* built files to fix back to back builds * trivial: ci: don't let bad symlinks cause debian build failures * trivial: debian: correct a dependency for libfwupdplugin-dev - Changes from version 1.3.5: * plugins: Fix potential use of NULL pointer in fu_dell_dock_mst_write_register * Fix shifting integer by more than 31 in fu_util_filter_device * synaptics-prometheus: Reload the device version after IOTA update * synaptics-prometheus: Reload the device version after update * trivial: wacom: remove coretronic config from Moffett scope * trivial: Fix a NULL/FALSE confusion * trivial: Add a BR for Fedora * trivial: Fix coreboot commit to fix CI * trivial: libfwupdplugin: clarify name of self test * plugins/coreboot: Improve version detection * plugins/coreboot: Get rid of FU_HWIDS_KEY_BIOS_VENDOR in coldplug * trivial: Move progressbar out of libfwupdplugin * trivial: Unexport fu_test_get_filename() * trivial: Unexport fu_test_compare_lines() * trivial: Unexport fu_test_loop_run_with_timeout() * trivial: Do not include non-introspectable functions in the GIR * trivial: Fix up a few introspection problems in FwupdPlugin * trivial: Include the Fwupd GIR in the FwupdPLugin GIR * trivial: Never add duplicate symbols to the map file * trivial: Properly namespace the defines in the exported header * Install development files for libfwupdplugin * Convert libfwupdprivate to a shared library libfwupdplugin * trivial: Allow building GCab from a subpackage * trivial: Fix under-include to define O_RDONLY * trivial: Allow compiling without * trivial: Do not use FuProgressbar in dfu-tool * synaptics-prometheus: Manually set the bootloader mode when attaching * trivial: Split out a new helper funtion * trivial: Add some optional debugging when hotplugging devices * trivial: Include the correct header for S_IRWXU * Always use the more portable 3-arg form for open() * trivial: Untangle FuHistory from FuPlugin * trivial: Allow compiling without * Revert "synaptics-rmi: Use the build ID as the version number to match the vendor tool" * Add missing documentation from the plugin interface * trivial: fu-udev-device: remove a prototype that was missed in b3d4d2ff * trivial: add missing gtk-doc fields for many files in src/ * trivial: fix compile failure without gudev * synaptics-prometheus: Mirror the _IS_BOOTLOADER from device to config * Allow setting the device flags using GObject properties * vli_usbhub: Set the composite parent at construction time * synaptics-prometheus: Set the composite parent at construction time * Allow plugins to set the parent during construction * vli-usbhub: Whitelist the PD and I²C devices * Set the protocol per-device not per-plugin * synaptics-rmi: Use the build ID as the version number to match the vendor tool * Create a REV_00 instance ID as this may be what the vendor needs to target * fu-util-common: Invert default behavior for reboot and shutdown prompts * trivial: fu-plugin-vfuncs: Add GTK documentation for all vfuncs * Make gudev a compile-time option * trivial: Set the offline trigger using an environment variable * trivial: ci: pull lintian from unstable for now. * trivial: stop including fu-hash.h as part of fu-plugin-vfuncs.h * Fix shebangs on scripts * trivial: Use prefixes for DATADIR in config.h for portability * Allow compiling GUsb as a subproject * trivial: fu-udev-device: add a to_string func for debugging * trivial: Don't assume that plugins end in .so * trivial: optionrom: remove unneeded includes * trivial: debian: ci: ignore library-not-linked-against-libc for more * trivial: remove version-format.md * trivial: Allow compiling without pwrite() * trivial: Allow compiling without * trivial: Allow compiling without realpath() * trivial: Allow compiling without HAVE_LC_MESSAGES * trivial: Allow compiling without getuid() * trivial: Allow compiling without * trivial: Allow compiling without * trivial: Allow compiling without * Ensure the _get_type() gets the same ABI version as the constructor * Use the correct unlocker when using GRWLock * trivial: plugins: only build coreboot when option set * fwupdtool: don't show a warning when calling `get-plugins` - Changes from version 1.3.4: * trivial: Don't force specific linker flash when cross building * dell: Use the more portable g_usleep() * trivial: Fix unused header includes * vli-usbhub: Make erasing less verbose and writing more obvious * vli-usbhub: Correctly print the 24-bit USB3 offset * vli-usbhub: Print the PD firmware offset and size for debugging * vli-usbhub: Open the parent device before attempting to read or write from the child * vli-usbhub: Set the install duration for the PD device * trivial: Fix a failed error prefix string * trivial: wacom-raw: Remove embedded from device name * wacom-raw: Correct HWID support * uefi: Just use a uint16_t for BootNext processing * uefi: Use a simpler entries set algorithm * vli-usbhub: Add support for writing using I2C passthru * vli-usbhub: Support updating PD devices that share the hub flash * vli-usbhub: Support the PD file format * trivial: uefi: correct a NULL pointer dereference * uefi: fall back to `ID_LIKE` when the path for `ID` doesn't exist (Fixes:# 1566) * uefi: Make generate_binary.sh more robust * Tokenize the Intel Hex file before parsing * trivial: Detect the USB version automatically * trivial: fu-util/fu-tool: explicitly block unsupported flags * Add support for matching requirements on device parents * Skip cleanup after device is done updating if `will-disappear` is set (Fixes: #1529) * efi: use a wildcard section copy for final EFI generation * modem-manager: explicitly use plain version format * modem-manager: add quirks for the Foxconn T77W968 modules * Allows confined snaps to activate fwupd via D-Bus * trivial: thunderbolt: clarify error message * Add a new property `Interactive` to the daemon * trivial: contrib/get-version.py: require git less hard * superio: Never read from port offset zero * superio: Fix regression when coldplugging superio devices * trivial: Fix Fedora CI build * trivial: Fix the autobuilt spec file with the new tarball version * Dynamically determine release version * trivial: synapticmst: allow missing `/proc/modules` * synapticsmst: filter invalid chip IDs * trivial: Provide some defines for common image names * Allow aborting early when using fu_archive_iterate() * Add fu_firmware_image_set_version() for future use * modem-manager: increase re-enumeration delay to 20000ms * modem-manager: add counterpart GUID for the DW5821e/eSIM * Add versions formats for the Microsoft Surface devices * usb: make loading vendor/product/serial strings non-fatal * trivial: Fix the protocol ID for VLI usbhub devices * trivial: wacom-raw: add more device IDs for Dell devices * trivial: contrib: don't require TSS for debian archs without EFI * fu-udev-device: Adjust bounds checking to be safer * fu-udev-device: Don't assume all devices have `device_file` * synaptics-rmi: correct an error cleaning up on probe * trivial: fu-udev-device: add some safety checks for fd * udev-device: fix offset of vendor id of hidraw devices * flashrom: switch to upstream source * trivial: fu-plugin: only show an error once "failed to open plugin" was being prefixed twice * trivial: debian: only use mingw-w64-tools in archs with UEFI plugin * fastboot: Fix a regression when updating modem firmware * trivial: conflict with old unifying plugin * Rename unifying plugin to logitech-hidpp (Fixes: #1329) * Add a new contrib script for installing a Dell BIOS from an EXE file * trivial: add-capsule-header: rename to make it easier to import * trivial: simple_client: make it easier to reuse code * trivial: firmware-packager: make it easier to reuse code * trivial: add-capsule-header: make it actually work * trivial: fix some gtkdoc sections * Bump the required gudev version * trivial: Fix a compile error with older versions of gudev * trivial: wacom: add vid/pid for panels in Moffett * trivial: post release version bump - Changes from version 1.3.3 * unifying: notify users to replug when using dfu control (Fixes: #1383) * trivial: 8bitdo: set a transient failure while waiting for user action * libfwupd: Add a new error type for user action needed * trivial: 8bitdo: show the same message for SN30pro and SN30pro+ * trivial: Fix up some typos from codespell * trivial: Ensure config.h is included in all source files * trivial: Fix up some NULL/FALSE confusion * trivial: Add all the _LAST enums that shouldn't be checked for ABI * trivial: Fix a typo that means that UEFI results were never cleared * Always report the update-error correctly for multiple updates * trivial: Fix fwupdmgr get-history if the firmware was not installed from the LVFS * trivial: Do not emit a warning if a child has no version number * Move the file descriptor lifecycle into FuUdevDevice * trivial: Fix some GtkDoc annotations * ebitdo: Modernize the plugin to use FuFirmware * nitrokey: Use fu_common_dump_raw() when debugging * thunderbolt: Create a unique GUID including Thunderbolt controller path * Use device safety flags to show prompts before installing updates * trivial: Use the new possible_plugin support for USB devices too * jabra: Move the Jabra-specific detach out into its own plugin * Ensure the device is open when doing the subclassed prepare() and cleanup() * vli-usbhub: Add support for updating V2 devices * Allow verifying the device image itself from fwupdtool * Use XMLb to query quirks * trivial: ci: disable pulling libxmlb from unstable * synaptics-prometheus: Don't add a config-subdevice in bootloader mode * dfu: Use the VID/PID to identify devices without download capability in runtime * trivial: debian: remove some unneeded lintian * trivial: debian: bump compat version * ebitdo: Add SN30Pro+ to recognized quirk list (Fixes: #1503) * dfu: Add several quirks for Realtek camera hardware * dfu: Always mark devices as UPDATABLE * uefi: use `genpeimg` to mark ASLR and DP/NX on EFI binary * trivial: solokey: correct a typo * trivial: fu-util: fix typo * uefi: rework ESP path detection and lifecycle * trivial: uefi: show more metadata in to_string method * trivial: fu-device: add new method to remove metadata * Add a plugin to update VIA USB hub hardware * trivial: Add fu_common_read_uint8_safe() * trivial: Fix two typos in fu_common_read_uint16_safe() * solokey: Allow parsing firmware with fwupdtool * Allow fwupdtool to dump details of common firmware formats * trivial: Do not do system coldplug when using FU_ENGINE_LOAD_FLAG_NO_ENUMERATE * trivial: fu-self-test: set polling self tests to slow * trivial: fu-tool: Allow `detach`/`attach` to prompt for device * Strip trailing whitespace from USB descriptors * trivial: Add fu_common_read_uint16_safe() * trivial: Add version to the FuFirmware->to_string() output * Add fu_firmware_set_version() * Add a systemd preset file for `fwupd-refresh.service` * trivial: dell: work around a memory leak caught by address sanitizer * ebitdo: if the device has the will disappear flag, don't wait for ack (Fixes: #994) * Add a new plugin for working with eMMC devices (Fixes: #1455) * fu-engine: Check multiple plugins if quirks match * trivial: don't try to enable LVFS from systemd * trivial: coreboot: fix a clang compiler error * fu-util: Add user friendly strings for all device flags * Add new device flags indicating update resilience * plugins: Add coreboot plugin * fu-plugin: Add fu_plugin_get_hwid_replace_value * trivial: Increase verbosity when actually updating devices * trivial: Allow plugins to use WAIT_FOR_REPLUG in prepare and cleanup * Add FuDevice->prepare() and FuDevice->cleanup() vfuncs for future use * dfu: Implement FuDevice->to_string() * trivial: colorhug: fix a crash that occurs when flashing sometimes * trivial: fu-util: break out of automatic reports if one is not automatic * thunderbolt: some more clarifications when using ICL * trivial: fwupd-refresh: activate motd if using systemd v243 or later * trivial: fwupd-refresh: allow exit code 2 for success * trivial: synaptics-cxaudio: Add Google Pixel buds * trivial: arch: ci: Wait some time for tpm_server to start up * Allow a custom FuFirmwareImage->write() in superclassed objects * dfu: Remove two completely unused helpers * dfu: Make DfuFirmware derive from FuFirmware * dfu: Make DfuImage derive from FuFirmwareImage * dfu: Remove private headers that do not need to exist * Fix device flag filtering * trivial: fu-engine: Don't compare device and content checksums * fu-engine: Read all releases and convert versions when comparing * Add new flags `can-verify` and `can-verify-image` * trivial: make verify and verify-update safer * trivial: test: add checksums for "stock" 1.2.2 * trivial: fu-udev-device: use parent udev device to indicate `internal` * trivial: fix TPM2 simulator tests for arch * trivial: uefi: don't add PCRs with all 0's * trivial: Fix a recent regression causing a double-free * synaptics-cxaudio: Support the ThinkPad USB-C Dock Gen2 * trivial: fu-util: add some extra checks around automatic reports * trivial: fu-tool: typo * fu-systemd: Use correct method for stopping units. * trivial: fu-udev-device: Use ID_PCI_CLASS_FROM_DATABASE if name not set * trivial: fu-plugin: quiet down debug output for optionrom plugin * 8bitdo: use will-disappear flag for sf30/sn30 controllers (Fixes: #783) * trivial: ebitdo: don't dump out firmware header unless plugin verbose * trivial: ebitdo: don't use local errors when writing firmware * Add a new device flag for indicating device won't come back * wacom-emr: Fix a regression for EMR devices * Add a generic DFU firmware object for plugins to use * dfu: Use FwupdInstallFlags rather than a DFU-specific version * dfu: Remove functionality for modifying DfuSe files * dfu: Remove functionality you can do now with fwupdtool * dfu: Remove the merge command as it's unused and broken * trivial: Add fu_firmware_parse_file() helper for future use * trivial: Remove the fuzzing details for DfuPatch * trivial: Add klass->to_string for superclassed FuFirmwareImage objects * dfu: Remove DfuPatch as no vendor actually uses this * dfu: Don't wrap provided VID-PID functions * dfu: Use the standard FuDevice custom flags functionality * dfu: Use klass_device->write_firmware() directly * dfu: Use the generic fu_plugin_usb_device_added() function * dfu: Use daemon flags to ignore devices rather than a special flag * dfu: Set the device state directly to avoid proxying signals * dfu: Use the built-in detach() and attach() vfuncs * Read firmware back from the device as a FuFirmware * dfu: Remove a pointless function * dfu: Remove support for the Metadata Store Proposal * dfu: Remove XTEA support * dfu: Remove the SREC and IHEX parsing out of the DFU plugin * ebitdo: Use klass_device->write_firmware like other plugins * trivial: Remove G_BEGIN_DECLS from all private headers * Remove FU_PLUGIN_RULE_REQUIRES_QUIRK as all the plugins now use it * Set all FuUdevDevice plugins to use FU_QUIRKS_PLUGIN * thunderbolt: recognize new 'generation' sysfs attribute * Rename and modernize the udev plugin * synaptics-rmi: Also add the product ID as a GUID without the minor version * synaptics-rmi: Correctly set the payload length rather than hardcoding it * synaptics-rmi: Write the core config correctly * synaptics-rmi: Decode BL7 status failures as actual errors * synaptics-rmi: Add some trivial debugging to help debug a write problem * trivial: uefi: Make efivarvs errors clearer (Fixes: 1330) * trivial: uefi: don't prefix efivar errors * trivial: Remove some now-unused vfuncs * altos: Modernize the plugin to simplify it * Create the custom plugin GType in common code * Reduce more boilerplate in plugins * synaptics-rmi: Check the correct register when querying bootloader mode * trivial: fu-engine: fix never reporting remotes * trivial: fu-util: don't show warnings for no reports to upload * trivial: debian: remove more conffiles from transitions (Closes: #932617) * trivial: debian/control*: Update for fwupdate transition * trivial: Fix a tiny memory leak when starting the daemon * modem-manager: Fix a tiny memory leak when starting the daemon * synaptics-rmi: Copy the behavior of rmi4utils for BL7 detach * synaptics-rmi: Simplify fu_synaptics_rmi_device_read() * synaptics-rmi: Set the version after ->setup has run * synaptics-rmi: Use the correct mask when getting the bootloader mode on BL7 * syanptics-rmi: The build_id is 3 bytes long, not 2 * synaptics-rmi: Read the config partition the same as rmi4utils * Provide a default implementation of common FuDevice actions * thunderbolt-power: avoid checking for bolt support * synaptics-rmi: Add some debugging for BL7 devices * Fix usage of incorrect type for return value * synaptics-rmi: Do as little as possible in device setup * synaptics-rmi: Speed up reading the PDT from 900ms to 30ms * fu-util: add support for a reinstall command * trivial: fu-util/fu-tool: update re-install help text to reinstall * trivial: fu-util: remove double printed message about succesful firmware update * trivial: fu-util: show no updatable devices error for update command * synaptics-rmi: Ignore the ATTN reports from the hardware when reading DATA * synaptics-rmi: Move the fuzzing instructions to the toplevel README * Fuzz the SREC and IHEX file parsers once more * Use parallel fuzzing for the SMBIOS checks too * synaptics-rmi: Fix the packing of the partition table * Add a plugin to update Synaptics RMI4 devices * trivial: Add a parallel fuzzing script * trivial: fu-util: output newline after prompt. * trivial: fix %u output in report upload * Add a --no-domain logging option * trivial: Fix compiler warning for impossible-to-hit condition * Add support for automatically uploading reports * trivial: motd: disable updating motd for now * trivial: fwupd-refresh: fix a clash with fwupd.service (Closes: #941360) * trivial: Fix Fedora CI * trivial: fu-udev-device: fix some assertions * Search up the tree for a vendor name rather than (ab)using the HID_NAME * Add some success messages when CLI tasks have completed * trivial: Put the boolean prompt on the same line as the text * Never show LicenseRef-proprietary to the end user * trivial: snap: correct install hook root directory * Export the instructions for detaching the device * uefi: detect unmounted ESP partitions (Fixes: #1405) * uefi: stop recording efibootmgr output after flash * trivial: post release version bump - Changes from version 1.3.2: * Add support for '' to disambiguate some firmware * thelio-io: Add a plugin to detach the Thelio IO board * trivial: uefi, dell: skip self tests with TPM if non-root (Fixes: #1396) * trivial: dell: quiet the TSS output * trivial: uefi: allow forcing to TPM2 via environment variable * Do not ask the user to upload a report if ReportURI is not set * Do not enumerate physical devices when running the internal self tests * trivial: libfwupd: skip tests if machine-id is empty too * Add a new plugin to update Conexant audio devices * Export the salted machine ID as a daemon property * Fall back to /var/lib/dbus/machine-id when required * trivial: add stalebot (Fixes: #1393) * trivial: dell-dock: correct another write_size error * Align the key values to the text *width* not the number of bytes * trivial: Move dbus directory location for snap too * trivial: Fix some NULL/FALSE confusion * synaptics-prometheus: Fix tiny memory leak when using FuSynapromConfig * trivial: Fix tiny memory leak when using FuSrecFirmware * snap: switch to core18 * trivial: Return the correct property when getting the host product * trivial: fu-util-common: fix description wrapping (Fixes: #1378) * fu-util/fu-tool: Map out changelogs from remotes * fu-util/fu-tool: Better display historical information * fu-history: Update device_modified in sql database during updates * unifying: Use the instance ID to check for supported devices * unifying: Ensure HID++ v2.0 peripheral devices get scanned by the plugin * trivial: Add some more defines to the srec parser * trivial: fix wget command in fu-tool.c * Allow parsing a raw SREC file * trivial: wacom: Add support for second vendor ID * uefi, dell-esrt: Show firmware version when capsule updates unavailable * Add some more debugging to the SREC and IHEX parsers * Print the instance IDs if the GUIDs are unconverted * Add fu_common_bytes_compare_raw() for future usage * Call the set_quirk_kv() vfunc for the superclassed object * uefi: make the TPM optional for runtime again (Fixes: #1362) * trivial: uefi: Make the TCTI output less verbose * Support in AppStream metadata * Include all GUIDs when uploading a report * Do not crash when starting tpm2-abrmd * trivial: Update DBus conf path for example Fedora package * Move D-Bus conf file to datadir/dbus-1/system.d * trivial: Add fu_io_channel_write_byte_array() for future use * trivial: post release version bump - Package new sub-packages typelib-1_0-FwupdPlugin-1_0 and libfwupdplugin1.- Fix file list- Update to version 1.3.1: (jsc#SLE-10751) * Allow disabling all plugins * trivial: Specify the tpm2-tss-devel version in the example spec file * Move to CI Fedora 30 * modem-manager: Fix two build warnings on Fedora 30 * synapticsmst: Add another name quirk for the ThinkPad USB-C Dock * Re-introduce GUID support to fwupdmgr and fwupdtool * uefi-recovery: Add a plugin to add a fake ESRT entry for device recovery * Add a DMI quirk for the Minnowboard Turbot * trivial: Make it easy to disable or enable libflashrom for distros * trivial: Don't use Recommends for RHEL 7 * unifying: fix timeout metadata * ci: arch: minor improvements * unifying: fix timeout * Allow disabling SSL strict mode for broken corporate proxies * trivial: Allow ignoring the daemon version check by using --force * Try to only show DMI product name once * trivial: fu-util-common: Show unknown devices as interesting devices * dell: Use TSS to query and build TPM vendor strings for GUIDs * trivial: dell: show reasons for lack of updates in `UpdateError` * fu-util-common: strip all trailing whitespace in XML description * trivial: fu-common: match all whitespace not just ' ' in `fu_common_strstrip` * fu-util: show release output in get-details again * unifying: use fu_firmware_strparse_uint16 to read be 16bit values * unifying: fix incomplete hex file parsing * fu-util/fu-tool: Print devices, remotes, releases using a tree * Add aliases for `get-upgrades` and `upgrade` * trivial: UEFI skip self tests if library fails to initialize * libfwupd: Add a new private function `fwupd_remote_set_remotes_dir` * trivial: add libtss2-dev into debian/control (Closes: #1324) * trivial: Fix up the GtkDoc Since lines for API only available in 1.3.x * trivial: Post branch version bump * thunderbolt: Add support for kernel safety checks (Fixes: #1312) * Include the kernel release as a runtime version * trivial: fu-util: Drop GUID support from get-devices * synapticsmst: Partially rewrite the plugin (Fixes #1105) * Remove replug flag after the device comes back from reboot * trivial: Fix running the tests on devices with the TPM in v1.2 mode * trivial: fu-util-common: more cleanup related to topology * trivial: fu-util: cleanup fwupdmgr get-details output * trivial: Don't use topology printing in --verbose mode * Make get-devices and get-topology aliases for one another * trivial: Adjust daemon device sorting * Make get-topology more useful by showing all information * trivial: Fix fu_common_string_append_kv() to align properly with idx > 0 * trivial: dell-dock: correct an error preventing write_size from being set * trivial: Do not warn about deprecated declarations * trivial: Update BRs for the example Fedora package * uefi: add test for TPM 2.0 PCR read function * uefi: use tpm2-tss library to read PCR values * fu-common: Use environment variables for systemd managed directories * Use more systemd directives for directories * trivial: fu-util: fix debug output for devices * Allow turning off the timestamp prefix for debugging * Add a ->udev_device_changed plugin vfunc * Add fu_device_rescan() and a FuDevice->rescan() vfunc * Remove the duplicate files in meson.build * Hash the source files when generating the daemon hash * Split up source files in the build script * uefi: add support for tpm2-tools 4.X * trivial: plugins: clarify stance on afuefi.efi * trivial: plugins/: Update README * trivial: disable gtkdoc by default * trivial: update references of hughsie/fwupd to fwupd/fwupd * Publish docs to fwupd.github.io using CircelCI * Add support to integrate into the motd (Fixes: #1270) * Simplify get-devices output to not show un-useful fields * fu-engine/fu-config: Reload metadata store when configuration changes * trivial: If no devices support updates, show messaging (Closes: #1295) * trivial: uefi: set vendor name for system firwmare from DMI data * unifying: update Solaar url * thunderbolt: Fix logic to work properly with ICL thunderbolt controller * Add fu_udev_device_get_device_file() helper * trivial: Fix regression when using fu_device_incorporate() * trivial: Fix a potential crash when using FuPlugin in the self tests * synapticsmst: Make FuSynapticsmstConnection an actual GObject * synapticsmst: Use the same style as other plugins * trivial: Add some helper functions for GByteArray * Do not use FuDevice metadata for the physical and logical IDs * Use fu_common_string_append_kv() in subclassed device * synapticsmst: Use G_DECLARE_FINAL_TYPE to simplify the object * synapticsmst: Add a SynapticsMSTBoardID for another Lenovo dock * trivial: remove unnecessary CUSTOMERID_DELL define * synapticsmst: Add a SynapticsMSTBoardID for a Lenovo dock * synapticsmst: Display the board ID in non-hex form in the error message * synapticsmst: Use a more suitable icon for the device * trivial: Remove unused variable * Never use memcpy() in a possibly unsafe way * Add a ->to_string() vfunc to FuFirmware * Use FuFirmware as a container for firmware images * Allow filtering devices when using the command line tools * Be more accepting when trying to recover a failed database migration * trivial: Add translation for X-ThunderboltController * trivial: fixup standalone installer * modem-manager: add counterpart GUID for the DW5821e * solokey: Release the interface and rebind the kernel driver on close * fu-tool: Port ability to update a single device from fwupdmgr * uefi: Actually write the new device path if different than before * Allow setting custom flags when using fwupdate * trivial: Do not show a critical warning if no firmware is specified * trivial: Fix overzealous search-replace action in user string * Verify we don't break the ABI * Fix a crash when stopping the fwupd service * Relax the certificate time checks in the self tests for the legacy certificate * trivial: add cache directory into systemd unit rw paths * Never show AppStream markup on the console * Do not segfault when trying to quit the downgrade selection * trivial: Update icons for Thunderbolt and MST devices * Add support for the SoloKey Secure * trivial: Allow a device to *clear* a firmware version * trivial: debian: For signed package fill out Built-Using (Closes: #932757) * Allow specifying GUID to check any version exists * trivial: post release version bump * Release fwupd 1.2.10 * Disable the flashrom plugin by default * trivial: thunderbolt: catch failure setting up device * dell-esrt: Improve the experience for the plugin (Closes: #1245) * fu-util: When unlocking prompt for reboot if applicable * remove those PIDs with Bluetooth interface, Wacom updater doesn't support updating from Bluetooth interface * flashrom: Only show DEBUG and DEBUG2 output if using --plugin-verbose=flashrom * flashrom: Only call flashrom_programmer_init() on whitelisted boards * flashrom: Fix no version format set * fu-util: Show devices with an UpdateError in get-devices output * trivial: uefi: use UEFI-dummy for device ID instead of just uefi * trivial: fix error handling for non UEFI case (#1220) * Add a specific error code for the low battery case * Fix Fedora docker build missing directory: dist * uefi: Determine whether running in legacy mode or not (Fixes: #1220) * trivial: ci: debian: Only turn on flashrom when running CI * trivial: Fix typos in error messages * Allow client code to construct objects from GVariant blobs * Export functionality to build an array of objects * flashrom: Use libflashrom * trivial: Fix the version script to pick up boxed types * trivial: Correctly order the map entries according to vercmp rules * trivial: Fix pylint issue in the version script * Add meson target to fix translations * Add support for 8bitdo USB Retro Receiver * Use the newer features of GRWLock rather than reinventing it * Revert "Allow SuperIO updates to be done live" * uefi: Try to find a duplicate using the loadopt name * uefi: Provide a quirk to disable the use of the UX capsule * trivial: uefi: use the path for efibootmgr that was detected * synaptics-prometheus: Fix installing CONFIG firmware updates * synaptics-prometheus: Set the install duration from a quirk * synaptics-prometheus: Don't emit critial warning when updating config firmware * synaptics-prometheus: Fix missing field in the IOTA reply struct * Create SECURITY.md * redfish: Never set NULL device name * modem-manager: Never set NULL device name * ata: Never set NULL device name * trivial: Add some parameter guards to FuDevice * trivial: snap: make polkit directories if they don't exist (Fixes: #1205) * trivial: fu-main: clarify missing PK file error * synapticsmst: fix GUID generation (Closes: #1207) * Lite Mk II flag for use-shim-unique * trivial: circleci: try to fix automatic snap deployment * Allow SuperIO updates to be done live * fu-util-common: Support empty proxy strings (Fixes: #1199) * trivial: uefi: clarify error message * trivial: Fix non-systemd build * trivial: Sync example spec file with downstream * trivial: post release version bump - Drop fwupd-bsc1143905-hash-the-source-files.patch: Applied upstream. - Add pkgconfig(tss2-esys) BuildRequires: New dependency. - Add gtk-doc BuildRequires and pass gtkdoc=true to meson, build api docs even when using source service.- Add fwupd-bsc1143905-hash-the-source-files.patch to hash the source files instead of libfwupdprivate.a to avoid the checksum change due to the random naming LTO profile sections (bsc#1143905)- Update to version 1.2.10: * Disable the flashrom plugin by default * dell-esrt: Improve the experience for the plugin (Closes: #1245) * fu-util: When unlocking prompt for reboot if applicable * remove those PIDs with Bluetooth interface, Wacom updater doesn't support updating from Bluetooth interface * flashrom: Only show DEBUG and DEBUG2 output if using - -plugin-verbose=flashrom * flashrom: Only call flashrom_programmer_init() on whitelisted boards * flashrom: Fix no version format set * fu-util: Show devices with an UpdateError in get-devices output * Add a specific error code for the low battery case * Fix Fedora docker build missing directory: dist * uefi: Determine whether running in legacy mode or not (Fixes: #1220) * Allow client code to construct objects from GVariant blobs * Export functionality to build an array of objects * flashrom: Use libflashrom * Add meson target to fix translations * Add support for 8bitdo USB Retro Receiver * Use the newer features of GRWLock rather than reinventing it * uefi: Try to find a duplicate using the loadopt name * uefi: Provide a quirk to disable the use of the UX capsule * synaptics-prometheus: Fix installing CONFIG firmware updates * synaptics-prometheus: Set the install duration from a quirk * synaptics-prometheus: Don't emit critial warning when updating config firmware * synaptics-prometheus: Fix missing field in the IOTA reply struct * Create SECURITY.md * redfish: Never set NULL device name * modem-manager: Never set NULL device name * ata: Never set NULL device name * synapticsmst: fix GUID generation (Closes: #1207) * Lite Mk II flag for use-shim-unique * fu-util-common: Support empty proxy strings (Fixes: #1199) - Add python3-setuptools to BuildRequires for generate-version-script.py- Update to version 1.2.9: * Release fwupd 1.2.9 * trivial: Add two new translatable strings for new category types * Check if the system is offline during install, rather than at startup * Prompt the user to shutdown if requried when installing by ID * Use the correct file extension for the offline updates cache * trivial: Allow using --force to use the wrong daemon version * trivial: Display the correct expected command * standalone-installer: Be smarter about existing installed fwupd * Add a plugin to update Synaptics Prometheus fingerprint readers * trivial: standalone-installer: rename uninstall argument to cleanup * fu-util: Check the daemon version is at least the client version * fu-util: Check that daemon is started by expected unit * fu-util-common: when stopping a daemon, check for snap too * Allow using --force to trigger a duplicate offline update * trivial: Allow using FuUsbDevice without a GUsbDevice * trivial: Copy the icons if unset for the device child * trivial: Copy the physical ID if unset for the device child * trivial: Ensure the parent ID is up to date if the device ID changes * trivial: Fix typo when setting the parent ID * trivial: Disable the flatpak CI build * Allow handling FORCE for devices that subclass FuDevice * uefi: Fix a libasan failure when reading a UEFI variable * trivial: Fix a memory leak found using libasan * trivial: Fix an libasan failure in the dell plugin * trivial: Fix some dead code spotted by coverity * trivial: Fix a typo spotted by coverity * trivial: Fix a missing config.h include in a new source file * Dynamically read path to use for /system-update * Display the remote warning on the console in an easy-to-read way * ata: Set version format to plain for devices obtained from udev * trivial: Only apply SmbiosManufacturer to release version for internal * trivial: Fix two bugs in the hardware self tests script * Never guess the version format from the version string * Only force a semver when the device opts-in * Export the version-format to clients * Add missing gtk-doc documentation * dfu: Add some trivial, but useful, debugging for AVR DFU devices * dfu: Correctly identify DFU firmware that starts at offset zero * dfu: Don't keep showing trivial debug output * dfu: Reset the forced version during attach and detach * ata/nvme: For devices running Dell firmware, set `VersionFormat` (Fixes: #1169) * fu-engine: Check if VersionFormat is ambiguous when adding devices * trivial: Fix fwupdate --apply * Only use class-based instance IDs for quirk matching * trivial: dell-dock: set minimum board to 6 * trivial: post release version bump- Update to version 1.2.8: * Don't upload reports when the user has configured their system in a broken way * Allow setting the daemon verbose domains at runtime * Allow fwupdmgr to modify the daemon config * Do not compare version formats when the release format is unknown * Do not fall back integers to a plain version format * Use the device version format when converting the release version * Set the VersionFormat using the metadata or the UEFI quirk - Changes from version 1.2.7: * l10n: Create Lithuanian translation file * l10n: Update LINGUAS * Updated: Add support for 8BitDo M30. * modem-manager: increase the timeout to wait for modem after uninhibited * modem-manager: implement qmi pdc active config selection as attach() * fu-engine: When removing activation flag match the correct version * Require --force to install a release with a different version format * Match the old or new version number when setting NEEDS_REBOOT * Make an error message clearer when there are no updates available * Add support for the not-child extension from Logitech * thunderbolt: Set require-ac for Thunderbolt devices (Fixes: gh#hughsie/fwupd#1142) * Fix some typos spotted using codespell * Add a component categories to express the firmware type * fu-tool: Port get-history command to fwupdtool * Recreate the history database if migration failed * Move the core built-in 'fwupd' remote over to the dell-esrt plugin * snap: Add a custom systemd unit to call activation on shutdown (Fixes: gh#hughsie/fwupd#1125) * ata: Flush cache before standby and activate * synapticsmst: blacklist plugin when using amdgpu (Fixes: gh#hughsie/fwupd#1121) * uefi: add a new option to specify the os name * Return the newest device when using fu_history_get_device_by_id() * uefi: More carefully check the output from tpm2_pcrlist * uefi: Don't overwrite CustomFlags if set from a quirk * Shut down the daemon if the on-disk binary is replaced * ata: Correct activation functionality * Fix version comparisons after reboot for some formats * fu-tool: save history from stuff installed with `fwupdtool` - Changes from version 1.2.6: * ata: send ATA standby immediate when activating firmware * offline: Be more graceful when dealing with Plymouth failures * Save the new version in the history database for offline updates * Show the DeviceID when showing the updates list * Allow forcing an offline-only update on a live system using --force * Do not schedule an update on battery power if it requires AC power * superio: Add InstallDuration default value * superio: Add support for writing new e-flash contents * superio: Fix reading the attestation checksum * superio: Add support for reading the device checksum * superio: Use the chipset ID in the device name * superio: Move the device flush before getting the register map * superio: Move all the IT89xx code to a subclassed device object * superio: Move all the IT85xx code to a subclassed device object * superio: Split and export fu_superio_device_ec_writeX() * superio: Remove the port from fu_superio_device_ec_read() * superio: Move the register read/write into the FuSuperioDevice object * superio: Check the IOBAD0 is usable during setup * superio: Use fu_device_set_firmware_size() * superio: Move some constants out to the common header * superio: Use GObject properties in FuSuperioDevice * superio: Convert FuSuperioDevice to be derivable * Update Plymouth when updating pending firmware * Ask to reboot after scheduling an offline firmware update * Do not fail when scheduling more than one update to be run offline * Allow running offline updates when in system-update.target * Fix the location of fwupdoffline in the service file * Add optional vfuncs to allow detaching and attaching verify() * superio: Add list of SPI commands for future usage * Add a verify-update command to fwupdtool * uefi: Actually upload the UPDATE_INFO entry for the UX capsule * superio: Get the chip size from the EC rather than hardcoding * uefi: Check the error code of QueryCapsuleCapabilities() correctly * Update the UEFI UX Capsule Header checksum when needed. * uefi: Copy the shimx64.efi binary for known broken firmware * Correctly get the check the new version for devices that replug * Add a simple script to add a capsule header * Ensure the PKCS-7 client certificate exists at startup * fix makecab directive options * fwpup.service: use display-manager.service instead of gdm.service * Allow signing the fwupd report with the client certificate * Add a D-Bus method to generate a signature using the self-signed client certificate * Allow signing and verifying data using a PKCS-7 self-signed client certificate * Fix a critical warning when loading a PKCS-7 certificate with no DN * Include all device checksums in the LVFS report * modem-manager: Fix a trivial build warning * superio: Fix a trivial build warning * Move out the offline update functionality to a new binary * Do not reboot when failing to start fwupd during offline updates * Do not write the schema version to the db when loading * Do not recreate XbSilo caches when running on a readonly filesystem * Add the fwupdagent binary for use in shell scripts * Allow restricting firmware updates for enterprise use * standalone-installer: new --allow-older and --allow-reinstall options * Show the upgrade and downgrade flags when getting releases for a device * Rename FwupdRelease:trust-flags to FwupdRelease:flags * fu-tool: Save device state to @LOCALSTATEDIR@/lib/fwupd/state.json on actions * modem-manager: implement support for qmi-pdc * Add a plugin to support ModemManager hardware * fu-tool: Don't let failing to find dbus prevent engine from starting * ata: Support delayed activation * dell-dock: Use activation when calling fwupdtool activate * Add a support for delayed activation * uefi: Fix the self tests when running on Fedora SilverBlue * Do not fail to start the daemon if tpm2_pcrlist hangs * po/make-images.sh: quote LOCALEDIR and PYTHON3 * meson: print stderr of python3 command instead of stdout * Revert "contrib/debian: Switch to debian unstable" * Add elogind support - Changes from version 1.2.5: * uefi: fix segfault in fwup_set_update_statuses * Show in Flathub correctly * debian: explicitly depend on shared-mime-info * superio: Implement detach() and attach() * superio: Correct the names of some constants and improve debugging support * dell-dock: Filter the last supported payloads of certain board 4 SKUs * circleci: Manage the lifecycle of the snap * Add support to run snap build in CircleCI * wacom-usb: Use the correct buffer format for the touch module * wacom-usb: Set the install duration for each device type * wacom-usb: Return with an error if there were too many retries * wacom-usb: Make updating less verbose * Convert all child instance IDs when converting the parent * uefi: Allow devices to create more complete fake UEFI devices * unifying: Fix regression when recovering from failed flash * Ensure libxmlb dir exists for LGTM.com * Add C build configuration for LGTM.com * Use G_BEGIN_DECLS correctly for internal headers * standalone-installer: Fix issue found by LGTM * Use '#pragma once' to avoid a lot of boilerplate * Force LGTM to see Python 3 * fwupd: Hide firmware-packager behind meson option` * fu-common-cab: Correct handling of CAB files w/ nested directories and older libgcab * Fix a regression in using the InstanceIDs for quirk matching * thunderbolt: Convert the instance IDs as we never open the device * udev: Manally call fu_device_setup() to convert the instance IDs * fu-tool: Correct a crash caused by calling fwupdtool update * fu-tool: Don't fail if dbus is unavailable * contrib/debian: Switch to debian unstable * wacom-usb: Record the block number when failing * wacom-usb: The touch address is big endian * wacom-usb: Accept a non-binary IHEX file for the touch update * wacom-usb: Only poll when the device status is 'busy' * wacom-usb: Only reboot the device when all composite devices have been updated * wacom-usb: Fix flashing failure with latest Intuos Pro tablet * dfu: Fill holes when reading SREC files * Add fwupd_guid_from_string() to drop dep on uuid * wacom-raw: Check the InstanceID rather than GUID * Defer the InstanceID->GUID hashing until after setup * ata: Check for USB enclosures as well * Do not use efivar just to print a mixed endian GUID * Add fu_device_add_instance_id() and prefer explicit conversion * Report the DeviceInstanceIDs to `fwupdmgr get-updates` * Export some of the GUID functionality * Allow a plugin to set _ANOTHER_WRITE_REQUIRED to run more than one plugin * nvme: Add an extra check for Dell plugins to avoid false positives * ata: Add support for detecting Dell GUIDs * Fix the self tests when using glib2 >=2.59.0 * Add support to call composite prepare and cleanup using fwupdtool * uefi: Disable -Wno-address-of-packed-member * uefi: Don't unconditionally enable Werror for the EFI binary * Disable -Wno-address-of-packed-member - Changes from version 1.2.4: * Remove the autogenerated headers in the gettext files * ata: Default to the non-activation 0xE subcommand * fastboot: Use a much longer timeout as the removal delay * fu-progressbar: be more quiet when running non-interactive * fu-tool: Show UpdateMessage if applicable for install command * dfu: Simplify the SREC parser to avoid a crash with an invalid file * wacom-raw: Use the correct error codes when the panel is not supported * wacom-usb: Add some more information to the README * fu-keyring-utils: Don't fail missing PKI directory when compiled with GPG/PKCS7 * dell: Check that the flash interface command is available * wacom-usb: Fix the plugin name to allow devices to be updated * fastboot: flash the partition after downloading the file * uefi: Add a quirk to use the legacy bootmgr description * ata: Mark all devices as needing a reboot * ata: Add a new plugin to upgrade firmware on ATA/ATAPI hardware * udev-device: Add a utility function for debugging * udev-device: Set the firmware revision automatically * udev-device: Set the serial number automatically * udev-device: Fall back to non-database model and vendor values * udev-device: Fix critical warning if the device has no parent * dell-dock: Add support for a passive flow * Add support for an `UpdateMessage` and display it in tools * fu-tool: Port the `get-updates` command over * When using `directory` remote type automatically generate metadata * libfwupd: Add support for new remote type "directory" * Ensure cabinet archives always have a container checksum * Add support for a per-release source and details URL * When generating a CAB Silo use the prefix "components" * uefi: Add a trivial debugging statement to debug a UX capsule failure * uefi: Use fwup_new0() to allocate the updates table array * nitrokey: Correct Nitrokey Storage invalid firmware version read * dell-dock: Add support for flashing Thunderbolt over I2C * wacom-raw: Add a plugin to update Wacom embedded EMR and AES panels * fu-util/fu-tool: sync up reboot and shutdown behavior * dfu: Ignore the SUB ASCII value * dfu: Fix the parser to support extended segment addresses * dfu: Support ihex files with leading comments don't show an error * uefi: Correct a boot order creation bug (Fixes: gh#hughsie/fwupd#956) * uefi: Remove all variable length arrays * uefi: Fix a logic bug in fwup_search_file() * uefi: Use _cleanup_free in one more place * uefi: Do not pass required attrs to fwup_delete_variable() * uefi: Delete the old Linux-Firmware-Updater boot entry * uefi: Use the GNU-EFI BOOL type * Check if plugin changed after the device attaches or detaches * uefi: Refactor and simplify the EFI loader * Show a console warning if loading an out-of-tree plugin * UEFI: Do the UX checksum calculation in fwupd * wacom-usb: Add two more Intuos tablets * nvme: Add the needs-shutdown quirk to Phison NVMe drives * Add _NEEDS_SHUTDOWN flag for devices * Use GCC __cleanup__ features in the EFI loader * nvme: Add flag to support manually aligning the firmware to the FWUG value * nvme: Support FGUID to get the SKU GUID * nvme: Support FWUG to get the write block size * nvme: Add trivial comment to clarify address bitshifting * uefi: Do not check the BGRT status before uploading a UX capsule * dfu: Fix flashing various Jabra devices * upower: Add support for checking battery percentage * nvme: Check the return code of the admin passthru ioctl * fu-tool: Add support for an 'update' command to fwupdtool * dell-dock: Set minimum board to board 4 * dell-dock: Workaround a manufacturing bug for board level 4 * dell-dock: Wait longer for re-enumeration on TBT SKU * superio: Support IT89xx devices * fu-main: remove incompatible locale error message * Add a new plugin checklist (Fixes: gh#hughsie/fwupd#899) - Dropped obsolete patch: fwupd-bsc1130056-change-esp-os-name.patch (upstream PR: gh#hughsie/fwupd#1119 - Fixed fwupd-bsc1130056-change-shim-path.patch so that it works with the new files - Cleaned up changelog- Stop shipping polkit rules, as we have the distro specific setup in polkit-default-privs (boo#1125428).- Add fwupd-bsc1130056-change-esp-os-name.patch to change the OS directory in ESP (bsc#1130056) - Add fwupd-bsc1130056-change-shim-path.patch to set the default shim binary for openSUSE/SLE (bsc#1130056) - Link fwupd*.efi.signed to fwupd*.efi as requested by fwupd (bsc#1129466)- fwupd.spec: fix shell syntax error in %postun section (boo#1120363).- Update to version 1.2.3: * Correctly migrate the history database - Changes from version 1.2.2: * Log an error if started with an incompatible locale * Fix building with -Wl,-z,defs * ebitdo: Fix the reported version number if the daemon locale is not C.UTF-8 * Add Dell TB18DC to the known devices list * Allow replacing the last byte in the image when using 'dfu-tool replace-data' * Check the device checksum as well as the content checksum during verify * Submit the device firmware checksum and update protocol in the submitted report * Include the device checksum and update protocol in the historydb * uefi: Add the PCR0 value as the device checksum for system firmware * Add new API to get the release protocol from the metadata * Allow plugins to define support for a 'well-known' protocol * uefi: When adding headers set the header size to 4k * uefi: Append the header on capsules without headers from Linux * flashrom: Ensure the quirks database is set on the new object * uefi: Do not add devices with invalid GUIDs * Do not allow a GUID of zero * Add shared functionality for reading and writing with O_NONBLOCK * Only run attach and detach if the device is in the wrong mode * Sanitize the version if the version format has been specified * wacom-usb: Remove the DTH generation hardware as it will not work with fwupd * thunderbolt: Remove a superfluous boundary condition when verifying update * Add a plugin to update hardware that supports fastboot * Fix a regression when doing GetReleases on unsupported hardware * dfu: Require a specific USB class and subclass for DFU mode * Correctly parse format the version numbers correctly using old metadata * amt: Fix a crash if AMT returns an empty response * Check plugins set error on failure * contrib: Add a simple python3 client * installed-tests: Adjust to actually use a remote for installed tests * Add more standard USB identifier GUIDs * wacomhid: Rename to wacom-usb * Provide a way for plugins to decompress a custom archive to ram - Changes from version 1.2.1: * Remove DaemonVersionFormat=quad * Shut down the daemon after 2h of inactivity * Create a silo index to speed up GUID queries * Fix flashing the 8bitdo SF30 * Speed up fwupd startup by loading less thunderbolt firmware * Query the XbSilo when calling fu_plugin_check_supported() * Guess the version format when it is not provided * Fix a use-after-free when using valgrind and --immediate-exit * Add per-release install duration values * Fix showing the custom remote agreements * Be more explicit setting the update state * Include the os-release information in the release metadata - Changes from version 1.2.0: * ebitdo: remove SF30/SN30 pro device ids * dell-dock: Drop delayed MST callback routine * synapticsmst: Adjust EVB board handling * synapticsmst: Remove the content checking of firmware * synapticsmst: Access Board ID through memory instead In firmware images HDCP 2.2 will be enabled by default,so access to flash region will fail.` * contrib: Adjust flatpak build for moving to flathub * dell-dock: Prefer to flash VMM5331 via I2C instead of DP aux * Use HTTPS_PROXY if set * firmware-packager: Make it clearer to use * Sort the firmware sack by component priority * flatpak: Update gnu-efi to latest version * amt: Set the full device version including the BuildNum * fwupdmgr/fwupdtool: Move monitor command to fwupdtool * fwupdmgr/fwupdtool: Move firmware builder from fwupdmgr to fwupdtool * Add version format quirks for several Lenovo machines * uefi: Set the quirks on created devices * dell_dock: Use correct offset for finding version of MST * dell-dock: Add missing unlock call for MST via dell_dock plugin * Support the Intel ME version format * Port from libappstream-glib to libxmlb * Bump requirement to meson 0.46.0 * fu-main: Catch SIGTERM while update is in progress * fu-tool: Stop any running daemon over dbus before loading engine * meson: Bump dependency to 0.44 and adjust sysconfdir handling * dell-dock: If marketing name is invalid don't fail initialization * Readme Updated: Added KDE Discover as one more graphical front-end available for fwupd. * dell-dock: Correct a situation that error wasn't propagating * Don't segfault if a plugin returns FALSE from UpdateFunc with no error set * dell-dock: Use different debug strings for each device type * dell-dock: Don't use the VLA feature in the new dock * Add a plugin for an upcoming Dell USB-C dock * contrib: Add information on how to use debugging scripts * Allow setting the version format from a quirk entry * Don't use AppStream-glib for string helpers * Don't use AppStream-glib for version helpers * Don't use AppStream-glib for the GUID helpers * fu-device: Ensure that parent ID is created before creating quirked children * Update all sub-devices for a composite update * Stop showing the current release during updates in fwupdmgr * uefi: Move the TPM unlocking functionality from the Dell to UEFI plugin * Run the Dell plugin initialization after the UEFI plugin * thunderbolt-power: Fix possible linker problem * Allow firmware files to depend on versions from other devices * fu-debug: Redirect all debugging output to stderr instead of stdout * synapticsmst: Adjust panamera ESM update routine for some reported issues * fu-engine: Optionally wait for replug before updating a device * fu-device-list: Use delayed device removal when removing the tree * thunderbolt: Use replugging from the daemon * Add support for devices to show an estimated flash time * Marked some CL options for translation * ci: Run clang static analysis for Ubuntu build rather than just clang compiler * nvme: Initialize the buffer before reading the contents * contrib: Add a standalone installer creation script * rts54hid: Add support for Realtek USB devices using vendor HID commands * fu-engine: Don't show devices pending a reboot in GetUpgrades * Add FuMutex helper to make various parts of the daemon thread-safe * rts54hub: Add support for Realtek USB devices using vendor HUB commands * uefi: Check the amount of free space on the ESP * fu-tool: Import debugging options from fu-debug like fu-main * superio: Set the physical and logical IDs - Add pkgconfig(xmlb) BuildRequires: New dependency.- Add pesign-obs-integration to BuildRequires and add fwupd*.efi to BRP_PESIGN_FILES to get it signed - Add LC_IMAGES and use efivar only if %{with efi_fw_update} + Also update the version requirement of efivar - Disable Redfish and NVME plugins if %{without efi_fw_update} since those two plugins require efivar - Remove fwup from BuildRequires since fwupdate is already merged into fwupd.- Use gnu-efi only if %{with efi_fw_update}, always use pkgconfig(efivar) - Fix file list- Amend %post and %postun to install/uninstall fwupd*.efi to the EFI system partition + Also add shim to Requires for fwupdx64.efi - Mark fwupdate as obsolete + fwupdate has been merged into fwupd since fwupd 1.1.0.- fwupd is require for thunderbolt firmware update in SLE15-SP1(fate#322681)- Update to version 1.1.2: + New Features: - Add a new device flag "ignore-validation" that will override checks - Add a new plugin to enumerate EC firmware - Add a new plugin to update NVMe hardware - Add a plugin for updating using the flashrom command line tool - Allow the device list to take care of waiting for the device replug - Allow updating just one specific device from the command line - Allow upgrades using a self-signed fwupd.efi binary - Download firmware if the user specifies a URI - Include serial number in daemon device output when trusted - Notify all plugins of device removals through a new vfunc - Use boltd force power API if available + Bugfixes: - Add an install hook for classic snap - Allow forcing installation even if no AC power is applied - Allow using --force to ignore version_lowest - Always use the same HardwareIDs as Windows - Check the device state before assuming a fake DFU runtime - Copy over parent GUIDs from other plugin donors - Detect location of python3 interpreter - Do not add udev devices after a small delay - Don't fail to run if compiled without GPG/PKCS7 - Fix a segfault in fwupdtool caused by cleanup of USB plugins - Implement the systemd recommendations for offline updates - Improve performance when reading keys from the quirk database - Remove children of devices when the parent is removed - Rewrite synapticsmst to use modern error handling - Rewrite the unifying plugin to use the new daemon-provided functionality - Show a time estimate on the progressbar after an update has started- Use noun phrase for summary. Trim request for comments from description.- Update to version 1.1.1: + New Features: - Add support for the Synaptics Panamera hardware - Add validation for Alpine and Titan Ridge - Improve the Redfish plugin to actually work with real hardware + Bugfixes: - Allow different plugins to add the same device - Allow flashing unifying devices in recovery mode - Allow running synapticsmst on non-Dell hardware - Check the ESP for sanity at at startup - Do not hold hidraw devices open forever - Don't override _FORTIFY_SOURCE when building the EFI binary - Don't show passwords in fwupdmgr - Fix a potential segfault in smbios data parsing - Fix encoding the GUID into the capsule EFI variable - Fix various bugs when reading the thunderbolt version number - Reboot synapticsmst devices at the end of flash cycle - Show status messages when the daemon is initializing - Show the correct title when updating devices - Show the reasons that plugins are not run on the CLI - Use localedir in po/make-images- Run %udev_rules_update in post as package install udev rules- Update to version 1.1.0: (FATE#326702) + New Features: - Add a initial Redfish support - Add a tool to mimic the original fwupdate CLI interface - Allow devices to assign a plugin from the quirk subsystem - Change the quirk file structure to be more efficient - Merge fwupdate functionality into fwupd - Run a plugin vfunc before and after all the composite devices are updated - Support more Wacom tablets + Bugfixes: - Add release information for locked devices - Allow building with older meson - Detect the EFI system partition location at runtime - Do not use 8bitdo bootloader commands after a successful flash - Enable accesing downloaded files in flatpak and snap - Fix a potential buffer overflow when applying a DFU patch - Fix downgrading older releases to devices - Fix flashing devices that require a manual replug - Fix several small memory leaks in various places - Fix the retrieval of Redfish version - Fix unifying failure to detach when using a slow host controller - Set the Wacom device status when erasing and writing firmware - Show errors in the CLI if unable to access directory - Use the parent device name for Wacom sub-modules - Removed enable_pkcs7_when_testing_only.patch- Update to version 1.0.8: + New Features (including version 1.0.7): - Add an plugin to update some future Wacom tablets - Add 'fwupdmgr get-topology' to show logical device tree - Add support for creating a flatpak - Add support for creating a snap - Add support for Motorola S-record files - Add the Linux Foundation public GPG keys for firmware and metadata - Show a translated warning when the server is limiting downloads - Add enable-remote and disable-remote commands to fwupdmgr - Add fu_plugin_add_compile_version() for libraries to use - Allow requiring specific versions of libraries for firmware updates - If no remotes are enabled try to enable the LVFS - Show a warning with interactive prompt when enabling a remote + Bugfixes (including version 1.0.7): - Add a firmware diagnostic tool called fwupdtool - Adjust all licensing to LGPL 2.1+ - Allow installing more than one firmware using 'fwupdmgr install' - Allow specifying hwids with OR relationships - Do not call fu_plugin_init() on blacklisted plugins - Do not require libcolorhug to build - Fix a crash in libfwupd where no device ID is set - Fix a potential DoS in libdfu by limiting holes to 1MiB - Fix a segfault that sometimes occurs during cleanup of USB plugins - Fix Hardware-ID{0,1,2,12} compatibility with Microsoft - Hide devices that aren't updatable by default in fwupdmgr - Search all UEFI GUIDs when matching hardware - Stop matching Nintendo Switch Pro in the 8bitdo plugin - Check that EFI system partition is mounted before update - Disable synapticsmst remote control on failure - Don't recoldplug thunderbolt to fix a flashing failure - Fix SQL error when running 'fwupdmgr clear-offline' - Improve the update report message - Only enumerate Dell Docks if the type is known - Only run certtool if a new enough gnutls is present - Prevent a client crash if the daemon somehow sends invalid data - Reboot after scheduling using logind not systemd - Use the right encoding for the label in make-images - Added/backported enable_pkcs7_when_testing_only.patch: + needed to disable pkcs7 test during build (can be removed for fwupd >= 1.0.9)- Update hasbang in installed files from /usr/bin/env python3 to /usr/bin/python3.- Update url - Small packaging cleanup with spec-cleaner- Update to version 1.0.6: + New Features: - Add bash completion for fwupdmgr. - Add support for newest Thunderbolt chips. - Allow all functions that take device arguments to be prompted. - Allow devices to use the runtime version when in bootloader mode. - Allow overriding ESP mount point via conf file. - Delete any old fwupdate capsules and efivars when launching fwupd. - Generate Vala bindings. + Bugfixes: - Allow ctrl-d out of the prompt for devices. - Allow to create package out of provided binary. - Correct handling of unknown Thunderbolt devices. - Correctly detect new remotes that are manually copied. - Fix a crash related to when passing device to downgrade in CLI. - Fix running the self tests when no fwupd is installed. - Fix Unifying signature writing and parsing for Texas bootloader. - Only send success and failure reports to the server. - Use a CNAME to redirect to the correct CDN for metadata. - Use a longer timeout when powering back the Thunderbolt device.- Ensure library package has a dependency on main package, otherwise it won't be usable.- Update to version 1.0.5: + New Features: - Offer to reboot when processing an offline update. - Report the efivar, libsmbios and fwupdate library versions. - Report Thunderbolt safe mode and SecureBoot status. - Show the user a URL when they report a known problem. - Support split cabinet archives as produced by Windows Update. + Bugfixes: - Be more careful deleting and modifying device history. - Clarify which devices don't have upgrades. - Ensure the Thunderbolt version is xx.yy. - Fix a daemon warning when using fwupdmgr get-results. - Fix crasher with MST flashing. - Fix DFU detach with newer releases of libusb. - Include the device VID and PID when generating the device-id. - Set the RemoteId when using GetDetails. - Stop matching 8bitdo DS4 controller VID/PID. - Use help2man for dfu-tool and drop docbook dependencies. - Use ngettext for any strings with plurals. - Use the default value if ArchiveSizeMax is unspecified.- Update to version 1.0.4: + New Features: - Add D-Bus methods to get and modify the history information. - Allow the user to share firmware update success or failure. - Ask the user to refresh metadata when it is very old. - Store firmware update success and failure to a local database. + Bugfixes: - Add a device name for locked UEFI devices. - Allow each plugin to opt-in to the recoldplug action. - Fix firmware downloading using gnome-software. - Fix UX capsule reference to the one specified in efivar. - Never add two devices to the daemon with the same ID. - Rescan supported flags when refreshing metadata. - Add pkgconfig(json-glib-1.0) BuildRequires: new dependency.- Update to version 1.0.3: + New Features: - Add a new plugin to add support for CSR "Driverless DFU". - Add initial SF30/SN30 Pro support. - Support AppStream metadata with relative URLs. + Bugfixes: - Add more metadata to the user-agent string. - Block owned Dell TPM updates. - Choose the correct component from provides matches using requirements. - Do not try to parse huge compressed archive files. - Fix a double-free bug in the Udev code. - Handle Thunderbolt "native" mode. - Use the new functionality in libgcab >= 1.0 to avoid writing temp files.- Unbreak compilation on non-x86, upstream renamed options to disable plugins.- Update to version 1.0.2: + Add a plugin for the Nitrokey Storage device + Add support for the original AVR DFU protocol + Allow different plugins to claim the same device + Allow quirks to set common USB properties + Move a common plugin functionality out to a new shared object + Optionally delay the device removal for better replugging + Set environment variables to allow easy per-plugin debugging + Use a SHA1 hash for the internal DeviceID + Add quirk for AT32UC3B1256 as used in the RubberDucky + Disable the dell plugin if libsmbios fails + Don't register for USB UDev events to later ignore them + Fix a possible buffer overflow when debugging ebitdo devices + Fix critical warning when more than one remote fails to load + Fix DFU attaching AVR32 devices like the XMEGA + Ignore useless Thunderbolt device types + Refactor ColorHug into a much more modern plugin + Release the Steelseries interface if getting the version failed + Remove autoconf-isms from the meson configure options + Show a nicer error message if the requirement fails + Sort the output of GetUpgrades correctly - Changes from version 1.0.1: + Add support for HWID requirements + Add support for programming various AVR32 and XMEGA parts using DFU + Add the various DFU quirks for the Jabra Speak devices + Allow specifying the output file type for 'dfu-tool read' + Move the database of supported devices out into runtime loaded files + Support the IHEX record type 0x05 + Use help2man to generate the man page at build time + Use the new quirk infrastructure for version numbers + Catch invalid Dell dock component requests + Correctly output Intel HEX files with > 16bit offset addresses + Do not try to verify the element write if upload is unsupported + Fix a double-unref when updating any 8Bitdo device + Fix crash when enumerating with Dell dock connected but with no UEFI + Fix uploading large firmware files over DFU + Format the BCD USB revision numbers correctly + Guess the DFU transfer size if it is not specified + Include the reset timeout as wValue to fix some DFU bootloaders + Make the error message clearer when sans fonts are missing + Support devices with truncated DFU interface data + Use the correct remote-specified username and passord when using fwupdmgr + Use the correct wDetachTimeOut when writing DFU firmware + Verify devices with legacy VIDs are actually 8Bitdo controllers - Add help2man as BuildRequires.- Fix dependencies and build options for non-x86 architectures. At least FW updates for USB are arch independent, and EFI FW updates can also be applied on Aarch64.- Update to version 1.0.0: * Add the plugin documentation to the main gtk-doc * Add a waiting-for-auth daemon state * Add fwupd_remote_get_checksum() to use in client programs * Generate the LD script from the GObject Introspection data * Prevent fwupd from mounting filesystems * uefi: Do not use system-specific infomation for PCI devices * uefi: Support uploading the firmware splash image * dell: only set coldplug delay when we know we need it * dell: only run SMI to toggle host MST GPIO on systems with host MST * dell: add functionality to blacklist HW with problems * dell: only run on intended chassis * thunderbolt-power: always run after thunderbolt plugin * Allow plugins to depend on each other * Add support for SMBIOSv3 * dell: prefer to use hwids to get DMI keys and DE table * debian: remove /etc/fwupd.conf on upgrade * unifying: Use fu_plugin_check_supported() * Add fu_plugin_check_supported() * unifying: Use a device whitelist to avoid breaking devices * Fix various printing issues with the progressbar * dell: Fix a trivial whitespace issue * Do not fail to load the daemon if cached metadata is invalid * Do not store the newest release as part of the FuDevice object * Add a method to return a list of upgrades for a specific device * Move the downgrade calculation to the daemon * Make FuDevice derive from FwupdDevice rather than FwupdResult * Add a command 'clear-offline' to fwupdmgr * Merge releases where multiple remotes provide the same firmware * Remove the UniqueID property * uefi: Do not set the release version * udev: Do not match USB devices, even with a GUID set * Use the intel-wmi-thunderbolt kernel module to force power * dell: drop thunderbolt force power code * unifying: Add hardcoded summaries for peripheral kinds * Create CODE_OF_CONDUCT.md * Ensure more devices set the device summary * Add an 'Summary' property to each device * Add a human-readable title for each remote * unifying: Disable if the kernel has no CONFIG_HIDRAW support * Move deprecated symbols to a new header * Introduce an s390x cross compile target to CI * Add ModifyRemote as an easy way to enable and disable remotes like the LVFS * Do not auto-open all USB devices at startup * dfu: Use FuDeviceLocker * unifying: Use FuDeviceLocker * colorhug: Use FuDeviceLocker * ebitdo: Use FuDeviceLocker * altos: Use FuDeviceLocker * steelseries: Use FuDeviceLocker * usb: Use FuDeviceLocker * Add FuDeviceLocker to simplify device open/close lifecycles * dfu: Remove DEVO support * dfu: Remove the now-unused symtab support * Remove the ELF support from libdfu and move the code to the altos plugin * Use -Werror when building in Travis CI * Do not install the libdfu helper library * Parse the SMBIOS DMI table directly * usb: Disable the fallback USB plugin * Test for missing language translations at build time * Fix the libdfu self test failure on s390 and ppc64- Update to version 0.9.8: * Add a command 'clear-offline' to fwupdmgr * Do not fail to load the daemon if cached metadata is invalid * Fix a crash when using fu_plugin_device_add_delay() * Fix the libdfu self test failure on s390 and ppc64 * Format the BCD USB revision numbers correctly * Never fallback to an offline update from client code * Prevent fwupd from mounting filesystems * dfu: Allow flashing when the target does not specify an alt-name * dfu: Do not try to verify the element write if upload is unsupported * dfu: Fix uploading large firmware files * dfu: Include the reset timeout as wValue to fix some hardware * dfu: Set the vendor ID to the runtime USB VID * dfu: Use 0x0101 as an alias for 0x0110 * thunderbolt: move test for mock environment (gh#hughsie/fwupd#280) * udev: Do not match USB devices, even with a GUID set * uefi: Do not set the release version * unifying: Disable if the kernel has no CONFIG_HIDRAW support- Update to version 0.9.7: + 10 months worth of bugfixing, integrating more vendor specific Firmware update paths.- Update to version 0.8.1: + Delete duplicate translations (gh#hughsie/fwupd#89). + Do not hardcode docbook2man path. + Fix fwupdmgr timeout with missing pending database. + Fix compiler warnings. + Fix a crash when enumerating devices on a Dell WLD15. + dell: don't initialize libsmbios on unsupported systems. + Do not fail to start on Dell hardware. + Adjust systemd confinement restrictions. + Do not dlclose modules when running under valgrind. + Really remove the NoNewPrivileges systemd confinement. + Release fwupd 0.8.1.- Update to version 0.8.0: + Show a different error when checking for updates while on + battery power (gh#hughsie/fwupd#68). + Clarify the test in --help and man page related to offline + (gh#hughsie/fwupd#69). + libdfu: Use a heuristic for the start address if the firmware + has no DfuSe footer. + dell: Don't return the address of a stack variable. + dell: Fix a possibly-impossible-to-hit buffer overrun. + close USB devices before error returns (gh#hughsie/fwupd#73). + Make libelf support optional. + Always make sure we're getting a C99 compiler. + Fix redeclaration of polkit autocleanup functions. + Uncomment SystemdService parameter in the dbus service file + (gh#hughsie/fwupd#74). + Make all providers and plugins share a GUsbContext. + Unexport libebitdo. + Move the plugins into plugin-specific directories. + Convert the providers to plugins to simplify code and for + future features. + Add support for Logitech Unifying devices. + Add a set of vfuncs that are run before and after a device + update. + Return the pending UEFI update when not on AC power. + Move the UPower functionality to a plugin. + Fix udev plugin loading. + fix dfu plugin loading. + Disable PrivateNetwork on systemd service. + Use more restrictive settings when running under systemd. + dell: add a new method for forcing a controller to flash mode. + Add VerifyUpdate to update the device checksums server-side. + Move the Option ROM parsing to the Udev plugin. + Move the device add delay to shared code. + Add initial skeleton for Intel Thunderbolt support. + unifying: Use the actual bootloader VID/PIDs when in firmware + mode. + Allow the metadata to match a version of fwupd and the existing + fw version. + Add fwupd_result_get_device_version_bootloader(). + Fix the appstream-glib version guards. + dell: Add coldplug methods to let other plugins turn on + TBT/GPIO. + libdfu: Don't read data from some DfuSe targets. + Add the ability to run a prepare->exec->cleanup on coldplug. + Allow plugins to request that all plugins re-coldplug. + thunderbolt: Detecting new devices and add an actual device to + the daemon. + Add support for flashing the ChaosKey. + thunderbolt: add some guards around empty arrays. + dell: Adjust the coldplug preparation and cleanup sequence. + dell: Fix possible linker problem. + Revert "thunderbolt: add some guards around empty arrays". + Add fu_plugin_set_coldplug_delay() to allow hardware to + initialize if required. + altos: Add error checking when using termios. + ebitdo: Subclass FuDevice like the altos plugin. + altos: Set the flags in the init_real so they work for the + cmdline tool. + unifying: Subclass FuDevice like the altos plugin. + Include all debug messages when run with --verbose. + dell: introduce a standalone (noinst) tool to force mode + flashes. + Introduce plugin for Synaptics MST hubs. + synapticsmst: Add cascade support. + Only register the D-Bus service when all devices have been + added. + synapticsmst: Refactor away the global state. + synapticsmst: fix cascade support in the plugin. + Updates for thunderbolt plugin. + thunderbolt: Add special handling for safe mode on Dell systems + (gh#hughsie/fwupd#84). + synapticsmst: Iterate all nodes rather than hardcoding to 3. + synapticsmst: build GUID using dock type. + Add a new function fu_dell_supported to fu-dell-common. + synapticsmst: add a test suite. + synapticsmst: Fix up some trivial whitespace issues. + Fix a refcounting issue in the udev plugin. - Add rpmlintrc untill security review is resolved- Update to version 0.7.5: + Clean up PO files + Verify devices support updating in mode they are called. + Fix an assert when unlocking the dummy ESRT device + Don't create the UEFI dummy device if the unlock will happen on + next boot + dell: Match on TB16 as well + Fix a -fstack-protector-strong crash when uploading firmware + Enable the stack protection in local builds + dell: If running in test suite, don't try to get product ID + from sysfs + libfdfu: Show a warning when getting the alt-name failed + dfu: Fix listing devices using the ST reference bootloader + Show the nicely formatted target name for DfuSe devices + libdfu: Fix two possible critical warnings for corrupt USB + descriptors + libdfu: Correctly offset addresses when one zone has multiple + sectors + libdfu: Do not do GetStatus on dfuse upload + libdfu: Fix uploading from DfuSe devices + libdfu: Use the device offset when writing DfuSe firmware + libdfu: Add DfuAction enumerated value to represent a device + action + libdfu: Use an animated progress bar when performing DFU + operations + libdfu: Do not do a zero-byte download when in DfuSe mode + libdfu: Fix verification of written DfuSe firmware + libdfu: Ensure the device is open before claiming the interface + libdfu: Ensure the mode is set correctly when faking a runtime + libdfu: Re-get the quirks when the DfuDevice gets a new + GUsbDevice + libdfu: Add quirks for HydraBus as it does not have a DFU + runtime + libdfu: Match the device booloader or runtime VID and PID when + checking firmware + Add a 'replace-data' command to dfu-tool + string + libdfu: Add dfu_sector_get_zone() to get the continuous memory + zone number + libdfu: Wait for DNBUSY to be cleared when checking the DfuSe + status + libdfu: Correctly erase DfuSe devices + Enable hardening flags on more binaries + libdfu: Correctly set the element address when uploading from + DfuSe devices - Add pkgconfig(gmodule-2.0) BuildRequires: Align with what + configure checks for. - Add pkgconfig(libsmbios_c) BuildRequires: Support dell bios. + Unfortunatly, until we have fwup packaged and enabled, this will + not work. - Add disabled pkgconfig(libtbtfwu): For future thunderbolt + support.- Update to version 0.7.4: + Add a fallback for older appstream-glib releases + Write the ELF files with the correct section type + Fix libfwupd self tests when a host-provided fwupd is not + available + Add dfu_firmware_add_symbol() + Add the Altos symbol table to the DfuFirmware + Use the symtab to set the VID/PID from Altos IHEX firmware + images + Show the human-readable version in the 'dfu-tool dump' output + Allow specifying the argument to 'dfu-tool set-release' in + major.minor format. + sections + Support writing the IHEX symbol table + call + Load the symbol table from ELF firmware + Load the Altos USB descriptor from ELF files + Add DFU_CIPHER_KIND_RSA + Fix a possible crash when uploading firmware files using libdfu- Update to version 0.7.3: + build: Fix gtk-doc build when srcdir != builddir + In get-details output, display the blob filename + Ensure the update ID is set when getting local firmware details + Use a private gnupg key store + Add support for installing against multiple devices from a CAB + file + Use the correct firmware blob when installing a composite + device update + in get-details output, display update_name rather than Unknown + Device + statements + Don't make failures critical while checking versions or locked + state + Show a more detailed error when installing firmware on the + wildcard + Add Dell TPM and TB15/WD15 support via new Dell provider. + file + Allow blacklisting devices by their GUID + header file + Add XPS 9250 to Dell TPM modeswitch blacklist + Only display flashes left in results output when it gets low. + Add a small library for talking with 0bitdo hardware + Add another compile warning and fix up any build failures + Embed fwupd version in generated libfwupd and libdfu + documentation + Update fwupdmgr manpage for new commands and arguments + build: Fix gtk-doc build when srcdir != builddir + online not offline + Get the firmware version correctly from 0Bitdo gamepads + Switch to the Amazon S3 CDN for firmware metadata + Fix writing 8Bitdo device firmware + be updated + Show the vendor flashing instructions when installing + Split out the DFU file formats to separate files + Add fwupd_result_remove_device_flag() + Add FU_DEVICE_FLAG_NEEDS_BOOTLOADER + get-updates output + Allow providers to export percentage completion + Add fwupd_client_get_status() + Handle the 8Bitdo bootloader in a better way + Show a progress notification when installing firmware + Add fwupd_result_get_unique_id() + Use the SHA1 hash of the local file data as the component + origin + Use the correct define prefix for FwupdDeviceFlags + libdfu: Fix hang when parsing corrupt IHEX files + Add a set-target-size command to dfu-tool + Support the 'DEVO' cipher kind in libdfu + Add a set-address command to dfu-util + Disable the Dell specific code by default + Conditionally enable all providers based upon what's installed + Add a summary of providers that are enabled from configure + Do not use the deprecated GNOME_COMPILE_WARNINGS + Ignore devices that do not add at least one GUID + Do not attempt to add DFU devices not in runtime mode + Save the unique ID in the pending database + libdfu: Add initial ELF reading and writing support + Add dfu_firmware_format_from_string() + Normalize the DfuFirmwareFormat enums- Update to version 0.7.2: + Allow devices to have multiple assigned GUIDs + Only return updatable devices from GetDevices() + Add fu_device_get_alternate() + Allow metainfo files to match only specific revisions of + devices + Re-read flags for a device after a provider's unlock routine is + done + Test for a locked device when trying to install firmware update + Enforce allowing providers to take away flash abilities + Support returning multiple GUIDs from GetDetails + Add a GetDetailsLocal() method to eventually replace + GetDetails() + break + libdfu: Add DfuVersion enumerated values + libdfu: Show the DFU protocol version in 'dfu-tool list' + Only claim the DFU interface when required- Update to version 0.7.1: + Fix libdfu CRC check for big endian architectures + Add dfu_image_get_element_default() + Fix libdfu CRC check for big endian architectures + Fix big endian issues when reading and writing DFU and DfuSe + files + Remove non-interactive pinentry setting from fu-keyring + Set the system's DMI product name as the DisplayName for UEFI + Re-order output of get-devices to be easier to read + Make the device display name nicer + update version + Return all update descriptions newer than the installed version + Add summary and name field for Rival SteelSeries + Fix a critical warning when restarting the daemon + Add a 'supported' flag to the FuDevice + Add fwupd_client_connect() + Add a 'monitor' debugging command for fwupdmgr + Add device-added, device-removed and device-changed signals + Match the AppStream metadata after a device has been adedd + Re-match devices when the AppStream metadata is updated + Show 'Unknow Device' in fwupdmgr when a device name is not set + Set the device description when parsing local firmware files + Add support for a new device field "Flashes Left". + src/Makefile.am: reshuffle so enableable bits are only + referenced when on + Add support for a --force flag to override provider warnings- Update to version 0.7.0: + Use g_usb_context_wait_for_replug() + Run vendor plugins as required + Add a plugin for SteelSeries hardware + Add fwupd_device_flag_to_string() + Return the device flags when getting firmware details + Show device flags in 'fwupdmgr get-devices' + Add fwupd_trust_flag_to_string() + Export FwupdUpdateState in libfwupd + Export FwupdUpdateFlags in libfwupd + Add FwupdResult to libfwupd + Add a self test framework for libfwupd + Add FwupdClient to libfwupd + Use FwupdClient from libfwupd in fwupdmgr + Use libfwupd inside the daemon + Emit a FwupdClient::changed when the daemon emits this signal + Rename some of the new libfwupd API to align with the D-Bus + names + libdfu: Fix up some NULL/FALSE confusion + libfwup: Fix up some NULL/FALSE confusion + FwupdClient + Allow other checksum kinds in FwupdResult + Allow SHA-256 hashes when verifying + Show the checksum kind in the fwupdmgr output + Add Alienware to the version quirk table + Do not use /tmp for downloaded files + Add fwupd_result_has_device_flag() + Do not return updates that require AC when on battery + Connect to UPower at startup + Test that GPG key import actually was successful (or didn't + change a key already in the keyring) + Use g_auto() in FuKeyring + Return errors of the correct type when using libfwupd + Allow overridding the location of the pending database for + test suite + Allow overriding the location of the provider offline files for + test suite + Validate that the dbus system bus is available before running + libfwupd tests + Update README.md for changes that have happened in the project + Add some basic explanation of how to use fwupd with various + frontends + Split out the libdfu-devel package + Revert "Allow overridding the location of the pending database + for test suite" + Revert "Allow overriding the location of the provider offline + files for test suite" + Allow the test suite to run in %check + Generate gtk-doc documentation for libfwupd- Update to version 0.6.3: + Require AC power before scheduling some types of firmware + update + Install the hardcoded firmware AppStream file + Correct the BCD version number for DFU 1.1 + Add an unlock method for devices + Add ESRT enable method into UEFI provider. + Only read PCI OptionROM firmware when devices are manually + unlocked + Do not use deprecated API from libappstream-glib + Ignore the DFU runtime on the DW1820A + Export the attribute and quirk values in libdfu + Show ignored DFU devices in dfu-util, but not in fwupd + Allow defining update vfuncs with no runtime support + Revert "Allow defining update vfuncs with no runtime support" + Add a simple plugin infrastructure- Update to version 0.6.2: + Add 'Created' and 'Modified' properties on managed devices + Fix get-results for UEFI provider. + Support vendor-specific UEFI version encodings + Move quirks directly into a single table and file.- Update to version 0.6.1: + Only dump the profiling data when run with --verbose + Always persist ColorHug devices after replug + Do not misdetect different ColorHug devices- Update to version 0.6.0: + Add support for updating USB devices with DFU + libdfu: Add support for DfuSe firmware + libdfu: Generate gtk-doc documentation + libdfu: Don't rely on specific hardware to be present + libdfu: Move the VID:PID checks from the tool to DfuDevice + libdfu: Use a custom error domain + Use the same device identification string format as Microsoft + libdfu: Fix crash when setting a target size + libdfu: Allow setting the alternate settings in DfuSe firmware + libdfu: Add a merge command to dfu-tool + libdfu: Allow choosing a different alt-setting when downloading + libdfu: Fix a crash when setting a NULL image name + libdfu: Correctly implement auto-boot in dfu_device_download() + libdfu: Check for extra args to dfu-tool convert + libdfu: Call the progress callback when doing detach + Ignore the DFU device detach:attach when verifying + libdfu: Require a --force flag to flash wildcard firmware + Use new API available in fwup 0.5 + libdfu: Make the element address 32 bits in size + libdfu: Support the ST-specific bitCanAccelerate + libdfu: Only do a Detach notification if we're actually doing to do it + libdfu: Use the progress bar for all uploads and downloads + libdfu: Improve the output of 'dfu-util list' + libdfu: Support download and upload to ST DfuSe devices + libdfu: Fix multi-interface devices like the Neo Freerunner + libdfu: Add a pkgconfig file + libdfu: Use signals to propagate device state + libdfu: Add a context object to handle device hotplug + libdfu: Add an example showing GObject Introspection + libdfu: Do not ref DfuDevice in DfuTarget so the auto-close + logic works + Close DFU devices as soon as possible after the transfer has completed + Emit the changed signal after doing an update + Rescan the DFU device after replug to get the new version + libdfu: Add dfu_context_get_device_by_platform_id() + libdfu: Add dfu_device_get_runtime_release() + libdfu: Add dfu_device_get_display_name() + libdfu: Fix self tests after recent API change + Split out the DFU provider as a new file + libdfu: Copy the platform ID and invalidate the GUsbDevice when removed + libdfu: Accept multiple spaces after the DfuSe sector name + libdfu: Verify the GUsbDevice is set before using it + libdfu: Remove the weak pointer when destroying the DfuTarget + libdfu: Fix dfu_device_wait_for_replug() so it can work with a DfuContext + Export the AppStream ID when returning device results + Rescan the DFU device after firmware has been updated + libdfu: Handle cancellation with ctrl+c in dfu-tool + libdfu: Add a quirk to support DFU runtime-less devices + libdfu: Add an explicit 'attach' method + libdfu: Add dfu_firmware_get_image_by_name() + libdfu: Make reading and writing to targets easier to + understand + Fix compile with --disable-shared + libdfu: Display all the files shown with 'dfu-tool dump' + libdfu: Fix a few crashers found using afl + libdfu: Fix another bug discovered by the fuzzer + libdfu: Add commands to encrypt and decrypt firmware images + libdfu: Show better device errors + libdfu: Add DfuCipher which is a property on a target and a + firmware file + libdfu: Add support for the draft 'DFU Metadata Table + Specification' + libdfu: Only enumerate the DfuContext when required + libdfu: Fix several reported crashes in the inhex32 import code + Release fwupd 0.6.0- Update to version 0.5.4: + Fix compile error against fwupdate git due to dropped + functions. + Use strerror() when printing errors from libfwupdate + Use new API available in fwup 0.5 + Release fwupd 0.5.4- Update to version 0.5.3: + Avoid seeking when reading the file magic during refresh + Do not assume that the compressed XML data will be NUL + terminated + debugging + Use the correct user agent string for fwupdmgr + Release fwupd 0.5.3- Update to version 0.5.2: + Ensure D-Bus remote errors are registered at fwupdmgr startup + Show the dotted-decimal representation of the UEFI version + number + require appstream-glib 0.5.1 + not found + When the version is from the 'FW' extension do not cache the + device + Support cabinet archives files with more than one firmware + Add the update description to the GetDetails results + Add profiling data to debug slow startup times + Fix verify-update to produce components with the correct + provide values + Clear the in-memory firmware store only after parsing a valid + XML file + Release fwupd 0.5.2- Update to version 0.5.1: + Fix the error message when no devices can be updated + offline update: Use glib api for for reading symlinks + Release fwupd 0.5.1- Update to version 0.5.0: + Do not merge the existing firmware metadata with the submitted + files + Raise the dep on GLib to support and use g_autoptr() + Do not reboot if racing with the PackageKit offline update + mechanism + Release fwupd 0.5.0- Update to version 0.1.6: + Install fwupd and fwsignd into /usr/lib/$(triplet)/fwupd + instead. + Use the new secure metadata URI + Update the offline update service to invoke right command + Don't apply firmware if something else is processing the + offline update + Remove fwsignd, we have the LVFS now + Depend on appstream-glib >= 0.5.0 + Add application metadata when getting the updates list + Simplify the version properties on devices to avoid complexity + and bugs + Release fwupd 0.1.6- Update to version 0.1.5: + Allow fwupd to be autostarted by systemd + Sign the test binary with the correct key + Do not pre-convert the update description from AppStream XML + Devices with option ROM are always internal + Prefer the GUID from the firmware than the device + Allow no arguments to 'fwupdmgr verify-update' and use sane + defaults + Add the ability to remove a vendor on the LVFS site + Fix validation of written firmware + Move the verification and metadata matching phase to the daemon + Add a simple config file to store the correct LVFS download URI + Make parsing the option ROM runtime optional + Add a Raspberry Pi firmware provider + Use the AppStream 0.9 firmware specification by default + Generate the ColorHug test files at runtime + Release fwupd 0.1.5- Update to version 0.1.4: + man/Makefile.am: Add --sgml to docbook2man invocation + Make statements about storing private keys stronger. + Provide a way for clients to add new firmware metadata to the + system cache + Fix fwupd-offline-update.service + Revert "man/Makefile.am: Add --sgml to docbook2man invocation" + Add a Udev firmware provider + Extract the version string from the ROM in PCI devices + Add a 'verify' command that verifies the cryptographic hash of + device firmware + Make the ROM parsing more robust and add self tests + Get the version number out from Intel VBIOS too + Provide a way to dump the option ROM using the command line + build: gusb is required even without colorhug + remove unused variables + Do not return NULL as a gboolean + Fix Intel VBIOS detection on Dell hardware + Do not use the subsystem information when constructing the fake + GUID + Actually parse the PCI option ROM + Accept multiple files at one time when using fwupdmgr dump-rom + verify run + Add a 'verify-update' command to fwupdmgr + Fix trivial bug when parsing firmware versions + Keep hitting the hardware until it gives us enough ROM + Make the version parsing more resilient to corrupt firmware + Fix the example .inf file to reflect reality + Fix ROM PPID searching to work for all ROMs + Move the LVFS website to the fwupd project + Add the ability to create detached signatures + Allow cab files to be saved + Add a simple signing server that operates on .cab files + Automatically download metadata using fwupdmgr if required + Don't call efibootmgr after fwupdate. + Associate the contact email address directly with the vendor + key + Use the actual LVFS GPG key + Allow running fwsignd as the non-root user + metadata + Do not merge existing LVFS metadata + Do not use the file hash when storing the LVFS submitted + firmwares + Move GetUpdates to the daemon + Change the DBus method for installing firmware to 'Install' + Allow installing an offline UEFI update without --offline + Add a 'fwupdmgr update' command to update all devices to latest + versions + 'update' command + Increase the size limit of firmware to 50Mb + Only sign files when the entire file has been copied + Fallback to offline install when calling the update argument. + Reload appstream data after refreshing. + Release fwupd 0.1.4- Update to version 0.1.3: + Coldplug the devices before acquiring the well known name + Add an UNKNOWN status so we can return meaningful enum values + Run the offline actions using systemd when required + Get the firmware version from the device descriptors + Added syntax highlighting + More markup + Support OpenHardware devices using the fwupd vendor extensions + Move boolean properties on the device to a set of flags + Release fwupd 0.1.3- Update to version 0.1.2: + More markup + Fixed typos and markup for executable + Add slovak translation + Add helper code to validate public key signatures + Decompress any firmware signatures in the .cab file + Verify firmware if a detached signature is present + Show the firmware trust status when doing GetDetails() + Only allow signed firmware to be upgraded without a password + Add some guidelines for vendors to README + Small grammar fix + Extract the .cat file alongside the firmware + Release fwupd 0.1.2- Update to version fwupd_0_1_1: + Do not crash when there are no devices to return + Add a 'get-updates' command to fwupdmgr + Add and document the offline-update lifecycle + Create runtime directories if they do not exist + Create a libfwupd shared library + Export the status as an enumerated value rather than a string + Release fwupd 0.1.1- Initial package. 1.5.8-150300.3.3.11.5.8 fwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mofwupd.mo/usr/share/locale/ast/LC_MESSAGES//usr/share/locale/ca/LC_MESSAGES//usr/share/locale/cs/LC_MESSAGES//usr/share/locale/da/LC_MESSAGES//usr/share/locale/de/LC_MESSAGES//usr/share/locale/en_GB/LC_MESSAGES//usr/share/locale/eo/LC_MESSAGES//usr/share/locale/eu/LC_MESSAGES//usr/share/locale/fi/LC_MESSAGES//usr/share/locale/fr/LC_MESSAGES//usr/share/locale/gl/LC_MESSAGES//usr/share/locale/he/LC_MESSAGES//usr/share/locale/hi/LC_MESSAGES//usr/share/locale/hr/LC_MESSAGES//usr/share/locale/hu/LC_MESSAGES//usr/share/locale/id/LC_MESSAGES//usr/share/locale/it/LC_MESSAGES//usr/share/locale/kk/LC_MESSAGES//usr/share/locale/ko/LC_MESSAGES//usr/share/locale/lt/LC_MESSAGES//usr/share/locale/nl/LC_MESSAGES//usr/share/locale/pl/LC_MESSAGES//usr/share/locale/pt_BR/LC_MESSAGES//usr/share/locale/ru/LC_MESSAGES//usr/share/locale/sk/LC_MESSAGES//usr/share/locale/sr/LC_MESSAGES//usr/share/locale/sv/LC_MESSAGES//usr/share/locale/tr/LC_MESSAGES//usr/share/locale/uk/LC_MESSAGES//usr/share/locale/zh_CN/LC_MESSAGES//usr/share/locale/zh_TW/LC_MESSAGES/-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:22836/SUSE_SLE-15-SP3_Update/00c4c34deff390e635959ab2b1d97878-fwupd.SUSE_SLE-15-SP3_Updatecpioxz5x86_64-suse-linuxfwupdutf-8da96b4f94e036faca9f0fa7ff03d9470c025303d99daac3f67649106beb700bb?@7zXZ !t/#] crv(vX0WcƧp=<ĊP6 ڢ(FN/%XK& > uq\;)a:O 4m9~uIc0)Zmʊ3pLߩ 4-eX+ry8%p@AUU\)SX\ *Fy]ͦN =KΛɟs ^}ˆ{/RjSOHKvԆUY[d<|Еa\ptPG#AB;3"16?a˾2!б$$]2Xe5S1rO+J7T eZ bXY=42:e/ٯzWj2p\R$żU]p)ybō E[K> RyQq  9Fw(;T@ =^anpwC:Ccck:,#Viaa['/}d萧cM&:k>xӮk^ʸkQo$Y98ٍq(q 6uAZ> 4f`dY=&^fxɿLgsEHf~ݛ4&D`Ԙ3hYw+R#8zf9p#4]6$~ߺfj7Mߍ[kQiIlU|:5NL}+?Ƒ?¬Tf1^t9boL܌(ÎMiDd7N<66(~aݼP__s^{Ν=$J^p;w K, %Ur\vEA/ByCݹ(ǹAfD%v#!s~Foc FX1yulq@TzD;J'47\Yg& 34Z~GzIjR&]i6 *+əR̝C%`wȟya?JEE|$!,Tn CYWaK,.pGip󮕃3(v;6>WP4JMvUJ m5Ƃ4,k)ُkf ؤ?W1]I-OӖ ճ|ٛJJ8h? Gd +LI? YQ≨ebI70_EYƀ|1u1O~ @a3W^~}Q `?>UGs|=EA8,>4Pj]{)8w.;VI#W\P}It$hҵbTS&YϲF1LAn@`닇/ϻlL6¾ ٧ :VrM6 >S}cn&= &-i=k4[`^x۞v JyJ-~j~r):=>b/?>!CnP GX3`sʽO󟘉H)>=!%D[xRjQfƽ(ߌ3;̮y峌Ve 2.RKw6hB(UŸ-E]Kpf^~=^GYGf.#%=gթh$ _ oǧ *,TE$X$;J;yų{.+i)=9v5Z-ˀgx*ٲg$ *& @ aYzH{}8KQ7UNe6)Mx:w2"H5(+ϟ/uEe)]ʱ6fbd)󯒪]^Q6> d,DZ paQMLs6q89s5ŝryA0±r0Xbv<nǶ.nyF'-ۙ\ >XꤚxWIh.LX1M@7y6Tm1#Iw)ް40I:ĥJֹ⫋Q\4}Z;J7w#>ՁfE"_fł%R*-C{ĤZ&3%mn#/l%6r;?/+ѿ|'1l`F%fxTGw O2S ca.yk\S4՞?@$G`|Е2? Uh)`U=؜7)r\ȻVA "{) ~+hMnꋗ޳F(X>B2@'ɞb&-xՔ<0K0ʙ(%#eGd tlzAQ.u*ϴP-vb[[PF@x检\Rd3,Js gzϢS0ʾi:]xsi債Mwb&I J.51 of(<+܅B[{|HNbdUk^.33ę{Fɰ#{v5/Z4JYkP#W1 Ϋx5җvv XNny~ASdQ5+Dn>`N+#k!{ak@͝p (YΠ -bſͪlׁ`KY/:E/;+FT[3ˢ+t;6K G \&]kjmd#XXAa D K7aW mNΤeI,Lc,M>+3d ~#$t*s8\"|3[mxA_JICa8F#Si|1'j7dd:7~mEj4[`I A0 S|'B"29D:]#{*3aNEn *~P'xڹD?P&ꈌRӐ 3sx cXG 4Ϣ;ښA jF5ǝzON/rP ` AmTrxcxLx @IEK+Rf>a7x)_zMoCa3C'-K@nA3k u&P7t͔@E n~(2Z{i*pA;`wvEl̈2V4?.z:8ub^o#Oa~*4}ebWNUnHGّ5>ŵ)ʹo;)LMM7Ho.jMVYGS t(,a+kxXzN=^& Rd2*2Ed v&$e#Yo@0^mjrLW٨t7Pxskp:>.;[A{PvOV 4[&}7\(%'73lln⇨wqC*0if:F .T\m[V^ fT5PejVJ$/{!|c^Sq?oa(noQWe"8.4`nN8B0I4Րp*%c) D߹alV4GUJUD\&Wut_sT_<~+ @^HmMkЎ̇iؠ31tmCqIrO9j"C99^ K{,AaSxDTvyR!86#s@˜A`0Gs,;` 6ڙDbqs$ e[_ 'Ln乽=mt]6XG}N1`qj?yRo(bIw̖qeC6A]*cC{=Zm 3AضMјACne e;ο/j1bF-vUpP A }oZcgȧ@Φ =0^[sAX=QI[B5^kj(Oe_YR_/Z ۇ\cQ"FK1z?:],̎ S:jN'fo!xz2{qEKsbDvEGJƀZ*,|ݑX O.4ڍ#*9# /(yw8 ~Uvn^JiDvjq)i;KSl-:[yO( Rܓ ';H9+l<2j 人@^>rr%^Q^, }t9q/vȤI*W"Gğ MziNTHg/A i'LE rSF2P5^ c5. doG8@|xa+Iϴ\yG[؄A7E>ov4Bt䷣P|3{'h6d9S +\X;;!|)\DРmݒ|rf@*j>gIխ)0ԯЩ$cvmT6lkEњ`zOC7V&xJm+%2oN6% 2׹_6!w)2xk];aK",7~b@"fz3N2~0z!yUP1*NT_!=Ӝn3%mk0KG^5I|o7Q%tR3[)2z} ~ 3bCf%RlHŅo~;IaHe Ou` }4捗@6JX Q.l9aE MvR'a^ؚIĮ&"3Aݬjo"nDYKǽBgDc_Yd󕿮xjېI!gWеiOXQ%0ѳd'{ |Vz lUA6+7Y0L}3=멝MN%;W+z&hT,(kGGqcSČEq_9O ۯ_ aGhIcDYPӭǙ9Hr;.[x[ik\Ovv10ƹvfvl*Mg;:g CMRW)&>̧[__V>j0GYtܱH wf+X)NU}ONa[q>liZ u>ctƊ WLJJOPAC;#Ex±#XOp#mb[zKmɣ`$jt-"pc-u Ebt{w)Ju 1nmf3XڻD>( .bc@l;VR.t|z7Vk>}XD>A;\4}?ɧ0=PR`uH-;*F_1|1 Rv숑Hl@.r{%>钯M׈ȞΜ+Nݐ5~gv)5dM"}<,˛OxW*:})$V̀? yՂH\Un8 ]FOPF| λF.Mk}U{%cgZ#\0Qi;;թЌ`x!*4dlyݥEMC׵Et P&z?.bK! 3JW6뼍Zњe<}LY3sJ":? Ą4ro;-4Tۿ#A 1(%q-h@-` Am$1귻 QvZ|7rm(1hb.Crd}U6gdD2j2 q{zø*DyfVxI:W(g3ěK>6 sYLd0TZ8#O) <.oGEɹR57'AsL[># gy5D+6_iX]q)$w5RhshcN`Lyh9f#kҶGv](SnJۙM:U߲%SI',ǟ1pT]oI~(oæ󇘲@.A;ltnb"xm|"5O`F"L3%k&&qbnzTF Wn cSʊO=eTp"Ɯ>ltzZP`BlXσLСzM-bOڱ-CU8_6u%QM^=?ǹXPrBjnM/F<ܿMv呡-LҹZ ҷ~+lYh̋'pL;Nt$<_0(_XY Қ{/#k9OX;@myICʎV Э>2>;MnL%0 d:CĤLr(Jۈem2t03 )97;WBZ<慉#e-u8{\:uHu@bӳK3'ن3ivbcqPx9hƃw!ơ1Rim_{xZhT*FoLKJq:6[&)mjve6oT"m.4 /\Zj/4}"CO2 b&U}7'ںDgʭj!Dn=`cPv`Ө<>cj:ecv{p(Ǹ%E[v@ 0pkobU6fk l5v#AIlO=A'6J =U %$~qV#ߓ`84CPgtf‹p?avG/ o@Ѩ// L1\ns$զ@39'sdgg'ljQB.iH_kf5_W'q\RgB}, E&rlTj@".^>Ց޴÷]kӯƴ_$+G?`N9yƉ!<AW'(U-[zWoQr0ЭqW}_Ý^@]~_ 7}xylZ?>MqI{BvX( ۓBђJP#]g}xuyuϔ-,XT+n*-@6;Rւ9W>|2cܑ˪ּͅ !W*po˜̋ Asob)p/h˶di~xDao#7WZ'3 LZ%D~~Jr6_^L[LlߍTְ}$ -Ù2 7?_eLJg_'%z[oMuc^/қvU>Hg;+ E}LVNT[c?ƙ[Q"_Q*-&%l)bgтi0O el  Eݯ^@!@Mc_Uy̓fRMU8k8/2[P%xJ(W13weylsaAH P~qIvȤ3&k1AҝF~͘DLmk/dl#3t|._\g$VEOr'~`%vwD. s .fR tDnFX18LXD"x@Șå3mK`uuAVDN?w }Nu@ @H,nDڛg܄˩|dC Ƨz>xA_l.n5])0Ņ]οР)HnAkEYTѻ VLVY5<`5U[ӗmԕ@*X92a} eXPܗFV;.zSxP8E3M/ LkimpO4B^b*+iBmKdž[*Ch ܙ_ّݪ9);hg(omQe4#/ȫUW BЖf65閭'E3!aDYxhK)tzUWw&ijt6>mj1cl"Vw4GlEA0RἺl v9{*SpDFJS?D$Y||9=:Lvw̡iC/N-]ڭ4)P\1Fo{Er w~B6au1G=F?wtLݙ"u8xwDDmp qPݏ2u=ZM Axex=OfSӮR\o|n{5K !u+= 5BKKSrB%Zs;|rI҃V ,{Ѱi2 GpNAMK:nj3n5P/3Nca5uBw\\( PnaO=Φg#DNN}j2t#q^iGn Zm>_̞  |D kh7}婹G~Fح}BT%Ω܂@6;jzGDir9[N׽rRBK0%*Z-G(hhuq:qπC|Jkq8aDž&A-IteQԈÚ&9G`vR8["eWcBd}c>"1lhŇ!þu -Yқ6NCܛI+L8F{fs/Qwqx/mioqI99"ڢf(W~G>HkC>:dg* =;î"IIu[zk˩a+\6a%NOҽVhیhCoa<٘}+WT->c.$>\7@1=sn׏M3FuLfD8,%[HK)=뱜boP5qWW%hhR/X DҪeDF#N"4~ntr%>q -NFM[dUzt\kCcsd? ,";=ߖ/֤ Oj?~bk$ɜ"yXcgXAʨV`| >2:Ү.[b_Z=ׇhe[{V5M-y_zeMc ‚% F!>ԐZ!)x2~C5g {\BW-F dQ\cR<kNe!+2g 6q"Qc$JjuL-,/ ;-'%yu7[ksc~7[W3fߜMZu><]dh7LZ)B!8*wwXy%<sO#Ǜ,@WwoC2렒dԫxV1,2„_K~EeC "ri26\5up0/fdle1 qy2 *1LIB$N&:h#A2*5[k@ҒG5fuusѤ1[D]cN5F݃5,2f9lNLmp5lQ-b@2b s{W'(5X_ߛP.vV)E<#i0+*KVǭ^MξUvb;ԙ9E='FtK*JϚauYm͟ U FoܟjhI!w Smɺ7 =,H_`woZߝ#39UCUt?wbx񖎣Xs *F? !kaM2jLt!Wo.\-94??>/ dWlv$͓΃]nuڭpM>c{} 8<;/똻g.{p1.Io"?\AL_eP.4\Iiv0 ĦD5W ovgF%GGy"mNMшرsSIyԠυs)wh*mgR/ޘ &#f-_ "x+ 閻%8y&9W K׽YՍ*G] 4}ȽW6oT Qڝi孝s[1;;)F/u3V󺒅zNLê|6UeR Iu)G)vQ5.KwԴ 0>VG)GK +֘Nu%}t WƇj;7Ç&AܲLE~l.X2JA WڱL4N>zhdw23?ne览iusx8$k 79ke;KUfwm re["gꟺc{z炯"sV*U3Urߤm$QӠn]A7㋥: 'M6XQt(X[oOh+N:\ͼ/:fbѹqna蒣=b22TV .qc GƘIi9bWs\V4{W2[HÅ=FACE9'nbؤ7DRˮ1$]E23IC sf!Qw$elGh,2uOuRϦ=<6R^oAy^^y0/ Y!j+ِn rTV~U3"`sCJPŅG>0G$ Lp̫_W$ ./ԗj (ǫ,B5SξHdVМL"UpwT^gԻvmD<*(5zbOo)B V2`orL 8$_DŽF `,DJ$ JsFyvj_,)[]!2frN0D)s> ^Y +#wEa%4{xcJHz(U)>*4]^ 1m a/Fumd8ѣaw3*81}:P@E1 kO7-ԥ /zӇ{_b,@3KZRS>J4#( QL\B.;-y1Мψm*u$UYFvaFc֢,g79S "otsZ/~D`:ʩ 3^d|QϓB]w">[شd]ggDzs*JHGK3'R3MG$}Z*}H#\PnZ瞥2Fr\ŹD{%Ł/*?Q 3qAO&xܐmGdXThl$||\!~X _3~n{_HcRyFL@o!ы Zop3˹pL=^Xa!$|>ZiLui?+X,<i} CJ-a`6n]æܙ,L0ήnj(!I9$%4F/`|tݼ@"lR'́i[Isrh.&T V `oc 6Pʩb(4 jlB!LXR x񨥬8[hI/;u5_M3}SΌ>ڡ2}sRE  IAC2H!/qS܋m7Zrw6Pew^\49kryG'BP}W/H" ,7;@g-`.Y3nq۝-^Wq\e  MzL0m ,(nr:bO'Nr6LI-={XB> !Em)4k~;LG{ifvN(zE=/#mîO5XdwĺWb[U<1Г?} hq-JGF* ?Kz*ܞℰB27O: ^e`|^un Hp[*A&7~R%~W gᬣTK^Ce<5:'ixCJNLB^嗠eNqRF}"Yo͋UTM㸖S}&l B#+낓6ޛ]u͢?b@L+7mqXF`..TuJEz+v  Nt*vO9_Lts-e-|kZ$ =Ƣ շq"k+lf]Qٖ® {.b8 w7Ɨ+H-b+9D<->SA61N¤rH&".xp<No dia9ď!x&84xG(h o)<{ dhm")i C6z* 8`dagBoF$\f>:zTQY؍ 5.6nE0iTw> 8%JF/::)ƥ9ͯR_2^-6\TE MM4 !KWDHaÌ)`G<:㮩O]D=Enʫ ?ꀌ:}p[cgb)_vt3htf(HgŠf\`6_F3AɒzT}6|<_ )E~tV~}:|р ñ8^/i#v3Sy)޹1 $d[wMmc uTP@c1%,rw}csN]z*\N!ҧn-{<8} W:q!bn1ƘK,9FE]RF=0q~䦌*v#Iv[E^x|i');ԑsZh 4O~ clؠI0e)$l.ڗym͈'@qc)420oua)-ѣa!bTI5xH|Z^b$=2J /+'#C6VTTn{g 5 UbޢPILD̥5B{U|̆6HǸ4.nx B47@TVRZ?$l нzB@LHR5iRtY﷌l0R\m0bK4=&XB&өԖ ?{8ZlLRTa0Q%toPVy 5W !DwWxhv2>cl:Te,o$RR_]aXJԅ{w6Ŀ3U/\ؿq|{j5ՒpU$J(%f9%ss+_dBxz>BBjL!$AXLbTHd/kn}z#UN4gˡu\G\ HOIdÈ2Ty~<#/;Z1FVLAR `g{mJ} ZB< .,Um$yNٍd| =e+l2 h L{h9xps^V: ԋ뵝DDGL7E7ԡS Ф~ںx(D%K~CIZY!m=Ai>g4rÆr M e3#9١c @cj/5<̈́|$BZ  .Sq0|NK1y$CQ)24bĎ14Sf p:5zSd-i . \qxDFT@n)æm8}Q5I<[_ZF|%Qq_{J+  ihxo7}ϋjD2%x}4#pCn8#4!i 9d;WP_"f|X^ CVKq~̽Mr!dDfj~dBxp\ڳJܛU_OԦ\3ltŎ[ḎvyT+|/2ZƚaS PS:% /Oz1c>Y-e.xљ$6#yJRZVEf4^_Y!ޑlh/l۶3ʢ k{s#{Y~pQŭ ^ۇV%Vi7/E"U3jkΠ5#E&?e{F3{SG;иԍ0$fM̢FCaڵȈ57(sDޝC#[g&"u!.K?iω^OZᄈ]e혟[Mś!3AwMT="_HvI z(8ĈYg`b* =\"=-$Nbd.dvڛh h O{*]yݐVP]ckuyu(쾬kx3lg7"GP챞 );// a$atU׾&BYψ'a_Nm:_@!sx#V"ݘõ.jg"ǽtքg2h@lnYUi\.P[R/  IzR\CeP g䋨h`rV4>^z7⋚WkEkkdbib8O3ʙsJ!~X;qxOcOY/Wlס?ܪO0XB֣f6IS9{$1VhND{➳O}KBJQQç>4#S[ǙeUĐʥԢwl4hV5k}upJ&Ki7Q_)Old8b{%էT+c?yC0IMjO'FA<| ė4dt@}`]V=XFwA3M ~@&rW *\Q_;YGĪZ-6^ϕ _*Z`-DWVeHQ]ܵMZЪF9͙#mf%fҧ(!p4~XA#/_}iԁRu?U"Bk} aY)v$b mu@{B>jwء/H}ז"iRːT3_eٻ Nj;CM+Ξ: ^MZx#:'W1ֶasפ>>HU;9xN꼗v %Ŗ8cv}2L4Us؜6f_Bt˲ҩhݗ ۣeM$KŒmD9H&GŹKń,)m/.c臀.1CG6S *zӰQ}5C4;}T"i^BDEHF',YpLEm^;}k(KF*Go|_If7nhZ uQweYyrNr!RAͭ<- FMUv/1ǎm 79)O?ٺǟ0 (i۾1 }Wf*77̑3l-z4!Z m%?W1kqxG80aCXuaYwqDŽ/*3r.@FJ ܏:k^$O )L74d\\ +X|IqsCbUI ~Aajiu)sIy|Oo$/f},/|VuB㝁 :W OoZ*AHL ? B=RD,W]~{ B%QXcQm+Т짺Vx@6PfuCh8]+j#t.~C9y2")X|)mdR}3e 3:Raniz5@|nvj=2p#SPjDчÄViFJ !E޵f\2 [ƉHiLti|LyT6$ހSteMTA{EqgtP4[0+ NMWQyʱS3 r-Y^9/n%(Ǫ̔ ~@㋆^0%EA$]bWre*5D$ׂ8=s<́EGwc?<֛icLwaٴR 0WOf$3XA1͵0֧7p,t<*{DίՑqb`o5MՆˬJ:Ueㄡ(GJE ֯ Ob|T$H[^[?!т \h{t7WCuPN̽zk8~Zpp8ZJ2zQ'JjE3Fv_{auPV s7Q6*et>WpnJ$Ue~ra3 o8{\:цż1xÏޘ;\$OY[<H^u~R\`eAm2ioȁ¼s5 !\dC#J9D&L9&mgҍH#>8AW^4M*F,lJKj`-}/sƊb Br}qGc8Q;)A ÿB)-76)*=9A?AhaAM]:V..feR׫7P5EG94>kW 3 < ˠq̳dB(eXJ5i <8r'_10%3oJ\WVSPu4&EL͞mXӱNҖ51}V)8#;)`q?wdgwRs\ս6ND }W}Й@5yz3,"I$8sk<{PNtY߱q+=xLv)L;`[H2}] y {*"a%ȸ"'Gcn@!+]-oC mK`p{5+r9C-jV@D1 rVrFiC$XoCɈfaO8۷{f9eq55=qGRHZSWh+4OWzfݬlɨ~&lT4cW͊#M Ɨ L"`\4)&ܙZFr gM?&0OPҞ.XtP8[eʷjUV8|$/`Z GR)*"r6L(raz1gثŘ4?Sx5ؘד'HkHakp:8PAH2-A_W@76R`rvcD8KT7>UFcʯFt̝ԙna8N!I**;@nqKaWNf$H 0Cց),Pr߂K#2ζܗը# ?R4ڀ!!V;L9p]K#MހڌZ;J[wV#]nA*8['1,4}pb:9ESa66A!N8VF8vh3z8Ōo}fL2n-x}MTڟ;A/4E+YjV]9?Iy/x~c0I>Tݖٿ<;EAAo2~oeiWv;<+ V6rhPc5"&>XpK%ZoFDa=}\]':2 6l:_3o/E$GQ7H0"P¹^ؼ9+7c&"6hAVGTDlPFq^lG%@d0:F{B* <VIqJpj}c\hكس44: 8eq$9Ҭ2cPa$kJ€R1QH«qB 4΄gL#RV{ߞ:#ROT͡%I<`)0.^Z[쪉wuJ5Q)RZA-NxԢ[sHgo)T/SÚ{$um/~㳩{:un _'j'0B$Evh =c?2Kh|u^8*GC5J;GƗZGbUz!j0wXy;[aPMo3uxGf[6s[YE]H 7-]$)4cyasi8Btg帏Xt-MC\ 9ڐ%Y F曮!!mK Md=S<>C_2zq~ O}8mXO1L2LlV+gj`%8 4Uފ$.ۓpP!to]I7GPar?56Z7;Xpp_ R=Kl!(֯3R}{DLXwܨю"<_h@?rPd҂sT^dgGl$8h4oeˎ*W5*Ms]i}kEs /m8Ǽ\j>zuּS/K[(6y\]mLXLte4m !TܯgwYCdΊ תW}{WggF"j2|b+󴚽7YQˉԃ]#{R,[HE9`!{h ЪN:?,== haD:aswdV* g(/H޷ҹX9%TXt_>9Cxڭӓ9\sÒq #xAAHpYINu؉- ȶwvȰ$&! Te,T^)r P9g$_isA򥶈glxbR|U-P/zuW뎠T@k+8֒E"y:eo8h _0g=D$3$줽LG?Gy$|MoUou ߉iKe?jFԏ.ހP!yly~hk4 ˽kYDXD&ž.`1y]!Q\ ]Wn2?92Sg1{ȗ"2A\Na]2MK9 bPcڛ%~CƏ{w]S)]μ.-*;)zbK5̺;^zj!2%벆8\4%|s+rus+.!;O|Ҝ {92^T~X:q0a/ rp'nTESˊvt,~ o9 -myKYjћS!D`oЪM[JBQ^q )D~nD@*1y+$6ʵ,X&7$dD>aG0RJ%[FgP[Hh[ԙCvgB !;I%4rKOHw"G]pLUe5>  6)ƪ1Tn{Gy5ЂSKOry;W̞oٷw_1;y8/]sf}y"E>~f\P7=3,;Z8lw:R@$8W 3+j @Ufb&uC56L'\(2M \җnyB.1G 0FH Hx쬟9yH_WK87!u֝%H] O(HNl^g  GBw΁/!^37zVxԟr6&xӚCѽ:8n;C}ԟ5r:6δ\$l7)҉޾/Bplצ$}7} כANh'h tcQS>ELA0B@Q ؾ~r/UUZe;}HL/.f{eLxgE;FZ]!e ~2a+('iOo5ev}{b6?т I0΍(l_upD@B9b%8Ou´>"k uVr9/'8{hyєPuqOěIuҚ{9^„TGDeձRwk4~.,'oLhWR򪄧xJnB콦e 옳nW7cD)͗13|>Zlz= ͬ*0| cq|֎q|`es9/kEf_) ,'!"ȰI,0.Ao5Nٟx?rS4ziPC9UA>;؝S6݃Sm ~<(0["ltdٝԵƸDޞF@%aۙY[OH^G>^;o/Xu89{k|NtFXR,q2Yoo4g\å *.%MHbw &#[K̹͘':/iB1]3 ]d9HKtpTtk%ъVo&NIZq.tzc%E8k0P<)=J.PK_-w0=žHqe5Z~]nbV ~/|Ur9CVupPCC4K iA$2my.4bR vM) }bР\ڥD(ř!352?6aybSgL +}q%Kh˸ o7F]Bq J2^^cAcqՖBd}"=뿂 h׶5g_/WΔgy3T/__\ ,GaΔ7 |Q $s`i8@?`pxϛޖ5 -<[v\ݰ;IFJB-Ǹl֛ǻ>?IîJCirdtyFKl؉='̘,sgBrUM )âVМn)N?K=e_siL U.e\DcK *&5aPqd^]*WOPX6qˤkP9mNo,,xj`֖,C:x[`-Q~,:D*@Q?Fk:.RG&hwȧfgMuJ ̈́k^&oT7C%P ZVqOHU+l1OPluͪAC2F-Dy"4 )>ͼ1}3oymmrj27HC YpK'Tlc5 ;d+ڕ6}?ɽҺc%Ε jȝ|ܐ>/E_ gjN*07rN+mT.'0e0ږ6snN$+ ׁZX®pPB戽 8.)Ysb]0]|`N:[> '>f] ֙|RhPHog+`Cq+fq `oأdl=d#(\fw>js<2=] v s2tR*'Ec|9𮏉ɴz4M: aJT׎?3#Т7_/pN—"Yix\̯-G͍ NΙ(}Dw|ۙu  :\f= ~E%R𧅘n2TÖe0BHVv')r3dXvaNԃOpqUi~L>Qq¡ \a7sQ6KYzB9։YedY]ׄ,I*2@_.dt3ϧk5z7g”,w^xS> 1T+{~wG4',yմ1% ?ҏѳ볂%dV@ϻkE|#߰32gcRC_ybQkr?*T׼\?bKJmDU/*KFX́rE;Ph&H*U%:ƒvrE#2-H CKm}%xLp!ŢbX8p3o-DucuZA$6OdKU6IU/>7A38$v[^xo b{났JYdj5Cn0˥r#&~"2G#U65I.c\Y{\-4Dt94xЀ7 B'BIqaȗ\HOJ%ri05}7+iu *f\z@9QudzbKh44KAsX9O8\9an4ƛ0.ˠ]*DLuHiHbޔ(hcjwky7%B>FP M{ͺC0(%ߦQJ4L@4YIVN84 Qs^woSM@ii*a /t[n<-"Q>o3R(cnH<:J)S!3#9ҍmrR΍h>~uF EBG\ZY7cATiu$h؝n*U` |<i_1LIi%mwbt<i;k޾H tF YD#mN T)l[8ۋMcۚ*!Q\} רGQ<ܥ.eC.-m>MJ\Zm58 Ϫ3eiVyq@%lruf%WӲV8x6҆$%9gO\_Z]69!z-H=-'rnq7fPz#ϫ؍di/b ^׻B 7W64\# bsg;Pj6FIl6h) Am"$t=݂;P s(nYYcFmC>m|v3 NYp}ҳ#&- oM-lf#aCx&ȦJXGʺwGQx!})5`Djmit{f'}X]Yړ Peʿ]] ܱYfץCWlAGchyb'yb (z QuUE7ʄiHTP&9P߁w la/S[c ' OKJ1aDP̑@VO^5PdpohlC:Ȗԙ_ϞKuj#:\0? $mR 1}w?ȯ_b'*"Igo)q~/ _B)(AX #~\d AT::Ypva|U:mru Gt-’jr'>^̈6UjF"HlSd`|e.`z#! X6?1AG uM^lG%Qq$pC>4j51RJr-!U@Cᆺ|;?Uma[ t~ 'd"%bCSWs{( QB 1JZʃ A#[unw[t'X H9Q0icκޫJ%H˪z/hΎN5lfgY@܇'@ע~/% -<[MWr @,'I09ﳐ UKVxpK@B?@{6#(v5B0>1[o)"a7m .F3ۙEsR. K9VyR+B)e|Wn.T 8ĬEPb6n,sitە3[}_NӉ<9+nPQn.vCpdR*G$-kEB֣Ww/Jb|A|d;8{, E;)J/U^#*Jf|C~c5ʘ}Vc'bstUk2 @,gѓ6l 5o`"8CK;¼)%΁31SϻJl< ɐ(U \ohÔ9xeIZN_ heZ8,qyBsCrl}7_|9X+~ +G"&XNb+km><Ì}Yi$s8:{vpM2uCP eO+`Tӕ MXLW3T X5.>OlzEȀ /R2KztK?H$Q?/Tk%Ug֬C{Al Ejlڄn,H)6_gFmV&Ȥq6Kk35GU@ɝmڒ q0M 70Dyux"kq36^GгA6ͩ1pGJ*XƼ!j3RPc?.mS +%>)aCe.n}rW 0\Pc{%`B>Ա'{Ѝ#;7mun+AJeį ٪j!cZYnr!σ!!: ׻7 1؂|.\7GuJ8 :RH2`+|D& 6T3a313Q:.z)< Ѧ'k p]eπC D8@G\cVI3t2c%ܗIv}>(|#9_E F2FB|9A`&Y 랝E电[V&SQ:X% 8ͦ0l-Dzk)ךHC*ƆL[L9ǖHr+B78g.qmadN&J3fq z!ͮT#/wo*}Ԭ$Qs0ܵ.,kjEAIhղƤɐ?~\A6\̶+AS6sTxg\^!fDW# &Axc]@]ޔ2x':*ID^}dY)r,{ ]$J;ӅcːoqVԴؾ(lƬwMR k'cBsa8ت hyBtI,p@8:ӕJ_9iE,M8OyթVvP1K?~D!9>=T;{HG5YQqgbCZ账Giq7Mg T?mIJ՚A'AYBBRqA %WE$0A~WKO= dhNMr7ý 5Q+umF^L&"H ZrI\n&(4iZG2 dBŻH3|&n<7j3 ~vop Hr u.lb@)E /9.dE|^bGl%KD6%:Q6Sڍ[ֆ@9SZ%ln]w=[z5X-3{HA19G;\p2l3/Fl;E 暖3f`h!V]%lK׌:qV[ ؃ʑD$pE.HȵXmҼ0ԔUQzJ,ޤ^B*SYO7H0+yk&AUd"ItQeE[ỷ[m؜^Tu.e ExuܵYNCi IT\R h0s`lbp<<oq} 7W7NJ?&ˉ 5׳@Em ×ݵ>uVzOJ\=6@Q)B)Y(:Z&JW}*LS.pٜa^mbiOQ&tdKKр=s&~d_RƜ?f]Ҍ4;%JPtsi7ha=yMfW93lSeRix0 ) (p.m Ng(h4DUrq BEW3=67E[Jx(txIoQӜI<`TlMs_k V:PFk0= R{XKDٮ,ޙaTZf-XHglM} ^(h-X!唷>ߧz߿|#Nb7ayC9Ȟ+~579[4h? oBIf_ @*@ZP>UG^첄bYG[7~8S{[a$PHWTrT7"H ^fqUhx| "hEk2VJn< a<$ 9s_-؃+N[7jyJ!asIw1{Xc_KJ3ɄOș瑋<Ƣ2(t&Uyo5,49Y<ȰZI`U~c5#!5]L&~V Y>9p75G SMꝞk|&UVoyxC G9"ZTp(vi3~ Ɋ[ 배e6K!Zf;ݛ"=OQ26>6fFO̬a :|[(#|Ŋ=9*m HNL6(tD2Bg{qwP_m۴[t/NVBɶK ?2[ՏR25͞BƨQe-؜=0,G^ "鴣x{{λt'N\ `:'HL9 <"e [Os?Zf_!/)~Y} %ȰMک n{!N(FրNfQY@"JjenɥjҾbɾR&r25nFRj FI&b4wW huQ&Eyh<+]rxX8(d|I6@Nj\v_9&Q22#5T㬈 c;$HSm`+y#?Q$d3 Xi4&Bm/N-:'X4`"Fcx Ƃi ,'42u@ñ(NGz5O hg_蕙XMSP;nDk,Wy'yĶQZ\dFrv}K<̴.Si\b)H:"]%$ thC̹Lw`5~cOG>cTisSbCuސ6zI`.NyqW6=xuWB;4rb-^(\\S0SAUJXl@Hd%-[T ~8*!{0Ut &q$ôk2B& Pr]gY'5٨U74Fٟ.4g%U7 }6` n47QU&iX%ْ، '`.-ʦ=)-l 8ZtCr޵)_u[C 3"/DCR}jN͇k14 9ҍLi]= ݒ9)gs66lT0e%Ϛv *6-'@@Q@4)s18Q?*[. c 95ǚ. 7Ό.D0$޷E=Jf~~LRDơ3dxJ2x~ߥ{%WpH4gX%XQ1 h2-:q-2CgA'7 n `#.w#F+D*)dZyB-9 6}T{vty[c#e[yr6PDccG}8B8L0r_o_?`L? ]9>X_&u8;~}kn(A"8yn)d&3VDXɰanaXd9z|SnDJ?H9j}qZFɍ~Ц"qPy1GV/+yE41hqXL9lsRS G3M7e ]eR,St6{ RxZ\/ 3h>mzNeMPj#}{4Ţw)#-O_?yw'*߭m*EA(mm2b@NY qUk&N%#= >95fp>5_4m .$:?n4*zJvER:VDTo b%ᰟ曆4u?&d]LJ' CuA?V]Dƒ,5t00R} (DI|hB[n[ۭȐ2@SO~7 @ , )>Rz{ڻL/ZSݠ]T:94I0 I_oR*J`zin%iSdPX0n.ϢeyMӐ*rs4)*e2xԍlӎ/EXlYɸχWupzʭ cyԨF2]tMY` Uߨ%=>;./'Ns52ЃV3^aozIq!I5Sۣxr+0{ԮN Bz40"V'|0d3',zi%\c|{gJgt:bM.Mq f[!op00|t~0@alb֜T $?gB Qa\M0Pnז'+J3To􆊂OA/-MJu: ٭WqtnոwO[@^cq#<yv1US_HStv( MgIݪ˟O֒HAe++3kSc<#aeH \Ŕp pηbO=V|6`kq߷A.8@rco)#, UKoRR&*y "9"DCc۰QZ?NcFju,hw(2\&By~EaAפ.U*V脲>Gŋ6nia.@Ot?) ފxԇNn2c~{ڥ|%mƫ{@2]̅bޢ>- !ΑEHR+7@ǝE:$s#٬>hHk|yj> Dy~vz*^V,O8[95prFq @?_{ AuIg_kGe3v#қTzV# ,@6(PE0 vC,%OBU"T^Ae {9Hs6 uP ΀r*< @:Xhi|+K)wA'&6ELg^,KiݨlvB95~s@x;gd 'av[{5rKݺZW.[UHeO 3)r,4gd, PBTf[ 2î#u r1{cچ1HJ5*֋GbˈPd&|锨dNu7{W{<b<&|׾`TEd Rce@y `$J+E9WTy1upaO|K4h1'67QQS,zS>nAʔK!wʲEYOOFۥ[lt[dZ>1J1\ۃ_w{&8M'ւb"_T|bۊ>/]NI~;yy8^R8cuFh;Ǹk=isepfxt\]("Uk̘~ug8`V~_t@"tcȧxaNT)1u8湓0Q`YsJH6,/w InPD(i }1Q M+&gYH^s3Kߖ# R/"˔Aɪ60um(4n$,$ 9n_=p<[zx|sq&5M~z{ժQ,_MwIQ 5nw䎧WonHd ½4~P/-; .b~Ndb آ :OEg`A/~!Cyyji+Zѯ:zAjc_[`ȁ*T/֒U/P>QxҡRPS•% PGV,Ҕ@yIJr2o-jy;;KA18>eց V(XvLɒ M?@u;yTV faB3#zB|#i 8Jx8/Z_ځ_X9oҸ1$7`7zm`fP+dv9?G ᆁJ" jkg}Q:CX󃀻ˤ3،~N+&*k̛hƃq)8\txS7FI'jWc_?JcZa?xL qyd#G^ Qw[^Oӌa#X=f[f3B+HV}'+՜@K&(*_!# O_-;4ݸ F_SݳVh}YwT3<ɀyEftBCr ԋSx܈P#=tjo]D?9e.H b} c^0S}93bo*PuӽpMz;(./s)$RW-!$u\Yd%m ďHpo9ltBYr,Xh j, RbKOVyLmFN8AX[뮷iJL<5qJnXq0b~nHtMQ+5F#rǂ9wT_Jo"2Oϑ+x@>_3yD w:&jpj}#FcwESsd $RM"6L 2Qˋ.~phqKƺ3ӿs%:%(~2cGQ64@o"ϗp'CE[{ZqtɊ=`9U`xyjx^ܙ]G+y*ejx&'SE.?[AhʢL>5Lp"i)Ҙ"%3B'*?ni #YNV8,!/^$իŹNVkP g -HY*򘀖aqhլbC^ SUc8^lH0U&ojF-ԉARN<Z4 3ύɐBzW>ږ3.]w¬zk_a7$ b-F_@&hhV[] -G~B^s.}WtŪ9c'{,6v=cim@9#ȝ,J_:7<@ES_2/^tMKoIŘV]Nwl E( 6sf5zGzDz7qZ`*;|NKn;( ?cYsmыU{ ` uͫ􂧮!>"Ȟޓ40VpD\BcAN 39qWWaDT1 .ணwkSz8Mm jI5v]$? 欚'z֚4^`IϤAxA ?lr-uLp3m < ~#d)9c;2=I!:4rH]Ľ<&?-WkF73a0]H8(l2ھdSF6ϡ-X Rɂ+F W |!~zO[Nttn͗PX]L OP*g#[@JD=s[x*)Ů6WPw N$|̧,@ _<<+R?GT61Bn:wfN&w*r nlop\>0ttQ]%HIחowqcͤ!m_jŠ>oU5^ \:g X e*{<=fpCRL\UC=fT; ˣ.G 8Z:t/Z-3[?TR EJ꧰mDgMPyK>J²GE\9=Lv0-%wQTG{<6+\WWFblKUf/雄ęDq6{KI/a2މ-*irԵaHհ-Wmt1_1t]BEɼ`'7i64 ?(ey-s~nJ < {[7F|O.3P܀J{CʴWödx\#}LlAeÓD WI=%%{LM @ivAsraCIe KD>duH$ka}uC0+g4 6MdT΋9s.2(' %dBVugpMԹ,$/k{({yk#z}'BD齖m6CjsILjpѤ]=ZHyhtz@I6$m\D5|~;R%A><= B46P"]$ y<1_]mRջoZs070;]an͵r sj[ޘ5Zՠ6|1QҏiZb:@q|G{w)A /Vׂ<^!cW|nğ6kD4<} KOs֖,KވۓOAS;̄p-hL!ݗi'-At|kJ7La IF9djICkډ-\ Ю-5KO'ZW2`w]rNT$E+*m.|XkHCLR? mQū6:_UW|sC@q*)MQ OGBS6h|D$-opyOjB{T>`u࡯+*=p;aWXgy-@hb .*ߑ4`i]Pg3,T,I})%k-MRi_uJ4_[ ++\ep*+G1}@ -'%T?m fm둻D u<;K4VACb^ I%x2v_USN_OwB<&Q/rǟaO(]McJͧ.:wn2 Uu?ŁvCJ0ɉ+?%/-:=y?V{;PNQjX$Qnj8?!7EGTtKP}$D/P^IH}\yTwcRp6~fl{&n~m%]5Sd< c$('{7N<iAe!?ieۘ'Fx%OoE #A{Z~+ݭ 7ޠ+HJuD8d_T Zc)k 3(RAF {d0K4zĤKi=]hO' ;5r K7u^SVK!I vp-0' C CI]V's|EO'dbU޼=yGZʡ|q39N2k{r̽s;C F?. f> p%͜ "$)XcJ"JkXk4A׺"qaE@!պ[t }PBo7%h1-g @2_a,w2k0`Ѕ+]yZx$O1W|0纄^b8#"MD&\%$ aDpbAR|+!gr &;Sai(+δ ;TEc[HƴXs1ۢ/[S3d[x) DM)=2#b.Moř0nuI£DxJlplkvބۮde^OU%jW͵=ߣZ|*Y P^)RJCwo8J(SA/j`Ҳt(câj(t(p ye0>\ikj\i˚ۈ7噊EEFUx `67U~+ dN(ol}a/rM;V4j!+͵8VHn6 k2 &e)L[5-e;zhC#d/#ZbSx%UO `azFݑvD'=]KXޫ#co-H !^%-ʟ"9squ*%wWض u7臼@Q` i֟I[<;l6<>h@hJug$l #.a\zKݒ6?.I 9^lt󫼾.k+|2e{~VяLi;i+?DWͨ1cfR+&V]P+Nh,JCb٭CȮ"/ja?~L P$+vK]ֲ 1(1`L4FÝez)}G>k&3x*k2HoWpE7Ww A1})3=c +)n8@kPܞXˡPgS(0-J`KAciF+<̚s κ5& zwPF&&DEy";WXLt QeTcӻ-XE8 D)xnh)Fdnße ]fbuך;`Of*K$͡ Ε,P:r8*l:k*)Τ3~o*'ya+M෮$AT#]8)sh?tl+QZ+hk š r^ G]:K!lU^MԿ 騁o.|Aq)t&~jt&^"G( O86S`=2ka|DBS$])+JD߰Ti2|*KT0/5F!y 5Wu"ہs֤ic|oV/ д7}R8g/ki;ؚ@ح#˺0,;[S)|b7,}2/rWll`7{l8{ +gxA2fWr0PL?=eְvW˚Fd/~YƹQ|w ?h|~eH ߂o4m8&rpr%|HQTWY &y'$q"@L%akE%$on'oqzTtɞQZNiA8pfJt"c=冚ץtXC7Q3hPLӌ@ Dpd'U:\ +g܉aw~=#im']KȠ@K~ΨS} w܄װO?ChE9~FE@@,DΩJGcgZH`oL~C.Œw/Si{ ٴ;ɡ o0~ՇvOGi!~Kc}lUm%hnfLmveT vzv͂ۙ(%QOs,?4,X}vc0ɼy ?OC3IS?]G@s/Ƞ5nύ%=C k1İ!؎mchwCvG\'&qLknH Tbm36z3;+g{CO_䒉Ə|Z{\ #^0w5fh%E .rQCF?r<__4uLaF; T 0?AzU9TUDN$Q 9O HWssR48Ko_HG,>olz]&M92مݗC4Z{Goi5s9(,6DByGh bIȱdNʒKPe.d"L0r2q/S]U`ji]h[bf rJs0y(a8Xe؋7Txr& .쿬' muFA})<!!"K̆:0oSpdcְ+]Zy`Nx.m@= ?_5HXnq4ƛݾ`w\[ͼ *y:oRv TL<%ާ8 ]BCg 8뭂ɋ8VA!Y~P>7%Db? H.Ҍ;j.W|JJ9Ղ+ |A,Oa}mb*S1OG.b8 AlsFchnCK3%FLr· s bV*/@_mYE$ |bRaO u"Xum#E*Y)2Ag. Щ[~h+e4ᥛ1%ɀ~.OHyrXYZza=؍Z0#V6tQ/(icsPsB :HG~W)2Ifiz)FTs7aFW/_*htg4zŊX5þ!b<TsE|}fHw|xprַc_mK',~ XKדixLO7w b1OsjYbR$ZvЎ'6+IƼ1] ANeo+~B^æC#C]:kc BKD edr4D<#VY)06 }4c=,sߢ1WƘIv!-K.%0[پt'c~0bE2OT왱Ovf^oEFF l*e?!Z#`jweFT1qQ)'ٝuWk]%q wJnyrep7ɋVaxՓJ sT |+[)vZXwprC*?@qadƙ@dl<I.^y"wk<5D ZJ^Ъ\83w8 @Nq;s5q%C*&)+(MR::zq߶u0 ?/NgC̭}ehQ`E]#W/}ӉKW. r&48,jSގrT)*/6k̽ybZo vO ,uP<נ>.ә A p"*q)=fc22 2'k h 륲 P_'Odҁ[IwQra)W3N- tǗmm<}#aY{`p-=q%}޼LYTDf9Jd{iIZQq6{}.rGQYvrTPs2v/7nBU3bQF1\y9 :cC>tG~I='fh]$Ρ oCm9StAy ZzyC*!2(iՕ8eA-aƬqډNs!Vq ! ?oBN1_D>ʚpXBsdkTo@Q-'Ygr#u޵1ta7mwsjݵueA- `1'( wJh "r{fn|O2_CQJ+1 ?@t37Ʃ3&M!`` ؍tI QK jA!o;=H0req5^'ni il"ڑ:)vȉJB㷁" żzLGAo"#Qغ"t\d J}oD.飵}6(qff$a<_ :@w 3yt+|eyӯɎ{W#[W$6N@Z:HVi*;,mslD8\2(4YBS%Yj'Uؐx ę y7.N&oI%08W꽗w ( ^qKFmaX|'5ScIp- TW L,rUϖh?qM% ͪɛrO$dvTõ9Z40p1fLeIO߯=K^HhMF%&B%:;ܲ}9:ye:_!LPr9-$~9X,G %Ty=ˈL'M-B|JYplYgb~+v-STvP?^Y)эgێ/˚!T2= T{a[`P~@Sp@QkVhxXEbt'6ŸX)tKhD#j_?g>2F9|@).ˀ.94Q+`NXNH`U␻ +Ujh$YnKY%C^ gZߴ8HՊm%#bSq0U-)yvF'C <і1\ʍJX7wbOyY$i՚$bwCIH\"/گy1!s{CV놕t 4?/4>2M5}IddwlU=Ǎ9놥9^f:n .O>1j=VMgեVZn>!d Ѿ8ݼ`)SSZY/:k}S,nQ`H"z<ꇈ 9PDxz{[oɹ)#TZ䪩;3aS8z0ȁSY8ʑ`!3-¯X$=f$ 9)พ\kw^!$#avk¤J@Q3N-= ,te|N1&XO;l;4B5mT T>(3"T [̷1&H<ڷ!QygU_$>d`g5nS@hXOܵh$o\|5l+׻lAP_<2s-6N3/fA*Z,evL1$)Z%"kpO0>5 Hv׈!ciCaF UP, 1nm8 5>OwX=~`?–?Ch|b(iIUٞ-q/?dg k"f j`z؆t(&=^Yg%Mt놕MTwý%dr ȅH! xKF&T^sǴerU]EM,a;s( (^SW5i}d]|M6'HzObY"]%ʱ?vĈ 煵-Ieum˨Aߛ~mnAƘ![5_@I/+k Տuݾ6nc \׊̈}X(8PwfzjʥS=TF( bK}^QcjN"a("V`Za5CZ۩' $~ro>TwY -C>^>[ʈݱ\;L=a% J S7$c/($ԫ>Wbأop],&=fd5s2gvcB$x a G?? 9q(m..4 "VvHӥ'X[υA^IeMAJ-]T!> Nt㝣.g+Fp4^*S"N՝5^m^: ٫] r0tsD_ HhU8}J/UQ늚{Vo &qϯODGAݖ&-l+M3"[B뱎|ܻ'Yq~f0JHV Мh; Sc`JHWѰ}ƾ\mG+nB-KݻNWeOvhn^hL /9hqwbj 7F :{mÍlB~4SIRgNwɮ/|t9700Fl?(v m:}U@[C:,˛C;6=Bqc@K%^}BSYz䮢=ؕa @ {&Nj[aUv}Jo&0ܤ<1fb)JtՀ҈>J`F@=nL.Ó&T褰7 eR:bla\8 }T?3;o6̢[cqyË4W:&P.hckS|łUo$3קgܸZ> Mo@&f\< B Y}q}JɯXAX:%!#hC ј/=Ϩ>d 9}*`vdoVE $Z@j -cD\mMR?V5k_'k۲VT @yg&b"!R”#} M"nl;Q4skۊ#Hk&yܯw" d3 P#Tϙ`SixquUL ;agmqGH#,>*fɏ:w1c["A5g=kvH#m?=~n FwUe/h[]Re>-9@8^oW]2uh+fG8Ig%rQ 8YXn.$xڮ s*!%j 3E kqSls6,ī\{>I`IMdR#1_u7ݰ`=Ԫ.2}sj;jd4F!?~[:J f/!N;16,~② 4Лb5P_YR%CEuzB& A.N?FxEt* &E5.b#ˎ5 DfSpqyw@`:Ľ-Xn_̷$O "ּ wiP?zm $ d1ˣ#UeY9 ny*66r0"hwIM蓻%(s/C:B&P>]4!)/ca}$39VŅ!'[4p @jȝp]PȣMKE~A;"[גyY*vs$%dsC< UI qۓs\jm,#s@&bGR=)6EW1W*G#8]?9II6z!2{`v;21 PTi*S;?"q i}Oo+lYZ,Fsz%`N:~JGF62O&Aq_('wmTA4%Ec7g\mޕ"*} wi"C5b7Z5i#&Su@O:YoO-.|7쓌Ɓ"L+Eyr{3EDgt'\ݒ"֩Iٖs/ofn_툞!z4+ {ca(00sQ}d<}tz%uL{Uy_D"V+PG*#R+֘txմVĞk/5kJslʼ5r[WXr|^V :V@@3ݮW*znfhOu:0O $˲"j߸ξyhW'? \x\Y)\J%CtB9{Y{ 8v,RM_gHr⼠'CU&pOFfG+ng3^~ծ;ǎ%n˴^fKlӕ.)D"C65!jdq_*!_]w(DIҊ A1mF]BcH\A#_ E:O+,t]pVh~,ő";C~8ЬNΥ ,~:GH#fhi|d &礤j`0bIVT 4&&m,L'5%$:)^ع̶e` ]1*3~AYwyxt3on N-HAKʭ.c"tP6B uLAPjF":pNq*2o^^v9P'މKa,חE-*UU՟BG:WbI(q:|7CJ;b,Le!! cfBGZ~ qW^}%i}L؟hVB0 P*:9{P!1{Q򒎋sqX xC8Wk(^5;K o%} 3b~qIv8׮󥠦֚@gF4Qf~i ||YF>nUa ~vn"TgXs$f܀E)npf`qi+MxG2#w,8GjO2rڐ\$3/P¬ow bf} i~`I q&迖xưOٜ r]Hu{KطJs{dy ԑQ²4$ (IeS; t}.7 !u |Hk({oڋG&3P$: ZqovSDӎD0"45Օϻy ?)ZE({4:%Uv wEGBC'Gx8owO#0r}t/Dы@1%A eҦΙW d+6,iG(/ VMdt>EA\As;15ilVi;jn^xęA_Ug7U kӿUV9"ůں?z[ ~ wSo-kuz8\Dۥ wOx;끻x_A% 5Q:/x 5GY:M @m'n {ȑOÙ7$k?$Ӣnrts'k(".S=rl+mQ ƞ dQ7r^y_@qE"sWuh34N_ÉoY\{haā/`4=̚?~~-&xAѕ Qi H)=3'SFC*4n:'= ]bʳQ 0_K)Ool},^hj{#C,rأ {xL'ղ@Y 9< 0G@ujk!z#vgA+.+8h{z4_wSt1tzLfy3LJ5a!t?9+4~C_X[ ",y cD@ov"Xʄ/B2@_Fg=Jfoܧ:&Q_JkO2Bֈ`gU;euE?'{"DI@4d#h-b#~]|tE0(_;\LuxhaTkC`S00\ U^UD}nGpVvg3F01W(<}j+ZIj'hQVV(wRыtV).sD %:R&)>eCaft ̢FƧ7FjFpgαĵ!q3HoHMp+jf1I/;)xbDSIuIF#&J[*6m뭆Hg4#fT:Oi4%kXP>HǴR) ҐD/8D: &j谏қQHP9%Ǔ<z89y;{4:x-DG2IԈt)E ɷzDrf#ZwtoY>Vbَ`]#0cD87QsG{nYnmZ0%<бIԋۿ@~h}>S4fݫyhK#f,++ɩ/4J=GqxunqCrU+gx~^EÓk`uR8;ۋUBsK=<"$w]Q R R4h=ơM,'2P+dVܓ9&'?''Nu4EbwEB!'yqoߔ!Y;` 0Ƒ1\ +W5xH"; ]5G?E -54KBjAz%H0`л;`&;e=9%;09VXWxo i”aóֿe_$za总ëDSh,,G-X"7g֝O ӞyDDndgOר%+"YКjjA;Ȍ3ǝ/oDRKϲj4ORQQ`ML^1u0G1ͳgk0з-2.\]pBI=MLhk!i{pWHWS/5,| B3ky M*춭`VrU~qÜ=K#CrMٹp8vmϹ0Ucxl-2Ef9 <-poZ0K,5Bټ'-L)R2.Ƶp"G.+U!962gqzA4"u" De'0vfAv$\yu"jR;Ĝ%Yyac>(R/d?;SАM:aL9E~CZYC#c:6{1 n}(hm^q}}Hs(W'Kd,EA`t@ mZ  qkR` |vZtrȌѷ:0&Eha紛Ӵ}鷊ᷣ"kφ%.v͕hP T^\p͉^O.Mչs#pZ؉#$ejB- ۬z /z 8 =?Hc*>6'MdZצfrIzG6/|7}<፣`-Dy7TQsC={%}Dr̢{n}X]i,|ƺr병3⎻5KP{~ui[iU7#**n(77ʳWYƌZc`E% 9s,Mj۹:O̼+Ptp$#:By" XJob "DRoRiN34=q̔BGwT=,0C"i]*˙/eȒ?wE)VB/Wb۱-#p FZQ8_Fy\ɬq6Y)X#+ϒF.qtM4>IdZv.9 :ȞI̱?W8mX ]0D4_[:i`r %SۮGS\i3>wkVC성l z1J5*~0o*Wޠ$ z#nvgnڐ,G?ϨGmOa'FN:&cEJ ø0?4r^9H*U2P^Q'# i.Uz1ɞAeM5"Xk_ juz9߫fb{m 57])8)>݊9o7vo*cșۻ|SR#[POs.Tv˦O zS9m4Su] IOwIG=_ЩAA{^\vbbIQ) ;Mzly4 ꨱCOG(k]1Yx۽x>&{Ԭi`@co7 T<ﶘYQ``ݼ;չ 8웣{F,E+VO]cǤRҬ$L$6b.6ِYut=(b"ܷQ,T;rq{,f 褑IIjMB9W݀`AG]Hs -ReiGҔJWت]ZEaG_KW)ʟ=mZEmj,Qu/7Ew($jڇhb=MgD7G %iR%-#&P{@Tn^|yȊtLշh6RRP TEZ5Vsr@ ڄΈu-ҐRAJu P %(%,\$PʠUI4s'ҾEGbk yj#[LWLQK4c"t'9B֌u:ڴD8eHu)<˻t+G Lde7zt* ϡt w'Ll nxJġb;?YZnx].]@ 5M1_zjǫ 0fcK2mf}K3zxtTE۾蝖:^Ja63;ap,gX­> f~ O/X |8#~{j{,QoK1VrkyEHLA⸨{JϞ?rrょnR L׸kQj[N>)Pw>p/jHZEeEU5X_"Պ/uKjDe9Q%mo2̮ ͖%еnዠ|pnŢRJ0^/UƾAa:e~JRE~2t6݇)!xnd{`'Q5*+ ?٤M> yhGHXaX8lJ YI׳Kک%hƫg&M$N'^',؄N'rRUb*Yٹe]Sgs8@!ᦐ+?~T Wa$3 DQ*$H4C+4Ɉp( ElG 9t%W$>ҲՖA(gGj 8SKF*ӷܔ ^>p  [[c 4$g."<+ QJ:]hdp xgG7Y&KQgGNPLGg9Й(#z!PuqtW; &hnf칰A=q$OM$d;oܚ[gQd53ڻZ,=ֵF"}4 X˾ۘ)Gk  *71xJ\'ߢmF|L&-j1^C 9i} {zիTzmT$N^;#81F t_㘴5\2g n/ ƛ$\2"<|b]\7cJ!at wv lnf#9XcA9պؿq@GҧUóJ+NZZp tOu U{$ w/o&ah{$&Zѐ d*~U G掲Y8M%8)!sB s!TAx!8 MУk90m+cGEa;/G1chXl م598jhO}! |a-|=${wG>pYh{s^lAa#jfM$7vB xt#TVt"/uxzhz m3~8pRQ̾}tWz(:ۍVLUШV!;Vq rws>\Y,@|(JI|v-k ?!QyLj؅֟VvG_]SyR8Uo?Hjv`x`'O+K!lRx͉1tugBQSB$_Qԣ"?du +2e`PBJ !+ؼ%lV}x 8Qc?j}B^IsyonpÝOk_Z |4Ȫkaڳl}};J87=PG/сЁs%o^vU`AWܔІx]} ;N{mք& Ӯg+voR[=n'VFM0߈'D͹z ^ׅ+wt'kBkԐUUMt8yנ> I,uC`F8sԝ> Szلo@ 7s)r;-΢;'| $aWr2DVoZt.Um4.|@k7 =ɒ3xTGMxomIV9hVGUA1 I}2ojˏU=LΔ a6QW#<{N4.Ks{It[( 9a)0ěy.l_7y(H&PK0;ZU`=YcW*a 5ppvE-@B[S/ w$vJdk7wHM&Õusia6* dp hObEV=QApл$HoeR<>99]֒gKK UjOR_k)iSm6+, ّ(H`I9 _p\kagjK\{㍔ҫɫ [i~+K}WQ\%n%aoi1d;M`g29kF߶!u/ 8dƑn8w V=E?ywZ%yŝr<.XO9yK _p:HX'%"]Vs0Å:dx%9N[wo3$yAv:n(CӃ'=S` :XUC87}#rV_ 2C՗"c.gԲiSv>IӜd>߄'i]ȚSywmS Wɝ'h`GotT[T:;Y,{+n:j. W(F7LWJLeU w$fT)#p&[?~rޅ#/7E ;{ dA-*)i`Ц|&m%1 6S򬓢2n4Θe:gִLJҏo8'ALwK-bژ r_5֕m[(:7m]/nykUcE~$a g$=K5 -ȅf7PVup-` n6M%Fa| ~L .ߧxnt6k_.VrY:7* Ay%uD&Bx=`On!/ M`۾| m(79P}3̓t7^| Vo1&R%!p7~<:㯢̴̍Ii{VZa2?s)`vX_ft@&*ogO*#w* #)̮k{TL+eS|IBNiNJDŽTmFښ+p^D=eAR@#P$xR.AQP*M%.7])Q< XbaCy ؘu` 8 -S~l0 ZU]ۑI|ZɈPܳ9fq'/qջ$S,4;֡)QT-GBn6b^̈NDq#C%H8s y^zBd!Q)" ЇJgϝcXQ(I~oxCXQJ5@l.Tq$Vn 1k]A:ϛqD!+ ,P~yؕo\Bέy΍Xa0Y[Rlixl/hزRR H녿gs_XMOz=joAVhOiߤ_͕pzWr$g BbaE5ipFn{<>_ٞJl{uPs&̔%&}n۰*TOQ1s25C",Z T4\+5F딧_Fȕ#0q3uVgޢ=4\O-p0 cשܺcy6sdʱ%M?%A S>oklO@h?J5qj]ۧב!AA@20PP m/Ep:l6@뿄_Nĺ};NKR@gf]oޠk./91i&i> .;pހrC70ӄqzd_SR0' B-z<(}>Y=(XӲ%6Aeq YmD/ǐniկwZmrl_Z@R\9܆dr`XB4#\.#X 4ϼMXŎW) ԕi.,S[rܣVhRk.S߯Id(qctom+Vˎb"n#swnCBL@Ǚ0kgs`MtIug')s͒)8L@r*@]"4o,*wo3'-)$F /.QGE1ioLxDž[2\km5'k>CH2 Dq ϫ_R p /E Xf*2Xį6it+%WEݲڰ[wHY,Py{5ZK_26a/xY 0^ sLU*zZu<)*m'qbv0 aF$~}i}`5;,2rlےѣ zW۽ݿNfn"Π4%CUt 7K 7=Wذ 2{@`eM 7z]/]@L7b&v'6X!b!,i3G7UwF4:h`0GaV =R+3DHsrrSe hnc Uxs=NM w-΃ yIfG0i!LdXxIkcIU-krEl *{i=̒G@/{gʨo&7`W3ԱtC mXkbl,%8_L1 B9L?k6Y 0,;v2Zf| I/2$L,=,X:GΒp^}{8㭽SReq^D儨N+ Eڬcp1*NIm'1Wn3 qn!iݟ-04F㱾Ui2*hY6x8 ָbE2 Ԝ_I!ݏ6IWwd zYe?:>á.ŏ8m(9qN*ȬZ%ZV [ߐУ;\}!Oۢ߻[P'?5͇s| 5CW] %`P!P`th!)mxrB排6+j54J1(,[Bgu]c'ըfSў UZ<Ֆ /5x_(>Py+!{ zA).ygјgq*ṅ [{9U6M,DJ; k=63H_4['Y<-^x\3 h-8rPDkQJ"(-ExPOөRvrA%R+o$@+ʻ$ ~+;invBZIH4lkYaVIe, 6TC߁* $jh,V~Ks=`2N\k"urb2P$[+odn8k;Y!oO] 9-\T^aXqxX)\ʂ>)2ъAR@ K.;piEo 6oL޶@I,FEC ǝr |Е.ɨ7b%[8438k)xTh..# ?:nrI,(bZ"Yr؏s%b2~jhf:/pq=teżFvQ/}8OmLd1(QݓĝAl7<6QcIy_ue/K/dW/3ؕ4"jk U &d&\ ԶƧC$_->ldRO%@vl8@\/"|}.TA#^?R蚳@ջ 罏Bx Wۄ?d 5פΥyfЇ*\oWPAfa0wRdw1tiM }.Hgu|! 5c7Z;LwXIBERyIh0{㻏~`79 [ti“muۮ@Ø,M,ŽX z-:iu՘\Om7$Yy3Hoe̬AFX`RJ)&N f%0VZH81+7`{K}f#l:WfFu1U5Q3WUy2՗e,qG+kFqr+#?:e w0)"9rGDyzV)@p3Dތ-"pqbW~>?PiSpT9ѥsN赏G}{֞˅ѱ=µY9N^JyQV+ 7H>JqQ3HsqFOqˡMyM) o;5|R<}UC!}ܭ\2Շ/#kWgyᯞb^5◞IY&k5Ė`C!HvC;H!vv0Y$iz# !"~es%\]{G"yjnwk ]M,N xŪbJ>GGvn*Ǫs?h=eUj/Qi@H2鬛ge?fBmXwy N Fx$ɭq(yFuސw V#zqߎI5߆_ÊZS7xx?X~kMG~iˉ:\ˇZd.|I(M31汄4;dP}ch(jh(2o)oCwl[w*EOs"Ny;WeuW0QbH8x6wo䮭o! >xV]'f6>K̆)Y3ϛ:8Ldh:7wȅ&b(7ӚW r_j'ki}S$ߣWe< I845oy$LQ$ `E D978~HP#o Lu2}0 _ mCc(' MËuQ:]=)iqRޥ {K< at=g,φh9RGB#ݓFi}%+Fc2z=гHin+Ԣ1~tN}<͖Y]YkϜyUO\7ND ONBNon6Y,=7-M?A{mAmaڼX*ծlG::m'궸,?SݿQcq J!,c-;#C"z&rF]=֠t(lʣ{ǘ]d) J0 4}|NN}a5&QH)&SߐDZ.cDd+[q x8iЂ[ӕ)Ȣؖ&mwU_Qre_ ]kC Ʒƹw]e݀3+~ܕu>.nK,j-XY6z5y_ƀ&( Y$|ixs^P&^Mv[+0ŚT{ŽhFThKN-=N@? Zf/\Φ{ac J_|P{ǏÏ;I+6 rB;ŐOT\LU]vCgIj(:Hbhw`у mgǏĞzddyUg,B.uh ]@!p alʁn֊CnW#Z3^Wq&K,_M-_-G OY̞zkKB4tNslL=_38GVs-W˓pWf°GUoV.wiO lQEݾ5+dI<p͚ N>Z{rVҶWG\(ӫޥ ǁc #S.`/ᣳ0XJ :W)YI"-+AJ"-Q2MLLãh[Im;Bj31c}Oو JaIF8͂'LGwx%B߷"˼Xfa1T„KY6Zخl`R22]Uf)\/,TSd-:`M?Yss&o\'QK1kkj,,=V$ } @^VZ$s\M|Kdi3`ŕ`tp:kDR_:*/;K+Ƿl;#RRÕ-'_RsE|Ebut{LЊ>,EoU^!1R8k&_M{r, q>VnQ631lYB-;EE*KD9Jqe!̒!诠z5]n-1iݙ}p8> 1a{0K$ FFױW̜z`< fŌO Y7]ۃ2ltƪe/߫[0`L׷B:\60S#jbˤbcy [)= ֝\;bbioLH"׾V" \Ai @J@هg6~taXf0;O-{ue E$v2h `}+ٳ!ֲQ L$k]=$кq}e'%v7XaQ4 RНi}SS=r<%IRDzmSfdq Iq,-;,ome2cQPVqi$ؽS4'f#ɮVKGp8wA˹h:I|& C5J_A#b _oUS}'G$Mx B$q1v!3RNJJr'鐶M[qd&0?̷?㙎;jyzmpa)pCyj15 M#xfӺt(iIC͡*= ? [SB;jS~.FQ.Zu".2!tcCG;_zW)Y2 R s@j_6E4݄[s7@dky(o!js \+{8/;:|[wOƖ-Z+HlYU0L騊cvɎ&G=uj\k!q]T`vnc/D(ăL5d^kPə9l-4^ ĸz@?^&C)19N\-z [P0NE t2yF$ 5 ^i_.7$$`>F3â~ϣ|؏sNѥ{xx1C;Oن,bxJudf`"oJHz7éK@l3syeLHXSݙj^fDt5i2*XV!na6o7Ǿ*.=Bz2pKyUIˆ* Qi8i~hŜ>bg(6/WJF5㡌DЦ*@j7Tʅb\@]rQ/lcڽLbB#Ach]`hR4(YKOb GT 9%;B 3Lcb$~-"[7 훚,tڽUiU]ƖòGz̙2B>?Ђb,мCr=N|6ΩH%<=2|ub]B#a.3MP֓+|ʱHqޒ7}s`rgԇ 0 |j*:2{¥ˇ̱C, V$KY/a T0w-9!9p?5py0t8˜OLAaEu\ײFsDxf{aýr%Msf>'=bIHmL6.Yp I_: CzVNh)9$^ b2ДN? M}h8QBs'` zC]LX'[_dمEW{?>C쐟G)ZBYFy &9免}X+|A\ |*9KdŠ*lҴSoRrs յH 4En<ΰ"~ K 0!L27:K栻+9Mqg/yfZ J[RiT˭{Tx_R?w=QEnW :8Zg;HK"*m9CI<6`6nOl=#?m'(zH CeSʟƺ_uY7nM)}KNv+6j>} k;VrsgA-XD\숽BDf$yoSy&2id;!{%I) S"U]t$|f˨/U,۱-iyG -BejźQo7v gRBAtk&fy3['%S7-=|Per\Z4|v:QxLQ 5+`|L9kN돭' A%?U4zfZWюB0!Ջ!92enzlmhG>mf{ j{#M6Q#V./M!GY.69JHF;#gؼ^6<]iix7?;yXObsXyXz,ٌ[{Q//4 [aU:*e_ zA u]kbʸW_k բ(Y}[~O)bZi%0Wgfk ;lKv^ C*!?oGb.lJQİ#=(&Rgj&[U'<$py/]j=)IX&D4=n82ǺZ_F.RZP$5}t4ڱ^HpzIkh/8?FƎ\:S"՞/ų5;`#>&?*::ܥ&HS3XP5vJV0Ql=C:>C&d^åV1`V R،G;n/*t6ЙY\I$ $bIJa,wUft cu4tŢ3u8qq7΀~&&!fڭKSAc㥇ܲm,VM{~@-+O׽O Ƶ7ƌ&%Jg  YJ=tZ_fdDU6itybŞ#UȀ~, ӓ@O؉ABTz N'~\0X)T"z/ n^a 2r@Fl<$I2Nm!ty} j{6 > ςA W[P$ksĮ@%PUə9&>D\0>In‡qfJQ0%?H,eL89b%OX?x~E pQ)8|!?e0@ML.\nS?\_|bkbHG8`29]l\yKP]pe>T@VmГ'$įD"UBbL&.av[,Yh {PӀBRZkWF4ɾ#[@֨=X_ّk64W݀-6~i\;!㚜}껪<9K~[7Ґ{\_eVqðXޠ lV$?qqIцMv nmU>#jngh*z2rRBH͍$F/= ~ْ~m8ܸF-'jtf?W$H7r0_s.naԴ,uN ᪗o@ iSޫj$n s 5 9(zT['n?z*3I*1+# b;G,?V{F%ᚫĦDĻidW08&43ax=ڴe!1rWhJFW70m?<N>i5R↢xL` 9[z)z!+M0u|wV@Y|Y70|K `m5Xt}po+pEarz5v'g Jrݷ (hBF F^@G HPqɬH+dcϭv?n8-YQ%y^xzFuYQRm<+F'%ET!]BB8ٟ^y#MVdL[Nփt&KLUCa&  .&0tWyIrwJ7?]K•&=Ku47n)vL0OiwMɛDT |smh?w[ZX咆){EyWS)8p ld٣A{) <)4 ۺڅfI gK$DTTEum蔳c/|## ĸWC]42OP(C{]Āv=¥7d sn5yuaۡa3S~nsKb\|ISs=F1|aỴX0_S !u%fk x]slFf~Ed5_:wG\W "M0 >02 ojo`vN_&&U'̛QNR]&Xxoҫw)ܷ`蓐QDLcT& I .G:z':e(]@ڎ\h܁2,"@9]0ըiRE,tzQ#2bAIGcʫj'bV.J M0 * J@`C.DuS mrby"Wz@u%7 ?jHIuи%8?ċ> Jl;J62~ȚKS1fJ$éwԤܸ;8*)w.Gޓj BΦ%!YKGԾ/4HuUW̃I/XcVBalK;'3A560ہCeBYKsݩf42oo>Z~O!^QP1P;/S'e܊ .SKBIVހeBWKy0J~HbΘDl$48'@4>}(Wa#[Դªvz*pn'vk,5&>ttgO28 >}oa=MIY|zَP Av^F;P=&Sw%NpaR;\|JELd2墄bؐ !)8!/(D}5/S~c1.Ŋ?atu^9&'è7Lty#7K͎Nq?EyڅS-pZպ"XBi7m:DC-]@!%(-}gP :-ӻogE ~*Rl%nI As`JaQLeu$í&ٴ\=9gdZE5Ztu h@ LM5cÚ?^{aϗ1ͪh  f3%L뗏nSWcm;1PZԌcσ\}>ᑾpo6r"r͟^%>+Ӷ$:Ͻ~ID)&<ۅ8Mz$̙ d3p ۾|8)k&YYu,Q"fu!bUCQʋp\uy{A^leڸA (6t}jMxxUҒ$y1Fs~Sff]D ;"n!=k-S@ntO%5rrfx>u0>Fŝ܆ )IqXZbD(3Wĭ\/*Yћ533,z}Q"Sgy?b5P>L7s+*#G"\PH@O}X?c>x3gP(\b&:a|%Ij+nKϿɅX],~@F7 3v [REd"^V9F!x1 ԌzVj$: Å9ySiZ*lt?sP=7BebYe=v09@G8%/- eGCi;$x\ҹ(bX &H]8yr:hC^-Y.D ^F1# W܇SN $ggt> vn_WYN4ARN󶑯KV%n`rXR@c61-qRm1N"*}n?%`P Nd9^Y:Bs(9 pGzRQ}G35lYG7RċbkA¥.l(,,kFMnzf.7vWOAbboFij̣pc\-eNl>!U1pbF7|0M#/0R]XpBc^ZH_dbSGK5=:~]6ZB ^ @I=uR$ bMcb9i#s)tƑx%X)nɟZ>k#YfxTrZ©~<oIK`e<6Tjz^srS_'k H`|O,ɗVk.jCRW<__aU] k"`ʌ*c)ˎ0!e%.\!Zڶx"I2(L(i"G +4넥 84Iߣ\C=!&7WqqC W׀Y,VnGޠ%uH5dO(FKy [ОQJfZ7E[!vzɴ\IyOlî>ya}Y>;µ"yfFG)Nsb$'Ȕnjr^ʻ8sv\xZ):%8>kZ:6:ڑM"؀p+T ߨG'X6ɐ-<34ɾa'9#}<ʹTҸo8{>6=[CDy\ePoDJ uuLJϒu4S9sJ.o \ɹO錢X}&\e2,چ`\G OTf̿F60]o3sгw;ݫr[é>>beZbZ 4l&Vz8ݱ>N1IJPX7sƨZ.M{a_fDTBb-qdb? 1SQe&63Z/,9Y5I@œ'/ydcTa#Er5*֡/χ?EI7Dh➂r&VsT7\pզUŞLtqF=%4]ByS݀]N+s@^}Xbkz] O))9|3?߁C别n6C ?}KL)o.|@ɊÒ0b,&f5SXr;6xz׳e;lˡ"\F],s%HiV6FED=jE |>F-wSÏDZ_ˍ}N +>5Lqo5=>kΥ-=.^@cjeTC;$QjPS5ʹipzg_wʒ{|S1Wr\+ZJ(QJ jQ!/Y<7%wV3\0ZS €/]/e 4Ai_Z6w{ˢC 7r$qĀWgrTcM'֚tǞڔ̏>> M|ʶ7cz4 !-khTGYJ911߆~7>UUҸ n=iB' W7obXbz\.ư(KOpYɫP%?w6G|BYtY/%Eo V&tOg& z;^-(1sX¬+c/Fh*vД 8Oے{4g$V@ YBS=51pMm S>+[;0Qo~K<撌GRAlV{"I4*iG٬m6׸R-4s%>[isl%עLԮemk Ec ~+JI$ʶ2Ŗ v^5‡{ <_Ob"d`rώc5#]iXfb(ؔaM]OaGO%882TDY,ёSh ,] {+9Q[ ftv']{Q?%|XPv\?Ql63Fp }Unfhкz#ͨWmnntf|\Ϥ| dCp,|?)K&:M1:|;ᢲ³P =zZ]+iVTLMz|tI5e$aS-$$&Ľ,?r݋#/i%^SztC%bAuzoPn!JXz `R%Q%f#~4˥60=폄a^4*dX#|5Y3Iʔsd[\jF1/!om nH0 U4H)٩,$Pυ.%8wp5J$nU `#m"=;Kd<5xcvƫVUВTZ3YbnoKA,Nެfq/6Rgy) m:mS*?ߘq.׾'^*6V=^~Z οe>e>ePvKX9xav" Feo07 1Y:8*&@b|RWl|$h8`vSbќ¹]z)So/թ n <:A biy+ O6L;gYЧκ͕KeK%:9Rux` <q[~i">}ØQ`9(>pe=$س5V¬5? 9cv\X,_3V5 alvD#HM^{8Rd@h ;l::cy  6+M^۰J${0L;>.!12'IW%±dh2-J/*VtGLC ,)m'ho~p}<&960A$y{XjocyDG;ov$3B Is;kR Q\;-.v.6e꼛OwVTBGY\͕o|cy:/ΘDlOF>yzTKu8+B?j7P: j UQV#P2⬦eEq|B)Hv+*?H2Z&Dfhvc1 t+)1H>[L= ᅨZԋ1 4+g8RuAk20xk?avN, ;~{He1U5D؛( q+'25W:﷑ //[n25#/6)Ed8m67k?q@/m!ǡ|6ܼ|2?~R[ڹRiWy,3`zZUj*0{HT'ɳg!1necdD̰PT@yuӐ#4 g3ʕJ^~C\GzNvXeD0m!MO?*rYm,hknRśaPFڹhv&jRta0zd5*am<8Qhv}.Vj_#{~s! CxP`ׯ[S)+:r2-eHo]YwRC*8(t c/?6y3AdF>eԂW_PP:v7:λ"/MuP R=+!n`M͐NEJ}&@_}^?XqJ47;GqT C?p^@'8-1ĴA"iH%y #N\'CNQF˭o6ҩ2̻-84> 4> =١bǺ; y#NrݱNSa FB{o5BA޶9XrMԧ)u)ShH_ʋXv81 Q Q* !ҢHe蟉Gv[AhjBQ?=K>?WWWpb#ՉW+cG*x(AgԱQ;}9;ZAٛC5  \~}3()ybZ3n&*ZUcJ*ﶞUi{$.#ʊ6.r͋zK*nݧcU{ |yԼ{ jEA:V9Cs! HW!^b葲#f~nHtZ wsZ} T~@lɍFzA^ X/Bh&+I$7yё7 u&{mPA6=&xaȗ7p@b> ͜\Ⱨ(NFj0&۶e!P A[P=%NÚz B }Fimi*R6tSdդ0v =i.IJ2~9@%Kq0QpPLFhcIBKe+Lxw bz򬃩B]dSk rܷisaC(P} BcV@_9 xǂLumP(ɟ CZ;ބ zxo^(ɓr);Qn6Z4ߎ 7ԽB$clAŕbYyi53JkQY븊b9uwf*>;OFKG Eud<?3)^-LsH=!QZP[{F N2Wo:y#O<)˛=tBW+a&Y"Tcx#sn-YLHڝɶ|%$-*t^CfrΊVWJ6o1x5KbV)vfP$ο% b]x@gx0! OP!2"*g$d vy'$<,!]D9 "';zVE%=䀏jb -̸{/; wOSAuZk'xw#[=0_5[.@=j(Lla.>Qj$Ƿޥ`YՂ2|z/H13n,bՂ+UEL'p~Fv같L?+9k5Ea*Ğ/iy?Xr$D Ι-rX9@%ºxSm7ti,- EhaU!XC؀<ف`^ֺ<>xGG'Nݥ[gkot@/ry6(8EhɹLKwFFg>\=6ӼK}^&#y,`H.۵`{(QmS,t>'ۤ1.jbյџ C~! 'mֻ!s;V3+G` S#qd7up#tj*s- Bh n2R[װ@iʼ;76OLD#KcT(Gr>0 |dX73c©IJtxAz_Rf9X[FtԜӪ E_z@pB !`97|80ݘf!mtxo_ L5`(?# 1RnfKJ.9^K hO 1\JbFHKCf3wAm2:O zTrSi跒%\2t7u$Heu5Da;_vz J%7^ #FoŮ*p/Sd`aڣ/by]fYO _/nMėxF""f,՟By<% '"&#~M[Tķh((/JpͲS=!'Kb{XH딎WB%]'R*Ԙ@°UWkV'kRk/gӂCuz_HuH|Ώ-[-~n.ȟex92k_nM)b3>2g*7)C^B H_540 Jf˄b- #j̺&˻`H (I̒#o.Y SYt&%;rq*kIDqzl.ot0W"T@NlP.O,ȩnkbaNv0PNzӼ] <鸑Z KDgH1-Ih B6bqNlTGqW&5|A$U`* }qNQT_=ecVMi-o'--ԫXpZ{#0 &;=+]Fj0JIY:BHr$}UFoKp!XvTTU) \fZ]hd|W-Ed1 \ˆ.k Kz U:mYC*oUa0&w1A $ʺ"t$&~0ʢfa0'"?dfF8@rn˩+Q'brW✁6 <B9UuD0F'VD8?.(M@c4l:;Pۜ tw8$䭎b{ !-$@8ZA8SH?.~ws.UQxov0ǴFSw.fy(My1+|0p$ފ$dVp{g Zx\ A>TtMM񼳺InS6|!CAbXbseWWYˑ-<"2toۣo*;֧9Wk I<f )%Ԟ/&k\pS(;H XyѬ# <'&:N)]c&Y(KvLK*Y3@epQv10Qoc':mvuٳײBcA-X s'[D|E8ߊNA 'g> 2ND#ٜd%7IỆ2B!* yRZ#p?N9Q!S/69ф]%nǂ.^)8LJ[?HuMn`0.`(F6`j& 1Q&m¥E~RotLkL/1&uM"zU MC[U_tn~A*L!0ܬq-PbĹ-h5pY*jJ\~ !Ψך`QI.[|0?V u%Vk>'ւ[aŨ[h<b|UG|9_? 1QF.VO,-$%,L4{\d\9ֲ[t)|g(dtq2v@\f1g QbPFo{*SSo+'M\w@4Ai ec/ R 6_#)p s+ѨT"T%/7ǠZ RQ%b+th籀UM73ha{*.s.9A.VZ4HT[tˎJx@5¹.%D: ꉜ(I{a+[ƈ3qA-%L$ʤUl , +pKk Oil4U&=+1ڜxC9W ~nOZQ5uNdE)DdG`󾖪 >ƒMŮNkˆ&JRDO bFp\Vk|$jv\ȷ k&EɃRhX8I#'L Xu'֊S æ7,~6kBJ1QWld.}hR MR H+;3 CE=kgE7WLPa=|T5[Ih mZd Hs~ܻx*~*ԗm4CX ]vY<*B(cޑW)~JBΗl`Fڛ7`<ç l "zQ3QI%:znqsEF9S^5:(V:T-eغ3݌M( )wmDQךkSCHʿm]⛜a Aus䫺z#`_:{*&` F1 ߱xVI!)0[gL1#tx{TVw3I8è1C,7JdC;D#Qb I&DQc"jsc@wD駯W0~3n?CR?6 8ɯ_<[|`ŪEQ~֮AΣG$d!UU 1QO(sLjd5[Eյ4AxV,ߜ[9 J׭@]eFZ/Q:^B۩*C'q_~~VT*!ɞA+,Bp1FZ ӓ5fپ&Z{"4x=hcO^=|`dp:Z*y:c RXYġpQ:cxMybQd ؉#] QN{FA`3F Y 4eֆP?A%ՖǾ쇣/ IgucŅ_ KW-RrI\xҼ3lm;[\C,PV)B5ь~Jr*k4G-OOղ 1UU+oj8#.}88ݕ+m"-' [ѐE$!YF2. gBzL 9n?7*(qds 15pƙoa98LwlS e8Ыt)pP*){GQa<>;QT ht]TVj'TZR pqJ׵\O$qIJced }P45egٸi|gߧspnheĴ38G }tMcq !.q{xmJ'O|mŭoS" 5j.Ivx;_* zg@/Wk!xdp+M'p/I-kbvg[A/eJ0kq D wȋt~<C$$}M Ϻ4:>ȜSZ}մvudʹV>?=e.ԭfUN,*D x,ɥTا"  fmFcuS_fn,%P.KabB M?]b\5x P"G/0&ќQeԒfi^#~0,&D-% pme*=)wYѠ9|(9^RKL;&i#ʘ(UWN1x`˰d he=[W eMg *JrԓhV9:!Ϙn#kל.@iV\Z̕uDr||:6 ܀i[Ԝަ4+w(Xa49t_x,bb$cO*~4akA[5}Ƭi.,Բܸ]o)Kʫb] ,|gr\G(+f/ _H% / M9T=md(j픉łXCEDJI-ro@ߤwe.bC'_U3cԝM*t%MɃ(JAþ"L^@jqmP_6>`J ]A͜2DdvP TÔ%C^8$)B$@{#7 yTghB* $-\9Xb&anwpE©ޗSi}ݐ!^`$;o :ӡ'ឥFh"qZpYb/>#"GՓ:w G)RtMR HGsIwZ"qO0ЭOU析)&#^\GC}ng9x݌Vԍ* +P~5>00?2݊#PDR,:U"P!y&x'u;Pۖ:S[U0mi}Vr̞/R[jEwBwu6|w6R۬H㙬tf,ώ+:(ʼ-ȒSAtr<صE5 yzs5R:B8hyOcH 캝˖5‡O11l^eT[G;;} : h{" ~4A3 Z((/4ǫy(g<0"! SH"*ܳ/<ԵӢ4/KNaMG@~|ڍW~DC d|gY(>qn8,_cMеRҵhw ML 9fnɤvi`TVHVd;d7SԼʑ)P,K-S&{pBMfKBBʛ{I{ვdK70iYeO;-w^4aOHhVfMyl?wgXҝ@Z|O`A[2љ߱a[SLIN$Տ|8UhH }c|l6Q%C.;rOū @ҜGAd|17I3qVBb2v:]O>r2ۅ`cEC3Y1X,Dke2MbEU]>v5$} fO9uif Ih5R4{x)q4ςy)[gSIg :ҫ}@Cـ'JG&+]}̮櫼3ݍ+$a'TFQ-.Ray_{KoNc2#- {ÃSRƠjRS^wƓ < *F89{TPp/9H2W!-j05ڳ3,E+7fZu75.xdybGNjY7[!n }s6 z _A my)p@ihuf-iK}bYSR%fj#2w[ cRԨQM{Qn ӣ؃^3_I-n&ZQw7)S$!kSh/ERd#忑hk21^HiE!JQWkG88Cl%a0޾P|I)@a9! %!&g$)^ӑUͦˢPÝω~xL;W,Up2JIrK'B͙nJë iWВ:D!RfBx@γд#- l[)M65}mY2|2K$gФ>=t0ZOmq7=)Gx(S||5,Sf<27jFB2Ad..= 'X@;˓cgZX*DcLp]}m{lбy,ڧH8Kf@%k6=AWiz *`a w6@0I?:FTA{k,Bnic|Q`PFP(.7?-?z41-V7Vb: :*63"(UϔVHsb*t5_%ҚK+$1.iz>7oYֵkՀl no4t4Y wrM$\HDv;n,IpLr8/w ?;{LOpKL [5+/%qL|a +[d#_\*S-)JOr[ aWRs[#p;|u^M@ Ս5[ 1,AS߳l< T"?ա] bOՆZ]gjjÆ@{ҹ){G+M}ȹE6wL*Lcy˕s5ĭMѐw\R˝lKWyR20+a›j4O",KV\O;vVTU9b? vɬ%mv6Vp},$z.$euDV5zp#a's ב)tLRɺv i& s$P sb.]f҅hE6x* !$8~n$K᭞i*xR*!`l|fpG:ᾌ:R(oPpn|]R8ŗPuamgqn7BigQ}y7ȲK GxFb٫W(&x#x6B$osr"]ǘZE~H/ |~w7 tk4ZF1ir'C:f[F͟'0!z(liĢfH+n 3G2Ð2+B>[13[?WDkZy {;˨s~a20Zcws^_ ^CB*dlTz z= #66êDod߉k7@}G6]DAxe4Ddƫ=_lט9s) jLe>I!PYP,tڻp~{^;s\.i0q"#wY2+5firLQ -EϾH]p9l%w,3]MrJ@_X`Db/H+b=/W#/2(7s7HWZ*Iv7fx󂗇: M:rP{"sO v~A>ewX\-TA =x.@k⏿.Q:BZw j}w^WܗOI>s&4-C:|2̴ 65?@kC\q)}ԒwI4jhvT_;& um:>+?([6}&.ݖ%f{*փ5Og)5ZJiSځ BV?^44 u<UJe0} šVa=nj7U^dL]%_뗧WY|\Ne"VeN@߿65 {OI#~r3H..MUyy>WO؄ޡ|shDe#:d(w^4w0I΃:}Rb)1Oxh(e ZI]?*᬴xcIHY"ua"n3ݭ3v^q4[НcNVWNk"":rf]3E׾z(t I9&]D#yi 9*)OoQĨ͕j[C%O qPW|͗އ{wlBׄ>qɰMɷsh\^&f暀nc!h9t 6y>~,]ٳͿ!st&U6 -Ϛ4㓉?ۛ!Iӑ:ԕlQNWP58םvP$8GS)7͑+޼ >mA88{Gʾ8qk4@ 6¨wFTB\}$2 ŵh X=$!wb97SQM>|iN %"/:F~B:wu:$ ̨$CQrZ.;3\z$ H}WpzهY@uQݵHp tpO%Xݯ<ޓs#dQ'+3 X8BY** cd7ドu1dϰVm [Ay!sz 0s_B$yB%DpGUh1i:~q"1wzDdb-)|:%Q͘^k:'#%4Գ=U~[?ۍsD -iX 9cf[(RcMc? ՊCm2@>TZ}fS,::؜t'|("Ǔ>j3EE>4^s1qy[4Tz2%&F{yRMR뷎#t-LOBd`Q©(x3_+aIM-˔"}M0Ihf 8KukwBeg UΙ",]Zr)҅juM#U"y|1$Jٞ௵r6vBH]W *,7j>*)υjjpSĭ͐?:sQr;65}d|u9Y$T<%R3¶4^$Ae^DQq&u{h(Jyo+L3 VE>LTѸk>e`|(B{$}1FNsq HI_͈CZWm[v2`5I,i`o#z&8L|-Jr|lȓ5ڜZ6y4[*G REM -Ev=Ȭr4ozvQbꅂa0L,W/3Q#:X6I1[4=?}!&072 pwtϰgd"CݘWb|He_Ozw"՗Q1*ӥWk;Ƚ&Ff.LpKMhݲs b.Andf7ǨnT¯QH874~*ܓsk@ߐjQ8+] 1O"2sN\Rs]zu{YWX^{@)Kͼs i@f*)strۅxH*ËX4nC KtXoDs#c+\΅L' ʛ~+%@.Z\.$$Ӱẗ́+ظ0lZ:ILڰxZ;Ewa ,'}aTt K~Yi wAotBà `~ytNxM-m̕PcĘU]sgJskхz7a ;TWbT Kt 4GZӣ^G'\g6J@go.e!5OAv&Rj,)J lj S2j_vw.HHMQv ZtKƢH+c}}j͗GBvܾB܄q{H9Tevvh&O@z6u}Zљps4ueZIQy49 '0VHZu/2,E)GF冯IBhwI궅Զ8框XiR1 @c$kUQJM'TM9PdhH*~зўIK$UDB>NQ;|]؇# ˜b9VQ7ɰrG<ZrVdRTZx8>/l.;X;ثf L6&j( 2cz㤐e@@lIVf$eQoM q*Oܰq1$-^V VɁ5d: Oǩ8b,߁MW|aP=1P@X|BFJ6tx羢<^ Cq̥ 9 X&I+Rj[k+3J^8XF2;p"=lqk0Aw.\( H0REx <$H<3-!5x,\n=IQ+Nx>b/ֆ!Q\(tt;IgnMqC+4vbaZrD%awa6a" ?$ ^7Ak5G:A)P1(u BbY] =rR&s`R$ɯT'Z7ڥ C\1 !صљuj/)V?-L*,~ g<Sv-l:.mZkqE]JĔv#q Eam)%/B҉⡭mr??yi|LsBd7ELW$Zbc?"f}Eij̷*ĆgǚOR|p2t}`>o$%H RuQ #a]x`k @ bnwn]:cA-*Sߺv@ct1 r]k\djޖrPё#Ձ&Zw@2\Yxܓٜ~Ze}o29-E)uodC,:)vb6S t%$|>! :nII ag55Ѷñ@ۑݱX8-1iw3)p%tȖ射 w0gtԉ0I$nψh|Sբ |_Ҍ:GLE~dɳNo0{d": =+o*`m\z!muES"ɴ%yݴ?#JeޓSwNb]vZO{3[rprHdȥ 9PHn!ET\OGI 2ĩ[G'[ah,` ~嚧;A^\:5]5+aAJޞB" pet=S$ m=;M _ *䮘F2Ǐ^7!6#<.&c) +W1C0!^!9R2%p3Ⱦ,6'/|QPQj"띖~41MGUn(cr_9{ĕci+Wͷd?1Ml;YϐO%:ej^ِdWGV4m(|FxP~9kxZ)M h#GfS3)ֶW6|~w)E;bhYqhUj<9x Ƞ%.21B FG|?]X3VΟ֎]Zš$~? I+@:+옴'U_O}&J`tHWIߎܴ̜ ¦?Sdqj:窺_ܚld<C|]kǬp#{OԆ2࿰#%9)ntJur ~Ňʷ&, fiMW^u:G #&9?-7Sz8}~hy@I DCYu3-O}t%IcQGDJDI/P@ 5)k8hZGnd"q.M2Y-5+#iޚ!hk6)K\=%l&*;QF4㝚#6kPc;-98ǖvb(m ;ͪ{T -K# irӀ"fٵS2uJyښzsiqL~ rw&м$|e’Á*Rѭ#WKCZ]Іsn5?tC}wknezPN2gM^ܹ|g"o,wM^X,D=J\"#ٜ .uW;;TBmkx3}RIg"Rj{ \XP6]Q10kORHրn}ɳň&[PB6u`O ̹CFnB݅^fkq>Y<|&Ow9Nl(V 99wBbh.#r[lےG4y-+&lty/$#?m&xDŲ\N=+\B]~ LqCY<ËI2+}{ēq_t= KA/QNy [U,73o7[F[NGo3g?j"(+ P,^k (Vav,Z e8AVB)£Ad-Bҹg Mt =C_q|Dc }7,gKС߽QWOF϶`̏GEb (BaV]e+G /@WK*&?jze = `s˯M6gJW/J5n7|zKWrF,36n"",ƻMkd0(Ur0P~p ϱz2[VNq+9e.ܠa\; d NHhreLRh A-S׹!Ʀ fzfm#̲KuA2mzsQCRxoGqI _ъkd0ķRMm@a~T` oXHZ,jUQLx@8lJҐ$e#U@' w. pƟW7v%8B7.H>ѳǧt7$vp{hl;ΕΕ* z-7`Aw:RK/LdYl)MK.#ʓ%YUB򂲗 y$rJkȓJkۭwJ8ʨS^1\ EwUƗ5 xot.”Vnf/"\_#m|# `Lju:\@(W`«$|7sκ$F=w7a.ΉCpp5E&[tuKUk&'!]3xٙUHLt>Wdm%mtNgɁ 9fkz%9(|<#ݛ8 烗LTA[ {Z.Ʊ5]E2&N\9c54ck>XD6R|uS jr^z%bn|{+j@;GND͡JW絳C < y0WjlrmwD^f~{yhk TU9M# !&/Y >pgrCg-XJM& |_T5?igBjilNxrLܽBkmn!a2*عU۰مsp$"e*no_M0#O&7;0Q!xoP/?=wJO>@3cE}x3f~*Fp=mؤu3'}!𤦮/z*>-ɌɡIM[U#kb}M%`D"Z$F_ˮILY^靅fa ؀E( ;HBzONB-6',"s-ʵC2S墍=ho{I5|"][ai 0PI5䪀$@+ϢeH . `NV>Zxdr Ct.ZᴉD-&dC16˽I<҆ >-w>Z@Ao+FU@~ V 妕ք}+9nO3V)i~CIoEfP!t_>5Q=e\,x2L.]pcR`%JؒiKwQxXMs _ Gq^ ^W\/nƧ )xXEJuhк!r[ $wJqcV-8 \TP֣w}m *ckM^@Ğ*VGF8KApY-̛<͛dls,_2Ƈ ,ېER@LjPA#@74Tp>ĩ$-S 2qWaiH ? rZH?I۪$I܇.H*hpxJ.Vaּ RPC*'Az!u墚6arzPzp7iU.,K'GP;uk})γX;2߰WE; 3 sߊ(dw6X:jzW٧ܢ})OܹR֍nNIi6m|ژ]oJCE2 4}J |wjC.'8\>QSF(k$*8K->af~3"1j;R2w>K5F֩H4? kQVω@<"q..hkq9_TYfa%/W\ԓ)dj(,m2T*l]\ew p֐'ͪ\iee$lAR UV]M#Cn[p&J}up}~ۥqk/܌1*Kl܎i fYl L/p1bH3w_^D=ƠMg\}N@v:&:≛哧2 ޟ=Wwh&);*)@$'P5`M0vJd_ RB"vrXR4rϨ䦴 !r2 HsyBU=mڇ|7eR|$?D&J0F!1zA!l ,t=~6 hɔqR:XeϿ MA<dYnT܌TLekx1Cb0Zc`#:}k m`bGZib5k>rXn:9ّ2*yӘW*ۢ U0ꢅ`s[<PpÓvqh11=ΓPn_X)aVEﰠKmYm SY}E"*N@TD GU6w%d*m$8n+yӽGRrgD Q6ZG3"gfB]q~T_ϋ~k"7?WrI1h-I PtQdySST 'W=E#PCe;XiCs8HNeZ,|R%r)uOE0_z>~+:qw \{yJ˸L^.ԦP9)t%}O53J~pz 2*wΗxQp -І 4 RG RʯQ5.2֜@k(.p 6U8YC|㕏;!0qޱ_U` [ f*Ѱ?Iƺ4lEǔ^2{ON+=j)MBeh"ISL6,ȩD,u 64E` @cG_J6z%q)2Gl ?vql~)\Ӣe"hZQ+#llT J&w[ȐbŒ]2g(O[zʄ9u%nu`؎2-)rftZ9e:Iy4hxPǜ*O,nP9bĥb)e%J!&I Qà*P1L5p:̕e$T;8"O ҡ&xm q-BS;9^aZ8!)/G&eTU?!`)PZAa'ZE?R=l*>ҔA}Z79!APp?}fzl5~ճw=4<ӄFU!o<O.n:[BL8XsX{y Ro ]Q .>9c%U\n؀yQL'uѰ+wYXrΒE{(W=k33kx aCO܋?7JFBtYvs=%q/QHk)ji هb.!T2{Lt_[:NY9 ^6~VYN$RwB؄8u1}R$WR]&䵭3S7y,dgo(_gz-@襕wSRFw#IJ<ݰqweA\4WR{0GBcy]; Z CL߾nU9Hi ̯^[^:Z!We}+Y A6Z_W Ϋw?O}TkR( DSJN3”1PWLo*@zkOz>Fj*kyKΞ-E~Sثpf7fg?$ CT!o8V1D g͒D$6VӠC7 TZ_b@[ s,S7vK eHm!L[X6"1u87t/tabaMY|etZ\U3%ʛɂcRme'V8E||RWE/P> p B%`M*V@md ddY s>Wz kq>(EmY) =;(yXxwtmpwf5ꑌ"C;՘ԘFU6>9'&>R;;N8ztXczTOW~πסLçrҰkQFCֶHp!>xQ͏XS.4<":ys(F ʙYs,r[:\AmY۩^!J.V$X7NWO.bZ*bvcGd¯F扇=v}3`DH| kB/≆a6 _}=CEl> Z7u c0T8%Til*hP>{A`uS6|l]Į7>!47?mD¨D*Ckse:wٽAgY7z ! IF!zN߸M0MRD^?L@kWlhKrALlNFZ+H3&^6Kg+ꙟ07ZH}JؗWIz/rj$Ojk-޼P+ߎcĤΌ郈N^%f{)o_g?-sIwäU,vi<=^.Z%ʱSeԍq~¶6x;OzQ{CqG1oVdy 7SKІjF+3oΑBM?JӱSg=g뵞*@cKm>bpb.EkEa|DTl'A[8j=R /)=S>`Rq,%;ӶR'؋_YK9"~䌅>l>3WIL{ҽ6nzРy,rI;gve[:σs~ ~%BR($"ӂnC5{׺>c in>Bhw@ oPjb<{tZʕO5Fɹ'Z[ъ.aӷlYm}uڭ9(vw=r//*$GBsgq#o=>O>[EjqiOxI@~ЭLU'w":WdgeFQS ;k҄ vϼ5}A>V(dv9瞽ys qSJ؆(=fo y&VoE׀ϧrƮah ~ V$;ܽ̏ >ٜzj4qOMv]*13SoU\w٪NL n;0>f[U)՛v:ǴTtE$иÜ!Q0w]s*(Oh c(WdZ:k@ C۱0!} Y2P+7*tR-^&u@-̠%RZZ"p^0WhN G#im>ٍSĊ&yC8 QDjތڊF}~Ђ52r枟C6䵖(JI]K,ѝ{ mnf<+15_49( [>MImYo-zힱ ;y/SI3^EzVkio;=Fx`6LIJBL ]Ki,oCIZUXȈ}3ATY{F'<zoJvX:H2-o5Au n~ tW"13E,\j+@9 Cq4n#,szLX8mɢUB]/bË\C@ ;2:eYX韖 BHwP)1+*Իt#sE͋zk2Mb{ YuA$1fXA筯FoS0ya 9'F:)HxT_0$*HiB^ Ƌs F뀍oZ4c`<0/nSEBBS(m.}lgAts]nJ7e,bƷCۛqV!lx/փ,4dlK^.g#1  0O ޵BŲL8E 4MUoxП64'o8^OQ@Qȍ9W5O52V[VyHVh,:ht{kiY8'|_E>ZlB+;?T [Ya L:tf}0ϭSǵSBV`8$ Ti@> gnq8G>1nUᡶWuYq>>W>&;lYg~0Bf:wrb,O=E=VmkRdZȷF%0#`=Kudk6h9KU\lYЇlᦢUF_[owKLѪ}mM_L |RRfbʙEͿ.[p5"&7|ˁܖ|E09q>A`Ej(Qo+nl曎 ,H ҿB%UKtb?y"DYs&ՙ:f[A*|s2b%Ks_gi}^\[!)i@%?UB귊%\m }Kr=i&ܞ|?/7n/#(] ~zo9A~( 2jr*W^ѾOL-[ԛa> LmrVy!ncaDj@8-l27$nlj ֓I pQߒ؜uUu_96zvj0h?U33Ek& |,̏jgZrd<xLjzoδC6 WW6%~5e=iMP\̲k S=Ҕ#=FQ.RcvlQdKWY߮ɜh*tЛXofy~)I%nQtTkzk1P1R47᫚ЁV_@"c(9,w3[jTHK)Ot?] Az.b5 :}3j-g_S/fE5UlӘ\)')#܊A4dEn[k4JJiKpP00.SJi&OJ`P}WpS?ޓ&M;s둴X{(uI))2a{&w4cxtL0"C1v "ZC8xwW BrsȺ"3B-vZ_hXJ7<>'㇎]!ǬqbO~͈Q>|b?ZT>8pDB.H{(d<J*Kv&W_L g99ՙzS}b'yV$ j] FzR7tIv@JfihNX)~ LxS ʍ 7S+d W~ZMrNS_KyY|OХ ]R0 GI(2J;k~R~]; KEh)eG'J55SGG*Inl7!CJY⌢NvMFoOy03K zQaIc{|-gڋUd+p~DXk޺Wq_|47#ŪY^-͢VGrwTb Sz*Z@syaF.xB4n8\ 8 {$QeLHXm20?G7Q"4z]yb}dy/wt!vgO~NfmI/򸌵.!pzy/xop2CP,Oq9i?GpoF͝!^*fX{I6F)w網ϸ{'5 ~tlaضV"usO@máR1t!rX Prse ȅ s1pC.zk Sk!^W92#Qu^*pR^w.Qn? nF.GA 0l*l8W=CLM&ɟeS}ت!y Zҍyd=wO,Bm ΊHthя o*R{y8vL.A1Hxz?t0t-I38l aQOI&@ l_{cr#EɌl%xp>P+G7T?pb6sS0N`|E1EeR1zPC.Fv;0¹7UI`DGk~N:!#yH WҮҌV)4OFڋ2k FiU"me?h)x0qg1Gx`SuC҈'}t 6`7DDC&`?*Y^S?Pw.+J|Ű'#AR J yD"f#m:qYE"R9PŖiILB/v>T 7@֊)@{P_Q!{˱0aCN_ /ݹAPKk#lBYMuvuj9vĔ3[阾e}ܐxl[I[g hזIl0ЄnnD oh8[sBNhNFdմ^X'W~?|GάQĈ*U9}jDd1d0iBȐ!e{SaWEQsM݈g5(bn-X-dJRP-J5\ 2-@kZ&'Xfx{VWt[LqIN/l.&  od"բNN sg@hr&NH+6|! C%u<}dt`,vl;ƃ{у&X#1.D]3B90ukMun-_AP0>p叁ěq3)Y>z`$?C?z%dZ"hxa1MQX'TjAf6w rKh6"^fxx>f.Sx}vj<:v=.GgX{[-%aB"ޘ1g ߅/_rB0^@~֋'KcvwJ#t'п*p "Z-Z6#0,jm @t=Ig?~N \ >˒@MDDnY@ze6ºVc"`z8}`Í*Z^~m"_N6 u `im϶Еh:(}u6P1ø? yve |!W $(0Cf&)Zsvbu~׼0r푴09Qr_rᣉ^H?PΕȚ|¶f4chiBc(̖ԩ!xzUS(mWlȥ7tM` u5[C8?]eMK.sB?讫,mPu8=];Zu\Ԃe 8Jj!,B4@USX(eP$O 4fs\d׶ltu)NJNa#ɬm k"}o7\VuH[]hHe-ʹa(r;pΗk`L (:AUfYs4Fq5/nW)CX7h-#\bYi9u*i]z0Nk>jjӁlǘl/Ծra0%-NC[vpqA\yg1x@sPfwɘ"{,5W ȩ[+ qp(!#%="y=pq€5+wk7XGbW.4vwLJ_Rc|. џPᗡV~)6}z--ͨ{r;S e|Vy}G˾N\i\HyB6;mS< ]fP[a$NQpGrs9KdLJZKpv53AB͚U1sne˛Sss XVv)Fb!s;ZS<(Qq!ck/ <𔃫49G?{[oxq'QlƁ3N"e@?]2#+nzh.sȡk{ n::xUyãvwϒ"ҐjQ|j| ѣ }߼k®IlK)'>gUG[Xrlld6^GVBolF~* G *f9  b `Kequ|UDyGK^,>"U u6%ۖgD!d0toV;LO[ aDD60Րsu~W,ӬDSE%V!&MTS:hAhÍj*[߁W>N|⽼ NNU™lYZS^6d,r%/ϯxN!̽^i^4wu yV:戫B +_PM1%j F4t6uoQJCƌcҀfRYSip:PI·A~ }SU=1lI`^6m3kVHEFj.TF!DOug !k HPRAEf֋i\|t/lOD6!밫'EvS*OߏxBD,68֔ּJRgX S܄à/2YS~ޛ x|ZM>݂NT*3I}\GUZC1CFMx,5T4!!:zŁƍPq>@p!EE5|pj1L1&# P`~N[eHrR:]rة{xZԊ2Ö`"kF}{MBE#1.!*#8JN5r 9>|Y85Sf0(,ɪ&#dg-)QE)%$ T4m}liV mXYV<M`ԄrZiH&-BC:Á9Jn.vKy=<\8>ȴV,6"_D9%U5ɦ݈L`iVTS-1F)68ZQ]07bfE+h^`ғxJsse&M|,H1d j=V`fA 9,fy-,"-a|.靹T 4ی WSa FEpT(1[LM@BdΘUP ޥ϶aZ.]h 8ͷ-F^r{K4-eHbqH d+oZEJ%P%*~odq,C,,>'SKumA4'SFY,9[2yD{G ^\Em O ýzAR7'K9vVv25F 0mQoLQ\C(W$oB G1$/Hlz $/K-Y  (#x\ĝ@B! LuEI=rq#1tPx!:uHjws{qHu/-[  $c5$--қ)LCHeUeC~v/wV P1clܢd8kۡP(zLlckn/:-A@H* f2Gi$Y#Asy-xpg ){}5?|)*2oثX*7=gkXR\R [kV~EȭGF+89VpW.qZxDQMW5i"PF)U:M|QMTОy\gt 4C px\09Aqw2l=Ipһ <x-Jq F&ia &sHLV*>3OaIXg8İELϳ35]%;vnu :; _VXܪ+ơ,BNxij95qhV+F2G//"SLà4Cg΢khv9HT"Ka'6}@uM3eq@^H?$0p\O<=֊js)0`::yV ӟFs ]O BenyO gxtuDd>VxI 씻p${-g|52q:0*AD^lñ -h?V3Cզ= [i"Z0%(E蟧{ ] +]u{-FO|;t@PdO$'& 1 FHgMԌk̄m\o-Y@3E.mJo+#)uϧ3Ov27x^dθ ԃ;NEBiA y7T{L[%UzWǪ|>Dqa2/P%#D_qP~tpP۝bg_];P ٚ#`Nd$rSn^5X0Y ܵ_[9jCox<Y=u# 1vH*7H3Hŵ{ kC6[g^fd ]9iU&,2;xh9\G5q PATE3:_=<\>3`5{Ƿ:H}n{U{ZhrM%":jG_2$r] XA7{֢ T-"ry is o_חYCr5|D D7ۆP^]FÓb#MaU4u8KHHo>OJL0vȞ2iLy ;c $gClEG[o1zT:xD0SV:j_g x=9A)A#s\̝ %U U2 H6C*]u)X kamT*6 |WV!k t?e_ [5 =+?@xW,+i]iN'Q;DTG[JF4z;0 ŠeI?sh$vj7w! (Lu w2>TjzwT WnObQ?bzyhBl΄m, K̹&Ƭ#WV,X! PPn~}dTQ_фUI$sO4Ćyf5ĂQpb5$3Jo֦,R*=R(W%4廑 I ]tJlS:};ݼT2|bH7]) xH-S@ "V؊H1iӾflH66D{u?&c5VLd`>3"sYD5%?$^0Y*Qh+\(yIG5m!-ɍk ҋٲFQ{t>Nٯ]R OS&+@Nw'oHb4-{1=2 W"g_S-Hg[xQct)B'H/H*(\?cIeM° @%k_Bdg*^8~L'u`K4H yu8 |\0KSs u#h$t! Pc ҥn9Q7kҏBS7}Ȱ;NhQ*}xJ>|iL ?xrt F}~2ߴH3獢VYoeFy> ^ou!XJl]e=3o(EUc:Ss*٪DD kP&p} b)2*-+;b2-Q&n5M#MOFk\WF' F|1?Dz`k䝧6>d&k+w6&Ie x9ҖF C1f-L#9UN\fx??B|r('=Q5DlH (7`  %eP C8Hn 22K!?Ao+?ˤ\~+i ?+E庺֪l%2q21K]On ?b\5qr탮l`H1qFrxnבmi Az4롯0F#2I}ah9p%ՄlxU9Q[c ӢMWaX@4i:F 9GIWhM} omjο{:|,c'#{XTڍTʗYxj6CsvmZ?fEoCBLBCxYET>炣G%:DǏYI  _!|Z oL3=*(Q=Z쀗Y?T<[# -v8ɷuC9AZS=BtXs@-0'V:̗l{ aGWLޠ2X]x7#Z¿q>|vY :vn%D u\c])X;UȧE 7nb`ە;a7%Ep[9dD"upN׬s1 HqI|wF~ X,& 2a gװBi$V 2IkPg':X5p}tupՈ-Kq Gk`*rƕ 1?RB$РplUI{<aAv3s->?p:g;t@@@{o̽3ɯƙ%8&|X(`^?mlvv"F*X^付+L=uV7F0v܂pAfv# rhz _},"$Y*|J=( =,}g$ȴYZ)4rE0(PX$ix0-"K"Nܮ .\ȌXY1*~Ch}*Hlv\$HϞV`{bXry/&\ڂ0Zebѥ壊1=h֠Z%\"IJС Y, C+E:> }y!bxC#g>hO{ DJ@Y,hs'8@Σ݆Dr:m*!ѫL= ῆƭ\A:ܦJ/ hJ[ 3"#mQ|ȅ+uU Mɾv(>G{6##D|C3]gr'ȍ-#QcvW;1MX=aŠ=2㠸mjT߬+RDx[֮Ch{>``Z/Ai}򤁴I>, jGZ 8N. NZ 4Nnظѕ'^eR:Of <>ji}nQiMɾ K.vU))r ֢n)VhhiXD }NK>-u}S.CIc.,KıYς2Veci*5zeh7-26ݎԖ_ VXZ+a ;3ٻ4B>s :\q *Sڛ„ӞnڎVA0(&X;TR_a=E0yDdKjiUʽxFypa8Mg)決zHc/}KmihěԌkeۊ^+ngՃ .̑iKBL[hc\U*ۛ1t%AZ~~3aSj8$% fXe&"ʼnZ,`o`OGh><5hwN.rưHVy:B"p6]?Μ-2BNp~qmeƩe2XE]_fÆ¢I{Bof3?"ŀz(iR2JaXX>$]W 撊 4% RRwT*շX]OiH:8^_PC "e3Bǒz7/C@5yj"Ei "=>$pe22% t?So/I3k恤 aXzV\KX_Nl`BabG>Ͻ@u'Nq%Ek)3%vb"A+_\~5xWJ%Gz0-MHAi`*y[$EF ]N#t+r(Tԥx\O8OpޜWΐ!?+< ^JM1L[xm"*>2'vX#WW爠N/ss8x6{pUƳ ܜ`[3Ɛݒ5O+r)kV O O;PT}?,8V] $OD'}dM ubfύ@y9[z4=N vyi$> ÿaUkI)v S[F31EV7.zd퉮ʄ!4_FX@}[ON|.4UQm9#;h$O+=DXnd@5:`^*Xg 9AfNil>̧Կ3H@\m0nEtz'R}Yt;ɶ. V +5a:yPRM๕dviM`nZ[;Nu&]w]ʮN}lh%{ gF.CxP=ͺѶ2.vGȃ?&9Jվ&G5( o]pYN':6o6̠l^S va{ x4auOinBv&XNsC紥,XX=Z@YE B AGD92Cf{8)&`05 ߻"BPxpPIxX)\pC e8 ~;m!pU`\Ty@RF7Ms5C MzY)R8gp|H0@≆>},)fz L.YB͠/R|ρ '2Gg{ UgުMH&Uq#?cv y.քKB(ւK=IUWZ ziɌLv|K-zjfKkӟ`,pM7žK  u/RhqkGlyhր,9+}K+gY|)WwJjjuP&} iI,o*z4UٽM52 9o:4> csn*-kEow4ԧP~kO!{|$xi󛃅!A=Zik9aѕٽ\Vs?y">qLφqFzRD,Q&:|!K !7U%c gQo$ "%>hT)\J^2% icSO"XÓn8Vr K2Oބ՚?e52c$tQ7ZU)1=CW?ٛR!$4}Rch]<|=MEM@.&[#@/}$|reY!G,m(u q3Ցto mr,[VyΛ3.cK*Զ#8bGL3Y35VaP1qIV|j жԣ3N YZ