From eb055ad7b7c9377bef22a2f6b92f9a0055b95777 Mon Sep 17 00:00:00 2001 From: wang_yue111 <648774160@qq.com> Date: Fri, 17 Jul 2020 15:42:52 +0800 Subject: [PATCH] upgrade package --- ...libmultipath-remove-last-of-rbd-code.patch | 41 - ...limit-PRIN-allocation-length-to-8192.patch | 35 + ...ultipath-fix-detect-alua-corner-case.patch | 35 - ...format_transportids-avoid-PROUT-over.patch | 93 +++ 0002-multipath-fix-setting-conf-version.patch | 39 - ...mpath_format_readfullstatus-use-real.patch | 54 ++ ...pathpersist-add-param-alltgpt-option.patch | 152 ---- ...th-assign-variable-to-make-gcc-happy.patch | 42 + ...bmutipath-remove-unused-IDE-bus-type.patch | 25 - ...ath-don-t-close-fd-on-dm_lib_release.patch | 66 ++ ...pathd-add-new-protocol-path-wildcard.patch | 92 --- ...tipath-add-protocol-blacklist-option.patch | 425 ---------- ...ow-force-reload-with-no-active-paths.patch | 64 ++ ...nor-DM_UDEV_DISABLE_OTHER_RULES_FLAG.patch | 30 + ...-remove-_filter_-blacklist-functions.patch | 296 ------- ...ck-for-skip_kpartx-on-synthetic-ueve.patch | 43 + ...change-to-work-with-old-make-version.patch | 28 - ...bmpathpersist-depend-on-libmultipath.patch | 31 + ...-multipath-tests-add-blacklist-tests.patch | 559 ------------- ...sist-add-missing-param-rk-usage-info.patch | 25 - ...Makefile-more-dependency-fixes-for-p.patch | 33 + ...s-Makefile.inc-separate-out-OPTFLAGS.patch | 44 + ...Makefile.inc-allow-user-settings-for.patch | 33 + ...Makefile.inc-set-Wno-error-clobbered.patch | 32 + ...mount-VIMS-with-reservation-conflict.patch | 17 - ...scovery.c-use-z-qualifier-for-size_t.patch | 90 ++ ...ze-when-not-all-paths-size-are-equal.patch | 37 - ...minate-more-signed-unsigned-comparis.patch | 198 +++++ ...ipath-set_uint-fix-parsing-for-32bit.patch | 48 ++ ...le-queueing-for-recreated-map-in-uev.patch | 55 -- ...g-paths-repeatedly-in-coalesce-paths.patch | 88 -- ...tests-Makefile-add-lmpathcmd-to-LIBD.patch | 28 + ...fix-bugs-backported-from-next-branch.patch | 154 ---- ...tests-Makefile-Fix-OBJDEPS-for-hwtab.patch | 34 + ...-reservation-key-to-uint8-for-memcmp.patch | 46 -- ...tests-test-lib.c-drop-__wrap_is_clai.patch | 33 + ...bugfix-ignore-for-clear-mismatch-key.patch | 49 -- ...tests-directio-fix-Wmaybe-uninitaliz.patch | 29 + ...-bugfix-flush-and-sync-before-reboot.patch | 17 - ...ltipath-move-libsg-into-libmultipath.patch | 83 ++ ...ix-RH-remove-local-disk-from-pathvec.patch | 206 ----- ...ools-Makefile-add-install-dependency.patch | 32 + ...n-failure-when-there-is-offline-path.patch | 54 -- ...ultipath-make-libmp_dm_init-optional.patch | 89 ++ ...mory-leaks-issues-in-libmpathpersist.patch | 162 ---- ...e-sysfs_is_multipathed-able-to-retur.patch | 108 +++ ...-libmultipath-fix-set_int-error-path.patch | 34 - ...multipath-centralize-validation-code.patch | 777 ++++++++++++++++++ 0026-Unit-tests-for-is_path_valid.patch | 530 ++++++++++++ ...path-free-allocated-value-in-set_int.patch | 28 - ...ix-memory-issue-in-path_latency-prio.patch | 32 - ...bmultipath-simplify-failed-wwid-code.patch | 205 +++++ ...ull-dereference-int-alloc_path_group.patch | 31 - ...se-atomic-linkat-in-mark_failed_wwid.patch | 96 +++ 0029-fix-boolean-value-with-json-c-0.14.patch | 41 + ...ix-max-array-size-in-print_cmd_valid.patch | 31 - ...-condlog-NULL-argument-in-uevent_get.patch | 46 ++ 0030-multipathd-minor-fixes.patch | 41 - ...et-enable_foreign-to-NONE-by-default.patch | 49 ++ ...ix-memory-leak-on-error-in-configure.patch | 68 -- ...e-option-to-enable-foreign-libraries.patch | 89 ++ ...eck-for-NULL-udevice-in-cli_add_path.patch | 32 - ...tx-fix-apparent-out-of-bounds-access.patch | 28 - ...move-_blacklist_exceptions-functions.patch | 139 ++++ 0034-libmultipath-fix-apparent-overflow.patch | 28 - ...-parser-issue-with-comments-in-strin.patch | 95 +++ ...x-int-overflow-in-sysfs_set_scsi_tmo.patch | 27 - ...ert-regexes-that-start-with-exclamat.patch | 435 ++++++++++ ...-fix-enum-misuse-for-find_multipaths.patch | 26 - ...mpiler-warnings-when-built-without-s.patch | 111 +++ ...tipath-fix-possible-NULL-dereference.patch | 28 - ...ipath-fix-sysfs-dev_loss_tmo-parsing.patch | 43 + 0038-fix-syntax-error.patch | 25 - 0038-kpartx-read-devices-with-direct-IO.patch | 267 ++++++ ...-to-info-if-alua-is-not-support-by-s.patch | 26 - ...dle-alternate-bsd-disklabel-location.patch | 53 ++ ...eference-when-path-is-freed-otherwis.patch | 139 ---- ...x-checker-detection-for-nvme-devices.patch | 62 ++ ...th-fix-memory-leaks-from-scandir-use.patch | 91 -- ...e-dm_get_map-status-return-codes-sym.patch | 322 ++++++++ ...h-fix-memory-leak-in-disassemble_map.patch | 87 -- ...x-check_path-errors-with-removed-map.patch | 116 +++ ...e-dm_flush_maps-only-return-0-on-suc.patch | 46 ++ ...pp-hwe-handling-when-paths-are-freed.patch | 109 --- 0044-bugfix-check-close-return-value.patch | 29 - ...athd-add-del-maps-multipathd-command.patch | 161 ++++ ...lushing-maps-work-like-other-command.patch | 104 +++ ...hange-kpartx-file-and-default-bindir.patch | 42 - ...delegate-flushing-maps-to-multipathd.patch | 64 ++ ...option-to-skip-multipathd-delegation.patch | 63 ++ ...ultipathd-ignore-failed-wwid-recheck.patch | 74 -- ...m-extra-information-from-systemd-ver.patch | 30 + ...ath-group_by_prio-fix-signedness-bug.patch | 30 - 0049-kpartx-fix-Wsign-compare-error.patch | 26 + ...dle-NULL-return-from-genhelp_handler.patch | 44 - ... 0050-RH-fixup-udev-rules-for-redhat.patch | 47 +- ...-parsing-of-VPD-83-type-1-T10-vendor.patch | 50 -- ...property-blacklist-exception-builtin.patch | 73 +- ...ix-buffer-overflow-in-parse_vpd_pg80.patch | 31 - ...RH-don-t-start-without-a-config-file.patch | 106 +++ ...-another-WWID-overflow-in-parse_vpd_.patch | 31 - 0053-RH-use-rpm-optflags-if-present.patch | 60 ++ ...-possible-WWID-overflow-in-parse_vpd.patch | 66 -- ...hconf.patch => 0054-RH-add-mpathconf.patch | 173 +++- ...-parsing-of-SCSI-name-string-iqn-for.patch | 34 - ...om-kernel-cmdline-mpath.wwids-with-A.patch | 169 ++++ ...-double-free-in-pgpolicyfn-error-pat.patch | 81 -- ...-on-invalid-regex-instead-of-failing.patch | 121 +++ ...ipath-fix-files-read-from-config_dir.patch | 41 - ...-default-find_mutipaths-value-to-off.patch | 21 +- ...ibmultipath-fix-sgio_get_vpd-looping.patch | 50 -- 0058-RH-Fix-nvme-compilation-warning.patch | 26 + ...empt-to-get-ANA-info-via-sysfs-first.patch | 87 ++ ...round-gcc-10-format-truncation-issue.patch | 31 + multipath-tools-0.8.4.tgz | Bin 0 -> 480941 bytes multipath-tools-ef6d98b.tgz | Bin 410741 -> 0 bytes multipath-tools.spec | 347 ++++---- 117 files changed, 6384 insertions(+), 4335 deletions(-) delete mode 100644 0000-libmultipath-remove-last-of-rbd-code.patch create mode 100644 0001-libmpathpersist-limit-PRIN-allocation-length-to-8192.patch delete mode 100644 0001-libmultipath-fix-detect-alua-corner-case.patch create mode 100644 0002-libmpathpersist-format_transportids-avoid-PROUT-over.patch delete mode 100644 0002-multipath-fix-setting-conf-version.patch create mode 100644 0003-libmpathpersist-mpath_format_readfullstatus-use-real.patch delete mode 100644 0003-mpathpersist-add-param-alltgpt-option.patch create mode 100644 0004-libmultipath-assign-variable-to-make-gcc-happy.patch delete mode 100644 0004-libmutipath-remove-unused-IDE-bus-type.patch create mode 100644 0005-libmutipath-don-t-close-fd-on-dm_lib_release.patch delete mode 100644 0005-multipathd-add-new-protocol-path-wildcard.patch delete mode 100644 0006-libmultipath-add-protocol-blacklist-option.patch create mode 100644 0006-libmultipath-allow-force-reload-with-no-active-paths.patch create mode 100644 0007-kpartx.rules-honor-DM_UDEV_DISABLE_OTHER_RULES_FLAG.patch delete mode 100644 0007-libmultipath-remove-_filter_-blacklist-functions.patch create mode 100644 0008-kpartx.rules-check-for-skip_kpartx-on-synthetic-ueve.patch delete mode 100644 0008-multipath-tests-change-to-work-with-old-make-version.patch create mode 100644 0009-libmpathpersist-depend-on-libmultipath.patch delete mode 100644 0009-multipath-tests-add-blacklist-tests.patch delete mode 100644 0010-mpathpersist-add-missing-param-rk-usage-info.patch create mode 100644 0010-multipath-tools-Makefile-more-dependency-fixes-for-p.patch create mode 100644 0011-multipath-tools-Makefile.inc-separate-out-OPTFLAGS.patch create mode 100644 0012-multipath-tools-Makefile.inc-allow-user-settings-for.patch create mode 100644 0013-multipath-tools-Makefile.inc-set-Wno-error-clobbered.patch delete mode 100644 0014-fix-segfault-when-mount-or-umount-VIMS-with-reservation-conflict.patch create mode 100644 0014-libmultipath-discovery.c-use-z-qualifier-for-size_t.patch delete mode 100644 0015-fix-multipathd-resize-when-not-all-paths-size-are-equal.patch create mode 100644 0015-libmultipath-eliminate-more-signed-unsigned-comparis.patch create mode 100644 0016-libmultipath-set_uint-fix-parsing-for-32bit.patch delete mode 100644 0016-multipathd-disable-queueing-for-recreated-map-in-uev.patch delete mode 100644 0017-avoid-handling-paths-repeatedly-in-coalesce-paths.patch create mode 100644 0017-multipath-tools-tests-Makefile-add-lmpathcmd-to-LIBD.patch delete mode 100644 0018-fix-bugs-backported-from-next-branch.patch create mode 100644 0018-multipath-tools-tests-Makefile-Fix-OBJDEPS-for-hwtab.patch delete mode 100644 0019-bugfix-fix-change-reservation-key-to-uint8-for-memcmp.patch create mode 100644 0019-multipath-tools-tests-test-lib.c-drop-__wrap_is_clai.patch delete mode 100644 0020-bugfix-ignore-for-clear-mismatch-key.patch create mode 100644 0020-multipath-tools-tests-directio-fix-Wmaybe-uninitaliz.patch delete mode 100644 0021-bugfix-flush-and-sync-before-reboot.patch create mode 100644 0021-libmultipath-move-libsg-into-libmultipath.patch delete mode 100644 0022-bugfix-RH-remove-local-disk-from-pathvec.patch create mode 100644 0022-multipath-tools-Makefile-add-install-dependency.patch delete mode 100644 0023-bugfix-lun-expansion-failure-when-there-is-offline-path.patch create mode 100644 0023-libmultipath-make-libmp_dm_init-optional.patch delete mode 100644 0024-bugfix-some-memory-leaks-issues-in-libmpathpersist.patch create mode 100644 0024-libmultipath-make-sysfs_is_multipathed-able-to-retur.patch delete mode 100644 0025-libmultipath-fix-set_int-error-path.patch create mode 100644 0025-multipath-centralize-validation-code.patch create mode 100644 0026-Unit-tests-for-is_path_valid.patch delete mode 100644 0026-libmultipath-free-allocated-value-in-set_int.patch delete mode 100644 0027-libmultipath-fix-memory-issue-in-path_latency-prio.patch create mode 100644 0027-libmultipath-simplify-failed-wwid-code.patch delete mode 100644 0028-libmultipath-fix-null-dereference-int-alloc_path_group.patch create mode 100644 0028-libmultipath-use-atomic-linkat-in-mark_failed_wwid.patch create mode 100644 0029-fix-boolean-value-with-json-c-0.14.patch delete mode 100644 0029-multipath-fix-max-array-size-in-print_cmd_valid.patch create mode 100644 0030-libmultipath-fix-condlog-NULL-argument-in-uevent_get.patch delete mode 100644 0030-multipathd-minor-fixes.patch create mode 100644 0031-libmultipath-set-enable_foreign-to-NONE-by-default.patch delete mode 100644 0031-multipathd-fix-memory-leak-on-error-in-configure.patch create mode 100644 0032-multipath-add-e-option-to-enable-foreign-libraries.patch delete mode 100644 0032-multipathd-check-for-NULL-udevice-in-cli_add_path.patch delete mode 100644 0033-kpartx-fix-apparent-out-of-bounds-access.patch create mode 100644 0033-libmultipath-remove-_blacklist_exceptions-functions.patch delete mode 100644 0034-libmultipath-fix-apparent-overflow.patch create mode 100644 0034-libmultipath-fix-parser-issue-with-comments-in-strin.patch delete mode 100644 0035-libmultipath-fix-int-overflow-in-sysfs_set_scsi_tmo.patch create mode 100644 0035-libmultipath-invert-regexes-that-start-with-exclamat.patch delete mode 100644 0036-libmultipath-fix-enum-misuse-for-find_multipaths.patch create mode 100644 0036-multipath-Fix-compiler-warnings-when-built-without-s.patch delete mode 100644 0037-libmultipath-fix-possible-NULL-dereference.patch create mode 100644 0037-libmultipath-fix-sysfs-dev_loss_tmo-parsing.patch delete mode 100644 0038-fix-syntax-error.patch create mode 100644 0038-kpartx-read-devices-with-direct-IO.patch delete mode 100644 0039-bugfix-change-log-level-to-info-if-alua-is-not-support-by-s.patch create mode 100644 0039-kpartx-handle-alternate-bsd-disklabel-location.patch delete mode 100644 0040-bugfix-clear-mpp-path-reference-when-path-is-freed-otherwis.patch create mode 100644 0040-libmultipath-fix-checker-detection-for-nvme-devices.patch delete mode 100644 0041-bugfix-libmultipath-fix-memory-leaks-from-scandir-use.patch create mode 100644 0041-libmultipath-make-dm_get_map-status-return-codes-sym.patch delete mode 100644 0042-bugfix-libmultipath-fix-memory-leak-in-disassemble_map.patch create mode 100644 0042-multipathd-fix-check_path-errors-with-removed-map.patch create mode 100644 0043-libmultipath-make-dm_flush_maps-only-return-0-on-suc.patch delete mode 100644 0043-multipathd-fix-mpp-hwe-handling-when-paths-are-freed.patch delete mode 100644 0044-bugfix-check-close-return-value.patch create mode 100644 0044-multipathd-add-del-maps-multipathd-command.patch create mode 100644 0045-multipath-make-flushing-maps-work-like-other-command.patch delete mode 100644 0046-change-kpartx-file-and-default-bindir.patch create mode 100644 0046-multipath-delegate-flushing-maps-to-multipathd.patch create mode 100644 0047-multipath-add-option-to-skip-multipathd-delegation.patch delete mode 100644 0047-multipathd-ignore-failed-wwid-recheck.patch create mode 100644 0048-Makefile.inc-trim-extra-information-from-systemd-ver.patch delete mode 100644 0048-libmultipath-group_by_prio-fix-signedness-bug.patch create mode 100644 0049-kpartx-fix-Wsign-compare-error.patch delete mode 100644 0049-multipathd-handle-NULL-return-from-genhelp_handler.patch rename 0011-change-order-of-multipath.rules.patch => 0050-RH-fixup-udev-rules-for-redhat.patch (47%) delete mode 100644 0050-libmultipath-fix-parsing-of-VPD-83-type-1-T10-vendor.patch rename 0012-RH-Remove-the-property-blacklist-exception-builtin.patch => 0051-RH-Remove-the-property-blacklist-exception-builtin.patch (56%) delete mode 100644 0051-libmultipath-Fix-buffer-overflow-in-parse_vpd_pg80.patch create mode 100644 0052-RH-don-t-start-without-a-config-file.patch delete mode 100644 0052-libmultipath-fix-another-WWID-overflow-in-parse_vpd_.patch create mode 100644 0053-RH-use-rpm-optflags-if-present.patch delete mode 100644 0053-libmultipath-fix-possible-WWID-overflow-in-parse_vpd.patch rename 0013-RH-add-mpathconf.patch => 0054-RH-add-mpathconf.patch (74%) delete mode 100644 0054-libmultipath-fix-parsing-of-SCSI-name-string-iqn-for.patch create mode 100644 0055-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch delete mode 100644 0055-libmultipath-fix-double-free-in-pgpolicyfn-error-pat.patch create mode 100644 0056-RH-warn-on-invalid-regex-instead-of-failing.patch delete mode 100644 0056-libmultipath-fix-files-read-from-config_dir.patch rename 0045-fix-find-multipath-failure.patch => 0057-RH-reset-default-find_mutipaths-value-to-off.patch (55%) delete mode 100644 0057-libmultipath-fix-sgio_get_vpd-looping.patch create mode 100644 0058-RH-Fix-nvme-compilation-warning.patch create mode 100644 0059-RH-attempt-to-get-ANA-info-via-sysfs-first.patch create mode 100644 0060-RH-work-around-gcc-10-format-truncation-issue.patch create mode 100644 multipath-tools-0.8.4.tgz delete mode 100644 multipath-tools-ef6d98b.tgz diff --git a/0000-libmultipath-remove-last-of-rbd-code.patch b/0000-libmultipath-remove-last-of-rbd-code.patch deleted file mode 100644 index 7f26eb8..0000000 --- a/0000-libmultipath-remove-last-of-rbd-code.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Benjamin Marzinski -Date: Fri, 1 Jun 2018 16:30:44 -0500 -Subject: [PATCH] libmultipath: remove last of rbd code - -My previous patch to remove the rbd code missed a little bit. - -Signed-off-by: Benjamin Marzinski ---- - kpartx/del-part-nodes.rules | 2 +- - libmultipath/structs.h | 1 - - 2 files changed, 1 insertion(+), 2 deletions(-) - -diff --git a/kpartx/del-part-nodes.rules b/kpartx/del-part-nodes.rules -index 17bc505..0ceecf5 100644 ---- a/kpartx/del-part-nodes.rules -+++ b/kpartx/del-part-nodes.rules -@@ -10,7 +10,7 @@ - # or create an udev rule file that sets ENV{DONT_DEL_PART_NODES}="1". - - SUBSYSTEM!="block", GOTO="end_del_part_nodes" --KERNEL!="sd*|dasd*|rbd*", GOTO="end_del_part_nodes" -+KERNEL!="sd*|dasd*", GOTO="end_del_part_nodes" - ACTION!="add|change", GOTO="end_del_part_nodes" - ENV{DEVTYPE}=="partition", GOTO="end_del_part_nodes" - -diff --git a/libmultipath/structs.h b/libmultipath/structs.h -index e5b698b..ca14315 100644 ---- a/libmultipath/structs.h -+++ b/libmultipath/structs.h -@@ -61,7 +61,6 @@ enum sysfs_buses { - SYSFS_BUS_IDE, - SYSFS_BUS_CCW, - SYSFS_BUS_CCISS, -- SYSFS_BUS_RBD, - SYSFS_BUS_NVME, - }; - --- -2.7.4 - diff --git a/0001-libmpathpersist-limit-PRIN-allocation-length-to-8192.patch b/0001-libmpathpersist-limit-PRIN-allocation-length-to-8192.patch new file mode 100644 index 0000000..d40166a --- /dev/null +++ b/0001-libmpathpersist-limit-PRIN-allocation-length-to-8192.patch @@ -0,0 +1,35 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Fri, 6 Mar 2020 21:50:30 +0100 +Subject: [PATCH] libmpathpersist: limit PRIN allocation length to 8192 bytes + +Some targets (notably the qemu-pr-helper) don't support PERSISTENT +RESERVE IN commands with more than 8192 bytes allocation length. +While I have found no explicit requirement in the SCSI specs that +the allocation lengh may not exceed 8k, an 8k limit is also enforced +by sg_persist(8), and actually by mpathpersist itself for the +--allocation-length option, but not for the auto-determined length. + +Fix that. + +Reviewed-by: Benjamin Marzinski +Signed-off-by: Benjamin Marzinski +--- + libmpathpersist/mpath_pr_ioctl.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/libmpathpersist/mpath_pr_ioctl.c b/libmpathpersist/mpath_pr_ioctl.c +index 74b26b0c..1a28cba7 100644 +--- a/libmpathpersist/mpath_pr_ioctl.c ++++ b/libmpathpersist/mpath_pr_ioctl.c +@@ -543,5 +543,7 @@ int get_prin_length(int rq_servact) + mx_resp_len = 0; + break; + } ++ if (mx_resp_len > MPATH_MAX_PARAM_LEN) ++ mx_resp_len = MPATH_MAX_PARAM_LEN; + return mx_resp_len; + } +-- +2.17.2 + diff --git a/0001-libmultipath-fix-detect-alua-corner-case.patch b/0001-libmultipath-fix-detect-alua-corner-case.patch deleted file mode 100644 index 6d6fa64..0000000 --- a/0001-libmultipath-fix-detect-alua-corner-case.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Benjamin Marzinski -Date: Fri, 8 Jun 2018 17:12:37 -0500 -Subject: [PATCH] libmultipath: fix detect alua corner case - -If retain_attach_hw_handler = no, then the paths tpgs state will never -be checked, and the multipath device will always select the alua -handler, if no other handler is selected. the paths tpgs state -should be checked, regardless of the retain_hwhandler value. - -Signed-off-by: Benjamin Marzinski ---- - libmultipath/propsel.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/libmultipath/propsel.c b/libmultipath/propsel.c -index af3ed62..fdb5953 100644 ---- a/libmultipath/propsel.c -+++ b/libmultipath/propsel.c -@@ -420,9 +420,11 @@ int select_hwhandler(struct config *conf, struct multipath *mp) - bool all_tpgs = true; - - dh_state = &handler[2]; -+ -+ vector_foreach_slot(mp->paths, pp, i) -+ all_tpgs = all_tpgs && (pp->tpgs > 0); - if (mp->retain_hwhandler != RETAIN_HWHANDLER_OFF) { - vector_foreach_slot(mp->paths, pp, i) { -- all_tpgs = all_tpgs && (pp->tpgs > 0); - if (get_dh_state(pp, dh_state, sizeof(handler) - 2) > 0 - && strcmp(dh_state, "detached")) { - memcpy(handler, "1 ", 2); --- -2.7.4 - diff --git a/0002-libmpathpersist-format_transportids-avoid-PROUT-over.patch b/0002-libmpathpersist-format_transportids-avoid-PROUT-over.patch new file mode 100644 index 0000000..6164b26 --- /dev/null +++ b/0002-libmpathpersist-format_transportids-avoid-PROUT-over.patch @@ -0,0 +1,93 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Fri, 6 Mar 2020 23:33:04 +0100 +Subject: [PATCH] libmpathpersist: format_transportids(): avoid PROUT overflow + +This limits the PERSISTENT RESERVE OUT data size to max. 8192 bytes. + +Signed-off-by: Benjamin Marzinski +--- + libmpathpersist/mpath_pr_ioctl.c | 31 +++++++++++++++++++++++++++++-- + 1 file changed, 29 insertions(+), 2 deletions(-) + +diff --git a/libmpathpersist/mpath_pr_ioctl.c b/libmpathpersist/mpath_pr_ioctl.c +index 1a28cba7..c78e8000 100644 +--- a/libmpathpersist/mpath_pr_ioctl.c ++++ b/libmpathpersist/mpath_pr_ioctl.c +@@ -1,5 +1,6 @@ + #include + #include ++#include + + #include + #include +@@ -138,38 +139,64 @@ retry : + return status; + } + ++/* ++ * Helper macro to avoid overflow of prout_param_descriptor in ++ * format_transportids(). Data must not be written past ++ * MPATH_MAX_PARAM_LEN bytes from struct prout_param_descriptor. ++ */ ++#define check_overflow(ofs, n, start, label) \ ++ do { \ ++ if ((ofs) + (n) + \ ++ offsetof(struct prout_param_descriptor, private_buffer) \ ++ > MPATH_MAX_PARAM_LEN) \ ++ { \ ++ (ofs) = (start); \ ++ goto label; \ ++ } \ ++ } while(0) ++ + uint32_t format_transportids(struct prout_param_descriptor *paramp) + { + unsigned int i = 0, len; + uint32_t buff_offset = 4; +- memset(paramp->private_buffer, 0, MPATH_MAX_PARAM_LEN); ++ memset(paramp->private_buffer, 0, sizeof(paramp->private_buffer)); + for (i=0; i < paramp->num_transportid; i++ ) + { ++ uint32_t start_offset = buff_offset; ++ ++ check_overflow(buff_offset, 1, start_offset, end_loop); + paramp->private_buffer[buff_offset] = (uint8_t)((paramp->trnptid_list[i]->format_code & 0xff)| + (paramp->trnptid_list[i]->protocol_id & 0xff)); + buff_offset += 1; + switch(paramp->trnptid_list[i]->protocol_id) + { + case MPATH_PROTOCOL_ID_FC: ++ check_overflow(buff_offset, 7 + 8 + 8, ++ start_offset, end_loop); + buff_offset += 7; + memcpy(¶mp->private_buffer[buff_offset], ¶mp->trnptid_list[i]->n_port_name, 8); + buff_offset +=8 ; + buff_offset +=8 ; + break; + case MPATH_PROTOCOL_ID_SAS: ++ check_overflow(buff_offset, 3 + 12, ++ start_offset, end_loop); + buff_offset += 3; + memcpy(¶mp->private_buffer[buff_offset], ¶mp->trnptid_list[i]->sas_address, 8); + buff_offset += 12; + break; + case MPATH_PROTOCOL_ID_ISCSI: +- buff_offset += 1; + len = (paramp->trnptid_list[i]->iscsi_name[1] & 0xff)+2; ++ check_overflow(buff_offset, 1 + len, ++ start_offset, end_loop); ++ buff_offset += 1; + memcpy(¶mp->private_buffer[buff_offset], ¶mp->trnptid_list[i]->iscsi_name,len); + buff_offset += len ; + break; + } + + } ++end_loop: + buff_offset -= 4; + paramp->private_buffer[0] = (unsigned char)((buff_offset >> 24) & 0xff); + paramp->private_buffer[1] = (unsigned char)((buff_offset >> 16) & 0xff); +-- +2.17.2 + diff --git a/0002-multipath-fix-setting-conf-version.patch b/0002-multipath-fix-setting-conf-version.patch deleted file mode 100644 index 624f45e..0000000 --- a/0002-multipath-fix-setting-conf-version.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Benjamin Marzinski -Date: Fri, 8 Jun 2018 17:23:07 -0500 -Subject: [PATCH] multipath: fix setting conf->version - -Commit d3b71498 stopped multipath from setting conf->version. Instead, -it was always being set to 0.0.0. Multipathd was still setting this -correctly. - -Fixes: d3b71498 "multipath: fix rcu thread cancellation hang" -Signed-off-by: Benjamin Marzinski ---- - libmultipath/devmapper.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c -index f2befad..8136d15 100644 ---- a/libmultipath/devmapper.c -+++ b/libmultipath/devmapper.c -@@ -245,13 +245,13 @@ void libmp_dm_init(void) - int verbosity; - unsigned int version[3]; - -+ if (dm_prereq(version)) -+ exit(1); - conf = get_multipath_config(); - verbosity = conf->verbosity; -- memcpy(version, conf->version, sizeof(version)); -+ memcpy(conf->version, version, sizeof(version)); - put_multipath_config(conf); - dm_init(verbosity); -- if (dm_prereq(version)) -- exit(1); - dm_udev_set_sync_support(libmp_dm_udev_sync); - } - --- -2.7.4 - diff --git a/0003-libmpathpersist-mpath_format_readfullstatus-use-real.patch b/0003-libmpathpersist-mpath_format_readfullstatus-use-real.patch new file mode 100644 index 0000000..6d0cf1e --- /dev/null +++ b/0003-libmpathpersist-mpath_format_readfullstatus-use-real.patch @@ -0,0 +1,54 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Fri, 6 Mar 2020 23:46:47 +0100 +Subject: [PATCH] libmpathpersist: mpath_format_readfullstatus(): use real + buffer size + +This changes no semantics, but it will allow changing the size of +prin_readfd.private_buffer in a follow-up patch. + +Reviewed-by: Benjamin Marzinski +Signed-off-by: Benjamin Marzinski +--- + libmpathpersist/mpath_pr_ioctl.c | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +diff --git a/libmpathpersist/mpath_pr_ioctl.c b/libmpathpersist/mpath_pr_ioctl.c +index c78e8000..fadc9e10 100644 +--- a/libmpathpersist/mpath_pr_ioctl.c ++++ b/libmpathpersist/mpath_pr_ioctl.c +@@ -238,6 +238,8 @@ static void mpath_format_readfullstatus(struct prin_resp *pr_buff) + uint32_t additional_length, k, tid_len_len = 0; + char tempbuff[MPATH_MAX_PARAM_LEN]; + struct prin_fulldescr fdesc; ++ static const int pbuf_size = ++ sizeof(pr_buff->prin_descriptor.prin_readfd.private_buffer); + + convert_be32_to_cpu(&pr_buff->prin_descriptor.prin_readfd.prgeneration); + convert_be32_to_cpu(&pr_buff->prin_descriptor.prin_readfd.number_of_descriptor); +@@ -249,16 +251,18 @@ static void mpath_format_readfullstatus(struct prin_resp *pr_buff) + } + + additional_length = pr_buff->prin_descriptor.prin_readfd.number_of_descriptor; +- if (additional_length > MPATH_MAX_PARAM_LEN) { ++ if (additional_length > pbuf_size) { + condlog(3, "PRIN length %u exceeds max length %d", additional_length, +- MPATH_MAX_PARAM_LEN); ++ pbuf_size); + return; + } + + memset(&fdesc, 0, sizeof(struct prin_fulldescr)); + +- memcpy( tempbuff, pr_buff->prin_descriptor.prin_readfd.private_buffer,MPATH_MAX_PARAM_LEN ); +- memset(&pr_buff->prin_descriptor.prin_readfd.private_buffer, 0, MPATH_MAX_PARAM_LEN); ++ memcpy( tempbuff, pr_buff->prin_descriptor.prin_readfd.private_buffer, ++ pbuf_size); ++ memset(&pr_buff->prin_descriptor.prin_readfd.private_buffer, 0, ++ pbuf_size); + + p =(unsigned char *)tempbuff; + ppbuff = (char *)pr_buff->prin_descriptor.prin_readfd.private_buffer; +-- +2.17.2 + diff --git a/0003-mpathpersist-add-param-alltgpt-option.patch b/0003-mpathpersist-add-param-alltgpt-option.patch deleted file mode 100644 index 8485d37..0000000 --- a/0003-mpathpersist-add-param-alltgpt-option.patch +++ /dev/null @@ -1,152 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Benjamin Marzinski -Date: Tue, 26 Jun 2018 16:30:11 -0500 -Subject: [PATCH] mpathpersist: add --param-alltgpt option - -From the limited testing I've been able to do, commit 5b54e772 -"mpathpersist: add all_tg_pt option", does appear to enable ---param-alltgpt to work correctly on devices that accept the ALL_TG_PT -flag, so I've added the option to mpathpersist. - -Signed-off-by: Benjamin Marzinski ---- - libmpathpersist/mpath_persist.c | 10 ++++------ - mpathpersist/main.c | 11 ++++++++--- - mpathpersist/main.h | 1 + - mpathpersist/mpathpersist.8 | 4 ++++ - multipath/multipath.conf.5 | 8 +++++--- - 5 files changed, 22 insertions(+), 12 deletions(-) - -diff --git a/libmpathpersist/mpath_persist.c b/libmpathpersist/mpath_persist.c -index 6e9e67f..61818e0 100644 ---- a/libmpathpersist/mpath_persist.c -+++ b/libmpathpersist/mpath_persist.c -@@ -466,11 +466,14 @@ int mpath_prout_reg(struct multipath *mpp,int rq_servact, int rq_scope, - int rc; - int count=0; - int status = MPATH_PR_SUCCESS; -+ int all_tg_pt; - uint64_t sa_key = 0; - - if (!mpp) - return MPATH_PR_DMMP_ERROR; - -+ all_tg_pt = (mpp->all_tg_pt == ALL_TG_PT_ON || -+ paramp->sa_flags & MPATH_F_ALL_TG_PT_MASK); - active_pathcount = pathcount(mpp, PATH_UP) + pathcount(mpp, PATH_GHOST); - - if (active_pathcount == 0) { -@@ -478,10 +481,6 @@ int mpath_prout_reg(struct multipath *mpp,int rq_servact, int rq_scope, - return MPATH_PR_DMMP_ERROR; - } - -- if ( paramp->sa_flags & MPATH_F_ALL_TG_PT_MASK ) { -- condlog (1, "Warning: ALL_TG_PT is set. Configuration not supported"); -- } -- - struct threadinfo thread[active_pathcount]; - int hosts[active_pathcount]; - -@@ -518,8 +517,7 @@ int mpath_prout_reg(struct multipath *mpp,int rq_servact, int rq_scope, - condlog (1, "%s: %s path not up. Skip.", mpp->wwid, pp->dev); - continue; - } -- if (mpp->all_tg_pt == ALL_TG_PT_ON && -- pp->sg_id.host_no != -1) { -+ if (all_tg_pt && pp->sg_id.host_no != -1) { - for (k = 0; k < count; k++) { - if (pp->sg_id.host_no == hosts[k]) { - condlog(3, "%s: %s host %d matches skip.", pp->wwid, pp->dev, pp->sg_id.host_no); -diff --git a/mpathpersist/main.c b/mpathpersist/main.c -index 5b37f3a..99151fe 100644 ---- a/mpathpersist/main.c -+++ b/mpathpersist/main.c -@@ -118,7 +118,7 @@ int main (int argc, char * argv[]) - { - int option_index = 0; - -- c = getopt_long (argc, argv, "v:Cd:hHioZK:S:PAT:skrGILcRX:l:", -+ c = getopt_long (argc, argv, "v:Cd:hHioYZK:S:PAT:skrGILcRX:l:", - long_options, &option_index); - if (c == -1) - break; -@@ -158,6 +158,10 @@ int main (int argc, char * argv[]) - prout_flag = 1; - break; - -+ case 'Y': -+ param_alltgpt = 1; -+ ++num_prout_param; -+ break; - case 'Z': - param_aptpl = 1; - ++num_prout_param; -@@ -443,9 +447,9 @@ int main (int argc, char * argv[]) - } - - if (param_alltgpt) -- paramp->sa_flags |= 0x4; -+ paramp->sa_flags |= MPATH_F_ALL_TG_PT_MASK; - if (param_aptpl) -- paramp->sa_flags |= 0x1; -+ paramp->sa_flags |= MPATH_F_APTPL_MASK; - - if (num_transport) - { -@@ -698,6 +702,7 @@ static void usage(void) - " --hex|-H output response in hex\n" - " --in|-i request PR In command \n" - " --out|-o request PR Out command\n" -+ " --param-alltgpt|-Y PR Out parameter 'ALL_TG_PT\n" - " --param-aptpl|-Z PR Out parameter 'APTPL'\n" - " --read-keys|-k PR In: Read Keys\n" - " --param-sark=SARK|-S SARK PR Out parameter service " -diff --git a/mpathpersist/main.h b/mpathpersist/main.h -index 5c0e089..beb8a21 100644 ---- a/mpathpersist/main.h -+++ b/mpathpersist/main.h -@@ -6,6 +6,7 @@ static struct option long_options[] = { - {"hex", 0, NULL, 'H'}, - {"in", 0, NULL, 'i'}, - {"out", 0, NULL, 'o'}, -+ {"param-alltgpt", 0, NULL, 'Y'}, - {"param-aptpl", 0, NULL, 'Z'}, - {"param-rk", 1, NULL, 'K'}, - {"param-sark", 1, NULL, 'S'}, -diff --git a/mpathpersist/mpathpersist.8 b/mpathpersist/mpathpersist.8 -index a8982e6..885491d 100644 ---- a/mpathpersist/mpathpersist.8 -+++ b/mpathpersist/mpathpersist.8 -@@ -87,6 +87,10 @@ Request PR In command. - Request PR Out command. - . - .TP -+.B \--param-alltgpt|\-Y -+PR Out parameter 'ALL_TG_PT'. -+. -+.TP - .B \--param-aptpl|\-Z - PR Out parameter 'APTPL'. - . -diff --git a/multipath/multipath.conf.5 b/multipath/multipath.conf.5 -index e4b25a0..fb863fd 100644 ---- a/multipath/multipath.conf.5 -+++ b/multipath/multipath.conf.5 -@@ -756,9 +756,11 @@ The default is: \fB\fR - . - .TP - .B all_tg_pt --This must be set to \fByes\fR to successfully use mpathpersist on arrays that --automatically set and clear registration keys on all target ports from a --host, instead of per target port per host. -+Set the 'all targets ports' flag when registering keys with mpathpersist. Some -+arrays automatically set and clear registration keys on all target ports from a -+host, instead of per target port per host. The ALL_TG_PT flag must be set to -+successfully use mpathpersist on these arrays. Setting this option is identical -+to calling mpathpersist with \fI--param-alltgpt\fR - .RS - .TP - The default is: \fBno\fR --- -2.7.4 - diff --git a/0004-libmultipath-assign-variable-to-make-gcc-happy.patch b/0004-libmultipath-assign-variable-to-make-gcc-happy.patch new file mode 100644 index 0000000..8db8dd9 --- /dev/null +++ b/0004-libmultipath-assign-variable-to-make-gcc-happy.patch @@ -0,0 +1,42 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Wed, 25 Mar 2020 23:22:46 -0500 +Subject: [PATCH] libmultipath: assign variable to make gcc happy +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +There is nothing wrong with is_queueing not being set at the start +of __set_no_path_retry(), it will always get set before it is accessed, +but gcc 8.2.1 is failing with + +structs_vec.c: In function ‘__set_no_path_retry’: +structs_vec.c:339:7: error: ‘is_queueing’ may be used uninitialized in +this function [-Werror=maybe-uninitialized] + bool is_queueing; + ^~~~~~~~~~~ + +so, assign a value to make it happy. + +Reviewed-by: Martin Wilck +Signed-off-by: Benjamin Marzinski +--- + libmultipath/structs_vec.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libmultipath/structs_vec.c b/libmultipath/structs_vec.c +index 3dbbaa0f..077f2e42 100644 +--- a/libmultipath/structs_vec.c ++++ b/libmultipath/structs_vec.c +@@ -336,7 +336,7 @@ static void leave_recovery_mode(struct multipath *mpp) + + void __set_no_path_retry(struct multipath *mpp, bool check_features) + { +- bool is_queueing; ++ bool is_queueing = false; /* assign a value to make gcc happy */ + + check_features = check_features && mpp->features != NULL; + if (check_features) +-- +2.17.2 + diff --git a/0004-libmutipath-remove-unused-IDE-bus-type.patch b/0004-libmutipath-remove-unused-IDE-bus-type.patch deleted file mode 100644 index 5dda5a7..0000000 --- a/0004-libmutipath-remove-unused-IDE-bus-type.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Benjamin Marzinski -Date: Tue, 26 Jun 2018 16:45:48 -0500 -Subject: [PATCH] libmutipath: remove unused IDE bus type - -Signed-off-by: Benjamin Marzinski ---- - libmultipath/structs.h | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/libmultipath/structs.h b/libmultipath/structs.h -index ca14315..0a2623a 100644 ---- a/libmultipath/structs.h -+++ b/libmultipath/structs.h -@@ -58,7 +58,6 @@ enum failback_mode { - enum sysfs_buses { - SYSFS_BUS_UNDEF, - SYSFS_BUS_SCSI, -- SYSFS_BUS_IDE, - SYSFS_BUS_CCW, - SYSFS_BUS_CCISS, - SYSFS_BUS_NVME, --- -2.7.4 - diff --git a/0005-libmutipath-don-t-close-fd-on-dm_lib_release.patch b/0005-libmutipath-don-t-close-fd-on-dm_lib_release.patch new file mode 100644 index 0000000..dd4af7e --- /dev/null +++ b/0005-libmutipath-don-t-close-fd-on-dm_lib_release.patch @@ -0,0 +1,66 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Wed, 25 Mar 2020 23:22:47 -0500 +Subject: [PATCH] libmutipath: don't close fd on dm_lib_release + +If dm_hold_control_open() isn't set, when dm_lib_release() is called, it +will close the control fd. The control fd will get re-opened on the next +dm_task_run() call, but if there is a dm_task_run() call already +in progress in another thread, it can fail. Since many of the +device-mapper callouts happen with the vecs lock held, this wasn't too +noticeable, but there is code that calls dm_task_run() without the +vecs lock held, notably the dmevent waiter code. + +Since, as Martin pointed out, dm_hold_control_open() hasn't always +existed in libdevmapper, check if it's supported on compilation, +and update the version requirements if so. + +Signed-off-by: Benjamin Marzinski +--- + libmultipath/Makefile | 4 ++++ + libmultipath/devmapper.c | 7 ++++++- + 2 files changed, 10 insertions(+), 1 deletion(-) + +diff --git a/libmultipath/Makefile b/libmultipath/Makefile +index e5651e49..ad690a49 100644 +--- a/libmultipath/Makefile ++++ b/libmultipath/Makefile +@@ -36,6 +36,10 @@ ifneq ($(call check_func,dm_task_deferred_remove,/usr/include/libdevmapper.h),0) + CFLAGS += -DLIBDM_API_DEFERRED + endif + ++ifneq ($(call check_func,dm_hold_control_dev,/usr/include/libdevmapper.h),0) ++ CFLAGS += -DLIBDM_API_HOLD_CONTROL ++endif ++ + OBJS = memory.o parser.o vector.o devmapper.o callout.o \ + hwtable.o blacklist.o util.o dmparser.o config.o \ + structs.o discovery.o propsel.o dict.o \ +diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c +index bed8ddc6..13a1cf53 100644 +--- a/libmultipath/devmapper.c ++++ b/libmultipath/devmapper.c +@@ -108,7 +108,9 @@ dm_lib_prereq (void) + { + char version[64]; + int v[3]; +-#if defined(LIBDM_API_DEFERRED) ++#if defined(LIBDM_API_HOLD_CONTROL) ++ int minv[3] = {1, 2, 111}; ++#elif defined(LIBDM_API_DEFERRED) + int minv[3] = {1, 2, 89}; + #elif defined(DM_SUBSYSTEM_UDEV_FLAG0) + int minv[3] = {1, 2, 82}; +@@ -254,6 +256,9 @@ void libmp_dm_init(void) + memcpy(conf->version, version, sizeof(version)); + put_multipath_config(conf); + dm_init(verbosity); ++#ifdef LIBDM_API_HOLD_CONTROL ++ dm_hold_control_dev(1); ++#endif + dm_udev_set_sync_support(libmp_dm_udev_sync); + } + +-- +2.17.2 + diff --git a/0005-multipathd-add-new-protocol-path-wildcard.patch b/0005-multipathd-add-new-protocol-path-wildcard.patch deleted file mode 100644 index 479788e..0000000 --- a/0005-multipathd-add-new-protocol-path-wildcard.patch +++ /dev/null @@ -1,92 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Benjamin Marzinski -Date: Tue, 26 Jun 2018 17:04:57 -0500 -Subject: [PATCH] multipathd: add new protocol path wildcard - -This patch adds a new path wildcard 'P', that will print the path's -protocol. For scsi devices, it will additionally print the transport -protocol being used. - -Signed-off-by: Benjamin Marzinski ---- - libmultipath/print.c | 43 +++++++++++++++++++++++++++++++++++++++++++ - libmultipath/print.h | 2 ++ - 2 files changed, 45 insertions(+) - -diff --git a/libmultipath/print.c b/libmultipath/print.c -index 222d270..ecfcb48 100644 ---- a/libmultipath/print.c -+++ b/libmultipath/print.c -@@ -638,6 +638,48 @@ snprint_path_failures(char * buff, size_t len, const struct path * pp) - return snprint_int(buff, len, pp->failcount); - } - -+/* if you add a protocol string bigger than "scsi:unspec" you must -+ * also change PROTOCOL_BUF_SIZE */ -+int -+snprint_path_protocol(char * buff, size_t len, const struct path * pp) -+{ -+ switch (pp->bus) { -+ case SYSFS_BUS_SCSI: -+ switch (pp->sg_id.proto_id) { -+ case SCSI_PROTOCOL_FCP: -+ return snprintf(buff, len, "scsi:fcp"); -+ case SCSI_PROTOCOL_SPI: -+ return snprintf(buff, len, "scsi:spi"); -+ case SCSI_PROTOCOL_SSA: -+ return snprintf(buff, len, "scsi:ssa"); -+ case SCSI_PROTOCOL_SBP: -+ return snprintf(buff, len, "scsi:sbp"); -+ case SCSI_PROTOCOL_SRP: -+ return snprintf(buff, len, "scsi:srp"); -+ case SCSI_PROTOCOL_ISCSI: -+ return snprintf(buff, len, "scsi:iscsi"); -+ case SCSI_PROTOCOL_SAS: -+ return snprintf(buff, len, "scsi:sas"); -+ case SCSI_PROTOCOL_ADT: -+ return snprintf(buff, len, "scsi:adt"); -+ case SCSI_PROTOCOL_ATA: -+ return snprintf(buff, len, "scsi:ata"); -+ case SCSI_PROTOCOL_UNSPEC: -+ default: -+ return snprintf(buff, len, "scsi:unspec"); -+ } -+ case SYSFS_BUS_CCW: -+ return snprintf(buff, len, "ccw"); -+ case SYSFS_BUS_CCISS: -+ return snprintf(buff, len, "cciss"); -+ case SYSFS_BUS_NVME: -+ return snprintf(buff, len, "nvme"); -+ case SYSFS_BUS_UNDEF: -+ default: -+ return snprintf(buff, len, "undef"); -+ } -+} -+ - struct multipath_data mpd[] = { - {'n', "name", 0, snprint_name}, - {'w', "uuid", 0, snprint_multipath_uuid}, -@@ -687,6 +729,7 @@ struct path_data pd[] = { - {'a', "host adapter", 0, snprint_host_adapter}, - {'G', "foreign", 0, snprint_path_foreign}, - {'0', "failures", 0, snprint_path_failures}, -+ {'P', "protocol", 0, snprint_path_protocol}, - {0, NULL, 0 , NULL} - }; - -diff --git a/libmultipath/print.h b/libmultipath/print.h -index 608b7d5..e2fb865 100644 ---- a/libmultipath/print.h -+++ b/libmultipath/print.h -@@ -133,6 +133,8 @@ int snprint_host_wwnn (char *, size_t, const struct path *); - int snprint_host_wwpn (char *, size_t, const struct path *); - int snprint_tgt_wwnn (char *, size_t, const struct path *); - int snprint_tgt_wwpn (char *, size_t, const struct path *); -+#define PROTOCOL_BUF_SIZE sizeof("scsi:unspec") -+int snprint_path_protocol(char *, size_t, const struct path *); - - void _print_multipath_topology (const struct gen_multipath * gmp, - int verbosity); --- -2.7.4 - diff --git a/0006-libmultipath-add-protocol-blacklist-option.patch b/0006-libmultipath-add-protocol-blacklist-option.patch deleted file mode 100644 index 16a1899..0000000 --- a/0006-libmultipath-add-protocol-blacklist-option.patch +++ /dev/null @@ -1,425 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Benjamin Marzinski -Date: Thu, 28 Jun 2018 13:16:11 -0500 -Subject: [PATCH] libmultipath: add "protocol" blacklist option. - -Multiple users have requested an easy way to setup blacklists that do -things such as blacklisting all non FC and iSCSI devices. Currently -there is no easy way to do this, without knowing in advance what the -devices are. Looking into the udev property values, I didn't see a -consistent set of values that would worked for all the different types -of requests like this (which would have allowed us to solve this by -extending the "property" blacklist option to allow comparing values, -instead of just keywords). - -Instead I've opted to allow multipath to blacklist/whitelist devices -by the protocol strings printed by "multipathd: add new protocol path -wildcard". This check happens after multipath checks the "device" -keyword, and before it checks wwid. This gives users an easily -understandible method to set up these types of blacklists, without -needing to know the exact arrays being used. - -Signed-off-by: Benjamin Marzinski ---- - libmultipath/blacklist.c | 51 ++++++++++++++++++++++++++++++++++++++-------- - libmultipath/blacklist.h | 3 +++ - libmultipath/config.c | 15 ++++++++++++++ - libmultipath/config.h | 2 ++ - libmultipath/dict.c | 14 +++++++++++-- - libmultipath/discovery.c | 5 +++-- - libmultipath/print.c | 31 ++++++++++++++++++++++++++++ - multipath/multipath.conf.5 | 16 +++++++++++++-- - 8 files changed, 123 insertions(+), 14 deletions(-) - -diff --git a/libmultipath/blacklist.c b/libmultipath/blacklist.c -index 361c603..fdd36f7 100644 ---- a/libmultipath/blacklist.c -+++ b/libmultipath/blacklist.c -@@ -12,6 +12,8 @@ - #include "structs.h" - #include "config.h" - #include "blacklist.h" -+#include "structs_vec.h" -+#include "print.h" - - int store_ble(vector blist, char * str, int origin) - { -@@ -240,12 +242,14 @@ setup_default_blist (struct config * conf) - condlog(3, "%s: %s %s %s", dev, (M), wwid, (S)); \ - else if (env) \ - condlog(3, "%s: %s %s %s", dev, (M), env, (S)); \ -+ else if (protocol) \ -+ condlog(3, "%s: %s %s %s", dev, (M), protocol, (S)); \ - else \ - condlog(3, "%s: %s %s", dev, (M), (S)) - - void - log_filter (const char *dev, char *vendor, char *product, char *wwid, -- const char *env, int r) -+ const char *env, const char *protocol, int r) - { - /* - * Try to sort from most likely to least. -@@ -265,6 +269,9 @@ log_filter (const char *dev, char *vendor, char *product, char *wwid, - case MATCH_PROPERTY_BLIST: - LOG_BLIST("udev property", "blacklisted"); - break; -+ case MATCH_PROTOCOL_BLIST: -+ LOG_BLIST("protocol", "blacklisted"); -+ break; - case MATCH_DEVICE_BLIST_EXCEPT: - LOG_BLIST("vendor/product", "whitelisted"); - break; -@@ -280,6 +287,9 @@ log_filter (const char *dev, char *vendor, char *product, char *wwid, - case MATCH_PROPERTY_BLIST_MISSING: - LOG_BLIST("blacklisted,", "udev property missing"); - break; -+ case MATCH_PROTOCOL_BLIST_EXCEPT: -+ LOG_BLIST("protocol", "whitelisted"); -+ break; - } - } - -@@ -299,7 +309,7 @@ int - filter_device (vector blist, vector elist, char * vendor, char * product) - { - int r = _filter_device(blist, elist, vendor, product); -- log_filter(NULL, vendor, product, NULL, NULL, r); -+ log_filter(NULL, vendor, product, NULL, NULL, NULL, r); - return r; - } - -@@ -319,7 +329,7 @@ int - filter_devnode (vector blist, vector elist, char * dev) - { - int r = _filter_devnode(blist, elist, dev); -- log_filter(dev, NULL, NULL, NULL, NULL, r); -+ log_filter(dev, NULL, NULL, NULL, NULL, NULL, r); - return r; - } - -@@ -339,7 +349,29 @@ int - filter_wwid (vector blist, vector elist, char * wwid, char * dev) - { - int r = _filter_wwid(blist, elist, wwid); -- log_filter(dev, NULL, NULL, wwid, NULL, r); -+ log_filter(dev, NULL, NULL, wwid, NULL, NULL, r); -+ return r; -+} -+ -+static int -+_filter_protocol (vector blist, vector elist, const char * protocol_str) -+{ -+ if (_blacklist_exceptions(elist, protocol_str)) -+ return MATCH_PROTOCOL_BLIST_EXCEPT; -+ if (_blacklist(blist, protocol_str)) -+ return MATCH_PROTOCOL_BLIST; -+ return 0; -+} -+ -+int -+filter_protocol(vector blist, vector elist, struct path * pp) -+{ -+ char buf[PROTOCOL_BUF_SIZE]; -+ int r; -+ -+ snprint_path_protocol(buf, sizeof(buf), pp); -+ r = _filter_protocol(blist, elist, buf); -+ log_filter(pp->dev, NULL, NULL, NULL, NULL, buf, r); - return r; - } - -@@ -351,7 +383,6 @@ _filter_path (struct config * conf, struct path * pp) - r = filter_property(conf, pp->udev); - if (r > 0) - return r; -- - r = _filter_devnode(conf->blist_devnode, conf->elist_devnode,pp->dev); - if (r > 0) - return r; -@@ -359,6 +390,9 @@ _filter_path (struct config * conf, struct path * pp) - pp->vendor_id, pp->product_id); - if (r > 0) - return r; -+ r = filter_protocol(conf->blist_protocol, conf->elist_protocol, pp); -+ if (r > 0) -+ return r; - r = _filter_wwid(conf->blist_wwid, conf->elist_wwid, pp->wwid); - return r; - } -@@ -367,7 +401,8 @@ int - filter_path (struct config * conf, struct path * pp) - { - int r=_filter_path(conf, pp); -- log_filter(pp->dev, pp->vendor_id, pp->product_id, pp->wwid, NULL, r); -+ log_filter(pp->dev, pp->vendor_id, pp->product_id, pp->wwid, NULL, -+ NULL, r); - return r; - } - -@@ -402,7 +437,7 @@ filter_property(struct config * conf, struct udev_device * udev) - - r = _filter_property(conf, env); - if (r) { -- log_filter(devname, NULL, NULL, NULL, env, r); -+ log_filter(devname, NULL, NULL, NULL, env, NULL, r); - return r; - } - } -@@ -411,7 +446,7 @@ filter_property(struct config * conf, struct udev_device * udev) - * This is the inverse of the 'normal' matching; - * the environment variable _has_ to match. - */ -- log_filter(devname, NULL, NULL, NULL, NULL, -+ log_filter(devname, NULL, NULL, NULL, NULL, NULL, - MATCH_PROPERTY_BLIST_MISSING); - return MATCH_PROPERTY_BLIST_MISSING; - } -diff --git a/libmultipath/blacklist.h b/libmultipath/blacklist.h -index 0b028d4..f7beef2 100644 ---- a/libmultipath/blacklist.h -+++ b/libmultipath/blacklist.h -@@ -10,10 +10,12 @@ - #define MATCH_DEVNODE_BLIST 3 - #define MATCH_PROPERTY_BLIST 4 - #define MATCH_PROPERTY_BLIST_MISSING 5 -+#define MATCH_PROTOCOL_BLIST 6 - #define MATCH_WWID_BLIST_EXCEPT -MATCH_WWID_BLIST - #define MATCH_DEVICE_BLIST_EXCEPT -MATCH_DEVICE_BLIST - #define MATCH_DEVNODE_BLIST_EXCEPT -MATCH_DEVNODE_BLIST - #define MATCH_PROPERTY_BLIST_EXCEPT -MATCH_PROPERTY_BLIST -+#define MATCH_PROTOCOL_BLIST_EXCEPT -MATCH_PROTOCOL_BLIST - - struct blentry { - char * str; -@@ -36,6 +38,7 @@ int filter_wwid (vector, vector, char *, char *); - int filter_device (vector, vector, char *, char *); - int filter_path (struct config *, struct path *); - int filter_property(struct config *, struct udev_device *); -+int filter_protocol(vector, vector, struct path *); - int store_ble (vector, char *, int); - int set_ble_device (vector, char *, char *, int); - void free_blacklist (vector); -diff --git a/libmultipath/config.c b/libmultipath/config.c -index afa309d..0aef186 100644 ---- a/libmultipath/config.c -+++ b/libmultipath/config.c -@@ -623,11 +623,13 @@ free_config (struct config * conf) - free_blacklist(conf->blist_devnode); - free_blacklist(conf->blist_wwid); - free_blacklist(conf->blist_property); -+ free_blacklist(conf->blist_protocol); - free_blacklist_device(conf->blist_device); - - free_blacklist(conf->elist_devnode); - free_blacklist(conf->elist_wwid); - free_blacklist(conf->elist_property); -+ free_blacklist(conf->elist_protocol); - free_blacklist_device(conf->elist_device); - - free_mptable(conf->mptable); -@@ -780,6 +782,12 @@ load_config (char * file) - if (!conf->blist_property) - goto out; - } -+ if (conf->blist_protocol == NULL) { -+ conf->blist_protocol = vector_alloc(); -+ -+ if (!conf->blist_protocol) -+ goto out; -+ } - - if (conf->elist_devnode == NULL) { - conf->elist_devnode = vector_alloc(); -@@ -807,6 +815,13 @@ load_config (char * file) - if (!conf->elist_property) - goto out; - } -+ if (conf->elist_protocol == NULL) { -+ conf->elist_protocol = vector_alloc(); -+ -+ if (!conf->elist_protocol) -+ goto out; -+ } -+ - if (setup_default_blist(conf)) - goto out; - -diff --git a/libmultipath/config.h b/libmultipath/config.h -index 6bd42f0..7d0cd9a 100644 ---- a/libmultipath/config.h -+++ b/libmultipath/config.h -@@ -210,10 +210,12 @@ struct config { - vector blist_wwid; - vector blist_device; - vector blist_property; -+ vector blist_protocol; - vector elist_devnode; - vector elist_wwid; - vector elist_device; - vector elist_property; -+ vector elist_protocol; - }; - - extern struct udev * udev; -diff --git a/libmultipath/dict.c b/libmultipath/dict.c -index 15e7582..32524d5 100644 ---- a/libmultipath/dict.c -+++ b/libmultipath/dict.c -@@ -1291,9 +1291,12 @@ blacklist_handler(struct config *conf, vector strvec) - conf->blist_device = vector_alloc(); - if (!conf->blist_property) - conf->blist_property = vector_alloc(); -+ if (!conf->blist_protocol) -+ conf->blist_protocol = vector_alloc(); - - if (!conf->blist_devnode || !conf->blist_wwid || -- !conf->blist_device || !conf->blist_property) -+ !conf->blist_device || !conf->blist_property || -+ !conf->blist_protocol) - return 1; - - return 0; -@@ -1310,9 +1313,12 @@ blacklist_exceptions_handler(struct config *conf, vector strvec) - conf->elist_device = vector_alloc(); - if (!conf->elist_property) - conf->elist_property = vector_alloc(); -+ if (!conf->elist_protocol) -+ conf->elist_protocol = vector_alloc(); - - if (!conf->elist_devnode || !conf->elist_wwid || -- !conf->elist_device || !conf->elist_property) -+ !conf->elist_device || !conf->elist_property || -+ !conf->elist_protocol) - return 1; - - return 0; -@@ -1356,6 +1362,8 @@ declare_ble_handler(blist_wwid) - declare_ble_handler(elist_wwid) - declare_ble_handler(blist_property) - declare_ble_handler(elist_property) -+declare_ble_handler(blist_protocol) -+declare_ble_handler(elist_protocol) - - static int - snprint_def_uxsock_timeout(struct config *conf, char * buff, int len, -@@ -1627,6 +1635,7 @@ init_keywords(vector keywords) - install_keyword_multi("devnode", &ble_blist_devnode_handler, &snprint_ble_simple); - install_keyword_multi("wwid", &ble_blist_wwid_handler, &snprint_ble_simple); - install_keyword_multi("property", &ble_blist_property_handler, &snprint_ble_simple); -+ install_keyword_multi("protocol", &ble_blist_protocol_handler, &snprint_ble_simple); - install_keyword_multi("device", &ble_device_handler, NULL); - install_sublevel(); - install_keyword("vendor", &ble_blist_device_vendor_handler, &snprint_bled_vendor); -@@ -1636,6 +1645,7 @@ init_keywords(vector keywords) - install_keyword_multi("devnode", &ble_elist_devnode_handler, &snprint_ble_simple); - install_keyword_multi("wwid", &ble_elist_wwid_handler, &snprint_ble_simple); - install_keyword_multi("property", &ble_elist_property_handler, &snprint_ble_simple); -+ install_keyword_multi("protocol", &ble_elist_protocol_handler, &snprint_ble_simple); - install_keyword_multi("device", &ble_except_device_handler, NULL); - install_sublevel(); - install_keyword("vendor", &ble_elist_device_vendor_handler, &snprint_bled_vendor); -diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c -index 573d98b..e58a3fa 100644 ---- a/libmultipath/discovery.c -+++ b/libmultipath/discovery.c -@@ -1887,9 +1887,10 @@ int pathinfo(struct path *pp, struct config *conf, int mask) - - if (mask & DI_BLACKLIST && mask & DI_SYSFS) { - if (filter_device(conf->blist_device, conf->elist_device, -- pp->vendor_id, pp->product_id) > 0) { -+ pp->vendor_id, pp->product_id) > 0 || -+ filter_protocol(conf->blist_protocol, conf->elist_protocol, -+ pp) > 0) - return PATHINFO_SKIPPED; -- } - } - - path_state = path_offline(pp); -diff --git a/libmultipath/print.c b/libmultipath/print.c -index ecfcb48..9da6a77 100644 ---- a/libmultipath/print.c -+++ b/libmultipath/print.c -@@ -1688,6 +1688,19 @@ int snprint_blacklist_report(struct config *conf, char *buff, int len) - - if ((len - fwd - threshold) <= 0) - return len; -+ fwd += snprintf(buff + fwd, len - fwd, "protocol rules:\n" -+ "- blacklist:\n"); -+ if (!snprint_blacklist_group(buff, len, &fwd, &conf->blist_protocol)) -+ return len; -+ -+ if ((len - fwd - threshold) <= 0) -+ return len; -+ fwd += snprintf(buff + fwd, len - fwd, "- exceptions:\n"); -+ if (snprint_blacklist_group(buff, len, &fwd, &conf->elist_protocol) == 0) -+ return len; -+ -+ if ((len - fwd - threshold) <= 0) -+ return len; - fwd += snprintf(buff + fwd, len - fwd, "wwid rules:\n" - "- blacklist:\n"); - if (snprint_blacklist_group(buff, len, &fwd, &conf->blist_wwid) == 0) -@@ -1761,6 +1774,15 @@ static int snprint_blacklist(const struct config *conf, char *buff, int len) - if (fwd >= len) - return len; - } -+ vector_foreach_slot (conf->blist_protocol, ble, i) { -+ kw = find_keyword(conf->keywords, rootkw->sub, "protocol"); -+ if (!kw) -+ return 0; -+ fwd += snprint_keyword(buff + fwd, len - fwd, "\t%k %v\n", -+ kw, ble); -+ if (fwd >= len) -+ return len; -+ } - rootkw = find_keyword(conf->keywords, rootkw->sub, "device"); - if (!rootkw) - return 0; -@@ -1838,6 +1860,15 @@ static int snprint_blacklist_except(const struct config *conf, - if (fwd >= len) - return len; - } -+ vector_foreach_slot (conf->elist_protocol, ele, i) { -+ kw = find_keyword(conf->keywords, rootkw->sub, "protocol"); -+ if (!kw) -+ return 0; -+ fwd += snprint_keyword(buff + fwd, len - fwd, "\t%k %v\n", -+ kw, ele); -+ if (fwd >= len) -+ return len; -+ } - rootkw = find_keyword(conf->keywords, rootkw->sub, "device"); - if (!rootkw) - return 0; -diff --git a/multipath/multipath.conf.5 b/multipath/multipath.conf.5 -index fb863fd..6333366 100644 ---- a/multipath/multipath.conf.5 -+++ b/multipath/multipath.conf.5 -@@ -1205,9 +1205,21 @@ The default \fIblacklist exception\fR is: \fB(SCSI_IDENT_|ID_WWN)\fR, causing - well-behaved SCSI devices and devices that provide a WWN (World Wide Number) - to be included, and all others to be excluded. - .RE -+.TP -+.B protocol -+Regular expression for the protocol of a device to be excluded/included. -+.RS -+.PP -+The protocol strings that multipath recognizes are \fIscsi:fcp\fR, -+\fIscsi:spi\fR, \fIscsi:ssa\fR, \fIscsi:sbp\fR, \fIscsi:srp\fR, -+\fIscsi:iscsi\fR, \fIscsi:sas\fR, \fIscsi:adt\fR, \fIscsi:ata\fR, -+\fIscsi:unspec\fR, \fIccw\fR, \fIcciss\fR, \fInvme\fR, and \fIundef\fR. -+The protocol that a path is using can be viewed by running -+\fBmultipathd show paths format "%d %P"\fR -+.RE - .LP --For every device, these 4 blacklist criteria are evaluated in the the order --"property, dev\%node, device, wwid". If a device turns out to be -+For every device, these 5 blacklist criteria are evaluated in the the order -+"property, dev\%node, device, protocol, wwid". If a device turns out to be - blacklisted by any criterion, it's excluded from handling by multipathd, and - the later criteria aren't evaluated any more. For each - criterion, the whitelist takes precedence over the blacklist if a device --- -2.7.4 - diff --git a/0006-libmultipath-allow-force-reload-with-no-active-paths.patch b/0006-libmultipath-allow-force-reload-with-no-active-paths.patch new file mode 100644 index 0000000..77d5474 --- /dev/null +++ b/0006-libmultipath-allow-force-reload-with-no-active-paths.patch @@ -0,0 +1,64 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Wed, 25 Mar 2020 23:22:48 -0500 +Subject: [PATCH] libmultipath: allow force reload with no active paths + +If the partition information has changed on multipath devices (say, +because it was updated on another node that has access to the same +storage), users expect that running "multipathd reconfigure" will update +that. However, if the checkers for the multipath device are pending for +too long when the the device is reconfigured, multipathd will give up +waiting for them, and refuse to reload the device, since there are no +active paths. This means that no kpartx update will be triggered. + +Multipath is fully capable of reloading a multipath device that has no +active paths. This has been possible for years. If multipath is supposed +to reload the device, it should do so, even if there are no active paths. + +Generally, when multipath is force reloaded, kpartx will be updated. +However when a device is reloaded with no paths, the udev rules won't +run kpartx. But they also weren't running kpartx when the first valid +path appeared, even though the dm activation rules get run in this case. +This changes 11-dm-mpath.rules to run kpartx when a device goes from no +usable paths to having usable paths. + +Reviewed-by: Martin Wilck +Signed-off-by: Benjamin Marzinski +--- + libmultipath/configure.c | 6 ------ + multipath/11-dm-mpath.rules | 2 +- + 2 files changed, 1 insertion(+), 7 deletions(-) + +diff --git a/libmultipath/configure.c b/libmultipath/configure.c +index c95848a0..96c79610 100644 +--- a/libmultipath/configure.c ++++ b/libmultipath/configure.c +@@ -710,12 +710,6 @@ select_action (struct multipath * mpp, vector curmp, int force_reload) + return; + } + +- if (pathcount(mpp, PATH_UP) == 0) { +- mpp->action = ACT_IMPOSSIBLE; +- condlog(3, "%s: set ACT_IMPOSSIBLE (no usable path)", +- mpp->alias); +- return; +- } + if (force_reload) { + mpp->force_udev_reload = 1; + mpp->action = ACT_RELOAD; +diff --git a/multipath/11-dm-mpath.rules b/multipath/11-dm-mpath.rules +index 07320a14..cd522e8c 100644 +--- a/multipath/11-dm-mpath.rules ++++ b/multipath/11-dm-mpath.rules +@@ -75,7 +75,7 @@ ENV{MPATH_DEVICE_READY}=="0", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="1" + ENV{MPATH_DEVICE_READY}!="0", ENV{.MPATH_DEVICE_READY_OLD}=="0",\ + ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="$env{DM_DISABLE_OTHER_RULES_FLAG_OLD}",\ + ENV{DM_DISABLE_OTHER_RULES_FLAG_OLD}="",\ +- ENV{DM_ACTIVATION}="1" ++ ENV{DM_ACTIVATION}="1", ENV{MPATH_UNCHANGED}="0" + + # The code to check multipath state ends here. We need to set + # properties and symlinks regardless whether the map is usable or +-- +2.17.2 + diff --git a/0007-kpartx.rules-honor-DM_UDEV_DISABLE_OTHER_RULES_FLAG.patch b/0007-kpartx.rules-honor-DM_UDEV_DISABLE_OTHER_RULES_FLAG.patch new file mode 100644 index 0000000..6c33439 --- /dev/null +++ b/0007-kpartx.rules-honor-DM_UDEV_DISABLE_OTHER_RULES_FLAG.patch @@ -0,0 +1,30 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Fri, 3 Apr 2020 13:03:01 +0200 +Subject: [PATCH] kpartx.rules: honor DM_UDEV_DISABLE_OTHER_RULES_FLAG + +10-dm.rules sets DM_UDEV_DISABLE_OTHER_RULES_FLAG for spurious +events that should be ignored by other layers. This means devices +with DISK_RO set, and devices that have never been set up properly +by device-mapper before. This flag should be respected by kpartx. + +Signed-off-by: Benjamin Marzinski +--- + kpartx/kpartx.rules | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/kpartx/kpartx.rules b/kpartx/kpartx.rules +index 8f990494..f1bf31ca 100644 +--- a/kpartx/kpartx.rules ++++ b/kpartx/kpartx.rules +@@ -7,6 +7,7 @@ + KERNEL!="dm-*", GOTO="kpartx_end" + ACTION!="add|change", GOTO="kpartx_end" + ENV{DM_UUID}!="?*", GOTO="kpartx_end" ++ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", GOTO="kpartx_end" + + # Create dm tables for partitions on multipath devices. + ENV{DM_UUID}!="mpath-?*", GOTO="mpath_kpartx_end" +-- +2.17.2 + diff --git a/0007-libmultipath-remove-_filter_-blacklist-functions.patch b/0007-libmultipath-remove-_filter_-blacklist-functions.patch deleted file mode 100644 index b8e8e07..0000000 --- a/0007-libmultipath-remove-_filter_-blacklist-functions.patch +++ /dev/null @@ -1,296 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Benjamin Marzinski -Date: Tue, 3 Jul 2018 19:15:03 -0500 -Subject: [PATCH] libmultipath: remove _filter_* blacklist functions - -The one point of these functions was for _filter_path(), and that wasn't -improved by using them. Since filter_path() only printed one message at -the end, you could have situations where the wwid was blacklisted, but -the blacklist message included the vendor/product instead. Also, the -protocol and property messages were printed twice, and if the device was -on multiple whitelists, only the last one is printed. - -Signed-off-by: Benjamin Marzinski ---- - libmultipath/blacklist.c | 168 +++++++++++++++++++---------------------------- - libmultipath/blacklist.h | 2 +- - libmultipath/configure.c | 2 +- - libmultipath/discovery.c | 2 +- - 4 files changed, 71 insertions(+), 103 deletions(-) - -diff --git a/libmultipath/blacklist.c b/libmultipath/blacklist.c -index fdd36f7..318ec03 100644 ---- a/libmultipath/blacklist.c -+++ b/libmultipath/blacklist.c -@@ -294,161 +294,129 @@ log_filter (const char *dev, char *vendor, char *product, char *wwid, - } - - int --_filter_device (vector blist, vector elist, char * vendor, char * product) -+filter_device (vector blist, vector elist, char * vendor, char * product, -+ char * dev) - { -- if (!vendor || !product) -- return 0; -- if (_blacklist_exceptions_device(elist, vendor, product)) -- return MATCH_DEVICE_BLIST_EXCEPT; -- if (_blacklist_device(blist, vendor, product)) -- return MATCH_DEVICE_BLIST; -- return 0; --} -+ int r = MATCH_NOTHING; - --int --filter_device (vector blist, vector elist, char * vendor, char * product) --{ -- int r = _filter_device(blist, elist, vendor, product); -- log_filter(NULL, vendor, product, NULL, NULL, NULL, r); -- return r; --} -+ if (vendor && product) { -+ if (_blacklist_exceptions_device(elist, vendor, product)) -+ r = MATCH_DEVICE_BLIST_EXCEPT; -+ else if (_blacklist_device(blist, vendor, product)) -+ r = MATCH_DEVICE_BLIST; -+ } - --int --_filter_devnode (vector blist, vector elist, char * dev) --{ -- if (!dev) -- return 0; -- if (_blacklist_exceptions(elist, dev)) -- return MATCH_DEVNODE_BLIST_EXCEPT; -- if (_blacklist(blist, dev)) -- return MATCH_DEVNODE_BLIST; -- return 0; -+ log_filter(dev, vendor, product, NULL, NULL, NULL, r); -+ return r; - } - - int - filter_devnode (vector blist, vector elist, char * dev) - { -- int r = _filter_devnode(blist, elist, dev); -+ int r = MATCH_NOTHING; -+ -+ if (dev) { -+ if (_blacklist_exceptions(elist, dev)) -+ r = MATCH_DEVNODE_BLIST_EXCEPT; -+ else if (_blacklist(blist, dev)) -+ r = MATCH_DEVNODE_BLIST; -+ } -+ - log_filter(dev, NULL, NULL, NULL, NULL, NULL, r); - return r; - } - - int --_filter_wwid (vector blist, vector elist, char * wwid) --{ -- if (!wwid) -- return 0; -- if (_blacklist_exceptions(elist, wwid)) -- return MATCH_WWID_BLIST_EXCEPT; -- if (_blacklist(blist, wwid)) -- return MATCH_WWID_BLIST; -- return 0; --} -- --int - filter_wwid (vector blist, vector elist, char * wwid, char * dev) - { -- int r = _filter_wwid(blist, elist, wwid); -+ int r = MATCH_NOTHING; -+ -+ if (wwid) { -+ if (_blacklist_exceptions(elist, wwid)) -+ r = MATCH_WWID_BLIST_EXCEPT; -+ else if (_blacklist(blist, wwid)) -+ r = MATCH_WWID_BLIST; -+ } -+ - log_filter(dev, NULL, NULL, wwid, NULL, NULL, r); - return r; - } - --static int --_filter_protocol (vector blist, vector elist, const char * protocol_str) --{ -- if (_blacklist_exceptions(elist, protocol_str)) -- return MATCH_PROTOCOL_BLIST_EXCEPT; -- if (_blacklist(blist, protocol_str)) -- return MATCH_PROTOCOL_BLIST; -- return 0; --} -- - int - filter_protocol(vector blist, vector elist, struct path * pp) - { - char buf[PROTOCOL_BUF_SIZE]; -- int r; -+ int r = MATCH_NOTHING; -+ -+ if (pp) { -+ snprint_path_protocol(buf, sizeof(buf), pp); -+ -+ if (_blacklist_exceptions(elist, buf)) -+ r = MATCH_PROTOCOL_BLIST_EXCEPT; -+ else if (_blacklist(blist, buf)) -+ r = MATCH_PROTOCOL_BLIST; -+ } - -- snprint_path_protocol(buf, sizeof(buf), pp); -- r = _filter_protocol(blist, elist, buf); - log_filter(pp->dev, NULL, NULL, NULL, NULL, buf, r); - return r; - } - - int --_filter_path (struct config * conf, struct path * pp) -+filter_path (struct config * conf, struct path * pp) - { - int r; - - r = filter_property(conf, pp->udev); - if (r > 0) - return r; -- r = _filter_devnode(conf->blist_devnode, conf->elist_devnode,pp->dev); -+ r = filter_devnode(conf->blist_devnode, conf->elist_devnode, pp->dev); - if (r > 0) - return r; -- r = _filter_device(conf->blist_device, conf->elist_device, -- pp->vendor_id, pp->product_id); -+ r = filter_device(conf->blist_device, conf->elist_device, -+ pp->vendor_id, pp->product_id, pp->dev); - if (r > 0) - return r; - r = filter_protocol(conf->blist_protocol, conf->elist_protocol, pp); - if (r > 0) - return r; -- r = _filter_wwid(conf->blist_wwid, conf->elist_wwid, pp->wwid); -+ r = filter_wwid(conf->blist_wwid, conf->elist_wwid, pp->wwid, pp->dev); - return r; - } - - int --filter_path (struct config * conf, struct path * pp) --{ -- int r=_filter_path(conf, pp); -- log_filter(pp->dev, pp->vendor_id, pp->product_id, pp->wwid, NULL, -- NULL, r); -- return r; --} -- --int --_filter_property (struct config *conf, const char *env) --{ -- if (_blacklist_exceptions(conf->elist_property, env)) -- return MATCH_PROPERTY_BLIST_EXCEPT; -- if (_blacklist(conf->blist_property, env)) -- return MATCH_PROPERTY_BLIST; -- -- return 0; --} -- --int - filter_property(struct config * conf, struct udev_device * udev) - { - const char *devname = udev_device_get_sysname(udev); - struct udev_list_entry *list_entry; -- int r; -- -- if (!udev) -- return 0; -- -- udev_list_entry_foreach(list_entry, -+ const char *env = NULL; -+ int r = MATCH_NOTHING; -+ -+ if (udev) { -+ /* -+ * This is the inverse of the 'normal' matching; -+ * the environment variable _has_ to match. -+ */ -+ r = MATCH_PROPERTY_BLIST_MISSING; -+ udev_list_entry_foreach(list_entry, - udev_device_get_properties_list_entry(udev)) { -- const char *env; -- -- env = udev_list_entry_get_name(list_entry); -- if (!env) -- continue; - -- r = _filter_property(conf, env); -- if (r) { -- log_filter(devname, NULL, NULL, NULL, env, NULL, r); -- return r; -+ env = udev_list_entry_get_name(list_entry); -+ if (!env) -+ continue; -+ if (_blacklist_exceptions(conf->elist_property, env)) { -+ r = MATCH_PROPERTY_BLIST_EXCEPT; -+ break; -+ } -+ if (_blacklist(conf->blist_property, env)) { -+ r = MATCH_PROPERTY_BLIST; -+ break; -+ } -+ env = NULL; - } - } - -- /* -- * This is the inverse of the 'normal' matching; -- * the environment variable _has_ to match. -- */ -- log_filter(devname, NULL, NULL, NULL, NULL, NULL, -- MATCH_PROPERTY_BLIST_MISSING); -- return MATCH_PROPERTY_BLIST_MISSING; -+ log_filter(devname, NULL, NULL, NULL, env, NULL, r); -+ return r; - } - - static void free_ble(struct blentry *ble) -diff --git a/libmultipath/blacklist.h b/libmultipath/blacklist.h -index f7beef2..18903b6 100644 ---- a/libmultipath/blacklist.h -+++ b/libmultipath/blacklist.h -@@ -35,7 +35,7 @@ int setup_default_blist (struct config *); - int alloc_ble_device (vector); - int filter_devnode (vector, vector, char *); - int filter_wwid (vector, vector, char *, char *); --int filter_device (vector, vector, char *, char *); -+int filter_device (vector, vector, char *, char *, char *); - int filter_path (struct config *, struct path *); - int filter_property(struct config *, struct udev_device *); - int filter_protocol(vector, vector, struct path *); -diff --git a/libmultipath/configure.c b/libmultipath/configure.c -index 5c54f9b..09c3dcf 100644 ---- a/libmultipath/configure.c -+++ b/libmultipath/configure.c -@@ -1030,7 +1030,7 @@ int coalesce_paths (struct vectors * vecs, vector newmp, char * refwwid, - invalid = 1; - pthread_cleanup_pop(1); - if (invalid) { -- orphan_path(pp1, "wwid blacklisted"); -+ orphan_path(pp1, "blacklisted"); - continue; - } - -diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c -index e58a3fa..0b1855d 100644 ---- a/libmultipath/discovery.c -+++ b/libmultipath/discovery.c -@@ -1887,7 +1887,7 @@ int pathinfo(struct path *pp, struct config *conf, int mask) - - if (mask & DI_BLACKLIST && mask & DI_SYSFS) { - if (filter_device(conf->blist_device, conf->elist_device, -- pp->vendor_id, pp->product_id) > 0 || -+ pp->vendor_id, pp->product_id, pp->dev) > 0 || - filter_protocol(conf->blist_protocol, conf->elist_protocol, - pp) > 0) - return PATHINFO_SKIPPED; --- -2.7.4 - diff --git a/0008-kpartx.rules-check-for-skip_kpartx-on-synthetic-ueve.patch b/0008-kpartx.rules-check-for-skip_kpartx-on-synthetic-ueve.patch new file mode 100644 index 0000000..2a18b15 --- /dev/null +++ b/0008-kpartx.rules-check-for-skip_kpartx-on-synthetic-ueve.patch @@ -0,0 +1,43 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Thu, 2 Apr 2020 18:12:48 +0200 +Subject: [PATCH] kpartx.rules: check for skip_kpartx on synthetic uevents + +The current test to detect "spurious" uevents, and thus whether to +import DM_SUBSYSTEM_UDEV_FLAG1 (the flag for the "skip_kpartx" option) +from the udev db is wrong. In 10-dm.rules, DM_UDEV_PRIMARY_SOURCE_FLAG +is imported from the db if it isn't set, meaning that it's always 1 +for active maps. The only events for which DM_SUBSYSTEM_UDEV_FLAG1 +must not be loaded from the db are the real "primary" events, which +are "change" events with DM_ACTIVATION=="1". + +11-dm-mpath.rules resets DM_ACTIVATION to 0 if nothing should change in upper +layers. In this case importing DM_SUBSYSTEM_UDEV_FLAG1 is correct, too. kpartx +will not be called anyway, because 11-dm-mpath.rules also sets MPATH_UNCHANGED=1. + +Signed-off-by: Benjamin Marzinski +--- + kpartx/kpartx.rules | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/kpartx/kpartx.rules b/kpartx/kpartx.rules +index f1bf31ca..d7527d7d 100644 +--- a/kpartx/kpartx.rules ++++ b/kpartx/kpartx.rules +@@ -13,8 +13,11 @@ ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", GOTO="kpartx_end" + ENV{DM_UUID}!="mpath-?*", GOTO="mpath_kpartx_end" + + # DM_SUBSYSTEM_UDEV_FLAG1 is the "skip_kpartx" flag. +-# For events not generated by libdevmapper, we need to fetch it from db. +-ENV{DM_UDEV_PRIMARY_SOURCE_FLAG}!="1", IMPORT{db}="DM_SUBSYSTEM_UDEV_FLAG1" ++# For events not generated by libdevmapper, we need to fetch it from db: ++# - "change" events with DM_ACTIVATION!="1" (e.g. partition table changes) ++# - "add" events for which rules are not disabled ("coldplug" case) ++ENV{DM_ACTIVATION}!="1", IMPORT{db}="DM_SUBSYSTEM_UDEV_FLAG1" ++ACTION=="add", IMPORT{db}="DM_SUBSYSTEM_UDEV_FLAG1" + ENV{DM_SUBSYSTEM_UDEV_FLAG1}=="1", GOTO="mpath_kpartx_end" + + # 11-dm-mpath.rules sets MPATH_UNCHANGED for events that can be ignored. +-- +2.17.2 + diff --git a/0008-multipath-tests-change-to-work-with-old-make-version.patch b/0008-multipath-tests-change-to-work-with-old-make-version.patch deleted file mode 100644 index 186015a..0000000 --- a/0008-multipath-tests-change-to-work-with-old-make-version.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Benjamin Marzinski -Date: Tue, 3 Jul 2018 19:59:33 -0500 -Subject: [PATCH] multipath tests: change to work with old make versions - -the $(file <) operation only works with make 4.2 and above. I tried -running the tests on an old machine and it failed. The $shell function -can do the same thing and multipath has been using that in its -Makefiles for a while. - -Signed-off-by: Benjamin Marzinski ---- - tests/Makefile | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tests/Makefile b/tests/Makefile -index 78755ed..d293c87 100644 ---- a/tests/Makefile -+++ b/tests/Makefile -@@ -51,4 +51,4 @@ COLON:=: - $(multipathdir)/libmultipath.so Makefile - $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $< $($@_TESTDEPS) $($@_OBJDEPS) \ - $(LIBDEPS) $($@_LIBDEPS) \ -- $(file <$<.wrap) $(foreach dep,$($@_TESTDEPS),$(file <$(dep).wrap)) -+ $(shell cat $<.wrap) $(foreach dep,$($@_TESTDEPS),$(shell cat $(dep).wrap)) --- -2.7.4 - diff --git a/0009-libmpathpersist-depend-on-libmultipath.patch b/0009-libmpathpersist-depend-on-libmultipath.patch new file mode 100644 index 0000000..47aad9b --- /dev/null +++ b/0009-libmpathpersist-depend-on-libmultipath.patch @@ -0,0 +1,31 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Christian Hesse +Date: Wed, 6 May 2020 09:35:47 +0200 +Subject: [PATCH] libmpathpersist: depend on libmultipath + +Without this the build fails with: + +/usr/bin/ld: cannot find -lmultipath + +Signed-off-by: Christian Hesse +Signed-off-by: Benjamin Marzinski +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 1dee3680..ba1d73ba 100644 +--- a/Makefile ++++ b/Makefile +@@ -28,7 +28,7 @@ all: $(BUILDDIRS) + $(BUILDDIRS): + $(MAKE) -C $@ + +-multipath multipathd mpathpersist: libmultipath ++libmpathpersist multipath multipathd mpathpersist: libmultipath + mpathpersist: libmpathpersist + + $(BUILDDIRS.clean): +-- +2.17.2 + diff --git a/0009-multipath-tests-add-blacklist-tests.patch b/0009-multipath-tests-add-blacklist-tests.patch deleted file mode 100644 index cf7eff8..0000000 --- a/0009-multipath-tests-add-blacklist-tests.patch +++ /dev/null @@ -1,559 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Benjamin Marzinski -Date: Thu, 12 Jul 2018 17:53:38 -0500 -Subject: [PATCH] multipath tests: add blacklist tests - -These are tests to validate the filter_* blacklist functions. They not -only verify that the device is correctly blacklisted/whitelisted, but -they also verify the log messages that are printed out. - -Signed-off-by: Benjamin Marzinski ---- - tests/Makefile | 4 +- - tests/blacklist.c | 512 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 515 insertions(+), 1 deletion(-) - create mode 100644 tests/blacklist.c - -diff --git a/tests/Makefile b/tests/Makefile -index d293c87..98b5c93 100644 ---- a/tests/Makefile -+++ b/tests/Makefile -@@ -3,7 +3,7 @@ include ../Makefile.inc - CFLAGS += $(BIN_CFLAGS) -I$(multipathdir) -I$(mpathcmddir) - LIBDEPS += -L$(multipathdir) -lmultipath -lcmocka - --TESTS := uevent parser util dmevents hwtable -+TESTS := uevent parser util dmevents hwtable blacklist - - .SILENT: $(TESTS:%=%.o) - .PRECIOUS: $(TESTS:%=%-test) -@@ -23,6 +23,8 @@ hwtable-test_TESTDEPS := test-lib.o - hwtable-test_OBJDEPS := ../libmultipath/discovery.o ../libmultipath/blacklist.o \ - ../libmultipath/prio.o ../libmultipath/callout.o ../libmultipath/structs.o - hwtable-test_LIBDEPS := -ludev -lpthread -ldl -+blacklist-test_OBJDEPS := ../libmultipath/blacklist.o -+blacklist-test_LIBDEPS := -ludev - - %.out: %-test - @echo == running $< == -diff --git a/tests/blacklist.c b/tests/blacklist.c -new file mode 100644 -index 0000000..a55c1c0 ---- /dev/null -+++ b/tests/blacklist.c -@@ -0,0 +1,512 @@ -+/* -+ * Copyright (c) 2018 Benjamin Marzinski, Redhat -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License -+ * as published by the Free Software Foundation; either version 2 -+ * of the License, or (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program. If not, see . -+ * -+ */ -+#include -+#include -+#include -+#include -+#include "globals.c" -+#include "blacklist.h" -+#include "log.h" -+ -+struct udev_device { -+ const char *sysname; -+ char *property_list[]; -+}; -+ -+const char * -+__wrap_udev_device_get_sysname(struct udev_device *udev_device) -+{ -+ assert_non_null(udev_device); -+ assert_non_null(udev_device->sysname); -+ return udev_device->sysname; -+} -+ -+struct udev_list_entry * -+__wrap_udev_device_get_properties_list_entry(struct udev_device *udev_device) -+{ -+ assert_non_null(udev_device); -+ if (!udev_device->property_list) -+ return NULL; -+ if (!*udev_device->property_list) -+ return NULL; -+ return (struct udev_list_entry *)udev_device->property_list; -+} -+ -+struct udev_list_entry * -+__wrap_udev_list_entry_get_next(struct udev_list_entry *list_entry) -+{ -+ assert_non_null(list_entry); -+ if (!*((char **)list_entry + 1)) -+ return NULL; -+ return (struct udev_list_entry *)(((char **)list_entry) + 1); -+} -+ -+const char * -+__wrap_udev_list_entry_get_name(struct udev_list_entry *list_entry) -+{ -+ return *(const char **)list_entry; -+} -+ -+void __wrap_dlog (int sink, int prio, const char * fmt, ...) -+{ -+ char buff[MAX_MSG_SIZE]; -+ va_list ap; -+ -+ assert_int_equal(prio, mock_type(int)); -+ va_start(ap, fmt); -+ vsnprintf(buff, MAX_MSG_SIZE, fmt, ap); -+ va_end(ap); -+ assert_string_equal(buff, mock_ptr_type(char *)); -+} -+ -+void expect_condlog(int prio, char *string) -+{ -+ will_return(__wrap_dlog, prio); -+ will_return(__wrap_dlog, string); -+} -+ -+vector blist_devnode_sdb; -+vector blist_all; -+vector blist_device_foo_bar; -+vector blist_device_all; -+vector blist_wwid_xyzzy; -+vector blist_protocol_fcp; -+vector blist_property_wwn; -+ -+static int setup(void **state) -+{ -+ blist_devnode_sdb = vector_alloc(); -+ if (!blist_devnode_sdb || -+ store_ble(blist_devnode_sdb, strdup("sdb"), ORIGIN_CONFIG)) -+ return -1; -+ -+ blist_all = vector_alloc(); -+ if (!blist_all || store_ble(blist_all, strdup(".*"), ORIGIN_CONFIG)) -+ return -1; -+ -+ blist_device_foo_bar = vector_alloc(); -+ if (!blist_device_foo_bar || alloc_ble_device(blist_device_foo_bar) || -+ set_ble_device(blist_device_foo_bar, strdup("foo"), strdup("bar"), -+ ORIGIN_CONFIG)) -+ return -1; -+ -+ blist_device_all = vector_alloc(); -+ if (!blist_device_all || alloc_ble_device(blist_device_all) || -+ set_ble_device(blist_device_all, strdup(".*"), strdup(".*"), -+ ORIGIN_CONFIG)) -+ return -1; -+ -+ blist_wwid_xyzzy = vector_alloc(); -+ if (!blist_wwid_xyzzy || -+ store_ble(blist_wwid_xyzzy, strdup("xyzzy"), ORIGIN_CONFIG)) -+ return -1; -+ -+ blist_protocol_fcp = vector_alloc(); -+ if (!blist_protocol_fcp || -+ store_ble(blist_protocol_fcp, strdup("scsi:fcp"), ORIGIN_CONFIG)) -+ return -1; -+ -+ blist_property_wwn = vector_alloc(); -+ if (!blist_property_wwn || -+ store_ble(blist_property_wwn, strdup("ID_WWN"), ORIGIN_CONFIG)) -+ return -1; -+ -+ return 0; -+} -+ -+static int teardown(void **state) -+{ -+ free_blacklist(blist_devnode_sdb); -+ free_blacklist(blist_all); -+ free_blacklist_device(blist_device_foo_bar); -+ free_blacklist_device(blist_device_all); -+ free_blacklist(blist_wwid_xyzzy); -+ free_blacklist(blist_protocol_fcp); -+ free_blacklist(blist_property_wwn); -+ return 0; -+} -+ -+static int reset_blists(void **state) -+{ -+ conf.blist_devnode = NULL; -+ conf.blist_wwid = NULL; -+ conf.blist_property = NULL; -+ conf.blist_protocol = NULL; -+ conf.blist_device = NULL; -+ conf.elist_devnode = NULL; -+ conf.elist_wwid = NULL; -+ conf.elist_property = NULL; -+ conf.elist_protocol = NULL; -+ conf.elist_device = NULL; -+ return 0; -+} -+ -+static void test_devnode_blacklist(void **state) -+{ -+ expect_condlog(3, "sdb: device node name blacklisted\n"); -+ assert_int_equal(filter_devnode(blist_devnode_sdb, NULL, "sdb"), -+ MATCH_DEVNODE_BLIST); -+} -+ -+static void test_devnode_whitelist(void **state) -+{ -+ expect_condlog(3, "sdb: device node name whitelisted\n"); -+ assert_int_equal(filter_devnode(blist_all, blist_devnode_sdb, "sdb"), -+ MATCH_DEVNODE_BLIST_EXCEPT); -+ expect_condlog(3, "sdc: device node name blacklisted\n"); -+ assert_int_equal(filter_devnode(blist_all, blist_devnode_sdb, "sdc"), -+ MATCH_DEVNODE_BLIST); -+} -+ -+static void test_devnode_missing(void **state) -+{ -+ assert_int_equal(filter_devnode(blist_devnode_sdb, NULL, "sdc"), -+ MATCH_NOTHING); -+} -+ -+static void test_device_blacklist(void **state) -+{ -+ expect_condlog(3, "sdb: (foo:bar) vendor/product blacklisted\n"); -+ assert_int_equal(filter_device(blist_device_foo_bar, NULL, "foo", -+ "bar", "sdb"), -+ MATCH_DEVICE_BLIST); -+} -+ -+static void test_device_whitelist(void **state) -+{ -+ expect_condlog(3, "sdb: (foo:bar) vendor/product whitelisted\n"); -+ assert_int_equal(filter_device(blist_device_all, blist_device_foo_bar, -+ "foo", "bar", "sdb"), -+ MATCH_DEVICE_BLIST_EXCEPT); -+ expect_condlog(3, "sdb: (foo:baz) vendor/product blacklisted\n"); -+ assert_int_equal(filter_device(blist_device_all, blist_device_foo_bar, -+ "foo", "baz", "sdb"), -+ MATCH_DEVICE_BLIST); -+} -+ -+static void test_device_missing(void **state) -+{ -+ assert_int_equal(filter_device(blist_device_foo_bar, NULL, "foo", -+ "baz", "sdb"), -+ MATCH_NOTHING); -+} -+ -+static void test_wwid_blacklist(void **state) -+{ -+ expect_condlog(3, "sdb: wwid xyzzy blacklisted\n"); -+ assert_int_equal(filter_wwid(blist_wwid_xyzzy, NULL, "xyzzy", "sdb"), -+ MATCH_WWID_BLIST); -+} -+ -+static void test_wwid_whitelist(void **state) -+{ -+ expect_condlog(3, "sdb: wwid xyzzy whitelisted\n"); -+ assert_int_equal(filter_wwid(blist_all, blist_wwid_xyzzy, -+ "xyzzy", "sdb"), -+ MATCH_WWID_BLIST_EXCEPT); -+ expect_condlog(3, "sdb: wwid plugh blacklisted\n"); -+ assert_int_equal(filter_wwid(blist_all, blist_wwid_xyzzy, -+ "plugh", "sdb"), -+ MATCH_WWID_BLIST); -+} -+ -+static void test_wwid_missing(void **state) -+{ -+ assert_int_equal(filter_wwid(blist_wwid_xyzzy, NULL, "plugh", "sdb"), -+ MATCH_NOTHING); -+} -+ -+static void test_protocol_blacklist(void **state) -+{ -+ struct path pp = { .dev = "sdb", .bus = SYSFS_BUS_SCSI, -+ .sg_id.proto_id = SCSI_PROTOCOL_FCP }; -+ expect_condlog(3, "sdb: protocol scsi:fcp blacklisted\n"); -+ assert_int_equal(filter_protocol(blist_protocol_fcp, NULL, &pp), -+ MATCH_PROTOCOL_BLIST); -+} -+ -+static void test_protocol_whitelist(void **state) -+{ -+ struct path pp1 = { .dev = "sdb", .bus = SYSFS_BUS_SCSI, -+ .sg_id.proto_id = SCSI_PROTOCOL_FCP }; -+ struct path pp2 = { .dev = "sdb", .bus = SYSFS_BUS_SCSI, -+ .sg_id.proto_id = SCSI_PROTOCOL_ISCSI }; -+ expect_condlog(3, "sdb: protocol scsi:fcp whitelisted\n"); -+ assert_int_equal(filter_protocol(blist_all, blist_protocol_fcp, &pp1), -+ MATCH_PROTOCOL_BLIST_EXCEPT); -+ expect_condlog(3, "sdb: protocol scsi:iscsi blacklisted\n"); -+ assert_int_equal(filter_protocol(blist_all, blist_protocol_fcp, &pp2), -+ MATCH_PROTOCOL_BLIST); -+} -+ -+static void test_protocol_missing(void **state) -+{ -+ struct path pp = { .dev = "sdb", .bus = SYSFS_BUS_SCSI, -+ .sg_id.proto_id = SCSI_PROTOCOL_ISCSI }; -+ assert_int_equal(filter_protocol(blist_protocol_fcp, NULL, &pp), -+ MATCH_NOTHING); -+} -+ -+static void test_property_blacklist(void **state) -+{ -+ static struct udev_device udev = { "sdb", { "ID_FOO", "ID_WWN", "ID_BAR", NULL } }; -+ conf.blist_property = blist_property_wwn; -+ expect_condlog(3, "sdb: udev property ID_WWN blacklisted\n"); -+ assert_int_equal(filter_property(&conf, &udev), MATCH_PROPERTY_BLIST); -+} -+ -+/* the property check works different in that you check all the property -+ * names, so setting a blacklist value will blacklist the device if any -+ * of the property on the blacklist are found before the property names -+ * in the whitelist. This might be worth changing. although it would -+ * force multipath to go through the properties twice */ -+static void test_property_whitelist(void **state) -+{ -+ static struct udev_device udev = { "sdb", { "ID_FOO", "ID_WWN", "ID_BAR", NULL } }; -+ conf.elist_property = blist_property_wwn; -+ expect_condlog(3, "sdb: udev property ID_WWN whitelisted\n"); -+ assert_int_equal(filter_property(&conf, &udev), -+ MATCH_PROPERTY_BLIST_EXCEPT); -+} -+ -+static void test_property_missing(void **state) -+{ -+ static struct udev_device udev = { "sdb", { "ID_FOO", "ID_BAZ", "ID_BAR", NULL } }; -+ conf.blist_property = blist_property_wwn; -+ expect_condlog(3, "sdb: blacklisted, udev property missing\n"); -+ assert_int_equal(filter_property(&conf, &udev), -+ MATCH_PROPERTY_BLIST_MISSING); -+} -+ -+struct udev_device test_udev = { "sdb", { "ID_FOO", "ID_WWN", "ID_BAR", NULL } }; -+ -+struct path test_pp = { .dev = "sdb", .bus = SYSFS_BUS_SCSI, .udev = &test_udev, -+ .sg_id.proto_id = SCSI_PROTOCOL_FCP, .vendor_id = "foo", -+ .product_id = "bar", .wwid = "xyzzy" }; -+ -+static void test_filter_path_property(void **state) -+{ -+ conf.blist_property = blist_property_wwn; -+ expect_condlog(3, "sdb: udev property ID_WWN blacklisted\n"); -+ assert_int_equal(filter_path(&conf, &test_pp), MATCH_PROPERTY_BLIST); -+} -+ -+static void test_filter_path_devnode(void **state) -+{ -+ /* always must include property elist, to avoid "missing property" -+ * blacklisting */ -+ conf.elist_property = blist_property_wwn; -+ conf.blist_devnode = blist_devnode_sdb; -+ expect_condlog(3, "sdb: udev property ID_WWN whitelisted\n"); -+ expect_condlog(3, "sdb: device node name blacklisted\n"); -+ assert_int_equal(filter_path(&conf, &test_pp), MATCH_DEVNODE_BLIST); -+} -+ -+static void test_filter_path_device(void **state) -+{ -+ /* always must include property elist, to avoid "missing property" -+ * blacklisting */ -+ conf.elist_property = blist_property_wwn; -+ conf.blist_device = blist_device_foo_bar; -+ expect_condlog(3, "sdb: udev property ID_WWN whitelisted\n"); -+ expect_condlog(3, "sdb: (foo:bar) vendor/product blacklisted\n"); -+ assert_int_equal(filter_path(&conf, &test_pp), MATCH_DEVICE_BLIST); -+} -+ -+static void test_filter_path_protocol(void **state) -+{ -+ conf.elist_property = blist_property_wwn; -+ conf.blist_protocol = blist_protocol_fcp; -+ expect_condlog(3, "sdb: udev property ID_WWN whitelisted\n"); -+ expect_condlog(3, "sdb: protocol scsi:fcp blacklisted\n"); -+ assert_int_equal(filter_path(&conf, &test_pp), MATCH_PROTOCOL_BLIST); -+} -+ -+static void test_filter_path_wwid(void **state) -+{ -+ conf.elist_property = blist_property_wwn; -+ conf.blist_wwid = blist_wwid_xyzzy; -+ expect_condlog(3, "sdb: udev property ID_WWN whitelisted\n"); -+ expect_condlog(3, "sdb: wwid xyzzy blacklisted\n"); -+ assert_int_equal(filter_path(&conf, &test_pp), MATCH_WWID_BLIST); -+} -+ -+struct udev_device miss_udev = { "sdb", { "ID_FOO", "ID_BAZ", "ID_BAR", NULL } }; -+ -+struct path miss1_pp = { .dev = "sdc", .bus = SYSFS_BUS_SCSI, -+ .udev = &miss_udev, -+ .sg_id.proto_id = SCSI_PROTOCOL_ISCSI, -+ .vendor_id = "foo", .product_id = "baz", -+ .wwid = "plugh" }; -+ -+struct path miss2_pp = { .dev = "sdc", .bus = SYSFS_BUS_SCSI, -+ .udev = &test_udev, -+ .sg_id.proto_id = SCSI_PROTOCOL_ISCSI, -+ .vendor_id = "foo", .product_id = "baz", -+ .wwid = "plugh" }; -+ -+static void test_filter_path_missing1(void **state) -+{ -+ conf.blist_property = blist_property_wwn; -+ conf.blist_devnode = blist_devnode_sdb; -+ conf.blist_device = blist_device_foo_bar; -+ conf.blist_protocol = blist_protocol_fcp; -+ conf.blist_wwid = blist_wwid_xyzzy; -+ expect_condlog(3, "sdb: blacklisted, udev property missing\n"); -+ assert_int_equal(filter_path(&conf, &miss1_pp), -+ MATCH_PROPERTY_BLIST_MISSING); -+} -+ -+/* This one matches the property whitelist, to test the other missing -+ * functions */ -+static void test_filter_path_missing2(void **state) -+{ -+ conf.elist_property = blist_property_wwn; -+ conf.blist_devnode = blist_devnode_sdb; -+ conf.blist_device = blist_device_foo_bar; -+ conf.blist_protocol = blist_protocol_fcp; -+ conf.blist_wwid = blist_wwid_xyzzy; -+ expect_condlog(3, "sdb: udev property ID_WWN whitelisted\n"); -+ assert_int_equal(filter_path(&conf, &miss2_pp), -+ MATCH_NOTHING); -+} -+ -+static void test_filter_path_whitelist(void **state) -+{ -+ conf.elist_property = blist_property_wwn; -+ conf.elist_devnode = blist_devnode_sdb; -+ conf.elist_device = blist_device_foo_bar; -+ conf.elist_protocol = blist_protocol_fcp; -+ conf.elist_wwid = blist_wwid_xyzzy; -+ expect_condlog(3, "sdb: udev property ID_WWN whitelisted\n"); -+ expect_condlog(3, "sdb: device node name whitelisted\n"); -+ expect_condlog(3, "sdb: (foo:bar) vendor/product whitelisted\n"); -+ expect_condlog(3, "sdb: protocol scsi:fcp whitelisted\n"); -+ expect_condlog(3, "sdb: wwid xyzzy whitelisted\n"); -+ assert_int_equal(filter_path(&conf, &test_pp), -+ MATCH_WWID_BLIST_EXCEPT); -+} -+ -+static void test_filter_path_whitelist_property(void **state) -+{ -+ conf.blist_property = blist_property_wwn; -+ conf.elist_devnode = blist_devnode_sdb; -+ conf.elist_device = blist_device_foo_bar; -+ conf.elist_protocol = blist_protocol_fcp; -+ conf.elist_wwid = blist_wwid_xyzzy; -+ expect_condlog(3, "sdb: udev property ID_WWN blacklisted\n"); -+ assert_int_equal(filter_path(&conf, &test_pp), MATCH_PROPERTY_BLIST); -+} -+ -+static void test_filter_path_whitelist_devnode(void **state) -+{ -+ conf.elist_property = blist_property_wwn; -+ conf.blist_devnode = blist_devnode_sdb; -+ conf.elist_device = blist_device_foo_bar; -+ conf.elist_protocol = blist_protocol_fcp; -+ conf.elist_wwid = blist_wwid_xyzzy; -+ expect_condlog(3, "sdb: udev property ID_WWN whitelisted\n"); -+ expect_condlog(3, "sdb: device node name blacklisted\n"); -+ assert_int_equal(filter_path(&conf, &test_pp), MATCH_DEVNODE_BLIST); -+} -+ -+static void test_filter_path_whitelist_device(void **state) -+{ -+ conf.elist_property = blist_property_wwn; -+ conf.elist_devnode = blist_devnode_sdb; -+ conf.blist_device = blist_device_foo_bar; -+ conf.elist_protocol = blist_protocol_fcp; -+ conf.elist_wwid = blist_wwid_xyzzy; -+ expect_condlog(3, "sdb: udev property ID_WWN whitelisted\n"); -+ expect_condlog(3, "sdb: device node name whitelisted\n"); -+ expect_condlog(3, "sdb: (foo:bar) vendor/product blacklisted\n"); -+ assert_int_equal(filter_path(&conf, &test_pp), MATCH_DEVICE_BLIST); -+} -+ -+static void test_filter_path_whitelist_protocol(void **state) -+{ -+ conf.elist_property = blist_property_wwn; -+ conf.elist_devnode = blist_devnode_sdb; -+ conf.elist_device = blist_device_foo_bar; -+ conf.blist_protocol = blist_protocol_fcp; -+ conf.elist_wwid = blist_wwid_xyzzy; -+ expect_condlog(3, "sdb: udev property ID_WWN whitelisted\n"); -+ expect_condlog(3, "sdb: device node name whitelisted\n"); -+ expect_condlog(3, "sdb: (foo:bar) vendor/product whitelisted\n"); -+ expect_condlog(3, "sdb: protocol scsi:fcp blacklisted\n"); -+ assert_int_equal(filter_path(&conf, &test_pp), MATCH_PROTOCOL_BLIST); -+} -+ -+static void test_filter_path_whitelist_wwid(void **state) -+{ -+ conf.elist_property = blist_property_wwn; -+ conf.elist_devnode = blist_devnode_sdb; -+ conf.elist_device = blist_device_foo_bar; -+ conf.elist_protocol = blist_protocol_fcp; -+ conf.blist_wwid = blist_wwid_xyzzy; -+ expect_condlog(3, "sdb: udev property ID_WWN whitelisted\n"); -+ expect_condlog(3, "sdb: device node name whitelisted\n"); -+ expect_condlog(3, "sdb: (foo:bar) vendor/product whitelisted\n"); -+ expect_condlog(3, "sdb: protocol scsi:fcp whitelisted\n"); -+ expect_condlog(3, "sdb: wwid xyzzy blacklisted\n"); -+ assert_int_equal(filter_path(&conf, &test_pp), MATCH_WWID_BLIST); -+} -+ -+#define test_and_reset(x) cmocka_unit_test_teardown((x), reset_blists) -+ -+int test_blacklist(void) -+{ -+ const struct CMUnitTest tests[] = { -+ cmocka_unit_test(test_devnode_blacklist), -+ cmocka_unit_test(test_devnode_whitelist), -+ cmocka_unit_test(test_devnode_missing), -+ cmocka_unit_test(test_device_blacklist), -+ cmocka_unit_test(test_device_whitelist), -+ cmocka_unit_test(test_device_missing), -+ cmocka_unit_test(test_wwid_blacklist), -+ cmocka_unit_test(test_wwid_whitelist), -+ cmocka_unit_test(test_wwid_missing), -+ cmocka_unit_test(test_protocol_blacklist), -+ cmocka_unit_test(test_protocol_whitelist), -+ cmocka_unit_test(test_protocol_missing), -+ test_and_reset(test_property_blacklist), -+ test_and_reset(test_property_whitelist), -+ test_and_reset(test_property_missing), -+ test_and_reset(test_filter_path_property), -+ test_and_reset(test_filter_path_devnode), -+ test_and_reset(test_filter_path_device), -+ test_and_reset(test_filter_path_protocol), -+ test_and_reset(test_filter_path_wwid), -+ test_and_reset(test_filter_path_missing1), -+ test_and_reset(test_filter_path_missing2), -+ test_and_reset(test_filter_path_whitelist), -+ test_and_reset(test_filter_path_whitelist_property), -+ test_and_reset(test_filter_path_whitelist_devnode), -+ test_and_reset(test_filter_path_whitelist_device), -+ test_and_reset(test_filter_path_whitelist_protocol), -+ test_and_reset(test_filter_path_whitelist_wwid), -+ }; -+ return cmocka_run_group_tests(tests, setup, teardown); -+} -+ -+int main(void) -+{ -+ int ret = 0; -+ ret += test_blacklist(); -+ return ret; -+} --- -2.7.4 - diff --git a/0010-mpathpersist-add-missing-param-rk-usage-info.patch b/0010-mpathpersist-add-missing-param-rk-usage-info.patch deleted file mode 100644 index e05d9e6..0000000 --- a/0010-mpathpersist-add-missing-param-rk-usage-info.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Benjamin Marzinski -Date: Mon, 16 Jul 2018 16:43:57 -0500 -Subject: [PATCH] mpathpersist: add missing --param-rk usage info - -Signed-off-by: Benjamin Marzinski ---- - mpathpersist/main.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/mpathpersist/main.c b/mpathpersist/main.c -index 99151fe..0e4d3f2 100644 ---- a/mpathpersist/main.c -+++ b/mpathpersist/main.c -@@ -705,6 +705,7 @@ static void usage(void) - " --param-alltgpt|-Y PR Out parameter 'ALL_TG_PT\n" - " --param-aptpl|-Z PR Out parameter 'APTPL'\n" - " --read-keys|-k PR In: Read Keys\n" -+ " --param-rk=RK|-K RK PR Out parameter reservation key\n" - " --param-sark=SARK|-S SARK PR Out parameter service " - "action\n" - " reservation key (SARK is in " --- -2.7.4 - diff --git a/0010-multipath-tools-Makefile-more-dependency-fixes-for-p.patch b/0010-multipath-tools-Makefile-more-dependency-fixes-for-p.patch new file mode 100644 index 0000000..c4f0b3e --- /dev/null +++ b/0010-multipath-tools-Makefile-more-dependency-fixes-for-p.patch @@ -0,0 +1,33 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Mon, 11 May 2020 14:24:37 +0200 +Subject: [PATCH] multipath-tools: Makefile: more dependency fixes for parallel + build + +Extend the late fixes from Christian. + +Cc: Christian Hesse +Signed-off-by: Benjamin Marzinski +--- + Makefile | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/Makefile b/Makefile +index ba1d73ba..fec3b73b 100644 +--- a/Makefile ++++ b/Makefile +@@ -28,8 +28,9 @@ all: $(BUILDDIRS) + $(BUILDDIRS): + $(MAKE) -C $@ + +-libmpathpersist multipath multipathd mpathpersist: libmultipath +-mpathpersist: libmpathpersist ++libmultipath libdmmp: libmpathcmd ++libmpathpersist multipath multipathd: libmultipath ++mpathpersist multipathd: libmpathpersist + + $(BUILDDIRS.clean): + $(MAKE) -C ${@:.clean=} clean +-- +2.17.2 + diff --git a/0011-multipath-tools-Makefile.inc-separate-out-OPTFLAGS.patch b/0011-multipath-tools-Makefile.inc-separate-out-OPTFLAGS.patch new file mode 100644 index 0000000..2082970 --- /dev/null +++ b/0011-multipath-tools-Makefile.inc-separate-out-OPTFLAGS.patch @@ -0,0 +1,44 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Mon, 11 May 2020 15:27:34 +0200 +Subject: [PATCH] multipath-tools: Makefile.inc: separate out OPTFLAGS + +OPTFLAGS is what distribution builds would typically override. That +should not include the warning flags we use. + +Moreover, in the definition of CFLAGS, put $(CFLAGS) first to make it +easier for the user to spot her input in the build logs. + +Signed-off-by: Benjamin Marzinski +--- + Makefile.inc | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/Makefile.inc b/Makefile.inc +index d4d1e0dd..7a59db85 100644 +--- a/Makefile.inc ++++ b/Makefile.inc +@@ -93,14 +93,14 @@ STACKPROT := $(call TEST_CC_OPTION,-fstack-protector-strong,-fstack-protector) + ERROR_DISCARDED_QUALIFIERS := $(call TEST_CC_OPTION,-Werror=discarded-qualifiers,) + WNOCLOBBERED := $(call TEST_CC_OPTION,-Wno-clobbered,) + +-OPTFLAGS = -O2 -g -pipe -Werror -Wall -Wextra -Wformat=2 -Werror=implicit-int \ ++OPTFLAGS := -O2 -g $(STACKPROT) --param=ssp-buffer-size=4 ++WARNFLAGS := -Werror -Wall -Wextra -Wformat=2 -Werror=implicit-int \ + -Werror=implicit-function-declaration -Werror=format-security \ +- $(WNOCLOBBERED) \ +- -Werror=cast-qual $(ERROR_DISCARDED_QUALIFIERS) \ +- $(STACKPROT) --param=ssp-buffer-size=4 ++ $(WNOCLOBBERED) -Werror=cast-qual $(ERROR_DISCARDED_QUALIFIERS) + CPPFLAGS := -Wp,-D_FORTIFY_SOURCE=2 +-CFLAGS := $(OPTFLAGS) -DBIN_DIR=\"$(bindir)\" -DLIB_STRING=\"${LIB}\" -DRUN_DIR=\"${RUN}\" \ +- -MMD -MP $(CFLAGS) ++CFLAGS := $(CFLAGS) $(OPTFLAGS) $(WARNFLAGS) -pipe \ ++ -DBIN_DIR=\"$(bindir)\" -DLIB_STRING=\"${LIB}\" -DRUN_DIR=\"${RUN}\" \ ++ -MMD -MP + BIN_CFLAGS = -fPIE -DPIE + LIB_CFLAGS = -fPIC + SHARED_FLAGS = -shared +-- +2.17.2 + diff --git a/0012-multipath-tools-Makefile.inc-allow-user-settings-for.patch b/0012-multipath-tools-Makefile.inc-allow-user-settings-for.patch new file mode 100644 index 0000000..ba2ec42 --- /dev/null +++ b/0012-multipath-tools-Makefile.inc-allow-user-settings-for.patch @@ -0,0 +1,33 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Mon, 11 May 2020 16:00:04 +0200 +Subject: [PATCH] multipath-tools: Makefile.inc: allow user settings for + LDFLAGS + +This allows e.g. setting LDFLAGS="-m32 -Wl,-b,elf32-i386" to compile +for a 32bit target on a 64bit system. + +Note that, like CFLAGS, the variable needs to be set in the environment, +not on the "make" command line. + +Signed-off-by: Benjamin Marzinski +--- + Makefile.inc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.inc b/Makefile.inc +index 7a59db85..671dd1ca 100644 +--- a/Makefile.inc ++++ b/Makefile.inc +@@ -104,7 +104,7 @@ CFLAGS := $(CFLAGS) $(OPTFLAGS) $(WARNFLAGS) -pipe \ + BIN_CFLAGS = -fPIE -DPIE + LIB_CFLAGS = -fPIC + SHARED_FLAGS = -shared +-LDFLAGS = -Wl,-z,relro -Wl,-z,now ++LDFLAGS := $(LDFLAGS) -Wl,-z,relro -Wl,-z,now + BIN_LDFLAGS = -pie + + # Check whether a function with name $1 has been declared in header file $2. +-- +2.17.2 + diff --git a/0013-multipath-tools-Makefile.inc-set-Wno-error-clobbered.patch b/0013-multipath-tools-Makefile.inc-set-Wno-error-clobbered.patch new file mode 100644 index 0000000..3de6cb6 --- /dev/null +++ b/0013-multipath-tools-Makefile.inc-set-Wno-error-clobbered.patch @@ -0,0 +1,32 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Mon, 11 May 2020 17:19:37 +0200 +Subject: [PATCH] multipath-tools: Makefile.inc: set -Wno-error=clobbered + +We need to ignore -Wclobbered because gcc has trouble dealing with glibc's +implementation of pthread_cleanup_push(). + +For some variants of gcc, -Wno-clobbered alone isn't enough if -Werror is also +set. Compilation with -Wno-error=clobbered works, though. + +Signed-off-by: Benjamin Marzinski +--- + Makefile.inc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.inc b/Makefile.inc +index 671dd1ca..e7256e3a 100644 +--- a/Makefile.inc ++++ b/Makefile.inc +@@ -91,7 +91,7 @@ TEST_CC_OPTION = $(shell \ + + STACKPROT := $(call TEST_CC_OPTION,-fstack-protector-strong,-fstack-protector) + ERROR_DISCARDED_QUALIFIERS := $(call TEST_CC_OPTION,-Werror=discarded-qualifiers,) +-WNOCLOBBERED := $(call TEST_CC_OPTION,-Wno-clobbered,) ++WNOCLOBBERED := $(call TEST_CC_OPTION,-Wno-clobbered -Wno-error=clobbered,) + + OPTFLAGS := -O2 -g $(STACKPROT) --param=ssp-buffer-size=4 + WARNFLAGS := -Werror -Wall -Wextra -Wformat=2 -Werror=implicit-int \ +-- +2.17.2 + diff --git a/0014-fix-segfault-when-mount-or-umount-VIMS-with-reservation-conflict.patch b/0014-fix-segfault-when-mount-or-umount-VIMS-with-reservation-conflict.patch deleted file mode 100644 index e144e9d..0000000 --- a/0014-fix-segfault-when-mount-or-umount-VIMS-with-reservation-conflict.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff -uNr a/libmpathpersist/mpath_persist.c b/libmpathpersist/mpath_persist.c ---- a/libmpathpersist/mpath_persist.c 2017-05-24 11:01:39.000000000 +0800 -+++ b/libmpathpersist/mpath_persist.c 2017-05-24 11:02:22.000000000 +0800 -@@ -510,10 +510,10 @@ - if (!rollback && (thread[i].param.status == MPATH_PR_RESERV_CONFLICT)){ - rollback = 1; - sa_key = 0; -- for (i = 0; i < 8; ++i){ -- if (i > 0) -+ for (j = 0; j < 8; ++j){ -+ if (j > 0) - sa_key <<= 8; -- sa_key |= paramp->sa_key[i]; -+ sa_key |= paramp->sa_key[j]; - } - status = MPATH_PR_RESERV_CONFLICT ; - } diff --git a/0014-libmultipath-discovery.c-use-z-qualifier-for-size_t.patch b/0014-libmultipath-discovery.c-use-z-qualifier-for-size_t.patch new file mode 100644 index 0000000..749bef2 --- /dev/null +++ b/0014-libmultipath-discovery.c-use-z-qualifier-for-size_t.patch @@ -0,0 +1,90 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Mon, 11 May 2020 16:02:25 +0200 +Subject: [PATCH] libmultipath: discovery.c: use %z qualifier for size_t + +Otherwise compilation for 32bit targets spits out warnings. + +Signed-off-by: Benjamin Marzinski +--- + libmultipath/discovery.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c +index ee3290cd..ffec5162 100644 +--- a/libmultipath/discovery.c ++++ b/libmultipath/discovery.c +@@ -986,7 +986,7 @@ parse_vpd_pg80(const unsigned char *in, char *out, size_t out_len) + } + + if (len >= out_len) { +- condlog(2, "vpd pg80 overflow, %lu/%lu bytes required", ++ condlog(2, "vpd pg80 overflow, %zu/%zu bytes required", + len + 1, out_len); + len = out_len - 1; + } +@@ -1087,7 +1087,7 @@ parse_vpd_pg83(const unsigned char *in, size_t in_len, + + len = sprintf(out, "%d", vpd_type); + if (2 * vpd_len >= out_len - len) { +- condlog(1, "%s: WWID overflow, type %d, %lu/%lu bytes required", ++ condlog(1, "%s: WWID overflow, type %d, %zu/%zu bytes required", + __func__, vpd_type, + 2 * vpd_len + len + 1, out_len); + vpd_len = (out_len - len - 1) / 2; +@@ -1096,7 +1096,7 @@ parse_vpd_pg83(const unsigned char *in, size_t in_len, + len += sprintf(out + len, + "%02x", vpd[i]); + } else if (vpd_type == 0x8 && vpd_len < 4) { +- condlog(1, "%s: VPD length %lu too small for designator type 8", ++ condlog(1, "%s: VPD length %zu too small for designator type 8", + __func__, vpd_len); + return -EINVAL; + } else if (vpd_type == 0x8) { +@@ -1112,7 +1112,7 @@ parse_vpd_pg83(const unsigned char *in, size_t in_len, + while (len > 2 && vpd[len - 2] == '\0') + --len; + if (len > out_len - 1) { +- condlog(1, "%s: WWID overflow, type 8/%c, %lu/%lu bytes required", ++ condlog(1, "%s: WWID overflow, type 8/%c, %zu/%zu bytes required", + __func__, out[0], len + 1, out_len); + len = out_len - 1; + } +@@ -1136,7 +1136,7 @@ parse_vpd_pg83(const unsigned char *in, size_t in_len, + while ((p = memchr(vpd, ' ', vpd_len))) { + p_len = p - vpd; + if (len + p_len > out_len - 1) { +- condlog(1, "%s: WWID overflow, type 1, %lu/%lu bytes required", ++ condlog(1, "%s: WWID overflow, type 1, %zu/%zu bytes required", + __func__, len + p_len, out_len); + p_len = out_len - len - 1; + } +@@ -1162,7 +1162,7 @@ parse_vpd_pg83(const unsigned char *in, size_t in_len, + p_len = vpd_len; + if (p_len > 0 && len < out_len - 1) { + if (len + p_len > out_len - 1) { +- condlog(1, "%s: WWID overflow, type 1, %lu/%lu bytes required", ++ condlog(1, "%s: WWID overflow, type 1, %zu/%zu bytes required", + __func__, len + p_len + 1, out_len); + p_len = out_len - len - 1; + } +@@ -1186,14 +1186,14 @@ parse_vpd_c0_hp3par(const unsigned char *in, size_t in_len, + + memset(out, 0x0, out_len); + if (in_len <= 4 || (in[4] > 3 && in_len < 44)) { +- condlog(3, "HP/3PAR vendor specific VPD page length too short: %lu", in_len); ++ condlog(3, "HP/3PAR vendor specific VPD page length too short: %zu", in_len); + return -EINVAL; + } + if (in[4] <= 3) /* revision must be > 3 to have Vomlume Name */ + return -ENODATA; + len = get_unaligned_be32(&in[40]); + if (len > out_len || len + 44 > in_len) { +- condlog(3, "HP/3PAR vendor specific Volume name too long: %lu", ++ condlog(3, "HP/3PAR vendor specific Volume name too long: %zu", + len); + return -EINVAL; + } +-- +2.17.2 + diff --git a/0015-fix-multipathd-resize-when-not-all-paths-size-are-equal.patch b/0015-fix-multipathd-resize-when-not-all-paths-size-are-equal.patch deleted file mode 100644 index 955eceb..0000000 --- a/0015-fix-multipathd-resize-when-not-all-paths-size-are-equal.patch +++ /dev/null @@ -1,37 +0,0 @@ ---- multipath-tools-130222-patched/multipathd/cli_handlers.c 2017-10-12 19:19:08.000000000 +0800 -+++ multipath-tools-130222-patched1/multipathd/cli_handlers.c 2017-10-17 14:43:43.000000000 +0800 -@@ -593,9 +593,10 @@ - char * mapname = get_keyparam(v, MAP); - struct multipath *mpp; - int minor; -- unsigned long long size; -+ unsigned long long size, sz; - struct pathgroup *pgp; - struct path *pp; -+ int i,j; - - mapname = convert_dev(mapname, 0); - condlog(2, "%s: resize map (operator)", mapname); -@@ -627,6 +628,22 @@ - mapname); - return 1; - } -+ -+ vector_foreach_slot (mpp->pg, pgp, i) { -+ vector_foreach_slot (pgp->paths, pp, j) { -+ if (!pp->udev || sysfs_get_size(pp, &sz)) { -+ condlog(0, "%s: couldn't get size for sysfs. cannot resize", -+ mapname); -+ return 1; -+ } -+ if (size != sz) { -+ condlog(0, "%s: not all path sizes are equal, please check. cannot resize", -+ mapname); -+ return 1; -+ } -+ } -+ } -+ - if (size == mpp->size) { - condlog(0, "%s: map is still the same size (%llu)", mapname, - mpp->size); diff --git a/0015-libmultipath-eliminate-more-signed-unsigned-comparis.patch b/0015-libmultipath-eliminate-more-signed-unsigned-comparis.patch new file mode 100644 index 0000000..a97c202 --- /dev/null +++ b/0015-libmultipath-eliminate-more-signed-unsigned-comparis.patch @@ -0,0 +1,198 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Mon, 11 May 2020 16:03:58 +0200 +Subject: [PATCH] libmultipath: eliminate more signed/unsigned comparisons + +Fix some more compiler warnings about signed/unsigned comparison. +I've observed these only on 32bit builds, therefore they went unnoticed +before. + +Signed-off-by: Benjamin Marzinski +--- + libmpathpersist/mpath_pr_ioctl.c | 2 +- + libmultipath/print.c | 12 ++++++------ + libmultipath/prioritizers/alua_spc3.h | 2 +- + multipathd/cli_handlers.c | 20 ++++++++++---------- + multipathd/main.c | 2 +- + 5 files changed, 19 insertions(+), 19 deletions(-) + +diff --git a/libmpathpersist/mpath_pr_ioctl.c b/libmpathpersist/mpath_pr_ioctl.c +index fadc9e10..126601c3 100644 +--- a/libmpathpersist/mpath_pr_ioctl.c ++++ b/libmpathpersist/mpath_pr_ioctl.c +@@ -238,7 +238,7 @@ static void mpath_format_readfullstatus(struct prin_resp *pr_buff) + uint32_t additional_length, k, tid_len_len = 0; + char tempbuff[MPATH_MAX_PARAM_LEN]; + struct prin_fulldescr fdesc; +- static const int pbuf_size = ++ static const unsigned int pbuf_size = + sizeof(pr_buff->prin_descriptor.prin_readfd.private_buffer); + + convert_be32_to_cpu(&pr_buff->prin_descriptor.prin_readfd.prgeneration); +diff --git a/libmultipath/print.c b/libmultipath/print.c +index b944ef32..298b3764 100644 +--- a/libmultipath/print.c ++++ b/libmultipath/print.c +@@ -1958,25 +1958,25 @@ char *snprint_config(const struct config *conf, int *len, + } + + c = reply + snprint_defaults(conf, reply, maxlen); +- if ((c - reply) == maxlen) ++ if (c == reply + maxlen) + continue; + + c += snprint_blacklist(conf, c, reply + maxlen - c); +- if ((c - reply) == maxlen) ++ if (c == reply + maxlen) + continue; + + c += snprint_blacklist_except(conf, c, reply + maxlen - c); +- if ((c - reply) == maxlen) ++ if (c == reply + maxlen) + continue; + + c += snprint_hwtable(conf, c, reply + maxlen - c, + hwtable ? hwtable : conf->hwtable); +- if ((c - reply) == maxlen) ++ if (c == reply + maxlen) + continue; + + c += snprint_overrides(conf, c, reply + maxlen - c, + conf->overrides); +- if ((c - reply) == maxlen) ++ if (c == reply + maxlen) + continue; + + if (VECTOR_SIZE(conf->mptable) > 0 || +@@ -1984,7 +1984,7 @@ char *snprint_config(const struct config *conf, int *len, + c += snprint_mptable(conf, c, reply + maxlen - c, + mpvec); + +- if ((c - reply) < maxlen) { ++ if (c < reply + maxlen) { + if (len) + *len = c - reply; + return reply; +diff --git a/libmultipath/prioritizers/alua_spc3.h b/libmultipath/prioritizers/alua_spc3.h +index 18b495ef..7ba2cf4c 100644 +--- a/libmultipath/prioritizers/alua_spc3.h ++++ b/libmultipath/prioritizers/alua_spc3.h +@@ -284,7 +284,7 @@ struct rtpg_data { + #define RTPG_FOR_EACH_PORT_GROUP(p, g) \ + for( \ + g = &(p->data[0]); \ +- (((char *) g) - ((char *) p)) < get_unaligned_be32(p->length); \ ++ ((char *) g) < ((char *) p) + get_unaligned_be32(p->length); \ + g = (struct rtpg_tpg_dscr *) ( \ + ((char *) g) + \ + sizeof(struct rtpg_tpg_dscr) + \ +diff --git a/multipathd/cli_handlers.c b/multipathd/cli_handlers.c +index 7d878c88..31c3d9fd 100644 +--- a/multipathd/cli_handlers.c ++++ b/multipathd/cli_handlers.c +@@ -66,7 +66,7 @@ show_paths (char ** r, int * len, struct vectors * vecs, char * style, + c += snprint_foreign_paths(c, reply + maxlen - c, + style, pretty); + +- again = ((c - reply) == (maxlen - 1)); ++ again = (c == reply + maxlen - 1); + + REALLOC_REPLY(reply, again, maxlen); + } +@@ -102,7 +102,7 @@ show_path (char ** r, int * len, struct vectors * vecs, struct path *pp, + + c += snprint_path(c, reply + maxlen - c, style, pp, 0); + +- again = ((c - reply) == (maxlen - 1)); ++ again = (c == reply + maxlen - 1); + + REALLOC_REPLY(reply, again, maxlen); + } +@@ -131,7 +131,7 @@ show_map_topology (char ** r, int * len, struct multipath * mpp, + c = reply; + + c += snprint_multipath_topology(c, reply + maxlen - c, mpp, 2); +- again = ((c - reply) == (maxlen - 1)); ++ again = (c == reply + maxlen - 1); + + REALLOC_REPLY(reply, again, maxlen); + } +@@ -171,7 +171,7 @@ show_maps_topology (char ** r, int * len, struct vectors * vecs) + } + c += snprint_foreign_topology(c, reply + maxlen - c, 2); + +- again = ((c - reply) == (maxlen - 1)); ++ again = (c == reply + maxlen - 1); + + REALLOC_REPLY(reply, again, maxlen); + } +@@ -209,7 +209,7 @@ show_maps_json (char ** r, int * len, struct vectors * vecs) + c = reply; + + c += snprint_multipath_topology_json(c, maxlen, vecs); +- again = ((c - reply) == maxlen); ++ again = (c == reply + maxlen); + + REALLOC_REPLY(reply, again, maxlen); + } +@@ -238,7 +238,7 @@ show_map_json (char ** r, int * len, struct multipath * mpp, + c = reply; + + c += snprint_multipath_map_json(c, maxlen, mpp); +- again = ((c - reply) == maxlen); ++ again = (c == reply + maxlen); + + REALLOC_REPLY(reply, again, maxlen); + } +@@ -487,7 +487,7 @@ show_map (char ** r, int *len, struct multipath * mpp, char * style, + c += snprint_multipath(c, reply + maxlen - c, style, + mpp, pretty); + +- again = ((c - reply) == (maxlen - 1)); ++ again = (c == reply + maxlen - 1); + + REALLOC_REPLY(reply, again, maxlen); + } +@@ -533,7 +533,7 @@ show_maps (char ** r, int *len, struct vectors * vecs, char * style, + } + c += snprint_foreign_multipaths(c, reply + maxlen - c, + style, pretty); +- again = ((c - reply) == (maxlen - 1)); ++ again = (c == reply + maxlen - 1); + + REALLOC_REPLY(reply, again, maxlen); + } +@@ -1297,7 +1297,7 @@ show_blacklist (char ** r, int * len) + + c = reply; + c += snprint_blacklist_report(conf, c, maxlen); +- again = ((c - reply) == maxlen); ++ again = (c == reply + maxlen); + REALLOC_REPLY(reply, again, maxlen); + } + pthread_cleanup_pop(1); +@@ -1339,7 +1339,7 @@ show_devices (char ** r, int * len, struct vectors *vecs) + + c = reply; + c += snprint_devices(conf, c, maxlen, vecs); +- again = ((c - reply) == maxlen); ++ again = (c == reply + maxlen); + REALLOC_REPLY(reply, again, maxlen); + } + pthread_cleanup_pop(1); +diff --git a/multipathd/main.c b/multipathd/main.c +index 8baf9abe..6b7db2c0 100644 +--- a/multipathd/main.c ++++ b/multipathd/main.c +@@ -2374,7 +2374,7 @@ checkerloop (void *ap) + conf = get_multipath_config(); + max_checkint = conf->max_checkint; + put_multipath_config(conf); +- if (diff_time.tv_sec > max_checkint) ++ if (diff_time.tv_sec > (time_t)max_checkint) + condlog(1, "path checkers took longer " + "than %lu seconds, consider " + "increasing max_polling_interval", +-- +2.17.2 + diff --git a/0016-libmultipath-set_uint-fix-parsing-for-32bit.patch b/0016-libmultipath-set_uint-fix-parsing-for-32bit.patch new file mode 100644 index 0000000..c621937 --- /dev/null +++ b/0016-libmultipath-set_uint-fix-parsing-for-32bit.patch @@ -0,0 +1,48 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Mon, 11 May 2020 22:22:25 +0200 +Subject: [PATCH] libmultipath: set_uint: fix parsing for 32bit + +On architectures where sizeof(long) == sizeof(int), the code wouldn't +work as intended. Use strtoul instead. As strtoul happily parses +negative numbers as input, require the number to begin with a digit. + +Signed-off-by: Benjamin Marzinski +--- + libmultipath/dict.c | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +diff --git a/libmultipath/dict.c b/libmultipath/dict.c +index 3e25e74f..0e9ea387 100644 +--- a/libmultipath/dict.c ++++ b/libmultipath/dict.c +@@ -60,19 +60,22 @@ static int + set_uint(vector strvec, void *ptr) + { + unsigned int *uint_ptr = (unsigned int *)ptr; +- char *buff, *eptr; +- long res; ++ char *buff, *eptr, *p; ++ unsigned long res; + int rc; + + buff = set_value(strvec); + if (!buff) + return 1; + +- res = strtol(buff, &eptr, 10); ++ p = buff; ++ while (isspace(*p)) ++ p++; ++ res = strtoul(p, &eptr, 10); + if (eptr > buff) + while (isspace(*eptr)) + eptr++; +- if (*buff == '\0' || *eptr != '\0' || res < 0 || res > UINT_MAX) { ++ if (*buff == '\0' || *eptr != '\0' || !isdigit(*p) || res > UINT_MAX) { + condlog(1, "%s: invalid value for %s: \"%s\"", + __func__, (char*)VECTOR_SLOT(strvec, 0), buff); + rc = 1; +-- +2.17.2 + diff --git a/0016-multipathd-disable-queueing-for-recreated-map-in-uev.patch b/0016-multipathd-disable-queueing-for-recreated-map-in-uev.patch deleted file mode 100644 index a2cba95..0000000 --- a/0016-multipathd-disable-queueing-for-recreated-map-in-uev.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 4098378d2e976c9b371ae6bf83e802fb32187f50 Mon Sep 17 00:00:00 2001 -From: sunguoshuai -Date: Tue, 22 Jan 2019 21:29:56 -0500 -Subject: [PATCH] multipathd: disable queueing for recreated map in - uev_remove_map - -reason:disable queueing for recreated map in uev_remove_map ---- - multipathd/main.c | 23 +++++++++++++++++++++-- - 1 file changed, 21 insertions(+), 2 deletions(-) - -diff --git a/multipathd/main.c b/multipathd/main.c -index cc493c1..9dd74ad 100644 ---- a/multipathd/main.c -+++ b/multipathd/main.c -@@ -647,7 +647,7 @@ uev_add_map (struct uevent * uev, struct vectors * vecs) - char *alias; - int major = -1, minor = -1, rc; - -- condlog(3, "%s: add map (uevent)", uev->kernel); -+ condlog(2, "%s: add map (uevent)", uev->kernel); - alias = uevent_get_dm_name(uev); - if (!alias) { - condlog(3, "%s: No DM_NAME in uevent", uev->kernel); -@@ -766,7 +766,26 @@ uev_remove_map (struct uevent * uev, struct vectors * vecs) - mpp->alias, mpp->dmi->minor, minor); - goto out; - } -- -+ /* -+ * There may be a race window here: -+ * 1. all paths gone, causing map flushed both from multipathd and kernel -+ * 2. paths regenerated, causing multipathd creating the map again. -+ * 1 will generate a remove uevent which can be handled after 2, -+ * so we can disable queueing for the map created by 2 here temporarily -+ * and let the change uevent (generated by 2) calling uev_add_map -+ * ->setup_multipath to set queueing again. This can prevent -+ * the deadlock in this race window. -+ * -+ * The possible deadlock is: all udevd workers hangs in -+ * devices because of queue_if_no_path, so no udevd workers -+ * can handle new event and since multipathd will remove the map, -+ * the checkerloop cannot check this map's retry tick timeout -+ * and cancel the io hang which makes the udevd worker hang forever. -+ * multipathd cannot receive any uevent from udevd because all -+ * udevd workers hang there so the map cannot be recreated -+ * again which makes a deadlock. -+ */ -+ dm_queue_if_no_path(alias, 0); - orphan_paths(vecs->pathvec, mpp); - remove_map_and_stop_waiter(mpp, vecs); - out: --- -1.8.3.1 - diff --git a/0017-avoid-handling-paths-repeatedly-in-coalesce-paths.patch b/0017-avoid-handling-paths-repeatedly-in-coalesce-paths.patch deleted file mode 100644 index d60f7d9..0000000 --- a/0017-avoid-handling-paths-repeatedly-in-coalesce-paths.patch +++ /dev/null @@ -1,88 +0,0 @@ -From 6c79d35c3d351323d18b63d76450fcfbb6ef5b56 Mon Sep 17 00:00:00 2001 -From: sunguoshuai -Date: Tue, 22 Jan 2019 22:00:35 -0500 -Subject: [PATCH] Module: fix lun expansion failure when there is offline path - -reason:fix lun expansion failure when there is offline path ---- - libmultipath/configure.c | 11 +++++++++++ - libmultipath/structs.c | 1 + - libmultipath/structs.h | 1 + - libmultipath/structs_vec.c | 1 + - 4 files changed, 14 insertions(+) - -diff --git a/libmultipath/configure.c b/libmultipath/configure.c -index 09c3dcf..1b1cc55 100644 ---- a/libmultipath/configure.c -+++ b/libmultipath/configure.c -@@ -1021,6 +1021,7 @@ int coalesce_paths (struct vectors * vecs, vector newmp, char * refwwid, - } - vector_foreach_slot (pathvec, pp1, k) { - int invalid = 0; -+ condlog(3, "%s %s: start coalesce", pp1->dev, pp1->dev_t); - /* skip this path for some reason */ - - /* 1. if path has no unique id or wwid blacklisted */ -@@ -1053,6 +1054,12 @@ int coalesce_paths (struct vectors * vecs, vector newmp, char * refwwid, - orphan_path(pp1, "only one path"); - continue; - } -+ /* if path is handled before */ -+ if (pp1->handled) { -+ condlog(3, "%s: skip handled path.", pp1->dev_t); -+ continue; -+ } -+ - - /* - * at this point, we know we really got a new mp -@@ -1071,6 +1078,10 @@ int coalesce_paths (struct vectors * vecs, vector newmp, char * refwwid, - - for (i = k + 1; i < VECTOR_SIZE(pathvec); i++) { - pp2 = VECTOR_SLOT(pathvec, i); -+ if (pp2->handled) -+ continue; -+ -+ - - if (strcmp(pp1->wwid, pp2->wwid)) - continue; -diff --git a/libmultipath/structs.c b/libmultipath/structs.c -index ae847d6..99435c1 100644 ---- a/libmultipath/structs.c -+++ b/libmultipath/structs.c -@@ -100,6 +100,7 @@ alloc_path (void) - pp->fd = -1; - pp->tpgs = TPGS_UNDEF; - pp->priority = PRIO_UNDEF; -+ pp->handled = 0; - checker_clear(&pp->checker); - dm_path_to_gen(pp)->ops = &dm_gen_path_ops; - pp->hwe = vector_alloc(); -diff --git a/libmultipath/structs.h b/libmultipath/structs.h -index 0a2623a..d667cb7 100644 ---- a/libmultipath/structs.h -+++ b/libmultipath/structs.h -@@ -277,6 +277,7 @@ struct path { - struct checker checker; - struct multipath * mpp; - int fd; -+ int handled; - int initialized; - int retriggers; - int wwid_changed; -diff --git a/libmultipath/structs_vec.c b/libmultipath/structs_vec.c -index f87d69d..fba38c0 100644 ---- a/libmultipath/structs_vec.c -+++ b/libmultipath/structs_vec.c -@@ -388,6 +388,7 @@ int verify_paths(struct multipath *mpp, struct vectors *vecs) - return 0; - - vector_foreach_slot (mpp->paths, pp, i) { -+ pp->handled = 1; - /* - * see if path is in sysfs - */ --- -1.8.3.1 - diff --git a/0017-multipath-tools-tests-Makefile-add-lmpathcmd-to-LIBD.patch b/0017-multipath-tools-tests-Makefile-add-lmpathcmd-to-LIBD.patch new file mode 100644 index 0000000..282aa38 --- /dev/null +++ b/0017-multipath-tools-tests-Makefile-add-lmpathcmd-to-LIBD.patch @@ -0,0 +1,28 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Mon, 11 May 2020 18:24:19 +0200 +Subject: [PATCH] multipath-tools tests/Makefile: add -lmpathcmd to LIBDEPS + +Make sure the linker finds libmpathcmd. + +Signed-off-by: Benjamin Marzinski +--- + tests/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/Makefile b/tests/Makefile +index 77ff3249..028c9ea7 100644 +--- a/tests/Makefile ++++ b/tests/Makefile +@@ -10,7 +10,7 @@ W_MISSING_INITIALIZERS := $(call TEST_MISSING_INITIALIZERS) + + CFLAGS += $(BIN_CFLAGS) -I$(multipathdir) -I$(mpathcmddir) \ + -Wno-unused-parameter $(W_MISSING_INITIALIZERS) +-LIBDEPS += -L$(multipathdir) -lmultipath -lcmocka ++LIBDEPS += -L$(multipathdir) -L$(mpathcmddir) -lmultipath -lmpathcmd -lcmocka + + TESTS := uevent parser util dmevents hwtable blacklist unaligned vpd pgpolicy \ + alias directio +-- +2.17.2 + diff --git a/0018-fix-bugs-backported-from-next-branch.patch b/0018-fix-bugs-backported-from-next-branch.patch deleted file mode 100644 index dda642b..0000000 --- a/0018-fix-bugs-backported-from-next-branch.patch +++ /dev/null @@ -1,154 +0,0 @@ -From a9b5625e0dba3b76832b17c6fbb34840f1a91653 Mon Sep 17 00:00:00 2001 -From: sunguoshuai -Date: Wed, 23 Jan 2019 01:57:33 -0500 -Subject: [PATCH] fix bugs backported from next branch - -reason:fix bugs backported from next branch ---- - libmultipath/prioritizers/alua.c | 4 ++++ - libmultipath/prioritizers/emc.c | 2 +- - libmultipath/prioritizers/hds.c | 20 ++++++++++++-------- - libmultipath/structs_vec.c | 4 +++- - multipathd/main.c | 5 +++++ - 5 files changed, 25 insertions(+), 10 deletions(-) - -diff --git a/libmultipath/prioritizers/alua.c b/libmultipath/prioritizers/alua.c -index 03d0a0e..1400b11 100644 ---- a/libmultipath/prioritizers/alua.c -+++ b/libmultipath/prioritizers/alua.c -@@ -128,15 +128,19 @@ int getprio (struct path * pp, char * args, unsigned int timeout) - switch(-rc) { - case ALUA_PRIO_NOT_SUPPORTED: - condlog(0, "%s: alua not supported", pp->dev); -+ rc = 0; - break; - case ALUA_PRIO_RTPG_FAILED: - condlog(0, "%s: couldn't get target port group", pp->dev); -+ rc = 0; - break; - case ALUA_PRIO_GETAAS_FAILED: - condlog(0, "%s: couldn't get asymmetric access state", pp->dev); -+ rc = 0; - break; - case ALUA_PRIO_TPGS_FAILED: - condlog(3, "%s: couldn't get supported alua states", pp->dev); -+ rc = 0; - break; - } - } -diff --git a/libmultipath/prioritizers/emc.c b/libmultipath/prioritizers/emc.c -index a2f7487..c5382e0 100644 ---- a/libmultipath/prioritizers/emc.c -+++ b/libmultipath/prioritizers/emc.c -@@ -19,7 +19,7 @@ int emc_clariion_prio(const char *dev, int fd, unsigned int timeout) - unsigned char inqCmdBlk[INQUIRY_CMDLEN] = {INQUIRY_CMD, 1, 0xC0, 0, - sizeof(sense_buffer), 0}; - struct sg_io_hdr io_hdr; -- int ret = PRIO_UNDEF; -+ int ret = 0; - - memset(&io_hdr, 0, sizeof (struct sg_io_hdr)); - memset(&sense_buffer, 0, 128); -diff --git a/libmultipath/prioritizers/hds.c b/libmultipath/prioritizers/hds.c -index 70fb5d1..56d182b 100644 ---- a/libmultipath/prioritizers/hds.c -+++ b/libmultipath/prioritizers/hds.c -@@ -98,10 +98,12 @@ int hds_modular_prio (const char *dev, int fd, unsigned int timeout) - unsigned char *inqBuffp = inqBuff; - unsigned char sense_buffer[32]; - sg_io_hdr_t io_hdr; -+ int ret = 0; - - if ((ioctl (fd, SG_GET_VERSION_NUM, &k) < 0) || (k < 30000)) { - pp_hds_log(0, "can't use SG ioctl interface"); -- return -1; -+ goto out; -+ - } - - memset (&io_hdr, 0, sizeof (sg_io_hdr_t)); -@@ -118,11 +120,11 @@ int hds_modular_prio (const char *dev, int fd, unsigned int timeout) - - if (ioctl (fd, SG_IO, &io_hdr) < 0) { - pp_hds_log(0, "SG_IO error"); -- return -1; -+ goto out; - } - if ((io_hdr.info & SG_INFO_OK_MASK) != SG_INFO_OK) { - pp_hds_log(0, "SCSI error"); -- return -1; -+ goto out; - } - - snprintf (vendor, 9, "%.8s", inqBuffp + 8); -@@ -144,11 +146,11 @@ int hds_modular_prio (const char *dev, int fd, unsigned int timeout) - switch (ldev[3]) { - case '0': case '2': case '4': case '6': case '8': case 'A': case 'C': case 'E': - pp_hds_log(4, "CTRL EVEN, LDEV EVEN, PRIO 1"); -- return 1; -+ ret = 1; - break; - case '1': case '3': case '5': case '7': case '9': case 'B': case 'D': case 'F': - pp_hds_log(4, "CTRL EVEN, LDEV ODD, PRIO 0"); -- return 0; -+ ret = 0; - break; - } - break; -@@ -156,16 +158,18 @@ int hds_modular_prio (const char *dev, int fd, unsigned int timeout) - switch (ldev[3]) { - case '0': case '2': case '4': case '6': case '8': case 'A': case 'C': case 'E': - pp_hds_log(4, "CTRL ODD, LDEV EVEN, PRIO 0"); -- return 0; -+ ret = 0; - break; - case '1': case '3': case '5': case '7': case '9': case 'B': case 'D': case 'F': - pp_hds_log(4, "CTRL ODD, LDEV ODD, PRIO 1"); -- return 1; -+ ret = 1; - break; - } - break; - } -- return -1; -+ -+out: -+ return ret; - } - - int getprio (struct path * pp, char * args, unsigned int timeout) -diff --git a/libmultipath/structs_vec.c b/libmultipath/structs_vec.c -index fba38c0..d85eb5f 100644 ---- a/libmultipath/structs_vec.c -+++ b/libmultipath/structs_vec.c -@@ -32,8 +32,10 @@ int update_mpp_paths(struct multipath *mpp, vector pathvec) - return 0; - - if (!mpp->paths && -- !(mpp->paths = vector_alloc())) -+ !(mpp->paths = vector_alloc())) { -+ condlog(2, "mpp->paths alloc failed"); - return 1; -+ } - - vector_foreach_slot (mpp->pg, pgp, i) { - vector_foreach_slot (pgp->paths, pp, j) { -diff --git a/multipathd/main.c b/multipathd/main.c -index 9dd74ad..7a80688 100644 ---- a/multipathd/main.c -+++ b/multipathd/main.c -@@ -1624,6 +1624,11 @@ enable_group(struct path * pp) - - pgp = VECTOR_SLOT(pp->mpp->pg, pp->pgindex - 1); - -+ if (!pgp) { -+ condlog(2, "%s: pgp is NULL", pp->mpp->alias); -+ return; -+ } -+ - if (pgp->status == PGSTATE_DISABLED) { - condlog(2, "%s: enable group #%i", pp->mpp->alias, pp->pgindex); - dm_enablegroup(pp->mpp->alias, pp->pgindex); --- -2.19.1 - diff --git a/0018-multipath-tools-tests-Makefile-Fix-OBJDEPS-for-hwtab.patch b/0018-multipath-tools-tests-Makefile-Fix-OBJDEPS-for-hwtab.patch new file mode 100644 index 0000000..5835089 --- /dev/null +++ b/0018-multipath-tools-tests-Makefile-Fix-OBJDEPS-for-hwtab.patch @@ -0,0 +1,34 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Mon, 11 May 2020 23:44:19 +0200 +Subject: [PATCH] multipath tools tests/Makefile: Fix OBJDEPS for hwtable-test + +OBJDEPS needs to list object files that _call_ functions we want +to wrap, but it should _not_ list the object files where these +functions are defined; otherwise the linker might resolve these +symbols before they can be wrapped. + +(Observed on i586 with gcc 9.3.1, ld 2.34.0, where wrapping +prio_getprio() doesn't work with prio.o in OBJDEPS). + +Signed-off-by: Benjamin Marzinski +--- + tests/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/Makefile b/tests/Makefile +index 028c9ea7..1b8706a7 100644 +--- a/tests/Makefile ++++ b/tests/Makefile +@@ -41,7 +41,7 @@ endif + dmevents-test_LIBDEPS = -lpthread -ldevmapper -lurcu + hwtable-test_TESTDEPS := test-lib.o + hwtable-test_OBJDEPS := ../libmultipath/discovery.o ../libmultipath/blacklist.o \ +- ../libmultipath/prio.o ../libmultipath/callout.o ../libmultipath/structs.o ++ ../libmultipath/structs.o + hwtable-test_LIBDEPS := -ludev -lpthread -ldl + blacklist-test_TESTDEPS := test-log.o + blacklist-test_OBJDEPS := ../libmultipath/blacklist.o +-- +2.17.2 + diff --git a/0019-bugfix-fix-change-reservation-key-to-uint8-for-memcmp.patch b/0019-bugfix-fix-change-reservation-key-to-uint8-for-memcmp.patch deleted file mode 100644 index af0ac0e..0000000 --- a/0019-bugfix-fix-change-reservation-key-to-uint8-for-memcmp.patch +++ /dev/null @@ -1,46 +0,0 @@ -From aa3dbb9a4c7ba220139801533a27d99542d4e909 Mon Sep 17 00:00:00 2001 -From: sunguoshuai -Date: Wed, 23 Jan 2019 02:21:31 -0500 -Subject: [PATCH] fix change reservation key to uint8 for - memcmp - -reason:fix change reservation key to uint8 for memcmp ---- - libmpathpersist/mpath_persist.c | 14 ++++++++++++-- - 1 file changed, 12 insertions(+), 2 deletions(-) - -diff --git a/libmpathpersist/mpath_persist.c b/libmpathpersist/mpath_persist.c -index 691b4e1..a2907db 100644 ---- a/libmpathpersist/mpath_persist.c -+++ b/libmpathpersist/mpath_persist.c -@@ -263,6 +263,9 @@ int mpath_persistent_reserve_out ( int fd, int rq_servact, int rq_scope, - int ret; - uint64_t prkey; - struct config *conf; -+ uint8_t uitmp[8] = {0}; -+ uint64_t uireservation = {0}; -+ int j; - - conf = get_multipath_config(); - conf->verbosity = verbose; -@@ -353,8 +356,15 @@ int mpath_persistent_reserve_out ( int fd, int rq_servact, int rq_scope, - } - } - -- if (memcmp(paramp->key, &mpp->reservation_key, 8) && -- memcmp(paramp->sa_key, &mpp->reservation_key, 8)) { -+ uireservation = get_be64(mpp->reservation_key); -+ for (j = 7; j >= 0; --j) { -+ uitmp[j] = (uireservation & 0xff); -+ uireservation >>= 8; -+ } -+ -+ if (memcmp(paramp->key, uitmp, 8) && -+ memcmp(paramp->sa_key, uitmp, 8)) { -+ - condlog(0, "%s: configured reservation key doesn't match: 0x%" PRIx64, alias, get_be64(mpp->reservation_key)); - ret = MPATH_PR_SYNTAX_ERROR; - goto out1; --- -1.8.3.1 - diff --git a/0019-multipath-tools-tests-test-lib.c-drop-__wrap_is_clai.patch b/0019-multipath-tools-tests-test-lib.c-drop-__wrap_is_clai.patch new file mode 100644 index 0000000..e5882f6 --- /dev/null +++ b/0019-multipath-tools-tests-test-lib.c-drop-__wrap_is_clai.patch @@ -0,0 +1,33 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Mon, 11 May 2020 23:43:02 +0200 +Subject: [PATCH] multipath-tools tests/test-lib.c: drop + __wrap_is_claimed_by_foreign + +is_claimed_by_foreign() is an inline function and can't be wrapped. + +Signed-off-by: Benjamin Marzinski +--- + tests/test-lib.c | 6 ------ + 1 file changed, 6 deletions(-) + +diff --git a/tests/test-lib.c b/tests/test-lib.c +index 59275163..00bae58e 100644 +--- a/tests/test-lib.c ++++ b/tests/test-lib.c +@@ -56,12 +56,6 @@ int __wrap_execute_program(char *path, char *value, int len) + return 0; + } + +-bool __wrap_is_claimed_by_foreign(struct udev_device *ud) +-{ +- condlog(5, "%s: %p", __func__, ud); +- return false; +-} +- + struct udev_list_entry + *__wrap_udev_device_get_properties_list_entry(struct udev_device *ud) + { +-- +2.17.2 + diff --git a/0020-bugfix-ignore-for-clear-mismatch-key.patch b/0020-bugfix-ignore-for-clear-mismatch-key.patch deleted file mode 100644 index b76e188..0000000 --- a/0020-bugfix-ignore-for-clear-mismatch-key.patch +++ /dev/null @@ -1,49 +0,0 @@ -From de2078dd66a62ca7ba2ae6adc406311e830572fa Mon Sep 17 00:00:00 2001 -From: sunguoshuai -Date: Wed, 23 Jan 2019 02:38:00 -0500 -Subject: [PATCH] ignore for clear mismatch key - -reason:ignore for clear mismatch key ---- - libmpathpersist/mpath_persist.c | 17 +++++++++++------ - 1 file changed, 11 insertions(+), 6 deletions(-) - -diff --git a/libmpathpersist/mpath_persist.c b/libmpathpersist/mpath_persist.c -index a2907db..27c848c 100644 ---- a/libmpathpersist/mpath_persist.c -+++ b/libmpathpersist/mpath_persist.c -@@ -345,7 +345,8 @@ int mpath_persistent_reserve_out ( int fd, int rq_servact, int rq_scope, - if (mpp->prkey_source == PRKEY_SOURCE_FILE && prkey && - ((!get_be64(mpp->reservation_key) && - rq_servact == MPATH_PROUT_REG_SA) || -- rq_servact == MPATH_PROUT_REG_IGN_SA)) { -+ rq_servact == MPATH_PROUT_REG_IGN_SA || -+ (!memcmp(paramp->key, &mpp->reservation_key, 8) && rq_servact == MPATH_PROUT_REG_SA))) { - memcpy(&mpp->reservation_key, paramp->sa_key, 8); - if (update_prkey_flags(alias, get_be64(mpp->reservation_key), - paramp->sa_flags)) { -@@ -362,12 +363,16 @@ int mpath_persistent_reserve_out ( int fd, int rq_servact, int rq_scope, - uireservation >>= 8; - } - -- if (memcmp(paramp->key, uitmp, 8) && -- memcmp(paramp->sa_key, uitmp, 8)) { -+ /* pass -I option */ -+ if (rq_servact != MPATH_PROUT_REG_IGN_SA) { -+ if (memcmp(paramp->key, uitmp, 8) && -+ memcmp(paramp->sa_key, uitmp, 8)) { -+ condlog(0, "%s: configured reservation key doesn't match: 0x%" PRIx64, alias, get_be64(mpp->reservation_key)); -+ ret = MPATH_PR_SYNTAX_ERROR; -+ goto out1; -+ } -+ - -- condlog(0, "%s: configured reservation key doesn't match: 0x%" PRIx64, alias, get_be64(mpp->reservation_key)); -- ret = MPATH_PR_SYNTAX_ERROR; -- goto out1; - } - - switch(rq_servact) --- -1.8.3.1 - diff --git a/0020-multipath-tools-tests-directio-fix-Wmaybe-uninitaliz.patch b/0020-multipath-tools-tests-directio-fix-Wmaybe-uninitaliz.patch new file mode 100644 index 0000000..3bf6f75 --- /dev/null +++ b/0020-multipath-tools-tests-directio-fix-Wmaybe-uninitaliz.patch @@ -0,0 +1,29 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Tue, 12 May 2020 00:11:39 +0200 +Subject: [PATCH] multipath-tools tests/directio: fix -Wmaybe-uninitalized + warning + +Initialize aio_grp to satisfy gcc. + +Signed-off-by: Benjamin Marzinski +--- + tests/directio.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/directio.c b/tests/directio.c +index 3cd7a520..66aaf0eb 100644 +--- a/tests/directio.c ++++ b/tests/directio.c +@@ -316,7 +316,7 @@ static void test_init_free(void **state) + { + int i, count = 0; + struct checker c[4096] = {0}; +- struct aio_group *aio_grp; ++ struct aio_group *aio_grp = NULL; + + assert_true(list_empty(&aio_grp_list)); + will_return(__wrap_io_setup, 0); +-- +2.17.2 + diff --git a/0021-bugfix-flush-and-sync-before-reboot.patch b/0021-bugfix-flush-and-sync-before-reboot.patch deleted file mode 100644 index dd41184..0000000 --- a/0021-bugfix-flush-and-sync-before-reboot.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/libmultipath/util.c b/libmultipath/util.c -index 8d8fcc8..3c284b7 100644 ---- a/libmultipath/util.c -+++ b/libmultipath/util.c -@@ -463,5 +463,12 @@ int safe_write(int fd, const void *buf, size_t count) - count -= r; - buf = (const char *)buf + r; - } -+ -+ /* sync->disk */ -+ if (fsync(fd) < 0) { -+ condlog(0, "failed to fsync fd :%d", fd); -+ return -errno; -+ } -+ - return 0; - } diff --git a/0021-libmultipath-move-libsg-into-libmultipath.patch b/0021-libmultipath-move-libsg-into-libmultipath.patch new file mode 100644 index 0000000..e7cf278 --- /dev/null +++ b/0021-libmultipath-move-libsg-into-libmultipath.patch @@ -0,0 +1,83 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Tue, 12 May 2020 16:46:15 +0200 +Subject: [PATCH] libmultipath: move libsg into libmultipath + +sg_read() is called from readsector0 and emc_clariion. Move it +to libmultipath/, where all common code resides. + +Signed-off-by: Benjamin Marzinski +--- + libmultipath/Makefile | 3 ++- + libmultipath/checkers/Makefile | 6 +++--- + libmultipath/{checkers => }/libsg.c | 0 + libmultipath/{checkers => }/libsg.h | 0 + libmultipath/prioritizers/Makefile | 2 +- + 5 files changed, 6 insertions(+), 5 deletions(-) + rename libmultipath/{checkers => }/libsg.c (100%) + rename libmultipath/{checkers => }/libsg.h (100%) + +diff --git a/libmultipath/Makefile b/libmultipath/Makefile +index ad690a49..f19b7ad2 100644 +--- a/libmultipath/Makefile ++++ b/libmultipath/Makefile +@@ -47,7 +47,8 @@ OBJS = memory.o parser.o vector.o devmapper.o callout.o \ + switchgroup.o uxsock.o print.o alias.o log_pthread.o \ + log.o configure.o structs_vec.o sysfs.o prio.o checkers.o \ + lock.o file.o wwids.o prioritizers/alua_rtpg.o prkey.o \ +- io_err_stat.o dm-generic.o generic.o foreign.o nvme-lib.o ++ io_err_stat.o dm-generic.o generic.o foreign.o nvme-lib.o \ ++ libsg.o + + all: $(LIBS) + +diff --git a/libmultipath/checkers/Makefile b/libmultipath/checkers/Makefile +index 02caea64..01c04510 100644 +--- a/libmultipath/checkers/Makefile ++++ b/libmultipath/checkers/Makefile +@@ -17,10 +17,10 @@ LIBS= \ + + all: $(LIBS) + +-libcheckdirectio.so: libsg.o directio.o ++libcheckdirectio.so: directio.o + $(CC) $(LDFLAGS) $(SHARED_FLAGS) -o $@ $^ -laio + +-libcheck%.so: libsg.o %.o ++libcheck%.so: %.o + $(CC) $(LDFLAGS) $(SHARED_FLAGS) -o $@ $^ + + install: +@@ -32,7 +32,7 @@ uninstall: + clean: dep_clean + $(RM) core *.a *.o *.gz *.so + +-OBJS := $(LIBS:libcheck%.so=%.o) libsg.o directio.o ++OBJS := $(LIBS:libcheck%.so=%.o) + .SECONDARY: $(OBJS) + + include $(wildcard $(OBJS:.o=.d)) +diff --git a/libmultipath/checkers/libsg.c b/libmultipath/libsg.c +similarity index 100% +rename from libmultipath/checkers/libsg.c +rename to libmultipath/libsg.c +diff --git a/libmultipath/checkers/libsg.h b/libmultipath/libsg.h +similarity index 100% +rename from libmultipath/checkers/libsg.h +rename to libmultipath/libsg.h +diff --git a/libmultipath/prioritizers/Makefile b/libmultipath/prioritizers/Makefile +index 9d0fe03c..fc6e0e0c 100644 +--- a/libmultipath/prioritizers/Makefile ++++ b/libmultipath/prioritizers/Makefile +@@ -28,7 +28,7 @@ endif + + all: $(LIBS) + +-libpriopath_latency.so: path_latency.o ../checkers/libsg.o ++libpriopath_latency.so: path_latency.o + $(CC) $(LDFLAGS) $(SHARED_FLAGS) -o $@ $^ -lm + + libprio%.so: %.o +-- +2.17.2 + diff --git a/0022-bugfix-RH-remove-local-disk-from-pathvec.patch b/0022-bugfix-RH-remove-local-disk-from-pathvec.patch deleted file mode 100644 index 3aa00c4..0000000 --- a/0022-bugfix-RH-remove-local-disk-from-pathvec.patch +++ /dev/null @@ -1,206 +0,0 @@ -From f637f15dacc660f663a6cf36e3fe8f7a0cc9f9e4 Mon Sep 17 00:00:00 2001 -From: chenminhua -Date: Mon, 2 Apr 2018 04:01:04 -0400 -Subject: [PATCH] 1hostos-patch-upgrade:0330 hotpatch modify - -[Changelog]:add upgrade path -[Author]:chenminhua - ---- - libmultipath/discovery.c | 129 +++++++++++++++++++++++++++++++++++++-- - libmultipath/discovery.h | 1 + - multipathd/main.c | 4 ++ - 3 files changed, 128 insertions(+), 6 deletions(-) - -diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c -index 0b1855d..95eb3a0 100644 ---- a/libmultipath/discovery.c -+++ b/libmultipath/discovery.c -@@ -34,6 +34,103 @@ - #include "prioritizers/alua_rtpg.h" - #include "foreign.h" - -+const char *conf_file = "/etc/multipath_private.conf"; -+static int conf_file_parsed = 0; -+static int should_remove_local_disk = 0; -+ -+static void parse_config() -+{ -+ FILE *fp = NULL; -+ char buffer[256] = {0}; -+ char *str = NULL; -+ char *p = NULL; -+ -+ fp = fopen(conf_file, "r"); -+ if (fp) { -+ while (fgets(buffer, sizeof(buffer), fp)) { -+ str = buffer; -+ /* skip the space */ -+ while (isspace(*str)) -+ str++; -+ /* skip the comment line */ -+ if (strncmp(str, "#", 1) == 0) -+ continue; -+ /* skip line feed */ -+ if((p = strchr(str, '\n')) != NULL) -+ *p = '\0'; -+ if (strstr(str, "remove_local_disk") != NULL && (p = strstr(str, "=")) != NULL){ -+ str = p + 1; -+ /* skip the space */ -+ while (isspace(*str)) -+ str++; -+ if (strcmp(str, "1") == 0){ -+ should_remove_local_disk = 1; -+ } -+ break; -+ } -+ } -+ fclose(fp); -+ fp = NULL; -+ } -+ conf_file_parsed = 1; -+} -+ -+static int get_should_remove_local_disk() -+{ -+ if (!conf_file_parsed) -+ parse_config(); -+ return should_remove_local_disk; -+} -+ -+/* Filter the local disks and remove them from pathvec */ -+static int -+transport (int h) -+{ -+ char buff[PATH_SIZE]; -+ int len, off; -+ struct stat a_stat; -+ -+ /* FC host */ -+ strcpy(buff, "/sys"); -+ strcat(buff, "/class/fc_host/"); -+ len = strlen(buff); -+ snprintf(buff + len, PATH_SIZE - len, "host%d", h); -+ if ((stat(buff, &a_stat) >= 0) && S_ISDIR(a_stat.st_mode)) { -+ return 0; -+ } -+ memset(buff, 0, PATH_SIZE); -+ -+ /* iSCSI device */ -+ strcpy(buff, "/sys"); -+ strcat(buff, "/class/iscsi_host/"); -+ off = strlen(buff); -+ snprintf(buff + off, PATH_SIZE - off, "host%d", h); -+ if ((stat(buff, &a_stat) >= 0) && S_ISDIR(a_stat.st_mode)) { -+ return 0; -+ } -+ return 1; -+} -+ -+int -+remove_local_path (vector pathvec, struct path *pp) -+{ -+ int i = -1; -+ -+ if(!get_should_remove_local_disk()){ -+ return 1; -+ } -+ -+ if (transport(pp->sg_id.host_no) == 0) { -+ return 1; -+ } -+ -+ if ((i = find_slot(pathvec, (void *)pp)) != -1) { -+ vector_del_slot(pathvec, i); -+ } -+ free_path(pp); -+ return 0; -+} -+ - int - alloc_path_with_pathinfo (struct config *conf, struct udev_device *udevice, - const char *wwid, int flag, struct path **pp_ptr) -@@ -118,6 +215,7 @@ path_discover (vector pathvec, struct config * conf, - { - struct path * pp; - const char * devname; -+ int err = 1; - - devname = udev_device_get_sysname(udevice); - if (!devname) -@@ -131,11 +229,22 @@ path_discover (vector pathvec, struct config * conf, - snprintf(devt, BLK_DEV_SIZE, "%d:%d", - major(devnum), minor(devnum)); - pp = find_path_by_devt(pathvec, devt); -- if (!pp) -- return store_pathinfo(pathvec, conf, -- udevice, flag, NULL); -+ if (!pp) { -+ err = store_pathinfo(pathvec, conf, -+ udevice, flag, &pp); -+ if (err == 1) -+ return 1; -+ if (err == 0) -+ remove_local_path(pathvec, pp); -+ return 0; -+ } - } -- return pathinfo(pp, conf, flag); -+ err = pathinfo(pp, conf, flag); -+ if (err) -+ return err; -+ -+ remove_local_path(pathvec, pp); -+ return err; - } - - int -@@ -1882,8 +1991,16 @@ int pathinfo(struct path *pp, struct config *conf, int mask) - /* - * fetch info available in sysfs - */ -- if (mask & DI_SYSFS && sysfs_pathinfo(pp, conf->hwtable)) -- return PATHINFO_FAILED; -+ if (mask & DI_SYSFS) { -+ if (sysfs_pathinfo(pp, conf->hwtable)) -+ return 1; -+ -+ /* free local device */ -+ if (transport(pp->sg_id.host_no)) { -+ condlog(3, "%s is a local device", pp->dev); -+ return 0; -+ } -+ } - - if (mask & DI_BLACKLIST && mask & DI_SYSFS) { - if (filter_device(conf->blist_device, conf->elist_device, -diff --git a/libmultipath/discovery.h b/libmultipath/discovery.h -index 9aacf75..c4b1d25 100644 ---- a/libmultipath/discovery.h -+++ b/libmultipath/discovery.h -@@ -53,6 +53,7 @@ ssize_t sysfs_get_vpd (struct udev_device * udev, int pg, unsigned char * buff, - int sysfs_get_asymmetric_access_state(struct path *pp, - char *buff, int buflen); - int get_uid(struct path * pp, int path_state, struct udev_device *udev); -+int remove_local_path(vector pathvec, struct path *pp); - - /* - * discovery bitmask -diff --git a/multipathd/main.c b/multipathd/main.c -index 7a80688..c2757c4 100644 ---- a/multipathd/main.c -+++ b/multipathd/main.c -@@ -917,6 +917,10 @@ ev_add_path (struct path * pp, struct vectors * vecs, int need_do_map) - int start_waiter = 0; - int ret; - -+ /* if pp is local path,remove it and return 0. */ -+ if (!remove_local_path(vecs->pathvec, pp)) -+ return 0; -+ - /* - * need path UID to go any further - */ --- -2.19.1 - diff --git a/0022-multipath-tools-Makefile-add-install-dependency.patch b/0022-multipath-tools-Makefile-add-install-dependency.patch new file mode 100644 index 0000000..95c80fd --- /dev/null +++ b/0022-multipath-tools-Makefile-add-install-dependency.patch @@ -0,0 +1,32 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Tue, 12 May 2020 22:13:51 +0200 +Subject: [PATCH] multipath-tools Makefile: add install dependency + +$(libdir) must exist before running "make install" on prioritizer, checker, +and foreign libraries. + +Cc: Christian Hesse +Signed-off-by: Benjamin Marzinski +--- + Makefile | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/Makefile b/Makefile +index fec3b73b..8bcaba66 100644 +--- a/Makefile ++++ b/Makefile +@@ -32,6 +32,10 @@ libmultipath libdmmp: libmpathcmd + libmpathpersist multipath multipathd: libmultipath + mpathpersist multipathd: libmpathpersist + ++libmultipath/checkers.install \ ++ libmultipath/prioritizers.install \ ++ libmultipath/foreign.install: libmultipath.install ++ + $(BUILDDIRS.clean): + $(MAKE) -C ${@:.clean=} clean + +-- +2.17.2 + diff --git a/0023-bugfix-lun-expansion-failure-when-there-is-offline-path.patch b/0023-bugfix-lun-expansion-failure-when-there-is-offline-path.patch deleted file mode 100644 index 8586f3d..0000000 --- a/0023-bugfix-lun-expansion-failure-when-there-is-offline-path.patch +++ /dev/null @@ -1,54 +0,0 @@ -diff --git a/libmultipath/configure.c b/libmultipath/configure.c -index 1b1cc55..f66bd5b 100644 ---- a/libmultipath/configure.c -+++ b/libmultipath/configure.c -@@ -1054,11 +1054,18 @@ int coalesce_paths (struct vectors * vecs, vector newmp, char * refwwid, - orphan_path(pp1, "only one path"); - continue; - } -- /* if path is handled before */ -- if (pp1->handled) { -- condlog(3, "%s: skip handled path.", pp1->dev_t); -- continue; -- } -+ -+ /* if path is offline */ -+ if (pp1->state == PATH_DOWN) { -+ orphan_path(pp1, "skip offline path"); -+ continue; -+ } -+ -+ /* if path is handled before */ -+ if (pp1->handled) { -+ condlog(3, "%s: skip handled path.", pp1->dev_t); -+ continue; -+ } - - - /* -@@ -1086,6 +1093,9 @@ int coalesce_paths (struct vectors * vecs, vector newmp, char * refwwid, - if (strcmp(pp1->wwid, pp2->wwid)) - continue; - -+ if (!pp2->size || pp2->state == PATH_DOWN) -+ continue; -+ - if (!mpp->size && pp2->size) - mpp->size = pp2->size; - -diff --git a/libmultipath/structs_vec.c b/libmultipath/structs_vec.c -index d85eb5f..6c42824 100644 ---- a/libmultipath/structs_vec.c -+++ b/libmultipath/structs_vec.c -@@ -394,8 +394,9 @@ int verify_paths(struct multipath *mpp, struct vectors *vecs) - /* - * see if path is in sysfs - */ -- if (sysfs_attr_get_value(pp->udev, "dev", -- pp->dev_t, BLK_DEV_SIZE) < 0) { -+ if ((sysfs_attr_get_value(pp->udev, "dev", -+ pp->dev_t, BLK_DEV_SIZE) < 0) || -+ (pp->state == PATH_DOWN && pp->size != mpp->size)) { - if (pp->state != PATH_DOWN) { - condlog(1, "%s: removing valid path %s in state %d", - mpp->alias, pp->dev, pp->state); diff --git a/0023-libmultipath-make-libmp_dm_init-optional.patch b/0023-libmultipath-make-libmp_dm_init-optional.patch new file mode 100644 index 0000000..588fd87 --- /dev/null +++ b/0023-libmultipath-make-libmp_dm_init-optional.patch @@ -0,0 +1,89 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Tue, 19 May 2020 12:08:40 -0500 +Subject: [PATCH] libmultipath: make libmp_dm_init optional + +Move dm_initialized out of libmp_dm_task_create(), and add +a function skip_libmp_dm_init() so that users of libmultipath can skip +initializing device-mapper. This is needed for other programs that +use libmultipath (or a library that depends on it) but want to control +how device-mapper is set up. + +Also make dm_prereq a global function. + +Reviewed-by: Martin Wilck +Signed-off-by: Benjamin Marzinski +--- + libmultipath/devmapper.c | 17 +++++++++++++---- + libmultipath/devmapper.h | 3 ++- + 2 files changed, 15 insertions(+), 5 deletions(-) + +diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c +index 13a1cf53..7ed494a1 100644 +--- a/libmultipath/devmapper.c ++++ b/libmultipath/devmapper.c +@@ -33,6 +33,8 @@ + #define MAX_WAIT 5 + #define LOOPS_PER_SEC 5 + ++static pthread_once_t dm_initialized = PTHREAD_ONCE_INIT; ++ + static int dm_conf_verbosity; + + #ifdef LIBDM_API_DEFERRED +@@ -229,7 +231,7 @@ dm_tgt_prereq (unsigned int *ver) + return 1; + } + +-static int dm_prereq(unsigned int *v) ++int dm_prereq(unsigned int *v) + { + if (dm_lib_prereq()) + return 1; +@@ -243,7 +245,7 @@ void libmp_udev_set_sync_support(int on) + libmp_dm_udev_sync = !!on; + } + +-void libmp_dm_init(void) ++static void libmp_dm_init(void) + { + struct config *conf; + int verbosity; +@@ -262,11 +264,18 @@ void libmp_dm_init(void) + dm_udev_set_sync_support(libmp_dm_udev_sync); + } + ++static void _do_skip_libmp_dm_init(void) ++{ ++} ++ ++void skip_libmp_dm_init(void) ++{ ++ pthread_once(&dm_initialized, _do_skip_libmp_dm_init); ++} ++ + struct dm_task* + libmp_dm_task_create(int task) + { +- static pthread_once_t dm_initialized = PTHREAD_ONCE_INIT; +- + pthread_once(&dm_initialized, libmp_dm_init); + return dm_task_create(task); + } +diff --git a/libmultipath/devmapper.h b/libmultipath/devmapper.h +index 7557a86b..17fc9faf 100644 +--- a/libmultipath/devmapper.h ++++ b/libmultipath/devmapper.h +@@ -28,7 +28,8 @@ + #define UUID_PREFIX_LEN (sizeof(UUID_PREFIX) - 1) + + void dm_init(int verbosity); +-void libmp_dm_init(void); ++int dm_prereq(unsigned int *v); ++void skip_libmp_dm_init(void); + void libmp_udev_set_sync_support(int on); + struct dm_task *libmp_dm_task_create(int task); + int dm_drv_version (unsigned int * version); +-- +2.17.2 + diff --git a/0024-bugfix-some-memory-leaks-issues-in-libmpathpersist.patch b/0024-bugfix-some-memory-leaks-issues-in-libmpathpersist.patch deleted file mode 100644 index 1b61be2..0000000 --- a/0024-bugfix-some-memory-leaks-issues-in-libmpathpersist.patch +++ /dev/null @@ -1,162 +0,0 @@ -diff --git a/libmpathpersist/mpath_persist.c b/libmpathpersist/mpath_persist.c -index 27c848c..1e6a172 100644 ---- a/libmpathpersist/mpath_persist.c -+++ b/libmpathpersist/mpath_persist.c -@@ -199,6 +199,11 @@ int mpath_persistent_reserve_in (int fd, int rq_servact, - if (map_present && !dm_is_mpath(alias)){ - condlog( 0, "%s: not a multipath device.", alias); - ret = MPATH_PR_DMMP_ERROR; -+ if (curmp) -+ vector_free(curmp); -+ if (pathvec) -+ vector_free(pathvec); -+ - goto out; - } - -@@ -297,6 +302,10 @@ int mpath_persistent_reserve_out ( int fd, int rq_servact, int rq_scope, - if (map_present && !dm_is_mpath(alias)){ - condlog(3, "%s: not a multipath device.", alias); - ret = MPATH_PR_DMMP_ERROR; -+ if (curmp) -+ vector_free(curmp); -+ if (pathvec) -+ vector_free(pathvec); - goto out; - } - -@@ -321,7 +330,7 @@ int mpath_persistent_reserve_out ( int fd, int rq_servact, int rq_scope, - goto out1; - } - -- /* get info of all paths from the dm device */ -+ /* get info of all paths from the dm device */ - if (get_mpvec(curmp, pathvec, alias)){ - condlog(0, "%s: failed to get device info.", alias); - ret = MPATH_PR_DMMP_ERROR; -@@ -882,7 +891,7 @@ out: - return (status); - } - --void * mpath_alloc_prin_response(int prin_sa) -+void *mpath_alloc_prin_response(int prin_sa) - { - void * ptr = NULL; - int size=0; -@@ -905,6 +914,10 @@ void * mpath_alloc_prin_response(int prin_sa) - if (size > 0) - { - ptr = calloc(size, 1); -+ if (!ptr) { -+ condlog (0, "failed to allocate MPATH_PRIN_RFSTAT_SA buffer"); -+ return NULL; -+ } - } - return ptr; - } -diff --git a/libmpathpersist/mpath_pr_ioctl.c b/libmpathpersist/mpath_pr_ioctl.c -index 6dd7403..b317b4e 100644 ---- a/libmpathpersist/mpath_pr_ioctl.c -+++ b/libmpathpersist/mpath_pr_ioctl.c -@@ -25,8 +25,8 @@ - int prin_do_scsi_ioctl(char * dev, int rq_servact, struct prin_resp *resp, int noisy); - void mpath_format_readkeys(struct prin_resp *pr_buff, int len , int noisy); - void mpath_format_readfullstatus(struct prin_resp *pr_buff, int len, int noisy); --int mpath_translate_response (char * dev, struct sg_io_hdr io_hdr, -- SenseData_t *Sensedata, int noisy); -+int mpath_translate_response (const char *dev, struct sg_io_hdr *io_hdr, -+ const SenseData_t *Sensedata, int noisy); - void dumpHex(const char* str, int len, int no_ascii); - int prout_do_scsi_ioctl( char * dev, int rq_servact, int rq_scope, - unsigned int rq_type, struct prout_param_descriptor *paramp, int noisy); -@@ -115,7 +115,7 @@ retry : - - condlog(4, "%s: Duration=%u (ms)", dev, io_hdr.duration); - -- status = mpath_translate_response(dev, io_hdr, &Sensedata, noisy); -+ status = mpath_translate_response(dev, &io_hdr, &Sensedata, noisy); - condlog(3, "%s: status = %d", dev, status); - - if (status == MPATH_PR_SENSE_UNIT_ATTENTION && (retry > 0)) -@@ -354,7 +354,7 @@ retry : - condlog(3, "%s: duration = %u (ms)", dev, io_hdr.duration); - condlog(4, "%s: persistent reservation in: requested %d bytes but got %d bytes)", dev, mx_resp_len, got); - -- status = mpath_translate_response(dev, io_hdr, &Sensedata, noisy); -+ status = mpath_translate_response(dev, &io_hdr, &Sensedata, noisy); - - if (status == MPATH_PR_SENSE_UNIT_ATTENTION && (retry > 0)) - { -@@ -399,18 +399,18 @@ out: - return status; - } - --int mpath_translate_response (char * dev, struct sg_io_hdr io_hdr, -- SenseData_t *Sensedata, int noisy) -+int mpath_translate_response (const char *dev, struct sg_io_hdr *io_hdr, -+ const SenseData_t *Sensedata, int noisy) - { - condlog(3, "%s: status driver:%02x host:%02x scsi:%02x", dev, -- io_hdr.driver_status, io_hdr.host_status ,io_hdr.status); -- io_hdr.status &= 0x7e; -- if ((0 == io_hdr.status) && -- (0 == io_hdr.host_status) && -- (0 == io_hdr.driver_status)) -+ io_hdr->driver_status, io_hdr->host_status ,io_hdr->status); -+ io_hdr->status &= 0x7e; -+ if ((0 == io_hdr->status) && -+ (0 == io_hdr->host_status) && -+ (0 == io_hdr->driver_status)) - return MPATH_PR_SUCCESS; - -- switch(io_hdr.status) { -+ switch(io_hdr->status) { - case SAM_STAT_GOOD: - break; - case SAM_STAT_CHECK_CONDITION: -@@ -450,13 +450,13 @@ int mpath_translate_response (char * dev, struct sg_io_hdr io_hdr, - return MPATH_PR_OTHER; - } - -- switch(io_hdr.host_status) { -+ switch(io_hdr->host_status) { - case DID_OK : - break; - default : - return MPATH_PR_OTHER; - } -- switch(io_hdr.driver_status) -+ switch(io_hdr->driver_status) - { - case DRIVER_OK: - break; -diff --git a/mpathpersist/main.c b/mpathpersist/main.c -index 0e4d3f2..4db07b2 100644 ---- a/mpathpersist/main.c -+++ b/mpathpersist/main.c -@@ -61,7 +61,7 @@ struct udev *udev; - - int main (int argc, char * argv[]) - { -- int fd, c, res; -+ int c, res, fd = -1; - const char *device_name = NULL; - int num_prin_sa = 0; - int num_prout_sa = 0; -@@ -488,6 +488,7 @@ int main (int argc, char * argv[]) - } - - res = close (fd); -+ fd = -1; - if (res < 0) - { - mpath_lib_exit(conf); -@@ -496,6 +497,8 @@ int main (int argc, char * argv[]) - } - - out : -+ if (fd >= 0) -+ close(fd); - mpath_lib_exit(conf); - udev_unref(udev); - return (ret >= 0) ? ret : MPATH_PR_OTHER; diff --git a/0024-libmultipath-make-sysfs_is_multipathed-able-to-retur.patch b/0024-libmultipath-make-sysfs_is_multipathed-able-to-retur.patch new file mode 100644 index 0000000..47c7a80 --- /dev/null +++ b/0024-libmultipath-make-sysfs_is_multipathed-able-to-retur.patch @@ -0,0 +1,108 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Tue, 19 May 2020 12:08:41 -0500 +Subject: [PATCH] libmultipath: make sysfs_is_multipathed able to return wwid + +sysfs_is_multipathed reads the wwid of the dm device holding a path to +check if its a multipath device. Add code to optinally set pp->wwid to +that wwid. This will be used by a future patch. + +Reviewed-by: Martin Wilck +Signed-off-by: Benjamin Marzinski +--- + libmultipath/sysfs.c | 24 +++++++++++++++++++----- + libmultipath/sysfs.h | 2 +- + multipath/main.c | 7 ++++--- + 3 files changed, 24 insertions(+), 9 deletions(-) + +diff --git a/libmultipath/sysfs.c b/libmultipath/sysfs.c +index 62ec2ed7..12a82d95 100644 +--- a/libmultipath/sysfs.c ++++ b/libmultipath/sysfs.c +@@ -295,7 +295,7 @@ static int select_dm_devs(const struct dirent *di) + return fnmatch("dm-*", di->d_name, FNM_FILE_NAME) == 0; + } + +-bool sysfs_is_multipathed(const struct path *pp) ++bool sysfs_is_multipathed(struct path *pp, bool set_wwid) + { + char pathbuf[PATH_MAX]; + struct scandir_result sr; +@@ -325,7 +325,7 @@ bool sysfs_is_multipathed(const struct path *pp) + for (i = 0; i < r && !found; i++) { + long fd; + int nr; +- char uuid[6]; ++ char uuid[WWID_SIZE + UUID_PREFIX_LEN]; + + if (safe_snprintf(pathbuf + n, sizeof(pathbuf) - n, + "/%s/dm/uuid", di[i]->d_name)) +@@ -339,12 +339,26 @@ bool sysfs_is_multipathed(const struct path *pp) + + pthread_cleanup_push(close_fd, (void *)fd); + nr = read(fd, uuid, sizeof(uuid)); +- if (nr == sizeof(uuid) && !memcmp(uuid, "mpath-", sizeof(uuid))) ++ if (nr > (int)UUID_PREFIX_LEN && ++ !memcmp(uuid, UUID_PREFIX, UUID_PREFIX_LEN)) + found = true; + else if (nr < 0) { +- condlog(1, "%s: error reading from %s: %s", +- __func__, pathbuf, strerror(errno)); ++ condlog(1, "%s: error reading from %s: %m", ++ __func__, pathbuf); + } ++ if (found && set_wwid) { ++ nr -= UUID_PREFIX_LEN; ++ memcpy(pp->wwid, uuid + UUID_PREFIX_LEN, nr); ++ if (nr == WWID_SIZE) { ++ condlog(4, "%s: overflow while reading from %s", ++ __func__, pathbuf); ++ pp->wwid[0] = '\0'; ++ } else { ++ pp->wwid[nr] = '\0'; ++ strchop(pp->wwid); ++ } ++ } ++ + pthread_cleanup_pop(1); + } + pthread_cleanup_pop(1); +diff --git a/libmultipath/sysfs.h b/libmultipath/sysfs.h +index 9ae30b39..72b39ab2 100644 +--- a/libmultipath/sysfs.h ++++ b/libmultipath/sysfs.h +@@ -14,5 +14,5 @@ ssize_t sysfs_bin_attr_get_value(struct udev_device *dev, const char *attr_name, + unsigned char * value, size_t value_len); + int sysfs_get_size (struct path *pp, unsigned long long * size); + int sysfs_check_holders(char * check_devt, char * new_devt); +-bool sysfs_is_multipathed(const struct path *pp); ++bool sysfs_is_multipathed(struct path *pp, bool set_wwid); + #endif +diff --git a/multipath/main.c b/multipath/main.c +index cf9d2a28..545ead87 100644 +--- a/multipath/main.c ++++ b/multipath/main.c +@@ -638,7 +638,8 @@ configure (struct config *conf, enum mpath_cmds cmd, + * Shortcut for find_multipaths smart: + * Quick check if path is already multipathed. + */ +- if (sysfs_is_multipathed(VECTOR_SLOT(pathvec, 0))) { ++ if (sysfs_is_multipathed(VECTOR_SLOT(pathvec, 0), ++ false)) { + r = RTVL_YES; + goto print_valid; + } +@@ -747,8 +748,8 @@ configure (struct config *conf, enum mpath_cmds cmd, + /* + * Check if we raced with multipathd + */ +- r = sysfs_is_multipathed(VECTOR_SLOT(pathvec, 0)) ? +- RTVL_YES : RTVL_NO; ++ r = sysfs_is_multipathed(VECTOR_SLOT(pathvec, 0), ++ false) ? RTVL_YES : RTVL_NO; + } + goto print_valid; + } +-- +2.17.2 + diff --git a/0025-libmultipath-fix-set_int-error-path.patch b/0025-libmultipath-fix-set_int-error-path.patch deleted file mode 100644 index 0cdcfbd..0000000 --- a/0025-libmultipath-fix-set_int-error-path.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 8f9ac30dcb144d4ce79f88e8a01fba0968da3a07 Mon Sep 17 00:00:00 2001 -From: Benjamin Marzinski -Date: Tue, 9 Oct 2018 18:03:03 -0500 -Subject: [PATCH] libmultipath: fix set_int error path - -set_int() wasn't checking if the line actually had a value before -converting it to an integer. Found by coverity. Also, it should -be using set_value(). - -Reviewed-by: Martin Wilck -Signed-off-by: Benjamin Marzinski ---- - libmultipath/dict.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/libmultipath/dict.c b/libmultipath/dict.c -index 32524d5f..bf4701ee 100644 ---- a/libmultipath/dict.c -+++ b/libmultipath/dict.c -@@ -33,7 +33,10 @@ set_int(vector strvec, void *ptr) - int *int_ptr = (int *)ptr; - char * buff; - -- buff = VECTOR_SLOT(strvec, 1); -+ buff = set_value(strvec); -+ if (!buff) -+ return 1; -+ - *int_ptr = atoi(buff); - - return 0; --- -2.11.0 - diff --git a/0025-multipath-centralize-validation-code.patch b/0025-multipath-centralize-validation-code.patch new file mode 100644 index 0000000..c8f862c --- /dev/null +++ b/0025-multipath-centralize-validation-code.patch @@ -0,0 +1,777 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Tue, 19 May 2020 12:08:42 -0500 +Subject: [PATCH] multipath: centralize validation code + +This code pulls the multipath path validation code out of configure(), +and puts it into its own function, check_path_valid(). This function +calls a new libmultipath function, is_path_valid() to check just path +requested. This seperation exists so that is_path_valid() can be reused +by future code. This code will give almost the same answer as the +existing code, with the exception that now, if a device is currently +multipathed, it will always be a valid multipath path. + +Reviewed-by: Martin Wilck +Signed-off-by: Benjamin Marzinski +--- + libmultipath/Makefile | 2 +- + libmultipath/devmapper.c | 45 ++++++ + libmultipath/devmapper.h | 1 + + libmultipath/structs.h | 24 +--- + libmultipath/valid.c | 118 ++++++++++++++++ + libmultipath/valid.h | 42 ++++++ + libmultipath/wwids.c | 10 +- + multipath/main.c | 296 +++++++++++++++++---------------------- + 8 files changed, 343 insertions(+), 195 deletions(-) + create mode 100644 libmultipath/valid.c + create mode 100644 libmultipath/valid.h + +diff --git a/libmultipath/Makefile b/libmultipath/Makefile +index f19b7ad2..e5dac5ea 100644 +--- a/libmultipath/Makefile ++++ b/libmultipath/Makefile +@@ -48,7 +48,7 @@ OBJS = memory.o parser.o vector.o devmapper.o callout.o \ + log.o configure.o structs_vec.o sysfs.o prio.o checkers.o \ + lock.o file.o wwids.o prioritizers/alua_rtpg.o prkey.o \ + io_err_stat.o dm-generic.o generic.o foreign.o nvme-lib.o \ +- libsg.o ++ libsg.o valid.o + + all: $(LIBS) + +diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c +index 7ed494a1..27d52398 100644 +--- a/libmultipath/devmapper.c ++++ b/libmultipath/devmapper.c +@@ -770,6 +770,51 @@ out: + return r; + } + ++/* ++ * Return ++ * 1 : map with uuid exists ++ * 0 : map with uuid doesn't exist ++ * -1 : error ++ */ ++int ++dm_map_present_by_uuid(const char *uuid) ++{ ++ struct dm_task *dmt; ++ struct dm_info info; ++ char prefixed_uuid[WWID_SIZE + UUID_PREFIX_LEN]; ++ int r = -1; ++ ++ if (!uuid || uuid[0] == '\0') ++ return 0; ++ ++ if (safe_sprintf(prefixed_uuid, UUID_PREFIX "%s", uuid)) ++ goto out; ++ ++ if (!(dmt = dm_task_create(DM_DEVICE_INFO))) ++ goto out; ++ ++ dm_task_no_open_count(dmt); ++ ++ if (!dm_task_set_uuid(dmt, prefixed_uuid)) ++ goto out_task; ++ ++ if (!dm_task_run(dmt)) ++ goto out_task; ++ ++ if (!dm_task_get_info(dmt, &info)) ++ goto out_task; ++ ++ r = !!info.exists; ++ ++out_task: ++ dm_task_destroy(dmt); ++out: ++ if (r < 0) ++ condlog(3, "%s: dm command failed in %s: %s", uuid, ++ __FUNCTION__, strerror(errno)); ++ return r; ++} ++ + static int + dm_dev_t (const char * mapname, char * dev_t, int len) + { +diff --git a/libmultipath/devmapper.h b/libmultipath/devmapper.h +index 17fc9faf..5ed7edc5 100644 +--- a/libmultipath/devmapper.h ++++ b/libmultipath/devmapper.h +@@ -39,6 +39,7 @@ int dm_simplecmd_noflush (int, const char *, uint16_t); + int dm_addmap_create (struct multipath *mpp, char *params); + int dm_addmap_reload (struct multipath *mpp, char *params, int flush); + int dm_map_present (const char *); ++int dm_map_present_by_uuid(const char *uuid); + int dm_get_map(const char *, unsigned long long *, char *); + int dm_get_status(const char *, char *); + int dm_type(const char *, char *); +diff --git a/libmultipath/structs.h b/libmultipath/structs.h +index 9bd39eb1..d69bc2e9 100644 +--- a/libmultipath/structs.h ++++ b/libmultipath/structs.h +@@ -101,29 +101,13 @@ enum yes_no_undef_states { + YNU_YES, + }; + +-#define _FIND_MULTIPATHS_F (1 << 1) +-#define _FIND_MULTIPATHS_I (1 << 2) +-#define _FIND_MULTIPATHS_N (1 << 3) +-/* +- * _FIND_MULTIPATHS_F must have the same value as YNU_YES. +- * Generate a compile time error if that isn't the case. +- */ +-extern char ___error1___[-(_FIND_MULTIPATHS_F != YNU_YES)]; +- +-#define find_multipaths_on(conf) \ +- (!!((conf)->find_multipaths & _FIND_MULTIPATHS_F)) +-#define ignore_wwids_on(conf) \ +- (!!((conf)->find_multipaths & _FIND_MULTIPATHS_I)) +-#define ignore_new_devs_on(conf) \ +- (!!((conf)->find_multipaths & _FIND_MULTIPATHS_N)) +- + enum find_multipaths_states { + FIND_MULTIPATHS_UNDEF = YNU_UNDEF, + FIND_MULTIPATHS_OFF = YNU_NO, +- FIND_MULTIPATHS_ON = _FIND_MULTIPATHS_F, +- FIND_MULTIPATHS_GREEDY = _FIND_MULTIPATHS_I, +- FIND_MULTIPATHS_SMART = _FIND_MULTIPATHS_F|_FIND_MULTIPATHS_I, +- FIND_MULTIPATHS_STRICT = _FIND_MULTIPATHS_F|_FIND_MULTIPATHS_N, ++ FIND_MULTIPATHS_ON = YNU_YES, ++ FIND_MULTIPATHS_GREEDY, ++ FIND_MULTIPATHS_SMART, ++ FIND_MULTIPATHS_STRICT, + __FIND_MULTIPATHS_LAST, + }; + +diff --git a/libmultipath/valid.c b/libmultipath/valid.c +new file mode 100644 +index 00000000..456b1f6e +--- /dev/null ++++ b/libmultipath/valid.c +@@ -0,0 +1,118 @@ ++/* ++ Copyright (c) 2020 Benjamin Marzinski, IBM ++ ++ This program is free software; you can redistribute it and/or ++ modify it under the terms of the GNU General Public License ++ as published by the Free Software Foundation; either version 2 ++ of the License, or (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . ++ */ ++#include ++#include ++#include ++ ++#include "vector.h" ++#include "config.h" ++#include "debug.h" ++#include "util.h" ++#include "devmapper.h" ++#include "discovery.h" ++#include "wwids.h" ++#include "sysfs.h" ++#include "blacklist.h" ++#include "mpath_cmd.h" ++#include "valid.h" ++ ++int ++is_path_valid(const char *name, struct config *conf, struct path *pp, ++ bool check_multipathd) ++{ ++ int r; ++ int fd; ++ ++ if (!pp || !name || !conf) ++ return PATH_IS_ERROR; ++ ++ if (conf->find_multipaths <= FIND_MULTIPATHS_UNDEF || ++ conf->find_multipaths >= __FIND_MULTIPATHS_LAST) ++ return PATH_IS_ERROR; ++ ++ if (safe_sprintf(pp->dev, "%s", name)) ++ return PATH_IS_ERROR; ++ ++ if (sysfs_is_multipathed(pp, true)) { ++ if (pp->wwid[0] == '\0') ++ return PATH_IS_ERROR; ++ return PATH_IS_VALID_NO_CHECK; ++ } ++ ++ /* ++ * "multipath -u" may be run before the daemon is started. In this ++ * case, systemd might own the socket but might delay multipathd ++ * startup until some other unit (udev settle!) has finished ++ * starting. With many LUNs, the listen backlog may be exceeded, which ++ * would cause connect() to block. This causes udev workers calling ++ * "multipath -u" to hang, and thus creates a deadlock, until "udev ++ * settle" times out. To avoid this, call connect() in non-blocking ++ * mode here, and take EAGAIN as indication for a filled-up systemd ++ * backlog. ++ */ ++ ++ if (check_multipathd) { ++ fd = __mpath_connect(1); ++ if (fd < 0) { ++ if (errno != EAGAIN && !systemd_service_enabled(name)) { ++ condlog(3, "multipathd not running or enabled"); ++ return PATH_IS_NOT_VALID; ++ } ++ } else ++ mpath_disconnect(fd); ++ } ++ ++ pp->udev = udev_device_new_from_subsystem_sysname(udev, "block", name); ++ if (!pp->udev) ++ return PATH_IS_ERROR; ++ ++ r = pathinfo(pp, conf, DI_SYSFS | DI_WWID | DI_BLACKLIST); ++ if (r == PATHINFO_SKIPPED) ++ return PATH_IS_NOT_VALID; ++ else if (r) ++ return PATH_IS_ERROR; ++ ++ if (pp->wwid[0] == '\0') ++ return PATH_IS_NOT_VALID; ++ ++ if (pp->udev && pp->uid_attribute && ++ filter_property(conf, pp->udev, 3, pp->uid_attribute) > 0) ++ return PATH_IS_NOT_VALID; ++ ++ r = is_failed_wwid(pp->wwid); ++ if (r != WWID_IS_NOT_FAILED) { ++ if (r == WWID_IS_FAILED) ++ return PATH_IS_NOT_VALID; ++ return PATH_IS_ERROR; ++ } ++ ++ if (conf->find_multipaths == FIND_MULTIPATHS_GREEDY) ++ return PATH_IS_VALID; ++ ++ if (check_wwids_file(pp->wwid, 0) == 0) ++ return PATH_IS_VALID_NO_CHECK; ++ ++ if (dm_map_present_by_uuid(pp->wwid) == 1) ++ return PATH_IS_VALID; ++ ++ /* all these act like FIND_MULTIPATHS_STRICT for finding if a ++ * path is valid */ ++ if (conf->find_multipaths != FIND_MULTIPATHS_SMART) ++ return PATH_IS_NOT_VALID; ++ ++ return PATH_IS_MAYBE_VALID; ++} +diff --git a/libmultipath/valid.h b/libmultipath/valid.h +new file mode 100644 +index 00000000..ce1c7cbf +--- /dev/null ++++ b/libmultipath/valid.h +@@ -0,0 +1,42 @@ ++/* ++ Copyright (c) 2020 Benjamin Marzinski, IBM ++ ++ This program is free software; you can redistribute it and/or ++ modify it under the terms of the GNU General Public License ++ as published by the Free Software Foundation; either version 2 ++ of the License, or (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . ++ */ ++#ifndef _VALID_H ++#define _VALID_H ++ ++/* ++ * PATH_IS_VALID_NO_CHECK is returned when multipath should claim ++ * the path, regardless of whether is has been released to systemd ++ * already. ++ * PATH_IS_VALID is returned by is_path_valid, when the path is ++ * valid only if it hasn't been released to systemd already. ++ * PATH_IS_MAYBE_VALID is returned when the the path would be valid ++ * if other paths with the same wwid existed. It is up to the caller ++ * to check for these other paths. ++ */ ++enum is_path_valid_result { ++ PATH_IS_ERROR = -1, ++ PATH_IS_NOT_VALID, ++ PATH_IS_VALID, ++ PATH_IS_VALID_NO_CHECK, ++ PATH_IS_MAYBE_VALID, ++ PATH_MAX_VALID_RESULT, /* only for bounds checking */ ++}; ++ ++int is_path_valid(const char *name, struct config *conf, struct path *pp, ++ bool check_multipathd); ++ ++#endif /* _VALID_D */ +diff --git a/libmultipath/wwids.c b/libmultipath/wwids.c +index 28a2150d..637cb0ab 100644 +--- a/libmultipath/wwids.c ++++ b/libmultipath/wwids.c +@@ -289,19 +289,19 @@ out: + int + should_multipath(struct path *pp1, vector pathvec, vector mpvec) + { +- int i, ignore_new_devs, find_multipaths; ++ int i, find_multipaths; + struct path *pp2; + struct config *conf; + + conf = get_multipath_config(); +- ignore_new_devs = ignore_new_devs_on(conf); +- find_multipaths = find_multipaths_on(conf); ++ find_multipaths = conf->find_multipaths; + put_multipath_config(conf); +- if (!find_multipaths && !ignore_new_devs) ++ if (find_multipaths == FIND_MULTIPATHS_OFF || ++ find_multipaths == FIND_MULTIPATHS_GREEDY) + return 1; + + condlog(4, "checking if %s should be multipathed", pp1->dev); +- if (!ignore_new_devs) { ++ if (find_multipaths != FIND_MULTIPATHS_STRICT) { + char tmp_wwid[WWID_SIZE]; + struct multipath *mp = find_mp_by_wwid(mpvec, pp1->wwid); + +diff --git a/multipath/main.c b/multipath/main.c +index 545ead87..953fab27 100644 +--- a/multipath/main.c ++++ b/multipath/main.c +@@ -63,21 +63,18 @@ + #include "propsel.h" + #include "time-util.h" + #include "file.h" ++#include "valid.h" + + int logsink; + struct udev *udev; + struct config *multipath_conf; + + /* +- * Return values of configure(), print_cmd_valid(), and main(). +- * RTVL_{YES,NO} are synonyms for RTVL_{OK,FAIL} for the CMD_VALID_PATH case. ++ * Return values of configure(), check_path_valid(), and main(). + */ + enum { + RTVL_OK = 0, +- RTVL_YES = RTVL_OK, + RTVL_FAIL = 1, +- RTVL_NO = RTVL_FAIL, +- RTVL_MAYBE, /* only used internally, never returned */ + RTVL_RETRY, /* returned by configure(), not by main() */ + }; + +@@ -269,9 +266,6 @@ get_dm_mpvec (enum mpath_cmds cmd, vector curmp, vector pathvec, char * refwwid) + continue; + } + +- if (cmd == CMD_VALID_PATH) +- continue; +- + dm_get_map(mpp->alias, &mpp->size, params); + condlog(3, "params = %s", params); + dm_get_status(mpp->alias, status); +@@ -491,10 +485,11 @@ static int print_cmd_valid(int k, const vector pathvec, + struct timespec until; + struct path *pp; + +- if (k != RTVL_YES && k != RTVL_NO && k != RTVL_MAYBE) +- return RTVL_NO; ++ if (k != PATH_IS_VALID && k != PATH_IS_NOT_VALID && ++ k != PATH_IS_MAYBE_VALID) ++ return PATH_IS_NOT_VALID; + +- if (k == RTVL_MAYBE) { ++ if (k == PATH_IS_MAYBE_VALID) { + /* + * Caller ensures that pathvec[0] is the path to + * examine. +@@ -504,7 +499,7 @@ static int print_cmd_valid(int k, const vector pathvec, + wait = find_multipaths_check_timeout( + pp, pp->find_multipaths_timeout, &until); + if (wait != FIND_MULTIPATHS_WAITING) +- k = RTVL_NO; ++ k = PATH_IS_NOT_VALID; + } else if (pathvec != NULL && (pp = VECTOR_SLOT(pathvec, 0))) + wait = find_multipaths_check_timeout(pp, 0, &until); + if (wait == FIND_MULTIPATHS_WAITING) +@@ -513,9 +508,9 @@ static int print_cmd_valid(int k, const vector pathvec, + else if (wait == FIND_MULTIPATHS_WAIT_DONE) + printf("FIND_MULTIPATHS_WAIT_UNTIL=\"0\"\n"); + printf("DM_MULTIPATH_DEVICE_PATH=\"%d\"\n", +- k == RTVL_MAYBE ? 2 : k == RTVL_YES ? 1 : 0); ++ k == PATH_IS_MAYBE_VALID ? 2 : k == PATH_IS_VALID ? 1 : 0); + /* Never return RTVL_MAYBE */ +- return k == RTVL_NO ? RTVL_NO : RTVL_YES; ++ return k == PATH_IS_NOT_VALID ? PATH_IS_NOT_VALID : PATH_IS_VALID; + } + + /* +@@ -548,7 +543,6 @@ configure (struct config *conf, enum mpath_cmds cmd, + int di_flag = 0; + char * refwwid = NULL; + char * dev = NULL; +- bool released = released_to_systemd(); + + /* + * allocate core vectors to store paths and multipaths +@@ -573,7 +567,7 @@ configure (struct config *conf, enum mpath_cmds cmd, + cmd != CMD_REMOVE_WWID && + (filter_devnode(conf->blist_devnode, + conf->elist_devnode, dev) > 0)) { +- goto print_valid; ++ goto out; + } + + /* +@@ -581,14 +575,10 @@ configure (struct config *conf, enum mpath_cmds cmd, + * failing the translation is fatal (by policy) + */ + if (devpath) { +- int failed = get_refwwid(cmd, devpath, dev_type, +- pathvec, &refwwid); ++ get_refwwid(cmd, devpath, dev_type, pathvec, &refwwid); + if (!refwwid) { + condlog(4, "%s: failed to get wwid", devpath); +- if (failed == 2 && cmd == CMD_VALID_PATH) +- goto print_valid; +- else +- condlog(3, "scope is null"); ++ condlog(3, "scope is null"); + goto out; + } + if (cmd == CMD_REMOVE_WWID) { +@@ -614,53 +604,6 @@ configure (struct config *conf, enum mpath_cmds cmd, + goto out; + } + condlog(3, "scope limited to %s", refwwid); +- /* If you are ignoring the wwids file and find_multipaths is +- * set, you need to actually check if there are two available +- * paths to determine if this path should be multipathed. To +- * do this, we put off the check until after discovering all +- * the paths. +- * Paths listed in the wwids file are always considered valid. +- */ +- if (cmd == CMD_VALID_PATH) { +- if (is_failed_wwid(refwwid) == WWID_IS_FAILED) { +- r = RTVL_NO; +- goto print_valid; +- } +- if ((!find_multipaths_on(conf) && +- ignore_wwids_on(conf)) || +- check_wwids_file(refwwid, 0) == 0) +- r = RTVL_YES; +- if (!ignore_wwids_on(conf)) +- goto print_valid; +- /* At this point, either r==0 or find_multipaths_on. */ +- +- /* +- * Shortcut for find_multipaths smart: +- * Quick check if path is already multipathed. +- */ +- if (sysfs_is_multipathed(VECTOR_SLOT(pathvec, 0), +- false)) { +- r = RTVL_YES; +- goto print_valid; +- } +- +- /* +- * DM_MULTIPATH_DEVICE_PATH=="0" means that we have +- * been called for this device already, and have +- * released it to systemd. Unless the device is now +- * already multipathed (see above), we can't try to +- * grab it, because setting SYSTEMD_READY=0 would +- * cause file systems to be unmounted. +- * Leave DM_MULTIPATH_DEVICE_PATH="0". +- */ +- if (released) { +- r = RTVL_NO; +- goto print_valid; +- } +- if (r == RTVL_YES) +- goto print_valid; +- /* find_multipaths_on: Fall through to path detection */ +- } + } + + /* +@@ -701,59 +644,6 @@ configure (struct config *conf, enum mpath_cmds cmd, + goto out; + } + +- if (cmd == CMD_VALID_PATH) { +- struct path *pp; +- int fd; +- +- /* This only happens if find_multipaths and +- * ignore_wwids is set, and the path is not in WWIDs +- * file, not currently multipathed, and has +- * never been released to systemd. +- * If there is currently a multipath device matching +- * the refwwid, or there is more than one path matching +- * the refwwid, then the path is valid */ +- if (VECTOR_SIZE(curmp) != 0) { +- r = RTVL_YES; +- goto print_valid; +- } else if (VECTOR_SIZE(pathvec) > 1) +- r = RTVL_YES; +- else +- r = RTVL_MAYBE; +- +- /* +- * If opening the path with O_EXCL fails, the path +- * is in use (e.g. mounted during initramfs processing). +- * We know that it's not used by dm-multipath. +- * We may not set SYSTEMD_READY=0 on such devices, it +- * might cause systemd to umount the device. +- * Use O_RDONLY, because udevd would trigger another +- * uevent for close-after-write. +- * +- * The O_EXCL check is potentially dangerous, because it may +- * race with other tasks trying to access the device. Therefore +- * this code is only executed if the path hasn't been released +- * to systemd earlier (see above). +- * +- * get_refwwid() above stores the path we examine in slot 0. +- */ +- pp = VECTOR_SLOT(pathvec, 0); +- fd = open(udev_device_get_devnode(pp->udev), +- O_RDONLY|O_EXCL); +- if (fd >= 0) +- close(fd); +- else { +- condlog(3, "%s: path %s is in use: %s", +- __func__, pp->dev, +- strerror(errno)); +- /* +- * Check if we raced with multipathd +- */ +- r = sysfs_is_multipathed(VECTOR_SLOT(pathvec, 0), +- false) ? RTVL_YES : RTVL_NO; +- } +- goto print_valid; +- } +- + if (cmd != CMD_CREATE && cmd != CMD_DRY_RUN) { + r = RTVL_OK; + goto out; +@@ -766,10 +656,6 @@ configure (struct config *conf, enum mpath_cmds cmd, + conf->force_reload, cmd); + r = rc == CP_RETRY ? RTVL_RETRY : rc == CP_OK ? RTVL_OK : RTVL_FAIL; + +-print_valid: +- if (cmd == CMD_VALID_PATH) +- r = print_cmd_valid(r, pathvec, conf); +- + out: + if (refwwid) + FREE(refwwid); +@@ -780,6 +666,112 @@ out: + return r; + } + ++static int ++check_path_valid(const char *name, struct config *conf, bool is_uevent) ++{ ++ int fd, r = PATH_IS_ERROR; ++ struct path *pp = NULL; ++ vector pathvec = NULL; ++ ++ pp = alloc_path(); ++ if (!pp) ++ return RTVL_FAIL; ++ ++ r = is_path_valid(name, conf, pp, is_uevent); ++ if (r <= PATH_IS_ERROR || r >= PATH_MAX_VALID_RESULT) ++ goto fail; ++ ++ /* set path values if is_path_valid() didn't */ ++ if (!pp->udev) ++ pp->udev = udev_device_new_from_subsystem_sysname(udev, "block", ++ name); ++ if (!pp->udev) ++ goto fail; ++ ++ if (!strlen(pp->dev_t)) { ++ dev_t devt = udev_device_get_devnum(pp->udev); ++ if (major(devt) == 0 && minor(devt) == 0) ++ goto fail; ++ snprintf(pp->dev_t, BLK_DEV_SIZE, "%d:%d", major(devt), ++ minor(devt)); ++ } ++ ++ pathvec = vector_alloc(); ++ if (!pathvec) ++ goto fail; ++ ++ if (store_path(pathvec, pp) != 0) { ++ free_path(pp); ++ goto fail; ++ } ++ ++ if ((r == PATH_IS_VALID || r == PATH_IS_MAYBE_VALID) && ++ released_to_systemd()) ++ r = PATH_IS_NOT_VALID; ++ ++ /* This state is only used to skip the released_to_systemd() check */ ++ if (r == PATH_IS_VALID_NO_CHECK) ++ r = PATH_IS_VALID; ++ ++ if (r != PATH_IS_MAYBE_VALID) ++ goto out; ++ ++ /* ++ * If opening the path with O_EXCL fails, the path ++ * is in use (e.g. mounted during initramfs processing). ++ * We know that it's not used by dm-multipath. ++ * We may not set SYSTEMD_READY=0 on such devices, it ++ * might cause systemd to umount the device. ++ * Use O_RDONLY, because udevd would trigger another ++ * uevent for close-after-write. ++ * ++ * The O_EXCL check is potentially dangerous, because it may ++ * race with other tasks trying to access the device. Therefore ++ * this code is only executed if the path hasn't been released ++ * to systemd earlier (see above). ++ */ ++ fd = open(udev_device_get_devnode(pp->udev), O_RDONLY|O_EXCL); ++ if (fd >= 0) ++ close(fd); ++ else { ++ condlog(3, "%s: path %s is in use: %m", __func__, pp->dev); ++ /* Check if we raced with multipathd */ ++ if (sysfs_is_multipathed(pp, false)) ++ r = PATH_IS_VALID; ++ else ++ r = PATH_IS_NOT_VALID; ++ goto out; ++ } ++ ++ /* For find_multipaths = SMART, if there is more than one path ++ * matching the refwwid, then the path is valid */ ++ if (path_discovery(pathvec, DI_SYSFS | DI_WWID) < 0) ++ goto fail; ++ filter_pathvec(pathvec, pp->wwid); ++ if (VECTOR_SIZE(pathvec) > 1) ++ r = PATH_IS_VALID; ++ else ++ r = PATH_IS_MAYBE_VALID; ++ ++out: ++ r = print_cmd_valid(r, pathvec, conf); ++ free_pathvec(pathvec, FREE_PATHS); ++ /* ++ * multipath -u must exit with status 0, otherwise udev won't ++ * import its output. ++ */ ++ if (!is_uevent && r == PATH_IS_NOT_VALID) ++ return RTVL_FAIL; ++ return RTVL_OK; ++ ++fail: ++ if (pathvec) ++ free_pathvec(pathvec, FREE_PATHS); ++ else ++ free_path(pp); ++ return RTVL_FAIL; ++} ++ + static int + get_dev_type(char *dev) { + struct stat buf; +@@ -861,32 +853,6 @@ out: + return r; + } + +-static int test_multipathd_socket(void) +-{ +- int fd; +- /* +- * "multipath -u" may be run before the daemon is started. In this +- * case, systemd might own the socket but might delay multipathd +- * startup until some other unit (udev settle!) has finished +- * starting. With many LUNs, the listen backlog may be exceeded, which +- * would cause connect() to block. This causes udev workers calling +- * "multipath -u" to hang, and thus creates a deadlock, until "udev +- * settle" times out. To avoid this, call connect() in non-blocking +- * mode here, and take EAGAIN as indication for a filled-up systemd +- * backlog. +- */ +- +- fd = __mpath_connect(1); +- if (fd == -1) { +- if (errno == EAGAIN) +- condlog(3, "daemon backlog exceeded"); +- else +- return 0; +- } else +- close(fd); +- return 1; +-} +- + int + main (int argc, char *argv[]) + { +@@ -970,7 +936,11 @@ main (int argc, char *argv[]) + conf->force_reload = FORCE_RELOAD_YES; + break; + case 'i': +- conf->find_multipaths |= _FIND_MULTIPATHS_I; ++ if (conf->find_multipaths == FIND_MULTIPATHS_ON || ++ conf->find_multipaths == FIND_MULTIPATHS_STRICT) ++ conf->find_multipaths = FIND_MULTIPATHS_SMART; ++ else if (conf->find_multipaths == FIND_MULTIPATHS_OFF) ++ conf->find_multipaths = FIND_MULTIPATHS_GREEDY; + break; + case 't': + r = dump_config(conf, NULL, NULL) ? RTVL_FAIL : RTVL_OK; +@@ -1064,15 +1034,10 @@ main (int argc, char *argv[]) + condlog(0, "the -c option requires a path to check"); + goto out; + } +- if (cmd == CMD_VALID_PATH && +- dev_type == DEV_UEVENT) { +- if (!test_multipathd_socket()) { +- condlog(3, "%s: daemon is not running", dev); +- if (!systemd_service_enabled(dev)) { +- r = print_cmd_valid(RTVL_NO, NULL, conf); +- goto out; +- } +- } ++ if (cmd == CMD_VALID_PATH) { ++ char * name = convert_dev(dev, (dev_type == DEV_DEVNODE)); ++ r = check_path_valid(name, conf, dev_type == DEV_UEVENT); ++ goto out; + } + + if (cmd == CMD_REMOVE_WWID && !dev) { +@@ -1136,13 +1101,6 @@ out: + cleanup_prio(); + cleanup_checkers(); + +- /* +- * multipath -u must exit with status 0, otherwise udev won't +- * import its output. +- */ +- if (cmd == CMD_VALID_PATH && dev_type == DEV_UEVENT && r == RTVL_NO) +- r = RTVL_OK; +- + if (dev_type == DEV_UEVENT) + closelog(); + +-- +2.17.2 + diff --git a/0026-Unit-tests-for-is_path_valid.patch b/0026-Unit-tests-for-is_path_valid.patch new file mode 100644 index 0000000..9ada368 --- /dev/null +++ b/0026-Unit-tests-for-is_path_valid.patch @@ -0,0 +1,530 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Tue, 19 May 2020 12:08:43 -0500 +Subject: [PATCH] Unit tests for is_path_valid() + +Reviewed-by: Martin Wilck +Signed-off-by: Benjamin Marzinski +--- + tests/Makefile | 4 +- + tests/valid.c | 486 +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 489 insertions(+), 1 deletion(-) + create mode 100644 tests/valid.c + +diff --git a/tests/Makefile b/tests/Makefile +index 1b8706a7..125553b8 100644 +--- a/tests/Makefile ++++ b/tests/Makefile +@@ -13,7 +13,7 @@ CFLAGS += $(BIN_CFLAGS) -I$(multipathdir) -I$(mpathcmddir) \ + LIBDEPS += -L$(multipathdir) -L$(mpathcmddir) -lmultipath -lmpathcmd -lcmocka + + TESTS := uevent parser util dmevents hwtable blacklist unaligned vpd pgpolicy \ +- alias directio ++ alias directio valid + + .SILENT: $(TESTS:%=%.o) + .PRECIOUS: $(TESTS:%=%-test) +@@ -50,6 +50,8 @@ vpd-test_OBJDEPS := ../libmultipath/discovery.o + vpd-test_LIBDEPS := -ludev -lpthread -ldl + alias-test_TESTDEPS := test-log.o + alias-test_LIBDEPS := -lpthread -ldl ++valid-test_OBJDEPS := ../libmultipath/valid.o ++valid-test_LIBDEPS := -ludev -lpthread -ldl + ifneq ($(DIO_TEST_DEV),) + directio-test_LIBDEPS := -laio + endif +diff --git a/tests/valid.c b/tests/valid.c +new file mode 100644 +index 00000000..693c72c5 +--- /dev/null ++++ b/tests/valid.c +@@ -0,0 +1,486 @@ ++/* ++ * Copyright (c) 2020 Benjamin Marzinski, Redhat ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License ++ * as published by the Free Software Foundation; either version 2 ++ * of the License, or (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program. If not, see . ++ * ++ */ ++ ++#define _GNU_SOURCE ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include "globals.c" ++#include "util.h" ++#include "discovery.h" ++#include "wwids.h" ++#include "blacklist.h" ++#include "valid.h" ++ ++int test_fd; ++struct udev_device { ++ int unused; ++} test_udev; ++ ++bool __wrap_sysfs_is_multipathed(struct path *pp, bool set_wwid) ++{ ++ bool is_multipathed = mock_type(bool); ++ assert_non_null(pp); ++ assert_int_not_equal(strlen(pp->dev), 0); ++ if (is_multipathed && set_wwid) ++ strlcpy(pp->wwid, mock_ptr_type(char *), WWID_SIZE); ++ return is_multipathed; ++} ++ ++int __wrap___mpath_connect(int nonblocking) ++{ ++ bool connected = mock_type(bool); ++ assert_int_equal(nonblocking, 1); ++ if (connected) ++ return test_fd; ++ errno = mock_type(int); ++ return -1; ++} ++ ++int __wrap_systemd_service_enabled(const char *dev) ++{ ++ return (int)mock_type(bool); ++} ++ ++/* There's no point in checking the return value here */ ++int __wrap_mpath_disconnect(int fd) ++{ ++ assert_int_equal(fd, test_fd); ++ return 0; ++} ++ ++struct udev_device *__wrap_udev_device_new_from_subsystem_sysname(struct udev *udev, const char *subsystem, const char *sysname) ++{ ++ bool passed = mock_type(bool); ++ assert_string_equal(sysname, mock_ptr_type(char *)); ++ if (passed) ++ return &test_udev; ++ return NULL; ++} ++ ++int __wrap_pathinfo(struct path *pp, struct config *conf, int mask) ++{ ++ int ret = mock_type(int); ++ assert_string_equal(pp->dev, mock_ptr_type(char *)); ++ assert_int_equal(mask, DI_SYSFS | DI_WWID | DI_BLACKLIST); ++ if (ret == PATHINFO_OK) { ++ pp->uid_attribute = "ID_TEST"; ++ strlcpy(pp->wwid, mock_ptr_type(char *), WWID_SIZE); ++ } else ++ memset(pp->wwid, 0, WWID_SIZE); ++ return ret; ++} ++ ++int __wrap_filter_property(struct config *conf, struct udev_device *udev, ++ int lvl, const char *uid_attribute) ++{ ++ int ret = mock_type(int); ++ assert_string_equal(uid_attribute, "ID_TEST"); ++ return ret; ++} ++ ++int __wrap_is_failed_wwid(const char *wwid) ++{ ++ int ret = mock_type(int); ++ assert_string_equal(wwid, mock_ptr_type(char *)); ++ return ret; ++} ++ ++int __wrap_check_wwids_file(char *wwid, int write_wwid) ++{ ++ bool passed = mock_type(bool); ++ assert_int_equal(write_wwid, 0); ++ assert_string_equal(wwid, mock_ptr_type(char *)); ++ if (passed) ++ return 0; ++ else ++ return -1; ++} ++ ++int __wrap_dm_map_present_by_uuid(const char *uuid) ++{ ++ int ret = mock_type(int); ++ assert_string_equal(uuid, mock_ptr_type(char *)); ++ return ret; ++} ++ ++enum { ++ STAGE_IS_MULTIPATHED, ++ STAGE_CHECK_MULTIPATHD, ++ STAGE_GET_UDEV_DEVICE, ++ STAGE_PATHINFO, ++ STAGE_FILTER_PROPERTY, ++ STAGE_IS_FAILED, ++ STAGE_CHECK_WWIDS, ++ STAGE_UUID_PRESENT, ++}; ++ ++enum { ++ CHECK_MPATHD_RUNNING, ++ CHECK_MPATHD_EAGAIN, ++ CHECK_MPATHD_ENABLED, ++ CHECK_MPATHD_SKIP, ++}; ++ ++/* setup the test to continue past the given stage in is_path_valid() */ ++static void setup_passing(char *name, char *wwid, unsigned int check_multipathd, ++ unsigned int stage) ++{ ++ will_return(__wrap_sysfs_is_multipathed, false); ++ if (stage == STAGE_IS_MULTIPATHED) ++ return; ++ if (check_multipathd == CHECK_MPATHD_RUNNING) ++ will_return(__wrap___mpath_connect, true); ++ else if (check_multipathd == CHECK_MPATHD_EAGAIN) { ++ will_return(__wrap___mpath_connect, false); ++ will_return(__wrap___mpath_connect, EAGAIN); ++ } else if (check_multipathd == CHECK_MPATHD_ENABLED) { ++ will_return(__wrap___mpath_connect, false); ++ will_return(__wrap___mpath_connect, ECONNREFUSED); ++ will_return(__wrap_systemd_service_enabled, true); ++ } ++ /* nothing for CHECK_MPATHD_SKIP */ ++ if (stage == STAGE_CHECK_MULTIPATHD) ++ return; ++ will_return(__wrap_udev_device_new_from_subsystem_sysname, true); ++ will_return(__wrap_udev_device_new_from_subsystem_sysname, ++ name); ++ if (stage == STAGE_GET_UDEV_DEVICE) ++ return; ++ will_return(__wrap_pathinfo, PATHINFO_OK); ++ will_return(__wrap_pathinfo, name); ++ will_return(__wrap_pathinfo, wwid); ++ if (stage == STAGE_PATHINFO) ++ return; ++ will_return(__wrap_filter_property, MATCH_PROPERTY_BLIST_EXCEPT); ++ if (stage == STAGE_FILTER_PROPERTY) ++ return; ++ will_return(__wrap_is_failed_wwid, WWID_IS_NOT_FAILED); ++ will_return(__wrap_is_failed_wwid, wwid); ++ if (stage == STAGE_IS_FAILED) ++ return; ++ will_return(__wrap_check_wwids_file, false); ++ will_return(__wrap_check_wwids_file, wwid); ++ if (stage == STAGE_CHECK_WWIDS) ++ return; ++ will_return(__wrap_dm_map_present_by_uuid, 0); ++ will_return(__wrap_dm_map_present_by_uuid, wwid); ++} ++ ++static void test_bad_arguments(void **state) ++{ ++ struct path pp; ++ char too_long[FILE_NAME_SIZE + 1]; ++ ++ memset(&pp, 0, sizeof(pp)); ++ /* test NULL pointers */ ++ assert_int_equal(is_path_valid("test", &conf, NULL, true), ++ PATH_IS_ERROR); ++ assert_int_equal(is_path_valid("test", NULL, &pp, true), ++ PATH_IS_ERROR); ++ assert_int_equal(is_path_valid(NULL, &conf, &pp, true), ++ PATH_IS_ERROR); ++ /* test undefined find_multipaths */ ++ conf.find_multipaths = FIND_MULTIPATHS_UNDEF; ++ assert_int_equal(is_path_valid("test", &conf, &pp, true), ++ PATH_IS_ERROR); ++ /* test name too long */ ++ memset(too_long, 'x', sizeof(too_long)); ++ too_long[sizeof(too_long) - 1] = '\0'; ++ conf.find_multipaths = FIND_MULTIPATHS_STRICT; ++ assert_int_equal(is_path_valid(too_long, &conf, &pp, true), ++ PATH_IS_ERROR); ++} ++ ++static void test_sysfs_is_multipathed(void **state) ++{ ++ struct path pp; ++ char *name = "test"; ++ char *wwid = "test_wwid"; ++ ++ memset(&pp, 0, sizeof(pp)); ++ conf.find_multipaths = FIND_MULTIPATHS_STRICT; ++ /* test for already existing multiapthed device */ ++ will_return(__wrap_sysfs_is_multipathed, true); ++ will_return(__wrap_sysfs_is_multipathed, wwid); ++ assert_int_equal(is_path_valid(name, &conf, &pp, true), ++ PATH_IS_VALID_NO_CHECK); ++ assert_string_equal(pp.dev, name); ++ assert_string_equal(pp.wwid, wwid); ++ /* test for wwid device with empty wwid */ ++ will_return(__wrap_sysfs_is_multipathed, true); ++ will_return(__wrap_sysfs_is_multipathed, ""); ++ assert_int_equal(is_path_valid(name, &conf, &pp, true), ++ PATH_IS_ERROR); ++} ++ ++static void test_check_multipathd(void **state) ++{ ++ struct path pp; ++ char *name = "test"; ++ ++ memset(&pp, 0, sizeof(pp)); ++ conf.find_multipaths = FIND_MULTIPATHS_STRICT; ++ /* test failed check to see if multipathd is active */ ++ will_return(__wrap_sysfs_is_multipathed, false); ++ will_return(__wrap___mpath_connect, false); ++ will_return(__wrap___mpath_connect, ECONNREFUSED); ++ will_return(__wrap_systemd_service_enabled, false); ++ assert_int_equal(is_path_valid(name, &conf, &pp, true), ++ PATH_IS_NOT_VALID); ++ assert_string_equal(pp.dev, name); ++ /* test pass because service is enabled. fail getting udev */ ++ memset(&pp, 0, sizeof(pp)); ++ setup_passing(name, NULL, CHECK_MPATHD_ENABLED, STAGE_CHECK_MULTIPATHD); ++ will_return(__wrap_udev_device_new_from_subsystem_sysname, false); ++ will_return(__wrap_udev_device_new_from_subsystem_sysname, ++ name); ++ assert_int_equal(is_path_valid(name, &conf, &pp, true), ++ PATH_IS_ERROR); ++ assert_string_equal(pp.dev, name); ++ /* test pass because connect returned EAGAIN. fail getting udev */ ++ setup_passing(name, NULL, CHECK_MPATHD_EAGAIN, STAGE_CHECK_MULTIPATHD); ++ will_return(__wrap_udev_device_new_from_subsystem_sysname, false); ++ will_return(__wrap_udev_device_new_from_subsystem_sysname, ++ name); ++ assert_int_equal(is_path_valid(name, &conf, &pp, true), ++ PATH_IS_ERROR); ++ /* test pass because connect succeeded. fail getting udev */ ++ memset(&pp, 0, sizeof(pp)); ++ setup_passing(name, NULL, CHECK_MPATHD_RUNNING, STAGE_CHECK_MULTIPATHD); ++ will_return(__wrap_udev_device_new_from_subsystem_sysname, false); ++ will_return(__wrap_udev_device_new_from_subsystem_sysname, ++ name); ++ assert_int_equal(is_path_valid(name, &conf, &pp, true), ++ PATH_IS_ERROR); ++ assert_string_equal(pp.dev, name); ++} ++ ++static void test_pathinfo(void **state) ++{ ++ struct path pp; ++ char *name = "test"; ++ ++ memset(&pp, 0, sizeof(pp)); ++ conf.find_multipaths = FIND_MULTIPATHS_STRICT; ++ /* Test pathinfo blacklisting device */ ++ setup_passing(name, NULL, CHECK_MPATHD_SKIP, STAGE_GET_UDEV_DEVICE); ++ will_return(__wrap_pathinfo, PATHINFO_SKIPPED); ++ will_return(__wrap_pathinfo, name); ++ assert_int_equal(is_path_valid(name, &conf, &pp, false), ++ PATH_IS_NOT_VALID); ++ assert_string_equal(pp.dev, name); ++ assert_ptr_equal(pp.udev, &test_udev); ++ /* Test pathinfo failing */ ++ memset(&pp, 0, sizeof(pp)); ++ setup_passing(name, NULL, CHECK_MPATHD_SKIP, STAGE_GET_UDEV_DEVICE); ++ will_return(__wrap_pathinfo, PATHINFO_FAILED); ++ will_return(__wrap_pathinfo, name); ++ assert_int_equal(is_path_valid(name, &conf, &pp, false), ++ PATH_IS_ERROR); ++ /* Test blank wwid */ ++ memset(&pp, 0, sizeof(pp)); ++ setup_passing(name, NULL, CHECK_MPATHD_SKIP, STAGE_GET_UDEV_DEVICE); ++ will_return(__wrap_pathinfo, PATHINFO_OK); ++ will_return(__wrap_pathinfo, name); ++ will_return(__wrap_pathinfo, ""); ++ assert_int_equal(is_path_valid(name, &conf, &pp, false), ++ PATH_IS_NOT_VALID); ++} ++ ++static void test_filter_property(void **state) ++{ ++ struct path pp; ++ char *name = "test"; ++ char *wwid = "test-wwid"; ++ ++ /* test blacklist property */ ++ memset(&pp, 0, sizeof(pp)); ++ conf.find_multipaths = FIND_MULTIPATHS_STRICT; ++ setup_passing(name, wwid, CHECK_MPATHD_SKIP, STAGE_PATHINFO); ++ will_return(__wrap_filter_property, MATCH_PROPERTY_BLIST); ++ assert_int_equal(is_path_valid(name, &conf, &pp, false), ++ PATH_IS_NOT_VALID); ++ assert_ptr_equal(pp.udev, &test_udev); ++ assert_string_equal(pp.wwid, wwid); ++ /* test missing property */ ++ memset(&pp, 0, sizeof(pp)); ++ setup_passing(name, wwid, CHECK_MPATHD_SKIP, STAGE_PATHINFO); ++ will_return(__wrap_filter_property, MATCH_PROPERTY_BLIST_MISSING); ++ assert_int_equal(is_path_valid(name, &conf, &pp, false), ++ PATH_IS_NOT_VALID); ++ /* test MATCH_NOTHING fail on is_failed_wwid */ ++ memset(&pp, 0, sizeof(pp)); ++ setup_passing(name, wwid, CHECK_MPATHD_SKIP, STAGE_PATHINFO); ++ will_return(__wrap_filter_property, MATCH_NOTHING); ++ will_return(__wrap_is_failed_wwid, WWID_IS_FAILED); ++ will_return(__wrap_is_failed_wwid, wwid); ++ assert_int_equal(is_path_valid(name, &conf, &pp, false), ++ PATH_IS_NOT_VALID); ++} ++ ++static void test_is_failed_wwid(void **state) ++{ ++ struct path pp; ++ char *name = "test"; ++ char *wwid = "test-wwid"; ++ ++ memset(&pp, 0, sizeof(pp)); ++ conf.find_multipaths = FIND_MULTIPATHS_STRICT; ++ /* Test wwid failed */ ++ setup_passing(name, wwid, CHECK_MPATHD_SKIP, STAGE_FILTER_PROPERTY); ++ will_return(__wrap_is_failed_wwid, WWID_IS_FAILED); ++ will_return(__wrap_is_failed_wwid, wwid); ++ assert_int_equal(is_path_valid(name, &conf, &pp, false), ++ PATH_IS_NOT_VALID); ++ assert_string_equal(pp.dev, name); ++ assert_ptr_equal(pp.udev, &test_udev); ++ assert_string_equal(pp.wwid, wwid); ++ /* test is_failed_wwid error */ ++ setup_passing(name, wwid, CHECK_MPATHD_SKIP, STAGE_FILTER_PROPERTY); ++ will_return(__wrap_is_failed_wwid, WWID_FAILED_ERROR); ++ will_return(__wrap_is_failed_wwid, wwid); ++ assert_int_equal(is_path_valid(name, &conf, &pp, false), ++ PATH_IS_ERROR); ++} ++ ++static void test_greedy(void **state) ++{ ++ struct path pp; ++ char *name = "test"; ++ char *wwid = "test-wwid"; ++ ++ /* test greedy success with checking multipathd */ ++ memset(&pp, 0, sizeof(pp)); ++ conf.find_multipaths = FIND_MULTIPATHS_GREEDY; ++ setup_passing(name, wwid, CHECK_MPATHD_RUNNING, STAGE_IS_FAILED); ++ assert_int_equal(is_path_valid(name, &conf, &pp, true), ++ PATH_IS_VALID); ++ assert_string_equal(pp.dev, name); ++ assert_ptr_equal(pp.udev, &test_udev); ++ assert_string_equal(pp.wwid, wwid); ++ /* test greedy success without checking multiapthd */ ++ memset(&pp, 0, sizeof(pp)); ++ setup_passing(name, wwid, CHECK_MPATHD_SKIP, STAGE_IS_FAILED); ++ assert_int_equal(is_path_valid(name, &conf, &pp, false), ++ PATH_IS_VALID); ++} ++ ++static void test_check_wwids(void **state) ++{ ++ struct path pp; ++ char *name = "test"; ++ char *wwid = "test-wwid"; ++ ++ memset(&pp, 0, sizeof(pp)); ++ conf.find_multipaths = FIND_MULTIPATHS_STRICT; ++ setup_passing(name, wwid, CHECK_MPATHD_EAGAIN, STAGE_IS_FAILED); ++ will_return(__wrap_check_wwids_file, true); ++ will_return(__wrap_check_wwids_file, wwid); ++ assert_int_equal(is_path_valid(name, &conf, &pp, true), ++ PATH_IS_VALID_NO_CHECK); ++ assert_string_equal(pp.dev, name); ++ assert_ptr_equal(pp.udev, &test_udev); ++ assert_string_equal(pp.wwid, wwid); ++} ++ ++static void test_check_uuid_present(void **state) ++{ ++ struct path pp; ++ char *name = "test"; ++ char *wwid = "test-wwid"; ++ ++ memset(&pp, 0, sizeof(pp)); ++ conf.find_multipaths = FIND_MULTIPATHS_STRICT; ++ setup_passing(name, wwid, CHECK_MPATHD_ENABLED, STAGE_CHECK_WWIDS); ++ will_return(__wrap_dm_map_present_by_uuid, 1); ++ will_return(__wrap_dm_map_present_by_uuid, wwid); ++ assert_int_equal(is_path_valid(name, &conf, &pp, true), ++ PATH_IS_VALID); ++ assert_string_equal(pp.dev, name); ++ assert_ptr_equal(pp.udev, &test_udev); ++ assert_string_equal(pp.wwid, wwid); ++} ++ ++ ++static void test_find_multipaths(void **state) ++{ ++ struct path pp; ++ char *name = "test"; ++ char *wwid = "test-wwid"; ++ ++ /* test find_multipaths = FIND_MULTIPATHS_STRICT */ ++ memset(&pp, 0, sizeof(pp)); ++ conf.find_multipaths = FIND_MULTIPATHS_STRICT; ++ setup_passing(name, wwid, CHECK_MPATHD_SKIP, STAGE_UUID_PRESENT); ++ assert_int_equal(is_path_valid(name, &conf, &pp, false), ++ PATH_IS_NOT_VALID); ++ assert_string_equal(pp.dev, name); ++ assert_ptr_equal(pp.udev, &test_udev); ++ assert_string_equal(pp.wwid, wwid); ++ /* test find_multipaths = FIND_MULTIPATHS_OFF */ ++ memset(&pp, 0, sizeof(pp)); ++ conf.find_multipaths = FIND_MULTIPATHS_OFF; ++ setup_passing(name, wwid, CHECK_MPATHD_SKIP, STAGE_UUID_PRESENT); ++ assert_int_equal(is_path_valid(name, &conf, &pp, false), ++ PATH_IS_NOT_VALID); ++ /* test find_multipaths = FIND_MULTIPATHS_ON */ ++ memset(&pp, 0, sizeof(pp)); ++ conf.find_multipaths = FIND_MULTIPATHS_ON; ++ setup_passing(name, wwid, CHECK_MPATHD_SKIP, STAGE_UUID_PRESENT); ++ assert_int_equal(is_path_valid(name, &conf, &pp, false), ++ PATH_IS_NOT_VALID); ++ /* test find_multipaths = FIND_MULTIPATHS_SMART */ ++ memset(&pp, 0, sizeof(pp)); ++ conf.find_multipaths = FIND_MULTIPATHS_SMART; ++ setup_passing(name, wwid, CHECK_MPATHD_SKIP, STAGE_UUID_PRESENT); ++ assert_int_equal(is_path_valid(name, &conf, &pp, false), ++ PATH_IS_MAYBE_VALID); ++ assert_string_equal(pp.dev, name); ++ assert_ptr_equal(pp.udev, &test_udev); ++ assert_string_equal(pp.wwid, wwid); ++} ++ ++int test_valid(void) ++{ ++ const struct CMUnitTest tests[] = { ++ cmocka_unit_test(test_bad_arguments), ++ cmocka_unit_test(test_sysfs_is_multipathed), ++ cmocka_unit_test(test_check_multipathd), ++ cmocka_unit_test(test_pathinfo), ++ cmocka_unit_test(test_filter_property), ++ cmocka_unit_test(test_is_failed_wwid), ++ cmocka_unit_test(test_greedy), ++ cmocka_unit_test(test_check_wwids), ++ cmocka_unit_test(test_check_uuid_present), ++ cmocka_unit_test(test_find_multipaths), ++ }; ++ return cmocka_run_group_tests(tests, NULL, NULL); ++} ++ ++int main(void) ++{ ++ int ret = 0; ++ ret += test_valid(); ++ return ret; ++} +-- +2.17.2 + diff --git a/0026-libmultipath-free-allocated-value-in-set_int.patch b/0026-libmultipath-free-allocated-value-in-set_int.patch deleted file mode 100644 index 5dfa3c7..0000000 --- a/0026-libmultipath-free-allocated-value-in-set_int.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 5e71f6eb17cbb119f0f995f234bf1887a4f77058 Mon Sep 17 00:00:00 2001 -From: Benjamin Marzinski -Date: Thu, 11 Oct 2018 15:43:47 -0500 -Subject: [PATCH] libmultipath: free allocated value in set_int - -set_int() needs to free the buffer it got back from set_value() - -Fixes: 8f9ac30d ("libmultipath: fix set_int error path") -Signed-off-by: Benjamin Marzinski ---- - libmultipath/dict.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/libmultipath/dict.c b/libmultipath/dict.c -index bf4701ee..c3f5a6e6 100644 ---- a/libmultipath/dict.c -+++ b/libmultipath/dict.c -@@ -39,6 +39,7 @@ set_int(vector strvec, void *ptr) - - *int_ptr = atoi(buff); - -+ FREE(buff); - return 0; - } - --- -2.11.0 - diff --git a/0027-libmultipath-fix-memory-issue-in-path_latency-prio.patch b/0027-libmultipath-fix-memory-issue-in-path_latency-prio.patch deleted file mode 100644 index e490a8a..0000000 --- a/0027-libmultipath-fix-memory-issue-in-path_latency-prio.patch +++ /dev/null @@ -1,32 +0,0 @@ -From c3b739527258dae7ebe4b5d083a33ce527675082 Mon Sep 17 00:00:00 2001 -From: Benjamin Marzinski -Date: Tue, 9 Oct 2018 18:03:07 -0500 -Subject: [PATCH] libmultipath: fix memory issue in path_latency prio - -The path_latency prioriziter was assuming that prepare_directio_read() -always succeeds. However, it doesn't, and when it fails, the prioritizer -used buf without it pointing to alloced memory. Found by coverity. - -Reviewed-by: Martin Wilck -Signed-off-by: Benjamin Marzinski ---- - libmultipath/prioritizers/path_latency.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/libmultipath/prioritizers/path_latency.c b/libmultipath/prioritizers/path_latency.c -index 765265c0..eeee01e1 100644 ---- a/libmultipath/prioritizers/path_latency.c -+++ b/libmultipath/prioritizers/path_latency.c -@@ -237,7 +237,8 @@ int getprio(struct path *pp, char *args, unsigned int timeout) - lg_maxavglatency = log(MAX_AVG_LATENCY) / lg_base; - lg_minavglatency = log(MIN_AVG_LATENCY) / lg_base; - -- prepare_directio_read(pp->fd, &blksize, &buf, &restore_flags); -+ if (prepare_directio_read(pp->fd, &blksize, &buf, &restore_flags) < 0) -+ return PRIO_UNDEF; - - temp = io_num; - while (temp-- > 0) { --- -2.11.0 - diff --git a/0027-libmultipath-simplify-failed-wwid-code.patch b/0027-libmultipath-simplify-failed-wwid-code.patch new file mode 100644 index 0000000..bb60d21 --- /dev/null +++ b/0027-libmultipath-simplify-failed-wwid-code.patch @@ -0,0 +1,205 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Tue, 19 May 2020 12:08:44 -0500 +Subject: [PATCH] libmultipath: simplify failed wwid code + +The (is|mark|unmark)_failed_wwid code is needlessly complicated. +Locking a file is necssary if multiple processes could otherwise be +writing to it at the same time. That is not the case with the +failed_wwids files. They can simply be empty files in a directory. Even +with all the locking in place, two processes accessing or modifying a +file at the same time will still race. And even without the locking, if +two processes try to access or modify a file at the same time, they will +both see a reasonable result, and will leave the files in a valid state +afterwards. + +Instead of doing all the locking work (which made it necessary to write +a file, even just to check if a file existed), simply check for files +with lstat(), create them with open(), and remove them with unlink(). + +Reviewed-by: Martin Wilck +Signed-off-by: Benjamin Marzinski +--- + libmultipath/wwids.c | 131 ++++++++++++++++++------------------------- + 1 file changed, 56 insertions(+), 75 deletions(-) + +diff --git a/libmultipath/wwids.c b/libmultipath/wwids.c +index 637cb0ab..aab5da8a 100644 +--- a/libmultipath/wwids.c ++++ b/libmultipath/wwids.c +@@ -6,6 +6,7 @@ + #include + #include + #include ++#include + + #include "util.h" + #include "checkers.h" +@@ -348,109 +349,89 @@ remember_wwid(char *wwid) + } + + static const char shm_dir[] = MULTIPATH_SHM_BASE "failed_wwids"; +-static const char shm_lock[] = ".lock"; +-static const char shm_header[] = "multipath shm lock file, don't edit"; +-static char _shm_lock_path[sizeof(shm_dir)+sizeof(shm_lock)]; +-static const char *shm_lock_path = &_shm_lock_path[0]; + +-static void init_shm_paths(void) ++static void print_failed_wwid_result(const char * msg, const char *wwid, int r) + { +- snprintf(_shm_lock_path, sizeof(_shm_lock_path), +- "%s/%s", shm_dir, shm_lock); ++ switch(r) { ++ case WWID_FAILED_ERROR: ++ condlog(1, "%s: %s: %m", msg, wwid); ++ return; ++ case WWID_IS_FAILED: ++ case WWID_IS_NOT_FAILED: ++ condlog(4, "%s: %s is %s", msg, wwid, ++ r == WWID_IS_FAILED ? "failed" : "good"); ++ return; ++ case WWID_FAILED_CHANGED: ++ condlog(3, "%s: %s", msg, wwid); ++ } + } + +-static pthread_once_t shm_path_once = PTHREAD_ONCE_INIT; +- +-static int multipath_shm_open(bool rw) ++int is_failed_wwid(const char *wwid) + { +- int fd; +- int can_write; +- +- pthread_once(&shm_path_once, init_shm_paths); +- fd = open_file(shm_lock_path, &can_write, shm_header); ++ struct stat st; ++ char path[PATH_MAX]; ++ int r; + +- if (fd >= 0 && rw && !can_write) { +- close(fd); +- condlog(1, "failed to open %s for writing", shm_dir); ++ if (safe_sprintf(path, "%s/%s", shm_dir, wwid)) { ++ condlog(1, "%s: path name overflow", __func__); + return -1; + } + +- return fd; +-} +- +-static void multipath_shm_close(void *arg) +-{ +- long fd = (long)arg; ++ if (lstat(path, &st) == 0) ++ r = WWID_IS_FAILED; ++ else if (errno == ENOENT) ++ r = WWID_IS_NOT_FAILED; ++ else ++ r = WWID_FAILED_ERROR; + +- close(fd); +- unlink(shm_lock_path); ++ print_failed_wwid_result("is_failed", wwid, r); ++ return r; + } + +-static int _failed_wwid_op(const char *wwid, bool rw, +- int (*func)(const char *), const char *msg) ++int mark_failed_wwid(const char *wwid) + { + char path[PATH_MAX]; +- long lockfd; +- int r = -1; ++ int r, fd; + + if (safe_sprintf(path, "%s/%s", shm_dir, wwid)) { + condlog(1, "%s: path name overflow", __func__); + return -1; + } +- +- lockfd = multipath_shm_open(rw); +- if (lockfd == -1) ++ if (ensure_directories_exist(path, 0700) < 0) { ++ condlog(1, "%s: can't setup directories", __func__); + return -1; ++ } + +- pthread_cleanup_push(multipath_shm_close, (void *)lockfd); +- r = func(path); +- pthread_cleanup_pop(1); +- +- if (r == WWID_FAILED_ERROR) +- condlog(1, "%s: %s: %s", msg, wwid, strerror(errno)); +- else if (r == WWID_FAILED_CHANGED) +- condlog(3, "%s: %s", msg, wwid); +- else if (!rw) +- condlog(4, "%s: %s is %s", msg, wwid, +- r == WWID_IS_FAILED ? "failed" : "good"); ++ fd = open(path, O_RDONLY | O_CREAT | O_EXCL, S_IRUSR); ++ if (fd >= 0) { ++ close(fd); ++ r = WWID_FAILED_CHANGED; ++ } else if (errno == EEXIST) ++ r = WWID_FAILED_UNCHANGED; ++ else ++ r = WWID_FAILED_ERROR; + ++ print_failed_wwid_result("mark_failed", wwid, r); + return r; + } + +-static int _is_failed(const char *path) ++int unmark_failed_wwid(const char *wwid) + { +- struct stat st; ++ char path[PATH_MAX]; ++ int r; + +- if (lstat(path, &st) == 0) +- return WWID_IS_FAILED; ++ if (safe_sprintf(path, "%s/%s", shm_dir, wwid)) { ++ condlog(1, "%s: path name overflow", __func__); ++ return -1; ++ } ++ ++ if (unlink(path) == 0) ++ r = WWID_FAILED_CHANGED; + else if (errno == ENOENT) +- return WWID_IS_NOT_FAILED; ++ r = WWID_FAILED_UNCHANGED; + else +- return WWID_FAILED_ERROR; +-} +- +-static int _mark_failed(const char *path) +-{ +- /* Called from _failed_wwid_op: we know that shm_lock_path exists */ +- if (_is_failed(path) == WWID_IS_FAILED) +- return WWID_FAILED_UNCHANGED; +- return (link(shm_lock_path, path) == 0 ? WWID_FAILED_CHANGED : +- WWID_FAILED_ERROR); +-} ++ r = WWID_FAILED_ERROR; + +-static int _unmark_failed(const char *path) +-{ +- if (_is_failed(path) == WWID_IS_NOT_FAILED) +- return WWID_FAILED_UNCHANGED; +- return (unlink(path) == 0 ? WWID_FAILED_CHANGED : WWID_FAILED_ERROR); +-} +- +-#define declare_failed_wwid_op(op, rw) \ +-int op ## _wwid(const char *wwid) \ +-{ \ +- return _failed_wwid_op(wwid, (rw), _ ## op, #op); \ ++ print_failed_wwid_result("unmark_failed", wwid, r); ++ return r; + } +- +-declare_failed_wwid_op(is_failed, false) +-declare_failed_wwid_op(mark_failed, true) +-declare_failed_wwid_op(unmark_failed, true) +-- +2.17.2 + diff --git a/0028-libmultipath-fix-null-dereference-int-alloc_path_group.patch b/0028-libmultipath-fix-null-dereference-int-alloc_path_group.patch deleted file mode 100644 index 50e5ac1..0000000 --- a/0028-libmultipath-fix-null-dereference-int-alloc_path_group.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 156b75082c7c5d5aa832e500cf4175c3f943fa22 Mon Sep 17 00:00:00 2001 -From: Benjamin Marzinski -Date: Tue, 9 Oct 2018 18:03:08 -0500 -Subject: [PATCH] libmultipath: fix null dereference int alloc_path_group - -If all_pathgroup failed to allocate a vector for pgp->paths, instead of -failing after it freed pgp, it would set pgp to NULL and then -dereference it. This patch fixes that. Found by coverity. - -Reviewed-by: Martin Wilck -Signed-off-by: Benjamin Marzinski ---- - libmultipath/structs.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libmultipath/structs.c b/libmultipath/structs.c -index ae847d61..caa178a6 100644 ---- a/libmultipath/structs.c -+++ b/libmultipath/structs.c -@@ -165,7 +165,7 @@ alloc_pathgroup (void) - - if (!pgp->paths) { - FREE(pgp); -- pgp = NULL; -+ return NULL; - } - - dm_pathgroup_to_gen(pgp)->ops = &dm_gen_pathgroup_ops; --- -2.11.0 - diff --git a/0028-libmultipath-use-atomic-linkat-in-mark_failed_wwid.patch b/0028-libmultipath-use-atomic-linkat-in-mark_failed_wwid.patch new file mode 100644 index 0000000..6b9941a --- /dev/null +++ b/0028-libmultipath-use-atomic-linkat-in-mark_failed_wwid.patch @@ -0,0 +1,96 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Tue, 19 May 2020 12:08:45 -0500 +Subject: [PATCH] libmultipath: use atomic linkat() in mark_failed_wwid() + +This keeps (almost) the simplicity of the previous patch, while +making sure that the return value of mark_failed_wwid() +(WWID_FAILED_CHANGED vs. WWID_FAILED_UNCHANGED) is correct, even +if several processes access this WWID at the same time. + +Signed-off-by: Martin Wilck +Signed-off-by: Benjamin Marzinski +--- + libmultipath/wwids.c | 42 +++++++++++++++++++++++++++++------------- + 1 file changed, 29 insertions(+), 13 deletions(-) + +diff --git a/libmultipath/wwids.c b/libmultipath/wwids.c +index aab5da8a..61d9c39e 100644 +--- a/libmultipath/wwids.c ++++ b/libmultipath/wwids.c +@@ -374,7 +374,7 @@ int is_failed_wwid(const char *wwid) + + if (safe_sprintf(path, "%s/%s", shm_dir, wwid)) { + condlog(1, "%s: path name overflow", __func__); +- return -1; ++ return WWID_FAILED_ERROR; + } + + if (lstat(path, &st) == 0) +@@ -390,27 +390,43 @@ int is_failed_wwid(const char *wwid) + + int mark_failed_wwid(const char *wwid) + { +- char path[PATH_MAX]; +- int r, fd; ++ char tmpfile[WWID_SIZE + 2 * sizeof(long) + 1]; ++ int r = WWID_FAILED_ERROR, fd, dfd; + +- if (safe_sprintf(path, "%s/%s", shm_dir, wwid)) { +- condlog(1, "%s: path name overflow", __func__); +- return -1; ++ dfd = open(shm_dir, O_RDONLY|O_DIRECTORY); ++ if (dfd == -1 && errno == ENOENT) { ++ char path[sizeof(shm_dir) + 2]; ++ ++ /* arg for ensure_directories_exist() must not end with "/" */ ++ safe_sprintf(path, "%s/_", shm_dir); ++ ensure_directories_exist(path, 0700); ++ dfd = open(shm_dir, O_RDONLY|O_DIRECTORY); + } +- if (ensure_directories_exist(path, 0700) < 0) { +- condlog(1, "%s: can't setup directories", __func__); +- return -1; ++ if (dfd == -1) { ++ condlog(1, "%s: can't setup %s: %m", __func__, shm_dir); ++ return WWID_FAILED_ERROR; + } + +- fd = open(path, O_RDONLY | O_CREAT | O_EXCL, S_IRUSR); +- if (fd >= 0) { ++ safe_sprintf(tmpfile, "%s.%lx", wwid, (long)getpid()); ++ fd = openat(dfd, tmpfile, O_RDONLY | O_CREAT | O_EXCL, S_IRUSR); ++ if (fd >= 0) + close(fd); ++ else ++ goto out_closedir; ++ ++ if (linkat(dfd, tmpfile, dfd, wwid, 0) == 0) + r = WWID_FAILED_CHANGED; +- } else if (errno == EEXIST) ++ else if (errno == EEXIST) + r = WWID_FAILED_UNCHANGED; + else + r = WWID_FAILED_ERROR; + ++ if (unlinkat(dfd, tmpfile, 0) == -1) ++ condlog(2, "%s: failed to unlink %s/%s: %m", ++ __func__, shm_dir, tmpfile); ++ ++out_closedir: ++ close(dfd); + print_failed_wwid_result("mark_failed", wwid, r); + return r; + } +@@ -422,7 +438,7 @@ int unmark_failed_wwid(const char *wwid) + + if (safe_sprintf(path, "%s/%s", shm_dir, wwid)) { + condlog(1, "%s: path name overflow", __func__); +- return -1; ++ return WWID_FAILED_ERROR; + } + + if (unlink(path) == 0) +-- +2.17.2 + diff --git a/0029-fix-boolean-value-with-json-c-0.14.patch b/0029-fix-boolean-value-with-json-c-0.14.patch new file mode 100644 index 0000000..29bb90b --- /dev/null +++ b/0029-fix-boolean-value-with-json-c-0.14.patch @@ -0,0 +1,41 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: "mail@eworm.de" +Date: Sat, 25 Apr 2020 21:11:13 +0200 +Subject: [PATCH] fix boolean value with json-c 0.14 + +Upstream json-c removed the TRUE and FALSE defines in commit +0992aac61f8b087efd7094e9ac2b84fa9c040fcd. + +[mwilck]: Use stdbool.h, and keep the log message unchanged. + +Signed-off-by: Christian Hesse +Signed-off-by: Martin Wilck +Signed-off-by: Benjamin Marzinski +--- + libdmmp/libdmmp_private.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/libdmmp/libdmmp_private.h b/libdmmp/libdmmp_private.h +index ac85b63f..b1a6ddea 100644 +--- a/libdmmp/libdmmp_private.h ++++ b/libdmmp/libdmmp_private.h +@@ -30,6 +30,7 @@ + #include + #include + #include ++#include + #include + + #include "libdmmp/libdmmp.h" +@@ -82,7 +83,7 @@ static out_type func_name(struct dmmp_context *ctx, const char *var_name) { \ + do { \ + json_type j_type = json_type_null; \ + json_object *j_obj_tmp = NULL; \ +- if (json_object_object_get_ex(j_obj, key, &j_obj_tmp) != TRUE) { \ ++ if (json_object_object_get_ex(j_obj, key, &j_obj_tmp) != true) { \ + _error(ctx, "Invalid JSON output from multipathd IPC: " \ + "key '%s' not found", key); \ + rc = DMMP_ERR_IPC_ERROR; \ +-- +2.17.2 + diff --git a/0029-multipath-fix-max-array-size-in-print_cmd_valid.patch b/0029-multipath-fix-max-array-size-in-print_cmd_valid.patch deleted file mode 100644 index 4f08d48..0000000 --- a/0029-multipath-fix-max-array-size-in-print_cmd_valid.patch +++ /dev/null @@ -1,31 +0,0 @@ -From b25493d8fa13c2d7a346e0b18ad4756aa733ff8d Mon Sep 17 00:00:00 2001 -From: Benjamin Marzinski -Date: Tue, 9 Oct 2018 18:03:10 -0500 -Subject: [PATCH] multipath: fix max array size in print_cmd_valid - -The code is attempting to verify that 0 <= k < 3 -However, sizeof(val) is 12, assuming 4 byte integers. The check needs to -take integer size into account. Found by coverity. - -Reviewed-by: Martin Wilck -Signed-off-by: Benjamin Marzinski ---- - multipath/main.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/multipath/main.c b/multipath/main.c -index fc5bf169..d5aad952 100644 ---- a/multipath/main.c -+++ b/multipath/main.c -@@ -482,7 +482,7 @@ static int print_cmd_valid(int k, const vector pathvec, - struct timespec until; - struct path *pp; - -- if (k < 0 || k >= sizeof(vals)) -+ if (k < 0 || k >= (sizeof(vals) / sizeof(int))) - return 1; - - if (k == 2) { --- -2.11.0 - diff --git a/0030-libmultipath-fix-condlog-NULL-argument-in-uevent_get.patch b/0030-libmultipath-fix-condlog-NULL-argument-in-uevent_get.patch new file mode 100644 index 0000000..d8ae27d --- /dev/null +++ b/0030-libmultipath-fix-condlog-NULL-argument-in-uevent_get.patch @@ -0,0 +1,46 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Thu, 4 Jun 2020 18:20:06 -0500 +Subject: [PATCH] libmultipath: fix condlog NULL argument in uevent_get_env_var + +uevent_get_env_var() could call condlog with p == NULL. On gcc 10, +this triggers warnings like: + +In file included from uevent.c:47: +In function 'uevent_get_env_var', + inlined from 'uevent_get_wwid' at uevent.c:170:8: +debug.h:13:2: error: '%s' directive argument is null +[-Werror=format-overflow=] + 13 | dlog(logsink, prio, fmt "\n", ##args) + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +uevent.c:132:2: note: in expansion of macro 'condlog' + 132 | condlog(4, "%s: %s -> '%s'", __func__, attr, p); + | ^~~~~~~ +uevent.c: In function 'uevent_get_wwid': +uevent.c:132:25: note: format string is defined here + 132 | condlog(4, "%s: %s -> '%s'", __func__, attr, p); + | ^~ + +If p is NULL, use "(null)" instead. + +Signed-off-by: Benjamin Marzinski +--- + libmultipath/uevent.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libmultipath/uevent.c b/libmultipath/uevent.c +index d38e8a7f..e0d13b11 100644 +--- a/libmultipath/uevent.c ++++ b/libmultipath/uevent.c +@@ -129,7 +129,7 @@ static const char* uevent_get_env_var(const struct uevent *uev, + } + } + +- condlog(4, "%s: %s -> '%s'", __func__, attr, p); ++ condlog(4, "%s: %s -> '%s'", __func__, attr, p ?: "(null)"); + return p; + + invalid: +-- +2.17.2 + diff --git a/0030-multipathd-minor-fixes.patch b/0030-multipathd-minor-fixes.patch deleted file mode 100644 index 844810e..0000000 --- a/0030-multipathd-minor-fixes.patch +++ /dev/null @@ -1,41 +0,0 @@ -From b31f8f5a21a90fb9087c02e00b6b69934a5bbdd5 Mon Sep 17 00:00:00 2001 -From: Benjamin Marzinski -Date: Tue, 9 Oct 2018 18:03:12 -0500 -Subject: [PATCH] multipathd: minor fixes - -In update_multipath(), conf is set again in a couple of lines, and -nothing uses it before then, so there's no point in setting it twice. -Also, in ev_remove_path(), strncpy() could end up unterminated, so -use strlcpy() instead. - -Reviewed-by: Martin Wilck -Signed-off-by: Benjamin Marzinski ---- - multipathd/main.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/multipathd/main.c b/multipathd/main.c -index ba796ab1..cd963043 100644 ---- a/multipathd/main.c -+++ b/multipathd/main.c -@@ -429,7 +429,7 @@ int update_multipath (struct vectors *vecs, char *mapname, int reset) - continue; - - if (pp->state != PATH_DOWN) { -- struct config *conf = get_multipath_config(); -+ struct config *conf; - int oldstate = pp->state; - int checkint; - -@@ -1097,7 +1097,7 @@ ev_remove_path (struct path *pp, struct vectors * vecs, int need_do_map) - /* - * flush_map will fail if the device is open - */ -- strncpy(alias, mpp->alias, WWID_SIZE); -+ strlcpy(alias, mpp->alias, WWID_SIZE); - if (mpp->flush_on_last_del == FLUSH_ENABLED) { - condlog(2, "%s Last path deleted, disabling queueing", mpp->alias); - mpp->retry_tick = 0; --- -2.11.0 - diff --git a/0031-libmultipath-set-enable_foreign-to-NONE-by-default.patch b/0031-libmultipath-set-enable_foreign-to-NONE-by-default.patch new file mode 100644 index 0000000..7d2b886 --- /dev/null +++ b/0031-libmultipath-set-enable_foreign-to-NONE-by-default.patch @@ -0,0 +1,49 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Wed, 21 Aug 2019 16:07:12 +0200 +Subject: [PATCH] libmultipath: set "enable_foreign" to NONE by default + +This has been requested by NetApp. + +Signed-off-by: Benjamin Marzinski +--- + libmultipath/defaults.h | 4 ++-- + multipath/multipath.conf.5 | 5 +++-- + 2 files changed, 5 insertions(+), 4 deletions(-) + +diff --git a/libmultipath/defaults.h b/libmultipath/defaults.h +index e5ee6afe..01a501bd 100644 +--- a/libmultipath/defaults.h ++++ b/libmultipath/defaults.h +@@ -50,8 +50,8 @@ + #define DEFAULT_FIND_MULTIPATHS_TIMEOUT -10 + #define DEFAULT_UNKNOWN_FIND_MULTIPATHS_TIMEOUT 1 + #define DEFAULT_ALL_TG_PT ALL_TG_PT_OFF +-/* Enable all foreign libraries by default */ +-#define DEFAULT_ENABLE_FOREIGN "" ++/* Enable no foreign libraries by default */ ++#define DEFAULT_ENABLE_FOREIGN "NONE" + + #define CHECKINT_UNDEF UINT_MAX + #define DEFAULT_CHECKINT 5 +diff --git a/multipath/multipath.conf.5 b/multipath/multipath.conf.5 +index 05a5e8ff..28cea88c 100644 +--- a/multipath/multipath.conf.5 ++++ b/multipath/multipath.conf.5 +@@ -1228,10 +1228,11 @@ Enables or disables foreign libraries (see section + .I FOREIGN MULTIPATH SUPPORT + below). The value is a regular expression; foreign libraries are loaded + if their name (e.g. \(dqnvme\(dq) matches the expression. By default, +-all foreign libraries are enabled. ++no foreign libraries are enabled. Set this to \(dqnvme\(dq to enable NVMe native ++multipath support, or \(dq.*\(dq to enable all foreign libraries. + .RS + .TP +-The default is: \fB\(dq\(dq\fR (the empty regular expression) ++The default is: \fB\(dqNONE\(dq\fR + .RE + . + . +-- +2.17.2 + diff --git a/0031-multipathd-fix-memory-leak-on-error-in-configure.patch b/0031-multipathd-fix-memory-leak-on-error-in-configure.patch deleted file mode 100644 index cb94629..0000000 --- a/0031-multipathd-fix-memory-leak-on-error-in-configure.patch +++ /dev/null @@ -1,68 +0,0 @@ -From 3b8da487d534eb49c8c59d1a9c2d6199c0716572 Mon Sep 17 00:00:00 2001 -From: Benjamin Marzinski -Date: Tue, 9 Oct 2018 18:03:14 -0500 -Subject: [PATCH] multipathd: fix memory leak on error in configure - -If configure fails after allocing mpvec, it must free it. Found by -coverity. - -Reviewed-by: Martin Wilck -Signed-off-by: Benjamin Marzinski ---- - multipathd/main.c | 12 ++++++++---- - 1 file changed, 8 insertions(+), 4 deletions(-) - -diff --git a/multipathd/main.c b/multipathd/main.c -index 463b1b82..04dce04c 100644 ---- a/multipathd/main.c -+++ b/multipathd/main.c -@@ -2278,7 +2278,7 @@ configure (struct vectors * vecs) - ret = path_discovery(vecs->pathvec, DI_ALL); - if (ret < 0) { - condlog(0, "configure failed at path discovery"); -- return 1; -+ goto fail; - } - - vector_foreach_slot (vecs->pathvec, pp, i){ -@@ -2295,7 +2295,7 @@ configure (struct vectors * vecs) - } - if (map_discovery(vecs)) { - condlog(0, "configure failed at map discovery"); -- return 1; -+ goto fail; - } - - /* -@@ -2309,7 +2309,7 @@ configure (struct vectors * vecs) - force_reload = FORCE_RELOAD_YES; - if (ret) { - condlog(0, "configure failed while coalescing paths"); -- return 1; -+ goto fail; - } - - /* -@@ -2318,7 +2318,7 @@ configure (struct vectors * vecs) - */ - if (coalesce_maps(vecs, mpvec)) { - condlog(0, "configure failed while coalescing maps"); -- return 1; -+ goto fail; - } - - dm_lib_release(); -@@ -2354,6 +2354,10 @@ configure (struct vectors * vecs) - i--; - } - return 0; -+ -+fail: -+ vector_free(mpvec); -+ return 1; - } - - int --- -2.11.0 - diff --git a/0032-multipath-add-e-option-to-enable-foreign-libraries.patch b/0032-multipath-add-e-option-to-enable-foreign-libraries.patch new file mode 100644 index 0000000..6e07152 --- /dev/null +++ b/0032-multipath-add-e-option-to-enable-foreign-libraries.patch @@ -0,0 +1,89 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Mon, 2 Mar 2020 22:43:27 +0100 +Subject: [PATCH] multipath: add "-e" option to enable foreign libraries + +As we have set "enable_foreign" to "NONE" now by default, users +may find it useful to be able to switch on foreign multipath display +with an extra command line option even if foreign libraries are +not enabled in multipath.conf. Currently this makes only sense +with "multipath -ll", as the nvme library (and foreign libraries +in general) support only the display of status information. + +Suggested-by: Benjamin Marzinski +Signed-off-by: Benjamin Marzinski +--- + multipath/main.c | 11 ++++++++++- + multipath/multipath.8 | 6 ++++++ + 2 files changed, 16 insertions(+), 1 deletion(-) + +diff --git a/multipath/main.c b/multipath/main.c +index 953fab27..c4740fab 100644 +--- a/multipath/main.c ++++ b/multipath/main.c +@@ -145,6 +145,7 @@ usage (char * progname) + " -h print this usage text\n" + " -l show multipath topology (sysfs and DM info)\n" + " -ll show multipath topology (maximum info)\n" ++ " -e enable foreign libraries with -l/-ll\n" + " -f flush a multipath device map\n" + " -F flush all multipath device maps\n" + " -a add a device wwid to the wwids file\n" +@@ -865,6 +866,7 @@ main (int argc, char *argv[]) + char *dev = NULL; + struct config *conf; + int retries = -1; ++ bool enable_foreign = false; + + udev = udev_new(); + logsink = 0; +@@ -874,7 +876,7 @@ main (int argc, char *argv[]) + multipath_conf = conf; + conf->retrigger_tries = 0; + conf->force_sync = 1; +- while ((arg = getopt(argc, argv, ":adcChl::FfM:v:p:b:BrR:itTquUwW")) != EOF ) { ++ while ((arg = getopt(argc, argv, ":adcChl::eFfM:v:p:b:BrR:itTquUwW")) != EOF ) { + switch(arg) { + case 1: printf("optarg : %s\n",optarg); + break; +@@ -971,6 +973,9 @@ main (int argc, char *argv[]) + case 'R': + retries = atoi(optarg); + break; ++ case 'e': ++ enable_foreign = true; ++ break; + case ':': + fprintf(stderr, "Missing option argument\n"); + usage(argv[0]); +@@ -1022,6 +1027,10 @@ main (int argc, char *argv[]) + condlog(0, "failed to initialize prioritizers"); + goto out; + } ++ ++ if ((cmd == CMD_LIST_SHORT || cmd == CMD_LIST_LONG) && enable_foreign) ++ conf->enable_foreign = ""; ++ + /* Failing here is non-fatal */ + init_foreign(conf->multipath_dir, conf->enable_foreign); + if (cmd == CMD_USABLE_PATHS) { +diff --git a/multipath/multipath.8 b/multipath/multipath.8 +index 9cdd05a3..6fb8645a 100644 +--- a/multipath/multipath.8 ++++ b/multipath/multipath.8 +@@ -223,6 +223,12 @@ The verbosity level also controls the level of log and debug messages printed to + Dry run, do not create or update devmaps. + . + .TP ++.B \-e ++Enable all foreign libraries. This overrides the ++.I enable_foreign ++option from \fBmultipath.conf(5)\fR. ++. ++.TP + .B \-i + Ignore WWIDs file when processing devices. If + \fIfind_multipaths strict\fR or \fIfind_multipaths no\fR is set in +-- +2.17.2 + diff --git a/0032-multipathd-check-for-NULL-udevice-in-cli_add_path.patch b/0032-multipathd-check-for-NULL-udevice-in-cli_add_path.patch deleted file mode 100644 index 801cbae..0000000 --- a/0032-multipathd-check-for-NULL-udevice-in-cli_add_path.patch +++ /dev/null @@ -1,32 +0,0 @@ -From e7a3324274578d63cdef23bb08410df20e0de862 Mon Sep 17 00:00:00 2001 -From: Benjamin Marzinski -Date: Wed, 10 Oct 2018 13:01:09 -0500 -Subject: [PATCH] multipathd: check for NULL udevice in cli_add_path - -If cli_add_path can't get a udevice for the path, it should fail -immediately, instead of continuing with a NULL udevice, since it will -fail in store_pathinfo() anyway. - -Signed-off-by: Benjamin Marzinski ---- - multipathd/cli_handlers.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/multipathd/cli_handlers.c b/multipathd/cli_handlers.c -index bb164726..75000807 100644 ---- a/multipathd/cli_handlers.c -+++ b/multipathd/cli_handlers.c -@@ -720,6 +720,10 @@ cli_add_path (void * v, char ** reply, int * len, void * data) - udevice = udev_device_new_from_subsystem_sysname(udev, - "block", - param); -+ if (!udevice) { -+ condlog(0, "%s: can't find path", param); -+ return 1; -+ } - conf = get_multipath_config(); - pthread_cleanup_push(put_multipath_config, conf); - r = store_pathinfo(vecs->pathvec, conf, --- -2.11.0 - diff --git a/0033-kpartx-fix-apparent-out-of-bounds-access.patch b/0033-kpartx-fix-apparent-out-of-bounds-access.patch deleted file mode 100644 index f0f5db9..0000000 --- a/0033-kpartx-fix-apparent-out-of-bounds-access.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 2578838d077ecd7f4555e90df019053e7131e151 Mon Sep 17 00:00:00 2001 -From: Martin Wilck -Date: Tue, 8 Jan 2019 23:54:00 +0100 -Subject: [PATCH] kpartx(coverity): fix apparent out-of-bounds access - -This was a false positive. - -Signed-off-by: Martin Wilck ---- - kpartx/dasd.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/kpartx/dasd.c b/kpartx/dasd.c -index fb358add..61b609a5 100644 ---- a/kpartx/dasd.c -+++ b/kpartx/dasd.c -@@ -190,7 +190,7 @@ read_dasd_pt(int fd, struct slice all, struct slice *sp, int ns) - memcpy (&vlabel, data, sizeof(vlabel)); - else { - bzero(&vlabel,4); -- memcpy (&vlabel.vollbl, data, sizeof(vlabel) - 4); -+ memcpy ((char *)&vlabel + 4, data, sizeof(vlabel) - 4); - } - vtoc_ebcdic_dec(vlabel.vollbl, type, 4); - --- -2.11.0 - diff --git a/0033-libmultipath-remove-_blacklist_exceptions-functions.patch b/0033-libmultipath-remove-_blacklist_exceptions-functions.patch new file mode 100644 index 0000000..5fa6539 --- /dev/null +++ b/0033-libmultipath-remove-_blacklist_exceptions-functions.patch @@ -0,0 +1,139 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Tue, 9 Jun 2020 16:35:27 -0500 +Subject: [PATCH] libmultipath: remove _blacklist_exceptions functions + +_blacklist_exceptions() and _blacklist_exceptions_device() are exactly +the same as _blacklist() and _blacklist_device(), so remove them, and +give the remaining functions to a more general name. + +Signed-off-by: Benjamin Marzinski +--- + libmultipath/blacklist.c | 62 ++++++++++------------------------------ + 1 file changed, 15 insertions(+), 47 deletions(-) + +diff --git a/libmultipath/blacklist.c b/libmultipath/blacklist.c +index 00e8dbdb..c21a0e27 100644 +--- a/libmultipath/blacklist.c ++++ b/libmultipath/blacklist.c +@@ -101,21 +101,8 @@ int set_ble_device(vector blist, char * vendor, char * product, int origin) + return 0; + } + +-int +-_blacklist_exceptions (vector elist, const char * str) +-{ +- int i; +- struct blentry * ele; +- +- vector_foreach_slot (elist, ele, i) { +- if (!regexec(&ele->regex, str, 0, NULL, 0)) +- return 1; +- } +- return 0; +-} +- +-int +-_blacklist (vector blist, const char * str) ++static int ++match_reglist (vector blist, const char * str) + { + int i; + struct blentry * ble; +@@ -127,28 +114,9 @@ _blacklist (vector blist, const char * str) + return 0; + } + +-int +-_blacklist_exceptions_device(const struct _vector *elist, const char * vendor, +- const char * product) +-{ +- int i; +- struct blentry_device * ble; +- +- vector_foreach_slot (elist, ble, i) { +- if (!ble->vendor && !ble->product) +- continue; +- if ((!ble->vendor || +- !regexec(&ble->vendor_reg, vendor, 0, NULL, 0)) && +- (!ble->product || +- !regexec(&ble->product_reg, product, 0, NULL, 0))) +- return 1; +- } +- return 0; +-} +- +-int +-_blacklist_device (const struct _vector *blist, const char * vendor, +- const char * product) ++static int ++match_reglist_device (const struct _vector *blist, const char * vendor, ++ const char * product) + { + int i; + struct blentry_device * ble; +@@ -300,9 +268,9 @@ filter_device (vector blist, vector elist, char * vendor, char * product, + int r = MATCH_NOTHING; + + if (vendor && product) { +- if (_blacklist_exceptions_device(elist, vendor, product)) ++ if (match_reglist_device(elist, vendor, product)) + r = MATCH_DEVICE_BLIST_EXCEPT; +- else if (_blacklist_device(blist, vendor, product)) ++ else if (match_reglist_device(blist, vendor, product)) + r = MATCH_DEVICE_BLIST; + } + +@@ -316,9 +284,9 @@ filter_devnode (vector blist, vector elist, char * dev) + int r = MATCH_NOTHING; + + if (dev) { +- if (_blacklist_exceptions(elist, dev)) ++ if (match_reglist(elist, dev)) + r = MATCH_DEVNODE_BLIST_EXCEPT; +- else if (_blacklist(blist, dev)) ++ else if (match_reglist(blist, dev)) + r = MATCH_DEVNODE_BLIST; + } + +@@ -332,9 +300,9 @@ filter_wwid (vector blist, vector elist, char * wwid, char * dev) + int r = MATCH_NOTHING; + + if (wwid) { +- if (_blacklist_exceptions(elist, wwid)) ++ if (match_reglist(elist, wwid)) + r = MATCH_WWID_BLIST_EXCEPT; +- else if (_blacklist(blist, wwid)) ++ else if (match_reglist(blist, wwid)) + r = MATCH_WWID_BLIST; + } + +@@ -351,9 +319,9 @@ filter_protocol(vector blist, vector elist, struct path * pp) + if (pp) { + snprint_path_protocol(buf, sizeof(buf), pp); + +- if (_blacklist_exceptions(elist, buf)) ++ if (match_reglist(elist, buf)) + r = MATCH_PROTOCOL_BLIST_EXCEPT; +- else if (_blacklist(blist, buf)) ++ else if (match_reglist(blist, buf)) + r = MATCH_PROTOCOL_BLIST; + } + +@@ -422,11 +390,11 @@ filter_property(struct config *conf, struct udev_device *udev, int lvl, + if (check_missing_prop && !strcmp(env, uid_attribute)) + uid_attr_seen = true; + +- if (_blacklist_exceptions(conf->elist_property, env)) { ++ if (match_reglist(conf->elist_property, env)) { + r = MATCH_PROPERTY_BLIST_EXCEPT; + break; + } +- if (_blacklist(conf->blist_property, env)) { ++ if (match_reglist(conf->blist_property, env)) { + r = MATCH_PROPERTY_BLIST; + break; + } +-- +2.17.2 + diff --git a/0034-libmultipath-fix-apparent-overflow.patch b/0034-libmultipath-fix-apparent-overflow.patch deleted file mode 100644 index 921cea9..0000000 --- a/0034-libmultipath-fix-apparent-overflow.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 7d30130a5d53629e7c3420aa58018c75fa9dbeef Mon Sep 17 00:00:00 2001 -From: Martin Wilck -Date: Tue, 8 Jan 2019 23:54:02 +0100 -Subject: [PATCH] libmultipath(coverity): fix apparent overflow - -"preferred_path" contains always "0" or "1". - -Signed-off-by: Martin Wilck ---- - libmultipath/discovery.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c -index 7f983a63..3fd79a36 100644 ---- a/libmultipath/discovery.c -+++ b/libmultipath/discovery.c -@@ -520,7 +520,7 @@ sysfs_get_asymmetric_access_state(struct path *pp, char *buff, int buflen) - /* Parse error, ignore */ - return 0; - } -- return preferred; -+ return !!preferred; - } - - static void --- -2.11.0 - diff --git a/0034-libmultipath-fix-parser-issue-with-comments-in-strin.patch b/0034-libmultipath-fix-parser-issue-with-comments-in-strin.patch new file mode 100644 index 0000000..22cc22c --- /dev/null +++ b/0034-libmultipath-fix-parser-issue-with-comments-in-strin.patch @@ -0,0 +1,95 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Tue, 9 Jun 2020 16:35:28 -0500 +Subject: [PATCH] libmultipath: fix parser issue with comments in strings + +If a quoted string starts with '#' or '!', the parser will stop +parsing the line, thinking that it's a comment. It should only +be checking for comments outside of quoted strings. Fixed this and +added unit tests to verify it. + +Signed-off-by: Benjamin Marzinski +--- + libmultipath/parser.c | 4 +++- + tests/parser.c | 42 ++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 45 insertions(+), 1 deletion(-) + +diff --git a/libmultipath/parser.c b/libmultipath/parser.c +index d478b177..11a6168c 100644 +--- a/libmultipath/parser.c ++++ b/libmultipath/parser.c +@@ -300,8 +300,10 @@ alloc_strvec(char *string) + (isspace((int) *cp) || !isascii((int) *cp))) + && *cp != '\0') + cp++; +- if (*cp == '\0' || *cp == '!' || *cp == '#') ++ if (*cp == '\0' || ++ (!in_string && (*cp == '!' || *cp == '#'))) { + return strvec; ++ } + } + out: + vector_free(strvec); +diff --git a/tests/parser.c b/tests/parser.c +index 29859dac..5772391e 100644 +--- a/tests/parser.c ++++ b/tests/parser.c +@@ -440,6 +440,46 @@ static void test18(void **state) + free_strvec(v); + } + ++static void test19(void **state) ++{ ++#define QUOTED19 "!value" ++ vector v = alloc_strvec("key \"" QUOTED19 "\""); ++ char *val; ++ ++ assert_int_equal(VECTOR_SIZE(v), 4); ++ assert_string_equal(VECTOR_SLOT(v, 0), "key"); ++ assert_true(is_quote(VECTOR_SLOT(v, 1))); ++ assert_string_equal(VECTOR_SLOT(v, 2), QUOTED19); ++ assert_true(is_quote(VECTOR_SLOT(v, 3))); ++ assert_int_equal(validate_config_strvec(v, test_file), 0); ++ ++ val = set_value(v); ++ assert_string_equal(val, QUOTED19); ++ ++ free(val); ++ free_strvec(v); ++} ++ ++static void test20(void **state) ++{ ++#define QUOTED20 "#value" ++ vector v = alloc_strvec("key \"" QUOTED20 "\""); ++ char *val; ++ ++ assert_int_equal(VECTOR_SIZE(v), 4); ++ assert_string_equal(VECTOR_SLOT(v, 0), "key"); ++ assert_true(is_quote(VECTOR_SLOT(v, 1))); ++ assert_string_equal(VECTOR_SLOT(v, 2), QUOTED20); ++ assert_true(is_quote(VECTOR_SLOT(v, 3))); ++ assert_int_equal(validate_config_strvec(v, test_file), 0); ++ ++ val = set_value(v); ++ assert_string_equal(val, QUOTED20); ++ ++ free(val); ++ free_strvec(v); ++} ++ + int test_config_parser(void) + { + const struct CMUnitTest tests[] = { +@@ -461,6 +501,8 @@ int test_config_parser(void) + cmocka_unit_test(test16), + cmocka_unit_test(test17), + cmocka_unit_test(test18), ++ cmocka_unit_test(test19), ++ cmocka_unit_test(test20), + }; + return cmocka_run_group_tests(tests, setup, teardown); + } +-- +2.17.2 + diff --git a/0035-libmultipath-fix-int-overflow-in-sysfs_set_scsi_tmo.patch b/0035-libmultipath-fix-int-overflow-in-sysfs_set_scsi_tmo.patch deleted file mode 100644 index 4284271..0000000 --- a/0035-libmultipath-fix-int-overflow-in-sysfs_set_scsi_tmo.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 3044fc0bd953faf71bfa6ebd98f2084f6ae1772b Mon Sep 17 00:00:00 2001 -From: Martin Wilck -Date: Tue, 8 Jan 2019 23:54:04 +0100 -Subject: [PATCH] libmultipath(coverity): fix int overflow in - sysfs_set_scsi_tmo - -Signed-off-by: Martin Wilck ---- - libmultipath/discovery.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c -index 3fd79a36..1748eebb 100644 ---- a/libmultipath/discovery.c -+++ b/libmultipath/discovery.c -@@ -711,7 +711,7 @@ sysfs_set_scsi_tmo (struct multipath *mpp, int checkint) - int dev_loss_tmo = mpp->dev_loss; - - if (mpp->no_path_retry > 0) { -- uint64_t no_path_retry_tmo = mpp->no_path_retry * checkint; -+ uint64_t no_path_retry_tmo = (uint64_t)mpp->no_path_retry * checkint; - - if (no_path_retry_tmo > MAX_DEV_LOSS_TMO) - no_path_retry_tmo = MAX_DEV_LOSS_TMO; --- -2.11.0 - diff --git a/0035-libmultipath-invert-regexes-that-start-with-exclamat.patch b/0035-libmultipath-invert-regexes-that-start-with-exclamat.patch new file mode 100644 index 0000000..ff1331d --- /dev/null +++ b/0035-libmultipath-invert-regexes-that-start-with-exclamat.patch @@ -0,0 +1,435 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Tue, 9 Jun 2020 16:35:29 -0500 +Subject: [PATCH] libmultipath: invert regexes that start with exclamation + point + +The number of devices that multipath needs to blacklist keeps growing, +and the udev rules already have + +KERNEL!="sd*|dasd*|nvme*", GOTO="end_mpath" + +so they only work correctly with these device types. Instead of +individually blacklisting every type of device that can't be +multipathed, multipath's default blacklist should work like the udev +rule, and blacklist all devices that aren't scsi, dasd, or nvme. +Unfortunately, the c regex library doesn't support negative lookahead. +Instead, multipath should treat "!" at the beginning of +blacklist/exceptions regexes as inverse matching the rest of the regex. +If users need to match a literal '!' as the first character of their +regex, they can use "\!" instead. This allows multipath to change the +default devnode blacklist regex to "!^(sd[a-z]|dasd[a-z]|nvme[0-9])". + +Extra tests have been added to the blacklist unit tests to verify the +inverse matching code and the new default blacklist. + +Signed-off-by: Benjamin Marzinski +--- + libmultipath/blacklist.c | 41 +++++++++----- + libmultipath/blacklist.h | 3 + + multipath/multipath.conf.5 | 17 ++++-- + tests/blacklist.c | 110 +++++++++++++++++++++++++++++++++++++ + tests/test-lib.c | 2 +- + 5 files changed, 155 insertions(+), 18 deletions(-) + +diff --git a/libmultipath/blacklist.c b/libmultipath/blacklist.c +index c21a0e27..db58ccca 100644 +--- a/libmultipath/blacklist.c ++++ b/libmultipath/blacklist.c +@@ -15,9 +15,24 @@ + #include "structs_vec.h" + #include "print.h" + ++char *check_invert(char *str, bool *invert) ++{ ++ if (str[0] == '!') { ++ *invert = true; ++ return str + 1; ++ } ++ if (str[0] == '\\' && str[1] == '!') { ++ *invert = false; ++ return str + 1; ++ } ++ *invert = false; ++ return str; ++} ++ + int store_ble(vector blist, char * str, int origin) + { + struct blentry * ble; ++ char *regex_str; + + if (!str) + return 0; +@@ -30,7 +45,8 @@ int store_ble(vector blist, char * str, int origin) + if (!ble) + goto out; + +- if (regcomp(&ble->regex, str, REG_EXTENDED|REG_NOSUB)) ++ regex_str = check_invert(str, &ble->invert); ++ if (regcomp(&ble->regex, regex_str, REG_EXTENDED|REG_NOSUB)) + goto out1; + + if (!vector_alloc_slot(blist)) +@@ -66,6 +82,7 @@ int alloc_ble_device(vector blist) + int set_ble_device(vector blist, char * vendor, char * product, int origin) + { + struct blentry_device * ble; ++ char *regex_str; + + if (!blist) + return 1; +@@ -76,7 +93,8 @@ int set_ble_device(vector blist, char * vendor, char * product, int origin) + return 1; + + if (vendor) { +- if (regcomp(&ble->vendor_reg, vendor, ++ regex_str = check_invert(vendor, &ble->vendor_invert); ++ if (regcomp(&ble->vendor_reg, regex_str, + REG_EXTENDED|REG_NOSUB)) { + FREE(vendor); + if (product) +@@ -86,7 +104,8 @@ int set_ble_device(vector blist, char * vendor, char * product, int origin) + ble->vendor = vendor; + } + if (product) { +- if (regcomp(&ble->product_reg, product, ++ regex_str = check_invert(product, &ble->product_invert); ++ if (regcomp(&ble->product_reg, regex_str, + REG_EXTENDED|REG_NOSUB)) { + FREE(product); + if (vendor) { +@@ -108,7 +127,7 @@ match_reglist (vector blist, const char * str) + struct blentry * ble; + + vector_foreach_slot (blist, ble, i) { +- if (!regexec(&ble->regex, str, 0, NULL, 0)) ++ if (!!regexec(&ble->regex, str, 0, NULL, 0) == ble->invert) + return 1; + } + return 0; +@@ -125,9 +144,11 @@ match_reglist_device (const struct _vector *blist, const char * vendor, + if (!ble->vendor && !ble->product) + continue; + if ((!ble->vendor || +- !regexec(&ble->vendor_reg, vendor, 0, NULL, 0)) && ++ !!regexec(&ble->vendor_reg, vendor, 0, NULL, 0) == ++ ble->vendor_invert) && + (!ble->product || +- !regexec(&ble->product_reg, product, 0, NULL, 0))) ++ !!regexec(&ble->product_reg, product, 0, NULL, 0) == ++ ble->product_invert)) + return 1; + } + return 0; +@@ -160,13 +181,7 @@ setup_default_blist (struct config * conf) + char * str; + int i; + +- str = STRDUP("^(ram|zram|raw|loop|fd|md|dm-|sr|scd|st|dcssblk)[0-9]"); +- if (!str) +- return 1; +- if (store_ble(conf->blist_devnode, str, ORIGIN_DEFAULT)) +- return 1; +- +- str = STRDUP("^(td|hd|vd)[a-z]"); ++ str = STRDUP("!^(sd[a-z]|dasd[a-z]|nvme[0-9])"); + if (!str) + return 1; + if (store_ble(conf->blist_devnode, str, ORIGIN_DEFAULT)) +diff --git a/libmultipath/blacklist.h b/libmultipath/blacklist.h +index 2d721f60..4305857d 100644 +--- a/libmultipath/blacklist.h ++++ b/libmultipath/blacklist.h +@@ -20,6 +20,7 @@ + struct blentry { + char * str; + regex_t regex; ++ bool invert; + int origin; + }; + +@@ -28,6 +29,8 @@ struct blentry_device { + char * product; + regex_t vendor_reg; + regex_t product_reg; ++ bool vendor_invert; ++ bool product_invert; + int origin; + }; + +diff --git a/multipath/multipath.conf.5 b/multipath/multipath.conf.5 +index 28cea88c..5adaced6 100644 +--- a/multipath/multipath.conf.5 ++++ b/multipath/multipath.conf.5 +@@ -1249,6 +1249,16 @@ being handled by multipath-tools. + .LP + . + . ++In the \fIblacklist\fR and \fIblacklist_exceptions\fR sections, starting a ++quoted value with an exclamation mark \fB"!"\fR will invert the matching ++of the rest of the regular expression. For instance, \fB"!^sd[a-z]"\fR will ++match all values that do not start with \fB"sd[a-z]"\fR. The exclamation mark ++can be escaped \fB"\\!"\fR to match a literal \fB!\fR at the start of a ++regular expression. \fBNote:\fR The exclamation mark must be inside quotes, ++otherwise it will be treated as starting a comment. ++.LP ++. ++. + The \fIblacklist_exceptions\fR section is used to revert the actions of the + \fIblacklist\fR section. This allows one to selectively include ("whitelist") devices which + would normally be excluded via the \fIblacklist\fR section. A common usage is +@@ -1265,10 +1275,9 @@ unless explicitly stated. + Regular expression matching the device nodes to be excluded/included. + .RS + .PP +-The default \fIblacklist\fR consists of the regular expressions +-"^(ram|zram|raw|loop|fd|md|dm-|sr|scd|st|dcssblk)[0-9]" and +-"^(td|hd|vd)[a-z]". This causes virtual devices, non-disk devices, and some other +-device types to be excluded from multipath handling by default. ++The default \fIblacklist\fR consists of the regular expression ++\fB"!^(sd[a-z]|dasd[a-z]|nvme[0-9])"\fR. This causes all device types other ++than scsi, dasd, and nvme to be excluded from multipath handling by default. + .RE + .TP + .B wwid +diff --git a/tests/blacklist.c b/tests/blacklist.c +index 6e7c1864..d5c40898 100644 +--- a/tests/blacklist.c ++++ b/tests/blacklist.c +@@ -60,20 +60,46 @@ __wrap_udev_list_entry_get_name(struct udev_list_entry *list_entry) + return *(const char **)list_entry; + } + ++vector elist_property_default; ++vector blist_devnode_default; + vector blist_devnode_sdb; ++vector blist_devnode_sdb_inv; + vector blist_all; + vector blist_device_foo_bar; ++vector blist_device_foo_inv_bar; ++vector blist_device_foo_bar_inv; + vector blist_device_all; + vector blist_wwid_xyzzy; ++vector blist_wwid_xyzzy_inv; + vector blist_protocol_fcp; ++vector blist_protocol_fcp_inv; + vector blist_property_wwn; ++vector blist_property_wwn_inv; + + static int setup(void **state) + { ++ struct config conf; ++ ++ memset(&conf, 0, sizeof(conf)); ++ conf.blist_devnode = vector_alloc(); ++ if (!conf.blist_devnode) ++ return -1; ++ conf.elist_property = vector_alloc(); ++ if (!conf.elist_property) ++ return -1; ++ if (setup_default_blist(&conf) != 0) ++ return -1; ++ elist_property_default = conf.elist_property; ++ blist_devnode_default = conf.blist_devnode; ++ + blist_devnode_sdb = vector_alloc(); + if (!blist_devnode_sdb || + store_ble(blist_devnode_sdb, strdup("sdb"), ORIGIN_CONFIG)) + return -1; ++ blist_devnode_sdb_inv = vector_alloc(); ++ if (!blist_devnode_sdb_inv || ++ store_ble(blist_devnode_sdb_inv, strdup("!sdb"), ORIGIN_CONFIG)) ++ return -1; + + blist_all = vector_alloc(); + if (!blist_all || store_ble(blist_all, strdup(".*"), ORIGIN_CONFIG)) +@@ -84,6 +110,18 @@ static int setup(void **state) + set_ble_device(blist_device_foo_bar, strdup("foo"), strdup("bar"), + ORIGIN_CONFIG)) + return -1; ++ blist_device_foo_inv_bar = vector_alloc(); ++ if (!blist_device_foo_inv_bar || ++ alloc_ble_device(blist_device_foo_inv_bar) || ++ set_ble_device(blist_device_foo_inv_bar, strdup("!foo"), ++ strdup("bar"), ORIGIN_CONFIG)) ++ return -1; ++ blist_device_foo_bar_inv = vector_alloc(); ++ if (!blist_device_foo_bar_inv || ++ alloc_ble_device(blist_device_foo_bar_inv) || ++ set_ble_device(blist_device_foo_bar_inv, strdup("foo"), ++ strdup("!bar"), ORIGIN_CONFIG)) ++ return -1; + + blist_device_all = vector_alloc(); + if (!blist_device_all || alloc_ble_device(blist_device_all) || +@@ -95,29 +133,50 @@ static int setup(void **state) + if (!blist_wwid_xyzzy || + store_ble(blist_wwid_xyzzy, strdup("xyzzy"), ORIGIN_CONFIG)) + return -1; ++ blist_wwid_xyzzy_inv = vector_alloc(); ++ if (!blist_wwid_xyzzy_inv || ++ store_ble(blist_wwid_xyzzy_inv, strdup("!xyzzy"), ORIGIN_CONFIG)) ++ return -1; + + blist_protocol_fcp = vector_alloc(); + if (!blist_protocol_fcp || + store_ble(blist_protocol_fcp, strdup("scsi:fcp"), ORIGIN_CONFIG)) + return -1; ++ blist_protocol_fcp_inv = vector_alloc(); ++ if (!blist_protocol_fcp_inv || ++ store_ble(blist_protocol_fcp_inv, strdup("!scsi:fcp"), ++ ORIGIN_CONFIG)) ++ return -1; + + blist_property_wwn = vector_alloc(); + if (!blist_property_wwn || + store_ble(blist_property_wwn, strdup("ID_WWN"), ORIGIN_CONFIG)) + return -1; ++ blist_property_wwn_inv = vector_alloc(); ++ if (!blist_property_wwn_inv || ++ store_ble(blist_property_wwn_inv, strdup("!ID_WWN"), ORIGIN_CONFIG)) ++ return -1; + + return 0; + } + + static int teardown(void **state) + { ++ free_blacklist(elist_property_default); ++ free_blacklist(blist_devnode_default); + free_blacklist(blist_devnode_sdb); ++ free_blacklist(blist_devnode_sdb_inv); + free_blacklist(blist_all); + free_blacklist_device(blist_device_foo_bar); ++ free_blacklist_device(blist_device_foo_inv_bar); ++ free_blacklist_device(blist_device_foo_bar_inv); + free_blacklist_device(blist_device_all); + free_blacklist(blist_wwid_xyzzy); ++ free_blacklist(blist_wwid_xyzzy_inv); + free_blacklist(blist_protocol_fcp); ++ free_blacklist(blist_protocol_fcp_inv); + free_blacklist(blist_property_wwn); ++ free_blacklist(blist_property_wwn_inv); + return 0; + } + +@@ -141,6 +200,11 @@ static void test_devnode_blacklist(void **state) + expect_condlog(3, "sdb: device node name blacklisted\n"); + assert_int_equal(filter_devnode(blist_devnode_sdb, NULL, "sdb"), + MATCH_DEVNODE_BLIST); ++ assert_int_equal(filter_devnode(blist_devnode_sdb_inv, NULL, "sdb"), ++ MATCH_NOTHING); ++ expect_condlog(3, "sdc: device node name blacklisted\n"); ++ assert_int_equal(filter_devnode(blist_devnode_sdb_inv, NULL, "sdc"), ++ MATCH_DEVNODE_BLIST); + } + + static void test_devnode_whitelist(void **state) +@@ -159,12 +223,39 @@ static void test_devnode_missing(void **state) + MATCH_NOTHING); + } + ++static void test_devnode_default(void **state) ++{ ++ assert_int_equal(filter_devnode(blist_devnode_default, NULL, "sdaa"), ++ MATCH_NOTHING); ++ assert_int_equal(filter_devnode(blist_devnode_default, NULL, "nvme0n1"), ++ MATCH_NOTHING); ++ assert_int_equal(filter_devnode(blist_devnode_default, NULL, "dasda"), ++ MATCH_NOTHING); ++ expect_condlog(3, "hda: device node name blacklisted\n"); ++ assert_int_equal(filter_devnode(blist_devnode_default, NULL, "hda"), ++ MATCH_DEVNODE_BLIST); ++} ++ + static void test_device_blacklist(void **state) + { + expect_condlog(3, "sdb: (foo:bar) vendor/product blacklisted\n"); + assert_int_equal(filter_device(blist_device_foo_bar, NULL, "foo", + "bar", "sdb"), + MATCH_DEVICE_BLIST); ++ assert_int_equal(filter_device(blist_device_foo_inv_bar, NULL, "foo", ++ "bar", "sdb"), ++ MATCH_NOTHING); ++ assert_int_equal(filter_device(blist_device_foo_bar_inv, NULL, "foo", ++ "bar", "sdb"), ++ MATCH_NOTHING); ++ expect_condlog(3, "sdb: (baz:bar) vendor/product blacklisted\n"); ++ assert_int_equal(filter_device(blist_device_foo_inv_bar, NULL, "baz", ++ "bar", "sdb"), ++ MATCH_DEVICE_BLIST); ++ expect_condlog(3, "sdb: (foo:baz) vendor/product blacklisted\n"); ++ assert_int_equal(filter_device(blist_device_foo_bar_inv, NULL, "foo", ++ "baz", "sdb"), ++ MATCH_DEVICE_BLIST); + } + + static void test_device_whitelist(void **state) +@@ -191,6 +282,11 @@ static void test_wwid_blacklist(void **state) + expect_condlog(3, "sdb: wwid xyzzy blacklisted\n"); + assert_int_equal(filter_wwid(blist_wwid_xyzzy, NULL, "xyzzy", "sdb"), + MATCH_WWID_BLIST); ++ assert_int_equal(filter_wwid(blist_wwid_xyzzy_inv, NULL, "xyzzy", ++ "sdb"), MATCH_NOTHING); ++ expect_condlog(3, "sdb: wwid plugh blacklisted\n"); ++ assert_int_equal(filter_wwid(blist_wwid_xyzzy_inv, NULL, "plugh", ++ "sdb"), MATCH_WWID_BLIST); + } + + static void test_wwid_whitelist(void **state) +@@ -218,6 +314,12 @@ static void test_protocol_blacklist(void **state) + expect_condlog(3, "sdb: protocol scsi:fcp blacklisted\n"); + assert_int_equal(filter_protocol(blist_protocol_fcp, NULL, &pp), + MATCH_PROTOCOL_BLIST); ++ assert_int_equal(filter_protocol(blist_protocol_fcp_inv, NULL, &pp), ++ MATCH_NOTHING); ++ pp.sg_id.proto_id = SCSI_PROTOCOL_ATA; ++ expect_condlog(3, "sdb: protocol scsi:ata blacklisted\n"); ++ assert_int_equal(filter_protocol(blist_protocol_fcp_inv, NULL, &pp), ++ MATCH_PROTOCOL_BLIST); + } + + static void test_protocol_whitelist(void **state) +@@ -245,10 +347,17 @@ static void test_protocol_missing(void **state) + static void test_property_blacklist(void **state) + { + static struct udev_device udev = { "sdb", { "ID_FOO", "ID_WWN", "ID_BAR", NULL } }; ++ static struct udev_device udev_inv = { "sdb", { "ID_WWN", NULL } }; + conf.blist_property = blist_property_wwn; + expect_condlog(3, "sdb: udev property ID_WWN blacklisted\n"); + assert_int_equal(filter_property(&conf, &udev, 3, "ID_SERIAL"), + MATCH_PROPERTY_BLIST); ++ conf.blist_property = blist_property_wwn_inv; ++ expect_condlog(3, "sdb: udev property ID_FOO blacklisted\n"); ++ assert_int_equal(filter_property(&conf, &udev, 3, "ID_SERIAL"), ++ MATCH_PROPERTY_BLIST); ++ assert_int_equal(filter_property(&conf, &udev_inv, 3, "ID_SERIAL"), ++ MATCH_NOTHING); + } + + /* the property check works different in that you check all the property +@@ -484,6 +593,7 @@ int test_blacklist(void) + cmocka_unit_test(test_devnode_blacklist), + cmocka_unit_test(test_devnode_whitelist), + cmocka_unit_test(test_devnode_missing), ++ cmocka_unit_test(test_devnode_default), + cmocka_unit_test(test_device_blacklist), + cmocka_unit_test(test_device_whitelist), + cmocka_unit_test(test_device_missing), +diff --git a/tests/test-lib.c b/tests/test-lib.c +index 00bae58e..b7c09cc2 100644 +--- a/tests/test-lib.c ++++ b/tests/test-lib.c +@@ -15,7 +15,7 @@ + #include "test-lib.h" + + const int default_mask = (DI_SYSFS|DI_BLACKLIST|DI_WWID|DI_CHECKER|DI_PRIO); +-const char default_devnode[] = "sdTEST"; ++const char default_devnode[] = "sdxTEST"; + const char default_wwid[] = "TEST-WWID"; + /* default_wwid should be a substring of default_wwid_1! */ + const char default_wwid_1[] = "TEST-WWID-1"; +-- +2.17.2 + diff --git a/0036-libmultipath-fix-enum-misuse-for-find_multipaths.patch b/0036-libmultipath-fix-enum-misuse-for-find_multipaths.patch deleted file mode 100644 index 05c3b2c..0000000 --- a/0036-libmultipath-fix-enum-misuse-for-find_multipaths.patch +++ /dev/null @@ -1,26 +0,0 @@ -From fb87e6e9d5778c9b2874496ff6e44c0001a3c228 Mon Sep 17 00:00:00 2001 -From: Martin Wilck -Date: Tue, 8 Jan 2019 23:54:05 +0100 -Subject: [PATCH] libmultipath(coverity): fix "enum misuse" for find_multipaths - -Signed-off-by: Martin Wilck ---- - libmultipath/dict.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libmultipath/dict.c b/libmultipath/dict.c -index fd29abca..eaad4f18 100644 ---- a/libmultipath/dict.c -+++ b/libmultipath/dict.c -@@ -327,7 +327,7 @@ def_find_multipaths_handler(struct config *conf, vector strvec) - int i; - - if (set_yes_no_undef(strvec, &conf->find_multipaths) == 0 && -- conf->find_multipaths != YNU_UNDEF) -+ conf->find_multipaths != FIND_MULTIPATHS_UNDEF) - return 0; - - buff = set_value(strvec); --- -2.11.0 - diff --git a/0036-multipath-Fix-compiler-warnings-when-built-without-s.patch b/0036-multipath-Fix-compiler-warnings-when-built-without-s.patch new file mode 100644 index 0000000..f631fdb --- /dev/null +++ b/0036-multipath-Fix-compiler-warnings-when-built-without-s.patch @@ -0,0 +1,111 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Marius Bakke +Date: Wed, 17 Jun 2020 01:11:26 +0200 +Subject: [PATCH] multipath: Fix compiler warnings when built without systemd. + +Add ifdef guards for code that is unused when systemd is not available. + +Signed-off-by: Benjamin Marzinski +--- + libmultipath/config.c | 6 ++++-- + multipathd/main.c | 10 +++++++++- + 2 files changed, 13 insertions(+), 3 deletions(-) + +diff --git a/libmultipath/config.c b/libmultipath/config.c +index b4d87689..658bec8b 100644 +--- a/libmultipath/config.c ++++ b/libmultipath/config.c +@@ -696,9 +696,9 @@ process_config_dir(struct config *conf, char *dir) + pthread_cleanup_pop(1); + } + ++#ifdef USE_SYSTEMD + static void set_max_checkint_from_watchdog(struct config *conf) + { +-#ifdef USE_SYSTEMD + char *envp = getenv("WATCHDOG_USEC"); + unsigned long checkint; + +@@ -714,8 +714,8 @@ static void set_max_checkint_from_watchdog(struct config *conf) + condlog(3, "enabling watchdog, interval %ld", checkint); + conf->use_watchdog = true; + } +-#endif + } ++#endif + + struct config * + load_config (char * file) +@@ -789,7 +789,9 @@ load_config (char * file) + /* + * fill the voids left in the config file + */ ++#ifdef USE_SYSTEMD + set_max_checkint_from_watchdog(conf); ++#endif + if (conf->max_checkint == 0) { + if (conf->checkint == CHECKINT_UNDEF) + conf->checkint = DEFAULT_CHECKINT; +diff --git a/multipathd/main.c b/multipathd/main.c +index 6b7db2c0..205ddb32 100644 +--- a/multipathd/main.c ++++ b/multipathd/main.c +@@ -176,6 +176,7 @@ daemon_status(void) + /* + * I love you too, systemd ... + */ ++#ifdef USE_SYSTEMD + static const char * + sd_notify_status(enum daemon_status state) + { +@@ -195,7 +196,6 @@ sd_notify_status(enum daemon_status state) + return NULL; + } + +-#ifdef USE_SYSTEMD + static void do_sd_notify(enum daemon_status old_state, + enum daemon_status new_state) + { +@@ -247,7 +247,9 @@ enum daemon_status wait_for_state_change_if(enum daemon_status oldstate, + static void __post_config_state(enum daemon_status state) + { + if (state != running_state && running_state != DAEMON_SHUTDOWN) { ++#ifdef USE_SYSTEMD + enum daemon_status old_state = running_state; ++#endif + + running_state = state; + pthread_cond_broadcast(&config_cond); +@@ -272,7 +274,9 @@ int set_config_state(enum daemon_status state) + pthread_cleanup_push(config_cleanup, NULL); + pthread_mutex_lock(&config_lock); + if (running_state != state) { ++#ifdef USE_SYSTEMD + enum daemon_status old_state = running_state; ++#endif + + if (running_state == DAEMON_SHUTDOWN) + rc = EINVAL; +@@ -2280,7 +2284,9 @@ checkerloop (void *ap) + struct timespec last_time; + struct config *conf; + int foreign_tick = 0; ++#ifdef USE_SYSTEMD + bool use_watchdog; ++#endif + + pthread_cleanup_push(rcu_unregister, NULL); + rcu_register_thread(); +@@ -2294,7 +2300,9 @@ checkerloop (void *ap) + + /* use_watchdog is set from process environment and never changes */ + conf = get_multipath_config(); ++#ifdef USE_SYSTEMD + use_watchdog = conf->use_watchdog; ++#endif + put_multipath_config(conf); + + while (1) { +-- +2.17.2 + diff --git a/0037-libmultipath-fix-possible-NULL-dereference.patch b/0037-libmultipath-fix-possible-NULL-dereference.patch deleted file mode 100644 index b21fbf7..0000000 --- a/0037-libmultipath-fix-possible-NULL-dereference.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 7ec04256a56709963e8b954fc6036ca6ba1db137 Mon Sep 17 00:00:00 2001 -From: Martin Wilck -Date: Tue, 8 Jan 2019 23:54:09 +0100 -Subject: [PATCH] libmultipath(coverity): fix possible NULL dereference - -coverity warns that recv_packet may set reply to NULL. - -Signed-off-by: Martin Wilck ---- - libmultipath/configure.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libmultipath/configure.c b/libmultipath/configure.c -index 39d2a956..af4d78de 100644 ---- a/libmultipath/configure.c -+++ b/libmultipath/configure.c -@@ -1041,7 +1041,7 @@ int check_daemon(void) - if (recv_packet(fd, &reply, timeout) != 0) - goto out; - -- if (strstr(reply, "shutdown")) -+ if (reply && strstr(reply, "shutdown")) - goto out_free; - - ret = 1; --- -2.11.0 - diff --git a/0037-libmultipath-fix-sysfs-dev_loss_tmo-parsing.patch b/0037-libmultipath-fix-sysfs-dev_loss_tmo-parsing.patch new file mode 100644 index 0000000..0888750 --- /dev/null +++ b/0037-libmultipath-fix-sysfs-dev_loss_tmo-parsing.patch @@ -0,0 +1,43 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Thu, 2 Jul 2020 19:38:24 -0500 +Subject: [PATCH] libmultipath: fix sysfs dev_loss_tmo parsing + +dev_loss_tmo is a u32 value. However the kernel sysfs code prints it as +a signed integer. This means that if dev_loss_tmo is above INT_MAX, the +sysfs value will be a negative number. Parsing this was causing +sysfs_set_rport_tmo() to fail. + +Signed-off-by: Benjamin Marzinski +Signed-off-by: Martin Wilck +--- + libmultipath/discovery.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c +index ffec5162..83a41a4a 100644 +--- a/libmultipath/discovery.c ++++ b/libmultipath/discovery.c +@@ -583,7 +583,7 @@ sysfs_set_rport_tmo(struct multipath *mpp, struct path *pp) + struct udev_device *rport_dev = NULL; + char value[16], *eptr; + char rport_id[32]; +- unsigned long long tmo = 0; ++ unsigned int tmo; + int ret; + + sprintf(rport_id, "rport-%d:%d-%d", +@@ -607,8 +607,8 @@ sysfs_set_rport_tmo(struct multipath *mpp, struct path *pp) + "error %d", rport_id, -ret); + goto out; + } +- tmo = strtoull(value, &eptr, 0); +- if (value == eptr || tmo == ULLONG_MAX) { ++ tmo = strtoul(value, &eptr, 0); ++ if (value == eptr) { + condlog(0, "%s: Cannot parse dev_loss_tmo " + "attribute '%s'", rport_id, value); + goto out; +-- +2.17.2 + diff --git a/0038-fix-syntax-error.patch b/0038-fix-syntax-error.patch deleted file mode 100644 index 8a4f6d5..0000000 --- a/0038-fix-syntax-error.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 8e4c5a421ee351fe667b0bf8b99e691ab5c9c13b Mon Sep 17 00:00:00 2001 -From: wangjufeng -Date: Fri, 1 Nov 2019 16:48:49 +0800 -Subject: [PATCH] fix syntax error - ---- - Makefile.inc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Makefile.inc b/Makefile.inc -index 5ff69a3..3744aa4 100644 ---- a/Makefile.inc -+++ b/Makefile.inc -@@ -40,7 +40,7 @@ endif - - ifndef SYSTEMD - ifeq ($(shell systemctl --version > /dev/null 2>&1 && echo 1), 1) -- SYSTEMD = $(shell systemctl --version 2> /dev/null | sed -n 's/systemd \([0-9]*\)/\1/p') -+ SYSTEMD = $(shell systemctl --version 2> /dev/null | sed -n 's/systemd\([0-9]*\)/\1/p' | awk '{print $$1}') - endif - endif - --- -2.19.1 - diff --git a/0038-kpartx-read-devices-with-direct-IO.patch b/0038-kpartx-read-devices-with-direct-IO.patch new file mode 100644 index 0000000..eaa91c3 --- /dev/null +++ b/0038-kpartx-read-devices-with-direct-IO.patch @@ -0,0 +1,267 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Thu, 2 Jul 2020 19:38:25 -0500 +Subject: [PATCH] kpartx: read devices with direct IO + +If kpartx is used on top of shared storage, and a device has its +partition table changed on one machine, and then kpartx is run on +another, it may not see the new data, because the cache still contains +the old data, and there is nothing to tell the machine running kpartx to +invalidate it. To solve this, kpartx should read the devices using +direct io. + +One issue with how this code has been updated is that the original code +for getblock() always read 1024 bytes. The new code reads a logical +sector size chunk of the device, and returns a pointer to the 512 byte +sector that the caller asked for, within that (possibly larger) chunk. +This means that if the logical sector size is 512, then the code is now +only reading 512 bytes. Looking through the code for the various +partition types, I can't see a case where more than 512 bytes is needed +and getblock() is used. If anyone has a reason why this code should be +reading 1024 bytes at minmum, I can certainly change this. But when I +looked, I couldn't find a case where reading 512 bytes would cause a +problem. + +Signed-off-by: Benjamin Marzinski +--- + kpartx/dasd.c | 7 ++++--- + kpartx/gpt.c | 22 +++++++++---------- + kpartx/kpartx.c | 56 +++++++++++++++++++++++++++++++++++++++---------- + kpartx/kpartx.h | 2 ++ + 4 files changed, 61 insertions(+), 26 deletions(-) + +diff --git a/kpartx/dasd.c b/kpartx/dasd.c +index 14b9d3aa..f0398645 100644 +--- a/kpartx/dasd.c ++++ b/kpartx/dasd.c +@@ -22,6 +22,7 @@ + * along with this program. If not, see . + */ + ++#define _GNU_SOURCE + #include + #include + #include +@@ -117,13 +118,13 @@ read_dasd_pt(int fd, __attribute__((unused)) struct slice all, + + sprintf(pathname, "/dev/.kpartx-node-%u-%u", + (unsigned int)major(dev), (unsigned int)minor(dev)); +- if ((fd_dasd = open(pathname, O_RDONLY)) == -1) { ++ if ((fd_dasd = open(pathname, O_RDONLY | O_DIRECT)) == -1) { + /* Devicenode does not exist. Try to create one */ + if (mknod(pathname, 0600 | S_IFBLK, dev) == -1) { + /* Couldn't create a device node */ + return -1; + } +- fd_dasd = open(pathname, O_RDONLY); ++ fd_dasd = open(pathname, O_RDONLY | O_DIRECT); + /* + * The file will vanish when the last process (we) + * has ceased to access it. +@@ -175,7 +176,7 @@ read_dasd_pt(int fd, __attribute__((unused)) struct slice all, + * Get volume label, extract name and type. + */ + +- if (!(data = (unsigned char *)malloc(blocksize))) ++ if (aligned_malloc((void **)&data, blocksize, NULL)) + goto out; + + +diff --git a/kpartx/gpt.c b/kpartx/gpt.c +index 785b34ea..f7fefb70 100644 +--- a/kpartx/gpt.c ++++ b/kpartx/gpt.c +@@ -243,8 +243,7 @@ alloc_read_gpt_entries(int fd, gpt_header * gpt) + + if (!count) return NULL; + +- pte = (gpt_entry *)malloc(count); +- if (!pte) ++ if (aligned_malloc((void **)&pte, get_sector_size(fd), &count)) + return NULL; + memset(pte, 0, count); + +@@ -269,12 +268,11 @@ static gpt_header * + alloc_read_gpt_header(int fd, uint64_t lba) + { + gpt_header *gpt; +- gpt = (gpt_header *) +- malloc(sizeof (gpt_header)); +- if (!gpt) ++ size_t size = sizeof (gpt_header); ++ if (aligned_malloc((void **)&gpt, get_sector_size(fd), &size)) + return NULL; +- memset(gpt, 0, sizeof (*gpt)); +- if (!read_lba(fd, lba, gpt, sizeof (gpt_header))) { ++ memset(gpt, 0, size); ++ if (!read_lba(fd, lba, gpt, size)) { + free(gpt); + return NULL; + } +@@ -498,6 +496,7 @@ find_valid_gpt(int fd, gpt_header ** gpt, gpt_entry ** ptes) + gpt_header *pgpt = NULL, *agpt = NULL; + gpt_entry *pptes = NULL, *aptes = NULL; + legacy_mbr *legacymbr = NULL; ++ size_t size = sizeof(legacy_mbr); + uint64_t lastlba; + if (!gpt || !ptes) + return 0; +@@ -526,11 +525,10 @@ find_valid_gpt(int fd, gpt_header ** gpt, gpt_entry ** ptes) + } + + /* This will be added to the EFI Spec. per Intel after v1.02. */ +- legacymbr = malloc(sizeof (*legacymbr)); +- if (legacymbr) { +- memset(legacymbr, 0, sizeof (*legacymbr)); +- read_lba(fd, 0, (uint8_t *) legacymbr, +- sizeof (*legacymbr)); ++ if (aligned_malloc((void **)&legacymbr, get_sector_size(fd), ++ &size) == 0) { ++ memset(legacymbr, 0, size); ++ read_lba(fd, 0, (uint8_t *) legacymbr, size); + good_pmbr = is_pmbr_valid(legacymbr); + free(legacymbr); + legacymbr=NULL; +diff --git a/kpartx/kpartx.c b/kpartx/kpartx.c +index d3620c5c..c24ad6d9 100644 +--- a/kpartx/kpartx.c ++++ b/kpartx/kpartx.c +@@ -19,6 +19,7 @@ + * cva, 2002-10-26 + */ + ++#define _GNU_SOURCE + #include + #include + #include +@@ -41,7 +42,6 @@ + + #define SIZE(a) (sizeof(a)/sizeof((a)[0])) + +-#define READ_SIZE 1024 + #define MAXTYPES 64 + #define MAXSLICES 256 + #define DM_TARGET "linear" +@@ -388,7 +388,7 @@ main(int argc, char **argv){ + set_delimiter(mapname, delim); + } + +- fd = open(device, O_RDONLY); ++ fd = open(device, O_RDONLY | O_DIRECT); + + if (fd == -1) { + perror(device); +@@ -690,9 +690,9 @@ xmalloc (size_t size) { + */ + + static int +-sseek(int fd, unsigned int secnr) { ++sseek(int fd, unsigned int secnr, int secsz) { + off64_t in, out; +- in = ((off64_t) secnr << 9); ++ in = ((off64_t) secnr * secsz); + out = 1; + + if ((out = lseek64(fd, in, SEEK_SET)) != in) +@@ -703,6 +703,31 @@ sseek(int fd, unsigned int secnr) { + return 0; + } + ++int ++aligned_malloc(void **mem_p, size_t align, size_t *size_p) ++{ ++ static size_t pgsize = 0; ++ size_t size; ++ int err; ++ ++ if (!mem_p || !align || (size_p && !*size_p)) ++ return EINVAL; ++ ++ if (!pgsize) ++ pgsize = getpagesize(); ++ ++ if (size_p) ++ size = ((*size_p + align - 1) / align) * align; ++ else ++ size = pgsize; ++ ++ err = posix_memalign(mem_p, pgsize, size); ++ if (!err && size_p) ++ *size_p = size; ++ return err; ++} ++ ++/* always in sector size blocks */ + static + struct block { + unsigned int secnr; +@@ -710,30 +735,39 @@ struct block { + struct block *next; + } *blockhead; + ++/* blknr is always in 512 byte blocks */ + char * +-getblock (int fd, unsigned int secnr) { ++getblock (int fd, unsigned int blknr) { ++ unsigned int secsz = get_sector_size(fd); ++ unsigned int blks_per_sec = secsz / 512; ++ unsigned int secnr = blknr / blks_per_sec; ++ unsigned int blk_off = (blknr % blks_per_sec) * 512; + struct block *bp; + + for (bp = blockhead; bp; bp = bp->next) + + if (bp->secnr == secnr) +- return bp->block; ++ return bp->block + blk_off; + +- if (sseek(fd, secnr)) ++ if (sseek(fd, secnr, secsz)) + return NULL; + + bp = xmalloc(sizeof(struct block)); + bp->secnr = secnr; + bp->next = blockhead; + blockhead = bp; +- bp->block = (char *) xmalloc(READ_SIZE); ++ if (aligned_malloc((void **)&bp->block, secsz, NULL)) { ++ fprintf(stderr, "aligned_malloc failed\n"); ++ exit(1); ++ } + +- if (read(fd, bp->block, READ_SIZE) != READ_SIZE) { ++ if (read(fd, bp->block, secsz) != secsz) { + fprintf(stderr, "read error, sector %d\n", secnr); +- bp->block = NULL; ++ blockhead = bp->next; ++ return NULL; + } + +- return bp->block; ++ return bp->block + blk_off; + } + + int +diff --git a/kpartx/kpartx.h b/kpartx/kpartx.h +index 67edeb82..727632c1 100644 +--- a/kpartx/kpartx.h ++++ b/kpartx/kpartx.h +@@ -1,6 +1,7 @@ + #ifndef _KPARTX_H + #define _KPARTX_H + ++#include + #include + #include + +@@ -61,6 +62,7 @@ extern ptreader read_mac_pt; + extern ptreader read_sun_pt; + extern ptreader read_ps3_pt; + ++int aligned_malloc(void **mem_p, size_t align, size_t *size_p); + char *getblock(int fd, unsigned int secnr); + + static inline unsigned int +-- +2.17.2 + diff --git a/0039-bugfix-change-log-level-to-info-if-alua-is-not-support-by-s.patch b/0039-bugfix-change-log-level-to-info-if-alua-is-not-support-by-s.patch deleted file mode 100644 index 6a0944a..0000000 --- a/0039-bugfix-change-log-level-to-info-if-alua-is-not-support-by-s.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 0008a2343765ab689cfc66acd8fc84630611d796 Mon Sep 17 00:00:00 2001 -From: root -Date: Fri, 22 Mar 2019 19:37:43 +0800 -Subject: [PATCH 1/5] change log level to info if alua is not support by - storage server - ---- - libmultipath/prioritizers/alua.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libmultipath/prioritizers/alua.c b/libmultipath/prioritizers/alua.c -index 1400b11..6b69982 100644 ---- a/libmultipath/prioritizers/alua.c -+++ b/libmultipath/prioritizers/alua.c -@@ -127,7 +127,7 @@ int getprio (struct path * pp, char * args, unsigned int timeout) - } else { - switch(-rc) { - case ALUA_PRIO_NOT_SUPPORTED: -- condlog(0, "%s: alua not supported", pp->dev); -+ condlog(3, "%s: alua not supported", pp->dev); - rc = 0; - break; - case ALUA_PRIO_RTPG_FAILED: --- -2.19.1 - diff --git a/0039-kpartx-handle-alternate-bsd-disklabel-location.patch b/0039-kpartx-handle-alternate-bsd-disklabel-location.patch new file mode 100644 index 0000000..4b6e7e5 --- /dev/null +++ b/0039-kpartx-handle-alternate-bsd-disklabel-location.patch @@ -0,0 +1,53 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Thu, 2 Jul 2020 19:38:26 -0500 +Subject: [PATCH] kpartx: handle alternate bsd disklabel location + +bsd disk labels can either be at the start of the second sector, or 64 +bytes into the first sector, but kpartx only handled the first case. +However the second case is what parted creates, and what the linux +kernel partition code expects. kpartx should handle both cases. + +Reviewed-by: Martin Wilck +Signed-off-by: Benjamin Marzinski +--- + kpartx/bsd.c | 16 ++++++++++++++-- + 1 file changed, 14 insertions(+), 2 deletions(-) + +diff --git a/kpartx/bsd.c b/kpartx/bsd.c +index 0e661fbc..950b0f92 100644 +--- a/kpartx/bsd.c ++++ b/kpartx/bsd.c +@@ -1,6 +1,7 @@ + #include "kpartx.h" + #include + ++#define BSD_LABEL_OFFSET 64 + #define BSD_DISKMAGIC (0x82564557UL) /* The disk magic number */ + #define XBSD_MAXPARTITIONS 16 + #define BSD_FS_UNUSED 0 +@@ -60,8 +61,19 @@ read_bsd_pt(int fd, struct slice all, struct slice *sp, unsigned int ns) { + return -1; + + l = (struct bsd_disklabel *) bp; +- if (l->d_magic != BSD_DISKMAGIC) +- return -1; ++ if (l->d_magic != BSD_DISKMAGIC) { ++ /* ++ * BSD disklabels can also start 64 bytes offset from the ++ * start of the first sector ++ */ ++ bp = getblock(fd, offset); ++ if (bp == NULL) ++ return -1; ++ ++ l = (struct bsd_disklabel *)(bp + 64); ++ if (l->d_magic != BSD_DISKMAGIC) ++ return -1; ++ } + + max_partitions = 16; + if (l->d_npartitions < max_partitions) +-- +2.17.2 + diff --git a/0040-bugfix-clear-mpp-path-reference-when-path-is-freed-otherwis.patch b/0040-bugfix-clear-mpp-path-reference-when-path-is-freed-otherwis.patch deleted file mode 100644 index 3de1359..0000000 --- a/0040-bugfix-clear-mpp-path-reference-when-path-is-freed-otherwis.patch +++ /dev/null @@ -1,139 +0,0 @@ -From 2c3047d7f6bd8cdd1d92cab32893cecdd5a1dfa9 Mon Sep 17 00:00:00 2001 -From: root -Date: Fri, 22 Mar 2019 19:48:35 +0800 -Subject: [PATCH] clear mpp path reference when path is freed, otherwise double - free may occur in verify_paths. - -call stack: - vecs=vecs@entry=0x557b01d62140, rpvec=rpvec@entry=0x0) at structs_vec.c:521 - at main.c:574 - uev=) at main.c:510 - uev_trigger=uev_trigger@entry=0x557affdfe3d0 , trigger_data=) - at uevent.c:178 ---- - libmultipath/discovery.c | 10 ++++++---- - libmultipath/discovery.h | 2 +- - multipathd/main.c | 23 ++++++++++++++++++++++- - 3 files changed, 29 insertions(+), 6 deletions(-) - -diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c -index 53fc67a..305d27c 100644 ---- a/libmultipath/discovery.c -+++ b/libmultipath/discovery.c -@@ -112,7 +112,7 @@ transport (int h) - } - - int --remove_local_path (vector pathvec, struct path *pp) -+remove_local_path (vector pathvec, struct path *pp, int isfree) - { - int i = -1; - -@@ -127,7 +127,9 @@ remove_local_path (vector pathvec, struct path *pp) - if ((i = find_slot(pathvec, (void *)pp)) != -1) { - vector_del_slot(pathvec, i); - } -- free_path(pp); -+ if(isfree){ -+ free_path(pp); -+ } - return 0; - } - -@@ -235,7 +237,7 @@ path_discover (vector pathvec, struct config * conf, - if (err == 1) - return 1; - if (err == 0) -- remove_local_path(pathvec, pp); -+ remove_local_path(pathvec, pp, 1); - return 0; - } - } -@@ -243,7 +245,7 @@ path_discover (vector pathvec, struct config * conf, - if (err) - return err; - -- remove_local_path(pathvec, pp); -+ remove_local_path(pathvec, pp, 1); - return err; - } - -diff --git a/libmultipath/discovery.h b/libmultipath/discovery.h -index c4b1d25..0fb0d3a 100644 ---- a/libmultipath/discovery.h -+++ b/libmultipath/discovery.h -@@ -53,7 +53,7 @@ ssize_t sysfs_get_vpd (struct udev_device * udev, int pg, unsigned char * buff, - int sysfs_get_asymmetric_access_state(struct path *pp, - char *buff, int buflen); - int get_uid(struct path * pp, int path_state, struct udev_device *udev); --int remove_local_path(vector pathvec, struct path *pp); -+int remove_local_path(vector pathvec, struct path *pp, int isfree); - - /* - * discovery bitmask -diff --git a/multipathd/main.c b/multipathd/main.c -index b180f2a..8de0871 100644 ---- a/multipathd/main.c -+++ b/multipathd/main.c -@@ -815,6 +815,21 @@ ev_remove_map (char * devname, char * alias, int minor, struct vectors * vecs) - return flush_map(mpp, vecs, 0); - } - -+static -+void clear_ref_from_mpp(struct path * pp, struct vectors * vecs) -+{ -+ struct multipath * mpp = NULL; -+ int i = -1; -+ -+ mpp = find_mp_by_wwid(vecs->mpvec, pp->wwid); -+ if(!!mpp){ -+ condlog(2, "%s: clear path from mpp %s", pp->dev, mpp->alias); -+ if ((i = find_slot(mpp->paths, (void *)pp)) != -1){ -+ vector_del_slot(mpp->paths, i); -+ } -+ } -+} -+ - static int - uev_add_path (struct uevent *uev, struct vectors * vecs, int need_do_map) - { -@@ -857,6 +872,7 @@ uev_add_path (struct uevent *uev, struct vectors * vecs, int need_do_map) - i = find_slot(vecs->pathvec, (void *)pp); - if (i != -1) - vector_del_slot(vecs->pathvec, i); -+ clear_ref_from_mpp(pp, vecs); - free_path(pp); - } else { - condlog(0, "%s: failed to reinitialize path", -@@ -918,8 +934,11 @@ ev_add_path (struct path * pp, struct vectors * vecs, int need_do_map) - int ret; - - /* if pp is local path,remove it and return 0. */ -- if (!remove_local_path(vecs->pathvec, pp)) -+ if (!remove_local_path(vecs->pathvec, pp, 0)){ -+ clear_ref_from_mpp(pp, vecs); -+ free_path(pp); - return 0; -+ } - - /* - * need path UID to go any further -@@ -950,6 +969,7 @@ rescan: - int i = find_slot(vecs->pathvec, (void *)pp); - if (i != -1) - vector_del_slot(vecs->pathvec, i); -+ clear_ref_from_mpp(pp, vecs); - free_path(pp); - return 1; - } -@@ -1182,6 +1202,7 @@ out: - if ((i = find_slot(vecs->pathvec, (void *)pp)) != -1) - vector_del_slot(vecs->pathvec, i); - -+ clear_ref_from_mpp(pp, vecs); - free_path(pp); - - return retval; --- -2.19.1 - diff --git a/0040-libmultipath-fix-checker-detection-for-nvme-devices.patch b/0040-libmultipath-fix-checker-detection-for-nvme-devices.patch new file mode 100644 index 0000000..1054e30 --- /dev/null +++ b/0040-libmultipath-fix-checker-detection-for-nvme-devices.patch @@ -0,0 +1,62 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Thu, 2 Jul 2020 19:38:27 -0500 +Subject: [PATCH] libmultipath: fix checker detection for nvme devices + +In order to fix hwhandler autodetection, commit 8794a776 made +detect_alua() differentiate between failures to detect whether alua was +supported, and successfully detecting that it was not supported. +However, this causes nvme devices to get the TUR checker assigned to +them. This is because there is nothing in detect_alua() to make it only +work on scsi devices, and select_checker wasn't updated to handle +detect_alua() failing without setting pp->tpgs to TPGS_NONE. + +detect_alua() should automatically set pp->tpgs to TPGS_NONE and exit on +non-scsi devices. Also, select_checker() should not assume that a +devices is ALUA, simply because if failed to detect if alua was +supported. + +Fixes: 8794a776 "libmultipath: fix ALUA autodetection when paths are + down" +Reviewed-by: Martin Wilck +Signed-off-by: Benjamin Marzinski +--- + libmultipath/discovery.c | 6 ++++++ + libmultipath/propsel.c | 4 +++- + 2 files changed, 9 insertions(+), 1 deletion(-) + +diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c +index 83a41a4a..aa5942c3 100644 +--- a/libmultipath/discovery.c ++++ b/libmultipath/discovery.c +@@ -887,6 +887,12 @@ detect_alua(struct path * pp) + int tpgs; + unsigned int timeout; + ++ ++ if (pp->bus != SYSFS_BUS_SCSI) { ++ pp->tpgs = TPGS_NONE; ++ return; ++ } ++ + if (sysfs_get_timeout(pp, &timeout) <= 0) + timeout = DEF_TIMEOUT; + +diff --git a/libmultipath/propsel.c b/libmultipath/propsel.c +index 897e48ca..d362beb4 100644 +--- a/libmultipath/propsel.c ++++ b/libmultipath/propsel.c +@@ -521,7 +521,9 @@ int select_checker(struct config *conf, struct path *pp) + if (check_rdac(pp)) { + ckr_name = RDAC; + goto out; +- } else if (path_get_tpgs(pp) != TPGS_NONE) { ++ } ++ path_get_tpgs(pp); ++ if (pp->tpgs != TPGS_NONE && pp->tpgs != TPGS_UNDEF) { + ckr_name = TUR; + goto out; + } +-- +2.17.2 + diff --git a/0041-bugfix-libmultipath-fix-memory-leaks-from-scandir-use.patch b/0041-bugfix-libmultipath-fix-memory-leaks-from-scandir-use.patch deleted file mode 100644 index 8cf6a2f..0000000 --- a/0041-bugfix-libmultipath-fix-memory-leaks-from-scandir-use.patch +++ /dev/null @@ -1,91 +0,0 @@ -From a10343b550f56c6c39c6a9b8f9ad38ab825a3fa3 Mon Sep 17 00:00:00 2001 -From: root -Date: Fri, 22 Mar 2019 19:58:56 +0800 -Subject: [PATCH 3/5] libmultipath: fix memory leaks from scandir() use - -upstream commit b0e8a7456dd83cd0a5ecd1005e016656e785405f - -scandir() users must not only free the resulting dirent* array, -but also every member. Add a cleanup function, and fix the -existing users of scandir() in libmultipath. - -Add a small helper macro for casting function pointers to the -type pthread_cleanup_push() expects. ---- - libmultipath/config.c | 10 ++++------ - libmultipath/util.c | 9 +++++++++ - libmultipath/util.h | 8 ++++++++ - 3 files changed, 21 insertions(+), 6 deletions(-) - -diff --git a/libmultipath/config.c b/libmultipath/config.c -index bfd07e3..654f330 100644 ---- a/libmultipath/config.c -+++ b/libmultipath/config.c -@@ -640,17 +640,13 @@ free_config (struct config * conf) - FREE(conf); - } - --static void free_namelist(void *nl) --{ -- free(nl); --} -- - /* if multipath fails to process the config directory, it should continue, - * with just a warning message */ - static void - process_config_dir(struct config *conf, vector keywords, char *dir) - { - struct dirent **namelist; -+ struct scandir_result sr; - int i, n; - char path[LINE_MAX]; - int old_hwtable_size; -@@ -670,7 +666,9 @@ process_config_dir(struct config *conf, vector keywords, char *dir) - return; - } else if (n == 0) - return; -- pthread_cleanup_push(free_namelist, namelist); -+ sr.di = namelist; -+ sr.n = n; -+ pthread_cleanup_push_cast(free_scandir_result, &sr); - for (i = 0; i < n; i++) { - if (!strstr(namelist[i]->d_name, ".conf")) - continue; -diff --git a/libmultipath/util.c b/libmultipath/util.c -index 3c284b7..2bb1102 100644 ---- a/libmultipath/util.c -+++ b/libmultipath/util.c -@@ -472,3 +472,12 @@ int safe_write(int fd, const void *buf, size_t count) - - return 0; - } -+ -+void free_scandir_result(struct scandir_result *res) -+{ -+ int i; -+ -+ for (i = 0; i < res->n; i++) -+ FREE(res->di[i]); -+ FREE(res->di); -+} -diff --git a/libmultipath/util.h b/libmultipath/util.h -index 56cec76..4374720 100644 ---- a/libmultipath/util.h -+++ b/libmultipath/util.h -@@ -28,5 +28,13 @@ int safe_write(int fd, const void *buf, size_t count); - snprintf(var, sizeof(var), format, ##args) >= sizeof(var) - #define safe_snprintf(var, size, format, args...) \ - snprintf(var, size, format, ##args) >= size -+#define pthread_cleanup_push_cast(f, arg) \ -+ pthread_cleanup_push(((void (*)(void *))&f), (arg)) -+ -+struct scandir_result { -+ struct dirent **di; -+ int n; -+}; -+void free_scandir_result(struct scandir_result *); - - #endif /* _UTIL_H */ --- -2.19.1 - diff --git a/0041-libmultipath-make-dm_get_map-status-return-codes-sym.patch b/0041-libmultipath-make-dm_get_map-status-return-codes-sym.patch new file mode 100644 index 0000000..91c9a8b --- /dev/null +++ b/0041-libmultipath-make-dm_get_map-status-return-codes-sym.patch @@ -0,0 +1,322 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Thu, 2 Jul 2020 19:07:00 -0500 +Subject: [PATCH] libmultipath: make dm_get_map/status return codes symbolic + +dm_get_map() and dm_get_status() now use symbolic return codes. They +also differentiate between failing to get information from device-mapper +and not finding the requested device. These symboilc return codes are +also used by update_multipath_* functions. + +Signed-off-by: Benjamin Marzinski +--- + libmultipath/devmapper.c | 51 +++++++++++++++++++++++++------------- + libmultipath/devmapper.h | 6 +++++ + libmultipath/structs_vec.c | 45 +++++++++++++++++++-------------- + multipathd/main.c | 12 ++++----- + 4 files changed, 72 insertions(+), 42 deletions(-) + +diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c +index 27d52398..24cc616a 100644 +--- a/libmultipath/devmapper.c ++++ b/libmultipath/devmapper.c +@@ -534,36 +534,43 @@ int dm_map_present(const char * str) + + int dm_get_map(const char *name, unsigned long long *size, char *outparams) + { +- int r = 1; ++ int r = DMP_ERR; + struct dm_task *dmt; + uint64_t start, length; + char *target_type = NULL; + char *params = NULL; + + if (!(dmt = libmp_dm_task_create(DM_DEVICE_TABLE))) +- return 1; ++ return r; + + if (!dm_task_set_name(dmt, name)) + goto out; + + dm_task_no_open_count(dmt); + +- if (!dm_task_run(dmt)) ++ errno = 0; ++ if (!dm_task_run(dmt)) { ++ if (dm_task_get_errno(dmt) == ENXIO) ++ r = DMP_NOT_FOUND; + goto out; ++ } + ++ r = DMP_NOT_FOUND; + /* Fetch 1st target */ +- dm_get_next_target(dmt, NULL, &start, &length, +- &target_type, ¶ms); ++ if (dm_get_next_target(dmt, NULL, &start, &length, ++ &target_type, ¶ms) != NULL) ++ /* more than one target */ ++ goto out; + + if (size) + *size = length; + + if (!outparams) { +- r = 0; ++ r = DMP_OK; + goto out; + } + if (snprintf(outparams, PARAMS_SIZE, "%s", params) <= PARAMS_SIZE) +- r = 0; ++ r = DMP_OK; + out: + dm_task_destroy(dmt); + return r; +@@ -637,35 +644,45 @@ is_mpath_part(const char *part_name, const char *map_name) + + int dm_get_status(const char *name, char *outstatus) + { +- int r = 1; ++ int r = DMP_ERR; + struct dm_task *dmt; + uint64_t start, length; + char *target_type = NULL; + char *status = NULL; + + if (!(dmt = libmp_dm_task_create(DM_DEVICE_STATUS))) +- return 1; ++ return r; + + if (!dm_task_set_name(dmt, name)) + goto out; + + dm_task_no_open_count(dmt); + +- if (!dm_task_run(dmt)) ++ errno = 0; ++ if (!dm_task_run(dmt)) { ++ if (dm_task_get_errno(dmt) == ENXIO) ++ r = DMP_NOT_FOUND; + goto out; ++ } + ++ r = DMP_NOT_FOUND; + /* Fetch 1st target */ +- dm_get_next_target(dmt, NULL, &start, &length, +- &target_type, &status); ++ if (dm_get_next_target(dmt, NULL, &start, &length, ++ &target_type, &status) != NULL) ++ goto out; ++ ++ if (!target_type || strcmp(target_type, TGT_MPATH) != 0) ++ goto out; ++ + if (!status) { + condlog(2, "get null status."); + goto out; + } + + if (snprintf(outstatus, PARAMS_SIZE, "%s", status) <= PARAMS_SIZE) +- r = 0; ++ r = DMP_OK; + out: +- if (r) ++ if (r != DMP_OK) + condlog(0, "%s: error getting map status string", name); + + dm_task_destroy(dmt); +@@ -920,7 +937,7 @@ int _dm_flush_map (const char * mapname, int need_sync, int deferred_remove, + return 1; + + if (need_suspend && +- !dm_get_map(mapname, &mapsize, params) && ++ dm_get_map(mapname, &mapsize, params) == DMP_OK && + strstr(params, "queue_if_no_path")) { + if (!dm_queue_if_no_path(mapname, 0)) + queue_if_no_path = 1; +@@ -1129,7 +1146,7 @@ struct multipath *dm_get_multipath(const char *name) + if (!mpp->alias) + goto out; + +- if (dm_get_map(name, &mpp->size, NULL)) ++ if (dm_get_map(name, &mpp->size, NULL) != DMP_OK) + goto out; + + dm_get_uuid(name, mpp->wwid, WWID_SIZE); +@@ -1313,7 +1330,7 @@ do_foreach_partmaps (const char * mapname, + /* + * and we can fetch the map table from the kernel + */ +- !dm_get_map(names->name, &size, ¶ms[0]) && ++ dm_get_map(names->name, &size, ¶ms[0]) == DMP_OK && + + /* + * and the table maps over the multipath map +diff --git a/libmultipath/devmapper.h b/libmultipath/devmapper.h +index 5ed7edc5..b2108638 100644 +--- a/libmultipath/devmapper.h ++++ b/libmultipath/devmapper.h +@@ -27,6 +27,12 @@ + #define UUID_PREFIX "mpath-" + #define UUID_PREFIX_LEN (sizeof(UUID_PREFIX) - 1) + ++enum { ++ DMP_ERR, ++ DMP_OK, ++ DMP_NOT_FOUND, ++}; ++ + void dm_init(int verbosity); + int dm_prereq(unsigned int *v); + void skip_libmp_dm_init(void); +diff --git a/libmultipath/structs_vec.c b/libmultipath/structs_vec.c +index 077f2e42..8137ea21 100644 +--- a/libmultipath/structs_vec.c ++++ b/libmultipath/structs_vec.c +@@ -196,43 +196,47 @@ extract_hwe_from_path(struct multipath * mpp) + int + update_multipath_table (struct multipath *mpp, vector pathvec, int is_daemon) + { ++ int r = DMP_ERR; + char params[PARAMS_SIZE] = {0}; + + if (!mpp) +- return 1; ++ return r; + +- if (dm_get_map(mpp->alias, &mpp->size, params)) { +- condlog(3, "%s: cannot get map", mpp->alias); +- return 1; ++ r = dm_get_map(mpp->alias, &mpp->size, params); ++ if (r != DMP_OK) { ++ condlog(3, "%s: %s", mpp->alias, (r == DMP_ERR)? "error getting table" : "map not present"); ++ return r; + } + + if (disassemble_map(pathvec, params, mpp, is_daemon)) { + condlog(3, "%s: cannot disassemble map", mpp->alias); +- return 1; ++ return DMP_ERR; + } + +- return 0; ++ return DMP_OK; + } + + int + update_multipath_status (struct multipath *mpp) + { ++ int r = DMP_ERR; + char status[PARAMS_SIZE] = {0}; + + if (!mpp) +- return 1; ++ return r; + +- if (dm_get_status(mpp->alias, status)) { +- condlog(3, "%s: cannot get status", mpp->alias); +- return 1; ++ r = dm_get_status(mpp->alias, status); ++ if (r != DMP_OK) { ++ condlog(3, "%s: %s", mpp->alias, (r == DMP_ERR)? "error getting status" : "map not present"); ++ return r; + } + + if (disassemble_status(status, mpp)) { + condlog(3, "%s: cannot disassemble status", mpp->alias); +- return 1; ++ return DMP_ERR; + } + +- return 0; ++ return DMP_OK; + } + + void sync_paths(struct multipath *mpp, vector pathvec) +@@ -264,10 +268,10 @@ int + update_multipath_strings(struct multipath *mpp, vector pathvec, int is_daemon) + { + struct pathgroup *pgp; +- int i; ++ int i, r = DMP_ERR; + + if (!mpp) +- return 1; ++ return r; + + update_mpp_paths(mpp, pathvec); + condlog(4, "%s: %s", mpp->alias, __FUNCTION__); +@@ -276,18 +280,21 @@ update_multipath_strings(struct multipath *mpp, vector pathvec, int is_daemon) + free_pgvec(mpp->pg, KEEP_PATHS); + mpp->pg = NULL; + +- if (update_multipath_table(mpp, pathvec, is_daemon)) +- return 1; ++ r = update_multipath_table(mpp, pathvec, is_daemon); ++ if (r != DMP_OK) ++ return r; ++ + sync_paths(mpp, pathvec); + +- if (update_multipath_status(mpp)) +- return 1; ++ r = update_multipath_status(mpp); ++ if (r != DMP_OK) ++ return r; + + vector_foreach_slot(mpp->pg, pgp, i) + if (pgp->paths) + path_group_prio_update(pgp); + +- return 0; ++ return DMP_OK; + } + + static void enter_recovery_mode(struct multipath *mpp) +diff --git a/multipathd/main.c b/multipathd/main.c +index 205ddb32..ab141fed 100644 +--- a/multipathd/main.c ++++ b/multipathd/main.c +@@ -418,7 +418,7 @@ int __setup_multipath(struct vectors *vecs, struct multipath *mpp, + goto out; + } + +- if (update_multipath_strings(mpp, vecs->pathvec, 1)) { ++ if (update_multipath_strings(mpp, vecs->pathvec, 1) != DMP_OK) { + condlog(0, "%s: failed to setup multipath", mpp->alias); + goto out; + } +@@ -557,9 +557,9 @@ add_map_without_path (struct vectors *vecs, const char *alias) + mpp->mpe = find_mpe(conf->mptable, mpp->wwid); + put_multipath_config(conf); + +- if (update_multipath_table(mpp, vecs->pathvec, 1)) ++ if (update_multipath_table(mpp, vecs->pathvec, 1) != DMP_OK) + goto out; +- if (update_multipath_status(mpp)) ++ if (update_multipath_status(mpp) != DMP_OK) + goto out; + + if (!vector_alloc_slot(vecs->mpvec)) +@@ -1350,8 +1350,8 @@ map_discovery (struct vectors * vecs) + return 1; + + vector_foreach_slot (vecs->mpvec, mpp, i) +- if (update_multipath_table(mpp, vecs->pathvec, 1) || +- update_multipath_status(mpp)) { ++ if (update_multipath_table(mpp, vecs->pathvec, 1) != DMP_OK || ++ update_multipath_status(mpp) != DMP_OK) { + remove_map(mpp, vecs, 1); + i--; + } +@@ -2091,7 +2091,7 @@ check_path (struct vectors * vecs, struct path * pp, unsigned int ticks) + /* + * Synchronize with kernel state + */ +- if (update_multipath_strings(pp->mpp, vecs->pathvec, 1)) { ++ if (update_multipath_strings(pp->mpp, vecs->pathvec, 1) != DMP_OK) { + condlog(1, "%s: Could not synchronize with kernel state", + pp->dev); + pp->dmstate = PSTATE_UNDEF; +-- +2.17.2 + diff --git a/0042-bugfix-libmultipath-fix-memory-leak-in-disassemble_map.patch b/0042-bugfix-libmultipath-fix-memory-leak-in-disassemble_map.patch deleted file mode 100644 index a4873a7..0000000 --- a/0042-bugfix-libmultipath-fix-memory-leak-in-disassemble_map.patch +++ /dev/null @@ -1,87 +0,0 @@ -From db72d840682d15abb2e6694704a91200e513dbac Mon Sep 17 00:00:00 2001 -From: root -Date: Fri, 22 Mar 2019 20:33:53 +0800 -Subject: [PATCH 5/5] libmultipath: fix memory leak in disassemble_map - ---- - libmultipath/dmparser.c | 12 ++++++++++-- - libmultipath/structs_vec.c | 10 ++++++++++ - 2 files changed, 20 insertions(+), 2 deletions(-) - -diff --git a/libmultipath/dmparser.c b/libmultipath/dmparser.c -index 620f507..1558c4e 100644 ---- a/libmultipath/dmparser.c -+++ b/libmultipath/dmparser.c -@@ -142,6 +142,7 @@ int disassemble_map(vector pathvec, char *params, struct multipath *mpp, - int def_minio = 0; - struct path * pp; - struct pathgroup * pgp; -+ int pp_unfound; - - p = params; - -@@ -291,6 +292,7 @@ int disassemble_map(vector pathvec, char *params, struct multipath *mpp, - char devname[FILE_NAME_SIZE]; - - pp = NULL; -+ pp_unfound = 0; - p += get_word(p, &word); - - if (!word) -@@ -310,6 +312,7 @@ int disassemble_map(vector pathvec, char *params, struct multipath *mpp, - } - - if (!pp) { -+ pp_unfound = 1; - pp = alloc_path(); - - if (!pp) -@@ -322,8 +325,10 @@ int disassemble_map(vector pathvec, char *params, struct multipath *mpp, - WWID_SIZE - 1); - } - /* Only call this in multipath client mode */ -- if (!is_daemon && store_path(pathvec, pp)) -+ if (!is_daemon && store_path(pathvec, pp)) { -+ free_path(pp); - goto out1; -+ } - } else { - if (!strlen(pp->wwid) && - strlen(mpp->wwid)) -@@ -332,8 +337,11 @@ int disassemble_map(vector pathvec, char *params, struct multipath *mpp, - } - FREE(word); - -- if (store_path(pgp->paths, pp)) -+ if (store_path(pgp->paths, pp)) { -+ if (pp_unfound) -+ free_path(pp); - goto out; -+ } - - /* - * Update wwid for multipaths which are not setup -diff --git a/libmultipath/structs_vec.c b/libmultipath/structs_vec.c -index 6c42824..828aef2 100644 ---- a/libmultipath/structs_vec.c -+++ b/libmultipath/structs_vec.c -@@ -252,6 +252,16 @@ void sync_paths(struct multipath *mpp, vector pathvec) - update_mpp_paths(mpp, pathvec); - vector_foreach_slot (mpp->paths, pp, i) - pp->mpp = mpp; -+ -+ vector_foreach_slot (mpp->pg, pgp, i) { -+ vector_foreach_slot (pgp->paths, pp, j) { -+ if ((find_slot(mpp->paths, pp) == -1) \ -+ && (find_slot(pathvec, pp) == -1)) { -+ vector_del_slot(pgp->paths, j--); -+ free_path(pp); -+ } -+ } -+ } - } - - int --- -2.19.1 - diff --git a/0042-multipathd-fix-check_path-errors-with-removed-map.patch b/0042-multipathd-fix-check_path-errors-with-removed-map.patch new file mode 100644 index 0000000..155e93a --- /dev/null +++ b/0042-multipathd-fix-check_path-errors-with-removed-map.patch @@ -0,0 +1,116 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Thu, 2 Jul 2020 19:07:01 -0500 +Subject: [PATCH] multipathd: fix check_path errors with removed map + +If a multipath device is removed during, or immediately before the call +to check_path(), multipathd can behave incorrectly. A missing multpath +device will cause update_multipath_strings() to fail, setting +pp->dmstate to PSTATE_UNDEF. If the path is up, this state will cause +reinstate_path() to be called, which will also fail. This will trigger +a reload, restoring the recently removed device. + +If update_multipath_strings() fails because there is no multipath +device, check_path should just quit, since the remove dmevent and uevent +are likely already queued up. Also, I don't see any reason to reload the +multipath device if reinstate fails. This code was added by +fac68d7a99ef17d496079538a5c6836acd7911ab, which clamined that reinstate +could fail if the path was disabled. Looking through the current kernel +code, I can't see any reason why a reinstate would fail, where a reload +would help. If the path was missing from the multipath device, +update_multipath_strings() would already catch that, and quit +check_path() early, which make more sense to me than reloading does. + +Signed-off-by: Benjamin Marzinski +--- + multipathd/main.c | 44 +++++++++++++++++++------------------------- + 1 file changed, 19 insertions(+), 25 deletions(-) + +diff --git a/multipathd/main.c b/multipathd/main.c +index ab141fed..daf19a4e 100644 +--- a/multipathd/main.c ++++ b/multipathd/main.c +@@ -1615,22 +1615,18 @@ fail_path (struct path * pp, int del_active) + /* + * caller must have locked the path list before calling that function + */ +-static int ++static void + reinstate_path (struct path * pp) + { +- int ret = 0; +- + if (!pp->mpp) +- return 0; ++ return; + +- if (dm_reinstate_path(pp->mpp->alias, pp->dev_t)) { ++ if (dm_reinstate_path(pp->mpp->alias, pp->dev_t)) + condlog(0, "%s: reinstate failed", pp->dev_t); +- ret = 1; +- } else { ++ else { + condlog(2, "%s: reinstated", pp->dev_t); + update_queue_mode_add_path(pp->mpp); + } +- return ret; + } + + static void +@@ -2091,9 +2087,16 @@ check_path (struct vectors * vecs, struct path * pp, unsigned int ticks) + /* + * Synchronize with kernel state + */ +- if (update_multipath_strings(pp->mpp, vecs->pathvec, 1) != DMP_OK) { +- condlog(1, "%s: Could not synchronize with kernel state", +- pp->dev); ++ ret = update_multipath_strings(pp->mpp, vecs->pathvec, 1); ++ if (ret != DMP_OK) { ++ if (ret == DMP_NOT_FOUND) { ++ /* multipath device missing. Likely removed */ ++ condlog(1, "%s: multipath device '%s' not found", ++ pp->dev, pp->mpp->alias); ++ return 0; ++ } else ++ condlog(1, "%s: Couldn't synchronize with kernel state", ++ pp->dev); + pp->dmstate = PSTATE_UNDEF; + } + /* if update_multipath_strings orphaned the path, quit early */ +@@ -2183,12 +2186,8 @@ check_path (struct vectors * vecs, struct path * pp, unsigned int ticks) + /* + * reinstate this path + */ +- if (!disable_reinstate && reinstate_path(pp)) { +- condlog(3, "%s: reload map", pp->dev); +- ev_add_path(pp, vecs, 1); +- pp->tick = 1; +- return 0; +- } ++ if (!disable_reinstate) ++ reinstate_path(pp); + new_path_up = 1; + + if (oldchkrstate != PATH_UP && oldchkrstate != PATH_GHOST) +@@ -2204,15 +2203,10 @@ check_path (struct vectors * vecs, struct path * pp, unsigned int ticks) + else if (newstate == PATH_UP || newstate == PATH_GHOST) { + if ((pp->dmstate == PSTATE_FAILED || + pp->dmstate == PSTATE_UNDEF) && +- !disable_reinstate) { ++ !disable_reinstate) + /* Clear IO errors */ +- if (reinstate_path(pp)) { +- condlog(3, "%s: reload map", pp->dev); +- ev_add_path(pp, vecs, 1); +- pp->tick = 1; +- return 0; +- } +- } else { ++ reinstate_path(pp); ++ else { + LOG_MSG(4, verbosity, pp); + if (pp->checkint != max_checkint) { + /* +-- +2.17.2 + diff --git a/0043-libmultipath-make-dm_flush_maps-only-return-0-on-suc.patch b/0043-libmultipath-make-dm_flush_maps-only-return-0-on-suc.patch new file mode 100644 index 0000000..4dce980 --- /dev/null +++ b/0043-libmultipath-make-dm_flush_maps-only-return-0-on-suc.patch @@ -0,0 +1,46 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Thu, 2 Jul 2020 19:07:02 -0500 +Subject: [PATCH] libmultipath: make dm_flush_maps only return 0 on success + +dm_flush_maps() returned both 0 and 1 on error, depending on which part +of the function it was in, but the caller was always treating 0 as a +success. Make dm_flush_maps() always return 1 on error and 0 on success. + +Reviewed-by: Martin Wilck +Signed-off-by: Benjamin Marzinski +--- + libmultipath/devmapper.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c +index 24cc616a..4c86b6d4 100644 +--- a/libmultipath/devmapper.c ++++ b/libmultipath/devmapper.c +@@ -1007,13 +1007,13 @@ dm_flush_map_nopaths(const char * mapname, int deferred_remove) + + int dm_flush_maps (int retries) + { +- int r = 0; ++ int r = 1; + struct dm_task *dmt; + struct dm_names *names; + unsigned next = 0; + + if (!(dmt = libmp_dm_task_create (DM_DEVICE_LIST))) +- return 0; ++ return r; + + dm_task_no_open_count(dmt); + +@@ -1026,6 +1026,7 @@ int dm_flush_maps (int retries) + if (!names->dev) + goto out; + ++ r = 0; + do { + r |= dm_suspend_and_flush_map(names->name, retries); + next = names->next; +-- +2.17.2 + diff --git a/0043-multipathd-fix-mpp-hwe-handling-when-paths-are-freed.patch b/0043-multipathd-fix-mpp-hwe-handling-when-paths-are-freed.patch deleted file mode 100644 index 5de6b6d..0000000 --- a/0043-multipathd-fix-mpp-hwe-handling-when-paths-are-freed.patch +++ /dev/null @@ -1,109 +0,0 @@ -multipathd: fix mpp->hwe handling when paths are freed - -Commit 1f962693 didn't deal with all of cases where a path that was part -of a multipath device could be removed. verify_paths() removes any path -that no longer exists in sysfs. mpp->hwe needs to be updated here as -well, since verify_paths() could remove the path whose hwe vector is -pointed to by mpp->hwe. Also, now that extract_hwe_from_path() is -called in verify_paths(), the extract_hwe_from_path() calls that -happened immediately after verify_paths() can be dropped. - -The other part of this fix is mostly cosmetic. In ev_add_path(), if -domap() fails after the path is added to the multipath device and -verify_paths() is called, the code can loop back to the rescan label. If -the size of the path or the multipath device changed in the interim, -ev_add_path() would remove the path, without updating mpp->hwe; but -there is no way for the size to change. Just to make that clearer in the -code, I've moved the size check to before the rescan label so it only -happens once. - -Fixes: 1f962693 "multipathd: fix mpp->hwe handling on path removal" -Cc: Martin Wilck -Signed-off-by: Benjamin Marzinski ---- - libmultipath/structs_vec.c | 7 +++++++ - multipathd/main.c | 22 ++++++++-------------- - 2 files changed, 15 insertions(+), 14 deletions(-) - -diff --git a/libmultipath/structs_vec.c b/libmultipath/structs_vec.c -index 828aef2..2808efe 100644 ---- a/libmultipath/structs_vec.c -+++ b/libmultipath/structs_vec.c -@@ -418,6 +418,12 @@ int verify_paths(struct multipath *mpp, struct vectors *vecs) - vector_del_slot(mpp->paths, i); - i--; - -+ /* Make sure mpp->hwe doesn't point to freed memory. -+ * We call extract_hwe_from_path() below to restore -+ * mpp->hwe -+ */ -+ if (mpp->hwe == pp->hwe) -+ mpp->hwe = NULL; - if ((j = find_slot(vecs->pathvec, - (void *)pp)) != -1) - vector_del_slot(vecs->pathvec, j); -@@ -427,6 +433,7 @@ int verify_paths(struct multipath *mpp, struct vectors *vecs) - mpp->alias, pp->dev, pp->dev_t); - } - } -+ extract_hwe_from_path(mpp); - return count; - } - -diff --git a/multipathd/main.c b/multipathd/main.c -index 8de0871..872843c 100644 ---- a/multipathd/main.c -+++ b/multipathd/main.c -@@ -472,7 +472,6 @@ retry: - verify_paths(mpp, vecs); - mpp->action = ACT_RELOAD; - -- extract_hwe_from_path(mpp); - if (setup_map(mpp, params, PARAMS_SIZE, vecs)) { - condlog(0, "%s: failed to setup new map in update", mpp->alias); - retries = -1; -@@ -948,6 +947,14 @@ ev_add_path (struct path * pp, struct vectors * vecs, int need_do_map) - goto fail; /* leave path added to pathvec */ - } - mpp = find_mp_by_wwid(vecs->mpvec, pp->wwid); -+ if (mpp && pp->size && mpp->size != pp->size) { -+ condlog(0, "%s: failed to add new path %s, device size mismatch", mpp->alias, pp->dev); -+ int i = find_slot(vecs->pathvec, (void *)pp); -+ if (i != -1) -+ vector_del_slot(vecs->pathvec, i); -+ free_path(pp); -+ return 1; -+ } - if (mpp && mpp->wait_for_udev && - (pathcount(mpp, PATH_UP) > 0 || - (pathcount(mpp, PATH_GHOST) > 0 && pp->tpgs != TPGS_IMPLICIT && -@@ -962,18 +969,6 @@ ev_add_path (struct path * pp, struct vectors * vecs, int need_do_map) - pp->mpp = mpp; - rescan: - if (mpp) { -- if (pp->size && mpp->size != pp->size) { -- condlog(0, "%s: failed to add new path %s, " -- "device size mismatch", -- mpp->alias, pp->dev); -- int i = find_slot(vecs->pathvec, (void *)pp); -- if (i != -1) -- vector_del_slot(vecs->pathvec, i); -- clear_ref_from_mpp(pp, vecs); -- free_path(pp); -- return 1; -- } -- - condlog(4,"%s: adopting all paths for path %s", - mpp->alias, pp->dev); - if (adopt_paths(vecs->pathvec, mpp)) -@@ -981,7 +976,6 @@ rescan: - - verify_paths(mpp, vecs); - mpp->action = ACT_RELOAD; -- extract_hwe_from_path(mpp); - } else { - if (!should_multipath(pp, vecs->pathvec, vecs->mpvec)) { - orphan_path(pp, "only one path"); --- -2.19.1 - diff --git a/0044-bugfix-check-close-return-value.patch b/0044-bugfix-check-close-return-value.patch deleted file mode 100644 index 8115f5c..0000000 --- a/0044-bugfix-check-close-return-value.patch +++ /dev/null @@ -1,29 +0,0 @@ -Subject: [PATCH] check close return value - ---- - mpathpersist/main.c | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - -diff --git a/mpathpersist/main.c b/mpathpersist/main.c -index 4db07b2..db8b6d7 100644 ---- a/mpathpersist/main.c -+++ b/mpathpersist/main.c -@@ -498,7 +498,14 @@ int main (int argc, char * argv[]) - - out : - if (fd >= 0) -- close(fd); -+ { -+ res = close(fd); -+ if (res < 0) -+ { -+ ret = MPATH_PR_FILE_ERROR; -+ } -+ -+ } - mpath_lib_exit(conf); - udev_unref(udev); - return (ret >= 0) ? ret : MPATH_PR_OTHER; --- -2.19.1 - diff --git a/0044-multipathd-add-del-maps-multipathd-command.patch b/0044-multipathd-add-del-maps-multipathd-command.patch new file mode 100644 index 0000000..9f32eb2 --- /dev/null +++ b/0044-multipathd-add-del-maps-multipathd-command.patch @@ -0,0 +1,161 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Thu, 2 Jul 2020 19:07:03 -0500 +Subject: [PATCH] multipathd: add "del maps" multipathd command + +This will flush all multipath devices. + +Reviewed-by: Martin Wilck +Signed-off-by: Benjamin Marzinski +--- + libmultipath/devmapper.c | 7 +++++-- + libmultipath/devmapper.h | 2 +- + multipath/main.c | 2 +- + multipathd/cli.c | 1 + + multipathd/cli_handlers.c | 19 +++++++++++++++++++ + multipathd/cli_handlers.h | 1 + + multipathd/main.c | 3 ++- + multipathd/main.h | 1 + + 8 files changed, 31 insertions(+), 5 deletions(-) + +diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c +index 4c86b6d4..f597ff8b 100644 +--- a/libmultipath/devmapper.c ++++ b/libmultipath/devmapper.c +@@ -1005,7 +1005,7 @@ dm_flush_map_nopaths(const char * mapname, int deferred_remove) + + #endif + +-int dm_flush_maps (int retries) ++int dm_flush_maps (int need_suspend, int retries) + { + int r = 1; + struct dm_task *dmt; +@@ -1028,7 +1028,10 @@ int dm_flush_maps (int retries) + + r = 0; + do { +- r |= dm_suspend_and_flush_map(names->name, retries); ++ if (need_suspend) ++ r |= dm_suspend_and_flush_map(names->name, retries); ++ else ++ r |= dm_flush_map(names->name); + next = names->next; + names = (void *) names + next; + } while (next); +diff --git a/libmultipath/devmapper.h b/libmultipath/devmapper.h +index b2108638..6dd178c8 100644 +--- a/libmultipath/devmapper.h ++++ b/libmultipath/devmapper.h +@@ -57,7 +57,7 @@ int dm_flush_map_nopaths(const char * mapname, int deferred_remove); + #define dm_suspend_and_flush_map(mapname, retries) \ + _dm_flush_map(mapname, 1, 0, 1, retries) + int dm_cancel_deferred_remove(struct multipath *mpp); +-int dm_flush_maps (int retries); ++int dm_flush_maps (int need_suspend, int retries); + int dm_fail_path(const char * mapname, char * path); + int dm_reinstate_path(const char * mapname, char * path); + int dm_queue_if_no_path(const char *mapname, int enable); +diff --git a/multipath/main.c b/multipath/main.c +index c4740fab..d89f0a91 100644 +--- a/multipath/main.c ++++ b/multipath/main.c +@@ -1096,7 +1096,7 @@ main (int argc, char *argv[]) + goto out; + } + else if (conf->remove == FLUSH_ALL) { +- r = dm_flush_maps(retries) ? RTVL_FAIL : RTVL_OK; ++ r = dm_flush_maps(1, retries) ? RTVL_FAIL : RTVL_OK; + goto out; + } + while ((r = configure(conf, cmd, dev_type, dev)) == RTVL_RETRY) +diff --git a/multipathd/cli.c b/multipathd/cli.c +index 800c0fbe..bdc9fb10 100644 +--- a/multipathd/cli.c ++++ b/multipathd/cli.c +@@ -568,6 +568,7 @@ cli_init (void) { + add_handler(DEL+PATH, NULL); + add_handler(ADD+MAP, NULL); + add_handler(DEL+MAP, NULL); ++ add_handler(DEL+MAPS, NULL); + add_handler(SWITCH+MAP+GROUP, NULL); + add_handler(RECONFIGURE, NULL); + add_handler(SUSPEND+MAP, NULL); +diff --git a/multipathd/cli_handlers.c b/multipathd/cli_handlers.c +index 31c3d9fd..782bb003 100644 +--- a/multipathd/cli_handlers.c ++++ b/multipathd/cli_handlers.c +@@ -852,6 +852,25 @@ cli_del_map (void * v, char ** reply, int * len, void * data) + return rc; + } + ++int ++cli_del_maps (void *v, char **reply, int *len, void *data) ++{ ++ struct vectors * vecs = (struct vectors *)data; ++ struct multipath *mpp; ++ int i, ret = 0; ++ ++ condlog(2, "remove maps (operator)"); ++ vector_foreach_slot(vecs->mpvec, mpp, i) { ++ if (flush_map(mpp, vecs, 0)) ++ ret++; ++ else ++ i--; ++ } ++ /* flush any multipath maps that aren't currently known by multipathd */ ++ ret |= dm_flush_maps(0, 0); ++ return ret; ++} ++ + int + cli_reload(void *v, char **reply, int *len, void *data) + { +diff --git a/multipathd/cli_handlers.h b/multipathd/cli_handlers.h +index 0f451064..6f57b429 100644 +--- a/multipathd/cli_handlers.h ++++ b/multipathd/cli_handlers.h +@@ -26,6 +26,7 @@ int cli_add_path (void * v, char ** reply, int * len, void * data); + int cli_del_path (void * v, char ** reply, int * len, void * data); + int cli_add_map (void * v, char ** reply, int * len, void * data); + int cli_del_map (void * v, char ** reply, int * len, void * data); ++int cli_del_maps (void * v, char ** reply, int * len, void * data); + int cli_switch_group(void * v, char ** reply, int * len, void * data); + int cli_reconfigure(void * v, char ** reply, int * len, void * data); + int cli_resize(void * v, char ** reply, int * len, void * data); +diff --git a/multipathd/main.c b/multipathd/main.c +index daf19a4e..f014d2a1 100644 +--- a/multipathd/main.c ++++ b/multipathd/main.c +@@ -635,7 +635,7 @@ sync_maps_state(vector mpvec) + sync_map_state(mpp); + } + +-static int ++int + flush_map(struct multipath * mpp, struct vectors * vecs, int nopaths) + { + int r; +@@ -1555,6 +1555,7 @@ uxlsnrloop (void * ap) + set_handler_callback(DEL+PATH, cli_del_path); + set_handler_callback(ADD+MAP, cli_add_map); + set_handler_callback(DEL+MAP, cli_del_map); ++ set_handler_callback(DEL+MAPS, cli_del_maps); + set_handler_callback(SWITCH+MAP+GROUP, cli_switch_group); + set_unlocked_handler_callback(RECONFIGURE, cli_reconfigure); + set_handler_callback(SUSPEND+MAP, cli_suspend); +diff --git a/multipathd/main.h b/multipathd/main.h +index 7bb8463f..5dff17e5 100644 +--- a/multipathd/main.h ++++ b/multipathd/main.h +@@ -28,6 +28,7 @@ int ev_add_path (struct path *, struct vectors *, int); + int ev_remove_path (struct path *, struct vectors *, int); + int ev_add_map (char *, const char *, struct vectors *); + int ev_remove_map (char *, char *, int, struct vectors *); ++int flush_map(struct multipath *, struct vectors *, int); + int set_config_state(enum daemon_status); + void * mpath_alloc_prin_response(int prin_sa); + int prin_do_scsi_ioctl(char *, int rq_servact, struct prin_resp * resp, +-- +2.17.2 + diff --git a/0045-multipath-make-flushing-maps-work-like-other-command.patch b/0045-multipath-make-flushing-maps-work-like-other-command.patch new file mode 100644 index 0000000..b7450ee --- /dev/null +++ b/0045-multipath-make-flushing-maps-work-like-other-command.patch @@ -0,0 +1,104 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Thu, 2 Jul 2020 19:07:04 -0500 +Subject: [PATCH] multipath: make flushing maps work like other commands + +The config structure doesn't need a special variable just for removes. +Multipath can just use the cmd variable, like it does for the other +commands. + +Reviewed-by: Martin Wilck +Signed-off-by: Benjamin Marzinski +--- + libmultipath/config.h | 3 ++- + libmultipath/configure.h | 3 --- + multipath/main.c | 20 ++++++++++---------- + 3 files changed, 12 insertions(+), 14 deletions(-) + +diff --git a/libmultipath/config.h b/libmultipath/config.h +index ceecff2d..55569360 100644 +--- a/libmultipath/config.h ++++ b/libmultipath/config.h +@@ -38,6 +38,8 @@ enum mpath_cmds { + CMD_ADD_WWID, + CMD_USABLE_PATHS, + CMD_DUMP_CONFIG, ++ CMD_FLUSH_ONE, ++ CMD_FLUSH_ALL, + }; + + enum force_reload_types { +@@ -142,7 +144,6 @@ struct config { + unsigned int max_checkint; + bool use_watchdog; + int pgfailback; +- int remove; + int rr_weight; + int no_path_retry; + int user_friendly_names; +diff --git a/libmultipath/configure.h b/libmultipath/configure.h +index d7509000..0e33bf40 100644 +--- a/libmultipath/configure.h ++++ b/libmultipath/configure.h +@@ -45,9 +45,6 @@ enum { + CP_RETRY, + }; + +-#define FLUSH_ONE 1 +-#define FLUSH_ALL 2 +- + struct vectors; + + int setup_map (struct multipath * mpp, char * params, int params_size, +diff --git a/multipath/main.c b/multipath/main.c +index d89f0a91..101fd656 100644 +--- a/multipath/main.c ++++ b/multipath/main.c +@@ -909,10 +909,10 @@ main (int argc, char *argv[]) + cmd = CMD_DRY_RUN; + break; + case 'f': +- conf->remove = FLUSH_ONE; ++ cmd = CMD_FLUSH_ONE; + break; + case 'F': +- conf->remove = FLUSH_ALL; ++ cmd = CMD_FLUSH_ALL; + break; + case 'l': + if (optarg && !strncmp(optarg, "l", 1)) +@@ -1053,6 +1053,10 @@ main (int argc, char *argv[]) + condlog(0, "the -w option requires a device"); + goto out; + } ++ if (cmd == CMD_FLUSH_ONE && dev_type != DEV_DEVMAP) { ++ condlog(0, "the -f option requires a map name to remove"); ++ goto out; ++ } + + switch(delegate_to_multipathd(cmd, dev, dev_type, conf)) { + case DELEGATE_OK: +@@ -1086,16 +1090,12 @@ main (int argc, char *argv[]) + } + if (retries < 0) + retries = conf->remove_retries; +- if (conf->remove == FLUSH_ONE) { +- if (dev_type == DEV_DEVMAP) { +- r = dm_suspend_and_flush_map(dev, retries) ? +- RTVL_FAIL : RTVL_OK; +- } else +- condlog(0, "must provide a map name to remove"); +- ++ if (cmd == CMD_FLUSH_ONE) { ++ r = dm_suspend_and_flush_map(dev, retries) ? ++ RTVL_FAIL : RTVL_OK; + goto out; + } +- else if (conf->remove == FLUSH_ALL) { ++ else if (cmd == CMD_FLUSH_ALL) { + r = dm_flush_maps(1, retries) ? RTVL_FAIL : RTVL_OK; + goto out; + } +-- +2.17.2 + diff --git a/0046-change-kpartx-file-and-default-bindir.patch b/0046-change-kpartx-file-and-default-bindir.patch deleted file mode 100644 index f3ef96b..0000000 --- a/0046-change-kpartx-file-and-default-bindir.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 768883da9969b76aade3e16d4a5b8cec47d6f30e Mon Sep 17 00:00:00 2001 -From: wangjufeng -Date: Fri, 10 Jan 2020 11:57:08 +0800 -Subject: [PATCH] kpartx: change kpartx file and default bindir - -Change default bindir of multipath to /usr/sbin. Don't -set device name-partition number delimiter in kpartx rules. - -Signed-off-by: wangjufeng ---- - Makefile.inc | 2 +- - kpartx/kpartx.rules | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/Makefile.inc b/Makefile.inc -index af2f5ba..e6466ee 100644 ---- a/Makefile.inc -+++ b/Makefile.inc -@@ -49,7 +49,7 @@ ifndef SYSTEMDPATH - endif - - prefix = --exec_prefix = $(prefix) -+exec_prefix = $(prefix)/usr - usr_prefix = $(prefix) - bindir = $(exec_prefix)/sbin - libudevdir = $(prefix)/$(SYSTEMDPATH)/udev -diff --git a/kpartx/kpartx.rules b/kpartx/kpartx.rules -index 8f99049..8a3a171 100644 ---- a/kpartx/kpartx.rules -+++ b/kpartx/kpartx.rules -@@ -32,6 +32,6 @@ LABEL="mpath_kpartx_end" - GOTO="kpartx_end" - - LABEL="run_kpartx" --RUN+="/sbin/kpartx -un -p -part /dev/$name" -+RUN+="/sbin/kpartx -un /dev/$name" - - LABEL="kpartx_end" --- -1.8.3.1 - diff --git a/0046-multipath-delegate-flushing-maps-to-multipathd.patch b/0046-multipath-delegate-flushing-maps-to-multipathd.patch new file mode 100644 index 0000000..1a4a771 --- /dev/null +++ b/0046-multipath-delegate-flushing-maps-to-multipathd.patch @@ -0,0 +1,64 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Thu, 2 Jul 2020 19:07:05 -0500 +Subject: [PATCH] multipath: delegate flushing maps to multipathd + +Since there can be problems with removing maps outside of multipathd, +multipath should attempt to delegate this command to multipathd. +However, multipathd doesn't attempt to suspend the device, in order +to avoid potential hangs. If delegating to multipathd fails, multipath +should try the remove itself. + +Reviewed-by: Martin Wilck +Signed-off-by: Benjamin Marzinski +--- + multipath/main.c | 14 ++++++++++++++ + multipath/multipath.8 | 4 ++-- + 2 files changed, 16 insertions(+), 2 deletions(-) + +diff --git a/multipath/main.c b/multipath/main.c +index 101fd656..6a24e483 100644 +--- a/multipath/main.c ++++ b/multipath/main.c +@@ -820,6 +820,20 @@ int delegate_to_multipathd(enum mpath_cmds cmd, + if (cmd == CMD_CREATE && conf->force_reload == FORCE_RELOAD_YES) { + p += snprintf(p, n, "reconfigure"); + } ++ else if (cmd == CMD_FLUSH_ONE && dev && dev_type == DEV_DEVMAP) { ++ p += snprintf(p, n, "del map %s", dev); ++ /* multipathd doesn't try as hard, to avoid potentially ++ * hanging. If it fails, retry with the regular multipath ++ * command */ ++ r = NOT_DELEGATED; ++ } ++ else if (cmd == CMD_FLUSH_ALL) { ++ p += snprintf(p, n, "del maps"); ++ /* multipathd doesn't try as hard, to avoid potentially ++ * hanging. If it fails, retry with the regular multipath ++ * command */ ++ r = NOT_DELEGATED; ++ } + /* Add other translations here */ + + if (strlen(command) == 0) +diff --git a/multipath/multipath.8 b/multipath/multipath.8 +index 6fb8645a..5b29a5d9 100644 +--- a/multipath/multipath.8 ++++ b/multipath/multipath.8 +@@ -125,11 +125,11 @@ the system. + Other operation modes are chosen by using one of the following command line switches: + .TP + .B \-f +-Flush (remove) a multipath device map specified as parameter, if unused. ++Flush (remove) a multipath device map specified as parameter, if unused. This operation is delegated to the multipathd daemon if it's running. + . + .TP + .B \-F +-Flush (remove) all unused multipath device maps. ++Flush (remove) all unused multipath device maps. This operation is delegated to the multipathd daemon if it's running. + . + .TP + .B \-l +-- +2.17.2 + diff --git a/0047-multipath-add-option-to-skip-multipathd-delegation.patch b/0047-multipath-add-option-to-skip-multipathd-delegation.patch new file mode 100644 index 0000000..51284aa --- /dev/null +++ b/0047-multipath-add-option-to-skip-multipathd-delegation.patch @@ -0,0 +1,63 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Thu, 2 Jul 2020 19:07:06 -0500 +Subject: [PATCH] multipath: add option to skip multipathd delegation + +Add the -D option to allow users to skip delegating commands to +multipathd. + +Reviewed-by: Martin Wilck +Signed-off-by: Benjamin Marzinski +--- + libmultipath/config.h | 1 + + multipath/main.c | 8 +++++++- + 2 files changed, 8 insertions(+), 1 deletion(-) + +diff --git a/libmultipath/config.h b/libmultipath/config.h +index 55569360..92c61a0d 100644 +--- a/libmultipath/config.h ++++ b/libmultipath/config.h +@@ -190,6 +190,7 @@ struct config { + int ghost_delay; + int find_multipaths_timeout; + int marginal_pathgroups; ++ int skip_delegate; + unsigned int version[3]; + unsigned int sequence_nr; + +diff --git a/multipath/main.c b/multipath/main.c +index 6a24e483..4c43314e 100644 +--- a/multipath/main.c ++++ b/multipath/main.c +@@ -817,6 +817,9 @@ int delegate_to_multipathd(enum mpath_cmds cmd, + *p = '\0'; + n = sizeof(command); + ++ if (conf->skip_delegate) ++ return NOT_DELEGATED; ++ + if (cmd == CMD_CREATE && conf->force_reload == FORCE_RELOAD_YES) { + p += snprintf(p, n, "reconfigure"); + } +@@ -890,7 +893,7 @@ main (int argc, char *argv[]) + multipath_conf = conf; + conf->retrigger_tries = 0; + conf->force_sync = 1; +- while ((arg = getopt(argc, argv, ":adcChl::eFfM:v:p:b:BrR:itTquUwW")) != EOF ) { ++ while ((arg = getopt(argc, argv, ":adDcChl::eFfM:v:p:b:BrR:itTquUwW")) != EOF ) { + switch(arg) { + case 1: printf("optarg : %s\n",optarg); + break; +@@ -922,6 +925,9 @@ main (int argc, char *argv[]) + if (cmd == CMD_CREATE) + cmd = CMD_DRY_RUN; + break; ++ case 'D': ++ conf->skip_delegate = 1; ++ break; + case 'f': + cmd = CMD_FLUSH_ONE; + break; +-- +2.17.2 + diff --git a/0047-multipathd-ignore-failed-wwid-recheck.patch b/0047-multipathd-ignore-failed-wwid-recheck.patch deleted file mode 100644 index 2cca42e..0000000 --- a/0047-multipathd-ignore-failed-wwid-recheck.patch +++ /dev/null @@ -1,74 +0,0 @@ -author Benjamin Marzinski -Sat, 30 Mar 2019 14:05:56 +0800 (01:05 -0500) -committer Christophe Varoqui -Thu, 18 Apr 2019 19:03:34 +0800 (13:03 +0200) -commit 3ad48a0bc002f3d1b2a27eafecfd7fbb390bfb94 -multipathd: ignore failed wwid recheck - -If disable_changed_wwids is set, when multipathd gets a change event on -a path, it verifies that the wwid hasn't changed in uev_update_path(). -If get_uid() failed, uev_update_path treated this as a wwid change to 0. -This could cause paths to suddenly be dropped due to an issue with -getting the wwid. Even if get_uid() failed because the path was down, -it no change uevent happend when it later became active, multipathd -would continue to ignore the path. Also, scsi_uid_fallback() clears the -failure return if it doesn't attempt to fallback, causing get_uid() -to return success, when it actually failed. - -Multipathd should neither set nor clear wwid_changed if get_uid() -returned failure. Also, scsi_uid_fallback() should retain the old return -value if it doesn't attempt to fallback. - -Signed-off-by: Benjamin Marzinski ---- - libmultipath/discovery.c | 6 +++--- - multipathd/main.c | 6 ++++-- - 2 files changed, 7 insertions(+), 5 deletions(-) - -diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c -index 1369f38..a852843 100644 ---- a/libmultipath/discovery.c -+++ b/libmultipath/discovery.c -@@ -1862,9 +1862,9 @@ get_vpd_uid(struct path * pp) - } - - static ssize_t scsi_uid_fallback(struct path *pp, int path_state, -- const char **origin) -+ const char **origin, ssize_t old_len) - { -- ssize_t len = 0; -+ ssize_t len = old_len; - int retrigger; - struct config *conf; - -@@ -1935,7 +1935,7 @@ get_uid (struct path * pp, int path_state, struct udev_device *udev) - origin = "sysfs"; - } - if (len <= 0 && pp->bus == SYSFS_BUS_SCSI) -- len = scsi_uid_fallback(pp, path_state, &origin); -+ len = scsi_uid_fallback(pp, path_state, &origin, len); - } - if ( len < 0 ) { - condlog(1, "%s: failed to get %s uid: %s", -diff --git a/multipathd/main.c b/multipathd/main.c -index 872843c..49d1469 100644 ---- a/multipathd/main.c -+++ b/multipathd/main.c -@@ -1246,9 +1246,11 @@ uev_update_path (struct uevent *uev, struct vectors * vecs) - char wwid[WWID_SIZE]; - - strcpy(wwid, pp->wwid); -- get_uid(pp, pp->state, uev->udev); -+ rc = get_uid(pp, pp->state, uev->udev); - -- if (strncmp(wwid, pp->wwid, WWID_SIZE) != 0) { -+ if (rc != 0) -+ strcpy(pp->wwid, wwid); -+ else if (strncmp(wwid, pp->wwid, WWID_SIZE) != 0) { - condlog(0, "%s: path wwid changed from '%s' to '%s'. %s", - uev->kernel, wwid, pp->wwid, - (disable_changed_wwids ? "disallowing" : --- -2.19.1 - - diff --git a/0048-Makefile.inc-trim-extra-information-from-systemd-ver.patch b/0048-Makefile.inc-trim-extra-information-from-systemd-ver.patch new file mode 100644 index 0000000..5c3f614 --- /dev/null +++ b/0048-Makefile.inc-trim-extra-information-from-systemd-ver.patch @@ -0,0 +1,30 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Mon, 6 Jul 2020 13:21:12 -0500 +Subject: [PATCH] Makefile.inc: trim extra information from systemd version + +Some systemd versions print extra information in the +"pkg-config --modversion" output, which confuses make. Trim this +off. + +Signed-off-by: Benjamin Marzinski +--- + Makefile.inc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.inc b/Makefile.inc +index e7256e3a..8ea3352d 100644 +--- a/Makefile.inc ++++ b/Makefile.inc +@@ -37,7 +37,7 @@ endif + + ifndef SYSTEMD + ifeq ($(shell pkg-config --modversion libsystemd >/dev/null 2>&1 && echo 1), 1) +- SYSTEMD = $(shell pkg-config --modversion libsystemd) ++ SYSTEMD = $(shell pkg-config --modversion libsystemd | awk '{print $$1}') + else + ifeq ($(shell systemctl --version >/dev/null 2>&1 && echo 1), 1) + SYSTEMD = $(shell systemctl --version 2> /dev/null | \ +-- +2.17.2 + diff --git a/0048-libmultipath-group_by_prio-fix-signedness-bug.patch b/0048-libmultipath-group_by_prio-fix-signedness-bug.patch deleted file mode 100644 index 7248399..0000000 --- a/0048-libmultipath-group_by_prio-fix-signedness-bug.patch +++ /dev/null @@ -1,30 +0,0 @@ -From a358e60548ddb4631ed1b4ea404f71e1ea8f57e5 Mon Sep 17 00:00:00 2001 -From: Martin Wilck -Date: Thu, 11 Apr 2019 12:49:20 +0200 -Subject: [PATCH 1/8] libmultipath: group_by_prio: fix signedness bug - -pp->priority can be negative, so we we shouldn't compare -it with an unsigned int. - -Signed-off-by: Martin Wilck ---- - libmultipath/pgpolicies.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libmultipath/pgpolicies.c b/libmultipath/pgpolicies.c -index ac2596a..660768a 100644 ---- a/libmultipath/pgpolicies.c -+++ b/libmultipath/pgpolicies.c -@@ -312,7 +312,7 @@ out: - int group_by_prio(struct multipath *mp) - { - int i; -- unsigned int prio; -+ int prio; - struct path * pp; - struct pathgroup * pgp; - vector pathvec = NULL; --- -1.8.3.1 - - diff --git a/0049-kpartx-fix-Wsign-compare-error.patch b/0049-kpartx-fix-Wsign-compare-error.patch new file mode 100644 index 0000000..ffaa477 --- /dev/null +++ b/0049-kpartx-fix-Wsign-compare-error.patch @@ -0,0 +1,26 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Mon, 6 Jul 2020 17:28:46 -0500 +Subject: [PATCH] kpartx: fix -Wsign-compare error + +Signed-off-by: Benjamin Marzinski +--- + kpartx/kpartx.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/kpartx/kpartx.c b/kpartx/kpartx.c +index c24ad6d9..653ce0c8 100644 +--- a/kpartx/kpartx.c ++++ b/kpartx/kpartx.c +@@ -738,7 +738,7 @@ struct block { + /* blknr is always in 512 byte blocks */ + char * + getblock (int fd, unsigned int blknr) { +- unsigned int secsz = get_sector_size(fd); ++ int secsz = get_sector_size(fd); + unsigned int blks_per_sec = secsz / 512; + unsigned int secnr = blknr / blks_per_sec; + unsigned int blk_off = (blknr % blks_per_sec) * 512; +-- +2.17.2 + diff --git a/0049-multipathd-handle-NULL-return-from-genhelp_handler.patch b/0049-multipathd-handle-NULL-return-from-genhelp_handler.patch deleted file mode 100644 index e3ed6b6..0000000 --- a/0049-multipathd-handle-NULL-return-from-genhelp_handler.patch +++ /dev/null @@ -1,44 +0,0 @@ -From dc8b964a03a547eb8dc62b317f9f168a35943ebf Mon Sep 17 00:00:00 2001 -From: Benjamin Marzinski -Date: Fri, 17 May 2019 11:14:10 -0500 -Subject: [PATCH 2/8] multipathd: handle NULL return from genhelp_handler - -parse_cmd() wasn't checking if genhelp_handler() returned NULL. It was simply -assuming that it got a string. On NULL, it now returns an error. Found by -Coverity. - -Signed-off-by: Benjamin Marzinski ---- - multipathd/cli.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/multipathd/cli.c b/multipathd/cli.c -index a75afe3..ff17a5b 100644 ---- a/multipathd/cli.c -+++ b/multipathd/cli.c -@@ -465,6 +465,8 @@ parse_cmd (char * cmd, char ** reply, int * len, void * data, int timeout ) - - if (r) { - *reply = genhelp_handler(cmd, r); -+ if (*reply == NULL) -+ return EINVAL; - *len = strlen(*reply) + 1; - return 0; - } -@@ -472,9 +474,11 @@ parse_cmd (char * cmd, char ** reply, int * len, void * data, int timeout ) - h = find_handler(fingerprint(cmdvec)); - - if (!h || !h->fn) { -+ free_keys(cmdvec); - *reply = genhelp_handler(cmd, EINVAL); -+ if (*reply == NULL) -+ return EINVAL; - *len = strlen(*reply) + 1; -- free_keys(cmdvec); - return 0; - } - --- -1.8.3.1 - - diff --git a/0011-change-order-of-multipath.rules.patch b/0050-RH-fixup-udev-rules-for-redhat.patch similarity index 47% rename from 0011-change-order-of-multipath.rules.patch rename to 0050-RH-fixup-udev-rules-for-redhat.patch index 90de0e7..b1f5beb 100644 --- a/0011-change-order-of-multipath.rules.patch +++ b/0050-RH-fixup-udev-rules-for-redhat.patch @@ -1,19 +1,46 @@ -From 4340aca696857c1077b00ff6bdc0454a07929aad Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Benjamin Marzinski -Date: Fri, 15 May 2015 18:14:09 -0500 -Subject: [PATCH] change order of multipath.rules +Date: Thu, 13 Apr 2017 07:22:23 -0500 +Subject: [PATCH] RH: fixup udev rules for redhat -At least for RedHat, the rule that calls scsi_id is -60-persistent-storage.rules, so the multipath rule needs to come -after this. +The multipath rules need to run after scsi_id is run. This means moving +them after 60-persistent-storage.rules for redhat. Redhat also uses a +different naming scheme for partitions than SuSE. Signed-off-by: Benjamin Marzinski --- - multipath/Makefile | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + Makefile.inc | 2 +- + kpartx/kpartx.rules | 2 +- + multipath/Makefile | 4 ++-- + 3 files changed, 4 insertions(+), 4 deletions(-) +diff --git a/Makefile.inc b/Makefile.inc +index 8ea3352d..873fb62f 100644 +--- a/Makefile.inc ++++ b/Makefile.inc +@@ -53,7 +53,7 @@ endif + prefix = + exec_prefix = $(prefix) + usr_prefix = $(prefix) +-bindir = $(exec_prefix)/sbin ++bindir = $(exec_prefix)/usr/sbin + libudevdir = $(prefix)/$(SYSTEMDPATH)/udev + udevrulesdir = $(libudevdir)/rules.d + multipathdir = $(TOPDIR)/libmultipath +diff --git a/kpartx/kpartx.rules b/kpartx/kpartx.rules +index d7527d7d..0e0d70d5 100644 +--- a/kpartx/kpartx.rules ++++ b/kpartx/kpartx.rules +@@ -36,6 +36,6 @@ LABEL="mpath_kpartx_end" + GOTO="kpartx_end" + + LABEL="run_kpartx" +-RUN+="/sbin/kpartx -un -p -part /dev/$name" ++RUN+="/sbin/kpartx -un /dev/$name" + + LABEL="kpartx_end" diff --git a/multipath/Makefile b/multipath/Makefile -index 0828a8f..b9bbb3c 100644 +index 0828a8f7..b9bbb3cf 100644 --- a/multipath/Makefile +++ b/multipath/Makefile @@ -24,7 +24,7 @@ install: @@ -35,5 +62,5 @@ index 0828a8f..b9bbb3c 100644 $(RM) $(DESTDIR)$(man5dir)/$(EXEC).conf.5.gz -- -1.8.3.1 +2.17.2 diff --git a/0050-libmultipath-fix-parsing-of-VPD-83-type-1-T10-vendor.patch b/0050-libmultipath-fix-parsing-of-VPD-83-type-1-T10-vendor.patch deleted file mode 100644 index 9f53777..0000000 --- a/0050-libmultipath-fix-parsing-of-VPD-83-type-1-T10-vendor.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 552bcf2f6245cbce4326455e28ab7c1160871978 Mon Sep 17 00:00:00 2001 -From: Martin Wilck -Date: Mon, 24 Jun 2019 11:27:40 +0200 -Subject: [PATCH 3/8] libmultipath: fix parsing of VPD 83 type 1 (T10 vendor - ID) - -In the buffer overflow case, the code would set p_len = out_len - len - 2, -then len = len + plen = out_len - 2, and check if len >= out_len - 1, -which is never the case. Rather, set p_len = out_len - len -1, and -check the length again before appending the underscore. - -Fixes: 18176202e75c "Read wwid from sysfs vpg_pg83 attribute" -Signed-off-by: Martin Wilck ---- - libmultipath/discovery.c | 11 +++++++++-- - 1 file changed, 9 insertions(+), 2 deletions(-) - -diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c -index a852843..9e99d9d 100644 ---- a/libmultipath/discovery.c -+++ b/libmultipath/discovery.c -@@ -1151,8 +1151,11 @@ parse_vpd_pg83(const unsigned char *in, size_t in_len, - p = vpd; - while ((p = memchr(vpd, ' ', vpd_len))) { - p_len = p - vpd; -- if (len + p_len > out_len - 1) -- p_len = out_len - len - 2; -+ if (len + p_len > out_len - 1) { -+ condlog(1, "%s: WWID overflow, type 1, %d/%lu bytes required", -+ __func__, len + p_len, out_len); -+ p_len = out_len - len - 1; -+ } - memcpy(out + len, vpd, p_len); - len += p_len; - if (len >= out_len - 1) { -@@ -1161,6 +1164,10 @@ parse_vpd_pg83(const unsigned char *in, size_t in_len, - } - out[len] = '_'; - len ++; -+ if (len >= out_len - 1) { -+ out[len] = '\0'; -+ break; -+ } - vpd = p; - vpd_len -= p_len; - while (vpd && *vpd == ' ') { --- -1.8.3.1 - - diff --git a/0012-RH-Remove-the-property-blacklist-exception-builtin.patch b/0051-RH-Remove-the-property-blacklist-exception-builtin.patch similarity index 56% rename from 0012-RH-Remove-the-property-blacklist-exception-builtin.patch rename to 0051-RH-Remove-the-property-blacklist-exception-builtin.patch index 87eba36..f760f87 100644 --- a/0012-RH-Remove-the-property-blacklist-exception-builtin.patch +++ b/0051-RH-Remove-the-property-blacklist-exception-builtin.patch @@ -13,15 +13,16 @@ it. Signed-off-by: Benjamin Marzinski --- - libmultipath/blacklist.c | 12 ++++-------- - multipath/multipath.conf.5 | 14 ++++++-------- - 2 files changed, 10 insertions(+), 16 deletions(-) + libmultipath/blacklist.c | 9 ++------- + multipath/multipath.conf.5 | 11 ++++++----- + tests/blacklist.c | 6 ++---- + 3 files changed, 10 insertions(+), 16 deletions(-) diff --git a/libmultipath/blacklist.c b/libmultipath/blacklist.c -index 318ec03..c0cfbca 100644 +index db58ccca..0c58aa32 100644 --- a/libmultipath/blacklist.c +++ b/libmultipath/blacklist.c -@@ -204,12 +204,6 @@ setup_default_blist (struct config * conf) +@@ -187,12 +187,6 @@ setup_default_blist (struct config * conf) if (store_ble(conf->blist_devnode, str, ORIGIN_DEFAULT)) return 1; @@ -34,14 +35,10 @@ index 318ec03..c0cfbca 100644 vector_foreach_slot (conf->hwtable, hwe, i) { if (hwe->bl_product) { if (find_blacklist_device(conf->blist_device, -@@ -394,9 +388,11 @@ filter_property(struct config * conf, struct udev_device * udev) - if (udev) { - /* - * This is the inverse of the 'normal' matching; -- * the environment variable _has_ to match. -+ * the environment variable _has_ to match -+ * if a whitelist is present. - */ +@@ -394,7 +388,8 @@ filter_property(struct config *conf, struct udev_device *udev, int lvl, + *uid_attribute != '\0'; + bool uid_attr_seen = false; + - r = MATCH_PROPERTY_BLIST_MISSING; + if (VECTOR_SIZE(conf->elist_property)) + r = MATCH_PROPERTY_BLIST_MISSING; @@ -49,10 +46,10 @@ index 318ec03..c0cfbca 100644 udev_device_get_properties_list_entry(udev)) { diff --git a/multipath/multipath.conf.5 b/multipath/multipath.conf.5 -index 6333366..3dab26b 100644 +index 5adaced6..42a192f6 100644 --- a/multipath/multipath.conf.5 +++ b/multipath/multipath.conf.5 -@@ -1195,16 +1195,14 @@ keywords. Both are regular expressions. For a full description of these keywords +@@ -1296,9 +1296,14 @@ keywords. Both are regular expressions. For a full description of these keywords Regular expression for an udev property. All devices that have matching udev properties will be excluded/included. The handling of the \fIproperty\fR keyword is special, @@ -61,20 +58,48 @@ index 6333366..3dab26b 100644 +least one whitelisted udev property; otherwise they're treated as blacklisted, and the message "\fIblacklisted, udev property missing\fR" is displayed in the logs. --. --.RS --.PP --The default \fIblacklist exception\fR is: \fB(SCSI_IDENT_|ID_WWN)\fR, causing --well-behaved SCSI devices and devices that provide a WWN (World Wide Number) --to be included, and all others to be excluded. --.RE +For example, setting the property blacklist_exception to +\fB(SCSI_IDENT_|ID_WWN)\fR, will cause well-behaved SCSI devices and devices +that provide a WWN (World Wide Number) to be included, and all others to be +excluded. This works to exclude most non-multipathable devices. + . + .RS + .PP +@@ -1309,10 +1314,6 @@ Blacklisting by missing properties is only applied to devices which do have the + property specified by \fIuid_attribute\fR (e.g. \fIID_SERIAL\fR) + set. Previously, it was applied to every device, possibly causing devices to be + blacklisted because of temporary I/O error conditions. +-.PP +-The default \fIblacklist exception\fR is: \fB(SCSI_IDENT_|ID_WWN)\fR, causing +-well-behaved SCSI devices and devices that provide a WWN (World Wide Number) +-to be included, and all others to be excluded. + .RE .TP .B protocol - Regular expression for the protocol of a device to be excluded/included. +diff --git a/tests/blacklist.c b/tests/blacklist.c +index d5c40898..d20e97af 100644 +--- a/tests/blacklist.c ++++ b/tests/blacklist.c +@@ -380,7 +380,7 @@ static void test_property_missing(void **state) + conf.blist_property = blist_property_wwn; + expect_condlog(3, "sdb: blacklisted, udev property missing\n"); + assert_int_equal(filter_property(&conf, &udev, 3, "ID_SERIAL"), +- MATCH_PROPERTY_BLIST_MISSING); ++ MATCH_NOTHING); + assert_int_equal(filter_property(&conf, &udev, 3, "ID_BLAH"), + MATCH_NOTHING); + assert_int_equal(filter_property(&conf, &udev, 3, ""), +@@ -472,9 +472,7 @@ static void test_filter_path_missing1(void **state) + conf.blist_device = blist_device_foo_bar; + conf.blist_protocol = blist_protocol_fcp; + conf.blist_wwid = blist_wwid_xyzzy; +- expect_condlog(3, "sdb: blacklisted, udev property missing\n"); +- assert_int_equal(filter_path(&conf, &miss1_pp), +- MATCH_PROPERTY_BLIST_MISSING); ++ assert_int_equal(filter_path(&conf, &miss1_pp), MATCH_NOTHING); + } + + /* This one matches the property whitelist, to test the other missing -- -2.7.4 +2.17.2 diff --git a/0051-libmultipath-Fix-buffer-overflow-in-parse_vpd_pg80.patch b/0051-libmultipath-Fix-buffer-overflow-in-parse_vpd_pg80.patch deleted file mode 100644 index 627443f..0000000 --- a/0051-libmultipath-Fix-buffer-overflow-in-parse_vpd_pg80.patch +++ /dev/null @@ -1,31 +0,0 @@ -From c00ee906582b87aeced4b2fb0caa011edb5cbc17 Mon Sep 17 00:00:00 2001 -From: Martin Wilck -Date: Mon, 24 Jun 2019 11:27:41 +0200 -Subject: [PATCH 4/8] libmultipath: Fix buffer overflow in parse_vpd_pg80() - -We set out[len] = '\0' later, thus we should set len to no more then -out_len - 1. - -Fixes: 756ef73b7197 "Separate out vpd parsing functions" -Signed-off-by: Martin Wilck ---- - libmultipath/discovery.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c -index 9e99d9d..416823b 100644 ---- a/libmultipath/discovery.c -+++ b/libmultipath/discovery.c -@@ -999,7 +999,7 @@ parse_vpd_pg80(const unsigned char *in, char *out, size_t out_len) - if (len >= out_len) { - condlog(2, "vpd pg80 overflow, %d/%d bytes required", - len, (int)out_len); -- len = out_len; -+ len = out_len - 1; - } - if (len > 0) { - memcpy(out, in + 4, len); --- -1.8.3.1 - - diff --git a/0052-RH-don-t-start-without-a-config-file.patch b/0052-RH-don-t-start-without-a-config-file.patch new file mode 100644 index 0000000..4712300 --- /dev/null +++ b/0052-RH-don-t-start-without-a-config-file.patch @@ -0,0 +1,106 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Wed, 15 Oct 2014 10:39:30 -0500 +Subject: [PATCH] RH: don't start without a config file + +If /etc/multipath.conf doesn't exist, don't start multipathd and blacklist +all devices when running multipath. A completely blank configuration file +is almost never what users want. Also, people may have the multipath +packages installed but don't want to use them. This patch provides a +simple way to disable multipath. Simply removing or renaming +/etc/multipath.conf will keep multipath from doing anything. + +Signed-off-by: Benjamin Marzinski +--- + libmultipath/config.c | 15 +++++++++++++++ + libmultipath/config.h | 1 + + multipath/multipath.rules | 1 + + multipathd/multipathd.8 | 2 ++ + multipathd/multipathd.service | 1 + + 5 files changed, 20 insertions(+) + +diff --git a/libmultipath/config.c b/libmultipath/config.c +index 658bec8b..1c02e230 100644 +--- a/libmultipath/config.c ++++ b/libmultipath/config.c +@@ -26,6 +26,7 @@ + #include "devmapper.h" + #include "mpath_cmd.h" + #include "propsel.h" ++#include "version.h" + + static int + hwe_strmatch (const struct hwentry *hwe1, const struct hwentry *hwe2) +@@ -778,6 +779,20 @@ load_config (char * file) + goto out; + } + factorize_hwtable(conf->hwtable, builtin_hwtable_size, file); ++ } else { ++ condlog(0, "/etc/multipath.conf does not exist, blacklisting all devices."); ++ if (conf->blist_devnode == NULL) { ++ conf->blist_devnode = vector_alloc(); ++ if (!conf->blist_devnode) { ++ condlog(0, "cannot allocate blacklist\n"); ++ goto out; ++ } ++ } ++ if (store_ble(conf->blist_devnode, strdup(".*"), ++ ORIGIN_NO_CONFIG)) { ++ condlog(0, "cannot store default no-config blacklist\n"); ++ goto out; ++ } + } + + conf->processed_main_config = 1; +diff --git a/libmultipath/config.h b/libmultipath/config.h +index 92c61a0d..160867cd 100644 +--- a/libmultipath/config.h ++++ b/libmultipath/config.h +@@ -9,6 +9,7 @@ + + #define ORIGIN_DEFAULT 0 + #define ORIGIN_CONFIG 1 ++#define ORIGIN_NO_CONFIG 2 + + /* + * In kernel, fast_io_fail == 0 means immediate failure on rport delete. +diff --git a/multipath/multipath.rules b/multipath/multipath.rules +index 9df11a95..0486bf70 100644 +--- a/multipath/multipath.rules ++++ b/multipath/multipath.rules +@@ -9,6 +9,7 @@ IMPORT{cmdline}="nompath" + ENV{nompath}=="?*", GOTO="end_mpath" + IMPORT{cmdline}="multipath" + ENV{multipath}=="off", GOTO="end_mpath" ++TEST!="/etc/multipath.conf", GOTO="end_mpath" + + ENV{DEVTYPE}!="partition", GOTO="test_dev" + IMPORT{parent}="DM_MULTIPATH_DEVICE_PATH" +diff --git a/multipathd/multipathd.8 b/multipathd/multipathd.8 +index 048a838d..8bd47a80 100644 +--- a/multipathd/multipathd.8 ++++ b/multipathd/multipathd.8 +@@ -39,6 +39,8 @@ map regains its maximum performance and redundancy. + This daemon executes the external \fBmultipath\fR tool when events occur. + In turn, the multipath tool signals the multipathd daemon when it is done with + devmap reconfiguration, so that it can refresh its failed path list. ++ ++In this Linux distribution, multipathd does not run unless a /etc/multipath.conf file exists. + . + . + .\" ---------------------------------------------------------------------------- +diff --git a/multipathd/multipathd.service b/multipathd/multipathd.service +index ba24983e..17434cef 100644 +--- a/multipathd/multipathd.service ++++ b/multipathd/multipathd.service +@@ -4,6 +4,7 @@ Wants=systemd-udev-trigger.service systemd-udev-settle.service + Before=iscsi.service iscsid.service lvm2-activation-early.service + Before=local-fs-pre.target blk-availability.service + After=multipathd.socket systemd-udev-trigger.service systemd-udev-settle.service ++ConditionPathExists=/etc/multipath.conf + DefaultDependencies=no + Conflicts=shutdown.target + ConditionKernelCommandLine=!nompath +-- +2.17.2 + diff --git a/0052-libmultipath-fix-another-WWID-overflow-in-parse_vpd_.patch b/0052-libmultipath-fix-another-WWID-overflow-in-parse_vpd_.patch deleted file mode 100644 index abeb26d..0000000 --- a/0052-libmultipath-fix-another-WWID-overflow-in-parse_vpd_.patch +++ /dev/null @@ -1,31 +0,0 @@ -From f39a97d2972e3959985c2771f1fc53c45897acfb Mon Sep 17 00:00:00 2001 -From: Martin Wilck -Date: Mon, 24 Jun 2019 11:27:43 +0200 -Subject: [PATCH 5/8] libmultipath: fix another WWID overflow in - parse_vpd_pg83() - -This one is an obvious typo. - -Fixes: 18176202e75c "Read wwid from sysfs vpg_pg83 attribute" -Signed-off-by: Martin Wilck ---- - libmultipath/discovery.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c -index 416823b..c57369c 100644 ---- a/libmultipath/discovery.c -+++ b/libmultipath/discovery.c -@@ -1136,7 +1136,7 @@ parse_vpd_pg83(const unsigned char *in, size_t in_len, - len = 1; - vpd += 4; - vpd_len -= 4; -- if (vpd_len > out_len + 2) -+ if (vpd_len > out_len - 2) - vpd_len = out_len - 2; - memcpy(out, vpd, vpd_len); - len = vpd_len + 1; --- -1.8.3.1 - - diff --git a/0053-RH-use-rpm-optflags-if-present.patch b/0053-RH-use-rpm-optflags-if-present.patch new file mode 100644 index 0000000..d6c97c1 --- /dev/null +++ b/0053-RH-use-rpm-optflags-if-present.patch @@ -0,0 +1,60 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Wed, 19 Apr 2017 06:10:01 -0500 +Subject: [PATCH] RH: use rpm optflags if present + +Use the passed in optflags when compiling as an RPM, and keep the +default flags as close as possible to the current fedora flags, while +still being generic. + +Signed-off-by: Benjamin Marzinski +--- + Makefile.inc | 24 ++++++++++++++++++------ + 1 file changed, 18 insertions(+), 6 deletions(-) + +diff --git a/Makefile.inc b/Makefile.inc +index 873fb62f..479523bc 100644 +--- a/Makefile.inc ++++ b/Makefile.inc +@@ -89,15 +89,27 @@ TEST_CC_OPTION = $(shell \ + echo "$(2)"; \ + fi) + +-STACKPROT := $(call TEST_CC_OPTION,-fstack-protector-strong,-fstack-protector) + ERROR_DISCARDED_QUALIFIERS := $(call TEST_CC_OPTION,-Werror=discarded-qualifiers,) + WNOCLOBBERED := $(call TEST_CC_OPTION,-Wno-clobbered -Wno-error=clobbered,) + +-OPTFLAGS := -O2 -g $(STACKPROT) --param=ssp-buffer-size=4 +-WARNFLAGS := -Werror -Wall -Wextra -Wformat=2 -Werror=implicit-int \ ++ifndef RPM_OPT_FLAGS ++ STACKPROT := $(call TEST_CC_OPTION,-fstack-protector-strong,-fstack-protector) ++ OPTFLAGS := -O2 -g -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions \ ++ $(STACKPROT) -grecord-gcc-switches \ ++ -fasynchronous-unwind-tables --param=ssp-buffer-size=4 ++ ifeq ($(shell test -f /usr/lib/rpm/redhat/redhat-hardened-cc1 && echo 1),1) ++ OPTFLAGS += -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 ++ endif ++ ifeq ($(shell test -f /usr/lib/rpm/redhat/redhat-annobin-cc1 && echo 1),1) ++ OPTFLAGS += -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 ++ endif ++else ++ OPTFLAGS := $(RPM_OPT_FLAGS) --param=ssp-buffer-size=4 ++endif ++WARNFLAGS := -Werror -Wextra -Wformat=2 -Werror=implicit-int \ + -Werror=implicit-function-declaration -Werror=format-security \ +- $(WNOCLOBBERED) -Werror=cast-qual $(ERROR_DISCARDED_QUALIFIERS) +-CPPFLAGS := -Wp,-D_FORTIFY_SOURCE=2 ++ $(WNOCLOBBERED) -Werror=cast-qual $(ERROR_DISCARDED_QUALIFIERS) \ ++ -Wstrict-prototypes + CFLAGS := $(CFLAGS) $(OPTFLAGS) $(WARNFLAGS) -pipe \ + -DBIN_DIR=\"$(bindir)\" -DLIB_STRING=\"${LIB}\" -DRUN_DIR=\"${RUN}\" \ + -MMD -MP +@@ -135,4 +147,4 @@ check_file = $(shell \ + + %.o: %.c + @echo building $@ because of $? +- $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< ++ $(CC) $(CFLAGS) -c -o $@ $< +-- +2.17.2 + diff --git a/0053-libmultipath-fix-possible-WWID-overflow-in-parse_vpd.patch b/0053-libmultipath-fix-possible-WWID-overflow-in-parse_vpd.patch deleted file mode 100644 index 256de9a..0000000 --- a/0053-libmultipath-fix-possible-WWID-overflow-in-parse_vpd.patch +++ /dev/null @@ -1,66 +0,0 @@ -From e8a63834f966cc605429c5b2ab3edc79a46c3bff Mon Sep 17 00:00:00 2001 -From: Martin Wilck -Date: Mon, 24 Jun 2019 11:27:42 +0200 -Subject: [PATCH 6/8] libmultipath: fix possible WWID overflow in - parse_vpd_pg83() - -We have to check the remaining length before printing to the -output buffer, not afterwards. - -Fixes: 18176202e75c "Read wwid from sysfs vpg_pg83 attribute" -Signed-off-by: Martin Wilck ---- - libmultipath/discovery.c | 16 +++------------- - 1 file changed, 3 insertions(+), 13 deletions(-) - -diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c -index c57369c..34d425b 100644 ---- a/libmultipath/discovery.c -+++ b/libmultipath/discovery.c -@@ -1098,11 +1098,9 @@ parse_vpd_pg83(const unsigned char *in, size_t in_len, - int i; - - len = sprintf(out, "%d", vpd_type); -- for (i = 0; i < vpd_len; i++) { -+ for (i = 0; i < vpd_len && len < out_len - 2; i++) { - len += sprintf(out + len, - "%02x", vpd[i]); -- if (len >= out_len) -- break; - } - } else if (vpd_type == 0x8) { - if (!memcmp("eui.", vpd, 4)) { -@@ -1110,27 +1108,19 @@ parse_vpd_pg83(const unsigned char *in, size_t in_len, - len = 1; - vpd += 4; - vpd_len -= 4; -- for (i = 0; i < vpd_len; i++) { -+ for (i = 0; i < vpd_len && len < out_len - 1; i++) { - len += sprintf(out + len, "%c", - tolower(vpd[i])); -- if (len >= out_len) -- break; - } -- len = vpd_len + 1; -- out[len] = '\0'; - } else if (!memcmp("naa.", vpd, 4)) { - out[0] = '3'; - len = 1; - vpd += 4; - vpd_len -= 4; -- for (i = 0; i < vpd_len; i++) { -+ for (i = 0; i < vpd_len && len < out_len - 1; i++) { - len += sprintf(out + len, "%c", - tolower(vpd[i])); -- if (len >= out_len) -- break; - } -- len = vpd_len + 1; -- out[len] = '\0'; - } else { - out[0] = '8'; - len = 1; --- -1.8.3.1 - - diff --git a/0013-RH-add-mpathconf.patch b/0054-RH-add-mpathconf.patch similarity index 74% rename from 0013-RH-add-mpathconf.patch rename to 0054-RH-add-mpathconf.patch index 10af844..6480711 100644 --- a/0013-RH-add-mpathconf.patch +++ b/0054-RH-add-mpathconf.patch @@ -10,22 +10,31 @@ command line. But, mostly it is used to get a multipath.conf file with the OS defaults, and to enable and disable multipathing via a single command. -Changed-by: hy-euler - Do not modify the file libmultipath/config.c, because it modifies - another patch which is not present in openEuler. - Signed-off-by: Benjamin Marzinski -Signed-off-by: hy-euler --- + libmultipath/config.c | 2 + multipath/Makefile | 5 + - multipath/mpathconf | 464 ++++++++++++++++++++++++++++++++++++++++++++++++++ - multipath/mpathconf.8 | 119 +++++++++++++ - 3 files changed, 588 insertions(+) + multipath/mpathconf | 565 ++++++++++++++++++++++++++++++++++++++++++ + multipath/mpathconf.8 | 135 ++++++++++ + 4 files changed, 707 insertions(+) create mode 100644 multipath/mpathconf create mode 100644 multipath/mpathconf.8 +diff --git a/libmultipath/config.c b/libmultipath/config.c +index 1c02e230..a253a936 100644 +--- a/libmultipath/config.c ++++ b/libmultipath/config.c +@@ -781,6 +781,8 @@ load_config (char * file) + factorize_hwtable(conf->hwtable, builtin_hwtable_size, file); + } else { + condlog(0, "/etc/multipath.conf does not exist, blacklisting all devices."); ++ condlog(0, "You can run \"/sbin/mpathconf --enable\" to create"); ++ condlog(0, "/etc/multipath.conf. See man mpathconf(8) for more details"); + if (conf->blist_devnode == NULL) { + conf->blist_devnode = vector_alloc(); + if (!conf->blist_devnode) { diff --git a/multipath/Makefile b/multipath/Makefile -index b9bbb3c..e720c7f 100644 +index b9bbb3cf..e720c7f6 100644 --- a/multipath/Makefile +++ b/multipath/Makefile @@ -18,10 +18,12 @@ $(EXEC): $(OBJS) $(multipathdir)/libmultipath.so $(mpathcmddir)/libmpathcmd.so @@ -60,10 +69,10 @@ index b9bbb3c..e720c7f 100644 $(RM) core *.o $(EXEC) *.gz diff --git a/multipath/mpathconf b/multipath/mpathconf new file mode 100644 -index 0000000..e839134 +index 00000000..f0d09cbb --- /dev/null +++ b/multipath/mpathconf -@@ -0,0 +1,464 @@ +@@ -0,0 +1,565 @@ +#!/bin/bash +# +# Copyright (C) 2010 Red Hat, Inc. All rights reserved. @@ -83,7 +92,7 @@ index 0000000..e839134 +# This program was largely ripped off from lvmconf +# + -+unset ENABLE FIND FRIENDLY MODULE MULTIPATHD HAVE_DISABLE HAVE_WWID_DISABLE HAVE_FIND HAVE_BLACKLIST HAVE_EXCEPTIONS HAVE_DEFAULTS HAVE_FRIENDLY HAVE_MULTIPATHD HAVE_MODULE HAVE_OUTFILE SHOW_STATUS CHANGED_CONFIG WWID_LIST ++unset ENABLE FIND FRIENDLY PROPERTY FOREIGN MODULE MULTIPATHD HAVE_DISABLE HAVE_WWID_DISABLE HAVE_FIND HAVE_BLACKLIST HAVE_EXCEPTIONS HAVE_DEFAULTS HAVE_FRIENDLY HAVE_PROPERTY HAVE_FOREIGN HAVE_MULTIPATHD HAVE_MODULE HAVE_OUTFILE SHOW_STATUS CHANGED_CONFIG WWID_LIST + +DEFAULT_CONFIG="# device-mapper-multipath configuration file + @@ -98,10 +107,6 @@ index 0000000..e839134 +defaults { + user_friendly_names yes + find_multipaths yes -+} -+ -+blacklist_exceptions { -+ property \"(SCSI_IDENT_|ID_WWN)\" +}" + +CONFIGFILE="/etc/multipath.conf" @@ -120,6 +125,8 @@ index 0000000..e839134 + echo "Only allow certain wwids (instead of enable): --allow " + echo "Set user_friendly_names (Default y): --user_friendly_names " + echo "Set find_multipaths (Default y): --find_multipaths " ++ echo "Set default property blacklist (Default n): --property_blacklist " ++ echo "Set enable_foreign to show foreign devices (Default n): --enable_foreign " + echo "Load the dm-multipath modules on enable (Default y): --with_module " + echo "start/stop/reload multipathd (Default n): --with_multipathd " + echo "select output file (Default /etc/multipath.conf): --outfile " @@ -221,6 +228,24 @@ index 0000000..e839134 + exit 1 + fi + ;; ++ --property_blacklist) ++ if [ -n "$2" ]; then ++ PROPERTY=$2 ++ shift 2 ++ else ++ usage ++ exit 1 ++ fi ++ ;; ++ --enable_foreign) ++ if [ -n "$2" ]; then ++ FOREIGN=$2 ++ shift 2 ++ else ++ usage ++ exit 1 ++ fi ++ ;; + --with_module) + if [ -n "$2" ]; then + MODULE=$2 @@ -258,11 +283,13 @@ index 0000000..e839134 + +function validate_args +{ -+ if [ "$ENABLE" = "0" ] && [ -n "$FRIENDLY" -o -n "$FIND" -o -n "$MODULE" ]; then ++ if [ "$ENABLE" = "0" ] && [ -n "$FRIENDLY" -o -n "$FIND" -o -n "$PROPERTY" -o -n "$MODULE" -o -n "$FOREIGN" ]; then + echo "ignoring extra parameters on disable" + FRIENDLY="" + FIND="" ++ PROPERTY="" + MODULE="" ++ FOREIGN="" + fi + if [ -n "$FRIENDLY" ] && [ "$FRIENDLY" != "y" -a "$FRIENDLY" != "n" ]; then + echo "--user_friendly_names must be either 'y' or 'n'" @@ -272,7 +299,15 @@ index 0000000..e839134 + echo "--find_multipaths must be either 'y' or 'n'" + exit 1 + fi -+ if [ -z "$ENABLE" -a -z "$FIND" -a -z "$FRIENDLY" ]; then ++ if [ -n "$PROPERTY" ] && [ "$PROPERTY" != "y" -a "$PROPERTY" != "n" ]; then ++ echo "--property_blacklist must be either 'y' or 'n'" ++ exit 1 ++ fi ++ if [ -n "$FOREIGN" ] && [ "$FOREIGN" != "y" -a "$FOREIGN" != "n" ]; then ++ echo "--enable_foreign must be either 'y' or 'n'" ++ exit 1 ++ fi ++ if [ -z "$ENABLE" -a -z "$FIND" -a -z "$FRIENDLY" -a -z "$PROPERTY" -a -z "$FOREIGN" ]; then + SHOW_STATUS=1 + fi + if [ -n "$MODULE" ] && [ "$MODULE" != "y" -a "$MODULE" != "n" ]; then @@ -373,6 +408,25 @@ index 0000000..e839134 + elif sed -n '/^defaults[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*user_friendly_names[[:space:]]*\(no\|0\)" ; then + HAVE_FRIENDLY=0 + fi ++ if sed -n '/^defaults[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*#[[:space:]]*enable_foreign" ; then ++ HAVE_FOREIGN=0 ++ elif sed -n '/^defaults[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*enable_foreign[[:space:]]*\"\^\$\"" ; then ++ HAVE_FOREIGN=1 ++ elif sed -n '/^defaults[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*enable_foreign[[:space:]]*\"NONE\"" ; then ++ HAVE_FOREIGN=1 ++ elif sed -n '/^defaults[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*enable_foreign[[:space:]] \"\.\?\*\"" ; then ++ HAVE_FOREIGN=2 ++ elif sed -n '/^defaults[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*enable_foreign" ; then ++ HAVE_FOREIGN=3 ++ fi ++fi ++ ++if [ "$HAVE_EXCEPTIONS" = "1" ]; then ++ if sed -n '/^blacklist_exceptions[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*property[[:space:]]*\"(SCSI_IDENT_|ID_WWN)\"" ; then ++ HAVE_PROPERTY=1 ++ elif sed -n '/^blacklist_exceptions[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*#[[:space:]]*property[[:space:]]*\"(SCSI_IDENT_|ID_WWN)\"" ; then ++ HAVE_PROPERTY=0 ++ fi +fi + +if [ -n "$SHOW_STATUS" ]; then @@ -391,6 +445,20 @@ index 0000000..e839134 + else + echo "user_friendly_names is enabled" + fi ++ if [ -z "$HAVE_PROPERTY" -o "$HAVE_PROPERTY" = 0 ]; then ++ echo "default property blacklist is disabled" ++ else ++ echo "default property blacklist is enabled" ++ fi ++ if [ -z "$HAVE_FOREIGN" -o "$HAVE_FOREIGN" = 0 ]; then ++ echo "enable_foreign is not set (no foreign multipath devices will be shown)" ++ elif [ "$HAVE_FOREIGN" = 1 ]; then ++ echo "enable_foreign is set (no foreign multipath devices will be shown)" ++ elif [ "$HAVE_FOREIGN" = 2 ]; then ++ echo "enable_foreign is set (all foreign multipath devices will be shown)" ++ else ++ echo "enable_foreign is set (foreign multipath devices may not be shown)" ++ fi + if [ -n "$HAVE_MODULE" ]; then + if [ "$HAVE_MODULE" = 1 ]; then + echo "dm_multipath module is loaded" @@ -498,6 +566,48 @@ index 0000000..e839134 + fi +fi + ++if [ "$PROPERTY" = "n" ]; then ++ if [ "$HAVE_PROPERTY" = 1 ]; then ++ sed -i '/^blacklist_exceptions[[:space:]]*{/,/^}/ s/^[[:space:]]*property[[:space:]]*\"(SCSI_IDENT_|ID_WWN)\"/# property \"(SCSI_IDENT_|ID_WWN)\"/' $TMPFILE ++ CHANGED_CONFIG=1 ++ fi ++elif [ "$PROPERTY" = "y" ]; then ++ if [ -z "$HAVE_PROPERTY" -a -z "$HAVE_EXCEPTIONS" ]; then ++ cat >> $TMPFILE << _EOF_ ++ ++blacklist_exceptions { ++ property "(SCSI_IDENT_|ID_WWN)" ++} ++_EOF_ ++ CHANGED_CONFIG=1 ++ elif [ -z "$HAVE_PROPERTY" ]; then ++ sed -i '/^blacklist_exceptions[[:space:]]*{/ a\ ++ property "(SCSI_IDENT_|ID_WWN)" ++' $TMPFILE ++ CHANGED_CONFIG=1 ++ elif [ "$HAVE_PROPERTY" = 0 ]; then ++ sed -i '/^blacklist_exceptions[[:space:]]*{/,/^}/ s/^[[:space:]]*#[[:space:]]*property[[:space:]]*\"(SCSI_IDENT_|ID_WWN)\"/ property \"(SCSI_IDENT_|ID_WWN)\"/' $TMPFILE ++ CHANGED_CONFIG=1 ++ fi ++fi ++ ++if [ "$FOREIGN" = "y" ]; then ++ if [ -z "$HAVE_FOREIGN" ]; then ++ sed -i '/^defaults[[:space:]]*{/ a\ ++ enable_foreign ".*" ++' $TMPFILE ++ CHANGED_CONFIG=1 ++ elif [ "$HAVE_FOREIGN" = 0 -o "$HAVE_FOREIGN" = 1 -o "$HAVE_FOREIGN" = 3 ]; then ++ sed -i '/^defaults[[:space:]]*{/,/^}/ s/^[[:space:]]*#\?[[:space:]]*enable_foreign.*$/ enable_foreign ".*"/' $TMPFILE ++ CHANGED_CONFIG=1 ++ fi ++elif [ "$FOREIGN" = "n" ]; then ++ if [ "$HAVE_FOREIGN" = 2 -o "$HAVE_FOREIGN" = 3 ]; then ++ sed -i '/^defaults[[:space:]]*{/,/^}/ s/^[[:space:]]*enable_foreign/# enable_foreign/' $TMPFILE ++ CHANGED_CONFIG=1 ++ fi ++fi ++ +if [ -f "$OUTPUTFILE" ]; then + cp $OUTPUTFILE $OUTPUTFILE.old + if [ $? != 0 ]; then @@ -530,10 +640,10 @@ index 0000000..e839134 +fi diff --git a/multipath/mpathconf.8 b/multipath/mpathconf.8 new file mode 100644 -index 0000000..5b7ae0c +index 00000000..b82961d6 --- /dev/null +++ b/multipath/mpathconf.8 -@@ -0,0 +1,119 @@ +@@ -0,0 +1,135 @@ +.TH MPATHCONF 8 "June 2010" "" "Linux Administrator's Manual" +.SH NAME +mpathconf - A tool for configuring device-mapper-multipath @@ -605,7 +715,7 @@ index 0000000..5b7ae0c +mpathconf will not be able to revert back to its previous state. Because +of this, \fB--outfile\fP is required when using \fB--allow\fP. +.TP -+.B --user_friendly_name \fP { \fBy\fP | \fBn\fP } ++.B --user_friendly_names \fP { \fBy\fP | \fBn\fP } +If set to \fBy\fP, this adds the line +.B user_friendly_names yes +to the @@ -619,7 +729,23 @@ index 0000000..5b7ae0c +to the +.B /etc/multipath.conf +defaults section. If set to \fBn\fP, this removes the line, if present. This -+command can be used aldong with any other command. ++command can be used along with any other command. ++.TP ++.B --property_blacklist \fP { \fBy\fP | \fBn\fP } ++If set to \fBy\fP, this adds the line ++.B property "(SCSI_IDENT_|ID_WWN)" ++to the ++.B /etc/multipath.conf ++blacklist_exceptions section. If set to \fBn\fP, this removes the line, if ++present. This command can be used along with any other command. ++.TP ++.B --enable_foreign\fP { \fBy\fP | \fBn\fP } ++If set to \fBn\fP, this adds the line ++.B enable_foreign "^$" ++to the ++.B /etc/multipath.conf ++defaults section. if set to \fBy\fP, this removes the line, if present. This ++command can be used along with any other command. +.TP +.B --outfile \fB\fP +Write the resulting multipath configuration to \fB\fP instead of @@ -654,6 +780,5 @@ index 0000000..5b7ae0c +.SH AUTHOR +Benjamin Marzinski -- -2.7.4 - +2.17.2 diff --git a/0054-libmultipath-fix-parsing-of-SCSI-name-string-iqn-for.patch b/0054-libmultipath-fix-parsing-of-SCSI-name-string-iqn-for.patch deleted file mode 100644 index e2973af..0000000 --- a/0054-libmultipath-fix-parsing-of-SCSI-name-string-iqn-for.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 02748f3907fc95fbbf368ffda4ffb4bbf60f948d Mon Sep 17 00:00:00 2001 -From: Martin Wilck -Date: Mon, 24 Jun 2019 11:27:44 +0200 -Subject: [PATCH 7/8] libmultipath: fix parsing of SCSI name string, iqn format - -Do not overwrite the leading '8'. - -Signed-off-by: Martin Wilck ---- - libmultipath/discovery.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c -index 34d425b..a4769ee 100644 ---- a/libmultipath/discovery.c -+++ b/libmultipath/discovery.c -@@ -1123,12 +1123,11 @@ parse_vpd_pg83(const unsigned char *in, size_t in_len, - } - } else { - out[0] = '8'; -- len = 1; - vpd += 4; - vpd_len -= 4; - if (vpd_len > out_len - 2) - vpd_len = out_len - 2; -- memcpy(out, vpd, vpd_len); -+ memcpy(out + 1, vpd, vpd_len); - len = vpd_len + 1; - out[len] = '\0'; - } --- -1.8.3.1 - - diff --git a/0055-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch b/0055-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch new file mode 100644 index 0000000..a10f147 --- /dev/null +++ b/0055-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch @@ -0,0 +1,169 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Fri, 17 Oct 2014 11:20:34 -0500 +Subject: [PATCH] RH: add wwids from kernel cmdline mpath.wwids with -A + +This patch adds another option to multipath, "-A", which reads +/proc/cmdline for mpath.wwid= options, and adds any wwids it finds +to /etc/multipath/wwids. While this isn't usually important during +normal operation, since these wwids should already be added, it can be +helpful during installation, to make sure that multipath can claim +devices as its own, before LVM or something else makes use of them. The +patch also execs "/sbin/multipath -A" before running multipathd in +multipathd.service + +Signed-off-by: Benjamin Marzinski +--- + libmultipath/wwids.c | 44 +++++++++++++++++++++++++++++++++++ + libmultipath/wwids.h | 1 + + multipath/main.c | 10 ++++++-- + multipath/multipath.8 | 7 +++++- + multipathd/multipathd.service | 1 + + 5 files changed, 60 insertions(+), 3 deletions(-) + +diff --git a/libmultipath/wwids.c b/libmultipath/wwids.c +index 61d9c39e..c7a16636 100644 +--- a/libmultipath/wwids.c ++++ b/libmultipath/wwids.c +@@ -451,3 +451,47 @@ int unmark_failed_wwid(const char *wwid) + print_failed_wwid_result("unmark_failed", wwid, r); + return r; + } ++ ++int remember_cmdline_wwid(void) ++{ ++ FILE *f = NULL; ++ char buf[LINE_MAX], *next, *ptr; ++ int ret = 0; ++ ++ f = fopen("/proc/cmdline", "re"); ++ if (!f) { ++ condlog(0, "can't open /proc/cmdline : %s", strerror(errno)); ++ return -1; ++ } ++ ++ if (!fgets(buf, sizeof(buf), f)) { ++ if (ferror(f)) ++ condlog(0, "read of /proc/cmdline failed : %s", ++ strerror(errno)); ++ else ++ condlog(0, "couldn't read /proc/cmdline"); ++ fclose(f); ++ return -1; ++ } ++ fclose(f); ++ next = buf; ++ while((ptr = strstr(next, "mpath.wwid="))) { ++ ptr += 11; ++ next = strpbrk(ptr, " \t\n"); ++ if (next) { ++ *next = '\0'; ++ next++; ++ } ++ if (strlen(ptr)) { ++ if (remember_wwid(ptr) != 0) ++ ret = -1; ++ } ++ else { ++ condlog(0, "empty mpath.wwid kernel command line option"); ++ ret = -1; ++ } ++ if (!next) ++ break; ++ } ++ return ret; ++} +diff --git a/libmultipath/wwids.h b/libmultipath/wwids.h +index 0c6ee54d..e32a0b0e 100644 +--- a/libmultipath/wwids.h ++++ b/libmultipath/wwids.h +@@ -17,6 +17,7 @@ int remember_wwid(char *wwid); + int check_wwids_file(char *wwid, int write_wwid); + int remove_wwid(char *wwid); + int replace_wwids(vector mp); ++int remember_cmdline_wwid(void); + + enum { + WWID_IS_NOT_FAILED = 0, +diff --git a/multipath/main.c b/multipath/main.c +index 4c43314e..c73f6963 100644 +--- a/multipath/main.c ++++ b/multipath/main.c +@@ -135,7 +135,7 @@ usage (char * progname) + fprintf (stderr, " %s [-v level] [-R retries] -F\n", progname); + fprintf (stderr, " %s [-v level] [-l|-ll] [device]\n", progname); + fprintf (stderr, " %s [-v level] [-a|-w] device\n", progname); +- fprintf (stderr, " %s [-v level] -W\n", progname); ++ fprintf (stderr, " %s [-v level] [-A|-W]\n", progname); + fprintf (stderr, " %s [-v level] [-i] [-c|-C] device\n", progname); + fprintf (stderr, " %s [-v level] [-i] [-u|-U]\n", progname); + fprintf (stderr, " %s [-h|-t|-T]\n", progname); +@@ -149,6 +149,8 @@ usage (char * progname) + " -f flush a multipath device map\n" + " -F flush all multipath device maps\n" + " -a add a device wwid to the wwids file\n" ++ " -A add devices from kernel command line mpath.wwids\n" ++ " parameters to wwids file\n" + " -c check if a device should be a path in a multipath device\n" + " -C check if a multipath device has usable paths\n" + " -q allow queue_if_no_path when multipathd is not running\n" +@@ -893,7 +895,7 @@ main (int argc, char *argv[]) + multipath_conf = conf; + conf->retrigger_tries = 0; + conf->force_sync = 1; +- while ((arg = getopt(argc, argv, ":adDcChl::eFfM:v:p:b:BrR:itTquUwW")) != EOF ) { ++ while ((arg = getopt(argc, argv, ":aAdDcChl::eFfM:v:p:b:BrR:itTquUwW")) != EOF ) { + switch(arg) { + case 1: printf("optarg : %s\n",optarg); + break; +@@ -970,6 +972,10 @@ main (int argc, char *argv[]) + case 'T': + cmd = CMD_DUMP_CONFIG; + break; ++ case 'A': ++ if (remember_cmdline_wwid() != 0) ++ exit(RTVL_FAIL); ++ exit(RTVL_OK); + case 'h': + usage(argv[0]); + exit(RTVL_OK); +diff --git a/multipath/multipath.8 b/multipath/multipath.8 +index 5b29a5d9..0478f4e7 100644 +--- a/multipath/multipath.8 ++++ b/multipath/multipath.8 +@@ -63,7 +63,7 @@ multipath \- Device mapper target autoconfig. + .B multipath + .RB [\| \-v\ \c + .IR level \|] +-.B -W ++.RB [\| \-A | \-W \|] + . + .LP + .B multipath +@@ -145,6 +145,11 @@ device mapper, path checkers ...). + Add the WWID for the specified device to the WWIDs file. + . + .TP ++.B \-A ++Add the WWIDs from any kernel command line \fImpath.wwid\fR parameters to the ++WWIDs file. ++. ++.TP + .B \-w + Remove the WWID for the specified device from the WWIDs file. + . +diff --git a/multipathd/multipathd.service b/multipathd/multipathd.service +index 17434cef..0fbcc46b 100644 +--- a/multipathd/multipathd.service ++++ b/multipathd/multipathd.service +@@ -15,6 +15,7 @@ Type=notify + NotifyAccess=main + LimitCORE=infinity + ExecStartPre=-/sbin/modprobe -a scsi_dh_alua scsi_dh_emc scsi_dh_rdac dm-multipath ++ExecStartPre=-/sbin/multipath -A + ExecStart=/sbin/multipathd -d -s + ExecReload=/sbin/multipathd reconfigure + TasksMax=infinity +-- +2.17.2 + diff --git a/0055-libmultipath-fix-double-free-in-pgpolicyfn-error-pat.patch b/0055-libmultipath-fix-double-free-in-pgpolicyfn-error-pat.patch deleted file mode 100644 index aa13194..0000000 --- a/0055-libmultipath-fix-double-free-in-pgpolicyfn-error-pat.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 27039be7cfd551646425b0ebc43a87e86484c370 Mon Sep 17 00:00:00 2001 -From: Benjamin Marzinski -Date: Fri, 23 Aug 2019 12:48:50 -0500 -Subject: [PATCH 8/8] libmultipath: fix double free in pgpolicyfn error paths - -In the pgpolicy functions, if an error is encountered after -alloc_pathgroup() is called, but before the path group is added to a -multipath device with add_pathgroup(), the pathgroup needs to be cleaned -up by calling free_pathgroup(). However, after the pathgroup has been -added to the multipath device, calling free_pgvec() will clean it up. In -this case, if free_pathgroup() is called first, the recently added -pathgroup will be freed twice. - -Reviewed-by: Martin Wilck -Signed-off-by: Benjamin Marzinski ---- - libmultipath/pgpolicies.c | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/libmultipath/pgpolicies.c b/libmultipath/pgpolicies.c -index 660768a..9acf46a 100644 ---- a/libmultipath/pgpolicies.c -+++ b/libmultipath/pgpolicies.c -@@ -125,7 +125,7 @@ int group_by_node_name(struct multipath * mp) - - /* feed the first path */ - if (store_path(pgp->paths, pp)) -- goto out2; -+ goto out1; - - bitmap[i] = 1; - -@@ -139,7 +139,7 @@ int group_by_node_name(struct multipath * mp) - if (!strncmp(pp->tgt_node_name, pp2->tgt_node_name, - NODE_NAME_SIZE)) { - if (store_path(pgp->paths, pp2)) -- goto out2; -+ goto out1; - - bitmap[j] = 1; - } -@@ -201,7 +201,7 @@ int group_by_serial(struct multipath * mp) - - /* feed the first path */ - if (store_path(pgp->paths, pp)) -- goto out2; -+ goto out1; - - bitmap[i] = 1; - -@@ -214,7 +214,7 @@ int group_by_serial(struct multipath * mp) - - if (0 == strcmp(pp->serial, pp2->serial)) { - if (store_path(pgp->paths, pp2)) -- goto out2; -+ goto out1; - - bitmap[j] = 1; - } -@@ -258,7 +258,7 @@ int one_path_per_group(struct multipath *mp) - goto out1; - - if (store_path(pgp->paths, pp)) -- goto out1; -+ goto out; - } - sort_pathgroups(mp); - free_pathvec(mp->paths, KEEP_PATHS); -@@ -379,7 +379,7 @@ int group_by_prio(struct multipath *mp) - vector_foreach_slot(pathvec, pp, i) { - if (pp->priority == prio) { - if (store_path(pgp->paths, pp)) -- goto out2; -+ goto out1; - - vector_del_slot(pathvec, i); - i--; --- -1.8.3.1 - - diff --git a/0056-RH-warn-on-invalid-regex-instead-of-failing.patch b/0056-RH-warn-on-invalid-regex-instead-of-failing.patch new file mode 100644 index 0000000..4bdd97e --- /dev/null +++ b/0056-RH-warn-on-invalid-regex-instead-of-failing.patch @@ -0,0 +1,121 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Mon, 6 Nov 2017 21:39:28 -0600 +Subject: [PATCH] RH: warn on invalid regex instead of failing + +multipath.conf used to allow "*" as a match everything regular expression, +instead of requiring ".*". Instead of erroring when the old style +regular expressions are used, it should print a warning and convert +them. + +Signed-off-by: Benjamin Marzinski +--- + libmultipath/dict.c | 27 +++++++++++++++++++++------ + libmultipath/parser.c | 13 +++++++++++++ + libmultipath/parser.h | 1 + + 3 files changed, 35 insertions(+), 6 deletions(-) + +diff --git a/libmultipath/dict.c b/libmultipath/dict.c +index 0e9ea387..184d4b22 100644 +--- a/libmultipath/dict.c ++++ b/libmultipath/dict.c +@@ -103,6 +103,21 @@ set_str(vector strvec, void *ptr) + return 0; + } + ++static int ++set_regex(vector strvec, void *ptr) ++{ ++ char **str_ptr = (char **)ptr; ++ ++ if (*str_ptr) ++ FREE(*str_ptr); ++ *str_ptr = set_regex_value(strvec); ++ ++ if (!*str_ptr) ++ return 1; ++ ++ return 0; ++} ++ + static int + set_yes_no(vector strvec, void *ptr) + { +@@ -1504,7 +1519,7 @@ ble_ ## option ## _handler (struct config *conf, vector strvec) \ + if (!conf->option) \ + return 1; \ + \ +- buff = set_value(strvec); \ ++ buff = set_regex_value(strvec); \ + if (!buff) \ + return 1; \ + \ +@@ -1520,7 +1535,7 @@ ble_ ## option ## _ ## name ## _handler (struct config *conf, vector strvec) \ + if (!conf->option) \ + return 1; \ + \ +- buff = set_value(strvec); \ ++ buff = set_regex_value(strvec); \ + if (!buff) \ + return 1; \ + \ +@@ -1623,16 +1638,16 @@ device_handler(struct config *conf, vector strvec) + return 0; + } + +-declare_hw_handler(vendor, set_str) ++declare_hw_handler(vendor, set_regex) + declare_hw_snprint(vendor, print_str) + +-declare_hw_handler(product, set_str) ++declare_hw_handler(product, set_regex) + declare_hw_snprint(product, print_str) + +-declare_hw_handler(revision, set_str) ++declare_hw_handler(revision, set_regex) + declare_hw_snprint(revision, print_str) + +-declare_hw_handler(bl_product, set_str) ++declare_hw_handler(bl_product, set_regex) + declare_hw_snprint(bl_product, print_str) + + declare_hw_handler(hwhandler, set_str) +diff --git a/libmultipath/parser.c b/libmultipath/parser.c +index 11a6168c..a7285a35 100644 +--- a/libmultipath/parser.c ++++ b/libmultipath/parser.c +@@ -384,6 +384,19 @@ oom: + return NULL; + } + ++void * ++set_regex_value(vector strvec) ++{ ++ char *buff = set_value(strvec); ++ ++ if (buff && strcmp("*", buff) == 0) { ++ condlog(0, "Invalid regular expression \"*\" in multipath.conf. Using \".*\""); ++ FREE(buff); ++ return strdup(".*"); ++ } ++ return buff; ++} ++ + /* non-recursive configuration stream handler */ + static int kw_level = 0; + +diff --git a/libmultipath/parser.h b/libmultipath/parser.h +index 62906e98..b7917052 100644 +--- a/libmultipath/parser.h ++++ b/libmultipath/parser.h +@@ -77,6 +77,7 @@ extern void dump_keywords(vector keydump, int level); + extern void free_keywords(vector keywords); + extern vector alloc_strvec(char *string); + extern void *set_value(vector strvec); ++extern void *set_regex_value(vector strvec); + extern int process_file(struct config *conf, char *conf_file); + extern struct keyword * find_keyword(vector keywords, vector v, char * name); + int snprint_keyword(char *buff, int len, char *fmt, struct keyword *kw, +-- +2.17.2 + diff --git a/0056-libmultipath-fix-files-read-from-config_dir.patch b/0056-libmultipath-fix-files-read-from-config_dir.patch deleted file mode 100644 index e0b7c6a..0000000 --- a/0056-libmultipath-fix-files-read-from-config_dir.patch +++ /dev/null @@ -1,41 +0,0 @@ -From dbd6e0f8ad3d145c73175a6f99eab401408d9d54 Mon Sep 17 00:00:00 2001 -From: Enzo Matsumiya -Date: Fri, 7 Feb 2020 11:45:25 -0300 -Subject: [PATCH] libmultipath: fix files read from config_dir - -If config_dir contains a file named, for example, "some.conf.backup", this file -will still be loaded by multipath because process_config_dir() -(libmultipath/config.c) uses strstr() to check for the ".conf" extension, but -that doesn't guarantee that ".conf" is at the end of the filename. - -This patch will make sure that only files ending in ".conf" are loaded from -config_dir. - -This is to comply with config_dir entry description in man 5 multipath.conf. - -Signed-off-by: Enzo Matsumiya ---- - libmultipath/config.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/libmultipath/config.c b/libmultipath/config.c -index 5af7af5..7c641a3 100644 ---- a/libmultipath/config.c -+++ b/libmultipath/config.c -@@ -669,8 +669,11 @@ process_config_dir(struct config *conf, vector keywords, char *dir) - sr.n = n; - pthread_cleanup_push_cast(free_scandir_result, &sr); - for (i = 0; i < n; i++) { -- if (!strstr(namelist[i]->d_name, ".conf")) -+ char *ext = strrchr(namelist[i]->d_name, '.'); -+ -+ if (!ext || strcmp(ext, ".conf")) - continue; -+ - old_hwtable_size = VECTOR_SIZE(conf->hwtable); - snprintf(path, LINE_MAX, "%s/%s", dir, namelist[i]->d_name); - path[LINE_MAX-1] = '\0'; --- -1.8.3.1 - - diff --git a/0045-fix-find-multipath-failure.patch b/0057-RH-reset-default-find_mutipaths-value-to-off.patch similarity index 55% rename from 0045-fix-find-multipath-failure.patch rename to 0057-RH-reset-default-find_mutipaths-value-to-off.patch index 7d87131..2dfb52e 100644 --- a/0045-fix-find-multipath-failure.patch +++ b/0057-RH-reset-default-find_mutipaths-value-to-off.patch @@ -1,20 +1,21 @@ -From eba371974dc9343740ff3b3fd18caab8529291d1 Mon Sep 17 00:00:00 2001 -From: openEuler Buildteam -Date: Thu, 2 Jan 2020 15:34:13 +0800 -Subject: [PATCH] device-mapper-multipath: fix find multipath failure +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Thu, 7 Jun 2018 17:43:52 -0500 +Subject: [PATCH] RH: reset default find_mutipaths value to off -when DEFAULT_FIND_MULTIPATHS is FIND_MULTIPATHS_STRICT, it fail to -find multipath in find_multipaths function, use FIND_MULTIPATHS_OFF -instead of FIND_MULTIPATHS_STRICT. +Upstream has changed to default find_multipaths to "strict". For now +Redhat will retain the previous default of "off". + +Signed-off-by: Benjamin Marzinski --- libmultipath/defaults.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libmultipath/defaults.h b/libmultipath/defaults.h -index 7f3839f..c84d31d 100644 +index 01a501bd..984d8dd8 100644 --- a/libmultipath/defaults.h +++ b/libmultipath/defaults.h -@@ -17,7 +17,7 @@ +@@ -22,7 +22,7 @@ #define DEFAULT_NO_PATH_RETRY NO_PATH_RETRY_UNDEF #define DEFAULT_VERBOSITY 2 #define DEFAULT_REASSIGN_MAPS 0 @@ -24,5 +25,5 @@ index 7f3839f..c84d31d 100644 #define DEFAULT_DEV_LOSS_TMO 600 #define DEFAULT_RETAIN_HWHANDLER RETAIN_HWHANDLER_ON -- -1.8.3.1 +2.17.2 diff --git a/0057-libmultipath-fix-sgio_get_vpd-looping.patch b/0057-libmultipath-fix-sgio_get_vpd-looping.patch deleted file mode 100644 index 9fa294b..0000000 --- a/0057-libmultipath-fix-sgio_get_vpd-looping.patch +++ /dev/null @@ -1,50 +0,0 @@ -From b3d65f57bc63ccfc52b89adb7ab7c0bc659c00af Mon Sep 17 00:00:00 2001 -From: Benjamin Marzinski -Date: Wed, 19 Feb 2020 00:48:29 -0600 -Subject: [PATCH] libmultipath: fix sgio_get_vpd looping - -If do_inq returns a page with a length that is less than maxlen, but -larger than DEFAULT_SGIO_LEN, this function will loop forever. Also -if do_inq returns with a length equal to or greater than maxlen, -sgio_get_vpd will exit immediately, even if it hasn't read the entire -page. Fix these issues, modify the tests to verify the new behavior. - -Signed-off-by: Benjamin Marzinski ---- - libmultipath/discovery.c | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c -index a4769ee..400959d 100644 ---- a/libmultipath/discovery.c -+++ b/libmultipath/discovery.c -@@ -956,6 +956,7 @@ static int - sgio_get_vpd (unsigned char * buff, int maxlen, int fd, int pg) - { - int len = DEFAULT_SGIO_LEN; -+ int rlen; - - if (fd < 0) { - errno = EBADF; -@@ -963,12 +964,11 @@ sgio_get_vpd (unsigned char * buff, int maxlen, int fd, int pg) - } - retry: - if (0 == do_inq(fd, 0, 1, pg, buff, len)) { -- len = get_unaligned_be16(&buff[2]) + 4; -- if (len >= maxlen) -- return len; -- if (len > DEFAULT_SGIO_LEN) -- goto retry; -- return len; -+ rlen = get_unaligned_be16(&buff[2]) + 4; -+ if (rlen <= len || len >= maxlen) -+ return rlen; -+ len = (rlen < maxlen)? rlen : maxlen; -+ goto retry; - } - return -1; - } --- -1.8.3.1 - - diff --git a/0058-RH-Fix-nvme-compilation-warning.patch b/0058-RH-Fix-nvme-compilation-warning.patch new file mode 100644 index 0000000..fc6ccd7 --- /dev/null +++ b/0058-RH-Fix-nvme-compilation-warning.patch @@ -0,0 +1,26 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Fri, 25 Jan 2019 14:54:56 -0600 +Subject: [PATCH] RH: Fix nvme compilation warning + +Signed-off-by: Benjamin Marzinski +--- + libmultipath/nvme/argconfig.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libmultipath/nvme/argconfig.h b/libmultipath/nvme/argconfig.h +index adb192b6..bfd10ef8 100644 +--- a/libmultipath/nvme/argconfig.h ++++ b/libmultipath/nvme/argconfig.h +@@ -76,7 +76,7 @@ struct argconfig_commandline_options { + extern "C" { + #endif + +-typedef void argconfig_help_func(); ++typedef void argconfig_help_func(void); + void argconfig_append_usage(const char *str); + void argconfig_print_help(const char *program_desc, + const struct argconfig_commandline_options *options); +-- +2.17.2 + diff --git a/0059-RH-attempt-to-get-ANA-info-via-sysfs-first.patch b/0059-RH-attempt-to-get-ANA-info-via-sysfs-first.patch new file mode 100644 index 0000000..14b3367 --- /dev/null +++ b/0059-RH-attempt-to-get-ANA-info-via-sysfs-first.patch @@ -0,0 +1,87 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Thu, 11 Apr 2019 13:25:42 -0500 +Subject: [PATCH] RH: attempt to get ANA info via sysfs first + +When the ANA prioritizer is run, first see if the "ana_state" sysfs file +exists, and if it does, try to read the state from there. If that fails, +fallback to using an ioctl. + +Signed-off-by: Benjamin Marzinski +--- + libmultipath/prioritizers/ana.c | 31 +++++++++++++++++++++++++++++-- + 1 file changed, 29 insertions(+), 2 deletions(-) + +diff --git a/libmultipath/prioritizers/ana.c b/libmultipath/prioritizers/ana.c +index b5c7873d..e139360c 100644 +--- a/libmultipath/prioritizers/ana.c ++++ b/libmultipath/prioritizers/ana.c +@@ -24,6 +24,7 @@ + #include "prio.h" + #include "util.h" + #include "structs.h" ++#include "sysfs.h" + + enum { + ANA_ERR_GETCTRL_FAILED = 1, +@@ -36,6 +37,7 @@ enum { + ANA_ERR_GETNS_FAILED, + ANA_ERR_NO_MEMORY, + ANA_ERR_NO_INFORMATION, ++ ANA_ERR_INVALID_STATE, + }; + + static const char *ana_errmsg[] = { +@@ -49,6 +51,7 @@ static const char *ana_errmsg[] = { + [ANA_ERR_GETNS_FAILED] = "couldn't get namespace info", + [ANA_ERR_NO_MEMORY] = "out of memory", + [ANA_ERR_NO_INFORMATION] = "invalid fd", ++ [ANA_ERR_INVALID_STATE] = "invalid state", + }; + + static const char *anas_string[] = { +@@ -107,6 +110,27 @@ static int get_ana_state(__u32 nsid, __u32 anagrpid, void *ana_log, + return -ANA_ERR_GETANAS_NOTFOUND; + } + ++static int get_ana_info_sysfs(struct path *pp) ++{ ++ char state[32]; ++ ++ if (!pp->udev || sysfs_attr_get_value(pp->udev, "ana_state", state, ++ sizeof(state)) <= 0) ++ return -ANA_ERR_NO_INFORMATION; ++ ++ if (strcmp(state, "optimized") == 0) ++ return NVME_ANA_OPTIMIZED; ++ if (strcmp(state, "non-optimized") == 0) ++ return NVME_ANA_NONOPTIMIZED; ++ if (strcmp(state, "inaccessible") == 0) ++ return NVME_ANA_INACCESSIBLE; ++ if (strcmp(state, "persistent-loss") == 0) ++ return NVME_ANA_PERSISTENT_LOSS; ++ if (strcmp(state, "change") == 0) ++ return NVME_ANA_CHANGE; ++ return -ANA_ERR_INVALID_STATE; ++} ++ + static int get_ana_info(struct path * pp) + { + int rc; +@@ -210,8 +234,11 @@ int getprio(struct path *pp, __attribute__((unused)) char *args, + + if (pp->fd < 0) + rc = -ANA_ERR_NO_INFORMATION; +- else +- rc = get_ana_info(pp); ++ else { ++ rc = get_ana_info_sysfs(pp); ++ if (rc < 0) ++ rc = get_ana_info(pp); ++ } + + switch (rc) { + case NVME_ANA_OPTIMIZED: +-- +2.17.2 + diff --git a/0060-RH-work-around-gcc-10-format-truncation-issue.patch b/0060-RH-work-around-gcc-10-format-truncation-issue.patch new file mode 100644 index 0000000..c501ce9 --- /dev/null +++ b/0060-RH-work-around-gcc-10-format-truncation-issue.patch @@ -0,0 +1,31 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski +Date: Fri, 29 May 2020 17:21:21 -0500 +Subject: [PATCH] RH: work around gcc 10 format-truncation issue + +gcc 10 was returning false positives on some architectures, when trying +to determine if a snprintf() function could silently truncate its +output. Instead of changing the code to pretend that this is possible, +make these warnings, instead of errors. + +Signed-off-by: Benjamin Marzinski +--- + Makefile.inc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.inc b/Makefile.inc +index 479523bc..e2f5d0dc 100644 +--- a/Makefile.inc ++++ b/Makefile.inc +@@ -109,7 +109,7 @@ endif + WARNFLAGS := -Werror -Wextra -Wformat=2 -Werror=implicit-int \ + -Werror=implicit-function-declaration -Werror=format-security \ + $(WNOCLOBBERED) -Werror=cast-qual $(ERROR_DISCARDED_QUALIFIERS) \ +- -Wstrict-prototypes ++ -Wstrict-prototypes -Wno-error=format-truncation + CFLAGS := $(CFLAGS) $(OPTFLAGS) $(WARNFLAGS) -pipe \ + -DBIN_DIR=\"$(bindir)\" -DLIB_STRING=\"${LIB}\" -DRUN_DIR=\"${RUN}\" \ + -MMD -MP +-- +2.17.2 + diff --git a/multipath-tools-0.8.4.tgz b/multipath-tools-0.8.4.tgz new file mode 100644 index 0000000000000000000000000000000000000000..3c7963df4c1b6178f991c31a6515e582a910e607 GIT binary patch literal 480941 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ⅈ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≺AVX+m;d(mYnA<^{0E1~@ABWb_{7^Tuo*a!E!m3A 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%0AJPU^9 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%0A6P7lYsCB~n4>Ek4N1 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�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 literal 0 HcmV?d00001 diff --git a/multipath-tools-ef6d98b.tgz b/multipath-tools-ef6d98b.tgz deleted file mode 100644 index 37d46dffd158cbe9d6b8999b51e94ecbfc7ecf1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 410741 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

?MhgI~z`WWTXO} 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�{*2Xa z5f%1-`5(8IN$)raKj4P)`Ky2KHB354%lb{`B1YrCorS2&hFKmW-+VhJV$nGIS$$!_ zL3K36s;H%F@Q1&^^jUMH^@jg8c`y6)I&=0H7)^UIPz*+W^}8$h7JtzMgkaBjihGOh z^%!Ssll>Ugt!cHaF#3-j*sCf-eUfsYLbgINj@u%OtNY?ImY~+{N8=>yomDA-IL9^! z2VGQMV$ch1A89L>%ytiNI$f!#jL@))TEQB-BjOwb zVQ~x+nh(=Hl_)Q$si5m2!oG0!t~cqPhsN!n=lH|e3PYh4sy_X+WyYCH(~D1(b=_FQ zWRH(AV5v$EOYSFlMFFXd9Mpyv(cnX%A{?MA;_H9Z-`1BlHk7lXEYeYanv4G+E3CMS z?({rd8yo01;8VcU4L_rV=ctHz8hE)bjc&uJ?H^sxK_F85k=TWIQtyXOx2op{tPzROa-D zD)At_5B1&Tv*;YJbs)ogFN3rw-|lFDp;-ZbUA8H;`Eul?N}n(y+1enBF02*Qk*OD| z3R2S|Y3cM!Nd#yHCID(@FBG&xfHM*Xni>uQlO~jcrO2DvP)6CGUzoWIRw2qch{qnH z5#@L!{=gVvNGllS8sJs*jQ=2fb1n(k-y|Di%^dW#025Rs-b@5>0_KHzgVk ztM3^eNPj4jr?uRyLE$e(6VK%>|I4XRJp#GMG{t}{;lr}YC@-IkkB`^T^4UAAW@Npt z9z+WpQ$TsJYu;qpDYV4v$WwLEp=;P18}K8~l)&`i?yvrfde$ZhtuHN|aHC608-jdk ztRa+iFl`&wa(IPYY*gnEp{1o3MOS7)05ekO+DWjBsz)0eqGS`mJa!z}aD6M^f|GB* z5#Q`!9ecey0I^j5jJTBhu+FR zV8GR_#+J0rAcqWHGBZ0E7t%*Svr#??H~@#O(GIVa9ND~wX9 z3{Kmu+lT7(0!filpcv<8yFd1tW~M%fWmpNZ2s4)~W_WYzVu^0W`vw=hY--`7D*7p~ zeX&c%J9p0OBy-&-!IHukxh->xw{o4kCv#msnccR!#VgzXp=`#{x$^DYXw19BqHnR> zp(4Dd3h9ta#x-mf!PYFwa_?lK%PD$V`e#QHWVw#KrjOy(JZO3wa|D>iXZ<4zzRLMsSNAYP{Yo2r$^i9-scsP84Izb93D6^ZuqjlV* zZ>dm1>ILTv&`Cou#Dc0q+xs%bVo|T_OFyY6l6A6cR|20U&^oBwSQFu!~?^0zeOc%WqCP^E7XPE9e4%Rd;O11 zEUKDL;g&4z9KSj`ISlrjz=xX84}$HJlVgMDC>-`M_|a}-XK(ws5j<_4>~9~X!MJag zYPec?d$&@h$maYVu$T-ILXDD#z^uP{4Ru-pAh36M@Vr%CSgX8wo7?(}?beHv?WcQ< zJOp%s>*25}9zDW+XRQKUZ*>|5KR;_eJIrgHUgox(!eU`fyjfaUo!(M#baFhkH7qc# zuTCpw*;ywD37eNxi_B;sVNx6lOEA$n#V`ceAbgLJ0tZO8D)x+pVn4+K&`R*}&8JPo z=%f6BMuSiC`JwSs92%{nF15|r7*GYS=ox;*x;H{QH{E0y2YV-5vbAe9cQ5aBe52@;rA$-`RPoN5^S8R~Eiv}5t2?c}95v(d@GS8^MKa~GD$0UQF z{*_p8239_^xvzRgX<+r}+9>}(#bPmz;upf1Qn%?(pz3tEN(7Jx!n`u7$=89Jm`oD<-DR*OD3*bu}G?^Sb7!S zthc-DKxFObxMohnG2N<7{>b~cwkZPIH@%19vj z2qZYzVONb_Hx?g12_*+)8{_;scVSdNp?rcfH=x$5Zw3o%%M~e?JVAYo)FaE)0_eG; zB##2U@G?~XNhxuL98>J&2QSg_x2(ZSM<@9_#nPR}hNY(;FVpo-d;jAC?Ds_I)oL=D zo~{W@2?z?0^0EVuLDbxoPIEuFC2{TEQchWJA90nv8JENd31(BRB444p9suLZ#?|iL z_2BoB@w1WXFMnbN^GT}@ozrcGhB;b=iODK|YfUmmx5%qCBL)V%w^ZF}NT!ghHs){~ z&NEL@R(o<_j#NO5Y++X7rV4Y2bX|C!h#)g#f?%W4l#m%X`NEVW4Zbc$Y(&0uFSEFA zFTPMd6hL@G?6e0M+Yq;OmC6!>SrcpifywFaU75(tQY(>0fdZka2tQJ%Q1Gh?3t7El zu^`=-SDmO0c^X0OT{4%V@1tCFGj)Bm`V=CYuE(f)z9JW(@n)Zeh|&6eG^_tJ6o1!5 zbLK$VF8p6(oaUIR6aq6N_*@r*ZWNYFN4>C(nH{=amNUcm_Vp@^_w3SerIgZ_;m&p= zZ5eCIk|#pue2^QxRb`Xh#nlU|3cj#f%`T|=lC>x{rwb$3q(enah74`;`V6N2AIN-V z&u8%8qE6`fdY2YbccKj}3C0#tw`QoE- z*k?Ab8j`x;WgWi5L5?E&IuGi)s*LL^JLczp3+@)9v{UXbLqaS0qD|j_)Kd@brb-yI zzIJ8PLy0%T<57DQ^{%wZP%6yjfxzrlZ1fREWnwRE*&8(2zoC0Ps3xz<^`+h=?#qSM zTWX*`xt{i}2w&EN!XkLWj3K?r7Hx$-?Z|8-w=Co`C)6@tlI?LadnBNuYmkw*QEcnL zLgo=`?TU_}fPDu)s+&tENClX#TBazAQH?snWqBE*;j>N4q=!Od)T|^}AB?nCq67syQAl-&(G!nd)nisSbLg=qn92xAY-9O+)AR1lYuL}&Odwb6 z6I+X2UX-S)MP3RDU+vVd6SjabDo>);V_bksYzz`+G(K64(XH;lJ?GjGmj6+vEwoZb zftRd^AWAC35REM-e!x1L@)2i$(4ecPFL$vYt88-emRwjSGN^}BM@g^L&s?gOcH@&Pn51DYSPEywi)?MPM*;2b)@fInAg!Nf zTP#{sRd3l*W@`&02UDPat@94Ni=!;__WF55;j#&8E$cz z_;4Uyry-?e`SqLEZz^wk%Wz)5O zU&c`vW>k+FzuMyG&cq$# ztt8hAI-_xvCR{QUR{a)AY$kcLJnCpVyhWjz*p}^ze3V$NuVVdE1dnh-G%<}PoM0&J zoNN_mkAZS7Mm5abwS-q`QY_3x(Pk0;Uk>p z$z{68*m=~}`D)ozCJ?sJm=l0~VqD0a6QhLAhcZc$^lSl06nSTm$!=J<#SwANq7UR3 zjv2grVV{#Ui(gHQqQqfr45ADMQN4A`-fOg5o8Kg( z7>gzTze)IbcCL3VtrxTDozKPU#Gdl0vA2B3!)BIi&2ZFD=(}>dCvOxiVO&ub#iCtH zmcg2-A{v;KAi~jTQ=&A)d;rOZihKhlgAN>TdD~}N*QealYw`jVN%XG}Xaso6GI{o# zN1WEVv{bU}X8=`{S416{@-4z!at>%*Me#A>uPKVSDi0Hl4Y7WB@fu3L-Auo;JrTVx zujjXJ2|T91xnzc=fvts?s8&EajzU3xX%O08GqLrex}HKz6y!j#gTRse-SdcUCTY3VhJJlefc zXEIS_;~#Mr+yLUO^xJ>DSyB$ke1OoeK^P#Kg~?1lyj7lnk}Sv?UMR@u(#9K)^QnzS zvN-)TH#O3kC<(?KwmXm*sA!=it$1hIZN!vWw9sC(o_kGw?q-tSO;o?keWx89=foa+ zwNpvARTVjpZH)05P@}@OZm}L|L2wf?<*WYYQ~#+_t|`aXrn0Clof~nI`@`{-LYc~! zo49GT*-xO7t)y=(v7FSFlB*4)F3L|~_vyxiMMJkF?JSiHL_Px9s7leB%mYprK%&9w z$PwNznMida^|9>`QVn1?X8b@*)-N}q?kBpSXM@ZyY7Po%H0C7ebT#!U9XPTo=US%) zpQfy-Q1V2kbU}yW&B&$iz-4WilJmJiOx3+UqTtgIWhu(#j;j`=3#^h1F|lndv$|5` z(-7Eg4~4II#PS~9SM9~8?H*Kj5+qvp+rwpmZRsahEu}Bo@qmCdi zPj7+n18|_hlmhLf4?FX__IWs^kUUM~7YJ0Q@L-NYQ;W2F?_o%1mmI{iiePiFam{!i z#G`;sUDHa!F<=(3K5T^nr&yd)3Z>O)?@`F=ngYyN&t&4~^cbK+6u)IhUvUe7!@eGN zbD(Es7-!Lyf7-~dTAAYgu6c6H-0!0mmaPMT(7XaN(cL$d%1@~}S|5Li(zq}{Q3UVp?ny$8rS-JoQR0ar8q1im%!CvcFr{njr5z=r309>UicGOLN zQZYyvBMhxOOytH1lInn!5{M7H7@_2&c;+xp5|BASXpF+7!jYyKN`kq)-Cj1o_j zV|F5UZB}f^_NshNY>V?a2JYJp+t?s4GCV0O+aU&ljeEWLJx!nz0~U2!a&{h1#;E52 zDhip&)BR^P*EJkCN(v2agX9~If^K*jfs9+8GQ<^KyFHHk5oVVhBb`_z0DwDDK=*Qfa>j? zUq%YYL%=}9r+>hF*XW2(IO6y!C6p~`;bsVrbU!U{cq*t{zZD%@P!p|}YU7-6v|XZJ zsq=ty|NAf;SWq&;BL#IBhIA+#awe!SfnJmWY{cgkfyN($ipNVxzshkI((lzin@Nd1 z*NDr2k!21T$=*+yitOld_cN-~9V)ipd=8MiUjmc6UlyM)iq)6FZOTM{{Je>tS$!Vl z=KwN$NaqCd1@ZZ!SbY`Tz5<3{98UyACr}{ZOUj2~jl9bz@(o33*xMWLD>(J-E&1f`59+hjw(Pwa;4iZ@42!UY+Kw6}% zzv^hK1loR#l1f!;+xzXol?BKsH&_Ov{j@C>SwLO1b9B^2D~2%xX@?KN6EtC1pzOxa zW3(?#&d#Dv1kHnB+>PH4SPjW&lO+P455p1Ws-;t~1?(~$oyJKhAO3( z-|pN#yK^{uPIdI0$H`MoiMf9SCy5Zllwpn-rT~34%F33J>KME!SJH3z6l31FgJxGT zIk!z=Cs((AY!u)YCHl_nhqoZrPU}~7ZI}#AEvZq?kkxWlFP4XKZ?{2baK4C(+C>BG!9P4YyT(Z zR9VPEUtpuR7tU_u8Fr=BJb1qM1>re>W`SGVl=*y9Z>&qx;+Es6iO2A9NavTF;W-M9 zjt@@`B?>BXd?7o+c4x|I6vBUE)O*r1rz+ALJ7xFOo%7{j6n5hCLG&*?erZU8(~WNk z*eC1SB3?3`NyjBGxI`@VjZ*bSigN-Ur23J@zQV2_%G>%X!9Zh@a5dc$I7xvi-PM!V zZ$@thZ|^=4bgf0ZUJt_e6gYBu=XfzG-n!+Tn%1k<&i3A3z?8DWnlBKSjI>l)VlPjV zgJ3!cHMbIDm{4dsHB@w_hn@xtt7R-Fhal6n6zn>>v+BA?hiKGyPUm+>7+`&p7h9@c z#`?}WNVQvChL#*ZQ9{#O7RKfc^@3et*^glmzlVc+FGQ7Iuc!3vakpDzk;C|JTdYu; z?#a&qT_%}L-=XguuEddVSm!4d1_-}jEToc6$j}M6Kfu4|;|ps%&?uem8W&xmyHV&} z$l9Y(try2bT9~L-D^qZ#4^)u8Jfb$}``x?7zY?98$0Ik;UG$-fu5z$oK_FI!Xp^v_ zU}w3wE!L!G9h)4dz}rGoe8%)gPJ(R32&ht?@!@*+$lff!S*|ZFJaL!X&for4OU75d zP`kR50uXgIXOwm+ec7dtDryQbcXxk#XZLUi<3B{Peb43}w>Wmh2k9Q9b=u3yxxO1K zm8*Lj#E#7;4>{7!-%xMeXo9SpIQovy$JCu4yLJ1;rn&-@VoS5H+g+QJbw-Q6YPc<> zWgqt26{L8JWCSVpo42*vJN`2JB|5L|jdxiF1x*_re7n8$zbs@W813v|ETqh6 znK+Vk$kU=?Szi?Lt_ZC7S*u~bIkRibo-Sv#C3n+HEqyWMD=bd!iwCE*7~|@okKrUr zF7j@QkgwV(JfDCl?}X=}J05kq2!|0`HcP%6cdL4L6=v0b{DhH?%CGTnh5XV*`sf#( zl_g`hiOY9Dbk{u`@|_Z&G6YJ@LFMPccjbjOV%r}V$h+D=bxBURpvfMjnD_cN|@jAfQsm zs@WOfv8Gp6^THjI$LP^`Io4Uz?34HQegk)Gigv|0BNL^tBAL)J+)@fbf(Xn|T}1Hb zS3pXui@VyIqz1+`yCL>c{VdVxuV%Z~l$dF!I!Z*8S)$q9EW!+y(OHDCM%6O{Zjl`i z5hqIY4iN}!PxlUYe%_>vYdUKy1tY`IbpB2&Cci43`wdAcpRz3z+!`o+6ld9&RnjIo z{8vhTj6BYO!rgRPRikq1GGFrc?oX96x@uPNf?v%d^=wT#sJVmj^l4k` zWH)8K5@)|mbaGL&15bu{MYTQYjg@AWZZ3rAe4HIl&)CS?QwN*-STk3;utRybOqX@I zOeHf?_lYj-JB{=pbqh89Lf=KrzECdD@=Zqbhv-XMl(U@~=wN^Q)ze0nF8t6+>TJy$ zu&%G)zqye zy|n_DT8{XdW(Na~MS~<9BoQAK@V?Pxh>``~8w$-%nlLv@F?f7ru|$-}ky(Q5#174V zP{?V?ri2%-A~@8l7KljfR)`?2^}0ZqOL}wB$#P#q;~9{I^M~;q;AF|^;8C{rp2#c%PH7%tH zTMn?-K+c}OsRNuTMWL!t6)Q^XSP~`$sSQ6{Wz|;xq-QJxfr789oOt#a7@|P5rO*+O zhykyWKc1x=tC)j?gRW7zUz=pU=%l5`N=g*Kg78E_>9Bqg_lI8jSg#VF?99qE)Y7a@E0&V} zU7=1Tvan;Pe8!ZzH;)~blZq(8jY=P?#6--`@F|X)pPIL9F`jifcO0QwH36q3xA^jM zYMN~-;A(ZlQ{ATFoQb9|SY&8ttBKQgmzK{@LS9^|&n2X)YKm=SF4d$3N@5TjVkEWI z=6=mGdXA$C#`s>PMM!#a9T`$OJj5WGvd!hAyR)pOx5%~4>+e?IYP0Y#QQ1G%Lisc- z?AWnM62mOtkNrm4J=wXxXiiE}dFVF^21di2KJjF2Ch5YiDod${Hpq3KuD8OY4c3LE zX#+Y&&#yxsT0mfhxfG~oPvHz@N=EmRaxp6S{fi2I=c0nwv#5}ED=K(=ie_)u&e3nm z2A$Hl6@1HKfp%x4vh0!DDYu&8O76TfMQ)(@bBa5^wl`@q$mI}B<+EwvmUxDdj#ywQ z^O%5ii|Vz66~fTU6Ze7wYauer$g_@6v~(9Jo@L|t*iX)eKaDHRFS8fs5ZLoJ6iYat z#Y|2bznzdSbJw{cLkpBlhD*y+*x7%8+@2@(&f{SR!*VQ*oG5V2wf1Jy9S*sFo3hs% z)Ba%cF4Xp7OQtTmVh#5h4Y^iIoXluQa8#;e?42@LY?&v z#&6Z_qCE7aO@fM3Ex&og3VuTe0n#cKR43zO8K!gGK25~wmF=luf#y>&=IOq>yeJmM z2T@jTT6Zd9N&E=1t$Of#McfuYR+dqQ|3nM%g$`n&j*b*vbqI3|BZkz-G%2%~%Eg!> zYu-eyqql1`oOaT3mV#@9lbkD0oGF*2b8$EM?3V!!bZjs>Rkg2`-01?HY-QLL}&YnfJ?iQk2jhO2Mvx0R$Xq zf&2t>P{Jp_wiCyGzPJ!9)}d|s@h-ed#BJB6pW>Yh%yZ#{m+*dj9*zTk7RZOVSX63d zoMO})|8qj2V1Q?LaPY{plOl>?;Fu1Dz0rx;dD57nN0i2UqLS(Xi&#cZ2XNz2y{Mfq z-$@_LcjA$Fq5&oNgdH&zJ0G^k6zc$H*%W)d@b2yFmA8iJ1G%6o) z68eT}rfNF1QI=3EI*bJf3Hmj%P1xR@9Xru*He}rm*vhCnO4`6$+Z@4yxIPUj=39hQ zd9O|O6>a_i-W&JSO?+~?fa*zzD<7F7IlS;~TDtrzy}4j#3OTeJ8EP)t-T1v2k3w|H zKq93*s&)ACc&7ne>ZmG8kLu$-?`?Dgc>G~3H!j*00WW#!2Jlf)EolQNKQdr=iz#$2 z;vxGp`6}Ykh@+@hDz8`S^;L@2qzdxj{bTv=#s+KaERP;pghFabXuRy$N5$a5zAE$P zRZ@Xh=1qM>g*kkzQmE`l5(E{D5(_ZT5@DA!5JcC$SbpQ6_>2fbR?e_b_We^h*^`m}KU%yEkEAV;n z;2!;jPx|k}^_A8CSzTXWeX#!U-YS(_TYb2?{y!^Uy0gB|1l0-9|(GO72AsRJ^H)DM0F6r}gUK@Tk>n6>mj@PHzId=#ip94e2o#E$ud1JIBqVljh+8 zw5X!BC{%`%QxJZvTf50c1p7C|mwG?I%e^2`oa1);61e9g{$3Z4w0MSl*W*Py*olfo z1p*V)llYciwzi))p!t)S&dsWI5V@{kV??%(n?9v9PA2Ej9z|@yq6l$u`0l(0V#!%_ zz6gBzY6G^VC9&PLPh7ynV+O_rLA|`8n7>+rAJx{X%aFX!OMSCQc_()2l2n2i0x=1d3&HGx_=wMV8mu->) z1znxg5K`A724kM&up69SjYD;L*Dm9}hjnsBPtM9b(pAlM#qDH6lx8DKpUePb$m_ED zQL*mYdvUl-BcXaN^CZ}nF+38b8QF5kAyCf)IHHz;G*Z=2G}Tpq*b)aX_x388&SeIp zOcAIkBoo!dQ&-rJVH?6=sTiW__OLQ#lvIx=?&~TQbPrUP{C*oVVLa zxw3H^l??fqOP9JVW2KI8wu}ZA&vdk?8@qI}3i%e3KhtYkU7_uOW60 zcX2z!SJSs}nwG(s0#BFm3lLwYDwiRAzkL1Ho`pP?B$&1~y#@OuT`VohAIa3hST;Bx z#gn0`F+87LLzm4Koj|YF*8+`8kaG9QmKmPUQN~xqW?}M*y^D)o;Qf2LGo6EMEn5a>3`(X z>!!GSH}dgANoN-B_=HebWAi$Cn?eIWlK!lU_+*ZX(}!zAJdc5$;A0#r_&>3;sWJdI z>}d!{=9Qu&lGRfT!kMKpMeZ9#;bk@sCjcTQ!ED9SyQ%=W7;XA8erLB}!S=z!$s(8* zw7SiX=`YOmhJP8JjlwXsVQ0pZ$`}HlpS~T0Nw2hOm8S;=v|3t zqqx5Tk1odJVY0Ej{Qmv>Ivb_x@#q|BW7%^%kQJ(9^zD*$yv#C2BTRfI{#KWTmBD-QXKF&cXm{S>O;^@Cp}K|&;%D(X z8mmPOzaL+QVy}7d@;AP0e*q}qQQLV>>~42&Pg*GI#RWhgt(^fLf49W?W^rL0jmaV5 zdU$NIRYWY@LOTNN#Vh)reK!h4iPOn+W6>1D$ynwTKK|s1->c0{>Pir+od-p@i+KU=3kXJB`2~iBdRUU ztB5JzMna?TD~v1N?(G(j}(L3#)Z|980FKYsnyrL5m>3aKhG;mj*Nq$C}6R zja^9`}U$!K*&MU+}A$od%~fWP6UW8-C=1>|s*&3IMP14acFRvidX zVqp#5*^nH9UQ`sl%w(ieqjFKAPRfIm8Xz3?g+OhuwBxcnfSLi=saKr14ZeCnLV6Ov z8+`sdKC||Jb#U)|MjO-ZKkKWj_tw+<|H^~a2jBPqZ}3@OLIc50JiMZi?4rC=LBr2| z*r4FgL)iDaz?$In-5hk_utB9Mu4_sY=j_2&I!GvGG8uRhOxAEp zaInTR#Gxf|5YNzQr_EliVT2I_gmSG}S8YguRoE*KNVz?hx^}t=RRMIbWCCSbHLv@o zmpV(y1?)IFpPbTJz;W_y(yJl}OvCnT^W+8c-|d4};@9otU9C7vA~i*0eVeSFf~dAYZJ zERJ3tA04(Dbs<_Ir<(!*Q-=7AW@)5Tu&9pX$vC;7qcMeu8-<-Py2J!70%PjWo;(E7 zrU-d5-+&oNK(2X)7htO(2!`Sjikwp7JReL*-0U%sWcjf|XnO*KHG<>+2mn2YT4(2> zb2x-D>T?ozyW%-c#iQ{#{7IEtE?S1iWZZ?_5tWtBvs2)Z>4%seEcNUvSsq9IF#8nb zHFBA8-vEb&znAXAa5NgknQ~C9Pr~FJs7(eymRa_=N~`CIF7=jY(0x!-`bP$)b=-dS8;68{hn zR`5s=54uTR91buf;~29lBH^sAyc0?Hx2j)DSK(==$jO+fNUYcID^OJqfQYMBh6mxi zNs_E#l^*^q=|3TVXi5!2)S*$wBS7)PoMv>SRhkmc}eMHEBU5KWqy-(MU136#dery8_ZPm+5hlv z37c}Y0((=Ux}+>l@L)2)OSQ!Q;bhjwm^uU$Lw*IYl!Jb9{yJw|-onuha}P)ZN>)hzLV2e?FGmnh*0MGm`s#Pm#?493cl4`Cycu#%`7l1~EdO0Zlg z{|g>`O0qD8r$t;akU3ry=FB}360N`A9lfG_#ai^=Wu_lx;73T*)VnYolDhPYHMN2A zivzZTx>P)v_QO!-$B8I;7*_T+Ma!J9JdiyvMuCzh8oH;2 zs-PC^I;MO?%G`O{w2i&h{B|^CRldru1xs@_W6kT7R&Z%qO<9X>Ml)(1#4&{? z-RU4!SLW;#3>Dd_Qz|%s~N^aMcb-Y-Z;u%&DpC!B9RCt>$z0ETVatWxfIb)%>!Rb@r z3Wl?qx0Z{MCGm2^VC+BGOql{051;#s_J64wHxKnp8ggvdlb+)O_xbK!BBTQlTkphor4+_sIAHp5>CKz?e$}n{?5AcNgfTzr`kg)_my<} zG4G3otY1^XomT0PSO_qCW7!c$*@=ZwtdLg;`V3U8(za~Oi;j2?Kpkc75XKGF zo3wKAGvI{c6 z&>UsLsFEEZm~yqy2|+rMGB(uZYR9zox}a3?UUxyy+&r3@e)0<&git~9N}rWsadUoz6~qM9%Q3?y4@{J8ys07 z7w0UgI%{t#R^{8>ioEbJ1ol%h$A>A+&7Nt=Agexwl{<$tv&5sTnMsw8)6=TC_zl)Q zG9s)*VJ-zccQXS1i?1)PcE_)1|uk^1QYCt zJZNL>U@+R}XZ`kJ6I9Q?$KlEi+4o^9pe^m2$F29jSTvdWuXu4`6As zKm`ff`HV#DI{?Un<56%rIXippGdjFAQaGMvF$yk+pA0D4YWfxKfb_yS(&DW1nH8}? zgO@n#wa=Mo<(soMu&{K+um{UA)alKna4kiktkmrn(_ye&30&4U{DTAyjHp36Na#y> z2Lo>e`-caICx-{k9T1aMrz_-;!?crK?nY!o{d@`v>&ESE3jNyMhGA{-!HEP4njo3f zgs3RRaVT)G9$cjx*tB$g^hT~mQ!-bhQ)JKPjgpCaJf z6VZ=)!0gy!XGtPRu!;<5_2*4LBAzue5d9+vo;m}{nhb~P=?9LR)KIyU&gv--wbM{5 zhx}kvHZZFq4I;NbcELtwOEhqNcVU3#=8@?=tfG)uzZF8$l~G}Y)y)EQK$nB#nTwLn zPYCp-NU3}~sg&dp=J$!WB4^_16k!Y{nT^jm=cINq9lB*HwP3}aJ2Ej4v^?nahpI$X zTe3>}^rfFvDl!*PF?RsDz4S|d%R|r1-Re)885BHAN6v?{AdYsFU9CzkA$0w1gi&1* zb|yK)csijw9l9%Kw0OPgZGRq4#5~p}{hKqQ8*ri=(I++c1;e__jBtH?iN2JgruPr| z1SQDTm6a877vWf?2if8SD!)wS;j^j6Ottpda6zx2hV*LG*QtR!Q4@-mPMRCM$eWM{ z6poKGVEJ}buSl1os~;pw_Hb|LvFr`??pkE0OuZNFgd)=0dkw`pfihQYs6)dpxdLUF zw#}zgL~8LTXJu>I7?c0Wg{xMXoxv;1)a1Sv_J`vuyfo6gq9c*wYqx0=DOlUc4Y<%O zHk9Q;!*E2oOW?@g4F^{xb%a+uDg9pYrmR$O9$JmO?Gb2av$#*wgwpGozm>?Dk}kbc=ru&n84}%DN}#h8w)|asJ;`pU!vej- zf`5I1VdwDR;JESZWvj946pS#OeD@bPU5wc1A~bL%mWc;~u| zT$pxIIBS#OGY`k3GqP^l-oQ%)nB42MbJtt-GJANLx>8JUofTtD>nIVX8-t1MhCNcR zk^E;3nOsSd4ELgYP8SjZ3dT)CF#;n zXDfjgcSx}dLO;1eQx=*tbSmZ{!rPe%wxF~)H@W<56x4QaGg`GgrJCv+c5T+hV&VhX zm^GuekX=w~M4gBVg;N;fcl7m>EhX#Vj_@h|+rlQ!eQUpseQ2kVyQ_A`tjdvE}~RdgteqX)F8y?W26C zj7KqX89Fs8yIry1oYjr|a6|pxb?+y$++v!|Vfdqv11e4T4apHnJj^yD98F`vb1+U~ zS0#ldaD-Cjy2jkkU{N<##O93qzx#^I_s^8iy!XF`oq9C5VH-2z|E;XAWbS{hu0Q;K z|NC2f|IVPZ6cKbY}G*$p?)E-?GkHddXq7hyW--}L@4N==$_{bQ1615(+w}U!4eAQg| zXwd%7Uq0(I=lWm%oHk~}f1vN_`=9sjul&#bFV)Fupa1gpKkxkOD_%EfV>bu)o@iz`E9GJ)C`4xIH?Tmu1fg zWY8J*CJFvmghM9gN+|7=;QW0H(~F*&>!qmxGjI|Q+G9yxK_JTI%P5IXqaI!yD3|0V zRyfdCvJmzTceeLt0Jw;{-EctlT>ytaquOM}eJB+Kc$G8z;@~jYZ|ol)zbX{gvTrS$ zS)s7*e^1)lLgAhlHfyR2h5MemmSbk2@E}{jC{+rDhk38Hil^|SuL)P_SomAEOv>U? zSY1)qI$z45&&gGSK@1bj9o1Ei3P1CGFwzQ&meTw8%{W+xuNaE#rk&f{2K;Z#d~dMQzMuIQ;sPgKbb z_=U=wy4bVot76Bbt)MbCn7a6d^vJRa+}pT9VM&x|8aTa6&K#MtI2IzWtQsg?8fPZA zG`=)NX^QfS(n|}h)QSURqJUi`nXHJP_EN*LTud<{$Nb@+Oy>gBroJDS24pMSW|Sg@ z(~L4EHsfZBQfXB`KR$eU6ksl-m#yIC!OsVWzaFI7TDD;0U>kVJZko+y3+^^sTykwz z$?ct!<}VFcw=;X=?MJ2u%ga*=QDAt&e|cH_gM&TQFGM#ESvigAOo%5%u({{L*~ON; zJyQ)GWf+nDy7glF=T{kiZkKre;;?m+;pujXqsGB5^0Ei{Mbx(PaN3w0!|w4*19|&r zjYwl}`xQX>o6Fa9^i`Xmu^E%|GUahIs|+rmN-jq;oJa1?qE-{7!=Fp;bGbp&OZ*EG znF=!}6)m0$dgEr86G{rs!M8o7t&N<@pQyk9=uw6q7n4EM!H{Dl;u+I0%Dn}lykam| z|7mo7j>5kkxF8#(*Yb)H_}Q8(<`v?>jgZG>f`fG?}c8z+m!%>9-|Dr{5IFQ7qB(-OoS+ml|C zY{scYy>O_njk>EWnj>1)~ZK71qt&_Aygq=Yl$&aKsv! zqlv-{j8xc9tyn6rS4bq`L#KyUj$+C=h?KGDnWx3NXz80&sFINC zfkO65c*QT`T;oE24mB}!AgAMy$7)OzO?eCe?J3kXcLjFY!(#gWuq@A;Ru`dVxTtf1 zxx$l=OZXJ0dx9=~T4wHyKg>7Wsp-LS@eb>C@8#!=t>YdEL)-!avs@V!{^{H-R3!E= zU>XA*AmDRAW|7AeGqEAqCtC1geqigF4gY1A5*(( zdyNK;gJpSDVJgCZPTD>8eYHyvjTcrVYf-MmRl@*?+eltb`z3Q53NoG~p7nQ)37#ur z0Xb%Pg1HEG8=Xo7=aLAX`-$LKhGkC)7chBz_dt8K`6%PxJ@?j-+rt9eqn{T1%*+|l z+%dfFBFv^!k}ENNfRue95kiVDI(2DcZ#PvYM5bb;c#QfO_`N+CmwR|Yfo6|3megLT zHo|bqR`^TifXnb`V|EVpIR|+Zsn(|yQd>C`yEmm6o$H~@{V8SW%#MW~{=4~4T60qM z&F~Gm!~8*2m_-zX5NYMYOyaaTL=NiABD9cg7s{ua?<6yuZF%V>OBor?l$pSruqPvl zTC6F<79`U6zB5V2ao@?WCer!p)Bx}$26=zV;$jFZO6K8WXcii{gq7fB8CDJmnfYQa z8Cm5c{P)efc%nu;-Ljt-L#uc$0A9_FwE?`9)`w{4d;nwD{d^8{!`MaeX#Vg;Hw#`g zPw1i?0#C{DOyDMKnw(8d-Q#!^W?ysu$6VU@_YsroUAkrN0UvLuC!a?h^F?#A#nW_T zr&+UOZ$7!Rqj#X}1W_o8zuW|QMjW*^vnDEMN|y46ZeF&ZO`KH||7Q|n(m?1*_yLv^ zMFG{0XI*kg(}$aR%90``p@js;$v&?gGgH(!$4hli?u*JvdC`h3%vuS3IL|mXSN^@r zPoYdLAF@lc)6WbV)Pt{r1iN(mFhMetH)HDJMcnJMX*K#+m>T!Y6n!;eM~RC@Pw5jA z4}W%lOJ#lbp;pLyU$J^R`wI2W2d!r7q;YTpg-*6*k%p}u*4c79Y=Pi|lQcO%FH`1> z8FJgT0@Te6Q6~%K1*)5}_O;rLyns9unxzGVL!~Jha}Lqy6KhwGO@`$V)iy0 z&J)PWRk?Bg`fGC+yVC(mZlhKN%cjS0jv@Sd%)zy99K`zO?ite_G{SpERb_Od3;~G_ z&y7HM+n^)Ilzn3kn@DOb^TR&+CqZAvawY+vmVy1XlS=Mf7=7FYR}fGmiN(7CS_j&| zE%WQM4hbvrbr`XTvI2BG3gLKhMOXnHpN3Eh4;PDrc(H04vaBYsJO|^b11B_?0HPh0 zzA?SN4Y_@%rWw?viQ>A{^bQ299FpQRa$>jf%fa@3V>VT(f;8cighx>VnV=^nnY2^a z9*MS|0ZR@)wEM$exPe@;wz~Lz#%Ij9GjXZY_4J9)$)jq`yvdoG7a;va8BcSVzJl+7+!#+i5`S((rY<76=mHE@no9X*{!nMZe^9}&e zqi=Qqm_tJH5&qPb7IiGL3~#k}i?XtHNeurzm5nY$-9=}m49};o6pK{9qIFJD zp?CIE$=lO2keYsbie(3vl z(<>QQi05`zedYg(^}A8R#MPaU6A|jwSd#`sF$)m8#}XQ0kK+sg2(}=I=JMhH7Me1o z@FgfJ?L(iTmVDRKY*CH#Y`6MziGVv2;>btO1=o#`Ju#FAVIGxdya*A{{Emcqj{9Cm zc&QfF{HCjj6S7=Biau4O6 z&VfY+9?ou^qtO9y9P`!yOY^VC?;T>e{-jugd&5OK?R4Wk*8E4EQvNMdtlFOYr1JI8 zD4%&m`Rkof{F;0Z(fbtojy^wEou8xSr8Z7`?{XAErx;X})H|8eiFswK07wJC5-)3a z@TDnAGL$GK-FAuY zUh6`Wd`p`lUfw1J^q@<(*4a`!SR9*cD)2@gTS=CR)J%EXKS}|I6@#E*kE9FnF!u@S zB4@#&dsFiDAvs6(J3*({9!2P~O0GenyyHT{Lz2{GJL;iaLjFOe0XmiRP#`J9Lo{L0 zjgI^#=^~aAXsFE#*a+Vf`lD{UqgqYyp7x+imug@-LO zBJXS2Bn5-#Qj+dn)aMv)Q{c&KaIye!zc!B^4s9ZR=}$wHyO(p#y?Wa7%3D)xJRX?f38_N^aZX6`6@7BZDqWUi>(nt$Ih{{{zq_h?UR>$C3&O8TNk zuOrHMPu}K5dNJ4`g2~YYf7=$tl-n4^y^Y`$FhJ$Fb~vG0ZGUM43`5+sfh*wIyqbmb z?{N+@*4~^+Q6jjnbAMsCDH9tc@0|_|k}Z%93z9973JOyE>ONU>1+y+{*Vde<)+zGW z0aKCon*#|qd#4W5(Z|9BE^XVs_BXBf7jSj`s}Soqr>5DFa#NJzrdoFndkLNPuz-89 zIeny`Rqii94`1bMKF<~9Y!nuEyr)f*Clu8uvAiT2Aoar#T4AX$0FjDIMSrbgb{s4$ z`0oy2_x7jShwRasfsh44q73o9T>JdA<0Vv21mhZIN%W8 ztfT{`6~BUi;!R7baYWktaRnd|be5k~Rw|a8q;wR3s7$GYP(+r)a=a7lx1I+(hX=pB z#>}=Ki-nI;qOVe*txr|;#1Y@C>4;fwIgtIUxuLk+qE=w7>NUb@rIG_qNjg`UmToSK z3teQdUN@pvW|;UWQ=KQ4Rtg6zj@Fa}>uxx$6by5?ck`!swKY1OiVucX0^|TPDPPjP za5V%~j{}NZBX!2hrhmiopFo}u)KQMFI-iGwvU9kjtH_+$BSYgHpK-pWadh1Dtcz?A zf~pEgY5J3iW>Dq$mU%^FT!bpe%!F@w1vPO}7)~CLyzxi}s+8lRuW_fki9X~?P*ggoM6q35tA=OQqlTqzfgE^p=O&Y*8fwYyz7bwe+14=dae z>+*Jiwz|KA=no63k3)@@{6K1ZZ-Q#M-pwGp77Mg1onE0iQ*?T55M$&LY7g4ItAC*% z$0_n`R@Y)KPQAueST_WsGI_a!_Gs$LlQnP-*W-|^*(c-|A#j{{m(l8udY0JxR%ZTv-;rs z`TrYyrl0>Gd_VtxKmY$%p8q|E{ftfkcEa)1Fid7^1w0ynuXWnb-YNU2vJ~R2W}UK- zZd_+l(5ee$sSLKx1vGX4OoP%FLN~2*31)x~)1tV0Ww@FR2%%Ft8c~=Kbp__i=Iln) z74G>O!P3`n!?_7NUqiY|rZvyZEd}-t^Du**9$;gXXL?UP`W#v!vv7Q3bNqJ|pX$*_#S3{YYl4BCR`RCQ3va0CgJgMQ2lHiNB! zYm>Butsl(|-dO;_dwo#P%fvu8QY#PhAYTpqrn+GSr*Y>x6 zb4bwI2y*YEEKy$K+ty1rb)RGJCN;QiWWU1^+(+gWwn5!iZ_ou zB}xyv;pybuN=eRpIC2|KKQ0-X%0-@HNX5+5EB0e0yoP1-gWlgOdem6Juyc=RlZ#s_ zW2^X-*eE1YSi;qo(Q8V`L<nL*31-Vld)TC!pwE< zDwBwr!Bhk2Z)kdWAE6!)hQPB@8~Td1wokTSwyd;n? zx(wzoBQJtMsc1PC>MEGOtZ@y(vg#sOP9OMMSJhnVn&C2%x)N0tCTy(rN{Z(GiK*BQ z7&w8ZiNMzem8l96=hMxTxn5(CJJZI}?LlUm_BL~wJsWOK9bL?EM3ujenmBd$a-L?? zB{|jqv}V{=3{Te!+m}1jTH%aRc(zX1qZ0OMgh5nQBbC#tPJkHUa%`{4#i+Awt8)!RC zC$FdRw6V>oJzdI`dPMbPF4d3)!4F@Pe?Ci0BPxd^rTZX~R&BW&4+{xK+E-QH>lL?? z^6ip1I&MzZ*F=dtrEE1x`l_tkkBVv0+?t)KOiAfdrmIr?niS{Sx}!(&s8Kd;WkYIk zTr~b0-IL}%|DS&~|DSs+57)E)KP%tQ|KH;C{rvy^{Qv#@Kd1lCVEmt;6L=11p#5Du zoyPA~bo5dCy>!7Ax8MJH`~1(_!#{72|Gb@){2**qfM2EXT&n^CDC5^C=rYI6LXJj3 z72#7rVSRd`#$IFRZmHta}^btQJPO(k#5aVTAa_LvhWUlN^#*sZl+ejjwPNK zE#9%eG8;tK3`?~zUn|oz7_ueZfVL%j6dCiiW{2IrMtkNy&-MFfMSQ(Z4`sC+jgT>t zPN6MRXj;S2a;7HMK|;yngiBsufLu*cp6^)E@-E2tt(embBdtF=_bHIhYmdqID6>ME zyOx&76!z$pe5=l>qvPD$-iHKCMMh5RuFjPS*5kHlUgmo(qRYgmv>MBCn3x)^XPR-_ zTI6XrHm%t@&r@w#yQS=teVHwYsH?SAF+yO{j~*509QwBNe1+Tj zwKQ($DIHk1|0Pslb2O@%Pf30K2Cdq3f&Olz$k!;nOt+{nqh6yqauOvfzj-shHD7k< z`w{xDiJ!!Z*l-Cy?V5ID4dYxj^@Mt{w-%ICO{ypJsU|HDIV}(aK$+R$(ENNVH@>#Z z;bcIG-^#bU6*sd?$@0XW)?mgjvFO#D=P+_3qoH^p8@DP zCXh_Fjuf}4*j!ebLZ-Jad2z~iV{z#Kia>S0`Hd;&JfQHJZBw!8%n&O{a7;^Kt`P6B zxp-Yq)7^9T8O08qBf)hSQI3(xSqQX1J|S>l0jA(WYB;kFsx%zb(nH(jzq| zPlDx&nkTj@IJvT}&kt2s+7fQ}jT5S7<-QUBuQZnZFZ|4H|5Hlm8?-UY{&z2X|9@@$ z!TNXm-#7StxBq>&|9!XrN&DZ~fCA*|2)7^<{<3}22wnunEaiJy_ zj#0ig383x^WtcWwepv&hFRri^OZcM+C9H;!jvjbk7Kw)b3v+omeyn&Cbw zou?MwNMVpsm5$i1r}4=exU6tVmvFj5H3EGj)50aon%G@$*s!vyf;B2Ugm`4u;yOMs z891PAC50OayQA`6nB04~u;A&4z0Rw5Ehk za5%{P6Qd^b3=t{?sm@|;QF_LtF;~?wfw87IuiCS$n$4TnFEQqTNvA(7X9m-By22Wu zDPzx+uSY+?fM?dxSB?<|3{x;gNgsZ7Gn>}TIm4Qsw5e)3o+3FN@4~ApQ>i^^xFzsI zoDicsfwzhaX@wpDr9WGijt_M(o4S;1Y#Ey<99RNJ*wzJFD#7qWSt3kW-qH0d$mULt zUpCYO>s^lwYQp ztm>BOuRgSA(bZZ=+Ph30LfJ(zf1E1J*ioR8^nt@u^5TxF&>XDYskEBF$EH6OGjm+w zhb@bSrcMeoL|*H#Heq~e%t1J^r_1fOXY%Tzb)iBKqKc|psirEStbiFj`E5zkkRj1= ztab;Dchv@9uZe7}KU59*pRc`Vvg z&~MV7h0Xk3)7OTmV`^uBTGGq4p~?W<3Z~S6?2t}FX(w1t<5Wu0l3PJVmGobzRFyshbv~F9 z34N2=i6==G<_sL70)!JnVV+VFHt?T7<|KQRB#aHXPLA&Jqca`T z`M`LiW~sw-wwphEX|GR<-7#-u`wqC*q+jLSI?(e}mD^<*&?Pp3k*Q7DTGR zgCNy;)=OiOW8s?5HC6$%W=kZPg{AxG^D&*#PhFT$qrE4m8%wYfl-G)Jcqc^(ZvUod zDeJJklDNJhLra0cW(dCc`l7a*>^9d)v=jn2Ds; zTqp;2vwOSd-JbhS)Oz@}SOnQ|LoAeaBNh1JvQok0RKGYPEk(qHqjo#$D?*91TayrI|>I|S78DbND`}sAEGg)+}c{DvN$Vt zcNWU~+dnrd!W!zL`M&Xm2LPkoh}uvf7MbCPp%`q4ZV2Z|{8}uG`l5C=Yt{~*{=Eex zW0$JOnR4}5ll4ORJq%N)J?g?&ti4f>x9Z&rz$)s-H*jQ*_bYCZ{{#_XF8-fgVAl!; zFoXZEJy=^!^Z$D*tKa>9zQrfc|EKod`{%p&&wsr4&m68Wb7lIR|DykJe1XyB+=r6^ z5J}f{rFoQbrFqOzuKMk0Q0A*}=bfrbAuu|>eEl|aansfdXKvcr#s+0=ux{JAO8vfj zuTftVZ2Zb?>Myn6F9^@xzw7 z5+l=-m7Z-k_Zquz27JB6^aP*3JZ@|{NzGIxR6SW&0XV=kYhzPVTRwf6sO@BI9k;s3jSe1o9mdtiDT&|IO(cWI0r zT*RF|Uq8KL-T9I?erKHi#M{QoGgQ}X z-86@*YQ?&0%*_-tE5!pOeE>2*FDXHz#~KAEa^W3$QwYe1GeC1RJ0`!wXOAXtXm=C*H_&I}JR6>FQe3#h$= zZ?qGkyYVOT*ydkCF`{3_y>8$uV2cR(VZ!s1MPh0u4=yuUwgUoDbDKs2guX1Mrqp`OD5b8lJH@16Xi9$)7ujgN*IsN)nVmemxcubI3ea;q`fvQJ2K`4{e(OlE6xb@=MgG1 zEv9!EkT13B2u_NZa5_umhGwxB514Bx*>dvWWwsStXmv9TYlWO*JaXMxMOB{QOi{TI zt)fo4-%NRuE*xQ4{P|~@8#E6@nc-SOhC2b;|7_|Al88Z#!5Cp183{V4B0VnOPKd#$ z$Okd23U(G#3FK0&TuH3H&gU}pV!`4_()m*f@L18jHK&LaQ7V_w4I;d-ACIn-T;pTJ zE~S{Hl5?wTt@U!&n!dY5j0PQn&uI3@PkpZ|i zZ-uoSzE8`$*~Z-=a~8q89N4-@}aVqopE> zdJ-4mA^XyCfl7U$%(W^-%K>wtj1Kht+c@CyzJP#Y?QV(ipoILgA)V>S>u`sh`K0S6 z`SrcnK5py=@^|gmUbU9Q$hx-{o`_m3;9pst0q-`B7}DNBgTigvfDhaER>V01Wh#PPwFk*7Z2~>R{(QrE?eypRPWBN4;) zXsnF>eCVn5+ruFoP0V2kwR*|0-3bLz*IX_nn=@QU5CD6T%y1#u3-Q9;G-m|YnPjRb z$!6M|CPQZQ^)#CxRlJE%rE3wGBXiWjx$HbjpQm>_W6v!<0S693)7A$ z@O&~z`I5xF-fWMPa5NgksW5HU)>%?_v)_f`P@r!LI#|H*J?a5TB`|J1dP-fF!KxA& zWeT6;J!-PLoOP=lsbJ}Ja#j_xNG}{z0a_BB4~S^T%6EfJGF)gJk13iPrEieW2FjQb zS}BpR$7fwJJfkS|^141WA)PzVy7e=%U|?b=`iaCnM%&HN;oe@8a(nGXtcZP`c zYE|Q;RFywKA*pzv;X`{0CRpBuWwdE-sB#7h&L7gFCVZtP!>WU~G6;7?)-23k^Mu`HJq$AcavHCDJ;ZXWP%WRWs8N zRUIfjK7_G z=;pHkUPo;crsT;+J|d83bqTe$>Nk9ox@1P>TH$v3R|LG3^)MtSrJCPNE)NamI_)Y$BpfMxjac}NgB)AstJxxD~w;NVZ@Ourv?pXQw|alC<7rv>-6FzggTW? z7bclnTqkD=bFy)o}u3Tuw_^0A<|sEd6*p}^^;I^2FdCx8lw$&q18n% zoSl!2b@@Xvv-c7tjluQ1tvT1M?m{E4i6@9vYstuBE4hP^>c1L*-2UQkK*gGO8scJs zYZ`w9UaVgF!sb#VK}k=xoS|Uq(qLtD8D5{vH~C#^)!{(-8m7s{mY1eX2-KB13D686 z;p1?pdzV9Q>2by_24%F=9;V~hWmc2q8U3#IoRh3x^F6GE%x+VsXW`c?vI}P4^e(+h zdM%~;q9)_c9pOU4XnRbJk}6Xbb4CDU^bW}N(*_|$d&+Dxg$BuU))`-kp|LA^P|J|M zwK@$Q{70L5yr1joe{K@}f2RKD!Grq`GWUPr@pt{tH~4(l|9sc~eAoY^^*@{l0PR-$ z6gGZme>Zrc@2sSsUpoT6d#)%HO3R4HJE#!$0G+|)!*Vi?NA2@)*#reHWvU-Hj`m&! zsJDRGFWdvJQ&gw9-9~HYxOs%(5Gf(Sjyc`oh>j+M0iL$4ki*?}*aylKhj8M%O2%+X zQ-g`aTQDW-eDIN_x_DL`OQyhPq7WrGoPti=?_;PwBwK`moOW!t343*<{o&g^l#H(w zZgt6RWa0$I0VIP{!XEydAwl8Nl2j7o@=SQ$Ktc>MK4u$)%O=s=R!>+ZFBP0Y5~h)pTf~~r{PNr&G}SIvuLJn zY`M90Ka;jneVTa`%182;iK#6|J{?J&5?#W20RbhRBsewbPA9vBLt7x)ga3#BoJ5!H zUdVIl(p&0`3iD0}&h}VkYC$#O8PJX7MIZ-_;^8Plmoq$1RW+F^z&>*2V`xS3-S${Q zowbnv0z_QBCK2CE$1sx$h-1Kbt9h6VVWx2!O?M3gCQ8txf>0D$Fh5c~rXF_Hj+09m zJbAvkI-wy2@&bX@LC?ZU(NB5>Vg2cYdUI{vT*EngU=v zFw9!Q%GkYYuK?7ox1&rCr2Pzr79re-UO!tgxaki}s)R%ne>5d#ew~=3v(EoRJh6Oc z2+-^Mf3B@OSY7+>|M?9*^UnY0_<+vP|E#a9-^=KK*6y!;*Z+Kj&yD;)B~jea2b4l` z8WD}+ZZ>7`PYKz5s3U?(KTZnW*^`krFlJ|XDK$^--{w)p#UA!+*u9c)bQuQG zpuR31Pk)cTld~aV;QgtfsDSjt{P+9V=0Uhov#ClT|EyoLO3Fp|^F4rVm)`t&y%yS2 z0jk;kJcwW0^H?FYJP*NNzp^Irxty7GpXc_G{_gnv{qr?H^U8lN{a()xe7gL1|KYud z57YABI+g!QeRe+o0YD6%=wnER9+qx=s80OR5X{eZuhDUVo;U*VSX`0-MWRnNs@IaO8Pt z1Xu@{Ka$;?@$#nnDZ9i18)-ZlbwVf9T@b*gxDz}(Jl@|v3HG;ljt^U6wWzFW(o+tn zSuEkdn>vd#&x=?pa^C7K4ATJOrJKN6T!L#Ob3}UCf zi?D=r#)}7COi#9gq4jjQ5NtDQ_fXeo>&b{_O19sgbQ$_&90Jd3kNfQp!C5zvUa5@l zs2BCo(AEv;3!+?5KkE20=uFVJ$$_w$DFiQkh3EozIOaym$9v8F=1FjHh<&b#I|@Wa zIixwg?zAy0GzLhChaq|%qVWxJ#pozqffw^jI-8u+GUX)V3{XTJGH#l2OQgABmmzCH z@#?j9m$c`R=C|9YLZc8QnNkI_wv%2u(Zs)#D;CjSrc8(tv#DQ|T6<%MJ_05E{{M@2hC{~%q{ zuq{}r6@J5U5yH#y8vH|9U7l#E$N7|7iGGL!2Xd6bS z16635zaSi(DvU)!%GKS&U+LaJ+9R7>u(>=86zKzoo62z;i2$<(>seKVQsE-_h_V3U zXyB`=*lh;e9MK5hPds%Mk)<&qM6!5LhAq<@*`1dMJ1-hLKR0&8pMPe0EX(}b+}o8t z>o@NVH*-8+hj39Fj8!lxLg=`82uK63{cMa7)V%1ZxDsj4#G=|0qe0N_V1|35Ezc_M zW7~9t<(~nb1)+4+ELW@#TN|!p{KF*&agp%-|fR6WNMo z2nUp93whY_#9HR<6iFF|=g^Pjc1$x&F9eQdOLY7umMjMnHaJ5&G8o*3?^WZV)d-pg zzijU{cZ0(tF5~)@!$%7G8y;?$Sus?}_2%`dR)jW{&9PKcD}}#;+Tid8?4R2T1LbM=G?v0sj{m3(1~58pGu!LYQbl`i&UeQC#3R7)=awpOci5 z0>Vs@%4LRynpP3N8k zblY|;ONuPlsl_k1GXf-Ng&78rd8bZtRQJz6#SgNq-Dgo&eU=PGx&27jfv|gxUeoyw zTO$sxwq6P;MNd^3g-5!SdhQuPRV~n(2348_qt>g|vzGYNmfFm<#kpo`RZkVsF|IuH z&p_uxo)_&K((OxnDB#Q>V#NN2I1Aj-s?fN3s7wvGcj3^AzdoHQ>{)(3i(ohI4};UI zfZ!;soV9@mDKB2EB9c+X&T+pRU5g6RIN5SST0|fb)7mprVgZIITiuWcRlO)+U{#NP zZZwW4*YL{Fv)2|g*|nqtCNlM^tU?}K}oMS1ity!y`(9L~C1*V@JB6CT!Q z2@lt6^b3m)EIUjQ9De=vz`g(Sg@lN2B?H_@2w49v1ALbO=9U3SACQp){xie?OAg2= z`oD%CFpKAN#C^Hd68QzNhm=|Sg;<(0FeSnGJQ$AMx6^lqe%Pll2(&ffp2~!9;69)A+UE&##;Ta!A#L=) zj|HAUNSvk+JX%zE26PiP5ti+Ks3FFZpmKA2y>zu*)(acV&mKv_y zivHEZ)Hgwoc&m=U-s0UKv?%r4z%#E_Oa=OaJzvz(0K6Wd$O0?;wbEWW^Rq8zT#+8x%F4c+-f3HP494ie-*{Z zr9K7MTvR`O`LpbthuNZ~p0E#zRpA~E)m;y$dq&9-v>C^HKIG#eRUyJmULS2AZ|}Fr zsQI=kZ57T#6D~d=oZ7=g35)i*K#{1|b|X>m8@mlzNdaw?3egJ?kLVz^(dxmYYf@Ck zQN6kInF8iqc9mE^@qUVx1fsH4uBu8^;Xu^f!?=SET#++WUnzJFOpz@;(Bx7_!NLC>j@OF}f z{nK8E7z#tC+?<@H6%xMeX|ijTD-;Q#-R)8=f0nbyu_DSkSK=G)Xrd~ewUe>vfi#LS z5<@7*e zPEqBwiB7^XN;uUKl?=eWsw;PXzxnuUD9A)cLuPu4z9v=iZu7>bWgf4%*E?-@-dP!` zcxs3mC^f{ENmV7kxR3RsNzcBmBV)-@1?$s?u^AeYVj+zT&a3*){70Lu?|R>`wOTcr z1*f;=jD|pF-881`5|KO`i03o#V3V1{g194VJVPIn;N*F5gl=)IpG69hRY2s|_6P$g zYzSQxU1Q)hQ5QQ>>SkdZc}6lB4&%`{dwhWAcKu;SC4GO0 zVfMNe&0&5nS-SEyP z-ib#-a+!C)Wn>BCcIQBW7MTUTd#g)kl;+S`EQDUMq}&LBEzAC9x?9bnDo4P|jikL4 z`Cmj$W6eQkJ>#VUo=SRUZY^n6H;i8hKq_~4jZTef*m*<5)1eR8lwGWK)Yu7{Y8O+~ zAw4=VAXzVLqYJsv1u+QBc+?&wxLrlvL|}X_9WzKPU@?x@Abww$fY|ACKIFDU`TynM zCkM~c*9o7G7|PL(lUN=hlg^F=PPxcAJyrRRiz!x;OWhVIRi(2*mHpbqQYBrLx>u3s zCrZwjUV&MKqs);d_hGhu8SFV1$=9 zypb7U>1!t=l`Co6T4fo@!0OX+qt!V6h3+iuHFr+r(z0ZB8pMJvTr0k3C3^djle>M? zY$XzprR%@0`{>aYlq*_K{@hAw(E(GN@1$uYg{#=i?YO6-N;$_HbD?<|-oL{&K zD6Y*Cnfz+&jI2jeZG_h&)HBO8g7Q3ThU8Curjfrjt#MCOSLxQ2oIa0sOB#f}m4Yir zzvW!0xVe7oKl<3DR>Rz9r!OYX7L;L4Dr<4#=DX>jEcmW1&w81)>RC1%B{1Y`lQqfu zF`J@B{))<2ACsVe)mogQtV(I9Tosk8mlBR<%27wrJFSuOtD#aG5GSorOhIYu(s~N5 z*f5H9SAy^>0ri>GI)!>J1Ip7UY7Cp^f-RCK`bx;10(T8my%HuII~tFHUr*CAMS!`+ z@y&=T*8VtUbMze6c#U?WEc1nBMG z?6WBqnb&O6`?s4->>IlDV$zpKrq3~;cnlOPGZs=+s07){gksm6Wm3sl!|)%ku#)n% z?hk#nmxiMNV>HT^d*R@Gd|?V&S{m&8c=YAWHzMDDBfJKjYZ)`p;3V2RLrw0iT}L@fNQA!zmP8bOA5hRNkCj*r(1N?85sZ`&8|p| z?F^O1G%d#GD0io*YkhKqMeAv`11yxJainx(AY&pvWUi znv;E_klm?(`SKN}shB!0(^SH9DPyq@+A}a;>qw(@=gvH8qp4`*s%_aNL6*u1&OkfA zYNvS+9J6OEEVR@;daEx#cr>Vv$gLI;-~Fd~u|1U)PcT*nTlDKSHeXA{hh$^f#YnCe#QrVx{#M2e!Z z_(|}rTZf{j;V6jDtO9ZdR*?GOJ>lxKP>{5$a>@Dho)$b5uDo&3wps&?M3+(Jpsw-Sm?pFBjf=~XvACjb&my~aYOl#5}aeqbBW$%pK#Y2V+|LS3_g08Hn zEmhDu!so7}G{H)HCd=SA9v@{39i|-Aa{OPcvR<0VqM7a~<9p{u2uoNJ#?0}$-nwHG zI?aTu-A^wy&tR>1=7+E9eeS%tWRtaF=gq~+*Bb#oFi1nNK5NflxCBUP2IX<9XxKHq zQCwMfIK9fe3t&3acE`^hJn!h}+i$*+naPN`S9}3_NGC??wh&`cQNb(ZBPktj&SBa0 ziJqv}q$f$6^uV$LH14W$akY?FJKrC~hGiw1L+7F!%7k=FmM*%{LenBr*;TTF+>g}D z#HhXfGSK*#GZR{JITy5@?IRo7mIqd+J)8@a5`CwmHV#mVC4j`pKoBe%7UVRn3xbfe z#4YXr7MwJ9TMj1DzlU06eLtZ`eCVi=%>Yw+=;w%Kx9)&W6 zD4w`@Z%zB3rdr?&0Cbh#bg+&$bCm$&TxHKa8R9S|L%rf>9p!ipXfYPcsO6%?D?nFd z#a3ztkaebLHm>FrH#^!+7ST-99XkVi=JrxfPpp$03_RY(7;z-9jul5jG%(o8mhlYK z7wlLOP7IKS%j%_cc=)98N`_PRMQq%oRoEi8HW&5vD$&eAEcgog1QVml*eLxr6Avci zG_emvb}GCm=MYgkEabjkb7{hLE`^Jd+b-^|Gw+APVDVZMw0hH0^^Hbx`A3q()8nYM zCC8$9AW%aIbk!oy(DYenBQ^1CJn2sQ!x!O)vh-G{+?fYE3{^nFVYKuk2*N*#s&d?B zOB^2nayI!JwLsFyM@yZqd!9bgvA_cB!K?~e6pCA9$;ixBI);IKA;(*X}z5=-@1Y1OX8=96vA(JAsPvk;G! z*L3Bh!{ZYHFF3<{voWP@CAcGib-VRvm`E01zLd3jC@}5(9AjZldwMJw@^c`b#xX$5 zujLE|*TR8l_&Z^uiRdxlI(v=n)|5I*b*DRywdi4f9T{W=tK3sn@Y(*+$&5-AeFf{? zPuJT%*cIDPal)o_PsI#D2oExYi6G$p;c-JWeuGENgXc(b(*f=u{vrWB^a6zUa`aLl z_Fe|9ox`I>!I@e0R4*DGE7Fz*5<&he9<)x58o{p&Q_uUaqi7t8#s^>=3CQeu)f(Fc zXA(_?ZORp!+gfmZ=u8QhRm$R7yAwAv~G$4iYvIw6kaFqs_mqM|NRrs9&6R5>eAaO5cV6p&6oQU`*lB%^;tk(Y#;Cbx_vBzTo&&6 z!Q9IS)7;x@Jm21fzWkp;;l986eX5?1#LI)`Nw9r#(m244r|`fJ<-x4Jn9%cuhk1y= zxURrID^su`&e+%ub`JOVkt@Nuh6y7L?KB^ugF^;ZDE!Tj$%?LH<%5 zaP+3TZ{0pei1fj=9d!WmJ%T(`e#X4I8NUg;avKjOjDjQGF}UEyqnTA@u{ z)_^fN(E@UF7sbJo!=1xD_>S!2SrcRj;LnrLFB4MP0GPtF9Tpy@6lvnBqEh##lxl6a zsLX?61~*P6)(|^~yNxV1zyA8N8SFNGY3{IppcH0s!;MG1u6Q58QDriS{y7QN{Z1qj zxvpUA$pMLycVI>Xpx&DaRUS7$REo}`a8#guSe>FA-*!He_diIDD;!%kv8dOSfEsIz zth2sG(WlSDLC8^HHm&CwmDVN^39ucSMv+{^6Ttg46k$XwYlYTIbQvWPF4NO1@nc=D zq!mE28(}nGbO*BU=%*Ayb=tKNiywn=L1@L2=M?yMv-oK<-9>5N_=;UzUAd^+{n33K zlaF2`J7{`!5%#)utY(b?l-2d{ZuF0D`RWRqzSxobqJ2qtfJ9@~jT#tL$?i=MpC)k+ z1fNZ-n2N^UwI7;RHih+pzQ2TR3pg9EY}`~eQxM58>>v?#F-90m+yrs;f!+3Mc21O? zNKFY<(Dwv1Qe^0Ty{5WErG_KIGU&IHclL9uS5|A5c~-TBkU7Fx(19J#Y7e%)aomY} zK}16{z==Ywp?W_E5K@5a8OND!$n2OVI5L_no3xVvXbF%?R9WCYmcqa(9npPG0=#zr z!P`w7cVcNGRpV23EVb#&?w~^o)MFURP4c%uL0*PIVc$`UDr0~&a)`>J3#vRnHJF9I zAGUF41w=tg>2bK)Db3P!j>f}i(|ct^x+7!;B5f_4Yq{t6uNjJnF42<2{(ydl19Nr6 z#iZLH^^ZdAVNmk+d59g$F;?162!7r*q<#!28sEoaI&z)l-ojD66Zs$#q>3^|B|4sG zV&7e+AmAep1bf0ffYgc>1`s^j6b_){kO+CFJ#3#wJ>avU52^G-8i;4zO(C+V*}jep z?o-M%ks4XAXW&PoZ&q2E^P=rKnA(J#1y+y|AZ9aQDoLEpBD6G5&Tvq}6z8PL;cS|; zSAp%wLfq;=Ye^kB31N_UAsiQ@w-${%E{kp{o(GhbpG^jA+U$m%UVGHmszG>J6mX7c zw04f0N2JZ%fCmNZLT6VQ88H)YCV#4oURQ@r8}{8Z)lPqskUcUQT*mL92WQa;cmx1G z4bLcbKsdr(A?>ORr!*L?J}RaZsHBbv!rAQP7!GBCU<(oCXQ&5hZK%tHGHplgace?K z6uwSSd(25K5X^EaWvxo|A-w5ndF;HybId;5UuJCDXMhtz{i1`iVvWP9cMy!wIz5eR z{y3yMhF+Hma|-K@4xW>D_jR%@cz90NgF|g$tV`UVoOL$}DE!eu+2RG5*C3nSLNo`% z32dvQ^9c?P4apO8TW!O|#I^CKD|21IXM?0q?V3(W6bMebzAA>|W?KUY`k zgr>ehr*?uQ^U`dHR;aS{V8WVScp3IGiv@hup818d3P2iO{hj zC+*SZHP;L7fj3?-;)^aA8W1*H+X1KM(G&KKSnc^9?@rHziT~f}bJ+d`bSfY_Fm- zYS@e4BUihMC&1(1g~Yp%RRFi@v@x2=MSE}#oEU5GV}S(ynOVDvfnEnO+hP*BMYKWX z&PVatnW+6s)ZSwbvf8Pr!3K!g53WJF2&wqx2ccL$dEvT9H4aXsy$`LSVqL7QtUjo% zuGUsoMQJY@Og@yb+E>7(^+KRc<7@PCnsoc7#+TyKr!y^Re!cFtUL71B!JvPYiG3=J z^IFO)@^P_#1O=L+G(+?+iPCk2|GbQ+C2I3)jihy+_!@&rCkb^piP*yZ=IrUzLsR9= z*|GoNU-X`1lGH(_eu8r(j+8K(05>^q;bXD7R;)K+Qi`8(!XfZYYetLLPzspps2IM6 zUf{-JG_YCSC{b7O^A7zQn38{Qbnf4QV-4r|B)qxyVOD`4Z@Y$vRJI}GAB7FcyHWeBn!kpRlm{}oF(J^I z9!v<>*pSn%OZBhE6icl}Lu~K04!@54{PbAZQoJbt_%%DT{qp3+;qh1D@NdqVsY5mj zFz;awySN#~Lrz+;b1{N$#zWY%e`$~6e@-ItsH30NFZtOMC_YFoJ9VJy$3-M-B9MfK zrE&P|y2_5vKL5v)@hkT<~MaZ_0hOe{8H9V0~c*Gd0=mD@06q1 zJSxs<^{i9jdF`HDdOpi1mz~@8Ng4zm9kxgnzn}#)ZTj5#-=MD%mi_a)#%7Af#$&e~ zgeluC4lGPJ9tKca`mW^puH^Zyb!g&OAz>#^(!>eRj zN9=JQqbTb>J?jjBTHJ!2Bw9|+eGlOu_wi%^wAW1|g^8iFjWc1+tPUN5zn9L#Qi{4S zO4)Zxzhl3e3_#*We@A?5J*T4>Ka+QYQ<+EfXYKw2Q|P3*-@p^++KPP_diysx%pAWG z_c=Tz-+Xd1L{7_MH&c;R+2m-b+)a6LQr$F52NE^8pBO?f9Ef>f;SDZ6=ga}o1!%Nr zBmkkjrNc@Jr|arQ#5oL0aM1-JjQ&``s#~xXhP!Zj55{7Ne&A8w(*YH752T`ml+z;& zB{IsO7=X+hMG{MI^3H2y82m!svw)4h_@yqw+KJO=1<+@J?o^IK3=$Rw67cEOIE+W# za8%YUEny~r+&ZfdQg!J5n_Z_H;$>ZfXb^St0>GZ(->SI^FNb)jXNLnD;}47jN!9sj z*_{E0x}sz+8jpKnW6+J-1AQNB_J#YrssA_3eDPz^P6j74z2YL>5^MJ;kf;n|t>=vw zRXEsEdE}tX2$O*+z5|c#WusS(xxAZRaPWru4n3zE&o1wKE898i>ZFp%fUbp}m1T`| z+Q+IWEyJs2%)KOYEm3V0ZB3oS;Me2BgS}TAShfr$9;K6`sAN7SstAHmI$X}6=nYhA z4x2JQq)U9A?&)hMnArXSZ%)%Ltik(sYj#&AyN^!Wc^ct1s zl4qu;D#G^;zUPb&V$||KDKUdWr`Wh)~G#@_}KUTPkZs|u~6>2Sb1izqS_>xptlkVUX|9d!dDrQ810JC4l5|R8#A+ZF^DH@~1T!-6+8vwK$r8Z&lT!&@ zB}%ZnWJ->seu##uEhW`$+H0Gr78VhOpO7`WAI`#&jetqmXqS+!D=?YY-DniDDQ!!% zo(H?XJ!>2XCx;l_MwnHeY1m)y;P9Yf2hQf54Gor1qrhA0H9(H>oyq%^7(6;HXGkG8fOhzg>t2dTc@+Mx*IA6D*F zIKNE6efxjp>xY$!x3d%2g2G`LJ%I?bc{`tABVuK3dF9^n%ENjIn=a)Jftb~Qn*b&K zsWf!(`b!AaI;Aj*VU&c!mc{TC6vSs|39Yqzn^s~emIvI>5X4tK;UP>y#Vr}mT-8s< zfw04s``dVJ;lw*ChpAB8Z#oqXCR(wA@2HLTPmUD>bdg)j3eKZy(Ja}6a#zOm=42al z!7@R~?Hm<$>@mtwk#6Q8MID!^QDk!N>4O7oBNrblu#iqMlWOrtG4-j+w2{}1)^^L= zkM%Fw4=dYs|W8!ELBd>vwI)1xvLzX(O1b-w~V=A=c{az79i#i=3#RIRW;F z=qx>g)D0VjgSQ%I0FoktZh6kUf+-=~gRZbO8#jTOFWAE#E4Iq1rBzWqz%6(v^D3)s zK{se$=NWy+8Ij(>5hA-n;ql!qW(!04jrAEy^rE?_bHYZD!9V3w zD-!CKz?bXROAHtZk5Qwq&2GVIxcUHw`1R_KZ#lV<#hpBb*VnM{+R9s#3CXS?)tUvL zEkY>LLIC&PI((3!aaLv4s+xD3W{WWiif^KOhuHC*q;~wu<$ZvCqDE;=wAc0XL^zQO>UMP!tYx3RkQHB~&G_2(N0}y-0q{JAA7@=j?)?u` zTk@qmvtEuB@W$4@d|O%bz-ubw$1^Nt-^yyJwbw6wMniEOqap4$SramDIo8BzEwyWA zR<=2}WZJ&%Sf^xzc7-ivbI{sruY0-Hj>Z$Me!sS@&u_G|(V5$BXIJu=?!KnQ>4qjJ zP1!fG9ZfOFJUc$zM^nz{8nS%msbbM*XmWW*o~??L-AXgjyjCLLDr+9@ob2V>h_ZC6 zlDnn}7Jjq za%;Pony*~2tmIX;YVdX{`{Wgm9-DzB2LEq4P{jNCaD)2Q~Z!B1WMYJPqC_eCaP*nQnvAe z^FZ9eb@(upI|J*^+$sWBFm}y(X|<74!oiJ_6X)jfRV$*LY8gigDWbK#Pk~c|=ZA;8 zNC}Ey+_yU~8aqGZrJLO*GSLkWx1bpbeh#m;a6qd9coBWWFaKwY2U(ly_4L&q>w5Io zdI9yEf(XYtHI{uatmC4(+C}7@9v}5muZ-iy&fzbOPgP(aayj8WtK&9R5hEv*d3+npTZNQg})`=H@RYuoyH{2=hx&?Lp z-R+ZYI?^_Fs8M>jb9exvKwZD|N?rb&qwlF}f>V%4l_Z6iJo1X^4Sh0P`J`m?ZCvj@BfdJ4G9W@sB__{U9HD$v9YT9}e> ze1^xerR9-39)$#(&noXoslKTB;Bhk%d+ts6y*bAub{dt=-ERnzeiG z*r3mV{JrK5-FkZHiu2u{0D4l=h!$4`o+_beR&S&fO=Kkck?aOs5kZ{}@fsJN`0h&$ z*6A=tnOnY)4^i>Uk_H|KAF)}?Shu8ZfYtPiVzDZITv1*LuYV*Tjm0-BiV2%e6` zySsPg)(S6{hIj8G|06tGD+CAPFfCF4^)*gY~CZ*Tu{@w z!zw@q(=1o8=`F3V<*Vv#N>Kqc+|WE#KDN7l|7k>5oEFT6=upL{zv5Nv8{YrDxK10h z;{UI&-t*l5UH^Xn_ZxiNq_w1DesS13q3Z(9XN5BJ;YpG&4N=lLj7e=W*J382_6So4 zWwPNCV1P-$UBIh(fF&$|YMSr^#%l^9^Wo&}gIKt*{UBZ*{Csfu>p=>{x(7F-myZ%L z8N3_B?+2VL9JZj9A|3>yj&Nlf>8=GVDtV2Y7HkD2mHbb@oPz&OABIJn6hmfm!*` z%@hhVPtLH~r%jzO1}6j4$vD?8@w4~q;qmUK%8aXDgKQj*q7H}&5o|E+F{aI-WQG|) z?BOQF(^n^rO))@=arX9Cl(j&s_!E9q!m#rpQS= zhCXo=Gw-WoR_JGu4_f1P=UuSs=~n(L`DQJ@Qs$Kz`De#3WmkX9^n)p7=7?~yU05kJ zBEeA%i@`VHhok5`!bW#?pT1sQNxy!9N|xrX@9C~~`|*u;3swX`Wx9Qhht>?KjYe&l z+h1YiG1Iu89!cl@8`>=ohb9rQU1IO$fm$8e7cHrdcVVJ#C)+7%rG;mbAg2UBo`o?L zIvT}YSn&YE+xMgReK>kKl=%6^?|8ep3rp}a?D>(P#evYXRqYZuen1}{_%d_t8v4C~ z6lmiJOt)vu)%uYigVnE_GoNC|YnN{aSw z?`ZLb^`Y9CQYmddmRj?aQtyNP#tFl^mo4@5W$RU{#UHb!ng=HhjEvUY=FwmIuff_oCMEa z?(I=e);z6k?`*?=C(U0PYE;%e{UumZ|IDTCSrowe?C3JQJ-q8-QPTq|umzm6TSXSr zWKCt=$fbmowL=wHwIC?_vjf3UiEW;+3ask_u1!G~Fq4?FE~ogq-Dj!)#LxB4{}T%AJ{*0?_+KmQt1AyZ=l^@(&;Q@xGd2E~ zKm3-83FbV5v-<4FU;Zdv(*lacop<3l`+PERpAF+)3TQYQ4dU66zp~NWJyE>UvA{b0 zZYmDg2ShYglma<>s>ABR$Y4rQfJe`6ELT=A97$VUyBD?L5G{X<&b6YMoO$Un92H-$ z-GA^_{azZuG3jbkJMgkzQhL2g%;UiT#QJMu#BaC5+(RE9I^ON5*rw|&wf(Lw)!r-;>b(srqRUv;9h`c2D;cJ z!yyP2sfqmyysMMmkMZV9sifU8vjLvAk4}#ERB)$)RcWI=91nY?O?4R%+OJqfLYhbJ zDZCN*-|Z464E*rmp0t8VoFz;gc{yt?3^_Vbwq(tYe}oy%U(&Mi{WH(!TJj%mT{mcB zmi%|`VJ83c+P!<h(>lI{MCao3$e{+P)`NKt>xmZ`-fKi%aC&Qe3>yphmij8GVDOxAj1H{oyiE%mA|kl_^M=gfO7W!Jp~h$eNbJX z&dZrT8_166z^gtNs{Ht~R@WKuC_Gml5hhvDQhzwC&X_X)jLn)d;hVEGPMCrq9{lCd z8il>T1WuA>v6dm)>x7Zb!RJN@%`b&-eksv;Q*S*sFe7WS$m?s#EmFnPiL=)D9;IH| zbYV)f&7|#i0f3>1>!k=B7->ZQcW>NZ=rc|JQ?HgkvkjDo9zMLEC;!p+l>7%39{kV! zFVe#qpZ{|CZ?5^rjGUN5=Z0;}lK&q($mD-ry?^iiclrMtd~OwQiJf?OHHywJ#-hAa z!R!O;p5!vs+1X`o71cSRUe`2JhiAoN>k!3nR2CI?8^7!|pTbw0#Og_0gr_Zdyin#6 zmHI-Nt5u4{oo9R7&s*q6y-||3bN3ji zC&c_-fIvUKym7a88_ycY$BkXp?%~tF<3f@ah#2KN5E;hj92ynr!&ni_g`8 zitE7xjVmV3jHM`?1TYf#>nb@*7*LD_afUEAmaI&T5D$w59^q8cQ8We$870f@-lQFj z#=~=Z0iq|@jN$;Mm9B)*sMRO}U4$)~Z)fo+1ZlkvYy>7?gZWwuc$NHuPjDh())&e< zz?b3quH<^aFzxJxNBt{u{YvGBg#RC47)fq7I2ZFSBP~n%7$)cbShyn)q zwt3Jx+1}eje}U)6+xq~yOGR5JyUpVYaILEZ$r5?0w{%}TynkPHC8y@H>gf~+sb;M< z3IAE}b>AifyLZR?^WZeKl!n~th3&xx5brRcuc~GTrd2G}+wflu|0VoSeF^@Y|Es7s z$c6IzsMqbZM_oBj8})dr-mL&+4bsBdD)EI69&^cmyuhwy^S3|K<-fHRko_|9-}?I6 zclqxdeAr3Kk^nm-0p9mWfH?)9hJ!!a{b(Te+oONMa(f4&;&Ir$Xphi$4ozO z&aYn7kH%@A0p-Im-Hh+E*E5YfkBIdxXl{4sy+eXbpdo)gT zYG=w%`aT5CF$Sr5An#S6&b4+L!Ja-iht((Z1tX+hG?;v-Q32d%{|GT}r#m|=$ghbV z+>%9$guuO{ z4DKS3(<`d+3~^{l9KK+2xHB8(_UD&ED#s~2mk4GFL+;t|3rx5tS2NW?>m(?iLY zF`$O7n%8~P%dSd7e}S1?#z4r}N8r~zOshUg!m~*aZww-Ri(i{3FEDk=_Q5Oh>-O>S z_QA=kO-iqd;gwLHAy83&*oy!%^b2o8Tmkx6d%tnK^8%`DKW*+cPhMdJ)@RL=gGQ?* zo*f>GZE>`HeA3)`xwm~Rj$R%g9k%{IdvDs_#*HkDp0CocXe-Ay=}-&hB{Np+xw1q% zywP?ILqjbt zd<~~?^!%VqW@bqyu3X zTyVlb%mr){Q)!}vgTBKhgWrBrb|(T5XSAFNGhMoH95F#|ScYj3EmfRK)pedbRbcer zVYST%I8DHI?)Sy#et?Ia(Kxxzhyw9tjSU?if)iMLrs|N}3P-7KJQ(1DK;+}GU;GNp zAHU4+3j!KZ@$ZRh08jA!d2s)q_oXq8GE!PWSGkb8jwOlY@NGZf`vDM8fJ2HUtxZM1 z9tXgHpP*0a&qw8-HJG~dKZXUeN?97(MkTMgi`u|Gx(c>?hytG z|NC3_CKfinD4eFk=!jRp^mBo4{^QHbD4T~?Vm1N!A5$qe<;?C822lGuc|K5G3Yagk zAG>Q9P-A4w)95mqXZT*d70CXzf{}PJFG#zki2nhOns5wVz$o4!yPR7QLtyj{m<`P? z(svAb?VDewzX&5coSgy9%!7gP&|P*F>dg~bE%;@wE8P*43=|8e_~|=B8&fA5hs{BH zh^Te$7Q!+Yv9;=SPh{a|0Y_BNdqI?s5!yFhtB%3-u`vX3S?mHZ&wMC?b= z8txpx#&`k9r6BC*oIV6=B<(<{`QQqBL1TGy7dW%qI>$L$S%a;dBg`{J%oDb<|LzjjN!C5(*n2J$EZ_f7f_`UuV9~2Hi#uP1*n5w$Qy;>ouIe5x_f!4@~vB5Tr z+@P`N3uh0GQ~FvsFc2zC;^JZ6v=Tc$O;~p6zX#EUUP6KlmxiM>j-b#Dxf{+byVk88 z<%6Px97SOwJsG4#Q~S3gQ`w{@vIN5@?Y4;p z?Qx#u9lcJO=2yvLfFdG@waTXVay9ZOEncI)1L_W;M671`-lU_e`MaP;1VMHLyS7Z9fZL(^HzgfW3yt04Q75iLP3Eu%r)SjY7)yfL1D@WIahd+A3D4Hom1n%(D$a( zG<9GaQA7{&t&d$=5iTUOVLE^CLKwGCV|MEqK)$|Dqh6O7kasg>0fVSg# z5Pd)^0AR70M;nz?K=h&P7wemu=sbvGnp!LKwKSOM0eE6k19 ziI|`yn(e?)Eg5nF`5M#Ve^IY6qPnPtMBSy>UFP>Q0ER?y1I3`1lEGsKQ*=Tz=8R2y z%hwyN@l;3BQSa<@|NNw(I;p&(v0UPin>}lsc~|u+xFDfn&bOnGL8OQin?|ro1dlQB zq1>>ckmC4jC#ufllyPxS?32VhOon2U7Owbn7>Zn;rAuB7*AP~mK5c58)BG#Aj0vG8 zwrLkbQy+>q;(HQxjxS5NHiaEVN?%1DH>@@BSAVZgI0MFxhJe-Mo zA*m!MCE?N+)N75@>i4c9=OeaFc zaajYTS@fztk&q6LPcOWK=E+&?<0EKaVF?iwO=j~OLQ|25_ix4LD=4*e1E|S6^6O46 zDwB$Q(7(i5q=%APD^sIOd^#q*S;eBoWL8-$yKpO37%DaL%M0Q7ZURjG1|r6I(u~2o z0Eo42tWn}ZQ4-{BRti=2KVJ4P6z##k<`*ce@HKp?U!$8B;6xNtj_g z4cZ%9=s}rE9vz=`o*EV{@VCF1C+I^EjZAL>42gpWt7s?u zj4_4N5QzWc6*t-@&ea=k6}uuKC#ZCC5f4P6&J?4^;T@$u-J@R=>poee6IfT-gICfR zYW3jYc&}l5vlq~tO#?#YQx>JsU$b2wIO_B^vBit%Js;9Qi=qh5EzoK!rb7Nd_& zQO4j*D5wpsizeZy2+I|WTG8x#kQgQR8uucX z-EFZlqs75I-E~$np1@s3OAX?pWDt5W7YriDvu`~JV^Sn@;Bkl!hhmHmd^6=NH8+NV zSVe_c$nlP{8O52-w3vnBnQ_R%nw0hUbO2bz zFC}8VOuo7n$?!#5TRadFu(ID`u~^)+ul=7!+MoQE_OE{%C&}!$(eSs)@VDV){kJUr zEgKAf%jUlg2U&J8e%E}nwf@()Yo;FFmYu{czdWj7pVyyXNQ#^$!$|BO$EV#_-J?*r zB5k@7nA^em@VBesZ|{fAH~sa0e)$eGdV9TY*xm0OorS-3_rsrmK58!83EEcBd(tdQ z=Qs6w;ax%uPP~I};e=aD34Y^;7-Y2cFDWRfn9TNC{Xu-^Q?;{!9Z6x_~>GLL{~hRV#8% zhtZf1Ql9?QAD@lGkE_!B)M7DGgMM)QDtvL!?VU9aTfHXF@yajeaR(Wl9GA+@g@|sz zKXC<&gP7hBt!H3chQ(K#!)|;ZwQkz6*W>vDL&ji+xr3I zWB<@SdX>OTi0r;@n>j?rjAR80ZLcmr_!6eQyWx=jPYs%vjFJUE#+h=!2 z9Z{wbQxBEzs3S^n$2ia!j}Nd^=}|k9ty@gmlsgKkE)QP7ytoBSpW^28;tTm42o&}# z$i5b!VTT;@h$`ZlPHsQrWd7Gw`ldUcnJ0R$GZfqe)jZRWdJ`*W6s!0!o?DkWU=k5Edh59o>GDn?0l02d2gMTeIAyg-a&m7k+oQ|scC6lq# zC@ZIhuJ!FXkyfr{lftm;ObUBG_8oV%&tr0L8q8+8hx9%Q&DaDG!IT?ZZ#G+hz7V8C zI&iXP*Vt6mUE=c|7|jEmOvDz-8*t$l96ns=@<0O88@3_TPGs~r(>f#lsI;nOHp?*D z6|-)%$|(rmd0LXXq;tC&f(s?2ugGy(&kjvjWaFDBxXJ+9LEq}6`j9v}MHDgnkY)u2Zr)AwSrMy_^7-*@YU-q{mUBBGU3`- zsAa`W%{Dp7M$2^bgMc2fIu9D2{zTqLn*;!DWd_!uVaO zajiR$e=!>{30hxAaaS~58@KEqO<=Y{*oJ0YMY-V23x9-Xsxv)E>5i?ldW|wl-+i+O|>RuZ|AeM1}z94I@z`e96Tz`mJ)LCxUh@jq)9zp zcQZ?RuIsJmGs}jgDz1An%SR(>uKO}o5HcyV{>!mtpvesJAwT>T8?H18G-8-Jd$fk4 z%qDH+u>o02SVp2DD0vzcmamn@9O4a)dsQywC6Vpdtx8>>a1%V4ac|?Vxac-P1y00n+=^w{M z879Vcx;ifDYSExe2P+0yIoqN()WXU*TC8o4+AVbh~aydaU>X2l>1=7?~U-iZf>@aNN6_+J*^>P>NW zlWkHwt;(=4-taL{8-wBIqs8O`(u@Yv`8Z$ux*yLABG**DarV7u_C8h4KXR4}&;Rn7 z4rut|WkK<9$$y4$@qo)#S+n-Xi%7-D&~^jS9CE}ldyp)qG7P#3L(aaLvNzjrTfuZO z9)}}z&@_uNF!_v}oQcLLz6O2or%NO=E- z%6uENWgWh*FvCO$Poz9RbVbSvar9Y)UWNfcE8t9{A<~y}tPc2zKg33eX(Aj6dC3aC zr*0Zbb|^uvv(fF;{rl4D9CplMGQE%IV~n0WC)4J53Ur@9Pms1V;iwv$WjEO?D>TIT zEx(zDnvHuDq+{)u`)k7BTz5-08gO(66VAs#J8Ue38LSyEL1V6onqpm-YkvDJ)Jk_6u7{}^Ie3G*?;6xJ z8%j53=;88T!tQhnjZ4vYE?{uTxM#mqy|aC!M)YfQbWGK0_7*eYST~D@bgfVQnc}R0e}1|J@NoBv<^vTVOy8MXVj+WvsEb37mBk6Jhwr;m@bXM+dK! zA%iTe{Daauz<7d?7>511h*A`WL8HM=%J_-8G2YJUsU9z6h}zF^)UpB2;VNd*$5oyH zo^j+Z?;AuDTfhbIOU|Do&oh?9X}+6D=l`mfZ;GQ2@w~B4S8FtV>-hTL0*lifjQX%1 zh9#sTy`JHEaT3~ZbHpU{hJsXJQ=V$YAs4 z6(@t9^B~R1(eGS%XdL{-h&m)*y{uY2Rix>JS*U8qX-0vKk=l{}5}w`wasFc zt0LF*A-;kebK@RwSw4bT&9#aR{@i`p`Fr=Qv)>Rk#d!D^6#W^qduO|6=e>pjT3jU8APNb)ko*4?4KKvWBeZuL|Ky4mZ#I@&!jI_jbw0AFMDk0_nQQ}U{M zaYLczphtEqKc96@4*{M6wX>=_>wq-C^)J}gX?$Z(r+x<|B?;l2f@Hsty~{WBtpYFy zWeq!+3=1q8<$Zw`DS%gJ+F^b$(_eoTLITFw;%}21R4mZb(Eb;x1dze_IAxjD#oMIIf~D#?_5g5t>#uWv=S4Cb^YHaZSWhQS7!ESs#$ z!oo^Gw7C9^2hFXB#P5Uc+&fF@sDIYt_-JdAk%|t?kiW?AWvf!g&`*&b$N> ztkVvkCM#wzePo^gr#d`kycGQT88l z3p1=gbW(|?!FOqFN&rEwoO_RLUe~H7zv`a9%%|S^mwK(+DS*q@e|x+AIDh}U_0|9H z7x|QHT|N3$CzD1kBywh7K%hC zulfMVc-Sx;vjW7((%M;HgfMPijfdT52m@v{7Jx&Fx2Duld=xKx28Mknui@k~$5V9{=dnxr~-RzQYlRDyowUtKu78V^A;vso9_i*^1Qoi&*60(e7awuy5W|+i(WGmFWXUC9EAW8k@SKBj30Dggl0dW8*lX#BeR2lE*2y2v@7Kf&>LBz z${5-PA8IJqP=h=sb!fsOoXF#-TwNAERjs4rqfRS$q#fT5lWAna7sJJHiMjDo6DUGa zkMCw1Swbr+aPVk$0TH8s-Xjb(eIX#%_5`->-_7omXZ#UG;fkkf-EzO|tzu`@iT7mj zATI|JooO?$#bO!PbbxuoJ8Kc=5bYeKpZYG*rA}++VF}cw# zTE6#UtRmx%KdNEffdqOG5`omV>*pELQ7E|mh_Ln_G$3r+GajKorJdpy1H$Tm(15UM zXF$jzp03)03jD}!rUN0w5T6JBs&;aN#~a$Nf%JZDZ&pSL#l3mwm6BvM$9q1H=)>3l zqhW~%M195^ejijC!*U{(9<~o)|Mn2K@(`mby|P{o+%V4i>=(}iQD)v2WLwGc5+W^K z@6=Gk4;}=Q*;ZaeLzlN)X_qrTx^n@IK?6$&yYFlY_5kq-bplp zX+xo8>%*3^t?&r=CiS~5%oaWj4DENHIwMQ9AT<;o)`c7eKZSg3O##%vD;!H+Gs+4K zQG#5*>PJIpoGo<7L~9{JE6v>W@@7-G^k^fdlb-ElB{#<>yJtUyKX(uI1&4%FVb;Hl z%<%1UngzA-Hhb86g|j1%(}BnwS~1TE`1uiwEBiajt9iNnBP#15$d2<|D zzHVQHaH`iMR`-Dwv;7H>1%!g-UEDw!Tl3JM3;i;h7aSIR>pg#j@GXAj;$HIr`@K5Z z%iu)ZyC-k0m?!X+tB)B-J|IXVrLl^lC0Z0&O|6$yC^3kANI_FN9?(Wa}Sx*0dy9>Yy{r}c?51-`q|Bt@fe}9ROzW-w`(X%c9 zb(*1?XGZ{4QJjR;0;%;^$;uqf!Ot@wBeF}=9ClNE8#eh?kc5m(R8d01Q~b4#Af5(C zaMY4^=UU&$d>4cS;L+ESu+Y8gzmJ0clny@xU|&R3jg#rqU@w6RXp@>n!Sz*?LeE*G zStH9i>JA;LqR1BY8qKEJK_yg~y*$R?yYUocv6NgyNC=*OfN+iNLpRX?z40=9)j4~4 z&?Ey$GAI>0{Ak?2%mV1yak$?-?d+W)tbp`D67{ht)iR5bJt9Nn){hcE@l&q7u9Zb_ z`XP|dj* z3@~bC1Ddotp?VHTAqtDL057Y6Oot5YMg_k_5}pe$($N$Iu4FQSVnh@1+#)dKEoA)%*1=ON{m5lL%WZi!cbHJwwn1wYq zMqEQv>a$M|gcX9bVk5aaUlj`+z}6 z7x}>tCp=gEH0|GH8$ob(6#*CFm2w>e{>7T5c%smJc8zlZh#EvGhCvN5?tz+62Bv8x z9Q1)v#^|vyp8mRsQ;KTPPv;>%o@rtL=Q%fnM9T9aKy5HA=#M}nP+^8V5QVuIdh<`h zoGg!BvZfIiFTM9hlrt;<&vxxh(;FtzPdXGk)}=mH@kko1z&bB2TtFE!Fnlv)wQ|-y z>>QuxCl?S_!dLg?5aS7~#AIQTXmHv&JpRdM+2*qGfZJzx1y}tHFczWdD_s+_!81LA zy2<9z#Nu3?gWcDiC3mm6oVpkrLdB%Ggoa<}A&Ms@g`9bG$?IUlhv5;RmiI8)N64R) z00`?C7t|Pz3COOd43e4&uhB~(?{nft0Cp4Fo??6}1V@YDq7UX-LwSOxf5lT3R}<)59O2I{j0s+v|m*gKL99oMoZaLDahFK1^W=tm%R8 z_Ff$jkKL3~N|CXEo!~VMn{W~nzM#cM&_T$G7-T8kAKfmgKzrg34)o)B6 z9ed=X3aiSsLwLsoo z3KrhN!wP{OW2Np9oLLVJ(3|M1)7?WTHVM9a{8$bK{_b~rXK;#b{x=#3l8yT6VyZ!) z#7_=l;;F2(gHEgdyK#Ext-kr+|BdB$$o>)}T9ikh2E%AZ0>BhIg*69woOrMShY%Ry zgN@67!as=W;}`#LFL)|QuJ_c$$TL7h(}(B{IDQ@Z$CNRpQTi1-cynr^U4NEno%zfBdAqo#X%QM_>Ive~FL0|6}#d z4~{y=@%lVneDL{E;taa^u>3zWjPCJXc)0tjyBFMlabN0m=4pSLjmS)i*WJ`o>-_yC z>Nbv#Ix8z%AGWsa^q)_=XPnWtGf+!K>Dx|v?4bZSZl@^uu=h$}M5XsSN4-w>=;blG_Uo;zJlvMh&j2#IYRuG49qJ=S$#|Sx zqpnprr?MJHAVC-|{-RQTh5=!Up>g}cleRC@u>EglY5#K4C%0maHt@{NO{t(iKwrT< zYI%`Ht2lb3OV~V;X%ON~$-~{@5S18o{?W=ew8Ej@?MLr-o6HcPq&pS zYI8HV00gdl3{Ijno^d@7w1eJ@9pmR=??na7Ho`neE(;+(eQfpcq55^!PcO@Xx3>iF zb27;J7`P~bbD%_;XgNH&y2+qb2X8zh<_BAk=H21b?MFMle2L9`j_By>N^XJ#&^Oy} zccA~ozsO(AKN5eOd z@cCVkYs%=3pvQyrBd04lph0l3m|~$9==Ao@U*3AL#M1~RsqGcdjEN-3%%eaN8+6+0 zkq3dN(XWdro4*(*bSvWYdvE{60l86esTP@qL8!ZuX&Pz!l7|y^KT;L=!rUM@Q_5`J z)SLDb!nCJPd0ZcYY}ZNC?sSxhGM>c`pu`+Le5*Ppdm?C|gSPz$hI)yNCz*!gw*u^f z+cv-@qY)f;q7bd0cQ!Zi4_@O@GQFRnms`2w)5QeW06ISozEKs>XW9BipWN?o|73ac zb3}dYPU-GA+(V}{AA>w5JoBtZSx%h2K^FIEkpO1>be;o%i7_ip zIr;$X;zI;DrtZ--N0964jw>ym?Dl$RKb)RZV=!YspEevZvK6%3EiZ1G4y;$5Gnh&w z8;0cr^<699sirVJC(Qw=W^)Q-rCp{nbf@Dp+1@b#fmq{(BmH0hG4lT{&VQs#S;iAY z#rf~M?d`UE{(H3bRsZ)zK6E1ZoF8e%_jx`F9BL*FMddb-P4Gi>J&xw{^%HbboDNaI zj>gH1B5wj`nDwVOu(~%+Jm5ZK?jE33_=&>r82}bP?e(c(fR^MV$fe=kD1L=n8iC=ymY(?&<07 z(b?-AvYbFaWk75UGM>!FF*#R1P*ZevU_&a>Ggt_ z$EQKC8=UN(o^|)m4|Y$3lk?M)<6dV2gr2Bs!nt=NqMj5_@^duqy7f%_E>rPZ8L+Ye zHk=Tm7%k=cmXq-^vK}WOQ44Tnt}-{K7e?D1p|x2nK-28+ujcdF)6LE6>+6ln>0%>E zFJTKKK-uQ=4Yzlncd(z8eS(}M)HF6Zb092q!wD0f#>(ihPjCOTS)9`9r;7R8oBLTn zyLOA@G{nBT#7H+t(X(3NfZgLO-RmBxz}33ff4k3Ddw~OXrCqG=f!$1Iy|rO*c6NS> zx->HWG89;y-Jf3b9eTKTe13E$X1Tp(8R&${*eyIiS<%LBhF2Ig8_1Li=VG>2P#p&o1M%n~TmX{_sp|mFYm$KvYSs+1YaIM^NrWM?SvB>AlfJ4K_&y4*a ztkK!@sqg|n66Ry_^010X5bw?J0p?qQesB&y`IUJ**pSEc4OW6}knRsb0l<5~)`y2L`BP9F)qzM} zAGX>%c$9Sxy{MavvJAC4c>YBQ;^4o*x-zKyL>z+gkp~P7pK1I9&J!R{@$sJC6S=if zCq@6Di+!onNBvOHCBx>vq^S*0J*9qw%EoQPj;E;7%0W?epW+r|-JFcC;0%)A`)=*z zGulNN+eH}yH&Ixq^&bTR z{qMskkG}f<{1Tr{JD8J<()2j^p+B9%7Iqqe%nFm=3VLu#wyuOjIJ||ue!}ykACKrj;Jz3}!N7V9xmEz+WW`gt z>NujR@B16~A4a?o#G5Gp2=I{?3RL)(5}!5cCpX8h8n9I-?z;!+tBdm#Ob~0Wrw-~| zBnz0wArJsymt0Jz(DIJ_8Ig@WzLJ(n7vpzyOJkft*d~01eHA*X!HnW$>!!l_3ewpJ zeOiH^7m&tBuqDo5swGl@%r5E5=ovHFAK8_6QevzlX(I^blY8F5t!uAb`WiZMx$Y z{*R2T=fR_`zdqp>P=Z29sMm*iz7cO*QD3*e+XGRb`$tbZ)8t(=rNW!JrVyTP>y9}X zTgaoF#R&cAIaJydQ*HwOR*;l2&s5#@&c~hxo(YEp0=v>LfvC%6L{u!JM+8^o-cvpZ zggDE|zdcjwJHj20(^3yxYB3G#&|5|;G;m`n3nzOYR~aQUatN412?*p3Yl$@_{v>8F z07o;phtm=?{=bHi$W#qSz8*e<&a%;BOdcM@t7`NVAn4N&i}@Xz7J-$&L+A@FRjqUp z61bu*o)tm<{F|B15Kc*Ha?{Z3X=l}3CVG`Dr^hK{D%kJB{H7jXj``%ciSi$2&!6Eh zw3PUo7y-+Sj)upW^3Z646rTnEpGkB$lSfG~OZXieV*@uRT&r{>lTrNmpj1YnJJK=o zXPCZ^%F8%(Y}I(j+~B99>H$-J9*{Z9XQeIkF)6UsL1xY|rf0KgurgOlfPV!W^Y`Ht zN+PEVKAL-3i1!_Q>oMQ4-1)9#7iwP}sN5;$C*qbPW_tiVyCY z(tS}i&t{7)uzCXKWd_n2{?i}o8i-uM0{M$z{s2okKf|4NaWO%^kdg{p0c^oB#{GfK zS%#OB{Z-|KkJP&{`$e55D!7~1#h`E(ZeWY!764X2slQQGfzy-}JorYB=qt0jbin_= zM_KS!Op6jQQrsH?J^9#KerX9fS0DrBUg7RI4p_zWjGeot>$w1&HNByg<_(5x+pp2jdi^oIx};5gI2Pl#mhH z6pRr61vXDEHTdzX*=u&F1Vje=ohUh=%RTM_xvLO1aNW&gEq^)YeXLnKbV7pE0tmgk?Jbt^K9k5vw%zbQjchERAQ6F?MV1Hq%Y>$ zl`-Z}^S8S4FA;*x^`@odb>BgmP;W(WGn_^FYwj0ULkCI)&7BlfQLb&wM^ zhXWMd0vz<=2z=O2lk4o=&H4*iu6zaXZ>H||nF_h8`Rp}mtrX8ay zrrJIFpY!hNYrOO)dy=gW?QLHs8Yb1WOyW5_j0RVIz|w?G5zsvwy7h|V<0Ci(v+u$n zoAzhfRWc6_&e_2l*_e?^e~MPCY#IroKANnOUqR{ZklY&5+sTAI3FaY6lSqy}4oHZC zJ~{A03(1H*kj~+h8(h=TL8`sBH@6;bZaqXRwmB3bQ^`@V^>}mp@#a<=-4bTeyXa1{?mAY&-|$EQslTl9U;H%W-eWR0 zWn6S{ZV1I(Z)K(Nz=YatqK9loMTn?SEpQu8QEREX+3TEn`YAl=YnWz7SC;5vy&j^L zRCj6b;Pg+?r7d-b;|0nN{q&^{>2j~Hr~HsiUztD>-XH9UNPV?>DNapRj~D<6D_7Bn z{xBNElm0lICt*Ju#IXzk2F*#=LGTsYQ)jTa^^aCCy%>`w9j&S3XIrg*Jloodzi&U; ziN6(LtGU*je|-Bb9`qXxs6l^mXz|;7TOUSS&EWZS3|0_)|19_`oEjOU_qXl`-(mwm zV)y&_o$9UwL!i?}0bm7pYqTUpIHL%d54Ybw+sdCyOYgLVP06lwpvG3KQf;o?U7|uV z9>oKtI~P_YmiF8mWU!KKjEgPH8pXI!Dkp4<2F+74kh7pWX|YsexU})C)1WWM$whzc z4%uCU6x-a6{vv`J5hV$$PmTwZyX-^fT|^fS1W_Jye4N16Ml5X=${KBrr)8BH_SFq- z1mVSEG>XzU?d`v?YHX`TdTOWW1wR=KU!1>uN&XL2*;eo%yST{Jh^N2qO@=SV@7~yZ zFjX{?NJYB!VQ&l7vb=CsBq198YeKf6K1bOi39p7}z<+d34N4<@4K#H-;@r{9k`^yL zk5yVCZD`3IGnCD0R#fMSf<$?9uv7^q#LT{+M0*m%_s_wMVw z!DJYUNc5s3YH|z+lMi8b;griRi~_?CBXWDEtsqe|Lza*)Pmd4L^`~3dfo9I9Qxvx> zGvDexW~wghoa};XUFZ~j^P*K_FyC!BKj=dEnw7C6BidN^-Q;$>6^QxsTyy)#$t@GSw6wgk9$Dg?_+x0guIlL`xg6nOZEpJ23w?oH?#gKvbJjB zk-VZWaO-0u8E!tF25aI@VQn#eH$~s>91gu?bi$e&#@B(4uyoCv#vB9)JSnkG-RkZ3 zce1+=4a0+%FpuQ6AFsRQI~;QHO@^E8pmB0^O0%s>HMu6V^eAZT9-Qww*&E7A0T9+` zH0)jgGe(o^t?!zmH;>wf`x&6zf}h;h!3{}#79Q+HRldZ zKn6*QTw;7tjQDb8v0`AAr9}zJF+}Fohvfz-|VKUfAUgHOU7+`X1ZCn z5J~|RTY<5N(RL$z{fdeYz(`KlV4~1NXWM`lpkBx|p%PWvLLbz6gH~2==~`8YE|5sF z3z>5X0>gd#GNe0pvF+Z&x;RuU*3v2kkS(F`JrF=K)0Tgn8!&M>8j&Ec@GYj)f9jMd z7l%#04OVxzd&$1*2z9Pk9gDK6};{#$K{}*wlW)eekK71nK*H`i2%8aQYiz($1 z@*kx#N~T0t8=@4A$g6zW;d^Ey60&~@?J_pkSm0liRGLRKF0Z@Uh6ql)qULEu-cwV0 z`FcIYB_W&QD{`Du0b004VJGLvy=2L)4|hLos(+vhf=WbJ^jx+AF@xgE!?#WM9=*JS zyT+=5=``3$)F02UZZ_5&qk>a*=Be1Ej+PP4*>?y|vVl-h&(u~DBfz&O89(KQhSBZ5 z&@&3kG3$`UG#U6sdO?^pUU1-bxE-zpk9u*rWm=2KP6WyGgw`f9vk}i@p!~F|=_>Dr zoL*;A?I%Mhw2=|*Rg$qQd}##tM_p)t{VetQg!{kRHUL%k{}0=F|1Xaoe~th5B|hr@ z-wXp|+5kA|q`ouBpwJe;;x6U(09MgjHUW08zS;%c`m@~nXSdc%J^uTz%Ju)`(RX?K zpZ1fl{-3_Yr||t>-iOG4%*}s+laRUw0dBd)v_GapWs!rCm6az2H~a-T=*riy3b0R+ zb_QSKz=^+TRXPtd4V-$K7c1};j{ZkNdPeW=B zoe67Szo(tOway^{Lgo{#|j_! zg0JkdO(@$C0jOx!-D$tYcWB$TuHXKUOEzx$bKJBUsPWvdVb&7&YTPZ~<(hl5X5ONS1>(C!vup$C)!#gg z`g6f8*}2P{UYG*G z>P)`KvPulm6<8|E7=4zPg$>^p;c5D}-vso69iy~Le*eJYjja!(;9fybwZ7Y!MjXHT ziDVI8r@`}JyJTxXZMZTYH30Fxr>ru@WupY+{pqT%7Z}v^5RFflB-^Du> zEHR_LpEh|{GJ0c5dT(VHw(u%S$Q*2LJsY2Yn{AZQ{0jGXXb z6L7BeD}+>*QxUP`Z;Qq$?3ftoXeo(@Me+^96(82A zh&Etu#Yc52{v}`Uv9F$4&8_gAw;_R5e;a@CRS`8**^-mvXE-?0T;|So)VuG~ zpjWu7%|b#eIHpQw;yqX1?m$ToK8y(j%+d;cYHJV~y|R78=k*mvXKgeZ%x<_ZE)=-X9glm>4(+267&^bCj>>TQntk!W)SEK_eJN6YQ&pi6Er8Q{Oqg;nf zgCO8wtn(peY^$)e&g!95S&i5#Zc7- z{>S*(ugvqmOena94ltgpkg0DeVB_Z#glt=BAiDciX|UX9x%E#W?3X?MSNZ?=?n(Qh zyZ*Pod%XR1{eOYa|Lyia9`_yf^$VY3)N^>e-{GrLnfbWyW*&6*&Q$K>TvaR~+iY+B z>CJ_VP@m_gryx0oC%dm;^f;QIb`Q=wy%jwOjGp$Yv-{$plP}e_jfYP6clXeX9-6cx zgQ{&kL={o4tg4td9-^vrZB$WJm=1ZH4Keylqjz@NwA0s~25XS2M|pa7@+v$(+Wl#_ zdw?hbd_J@@k6*q#=pIp2`i`A*cDj4iqlreh>{}mR`oZFrXL#D_og72ypE?#%SmnA@ ztaG-K?}RL}_wwg(|DcT}9+j2YCc5^QfMwI^?RALspZJUPI;TH%_c|di2PpNOj*gW~ z=V>wy@!e`j?{Rb2;a4EBL@5X5wsWw2i0T}F4j*Z$DVdB-uqd25zh-N zwck)EZ0)WD$?0?3m)T7ZCc`%#9+L0-EljOe3g=+3NK%%U(I4NR9!S~+>Ph?xHy0X(*+lT4r6!FR;X94rsnptcqDiN#?3|XQvxl0`f&`Lkwg?unyFx3SF=8 z$*kYgy0M<1QM5-R&j_^4@F_UOlh6F*U%bt#6_7`?xquZ>s>CJe@^)y2Y7(C!EDH2s zPOsjh53zyBhVGOfna`ei8#qd?gUcl7<1Rrj#S!5G@a;I1l;ms{#ewG#c<;nzQn%na z0Be!)Gs~<$p|J931&43ECC5n6y>lig1W-b)Qj>z_)b__Tvg73NI<+$-W`BeJwk6fn zVFqW%9#&v4S>Ub}mV7%`gZ0-R!kJrrD)7 z+0t(N)9tYX#~Qo+`K_^y`#?hXv*59DJyFxpS{L)(c?G7`wQ&>mdsth4HMjn1ZatN5 z-^7;B?($_^P$F%9vd+)>o}sbv_H+rwGnl`C5EH@M98ZgT+F_k9OdTRbbYQ9ji4!C zZPov9TlL^`7^@Q}rd)9>*uZa#*3+C>mw( z0RE8%Kp2Xc9ZXH9z^!5GwQLH-)}J#fXa+i4;zo9R3&}Oe75HvsG8~U4X)V{>T2qV6 z(zHEzUL*-QMOw^UT!?w)yXTjLjJyU*c$?8RU=mf0JKh@QID=h@`h{_V&|U)im0>WR z=^(PPHwWp;MVdsIizfeoWcLhBUIpr)L%81&_q|LL=$p|8mTl$!fDL+<0x=_E^CjB8 zr{yS`CewA44q!nLr6lCQFOJxYSRS}k5mtaD%wI+18jVBF6u=Yu#HYo1+jW{6#p&c4 zJ?0=~kCVO%43mc{wU2ec{<;863}9(r+ywpMgvO$SIptxSYRfwC1#L#@`*;xP_*KSU zS_6VXHfv2`MzO>TkV0k$|JMRNo=bkkLlen-{8iXAD#3gDt4BSMgR6Y?`rej&*!wF# zq^t%*zHV}_LOfn_bZ@m*1zn==SaF?bU2jzI>qHqeDKB zt$TzJ*k>Z#WoBuD#1IYHBuTYI!nm<9^~dP{9@276-Osp^+_z92bS-^qVl;F_6QJfM znrpKsjSg!odMafsg?zbt6>eU_iJA|KHX6xbDkoJl?Et@vQg*h5$MEbbo-x|+L^8!$ zRNnYyNUHw$x_^@uQxlWBnf&}YIf$do=Bn!`YE_D&MzVNzwTeS{YR7|8yOuAW)7sq( zqXLRGi-EL!tPipmF&tE+Puqa7?~&y0NrqD=B$T*pEGSMR^3~Aq&UDPDKZTF1TiAar zYyMUJ{wp8q@+QEPVMzCCC+g#k((V z@~Z{cm;5Zb{-gddgN-&xx0Wyit62Z-N868c{@=DAJ^8x+zrg3y-+u`!u=>xpY-5mRtY8B$qe;uUP+Z)_by@ zJO4d-{5AgPm-w*!*GncMl+HzxrpYx33FMFk=+Bc$Jh+`_QctAOTRSg>=`AmT<6N&UCQJAnpw^6I zYRdFj8_xsi>#XiM0PC>)Usfw`%#ZbiAJDRjd_y=LUfht6gD4N=^!$jd>@6_aoWfQt zrl?WQ*E#DRc8<@TrV-~uv}Vhff4SQ|=P||m#8Ak8Jc>w>;r5QF3 zN*)2YyW-bqXdWL7+cHSTZy_hZFR=tLfxZ|?lLfR48T=ewC8PBnq;iY{(cV=u9>OY+ zm-FIw^$k%?=QKoA@NtFB=E;ywU)Ki@aKtz;5vCKrh7{I?h6%_~F%U{n^kBfIb0(hL z(coAb_b}cAe&cJo_hdy3NdmQYjm0!q2M$Hk88E;3sG)mGy$sgw4xio~uC;L);FMk5#4rLhB{#YkR;1K{JjiPW zgjg;ldk@A@f4Z1Sw3c98tp>ZJs&#V-SlF~mXk2n+P!SPy37v=tiYn=VFEmSg%_jXi z7^cHuY;K2C$={)xB$^L{t4r>`$O9tP;hQ*#45QS*`_n-*rZ6y^qJm-ZPjM%{B6?vo zl`Sqpo-H4l^5PL`)S^3q1CA?Y(Ex^sHI*EMa&wbLy~$_-ORt|^W*ZwDO^O%v3-Gce z_!mbw#b1IKXP0?CEDGqNilISqwVvTSFfVH9n{TkK<_^OJp)wRazA?B6A*+S$GzHv` zfpAKKp|lONX*J=czEJ6*IZ;^Sf!R{C!8*N`wR1G3oi+Evf0sZqU zvCP^w%Ev!iM#o3TXytp<**mk6U%(c5wtM=jV<+#vI6gfqFj_{T_~kBNz5C6L@g*P` z^;TIi1A@wpm_NFvz$OG=f$bQ}DMn z{G((}A^IdtPKure#~4{OpwPJ_mSz;5FN!Jo`~+=p=&`x%N+Y1*bG%wKC+9KK?~5iQ zPzO&uIDXaL+dUx9OTp3cS+Kje*Xi}TFAh2_S%z0lfJ-9i9tFL#-J|^%ukr6$N0i}M zh%S53<|%&1$QtWQ@;*Nw%6n5*0ts&FQj8M9&1{ifp=1-xycy!hXfXwzgi>l5sAT4c z1nKRjUpPjJwAp(yFnqvW9-rk3SkP;egpzTMh^uSGbSBr;a)<~ zV)8sww`#pgyqi4@Y?V?!6-M+F1XAfc@E?U$p)DAQ<1+UC{M3da`&c!Dxuf<;=V-rs z^h#t&1r5D;z5mPB{hDeI0Z|L`d}?oz`b5g_F5PmjBo|ZX1V>GA^zscDtqhkQtkj8F zXIhlm`{PpefPcVca|$dg&aQ}zsBN@ytTDAM34kQ7D4g~uXlDgqdDiP6XNlPu$Jtqb zkwuKjVoqwP7aC&eHMe+yS}T+w@PsNY1N_973b1;!8OIqwM1_~p9J3mG2giFLfF8qM zcYM^{YXw*g6^_{qh~s?-0{;x6t8{ROJWZ~N9?A!N4~j{G#1a4%QZ``hG<3tX!g*1wyY;6V zizF6fAkWouFW<97-z0~x*tYZ-aR9tgsg0;;AF{Tg+q{stB@XBG^wxBsoLv|!#nQU2 z$O+~n7VKEQy(+I~bycLRh6844+>>1hp9m!FRx!#IspTfWq3B>agf zNTEhQjorYF>e2Gi10)J|PhsVE5gb{!iy-l+HmMp3Y4X_RG@n=nquw?cHPxlt3whrH z$KI;|)$=GIS2Jpk(QH^L>Fb=F1pRaOVBf@&Rwb&Zs6}ghU_L-yLYtXWXIAJlOLsHT z84;qohJ3Q(Q;@pI5_e@>TrUABl!$CP#pzS895{(q=D?fAgqIEmU+u{4Sw?oRH>7+Y zwcun$<}Q*|yjZcIDrtqXd>qaayS=#u&X=cpEJ=CP8mO0q*s2+kfFH@O^PB7UC<-3c^X|?^Tm&T%I>4|g%oi$bs^yK zJA`=>wf*7HdlQhm&{B(;^ZlX>$G4|5N@#2?@_y>!Hpx-jk0cb6bq>%OL&S}7lDL;@ z83%1bqqzb2@2Hs72>LLN!rq~ljCHG!aomP{40kUy$(o#6!6Ku}d!(W@O{;4>_S!U6 zwzV-^Dc<0i0!=yko)C!bX`<_NG#|L`%S%K)qrh|-H;S@uF)z6-E2)9{8q9;$lB8-h zyJ&M!RHu4!)w*leVD7eg#xjheHgo^oH{u-qf3)70>5k@&o0qr$Tl)D|jrU)9|G!VZ z+W&r$kFx(o`O2{S<)5qKtWjv^i=aB0wMjHd(i=N1Zxrh>%$@bq zEJ~eX@nCMJTwRm@N;~mAJ&Ul@n29=_6YJATyBPNe@5V5BZVx#mnbXM>QEiudKk3hA zZqFyk55mD@=+;kWS;Y3ghK0`6b%c-XCw(#xU}c@y1t4om_pVW-odIe!SL{9CX<)0J627;#b&ExXmBu@Sv6XLS-RP5+NO$DUtrin?6B^PNXhla zC@H%mlM4GI3djyg(4{>}qxW%!h9SC3GAY+5v#jitN-OM@EFrt4z~}qrvpaOBcooEr zVOT;aA+G`?hB+{FW-WA|sZHWmR~U3SN@cQk+B7p`zt<;cwy#Z3Z;K>}oPk6_qK=(O`H?EL)^aTh}D5qxR zf3`*5pZdcgVjYt=sO&iic&HDIM{zU^5L_&bzxwkzY%Gx2XOG)3mLM5XCH#rv8JUd$ zUatD=T2J|mpP<7!7~DmK`xDg>+YIWFprq-sQ8X&9yu`jnKJ^*`13TXBF4O}o-}vPI z#2a5R-Q>1I1RxrwcOulR>=df{kX;BpohXNjYoio(h&5f)Z@-nAP)&UmJ>uP0uBIs( zJqCXZ9tKYXdu81n1_A@T$Y2U_ZONrYszFWY(~2eqkC~btQ71D&YP1;Omp}|;NYRD} z`T9B@`eYeZAHS(fUM{U9uTt4YH3R@~ipBiEul45$hr~u9?y1C9Kut6aMYd?)Y7)lD z-M@tCg90JeDi~pZ9QU*OLlnh7eT)PM2WgIx5@BgmBg!khF;qr_Z@{==tl|d4tj%R9 zff7nbys_#r7`vglU%fo-bgVS1oUse)f-=!6X>PB&s6n7cS(vW{laMYc(yVfjK=(Ot z;GRczaXZVZHH!K$-YByxs8p-$)%6uH*m2~bLML0L+2@~&H{Ft4xl9>{P3) zvr5b~tDJw8c(SZoio@yBoMe^CQ>2reFKtnzldPx(v6#cXO)cVgeV(lELKg<1DMA6kWwh=i9c!-GhVUJ?A~EDAP189%;C`4_c?eeV{GD z?Sr+nj6SIJl0JwsRv&1A>Jtoaud66Q&H8D7f(i@k7=t@sQ+Z;45DYW<{F|aeh{>Zu zx$Raw>6)kT1^cAP?G6SH&zA?-I70EVP7Dcwd`nmRqAry3)Wr>YcGDP=fXr3{@||-w zw_XfPqV$p!GY#0if6+i;A=6HuqKO#@n3yMgn2TI|HfG{U6m1e1LzRU;a}7=xlkx@; zhHi)wS1q*%FgrX;IV6}vOiT%KlR8GF2uYHsF6vcYtXRA+Oxx~+Mhn=F`{k?d@$Mvk?4 zuIQ-<9jxK`2M3$|4a{%jS$ z<0;N+3J>UfeN{p7|9<>R(M32K_b-=a zPQNE7nE?I7)Bc!I0L_G1e=-~MqminjDZafy8>|ei7b{CgY`A^dpH)I1CW{MXA!MBB zDgAjFptU%uq?>?tkEQ@>xHXl$hQxE4Dl(*9AqyQIREaQ8OsEG z86RZAr2*>@g<+xAAF38vv8mZKbrEto-8cw|6fsJeI|nbZFdkfAr@wY20Dj8?8v`Im z984@NfJfLIO666VQXqGGtIz&Jc{^%GNMre%k3Q;@)bL+v-x(T;FxrSr%~(!)H%m9Y zSB(Ood0A$u&e5D{ zEGQ3#s*p^O1w3MyD(lHp*mI608i`JZ?ua@}8hue|PBCdW?35JAvali9sFFsSO_KWX zZxE!B=qE=*W#Hdt^4FbG!R;1zFFZ}fxqYf*%LPY^?#5kIMhvT?J_5!k&v~^!yFr}V zm*-RnU+N6Jd;S%fACWX;G{X!cy##Lh#TxysmGw8v4Sk*&(vWij7SZ3mI zL+m{#c>XNVmT9)d%#~#l;=J+LYLW4xhKjGt?xG*14BzmGTU&I-B4?TA7l2-aDCkn(8P=g3C)xkKMElguboLy4gLn-pVkpt1@0Vy)seL@n_4!W?P^>IEdC9e zeHuIzIs`{>6}Ym+Rlf3O%*hvzT6Vp1%_R-vEG~QHSW~$u_2X3JDZQvUKF;!BTae55 z!Ib6om1(dpqPUsvb54*UWc^V@h8#P};zF8j$Z}{@0Sku?VA6&pV_OSYf>A2V`KZ0g z&bnlgi)g@Zm8YYHh(M-2@Cc_vw0NkmA6M;Qs^-mtAY^&5Ab#q*1^KAnDc>8xL@>Vf(+&b=!q?>M+ z_uhMZvUaRS(Ay2^zJOoE6SpZR*V94k64Xt%%XI~UdJTvXk;XsOOc-p)zYlHe)o9(ctx za8T>X&6PRH`zTH0A?p??52*V(Nr#yzAb(=Mn#*R+P?V}7G0-U4E6H?Bypryzr(>?e z0fe=J2xajM4fsTGO4?imzhzgLNqU2!Cqnh0I)j(=Nno0G$qMp{J8S{CFtHNk@ia>!Z`gpGjjByoIi4!TF3@NoC<(tl|( z9?H21aVt_XcuXr0cZ{D~4ZlHcm_Zsb6?*jtK7!rm(T8zgx!LJM87-VsYt+JHD z>r8J?xSf&)W&peuh7bQoS2SV((p0%Wo?Z2`B%MpPGu6I6@h80!LIJCDblf>QlO~Sp zN%2u45V}a&E2r!;-Vli%$w2I;m^zRlL}5)#3qU;85*T$JCW9PUa;KWkXtmdisWN0! zxnB2q77@ctif^>hM~L$Uv^C3z9Q~?$MdXGs__B#i=uXUHA_k6LK@6>tcr|{?9?pdy1!#E@60n2-O z2?!!eH!ALTdl*C;rhoV7RcD_G-RL7;fRe(I2coDTbVl;<>1H|p1lfB z&I~pILOF6I$tC2ak;N>ep6OX&s=pd?OTA+=_SF?r5yn?>Z-_YDe3mS2?k1#g|dJgJNTzz0PRU5=%(FK&=?*%Z$;lvBt%iH_}>E z;@Q_}(fkhEF_bfl_KyFog(42I8N zay4Vrp66B$PSaRZBXm21PzFdy>`)4P+xRyns;lhWe5qCKJTEE^}~*BvIFP^(*&2jAj$ zb%|OntCMuDZL{&HYHp*Y<~FK5w^8ZbM)l`5Dw$jFNDC%6T4r*i(#g#?TQ<9HiCRq; z&#q^$yijTu?|qb|E%EhGW##uVvuB1yzl#ss@+YUB;p|GiS6MMraa2}L>Y$u5rK+z2 zfH~DyS+VN=MfLla(|#4GgYz5UZBAO2fM%b8@V3ndSiS?llRKp88jd>Iq)KrZ#d6lo zrZ~L{b({Oz?vHkr^B?(H#{bjup5ORW?*FOXe*9f7{%ia3_V!o*Pha4p{J#mw*l+=- zQffqGoda`lU_lWU=6VKaG<`7R-QoM|4THD3Z$X30@U*Z2}`s>m0zL9abdm?_E zcYf*|ol!VV0;t?P5l9SWCP3oXz0=O_nf$ST`WnNYieCp^=w4yM177(IPDxB|I{JnhDrhau(m^_?C$TI1LTO!)1Wf=1>^^lIuA$HVnVGyAcq&0+2v97CiGG8+5 z-|`|^r!p_E!QdLb*0%YaWU&8;Z>+kGVfwZK!6jaVNu6F4eL2_8)TTuk%5t8 z6NhQi2u^)xlQ)Xr=do*}blZZ>3h`$cuHjF=ZJKat7 z11CehGmrx=dtgvl#(r5)T+De=;4PScOCX9Fj|fyn^Yws8v<&GeMQIQV z1R%9{#+aO>Jjt0;T!;RO$wnOj=?*iQj&F>9jE1t9x#x&A`WXW4=D#a`(m_A1c-0~fe` z11MKL5XXRS;PfmycYnE5b1S3ogi#A`?$ur)kMZ8;S?f^V)-AWiI+SSi!y>{yx&Fr9IlQBmg(fP#Y~PwfZGqTb5PT?VD=@h`O!uiw3ULv#h8f z4ds=&)s9LL8dIGhF3fiF_V~(%%>ZcWQ+J$XA#Axt<3X;Z)MV=P$PYO30FJzXBL^^@ z&_1B)iF|g5E}W6(D1OwcBKxa)4g+03ic2^Rw0s8Q$MzezlXEZ=Nat;?YaD4d7YG%v zUN6cUT45FC>nHct(sd={>5%L3W=A~7t?)~>W0mszhBC_(dt|?Y`p>r_80PR2)?(s|9FLgIbs^3d)%=5B??QQSz~yfj z0-#j?+unNkDDVG&d;4MgtN!;3d6feGT)jXk6FS2E5N^t^ukb3nVOrI}K+$d%FxL#8^Wy-t1e+PgchHzo zjH7u83ksSZ432BzlY=$mIIXcYT?-3*HOt}mfFG^dQGYE`~01Pm)&zO8e$!op!rL~@YzyBy=3JTXcpUn&t6DFey$jfQU~CP*JN5c`wRm7{ z%{xwf+nIS)ynL?3I?j!A#Xsl%(X?fja_1wS3d?_q_MLjFgPZuCInJ1Nc;@NhnYGTi zsCZdM7N}4|(}VG5xoi!tILpu_^OdDnqX&X-z15!v7g}zGyA!=*l*`Q)qu*Ys8821! zew+j~xn>E+eR}P8!@&WDL)P6THZRAB>Z>N+%htJkG%wvgxzEUHLqiiQ$qL8?iWC9x z5#l9wDvj331_K!b>s#$m0`@vGxwvKnw^?$Yo%Slf)6z8L_S!3l-T7!?=3&1p_UkIj;tu9)2`tiBu8Z4KnB4WAlNUBUgay zkLeND9Oq8fr$7~IiD!69!smSGdU6u~6Nbww;5eBok&j?Ajfe3xoL!>$2e4%avzp=` zxiCb4^JFeG`P$Y0H2R=7hj==SKG@MXK1p6QL^q>tO++jknIxnsIo~l`V9Gy}81(V! zChU05>cxQYMc|A%T_M9+!BVY0<(3SyJ%mWfPVcTNdPh_syA~v)dfhE)H9rX14}(pL zF8P264(iJa?mi1_CQn84-4if8*r+s)k30TN)ut*d{*FF-%ucw6xAVQXJCM zBPAWR=@q>_)S3y~8>L4jqRGusjbz4CEWdVyHbd2v@^{rAqs7Dx-8&5R22F!8<&c+3 z4l(-Kf0wQURG>|)%tV}F1i68wO*1$at7&|`08EA?-Wm=Q6b3F5IC`Y$ z9fEbeoM%h#|q1-*aV= zz!BE83qf&bj8B}QU+U;|ftETjndnzbbenG<)vcSdT*z=Rk`qwZq@jki_`w&SCaMVZI)bTxsVA-#{tvDhRssy(HW>k2IaIfAq8v;X7JQ-Cbdp+cXDdgv8Vu@Y0_puP8&nxel6q? zH)y}!Q5ynVfeI1C(jaBQ`g%ZM*q_%lk?9m*R35VAQA+Pf?jAk6>|8n)|WSIpOCtP4l!Wf^BgtJ8~18U8(@u@-?zZXD&P+tN7W3eUy-w_9Rp{$(YU^>NMZ3?tgk1wD$Awh0G>g3yyYsD*+%UP8(jY(5O zBX`}uVaW)s&-96y>nMSO&Ib`0kH(Y51U7FddwB&L>4rfYcj)qt0vpVYas}!8X@!ah?t=(qr)ijyANJPvC-RzoxMq7{JBW=YI zK5b={){ZNpnS&&h(P;oZZ%mlLg&H6kDN!80nky1dS6rB+_<$`!XmUn)%0pOe1i8*e z6~^2ESBNIa@9?-luf(G71H4%^QO$;=pV4k?SwAmw)muB|Po#bd>^8Hk<9n{IFYfdVj?nKvV(_YoL-_KY&=J8NO+ z?L9HYiQwS_b19|z9#r2O(#1on11Qt7G?kaBMJ}m1Ifj+4bfNKJ6-9kYff0o;4BJrG zJ^|AlVOe^UFCDK7;l1E`lEo*$9dO|3Fr0B*aq=P6eHV8b*J^X>=Xpm0!s48kpA#?qA$* ziD4=g6x7Z4Utc{TOD7v>fe0BjreJ03{Z}Lq-kjwvA30Em`Bg&Y6v;4>+CrKuzCpi< zYy5q!c<#gj(4q?C_)S>~)+2|FhZgR}X zP%H};CN`(;2(}q2!L5q>W!)&=%4;+Pu8otNgX59-o>oI22$b(x0ReXdaRQSbI%v zU)pOwEC9y~B>Pf4KRW9kpt=gB#I-FU{L!->XeuV*dTr9bxd7_Oi1_djfXBWRbJN8X z{U*ywy$CV|!_p}&#M;jm(OLN0XfG`RrIme1(Wu=^C94WG<7>SCF$VGSkE-{T7i}KPDvgjsc z(+0oRA_CECR0v*}$m_C@$oWhHjecJT!-GXi9_iiDp@>v#cx2asuHm_Jc%WGPf_jmA zPV7va@wTTwY-B@^8!CIV>eEg*J^E6n8;QZAh5GNQ~fqDpSkJ)C%TMNV!3 z3Frbm4#Ax@4d|)Phb=Ou8rq(-n#00sLLr@4@1r*sf`Q)j?XDy<9~kQb;?t3647Mf)X*B_p z&(ph$(8ZLVHHhgiW8f`gV!eBKa@^~6UmSG2NGrOo(eE>=Ko(7=E)_JUs2m`i zlS-v(J`0w6`C|9+5A^$1)<-TO+M*dp-#PXA$EYX8%pD=ClG6W{UBy*b-c?$c6bEj( zb-_m`%l-rpE6220DH_6SmdDji>Kz#shKHdHd{|BhGFSVO7GsWYgq+uxq&!r^XODHK6s1OBGK0nf|65~Bv6s% z=9tY)z3n)^SNY`Z2iNpscsT@X%q&lAwUAqrEc5u9Por_G1X{-T>E3^^r&-y5p#Oo`p$zB?v6x_#yu^?dRFvKd4;lB@Kqfw-PmA>*2E)4dABaA84yl(Pj?S{ zBnU};W+}6(-e06Kpf$o6@gO?+*i&7f5#(>(B2la-EW59Tjew?fZIrM_%|M(yg#9^0op8 zkvB)Z{0!(dY+|MhRM9SlXS$phHeYz&_^kbzC$j{KF1H;Igl6{x+T+NnXY-t*&h>uo zp6&f`@~W(RvJ6NH0NS)9TBdV%{JP}NgE>>jho?mhHxxr({z<31ir(cLJ~}@8p?ic# zDQZ}h;PcgDs!x)uZc|3|Vpem#V5p%8fTs&@t_SQ++fpX54m$5BueCZ_vS$9r`nJ20GZ z7qAvrLI>iVeW?VYIGmHvo+V4~EwpRl+_-nLY?3%!l!O3>QKkJ8Rhxd@Tki5@j6NMT zVH9fK*puhr-4b^ffqTJ@Uq7^ho9a8`&r3+lsbUcpjua)V5q_aL9SvK-!SUXYVeg0F zH~x0?qG^zpj#v8g@%h323oK$dTo8^@IVLGz88SMtgr}MFBSXZ{NI@`9YhmVt#>|J{ zxiCaERo|ZjXEz4UKH%W#Hs=P7cK^Xcvn&B?j#ECq#`lJ&oJ6Ydr*fU|bZ1#>C8}wmqbLsyVgvqByirCA|B&~3J>LP*2l5QMiVJROy zWyP`KUCY`yOlgd@m#ge%B!Yq81Xum{QP9U5muP729?DP6pub?7B%rTr`WK%ekzG9- zjKi)YUSthnOWX*Kl56>(DbfPvRbL*R=mvt`0M65!jaB{f&z4Xo;=;883q1EvS2dS5 zblpT*Z8x~0oOgYVDLfw`AvEGCY7h&~cXn@x(=e}EU0EqK0H9uMsdKAh2+Ba;j1m z$M_m1cV+0@t|%YD`RK<|$DyBC`MV@uG5JPnTnzr_4VUf2nUmEa#Y$R~9V{csa+<8Y ztUj94C0_MB)oE&Pr%jMdcca^$^bi&hiVeE5OdNWmwQi3SY=n#Z?=NFXRpq}Lkdr&x1JTl68AI$u@~cji3y4`dNS4$7qe(th0+Jf6Qjjg3_)1h z1}_$KVU9aY&~6%w({6{LKu!VC2xT4_1{j|<5Ij-cqzrnRc1bbJ04T^uWY~-LUi7LE z>t6$0wsaJpVNHWym(uQ-lx8f!0zHv9JpN0n9?JQhyadOGyJ*)&>MPsO!U(fK>zsL) zC-}ljmAEf84Mc;{{4z==^t{_E*B$?eTtFMo8jJwXNJ=6qU5`bpY_)QYjr!1V(+G)a z9?xv;$PlQ?{aPXgc(somW>zLy~a?VNPMh$_>qkUUFev zKU=rN0ez=KAQD)m^9Cv;*0L)&&2WF$v>OV;k!01P6Ft>S$&Hy(x{BC3Z}8si(>=mZ zOX9%St5rF1c%dqa!%!CUA-V>!q7&2eVnO-L3sz<7Q*m!a0GcvFEF+b?J~LiNKEr5M z)tp^LmN_0Xb9@7=Ujk$5A#Ahd00SrM(Fndz2hj##GnS@Jw5KiT831iGi`jaB>=5Pn6yYx-ybBf+)AR=9I0#4ND3CSbD9tShw$5_%3zDQh=eI zJ(S1QCqr2_gTH~G^pqAjb%A&LH^%kt+a0f+=49sMqHRyw_KtEWMz(M4o+`u0*zi|p zVg>lBvc>OG{hS-Kir$<9n@WhH2$$rfWe$_c&myHRPUeaSILKi|l6as$5@Ff-jbYxP z3YUFuHI#TE5W^8ZgWn1Hk-V)=$c9xsW)zCo`Y>pYr|)4CQ1UY%0S`8Y*IVUg2ZM3} zDPRx)D%ajX1W_4O5uuscGzNqQF*>Vb8$#udJ{l^2U7!DCXYF-uLz3UZ8;MbjZoK$j zhCOniPg`qJ92|~fov|FM3IL?^t8n6S9OY~RrThMwQjGH#n^zyBUg)r zxJ|PVLCF4L58$SXF(h=Y!avk3iSe;0oKWyW8~?(jj{y+u=fZRQM0-=?g$>7ZI;Y`t zPwoKk0Mrewm!!A$MV-y-O7-!O?!Su$V92z6?T^&Gyd-WR373pbxwQB72$>BjuMIqw zt%Bx}?=)gS!n@#G6iMUYd)px-PgWChzWrA5#BDd6fSl6Ucv30M2@PU|ih^wv-38xK zXIxSSVtKMSwa>rg1zTk4y8f!BB1fg=ty#_2oG2Q#Sm#e}GWf!%KbL|E$T%zdgqoi# zYynU5APsz&@zTMc8_FrjJ_v{XbhsukLf6(U-96Jq2=&l7e>yiTcxPfACgG4Dk8bo8 z0nb0rijW<)@QwWaU$*WmrmnmKTB<2S#t=}{%bR5=j4fc4R3k6cR=pz1W+kYP?O#_r%qK<&;i$GXt&#xLB*#{F@+NlHSmK0-wYZ zDc}#~#ioQbyib8q9<+xcuqRfR;q*hh1JQ+nVDfvJQ-&_Z3REQ0U`XjKODP7AGEGa- z_7eRr(NPoK38X?BHe~;h(?mH$0FhxFM?voL*$O&c?WJnvx zcSIf1Mxg|vJhjHtIJ+`lpDlz$$vcjy#zt6hbVB2+bf_;iFVNL09(n^j^#%b^U((oVPzXu)X# z6~1!kaV?Fd4^NLAK^PcLLbr;gB;Qi%uAE`CVWZBCGe<76cGkjB{{Gk2{fZ?kvF%!c z)Y0=+*lAR0ZkMstP~##+f=eRy$ap_DZQkyfj-uJ1h~Wq$H_KK?o=M61p(?5zD2j)G z$aO1uHJ@>XLCs5ia>sfb@`yr$IVmoM1|^o(o%|e^+|UI-M$yczB&1}jX4u^rsPP`F z^*FSHHx8qPRQN_6ZQdG!q|ievkAAMSslrC(Ub*F-2(GT=J>!cmiLfRzs!1_QWxuQ! zjKb)~yGM%`kpg249FDZPSTR&Cnn1ogt76B?##7<$G`sxJ73 zfdXlZ2=QBqs|l?`F=1W6<{@PsQCKy!(Ng0hZHiRW%Ajb!^Alck9v$y@ zp4v$u4?N}5E@=z-go?ZEtE2M(yTXyfP&XOlt=4rs9>XpTtwR5h$Y}?|f-o9cz9Fqg zaSRVQQ}<;oTpuyp1Te7ngAr0^tifz~9-Qk8fp!Z$DYt?{7+RY^N}|6k-4 z0Mq9*3P0fU&QG1A3eeH?eViuK37V8GBtj%4<4)T=E_J8m`hCpCxlaR!<}9yiQiFsu z9o!wF0|dm1ntZc4VcWhKN@{AZ+AG9q$h37DC&@dMr0xpFCE8Q1wF0wA<=4#6>T_C# zwwJ*c@DLGG0Drd8Z8nSj_;VY6Dm|7CY8au%Vp5|tJo@BT^&)I3PHJddsL}(HrIbcm z-f8&EkhKq$m)(PoCy1d^hl_>X3g(j;{^$Iwi%g9#gzR**Q;t%R&C=@Jiy_wQ!+@%6Uc1{74EkB(Ilh>FB&A|DW} z@nwgi2USzJ_mZYFUe?WDo>9B*#=rwJ7KPe_MLpN7xt@%68x^&53ZjDGkb4}x1V}F} zdSyzbG}W!(o)nad)ze<5Fg!{vH7jH)?;&XKQt&Q;&wCuviv0{cGv!aOkoad{@w9pQQI8kB9JkJMk~V1K5LGkPHCag1AQQg7Vd|S#*tWDrT21Ox752u`kRd5^nihW-h!ejUHR=ZrU;L0mRC)BejDLv7 zXEKMlH~%mmABq%V>?3~Zx81E(*s0aHULKtHeh80`Izih>+dVi4w$P0d;Z-&wf6sEbg{VH7~Hmviv7R+U4H+^ zpI`U?FYw|0e=nKcq!@-aXbhUc_SV+pVDBo0GjcM!ih`f|Y4YnLW`Q7{4#u!LgYUEX zFitkEp4&-4H@UQadWmT|aSf#PP#lsruGY-bH`ylf2O9|50a__*8ylN&GD?T*_=Npt z6OP`OX*?Zn4pSTA8gn~4jl~^1P28ksZYokfBr%i1V+Nk|VIPdA@5J7gqT4@{+XbV^ zycKM0Y|zp9eLtk&%6)k#rhuYF*Rxcfo>n#b_&{_*ZXB!5vb#qhW1uM0eRXtvie{C& z`@Qf*=T-NJ9|K~O^b88mvBBS5z=(X1lu{<=ZMZF#$0@Y zqZpgtKjRVWD_q1~@V$ztppp!w6+K@J0avKD!l<}1K#D%+&nLlyImY@JCxiZ&3f-Ga zgIFD=4z9a6p`22#5sCth3(M=H66d zBmy@8!AEJz*BrkEYvxrl*@?Y(3lg>TXUbuLG(EyalJ!Rsqw!nx9%~f+NR$#yhYk9D z+vDjH{Qp*GKm1hi|E)(`Pdxnp@mK!;1wOZ9Yb&9?P6)#Wz7L%A=M5%o@^k#CNruG+ z4_Ewt+1+6^`heCuw03&@W|&H;$&-sE%A+KuVxo z>0?n8WC9E_c5raK*TC#=10AjYju{15*~g-ZGqO86Jh!kF(}&0G-$_}#-1@(r2vD*9 zA3c8ZIKTeC+xoixzrcsre|HqzBny17OSiwtFdpGeEx9@k`eO{xN;h~~3A3r=W1`5v z@fg8SkWFA1XPv{71N4v+PXmjPuCD2dcw=C@PZi7jyt^Ono}Ha`U!0$HR@TtewR76t zJy^?^-0%Ff-#uMfSp(X9pU+n@HnGs!=2~#jeSz9re37=MyPmJu>m1PY+m*E}N-2Ij zJwe;bm)t$*?)Jiy)6UE8-&fWqesC{4yJzR8o!-it2ZD-c;mtkl9(9jbR@y*I{=D$? ze@q{;l2yJsIX>v_yg51qXqfhO#q{t7QU zr>7lhU%le|4v$~v@ecdv?rR3xTRA$1nadRc807`nstnK!q(iTHwjV$7Ve7Q}>J{{y znglv7DFT0CjXd;eALU&J7w*jzJf)VUu6>8E3i!S z6oa=RD=T~{BK@-GI|)oGdBs^3=&hF7GpeHok?*(~YV+UsS#%ayfA)m2K6M^yF zj~!=WODb6R5Yze5k4MKp9~IWg_Z|ek@a$E1au%p>)C)h2bdSyqrh!A1$&G$Cn-q*_6U`9&myrR&L;J@^FT1a(;kC_ZK5(}5e1#W)Ti8K+p|8%Sv_Q+(Bl_`I z!iy?Tjg!+KJFmG4U9~#3X6d`=##4<)6!NBTS0N$AK!Ofj-uvM&e6ic>uq?5eT}_N? zYx1ZO6dg5oqa?7E>6rqu8Vv98Nno z*(Usd(jTNr=IBj?ht{n6?uu_eims`AIv2B;8j=MPAD36(kP)vYCC;Z`3hngvqq*PYdGBG}GGcH@b%L@ljtxZtLGjR&H5I9f~xO{-3ef=&kynr0W>a1Kc}4{;}K9T^l3X#3<+e>>YV37$nKNSXobq9Ds@%@&y!rxE;=6r($h?pHya+ zRWaWTOxP3yo$xj+PpAW|;T9tg2{+S0m@Q_rB%L?Rk`6{G*fvzWPUCqLsvC%L^gbHf z7Y}ICF2er6K%Knmi&oa;5!~Q;@B|fl{Nq{h1asx(sE4+wCg*?uEO>|}s1gp}X)5Jl z{^nMiv5LzFec@>)8dsjhH=flOo}T;8vg^*0i_Xe>PUH46SE5wX3iHhl#DMh&`cWr8fbsUL6<5y zK%-n)SC~OK$~#`RhmIg=3>K)a;$V=)LZpbq+}r z2M6WdS6hV;wsR0%PF7U);a|8a-iP~Pf7Fb6MZDhu%%uJFM#f`ph`(wHh~G_NSD`G& zOO+@SxEum0}Y;5yC9MunTjYFX?ZTSU;vy*>*f)qJS z-z%J3JH>vA?r<(FquUddl|!t3@1jYTUjJsOerHjVSD{4d7v32lL?6O1H9)T4<%v-_Yav~ ztfz`Aj1Hsk$a^HpR2PN`HD@3Yw|9w2?xFN9OLvK!xBi^nZPFyoS@v_;D)P! zH-tPXAi@5jKt>;^@9dEdWDuiMcVw>=;^?W(b{<>%hv>mY5;rYO!XCR4Uuy}ah>NcG zYTRUYhFIEh=mwXVOFFpTT+fv#`H`u`ySIrs)IwRqVO8?0 zMR<+(u4G5IrL#~Sr{E|h*d?uM&MiJ^iN~5=Ab0L0hRCXlkSMAI$XWp*i>Q8Qwc1d% z+(F({Z4fDmeoZ7TR5YfU<2-(U0UjW}Bv;H^GG-tg3S6 zu0}^v_$@F^b1q+sCer~P{zQ*OC}+UY$=MHRbQ>NY!DiS!>XM%%vl1O6j5;lQYMVCc z8NH#NQ0JxIWtgCXJ4#cK&_6VT2L3}&@SSVLBRmEdWOk3jlhfl@r=4D}>2lmGp3KG( z`h`-cu+Q?m=V2b~=j6>#{EDI>A)6H!?I)pldLleM(E1cT7wR42HBu7V5;Uwd8B`JX z%7y}sW706qXu3f_xT4V-LB4wDhaEFUa}fASAySA?mBxkDGNM;r`OFrLe5AxZvc#dS zoWO&`ORlaOr1BxPmK&|5Ony?C6eyh$WVBZc(L&iqn7+q9 z*rknKfak)1m~sUcs202^4Mt=%v3J7B5nxEsv^5h?J>NMfr~ zOO+?5e8GCwq^V6b!8I5L*Mt4L-Le+)R@2{!Y4SUEqg~Vun|ldAG1C2K0pG$PV8p13 zc#^L-F2gVoqycUz1+fd((^(FTScET@!;4=25p{bWSf+^|$1bP!pE*T*>J+w`572dV zvZCFVdYK~$utyQQAVAAB@|aD5fH47`Mh9E?^#c9vWEsaX(j6nA*7*4wapuy+_d2WR|LlF*C%OjO%W-bVvnxJXFC63!tTm$>FdwX=1UC{8lBL(d#!leDX9x zOFmbcYIhce?d&<)@3BE#c+fctzEv)2#A{y%;J0SL&^s1T*FlD%&=IpBiwD$)r=&0A z_Mjp1dfK2XxTbi&V_``?#mR(5*=oBL7z07|_L}J}U3b_-FZ&F_>9U8>)NNy6Gtu}* zb8_6xwQvV5*fP~tWydL3uQQnV?*)xETBx9TWq3#qHNE>7#@aM!7Jq6Y(?h7&4xq81 z8HKKi@J@C6MqU**a%nYk>2E|**dranp(0+WPt3zd{K4Op;{uG}z$|#pT)j$7W5uIFg`_6R9LyIK zkBc*9&bRpcjOiJsaDxH7gf4Rok|@X`WPvztynFAz$CxTp5i<}_wh`>16Dy2XjIkc2 z+crQibdz@29gSrqgc(Lc=9u0}=J7}DFIoDN=GB9#+G5jB+4f^|2f9MkOY zlOwF3gRNZJanN>GsECqYx3*5j%Fn1ou#4PwDdaiaI06iR9mu_^Pa!Ng zbSa+)C|Cdmx`7@TOEA z2*K^}h7nl9WSppq!@kjhATZ+6H(UsX+(vU6HK!tA2)jo#;wyU^MovyEQ4_hrJt!{b zlKs;Ckp!XWO7u(6dTI>Xf1X8T+kV#Wux5|el<(wi09M=mstBWqGy(i&p&Yok@P3uZ zgLoGe5DsawMF!&3P{fQ{4JbTRn#`yS#w!%wDzhXQCddu@k{5~=2rNbmT42B?27q;w zG`@^6xWZgry$JpnXQ673ap&@G;&Mb zItnIiZjF}BpuDzsrUw5pMBauuuXIs-kNVFBWM)Hj^#Y6Bqac&lHsb`So&I^iS_Liz zV{+v)JBWp&(!s6Z$)j-2k)Y`r?B)DQ>3aC6BRu)405!%o;{=wdNm?Y##aK4kYO9INwzh|(!h zEqbbFjy4LpS36hm1ZXN$9;%At5R~;D6599A%-p7iecM}i9HMpb^Ux`O=dBDG1fU!oKOz#t2=n+EHt zWI7ZRK4UP&j6qJ@$tm8fAE-{G`jcovmo$3( zaKdp4(uxw=Mt=#VdMw&RrB^vJ^R`Bh384&SrIYClg4Cc4-5#h&KU9S#Mn~^y;R(Y{ zG>k#=h%_2j0KGbBZ*AE>-LAK;igPVnpm5shd=34%pme$A)|#<11^CabWZ+xU@Jt4r zC;0w;w2cjK%Oymdo<&wjia^|4;&ZC1zqrEpqy4nUaZM zVZn3(LN*uJ@R-@Yx<71Inm0!S}h7bH8`S0JB_)1Qw;)wU#Zvh=iH~c43aS2->K#B&a5CB?2 z-ctMh=ifCdPCF*Gi%#cATieHa`zZ+iw#O85P8|3j_ZhC4!?}2t7EQ~}@WLEPO|F6@ zCfE_IltiGmJ<$|2gF99H^lrSy`iqT8{~t*zzsJ)g#d~_{PPtSi&tgcmM6~|F*3=D^ z4g9tmqpI~Ndsw=jZoTLV^+E-U5b;CVnhh+eB$6{iGaAxd78n^lP?L_|Y0{Snm5M(~PEc38f# ziSKCZN$6@~VWB9{Q^oAlS`Q5+>WRo-ToRGh&~TgIev3xPs!eHZ3RN_8t-bd>Al7F( zJyd3ivJEHL+KK}nC($Tv-*3stGAPXQU7D6+^EZs1S4crI0)7 z>&fLsJP6p4adZX@Vhn zF7b+JnBe9|yJ9>t?;ZvV82S{$UBN;?`ChpIfs+f=0vKeufwmUHR3M={)|ef!;pGN3 z5RIdGgc(X6^^lO724mIn)+_YGt1FHnT%iGizG@+Va4?Abb9Fr;r&Pp1M;`nR?^*b8 zf>zsft;RUWu(qH%eQ#D~l}o|u>?N;8MuW*k9VDY-gPJUZ7^w)?yRD!Ht=^QywFZL} zqH8YQtu>7sH~{VD>o&HylODpQH6~p<1BwsmzA9I+50pz1J&AOf zJgd0Q4OGXB)#XC>5}AgGdrQl(w-&;bVM%IOgOnjm9t#<7mX(BswH3=8O<&O?_U>k4*{SZRm|zAv z?U0LXUE^ZUtcHND!DH5OHjlEE#(Sr(|V1?oZ{CDQW!L?TR3Q5@!p#w zI4xCK`?t}h99i>wMe!tv7}Xc+$(G$VzvmYk2vs9v5iTby)YLyC%8zf8^_Se8==1jUDw2KU!K*K-(4O&r>m(*#MR($Y^=enFYHf;#+-=i zJTDT_xN-!NWIjJ6UXfi?PmVd^+rWKkjK7;j>ZihoC`ft$FY8}M!lpYt7gC}9=UtL^cgBuZ}{vC8u)#`G5cgyWd5#^1rl@`6Kt0b2! z27rV)MPqKJDb$m?V-sz?dAP0a&XmeTVH#y_flTNy~)s%p*wat7@YZ&5l*5{x}@- zf;3soCfTKXPR%ZzP!`tE;^{E@aGR;Qn{kT)DdeaXhV?n7hGQEN{F41v_g#aRSZIj& zh-)pg4wg6D;fedSb{Ix^JHt5p^o9hGf|l~Ot@0cwQ~dWBUYl6shL?Zgle2*VO5JZ_ z96>$TMkQg<7pRENmQv}CVIk<@{KgSho?rDlFm)bwIKR^V3%WAjEs1PX3rP9HNo>le z6O7)>tRJ6o7y~Ag)gL>Z6Mk1<@NyortH?x=O#~=J>lH7exw#q__P3DaCNuAzU2p5p z$#=JQIJ2C1S5LY#?7UDXMNcE)zgd)yILtcxAR@hibD?e=u`Pv{A^fotgX*y;x4I(M zKyE#mwWMxRE(mJ`oFf8y^HRca-au5%d|6S9L?kXmv`j6SOA~wd^z+H5%5qM3W_ghn z@I$8i(=`7|`1302#Sgxgz$U|~)f3Ac`O9@hwMl&uky=>qK_W7_)6rKL`UXQqRLy44 zS@Z7K7D@_vgsD3oCke-O5&lIV*nUMn-EhY;|FNWW9Gg4{`~$D#&`m`CsU=)9Bcj>rp7zV1YM_9C+G9Xxy>TNT9K3p4FNrmRRE6J@rVrKNB;pC{b+S)-q~( zA=Wwi2)H||(8uB{LJt<$M5zuA+@0BeBjDa46kP1A3XNL4j2Bzig>A7B?=pLO;T?|u z?#I0Nq3d%N=Pf})8ESqN42&xT!j^Gs!q`K9S#YE&P%B|oG4uRL5kK-$46lJQe!kVm z0E3rfbQ~Q|qkg(3&Dms?P4TTE?bkg|0(GpFy%pi$}5@MgQd(5ipcpoCb2)WT*Kz&meuS% zJ{t&g8kn*w3~_t3{u6vyXOEjU0e4<(gI~HXBLZm(mr2yYI2*>7@x1W>ihnDaswmdv zLdMOB$yV$E5&KXAhefbNv7cM+TSC|qtV`UtVMnDO6m@YVxQ(L`huS+9H@2_rs;wM6 zEk8)n0<7W75e5&|k3F8vXS5VVPSyygvy1Cd~>XIOGw|~ow*k@AZVDR?l5=Apj6aBA}%gNxQ?pmp>fZbK#8tJfEbu(p9t=E~p z&n*&D?_vs*mwPMX&OVc2fuDXkY4WYP(4lcFYyXd^<)C9tvk%wW8!FsK2bx&THEm#j zGJ%wVd_H9gA7Jv(+-WH`ulqbkgZX1vp6|H*TqYob>AR|oth_LVzRFxF{^=_4AK_m1 zX@SavYWLx-ag`lQk1}qvRh|sR`}|xrk8?yJ3>M(l_D~>BQc4|cya6sI=$(QqnVK|h zJG1eUw$RYKT$sTEJO^;jIfJ!P+E>ZTPrL2jzWggsE=kBO{gJXA-lX>_f=ix5~jA&3A~?juSH z(%$5qvmjY^jz*d3%-rmzD=Qf}maHT#<+VtVVDKR!%!=Pl->W$GPs4o(p1C!4Xjgf| z*>CApTtmvsW)94c7{|BYHt8(Kc7t^8M|oV`NwK?n_dOK;Z%xWF*HVfB+|v;qTLOWY z8xW!p<3bFWf$BrCigXJC8`rW_OaB|vcl={VL{;k3(mT`n}Xom4d z!{#aVx}B(}+d1uEtj?u8R}dGdGTeaP=^98ppJ24Hl#e$)EEj2PhhFDxrSBG;-Cf4N z0Yqk~gM-p2L5gQw{fbuy0`>u`b3g3#_j-o?s% zJ%c;eD`lCF#6tH;7!IBxev8_T^*}-3rGd}wr!;A*!nca4>(rT%Dw42re~y*uCvCL` zaQ(&1bT&UhBcHVek57;?WX!>fEt_odm9U>by2>8L< zve3hP7Iz+h%tJiUXN`wC%mSS!xhmO$u4}-a5eVO0hC)>!bXf4L4io&ZPf@#aPfneF zSjU0A^rA5`sJ|4Grph&18qLQ2fl{X4#bXM!xrP@r$td8MgYw|4BZ{nehN>-bt>=B# z%Rau5F?EeBb9wuj>z%ehHoIfQ-&x5qE|z-ahQfv1b|^H=5{<}(Nl%3=->=%&uSFi# ziuFK5tBi*HmDgp`Ay>4iRC}Jqp_|mVch({?3e+GCMx%VlZ0YF==Dwa`w^qWiD%$Us zQurh@-Z_iLJR6xc@cM7`#C!fzIZ}EEh{CuXCzW}4)?TfRPfaP4G!L}0{ zf?4^^k#(_~ryyKTV#w3Qr_zb0FpZ#kJlSvJw;cLZm_s;OGyxQ!Hlz@_;T16FD9sdfzEu)aQ}*h+Jl;Vx zzl@SeG*53zR8ghthl|dX+n*~~wAq_SK>Tdvjo)S7;AV_gi;&jF)jUK{?&68aVWDG=8Datz7_n*iQdY!ZIRpE2xXOxjSX9uLr81|)^e~*rwUnA;M7-GWLd@4^tFQaR<4H1wVPl` zgl(P2b`zMTh|a{9T1bR5qggRF)o%vjCx@46UqB^VF}*q_4E}>|{qyV}9gY3Ve-xWr zpC`#UTaQLhhJXFb#U`#HnYC%e4ZlqrTkv`E z-rj!r*`1=zBX-=raNq7X{bVg_n)Qt19|JY1ukZ9ahO#%ZzAzOZ=YDu$_N2&`)_Sy`zIMdfrMm zYdoR$0#NZ0D&TDS;rJg58gr+-{lYckW8H9&(wP#V=jVMON|(#c4_TzAB2a=W%|u zvnoBZRlG4VX8IOpdStHZU9-jrs@)}9#h14+F~(5;A~-0x3EnByC>lzzPr9husjp?( zxz!WS9WAqX!cGSbWK0bV`5ZhCMDSv8ZRn*O5?>m)err~iaK_+8uzPNU&f ze_l}G$M`16uHxW48unYkQD<+JLl2Ad>G#=9wu#~&oKT+|$+PRBoxpybt+X{#GlM{n zhg+S>yPutQ#aH=uqH#3ViNI~M$f?b-%I&mabg^)f_)66QcR5SO@gRI6GDRa^$0(dxkAA93aj!S{HM;|+3{)EJ2*aT zNSNdR$^g@!C$YR}EjIY3bLl)S?;v;L0c6T9iWKf7t5IckQyFH;1nifti!HwIj~9{X zxnVYHKqz$o>h%34%0Ov?wtMcl+8Y$rdbz^@r)J&5?%xo25=A6c_y@h`UWS^H{`#d~9 z+V8xqjd8ke2ZI5xev zZx`@c(57YFW|5P+MSL*sXKuKgU)6F)e8Y?ZFpPPS3(oN?+xrZz(#8x!M%`b#FKO*p zoK)$EzHDs2tliCiS;LzjVneGd*rDJV(R=VMHN8%ka5Ir88knK%i)9__s0XuezlD;} zm5PFN*}N0{3jcYAq5X0Giosl<4~UEJ2@w7u!(8kV?4L6<;hWJ2T7gl#DNS`nRBKOZ z1a-Iu2b%$%QIne~0z zN|aQCSZKUQS|b+R{2Q?^43A7ar>q0adw+-3>g(HiQRkEvEEa#nn0r`#{W-VO+@aD1!w|?>W*DMM=nTg{1Y={=Gl!jD5!{UTQGVph@XN<&Oybg` z3@Ix=*j7M0aq~|xV$#3CLZvS480kpj){s?JDVAbF&F_Ls6nOvCxD*{Q_sz^k?I$2M z`;3Uay1orVfm)xFpNKkF*U=PhZyw+`eMmak?Va&SiHCG0ZP+yup?q^ChrISq4UPp> zEi4tH=@S^1jjm-WPDJ#nMRx-;=)8;1hCi3zomG*OizhFdlK1It$O)@`PI@vI*83<; z<6)HL*H$g^aG;ndD8#@gP>O?zKWuBOJ>JReHWLoDeh2+ug4PlP6)TuT~Iy4M!Ex8|x(Zq&up@xAE>IO%@~ zYXY^4RsmLqBo$DNa#bMJ6&GF%GFU#3_#r#R%>zskGUTmFIE+(n0PRKm*s#kgeL~Yb zHQ|M1sGi@3bk(O?tFf5XJF8jltx7@6OYa3==W*)x9SR2rU>fPFI&{Kiu4ndz*XV6afs-3F)7{M zR-^!$KxMz$1=TkGVcf~-Wz@9iw+Rn+gg&mUt{?R#uB>Zd{sG){s4ro&5I6}4)7cw} zp|iU3=4JP2KRi4?IP0=e+40Mln6;LSMtIiF=O1zQ)SKHoJMHeBQ3<@H8O*(PK!x zdnSSl8uB8!0<3}PLa2V#M?8&_a#fAIrxQh$wnii5uzOUrl@!4@@n8WKCLvxV6ah0v zUk=Nlvm#gqk@;a2qcKc>T>_I-x(J!!>Hn1A)89}IrA7;tSoMQ+5nBe)#jPKri(Vf@ zFNXO&2ReE|M{VWRp=e&dO z`}TJ`hsQ^FjDK2b=QB-yStIYFJ^)A6^#L`-0A3!S?sckRz=?Yh4Fwoik5|TVMRbTd zDr>WJ9b(|eM#(fpI~>%rnUugfozey9sh_uVF}Bl#^WF~yd+9Pgv3A!wUGVR>%QR{3 zz{|C0?#auvXztSWTJ#@$Ga!ml8b|Q+hNCSkImuoKo@o~P7Lr7Vcsh)ymsvQ9#})FMTeeE{ z!5D0{;F<-i&q(j0n_5tGtC(Or}U!aw+7iSFeN9&e?AFDE#5)A9i6S6p6db zbj(}2Ufd6(c{G@Zc#>NZ?N-fdjPG~OI(ub$nVLN@@m$dbFN$k6 zV_>(kl`_N%3E+0PRh4U_xAgQ@ze^q@m-M9!&ovs$qq?*$zs!VkoCr`+b%k!0H5(|L zNGEFfk~8Vlt}~UEi~pjztlcYnGAp}NFq^fTv!-*2){OmliPnt0xK?XL8xV)23+Y*Z zg;1X>t_nj2#3lw&m{TcRSockIF<(iqmGKF&(E4UYaLdlp;g?nhB`(} zM2bkrUMJ(Jh`|S61Oz-Qk#9zAOEOE7L6l_?#z&2(q7wx#kNkFYy5D3i;nh*8BKAqm z_aFl=tV^wb|4gru)K7KIE`k;86h1hi@s*kF{s|tM)O`Wc5~j^7K>-#@ESGON&;OZ5 z-tt!-fu-oXJsJIn8Gma+EI^|qMCVETBpF79PvM0_CI*3g7E6b7j7ouFJjAaD^jAEM zmuZ%p2FFW7v8RK=xANJbKb6-CYj=}1Bo}CjL&l(#%M}B{Re+0@ziU(sdI&zj>4?{?L z)85)9f76-tPK`O_+`R?uB_KcE&RCSvFQfSk1KNbrWbhsX*6pK{;q6C|K}{*6)ruC90?vh&J?+-5Z zv|j%4)B1bQ>nn-#%iO$P)|%JL>Us6FpY{(7PWdkbUO%Ssa#m>yxjQV2)lv6Kg`H7mH(-SJR+9r7w~3>5K_FjLA^H&)d= z#&e1rV|WF&D>XY~nXOdx!f&xsvmw)1rLrBDJ)l4Gagt@rum;;{_`+ZkcFw1A3;Si& z8i-lwRsCj-VwRZg9`61feUOF+$Gu*7c6eOEEEa3*Y+Q2-7uZ(ag{x5KU$nLp@Ddk4 zytL1SsN8aSBmA3?R&&3$kydyIbiF?un4ZZ zB7{%Mn?H23G=N)LyK43?}B$06-`=iEehK5 zzqhCWY`(dugloRLsDNv}y(olBbVX4MZn6+BVMfD@NnQLP3VPW+=)eg+rl_}=J54E) zl=ziWC~>JI}z4EG7J z6O7Vi;_V!bklW;b(Ll-bUJkk%NZ=cVjMts3_6s-iF;H#-<)mROaWz9LJUtvCaAhvoULO)e^905iN>D^MllG%59-q*6gnDbL^LgJ3ty7LzE* z`lBcq$CG$Y*JUdjL65fn`a}~(#=(&}(kw{D57i@gM`8g0EUbu&1O-nGPfnOyz;@WH zFYaWC=Yd*sCD02tiL~f}wgj=n%|L;LzkezXXG%u*%{`>fyxmDrPv_v{S&)ZVu%|#l zAurh;Cj4R(E_=JnJ{@YBhSw3g_Ws=7otM8iaA**%3)6TWqa#S?)Ovav{@m%l`hkrn z3+gYX@hC|rC6$kkk2;04<_aVVQ9-@4Zh^G?%LPi#>cvngE=jvsE!v{8CSMz*%lWz=(i}Y1a8_9*MMzEE7h!M(i9A83mfJt3i~cyb^wv>1@nU!H$MA6X=zRBJ$M%P9f&HroY&@An!?-_> zN+5R+4?Fwa-Lp;^@b;Dm`Y0KXlWTPQRs#Oz@xj6I&&NM?PIr8cx9#n(=1E6RZ4J)C z56~L#^)s_Tb&VXVJhhn)6>-sC{RoWb&wNYfL2xw~HD7*68kcpRrOC+=u!ij2sj8-S z3=Tq2;WugpBzI8sUhHstG z%HX?PPsH*fOT`Mc#us3GF1vtkuTfYcCu1weK17&Dd}DL^nkd3#PEK`tRayb!f6hDS z7K3Yec~CR>UZ@F+0M!T*5F76M&FQ!Wuky6*<5zif)!+{>8zz_W;Hw%4q5kvp7YlE^ zOspios?w?DnF2pcso$E(Se9wcU@!F>GnmXWZ5gblep?2^sneEg+B!}y<%63rN|&~8 z{aoiES7>?Uky(=IATm$tPS>H`gX34>-VZ;Xh8+;PkB|0B+ka*DFm#uJ;}sRUM@m?G+an5^>&Rca%lx`#$-Nd>7^R zHZkmr=*gqt0sb43NfTc7{3VoTO_V0g8)>`Ck_EowvNiqk>I+H$n0Y|&P(=d5%KB_| z`1x+fQR^nJ$5~;gI|k5CPJisY4tvMvr+b|cb*?+gnn+({t*p!z^AJbgFvh<{szPh4 zGB*$Dc93Fyg)~qen>3}OB={@G++^3O+Tp1SRVYhbb$o42%ruw5DYORbXc@N3OXJ*DEhMHD0Y@4S zae(ZX;qJ-V$pM^MdOsoX+RHjAsb$Bs#|VPPTG$E3zdyx#>*cVmiyXsssNsa#hQHr8~-;6@Jk;rH|Fz zKxIbhNGG#TovB+|)f*=DHpi$l^JMs4IPsL5pLa^GHSKw%+-BDOlYV;>`T7J?ik=|w z<42^IBM2rX8IADiQ=QOqU;bE0vE^zVD&2^3OPm2~MTgUykd3h09Q@8pPJ1|xC43`& z#)BC>Cl0Us&|4M>g+Ycj-ipWUc?ceyamAZvgnLlV7i6zPT^&QR&pzYt%FIb=&kze7!b3^Io@2 z`#E!Z8BhCT)&bxFKkH9sAUz+v&rWztcDk7CYWB7U(Jk4fLXum$M}-8pWRD8Tt#*&R z)OLB5urE>RC90aR>^h}`w_-rlY{?1z%S%O;~{zN?XXOnin6k1h}zq z&$F!l(t5mPgW9R@)nO^84*byHYD&3xV2ffqGk9(|8a+99t^EqgOGT&rv;06Ti{o5z zFZl9H$jt|$5bOMd|#;1tHTtK#I{o%Ff(4@Fgr6 zrhB^RRxrC`+0qx>IO~~=J`5uA$g=bU0AnuCrD4ckdmQ+g8eco)LbpVK>&c_CmpS<+u?1UoleF&PyL zxwZwFm|UrMCj+F^ox^|#Zw=c~7&H3g)9$P85nXb3UlqnbMm+K?YFizOMk0Z|kEV3I zO@_@S<^umgI7?4V@SiX*cvY?N>P(KtXMT#Tn8N0IaP}Twk*Ke;_FpP3)T0_l_$j)G#c^dZY802efUSA|3h>4K>%};K|EhAu{cFuv zt59wIxz8-Zv(lHdhM=t@PuP}R;%k&Q>ffd9DA#rgU&ED$ks-|vOJ>P2gKJcdZc`ao zI}Fxs8taK*sI_WGg|!Q)cNlWFZ$Z9G(65vNh>Stt0SI17R^^r^=;8Wv9!S|z9fkr? zw;Ao9ZMb46P2;S?;IfL7jwtmBBJtHV+sG(UQY2K#kVd^ag8c2+fhcx$EjcHA!&cxA zT22s`fbT}<;Fs5O!yHSPjgxu99)@^l4F^yHh+y)@g#rkkZ5;?;0Im!$92b%aJs5|!Oi zaFZ;8{%{xo7TCXk&_`47>m(flk!DG-m;u~KFYZnCZ3Fwa@tBa0U06leOrfZ(9Bj$o z!Y&dpFdoZ7VVVFbt_jmTG_@vqb|+V`u?C#zBFWGjRx7xNr#O`mD*k%UJmsl;FSuDU z9>>#5yrMu`(XoU|*P95!4^(D*VWPi;BDk1W0oyF%g`Y8UtBk+v zipve-RQ1_REb6pb#*b;t%%U+-g9I&q7eJNS#Q-nUWHCcTv#%ZrSGi;I!!;Z+<>AUW z@(Q&op#Yl7F9k;)x?Pa$w!0iGmGOe+IPl>BcZ9`U!WOB1pq%N)XBsC8e=-z$5dvj? zAtZ`oZGpptGH{sh1t+67OK9?U0Wg_eOf=&8mbKPJ2;{Q$E{b^J)&g0`)Xc!@5`>vn z&?~cuA9Lbqv|bi6rEp=W*VJCllZKOc8frS>pu7bv0rSeigz2v~r1aM^V31wNa7RO; z562&q0mXEt8I>usP+uV0{alUuD)1zV^vnbG^FNGRMqMSeklDF7_UUws(b(9rkj zuG=AE3;S*tD$y~dvxxoq$`(wD8J$(niJ4kBC1#<* zqqYt~YHBrgYKdM`7xJGtwEeg`dFZ5~6NoP1msI>gOxYv0cR{<WG!}BZ&Z825?6WNCi5L0doO`6)-5M}CZp|W*`glXGqy;1zY8eP~FTjNmMhjDz0kLTU|;k2Wk>rEmEuO zV-3FJg<(-hc`G)#)TNMem=3wrr;yUYNOJiG{>GznivfYW0P3Qs2V7{)XGLIH3FQn4 z0_ZOVb3f}Go*e9+buhU5IKI#|gmv4-V3p&$7tt)5A@ZheStQnC44;b|TwNE>uF9)g z{ZO!YHg#sffq-q}1RVL(4@l;gb;#xdP)Qrh`GM;Er7rSuT*deJMsB@(_p9s5Yj?Lu z&0BYI^6D8ypuu3VO@xtK>vkK;S6ps8C93YW3jx-?+6D*}H``8$N|OL6Ut$qp zbl%5Qf;pQHHyp?WL7O}1qH`ztYGB+5%=9l?lrEveZ^{D<6`CV zTU@6^txH^}Q*wuE53Rfz^pvV|F-TY_yBD+z)Vvndm5Of# zb7kt@vr)yWYqor$C9bQea*f+6Z@K!HRYvu)yDDF?+g(*5Ct32Qs;bJZFRHwNEAOdl z)cS;LDnIn7sz$9kmlh}=mfl&|1!`*esdE(y{#=@pKFsV=#Yn-4QayvgwsH@0mO9&@KbexljhS8Vbb~djjyJh7HP1I#uke7Q zGwYpj$dgX-5y#A~b;iL86^9(RNYyE)7-a2Z4uYsS=eR{G4?0+(ky^(KtWTBnXW)%=!m&bfnxw$g)# zQ=;a{gF9Gp^vD;gbM_#ywe;}el&C&^us~OQ{IK#%jv2PaVcyWNYoXW+xKbvrQR@>#Vn6h1iMUq1TMNWF=(XhG8nxE^g)#FpP+@ z$+J^X?%8PvV?I)p-0UWk4mU*1OU`44qD}}69b6zE3ev2hPbf=N;X`2U3f2*$b}ds8 zUAvOhH2W*4cnqGJpBB%V9T#)dQ!|*e*@7=vXVHk5W`fNJlGxB3_m5r=|F?Z=^8ajr zH`X^BgWI%G%KzIBA8$X*@&E1Z$6xvXm-w(j{$4V>Ns*@pjX^Wm-r9Q9!havrzfXd_ zt2EB$$?Pf$e(I;muZ!4Q>2c7TN2C5Uc+nrC4A^~fSWxaTeisG1z$4NunUWd4+Bm+? z=EFGIxO#3R4dyqq$WB^Jp+`eIjeI9$cG_q#osaD#*j_f{WZ+8%TA16Z!#ItmP8u9G zrit71#bq?jrNQ6#m}u;a;$kYJUDLOdsD5URB`b{=+x}S;WW{|Ok~ z?2i}yFrCkwo{y3g5}9E?Q=MW z7EN{VTd>~^UmWc2{dmyroly&-*H{lD%;pMase6&8gyI;^{4C7@fsMKNVDq5L5(#+t z^zM*dS_G5+KN5_Mjxd_7U=mODPoi7zc;?oC=?oM31KpVkw&QDW|9ig9oLRsgrCZ@M|S$-cdgti)uyd$D>FWLA zFr3i+3O>ZW$>tFg6G3R9Aeju_5f3Y@7-u0Wdt#8;{uvE*ZBHc(?I;kISp`K&jcarP z7xf2M4f@68;s8VP*A)zKiYuG=##4n@PsAUdxwA{~XywySqH4+6;e@odFWHxvaJdm6 zG%73zz*(d)KjA1%CdgNan=WV{F)ONR!xc<@w;H~iJq@M_0S#~!q!Uu=IIUxqc|2Xv zAV2azam;?6fjO4A6EnBK3is{>cYuVagUL*$wMe8#BY{T(yDJ8je*3NL06Mw_nqAkZ<-vyk+;vy6xRPpEIABiumsD&na zoa;|AYqXmZfhO7(Q)hGjn4@i7L{Yzwe4=4+cer_X7)Y}n)hTP`H}!tnFd4$SF5mP9 zCZy9CZ)EedF{158M10Fo)DBfBJWNrAzxjrWs$-GG+5)CoOM}R;P|MeJqZ5+$&xn6# z?ZNn>V8@>&x97sZdBo@P;q8#S^6rg!cbac5(QJ3 zrUrFtCm09MIeKmoXTXsL5oNp?ueaY~?)o}~_M>q?QJUb=kswiz#>qAI-5eDRq3#&E zM?dWz_y-|RjZAb1pJGtyxQ9yENC#K2d^v`OtZqakvDby*Yp{g;`O4RVKN}5F#)Y{l z?Z$Gs8H?=wY*@O$NVR^cC10i9FIssd&WPVcmXNq3B9h>5#P^%OzO6W!@w&2(GB~+M zV$Ttsyo>=UzfAc&V4uVM^L$yq!P+*u#BC`nWlM^xA1$6OxfRT|SN z`ARefT#wiwPU!{g{qN|IBm3(D=M1A4A8r2bAtqQfGEz8o$snUZ=mwkxg#4S=&zyPn zJXwqz%<1moB(;EW4Pr*g29t4O=J@0M;P~iOc)0s_e~ z5?4A7-YD`6T8$rrteFn(+PckSYx;^_W~MDU=7ElY%+$NCQLt^B!}pfq-n(aFnc?pQj7~Cx_WG!2h@@WT0Tvz zkpo4<&6?(`22ZcGB46&E>^Nl$nOJ=;=Fzp7tJ&gm;x4bcnvWgEG^0rFJ|R`}7$IAG zq}FOaWbA!{xTpefLwgeoaPh+a8Yk1cWVEeGzI|H(H9rJ<{}KY600>=@tngEpSWNUQ zhO?$vZs8JBl9!OTmZoix@o8OtB0YEU=O0ed_|FnVZPWBPzUa^Ue-fgGd4bOSj`S># zAST_`nCIQI-JR7sbF41Uc#7@0<kzlZPc*k@6)f>-e$MrnG^`PqMfB272|}GLO}5(RHXb zDLcI1jiUMBN_BZQhyz+f*tKMSg-O`@AQ{WP<(eWgf{IK+o_73%r)rcEoh+5Rjg{wY zghf2w(OI!Hg*we2j(cakEDt(Iu6}cv#_vT>TgC=slCtiCO~z6&sak>+kKc)*<-|H% z`l7G5*fd#k$NFn6Jv1f43&6RBR>3=EH9w;_P~*E8q+FNR-!Ur5qg#Cjp1YSMkm6Wq z&D0u9N`zbzPKckTpEE}c%K;}_kQS+S@yLNxUwM#GfLHa-FDXau{=I|aGiUeD@8HI) zID18DSy$Or#tcfAoGw?j=$2e-YIS|ll@pgP9f`nl-GwDoN{%Ch*_o;O%E^_I6f{!H zh@pZSYz>Y&+LTuMSgHo?XE&1x2Id)r{lNfw7osIrRHP8qFE-$tx>PFEe%it%fuOO! zX+L?}D!5fZuVwUD7zxG0mGV~@b#Dc1)xI)Y;3TaidGrY!rAVW~`d#V(q29TeQkqnA z4%Xxal|XgyJt`2Fhp7-63J)HF{Mt`)Ah%dL6XlH?22sVmVi4;^-!T|8Usmym`3&Hb=yKKQ>9&CW{1R7?jESWOcumtCmtI@E=fUFE9r4IaFY&0h=gX zHDF)qwDrxF4MgfkQLN-!9i=5DzGlD|)6b+}TE*}g-c+qAZL5td3xOVNDfOArEXu+p zqN9-yg^3s}Qd;;!!{wW}mqHY3sh(wGb@A-1LxrhU;CheK3sImI!F>PBy?fpgNagq9 z!93wU=KIxRUE>-puz)sGO=jx=++$wML@L&K{e@1|aEbfx6SsW#iB^ZXr|#9F(O<1~ zwK}Zk>Fg@b;P4gT-u3QggVL-PuH*4IxQGG{oJx3mvbBX)$>!rqss~_zZsuVC9EBm7 zMRJfXZVCy6DgzXdVlNp|FTs}a;1{92DH^9<2K?&j8Yn4FVKZG0QFl|*NAj;sdfSXHWe(UiEW z;x(fcoHjqvX|QtFJ1@?AulcSscdNx06=cpE4OMd%lQwjaC5#HmY)w>Oa|!w`2wj?0 zIgKdpsQ8w}2>5vTQ9agCGbtMho(KD#m%HZ&XJpTQaNO&KXNOE?D^${Yn2khsbR41; zXn5K=JAEDg&w1y(<2P6!K7cDPHzInXG=+VR*_$=xF&hj4O4h7BujTD14cQ*iGjBnC zlC8fyd075B&-|;62;8RcwPZBnLytWLRp4;Bd*N+qXiKgqDL2$vN_qFNtCg$CvzQ9j zQpHjV>_w#3Q27#ayIiz-iWkpEn@WsTBF0mJY*}F$MEiKwpBTw?*i!|9`CU~0IIgAT zl9P!TG2SV__K@dX z!WzQg@!W1+Ybz=3N&)x0zjeP>PyXfIh}z{Fk*k!^?9rfJJorca2F(`gR3lAGc5}z~ z(qdjFsFoDD)(rlojgrVoLDQ0`v#$5d~yErrM&PKY#Fha zgjYjom;OkeOXEYl>F%`O2ERQEw#D+pQTy`S#MoupHuO4ZSbb_TcC2C#J;fRg15d&8 z=fPi^!M$MX!-(Ec>$;D8O;~kxtw}Ti0%+Xhu@ctURgc=v6h4|pd4WYLZ)1|WLghDL zW}|e}huxGc#_sp->pZ}weDo)pQ~fs}K%cVdQpUNw5WR(?*IK| z=QMnIdVGkC*)7Z<4U{+q&>;q9Sslhi)k~d|U0{ajmQL0$n)W*{!?W&T=lJ{#cH8#W z)|R9x@>$jpiwHX1J#GbJDw_0^(Y-X@d=SimSjl{%~MwyX}+1UU6t)tJG9vy(4WEbtmNHcv@S65e8SJ#1s zYbPh-B1}ScOOXJU0YT6j2sJBjn-}j`|1Y5g*&n2$dmvDKd>l%WEme^_I3>!+Qk~}{ zQ<|5o>~~5?10Pw&<+9ulF`(U7wcQ^YyGMt6^|SiXp{MIlpJeM?{^;Of=WwraRy#SU zAMTvh_QqBrj5PL6>Th7;i72sn2`C-t-4ChZ?bcl4`1MbujmBjHvdX&hXd%8wv;982 zqSIK`gIChRsNJSm9;R(`#zndU`UY5AGTw%C zoGWlt9^fw$F%ajvO!ht+E?qam4Esq#@Rh7 zsGzuM!nlJ^1DI8Yk!S_pP!~9-FF~S2YF*!aI6n{U_R>TQ4 znqm--bKn5Ll%aq$e9S1rI7HR^O{HB_Nx5g6-YZ|7{MA`nUrkcHo9 z>M%+zx!b`cR75`rC<7P89Hdi%w#Q|JNAJRwLeCw*#i zv#3eg(qm6ckG(CeyDeoPdgN*6k++=}WmT(R!w%^+_F3gul!>SKcq!gx(Ys zhk|zCt8-M8EK9!OgAexj;Hi$KH9L(z7hNJO0A5%7$Q!*KvIgT$p<2e zPZrV1PegzN2@d>t@Iavhn|k21#k-IbKNMQ$uu(XS=$*7I^K8sq$z3*oW~ z>fN$pDz=zN^CQcaw`U&Exb?HMHJtR-T0U?b^Fc=sG$CvEZT5H=Pnkfhduhie6K~>?HhzJMc85qJVpU+M z<5d;*Z&d(w%FeRmxY#=18g8LsT5ieMCcOTY<6kuX_2MoS3t|Z*#;T$iKiad?nlw8s zZi(%;mY=DI95`drggK?<)XisZdE6E)cAmSj>3`^jU!9rfUL%B4u~W(VwT$nu(;O4Y zvr`=IVykZjyYv!-ms^rve|^RnKof(9N?nFlpCN<`Ch<;T1kow8B3MC6K}2nl2cSd2 z&;m8|clZ-WoR|QlhwAh_s6ZH)@G;keTusuh}>^;%Pn4zGrW|9VNX>%z*%nEpYO_Yi@nl-=^{*eAxiW zSCL=&DoxszX5MOWJ-Pc#5l3t`FTVssRB0f{@awG(OO%b_q?y&9LgWQpzzl5MGzM4! z155quexd&SVBsdjo0XI_&z0*$PeVn#sPEh1LcJ233X(>svFa{tY&@=72ZGekk`_)^ zH@>Tiy`9rN@#6W8odUD49B8y@^8KGIu}jawZ*dk| z`>5?4R0!UpOtvPA?awm2H(?eBzb5KSun_jqMRVB9`2*|c z&H_4#ZQO2m(W=}(Z{FN-uDnm8KJl~Dvz;>|@XJiz8PT8jmj)+CH3rPMTAt>TeOXz% zlt~dQsCjO!1ks)r@EGlFfs_wc3%?uO5*vDbEQNwUdJneXzRifD-tYkCt_}GWUjVzg zUp;F~a_xhoHsb%2$1Nw|;tBSiKdbEsYI-^&bl>Q`Pmtsxsq>zphk87k7-r zICgOpUNWAh-ppHjoNotzUSU% zeCx%+Dhs&i3^n!~@9}F?rZMUJn_us%akFcm^#9ZJW4l~ZxO7fQE-AN!Ac%Wn4>m$l z&S$)v|9E-j&UoO}sMB&VZ6_j}mjLq4?sMa3*gQE@xp%tssQ$oWIB2 z7ByfqDd}5{ag_ijB4PPRp3kU;?>wpDapqH!ta8~-$z?2Tm6}%c0*1+QWpFq*!;VNt zmQR<>DBaW#UmP`#ekcl4*NjKq7DnPTXA{+`vaffD&XuMPDcA!`{mS5Xj$v;|mMce8 zV(?@P8(GBrZaf}*Nt)GMsKNycB@Z$}YkC?s+R%?fgtQUM0;m>IuX}^R-|xvU_zyZY zg&&7obnC7FmGzq4Fn}R4C^_^?(6MoOP@DyNbn&&jY4pN04LTurm!%mNQ!z3C96p=4 z{r8(>Mp(AtP1*gv-;^+`)13X@yjHx{8*xC#5y_`ZCml?w3H!AhUjS!BKNL<>6;kZ; zAyE$+|Kg%2_K^n;d#+2ZL|@0uO&#$Yj{|G-a5$XHgEs^y)AB3RQOjrhZVrP#+!*z~2 z@j$GT2UBUlo>b^`RK0H=t*b|*Q9v)Kb$#}u^e6q6#fJvcdjdy;)Jr&39W6`#_w_3y3zX(@EWCCSP)OxD^>U`Z>&Aq zc(l2(0slUF^l;+|{8``l?$PF>M;q0RCy&;l$iwEN?;eGZHy=N#-pXfL{#{2%0MD30 z5@r}kFdp^UjUN+V#yz~b>zzk^QbngoQTtJU^pS^0_iY%qhVR;ln9hK1?pI+_usxvT zWo)wr?NygK0*2`g&~zTPT1cRMqBj*w>h!RTO<~J)fhtM|hh@=@LfFMu#9jm^(S(xx z^r*{v8%X!ZAM1Mv9<~#l!;A{Lbcj;U1Bh|Ehbb*-oD^z1(R9zt<(a5bdq=M=cJ#4vp2Y9NeuH!+*s3S(S~h(ilRsSy@!rZy#}uR1-o8_}B`XVZXQc%b zshgi3@txM&_02~*j`9+bq;$x(qw`A+EL}ikSQyztPLrWCvJ5W*nL~!xM9Lv(7^=nU z!;i}gCbJBC0?QH75On+*`c>xjiXP<@?fEM?~N3Gv-<4Th z1)zQeHt}(Q0ZYP3pYPrBDg$iS+VTrrQ%Tb_%C381@-4!Fd1ISi#)c+cKX()-rNNGtlAtxpYl`>&}!KKQ1Z6HW$0XErvR}W%kYIe zLvj@&>P@yxYnsgq7MHmlFOQ`=7GHBtkR)3dq5Pn;`9o+UP+^*~0ysmUdr*?LF@N+( z^dMMjY-K{b=P;=~;*2}*6pqk7Vw)w2=YLR2PK7v)wnDY+hFQ}t%@`c3#YehloU3-w z?IMrLZ|UU0i$^0mOVi|XEGi3&OK@iBME&f#R%V|ZsS%2FNFC@sPES74=_d4HPCseD z-!PqYm{Z3xT`k3>Xqr_z3YEc`$jIerD&*d4K$6%e%%7rMd4iVMA(IlE zs|9tQa~e11ntEYl07#%SgMH*%Qqht*XOAN`SurhD8_Ikg5?BqfD4 zDm+7ijK;oO`JK=1Kl~UrN0@Xri91QqlNK93_U%Cd!+@QVHU>H-$xa#x**zbbZq0Kk z&)D+coLMt!hPEv!Ku!^vMj~U%t`0|bU z8a>>scWcPAm5*7*;<3K?op}dG;SBm$=8SpX4f^j>$uyW4@qlL9#~3<%^T`2pq#)Ns zEH-iD*18Q;hc(>@Kls~3;gKzT_G(8*6s8|gQd&&Qt`xhZyLig2iNA}5@5A0;c=c>S zY+1|H%t!XVRbLrK)0hjPjxL^oRQKG2;`vmd&VPvm|-z&9Ask7UdKC|>n2*FqN zXxquT-3~FHE7@rTAAs+mB^T*=tyJh40}X71&iZ*%FrH4^Agp-d zxvd)dr{Fa1(DhZcAuJefmagDYB}-8FY@Vg?u}&mqE0BL7p=p~L`?Mi!yM4LWWn?sU zB9Zpah!zS#PW*k_GEX$)K0K-)sbIkH4@}e!Q6KIP^&?CYX_09(1VOmH!sVVL6ASrb zVNa&ksGTTP+yb%IQD4vXg20%iTz6HTxtbU66FoXKma#`F*=!z7M?Vx&7P^QS>H^6; z9(68qB*v#G6+lG(dMbbw^-DgF5o9fzHC4n><7DsXaQ|n=_S+6zZ+oxoDjODTo#SVq zo|&%#GdsTC={dMMEh=aJKIf=e8ZphY36l;QKNuL`dDigsqDG~4Nm(lk6x@!5dl5v(`hZND>;fw*xwgrb2)6&KNdYRC@F)#Dr@1^h zWL!e;tazQ*J1S1k9ExUNn&R7&kuQV@G`O{H^liIE?7$*Dl(Nf8{8n{;24LC25mv_?qsN<*A z%$k?Q6l|D`hs=ISN^*O*WQp9~D~-a+NbHUTHtpUhi2bt(K@x?q6%kpfS*!?n#2K9R zTvLe@cfe>UE&>pdp-jT9oQI)KhteKlr1kiG7({qW!_x5zm0Qgb1X_QT3sr;GT}5W1 z-9`J2MUu)S*bt;`VL(=>siD9zA;aKhl^a`}g6)we|m5+d%V{#}C)2 z-1_?Z=HvgV-u7U9pAlLuK$l4z566|8^gcVdzsTp?sNHXcZQweml=1E7#w(M?%6g_B zvXn?G99e-_-`v#i+>Dz-Jo3FEL9P06ZQV5Ke<{zRaaqK zukd3tOa?=NImA`Q#S1bN(ire%JR~%&XUgQW96}kZkSDJpH&lIM=FsA`qMCooyjiT} z-^i_9tmBQSrG?uzI=hBu7NR759Pu%Hm3hXx0mZ^4?})eoyk8{+gr~X@zt6iYF^emP z@cUw@GlFVv<_OH&j*@aVK%~wIzv5*{N z4F-+DFp;pNFjt`kL3Z|h5Y5ji^YlWvOy_Q4F9_F6ly29y-2-yEV<*w!lCeE@tCMTj zpczSnenMy7W{-{OWT{*m5g*A1jiA*^Ku{guj49^_CTInNq4qHFw!|k!c5JjtLwnk4 z!Hz%g50fw0C`b{%H+A5=juL6^gmX|AWnT0`ZD;8+*$LsBX<41sZgAtht@yFwQ0LJQ z7bEfFus`aVR}_*5#rH--sT?cn2PtyYFR9;9KT-Hs-%(yx-}TW0%ey{dKkMH0y}3Hq63m$0*By~ptGc1LJ!O?r5`#) zamY?%tkGOmip-o66K2J(51Tzy*Xm~R$>4*(E5+s~H8}Y83-Lt_x!jtuQ%k(Tp8jY_ z?2q|OC;#`BJ7GVB#k|tIMjsR8|BcPZ8+rL3|K9p&J)i$_`5!r=*o_BQNz}O*f+$uN z>(#X<;(&Ze#E(%IlX;%L204-~`d{|W;WQw`8D2n2^9wScPr^{7aeIi7U$@0oJQB^I zFOm>gsxktK$ZUEwPM|*U*QkAkk4BgSl$Jg0S-n(Q=f6CBEnXtk1zmAGI`2kJfS`#< zsG)WMedDwAf^SQ)!V84pR6-zLpgBL?!flH%LQ{PKd_Bcmxpinjb|PEEn`luAh6r{d z;sI7G)5S_R7@C?ZzJZ(ZwbYHuMLY=EFdl|?8FjnjJQSleY>&DXXaUNKAM0nYFva`M z;m_j7os*ND!?T~a>G~G!QAi(#Ek(USH^Q{8L6QW0)Yi12frHw~?klLV^Sr)aKl>Sh ze^Ea>teu{U7jQ`00fGJGtiJntf9FITzdkuWI<2h;aT+2}h`nOel7gs*7tF127)0Ha zhWs;3W_p3wBZ4lHlCT*@=-Ly2G&s1LZpO%{THa3^3<6yBHeLpy=S3*KzZeb&>DKD% z<>lo{r$1VWlMe7AY9w8K#_knx66-g+u&0af(_stt|CNhp_Oq*W6`eX#=kbE#U>6J4 zLyNOH&sm5_y$>584ZAN`BzB)ss4{${{hn;8t--?e(tNAe=ndGYwUdz%0kDQ8^>%t} z!YlP<+yL6Y0dWpX9G=vv(ip~#RP97Yu6> zcBg?=cIO?nVDm#c1mqkIDp&g8bXth9K}VVa4=+4$=z#znGMn`zoH=7hoIyRn8Mg07 zo5t8Q$eIRB-OaTSRy-Gtc#tA2`G-$Yx?NFtBuMa~Ly!Q~iW)+ugd_tjA>;C)H4=Zb zdP1W$Dl@$5hTanNh9%)*9NEKgAG*Vk@Yw`nk0ArTdYvDD>4OJQ2wfI13nqW7rolgY z>!;7G^51n7z!T&@5cM8<#bgx8T&@7%hg&n7CR3UyT zt&FM)8vwb*<14Mz($z?AQB6A_W#zaMrqct61|0(qJaWPD2|$JLz`Ke^hO`>b0iZ!JUU@(8S&_$P}KEtBjg_i~tui+ONSp{=N>vudBYLlY3+!y3! zGT?;L^p^ZhK9g%OLFS+h&p2w$*zSQy1CXzQ(TlVfbh|Tm|GBKL(9S>_P0`PR z;|P(~hm{%f));UWW27MR8d3K-yjen)x?uQuW!PDe zql)-dE{I;#=P+ULy`MCcSzd#c7ZsJ102Ks%3VbhHuAp&x#t)Xi;GE*kRvf^o35 z^h9FN8MrU#4wQmj;J`7?2L=+9NEm3qu|ysn@cK<{_e>@@DPdJk((GUfN|iiy|4v<< zhv{(8!4!I$ci>|OHOLYUj~de5;q2sRHjWh9zR z*J;CY^6Rnlx-$W2X$ej5)DIi4euT5s-hS<*adfC*LiJG>54;VzVjE5N*7{!jP&+xS z?Kj@kPEPAbhv+)6QIS4SV}Q#7K=?xU=hL&3z1PPjyEMJaa57lI=xw(c35=pE+Prpk za}^)C&#Q}iXF{oUrAmaO9?)JR?Z!hPDFCxo?zqJgzdj9;A8YNfU>nx*2qEn>=V7t?q4ZcveY!}ZLZ2cWj>MvXv# zJMf4OwZHYNjJpj(}s*gYDq*W6IhIV+iVFH@m}o&qn=up zsTEuUA6pE;d5)RUGY=ZL>1UrxrE>0BwlJVZ(^A#T!wdO+mXYVYLJXGO$@I*o<%z}U zP$`d4u0WoL=tM%hN7WsMM3nA6c7#IMVq82^j@5iSI(S!=gLm1rIF1)Ho*YOd{%tF7 z`fuo`<$$oJUs)1%$sLFiDA$w=2NAPucrF_;b3XIl@?_I=Gai91yEhm#&pjx#Y0}^@ zvvYWms7rh)ELywGENCpoV*eaF$IetY z+o2qW?B4F5j(GfR)!&&R_zcBons&LojUz2k@k>IVF;1q%S+ckW6rh$J3{qg2R?DhE zmbzFrUwC@PNh((XgKC+hD$n{XKIiwQr9=1JoE_-i8uU$u zoMXH58nsjjRvxkycDJo1!#MM(m+|DIzc*I z>b=XxP8I_S0cP0QpmN#qkA>U@x))p#&~&$p&b6{m&>TkaB;fR{=q#ZIVh8QQK;Oxz zZw>G?k@qk%cGPK2?H5o5)X`SPUG}JWQ8cq^h}X#tG;8q zc7x}L(1Sr3B&bDYd~t`Z74e!vw&4K`%dPy+Xu4 zMP`VZLVdczl3cK)4O&RhP-8iX&m+Xx8cR^J1Z#07t8wNgXmT9rSD$9II9%kj1-B`T z;f)7Mr>Yt=PtcxBm9?3ywL=xlUY|3WhLB}$xdJ&nf+v%Y5xG-@qngR;V(>C*l$NGY zzuZ96!u00Rv}9kv@gk>Y$*NPnt`>#yb4!Yp=}xXT(q=!QIVd-0HS96M6|+`&5-S!h z9en^37+r6)d<-CS{zqets6PtT`5$Bs8B0{2FNzK|pJ!08Oov#P>}E%8hHO=w`Ql~$ z$E!9}lx{a(KSLFMoI;_X$AXQzS42`xq7Ir_NGGZfeAfxieS$iW9>0{!&>Tvyr^-q% zBa{tFOMH8bKwx+)aewdrmfm6Iihl~-at`CY`svQ|eVLL>N2KP8JL4+u?4H%%)O^)y z3Dj!x$Z7s+n9rPLjjSZfxQ7lv^mZI6DSL!@nfMzVncBqy+t|%iyY9jC8Yo zU2{IZzzIIzzE_Qt>mf_t)@_t6IpzD9>fArbQo4Q8_>~!@7HTsmfiY-z>zGAy9R--n z<2@@ylI{y8U5EfuSxP4w1dj|R=CWE*6tz;yIoDF_VGwkG7Kg&;871|9P$OKa>1Fs_UCo zkNxM`o&D!m_)rj%2{u^jqMj_TWITq<)xL@rVv72j@mH5ZO{utM`A_03^&j||YW=sP zZg@@GZ~RPH|BoM4bN*jzYmcjU>;Ef!3hcjUu>5`=_J0jvqeqvqe@FfFeN+)AVe29o z<}JJPX53z1ZF-Ds!F}3p_J>{f5ryA%AC39|cdN)++&rUL>)C!i#^+I|A9OQ@=CmLt zS%r^2rg8H<*@R20S!^q6M<9O+`;gb%0*v@r) z_#6*DnecQrCq9o0AGR}%7oUIlGdl928y_}v6HmUS>$&ntPd-F1wlTFUACFtrCYswl zI{q1h?@Fp|Ssr>CABb*WW2>ZDo`=p*_t=UO5&@zxZG<18Zpld)hVj$zQn7)Xe?sAv z>~yZM&ES=&)-O|TSJL^CB_zjJ#}e%5&>9U;P$6Sw&ilo0%cS11E^l`EE}PsGX~4Rj z#Z;KU-UOa6sJBWZCUXQUYj6!MreAy?4FsIYaFvR*8vsRff)45UfORm}hWuNiFPIr) z^*&vQ!B59gqQsrZ%pPR%Nkx_Y4PImoDbp@YQUIgFWkLO7NbdJMxq#ypK7Dd``f?t| zhUTpAp+HHEqhh9HTdGB{7ywI{z|&r>_7jG4$|v-Z2&Rq|30#rtT-e#ObWc7cOD7XG zhqejXvbG_kd4@`58v@kc?g6JD}Q4#fNqi4Wu|7QP5rv_=3Z;Sy}n8mnN+?_(RF);V)ikL>&x? zN4LtHqdpv(n~pYFXy8BYf{_t?@8KH?-zyWX;%`Dbep%@@DF5wK@uKnL$v)+IlFu(M zDAV*)aaybW&^WD~VWR-hN*XkbeWJt+LrIAzs8d-^Mmkj0FbbeDigk*^KV^Ovv|8#( zMV!`O?(Cl&keWp!rzD?N#63dOJ;oE(R|&qLEcT2g8?O&3e-)IYChsx&sL7xkz?_l| zhKk+}jqm~?S)+v0_5#Pg|HF@%dK6K&ttuLq2c$}U;bN9d{qXFhT(Dkf(liSanjUz$ z_!fy$pSV}k$OEt~yn%ihQM&NaV8w1xnOypi10y@wIsHMS#b{!D=w?KlGIF^Py~)gU zm^y)}K1=N~p*IK=jmsn&hVFW}2+?s+d-SwhhQ4u4iBzMyXtUuys*kHqHX33drc)U? z-Qm?Pw^3a`w_mWoyJZcVP+e+dF|v#WhHSttZwHR z7Lx#_nV>z1xFt@`DpgvMVf`2Ijs|BGU&a0Im7G?|Gd+Wlxh|xp&xX}Ygc%4_G6B_{ zO`HXc+hx;AdpDQQCs5q0-AN(w=e7gs+GAlFb}Pekap4lGRO%2i=s}&X%^FjiFOmle z;|)oUnz)y80|inAktU7AUCCqegD?mR{B$K9HYlBgvBSs=OI_wU)p7Hwx4COz0K`Zu zf-8{RO3R7&eOp6kp|2!I8Qb5F#4OBNTyAR0`61xhX8u8Q9P?K44I6P z&O=dv!ThnwAwX*ng69PoLLbv15~$U3xrnY+In{)n)6NTrgIgrvc6!xsLO1l))%P8cdw8ONu&7l4MN!F!qrM&ZP|26 z!Sglk58-8+ErMI6tgLhm$t4}hhN?`1)E-a8@!2alXYVymenj0&12aO^clPW5S3B8u zqo^h=KGVrAO8Ahp1eqSVT6KO2FD)`pVMfx;qcXHaGw>SdtzOb zY@ZHXFsyAoj?ZRHp9N{cOK|RW5Kdn1XzRMv9DdX(h@qSs zt5y+_E%*?fDB1|6tcOY>>!-1+$9AyzH>Mpf$j4ZGSGM|7Ghml*b>&IWyv8FTX`^uz zL=rUMhHO<2S`(~i^vWJz_pX+ucgUVN8x57>I@NV6h!hnb#04WLA>8g}8Rv+EaI$>9heW|yYaSY|^@lk~5aBS^X!w2ve60Do45yR?$V z3){ACU)uRK^g@o#Gx42yYYQx0Qz$z&S6CFugZZ$tSH~8@cCYEc5 zM+db7iqeHzCy)g3zR7{EBJQ=KiVv3+5Ecd(K^iARy_OP7LzZ>j=*M~?7^5L*C<*Wg z$()MSKZ-foS9_?Rl|G8xk=B_a=p+l+N+6wN81q@v z8NIzKJQ$@wL9m#RY~(s}Z0_yw4-RdloeFRYAh)F^cI4+FDz02bAUUT0W_xGU9k!yk z(K|(_^w`lUw)?CsGgp_`)&1rBTFr>XzgOzk%o-@8rypk1Y+BoqZznnrTC8-Fm$((R zs(42JF7G#a|+#!{9PvOtP)x>t61XK-t2%@x^y$4TRS=1-)kHm{rHK#fY7(Y_P#)qRGL+? zHabjWUUE>&5Ou3?5CLg|yVU8r&Ftw5Xo3WKv~<3$ZbL>|BKJQ_0Hb{m*lb0XVHLjn zUM|UTMS@mqYzyQ)I<5rlw&8G!63Cp#_Y~quzPJG26BobdJ#}0O{AoO*$CXS%v|$gY zENw#hPtjzypcc@yBu77SYD@d|=Lg3PI5OAjFAp0#$Mp)o)TRTP7Ip2hyonkuE1Klw z@p(Q{KzrDiz0bNbRyotPuLW6~(&xGInH0vHom26B-lVRSY~PIoGy}5JD>F;AF*9#- zC^(Z499zXAU~UhK2c@-~#RZA4(@Qogdgr`XFwDp(-`LnI5D)Vc8gvotD`6!tw&v5> zuGv6l+@783)wxFpvUG(ycevZdDAYJ4R7fmR976Y?l+TA(e2(BibuATTRt48Yc}Oi5 z_z%AADLi9?E`_>`nxX|L>oP1v@D$)u^-()HQMYNWyx{K@LB~&TLHn~!7oZ2H%fct+ z8o`(zqh3knjrW|dvZtzFjg(1i3ntBBHWi`L7S0(FSi!!#zf(V`?PVCzh8ALYKINKj zc7v#wswk|Bt*ymYUQANU8;!_*h0VA%giXH}_4zCFE#qWp3(OW+M?YjBdgzBJzU+TF zc)rPzX@T%C>W3c(Fi}95Dnn4v9U(+)fU8s+8PJmKHu1S&)n~YzHj|Ot{!NysT9=un zdbdQs=o005n|_r}yBwNvZ-7Ev>%Va^Ncr_{G5p0A1JBzH7DK^q#qGBKi?;`JqMJqY z`|I|fj`F6bDq62ZHyQduEI2f#4`#lZL@Pk&d5-A*pvg7xSbAcXo)8(iTf`O+$*(Ne#ucT-=K{3VbX*}7aeGo)C8zedSH z7mT^Z;@2Q!DW%iNRAF6$T8Adprgs@)N#}Gu*T~FNiQ)t9@BDo9`mAwMJFT5H4v)^% z>S4$o^-X3^!2psR5u|95U5}W|8M}a@vIXwQ>XymM=>KM-t^B-9PhbUI-U5};&7jQm zsVHa|4`SGLuB3B2X`uB53x4?!Cg*V)4X-AXmGq251VTHvzu8y+I6}+3%w-eamJ-6R ze@dG4p@1l|(~~jirYsmUc)Ww=#LM3%LRD0q(|%z2nX+ z&(!yFqU0#mT*;||ukyvxQ?ZVZ07>@iBY>v+zN?y@umRjCxuDJ z3>Ewy4TKk9Lta27W7r?{w2~3tQ!WtLz0D;-#r%+#9@Z0i*I_+*eV8wGc(hl0WBsn3 zoWQR}V}IxLOb_y;cD4)UD)XOdFysvUqQH*%N&rgi0>;F;2V9hBHSD1=IYpO>F+T^T z#0Y_?TQXu)M)Ld}5Uc#uR7iGD^c0d`8dzLFoYA zM*VjJ0Nx@1B&*22$FXd&%`!kRk}E9<+hKxXb|{}n8g|>rLb@>`ElqZ-TFV={$KWMl;!Ylz2({#n1uE-ehE@dx?(h|-?83b|+ zT1TvHC}>vf(}gw%%ub?qhmk@py(9*0kj-f#(OU{Rcy3;Ksba2Ztg8kU4G~M;DNseS zhK=(13UhAeV~EJ}P|}B-gBCG-Vt#x_fCxeYR)Z-kWRa4pv?QOGOKHaE$cqv*?{crn z=`{frX@i5-2z?Yev^TKekXQ*5IT8%nE$r;=(GD?8uY-qdacYwOkr(cmxVx31DH)>` z8I^wV0hUgNNo}b%`r##}m_oa=u;s0B^n)&}tSpnT1A8eEr^$s19w|D7+xorXFXTdYnkAhFdza&4LNnvqj3ulSIzkjta| zU6vC_iPHj=af(ntQzcGEgF%eqbB9HpW}IL^3k+>TGE@@&Hj04DoJSoIwxMU3W874s zlgo;@oHS4i%3PGC5mGNwGq$*j(+*rViQzR=UAe|w zS@IRaH$l3hfC3&#o`lPM_rs6I+|b)6IpycNR9@YxS61@gtY1OaB$OU9PFhAzr^Ayx zLlPqbJ{2UL5udDL;Z;4C%kD53z_N@ev#mZ+j!E)`;MtPVQ?B?V?gPoIXgcPb|a9&xYs6#zbW*HM=Nux%J zo-%1`5Ma)FX_dxsDXiS*ZQs&*%#&z=tcBzACxE-S9}2}4GTIi>`)j$?o?0BnR#vIQ z@}e`jwlq9WtK+D15Zi%0B41UMqm^D~mU>#ImU;oI1ZcDo=&R>f6=&v(9$HD0|;)gZocViQW?XqD&V;_eycfqZW zg>bdd1H|;@^J_3Y(%ya^Vj(_@DYY@4&wTz8rE-N2sCdf?n=-Zpj|U?RVU0q~Wz-s8 ztjtgLtH^_xGsvC*C!XpnV=VEn4XfW`-vB(`B9m+nZ7WQuLFJL_b3x$UP`4KtrCOdL zK!q4BPugKZEFFzU#j@bBpm1WdYACm*#>RE5mjKWfMPflFQ&dO;yk)*Z%@1MMT?+kC z?>r=llE#GU4cM21Ccu@7@T0tK5yJ#_bo_!~8&-1z%l2aQvutK?ugs8wmVVN2kD``AG59g6B?)|hp zKW~*-gx6bQaV4Ig`&(%jkN}1DBz%7>oxa*RsqHlsys`M(Kg8eug-#kkJ6%le^0!j` z@bqkFf4^~ja`f_K=KzZJ#N*9P)f@cXtDTm`L|diTpT_B=c(9| zlX1G0LB>*HW zAfBw`{zM^Ty$H-hX`pev1S0v|Bi^(i`W|;;8W2wc5r1ZotF)ck2|(;?O5pnqAjwvo zaCrQ~HwWRuwx{G_V~0!hR|6nF}$)lavz3k5aV3kKWH15)o9|5WYW3}4KZYA!Nd z!K>!5Yu>2-#1eHnhjWP(*XO&}ED)U}9t}K@@N))7UOD4qaxTrbgT1*en48*b4JaL* z!z^vRhKBKK}Z}l zhH(RdFLlbI|xzY}8{ zi}JtA&s20nbWgUPpp&{44sp~^!gk56ftg8%T{2L|Ew~w>?XKl20x|~{B}W70kwfj! z3e%az%ekyU&S-(|vUErciWQ1&GJjouCYKgFc>8gq9M>b|X+9>oi`}L|SCom8r_tNW zqBr6y>?59^I`b}@EynFOGQsnl1ToHlw=Ezp^TurQMpK7VkWUwrvHh7>Jc2G- zJDC(Px!3{&La~=yi6#67+oqq(^#;<|N*ns(#VR>Y8QGbm4p>7X$qYv%mCyIEF~BXe z?M#AuHIxKqYl@*%yciKn9HbQhrHsVbdxrWG6s-m&oyk*c&igXsj3`+tMX&(I5!e=e zj4e>b_%!hBZT}r=%kPW(@M3wn%zM+@{)06Ws>e;3qb^wVqMI~6b;qKwU!0pWe5jNk ziYpb&>i9|JP#f)T>#f=w-?;{2OCJKtSe=64+`JH4<-)XtCU^H+_qR-J4V}k>K_+k) zbn@eD3|LquXn|G&h~x?)n5fzQ6wPiO{_o+|bglEEEEkrE(?OknNaQL#Ery%cy1dcsRMo5im_^Pf9|j^63``7cV|-a6e4dqb=o|x+&J> zuLEjE*9WTASz_RO*#bNlYh;68;HnK&%f!1#g{ z`oD_>s(V9R@bA!oO+4+VqHZHNFJBU||;0O*n=fN92a9T_0E7Y{n)yD?kwlsoan>GlJ2(TutU z=ONg}2NjXG!=UaQ_js%l0aJv71O9=)4F0TePB?<^DYDex(OhCna2&&N#Dxcv!f<)Uj^^4zo+1x- z**b^iK{>0h@rrytbv>~$*w zmxOL=Ve3oEN-ivuWR>Zq<=H5_Kve$sZLTQKFw-!Jg09_T?{=1yQG#TSDg5fYZz}St#Sgje&_E7iEq-q_^xZI=2G_Dz)XKm6Uq%j`jmA3+|Wzvcpmd}&=#MBPSVd!)XjV5mOl`1xG> zoa-Lm0dK+wWfR_;oztandXRLA^0uQbZPMAE&o(XV=Nh*&WLs`NMeyd;bv<=^1wFs1 z?VcT-G*0XPS1WNxx& z92C0%+G;lSlJZyqLi|bZ;8d~laJ5_{`sY!P5e$k z<(s!;Ziy@voxj9W9irPT_fqN>YmDkamaZ)&|uns0DxrRMZ!}fFRywQ&OEzKg)ivxwc zNwFrRFlvtM6ZQ(d9r(wYnH66M?}A-`wwNBKLHj^?rx_L_T@nPJ=cmF4D=Ow0BP3w} zHbB=!|<9m&{?pxqqgjm}}zg@y^++#=*`{*}JTPEUD2(4`hZ428BDS&=Y-e z&!vi!HEvPTclP{_`nomW9yO=?lwC<2`sQWKJvoB)4Pc_#8!&iUndA}Z^}V<{pxLvi zVaTNj<^O0OYNIVgKkQh&-KAe4oUN8`I`>IFrBN6EZPo=NW?k9&r=>m)W!lv zOzZbr7#G(}DeNfS!9|e5!Mm)Gkg#0pER+q4sQNMciTe`N6I~UY-|1lL>KUvIWp;+m z@3Yu5yk0)t>Mos&^yrBGE~2$L^K03~VwQKAB*hQ-O|0BNndEh2zC zfjY zraZ%_KMFag88bcq20;8?)zvx;tl{RLaFzf%U2fYZLxykZz#kO*B%ivqU*2{BoTI6l zvxN{jdXPmL=q;>a)dEQ#VrQZIlYY8)9e`RV+=W^X8F-ln3!#>%%}Z#+oLzicY$!iJ zWE;1_8kT#GE?`@iuux?$9jLEDV_Fa)$DFMtuGg-S;AWg4Cl@i_b> zhQm-YCEmxFn&sw1=1;=p z1Zm!$9kJ4&D;+j#$KMOwB);Z1YmeU1BIW~|_kKvP6YGYE{u&jyWE=FfT!s@Q?4kGW zsXYOu%|42oT+0GXGaU1XjOKV3aOU^H14+V`xM>qH@(h>^jEuY3T7_vMqM+^BDx zql&Qm$2zuN%~_Cn9UeN;TNbij2{W_*R^*;oY(7s?s5#w@%Zy&$E^;4WL96J1iQv&` z&At@yDCTJKdAAOfmM!a7&w^39FM$bwuE12h^Xq}u}P)Z6!x;ZElx*ZnV4X7 zbrG22q##ooDXJ!$e=4;50zJ;|b@FyW4@QzjkygPiHnhD`aEvl*7X=mG7y>71`xCHcK6M zGhF006k9hT>pF)&qIG_e(>=@Z7Fq#~aq(tY%C@$_?*?;Ibu|l(lNJ{X^L*A{XhrG! zh5Y8EZVv(K^7sn@y&7h_mK?P*H_0rHE$fmC+4o9JBj{zPg#)z!yq*qUv1*#n5!xv* zvmL9S|rmY&2e&F z*>ihg0{G3mEUrWEg>&w|Ih%3g)%Qp53pdT_cU`qHPTXLfEpjq#zem*#b1y${!^Ykt zK`yTqvIA+*Htv${JuBAz%y;q~-L>%k~L9Zf9e>&dN$1n3|In6#Wn;!x9@Z3A}Vv3Y2+EqRf~q0Tcj! zK!Lw4kXU89dSiM*t>nqZUjJo0SFzSUe=C=y@h*ozpb)g6- zcx{-<{6JPZAC%5pwxfFEpmz4^Xs=N}te=%WmcH_VF8qG;#Uy$NC;!cDz$2Qs`5af2GWht0*^i zKmv;g>GCsaLr_AQPq(SB3G|b41^x9=-tpE{J?e_;0oJ>`Pp7#)2Ilno=Plv|-P^^* zm+!U~F&v0gfN7Z!^`aJRx^3}yu~1sPEQTmalJk!?EjB3HgtCXe_Y+T+yB49=WhSM+yDP+`~SC58%U-t8ZT>ywUhd8e6z6?A{PuiCvq9ctxu+&&!GS!pxmQ(5>TwTyYeEutRoG!==0|l;izZd5& zWVbmA6-4hz<&hxGC1E-Mi6xSmn-i7Zkg}tVQklunZY0|Rh11S7Lpe=xBB4i7;>>WI zMIq{|U);{+1xBjAj1%&L(b)*)_D&`*b`Df*a7#&CR=zsM5M@+rVgSS99EinUeoIp( zGGsiI$4PpulFX&z%*;had|)IH$0LlJ%Y0x(nb|{+G0JmzZG6bo8=U5l((dW`_H>ua zb2#nj^La%w$n>Gdh?(rEFQrBkH(}07p@jJ=6JU+WP_qm(cGO&w2MuOn!CIW&64Nj* z16$Rhe{^0IP8YKPoi4CdN_E*}ilHzl#K(XQ_r(H0wP2@YVcy_L$>Qdsyv{^<64SVE zDLIV{eu)CP{aOukD}x<9d`d7z2wiEG-SvVsOdc9*uqq`@No_CAn9FWra5Sdbbmq#?jCG9Sl%i%-PKqAHI&Y`UbzMa9%rHUlp3pM+hFpt5kD3=$JV*aNcm|ns(Fjacr~mjoYsX4byH_)9g}{ z#y;IHRk%ToAF2O#$Uy+pm)?+g+%n~{D{>j-h)e)ECI7R)nT`Kh?)Z+s|L zX_b=Ob{;WvK9Xs~rqcghTn+}#rxT{U#$(c+ zqQ&_R3Y%_^KTuPVGw1l-1C$*iugBq@S ztccnW)G&cG2z5A@GiC~e;|r`j%y*xp7ZL1}AJB@xa&)4VAM~Q`)rvT#3u~;x$-XIH zbsvx0VZV#{z*|;xs5P6HM@aQ#RiRozN<_A_3&KD<~pUm9yHx@&3+PjZ&Cj z(#G9tk;f7+j}~gnRLviEP7dpbFSq2+J+f6xS%41c@CM9kNO3SI&wT=7F7PK(CY*=z zR7Eni0vD*KA9jINw!#&$s|N{ev6V!qR$EP*X+-}tS{ERLbI%9BAQ68RCj~n?9iViT z4#H*>0O9}xImUHE+6Lnr-qOfXQEk+!I6Cka%Mvf@f( z(~C!Se*7T}2W*_w3s4UkCs(Bv4wXh0BrAZ-7Oagj{UT*3>iJCa13p>om}Cev338dS zgq1S(&sFm67S~x(5!qB9@GXI{k?xcFJ_nhLUlAc6ADz~J619&*s28HePAB|mMzVW! zaJ+N)a|6Q_>W2r0Hn+r2KmDX0cFj+aNzg_KHl1VH*C9r{#OHGg6Y}#^EWD{5?j4=b z&5{D!ygWWR+Iziw#&7jd)Z3HVoBC<}=#XDqW8>G)DJh$&FIml%s{dlAzJK(lc0w;l zQOg+OU~RmjgAH?MpDU+fmnD1Ec^W22nruK+4baK-8u~vWi>a1~ibXcPz{g@>#5b=Q*JQasW4f5qb zshyqt+<1MsS9?L_dQm@$)hwf@3+#;MMI-r5zhESEM=6ML{YE!P(IOn(RbTACK7G~L ztDo*X->>cQBmvSJZQw+Jm@7g88neBId1|~ksRJSHGqs*Jj$SYvZEO!Z#L;7SoAeaT zal3JW7V2Kfc<5=AombL)pX-=%In=rY81kXSLn42F-?B zMCCEmWp-cHc7L#2f+Id`MGcwx5X-%&onYd@liC3gs2&X9CAex_qOOcvO{wty&d=QD zX|7~6oKP@*9}ODsVY3{5q+y)?P(N<`fVT)g=`y|GVWaZ9d9 zRt+4JHlQ}N5cg$u+FDm!zURPN!1v%?t$^#TEG-oBq#u7g^z$0MM5iKRH5m%KI|De- z_?i6a#T5u0r+BHB*xbIelH!|`Ui{-KxQJl~jaQ<+i;JI-QGz73Q{O8>#m@2Zei1IL z>V7VM@OuBO{`~c+JDyj^H5ZHxpy{Ii@g3?&3P5=C#^3YHlcU$ijpskpqMyKJ>jww5 zy*daFe%`(YlGG>|!{B%JU+;Js@Y)kEpIfVX86B?Nz1o|`{?X}aVLtBfXp!>Dh(w>bPL+Kg2MWB6{aHMISUm7o#|7iwd9?QAyPb&?>Y2ZF7nXz59oj5c*ERtRbP70bO}29^y>6YdF^d=?Ol=FG2?W22Y4H^ ztX<@z;lMtDEnt}aq3_}KLnn( zR^5bu*Wo*Hymk1=Sc*6o;7nM-X5X%@zpK7|2;?eGcitYJzWZ~H{B-9~yor+G2o8q- zCQ~JG%E!r69Cw2u-qy`LZdjo|J+2mWaZAGZldRp-9-KSGPLc#yGmm!v=w*Eu_Uv(t zd!~)|*j}46uSBl>aznh>{Y2mC>uQ90sZaXl>CUP7LGS)#OY#&Bd7-3C+FEEmZmd@) zugCq`i!(f46k-UQ`$U7@i_-U>UhKlr{)a!=_z$BV-V`GmP{UeubfZ!Q1I2|LCSP?G z&URw(%i)LwqJWom``C0A57DMCOvr!$!@PXARxD;f(zPH=@ik6)W(`+mFe zaP#py1wc+y__|LjVd(EC%4BfOlgG*4&Mu$EvO2wWG3ZbzUYZ45MVrNpI%x&XF-Jk& z%XOE;M%Bf130o|SdcTbjh7*Xt7|-?7JM{X{ySI0E3)ubF-rie~#CMkeSni=mClxJw z!7$h(6H##(4$)XDbrmlt>zG35*;}Af*gGuZsF@aK;Ucvc8`ZU9Jw{=l|Kf_*kSns& zPYrE~RdKq$L%Zqei=By^=@`ID+~6l@?h`b1>l^3|$pH=JY6rU+8o289aAAG~H0&Mx z1pmG{*ug)?@nx7C1Rsm=04)^}#m@ls*-8DUYfRB2cZT*}?uy<0os%d!IuyGe8FLnTD zd_Pb>JS%%yFw6&rYC5Uc<>iH!TA-AR;d=i=lnw(#>+yc=r`cy)HZT!|Gm*ij3*=A3 zB<$6Xihz@^i`3Nkc4sh{fj7ZFuwYJi@#q&}KxY(m!UQCo-MBY^brkl8RE7(>I{7f@ zi-YFNsNauL{T{XQDZFX)njL!cj}|n8_6=0TKQ7b^)%Fk13I=9i5pUw|HLzSPZYnjv zp2R@0wt0WQXq6r8ZQKbR9zOhH^lLOsM=l%QrE9MyiXck;AkKn8p)m5|v}iqAElofy z-=Sx=#IxGT;p@{00{x5E|E!;#zAk`3w$a%8sr2g8{-=XaaJ>A4D$p-~qO8txqI?mZ zC*khSnK*q?tevgBJ~`Sydb#_lHcI0CxYI1s(!SVT->k0BBmhZVuhZqhhC0$e9HT6r zfcUrT8xP?qRUjMvQFvD4e56J=P8~jJgpZyS4{*FvDYFb;MZ=(Z5&17x4}#(FA_`J* zGHS)$!G(Rf+LP~A5`OoOi&n~v++NVHPmh=1RKzP7_nU)?cyoG8|A?1sKS?amub*u7 z&8m2HEPgsJq{UbDvz^^n^)Xik|2jIZ9Tprz{6x5Oa4NGQky8%-9Cy7aK`1;3y_oHS z@e9kwul78nT~}m?bF(&u`fTEufv{i9asys}e&8p&S3$oIaGZqj8@4)|>MnvL{6{)U z!^|eX(;oJbP43HN~C(Ywhv+`tqYY^^f;} z3J6{^2p*%|8;{_JcgXc3cY{qT;LE!DvZ1~_q%Y6ocnH6)hxSKzX!q0fLy6>vn})a_ zo3Gzplg=Nm-yz&j=bMVEH`mtXm-UC&!|@$advUyby7A=EwaE6#+TAg^fNa0plzc+5 z=ZBBw7dUBM6WMorVF6Qqay_p5WNq^fqh5?|D(PZ#O?{El1u%=p*TwdeJ8XNfeHaeu z4)2PUI%4+%Pf}erZQeCmt?Qf|r*ULGpfr!gdVm*Vn3>H&faaDF+@Y2KeZjd&}d^>SlFD zll8B2+v<$-$z24!(YICpi!kK&ZQGv7Ss zd3(_f(hK$M$;0aEoA1Ub2FH%@;SDM5D@-EUY0J6X+d176wcQ^Iy<&<7d%C*uoz*}A zGow=c&gV$hhXK)7xpzprJJI~XjLm<8NC!1@_dnaqxksD=GpRkQT zi@lXLAOXN7Ur|^3Xkx7*ILsFqkUUQ!n8qI{WZuWlXye?x5%Ya8)oIaDY4o$u2#p`DOq#Bu~FR+hi}mAYWA7N%5TNH2VCF3gr)-n z@iQKZVg%W}|3PjXV{O7Fu|0YJ2&d(p!N9piWKugiJli>z(qa*L${@rq!#L@L4u$sU zP3Ip#o55f(!M5qJ23-|;ki3>QmNT5vzP@Z(92uc@XaXZl;pba0aWoqa@iMwWh(`;b zXm};f!^ck;&o-TW#V`zd&Ybl-%VA0;Udt+o&9W6TXS%s8@nnA5KdpbN9lop`){lxd zkow_^g`m@lUn#@c!jB@?Fg_@Cm(AblT&mr?WI&YTW@UAfe6rkg?4XOU13 zy9rR;HMWNJhn^8)?1kkQyMm&G41%T(8nI;>6TgkZQHaqZ28oQqVPWD71A24NDGVi< zhC$M#sN*UldPStM7<931iWL#GF*@yn9sOY;i;p=o;4u*({w3EF^GYKz->UtkX4D@; zm~p?c$j?C&qig>F;|4OlaI8hH=-oep?o}GbdE=zrql444;-Cv4u-0I7MFxgkd0OMb z$p(>!wTw;r!SZ;k)5F3T2ehqItbnh&Nl&@&9wkAutE_kQYB-L%-5?=13fS1WjCgTc zwC+z6;9ehs6l6pY#)E$3to>BJT}kNOKVoXmCnkQ3;zCE(e=$r&D}d_$L1)z$g~k~F zV$>B{#wo;pZNTY-J;H1%@~C+hzPD%M`T80hg`Tgk)4$Ts`uTdXP3q~{4+VpK-VIve z?y#HO?XLOVReZPh_)$gdtv%kLf1kj=g!(-~{hmVo-nCGVhLeM!yGRJQS~hTbISg8j|tG#v1)g-#6E!m-yydp?2l;b)j<~kaMlo z3B|@NDxOE1Pq@=ZkH@T|;!e+gz!n-<`)*MF9)40&)pjy}Z04Zj-V zIR*-Pp2RUn7tq%g@c8^61FD!;K%4|oF?}A_-yEH76kzUTr~b0$gciEpo3z95=tW0sn{n*OyO^}&9YYf|3SAa*S$}c2&8O`%k?9179^c;=%O<7vJjv9^`qsZ zlb4?`zhe?8dD^qbXIbNDff-|Exq|#+hFA1{ZPv zx+7J$#~7UJ&pKGOQ@~!XHZym+$z)(`K)K`BCq+tkQ+cYRsB-Zg1(#vuf^pOggFd_2 zZxlLwzTWw24p^-DG)QqJ!%C*&&Iw5 zl4L*bi=TraiS)j{B?5eU^^ZtZ&2R18>hrj8!#I3VKdkTV6h*br^{-3m8BH+$y zFYATT$xHuNdtP5Iz1aO!r)Z8Wq3qXR?C+euD*tJ&hb9LqsP`xg=_-hvX^@HFUYmGR z_LI4{%~`Yjbh`Zf)=l(g9Bd}i&*{$D&hrq6n~as=dtA6(j2#=*{c{cN@bnA@_4*K# zLl+H+rnu0K5EjtU=_hDs(*#rbQ<8A@{PDU2^i%!l zthW2=6a2-73$0B~ZzKF{)aj1Ic{lj?q&SyTgY|O%wJ?@sH;Q3*5On&{5VLUI4s5!; zo4_Wg{Y?aQ`{E$%#mQAB=L7o~kc-H87WSrov|k?=e~_;G|8@)J2*sc+3nX>S2vwXb zX(}+Ooxj4u)wk`(;_+nnma&81Jv!X2otz!nb{RJ!tK%f@p(oTCka0im#+?jpu`*#i z#IlW|0~faNCsS42Y$D%;=_IB)0VU8t5k|1>zYIdm;U`Xp2_T`6j%qO<6fx<_n?hHZ zf7M?U9c5Iqpg+r)Ps5-S4DE$u?vD$^aNu11a5#Z-pbc!InE62yx3JZntkyon-4Vs) zzX?Fp&Yxsv)U{2Tj*_s2`@~H~_OHEHf0A*j+*QqH*u_QUQq^G?p9X`$MO2(wW5)_$ zm^-+b>bJ0+)DKUOU!S-D?vStkD*V9<;g^NSW3F2yO6`7iTQfPN+R=Un;jj1i3&w!2 zyzt8x&@5(d#{9);I2;WcCJh|f-wG3|kpf%grU?!Bc@2RUu`FySS`ib<8e42Y(+tfG?lt=Qy9aNVexc&;QYB zdvEPCQ~u|R>-8}{|8upv_AsCS`O)LYcln>c!spwl-G@aY8n1plLzQ3S)%>^c8?C*q zN5xB0SZmVFG_GqSGx(#2dG{&!Ott=DBM6hEfvGyLlLLPI`hWQF(Z*VK{jYE0-`gK< z{_|hH{yBwuX}3%nt`oX~;5#W>bl;7W!HQU~u05`Z9T4D8up9;trL>$al|I~|6MTT? zJ19c0tyE=^`jLPlz%OJLb4vf3Vg^`{37T|rgqKKl0>u=(;tM~Z+O7>pMwv}qHnlSv zUc^Z$EpLgJqo6PTIqH9e&N>9A_`Ud5op!`dJxNF@(_3N$ z%rKz@vM-PKHTdflL20|ML^nX+9{GGlB?_0h>AxTKVJNMYi)Yre!SDhGnt7N;oqo`D zpS7F)VdhbKm97#pb5EnVnJrA-x~uIp`}91BV)q$LKtIm6+3N*;Pycj#h0o241?KrH z7Yo+29;x2kXVMfa%{-0!?Wp5EWBD!hK5RgD?u%CVp$AfVm}DQHk239c|7Tu9UgO~PS?wnvxB6LqXCH8LvYl-Pi73|!KD1f^;@|T& zf`X`9Ga2>!=(|bhz)U)EAJHx0mvmdrH4|DYmf#CK#kq?6FiybI9CF!@rcopx(L^)M zZX@cqySNE9qPSEm}NN{W=Vq z7mc(V4@pHw0OZjx-J`Ojc16~&sN!V{pKDMTYQXubq>EQg$!+e@ zW^F6O4~-OPnROq&w|)IuBc^I&g($BTPJ@fOAndF5(H8vZaQ|oV3BGa!sIsrF zX?GsmakdFmEbi>@AMKWKRB<~qEoHHkl@C-G-(;J@t~&8BCV9Hi?8a%RFhf!#162{v z_kVbP`hPELXBBZzksg6cDzbug3EU7@Cfb;u<3_+V4g{byZ(?(eEq4f43dN{dGcyK7 zSi?r}tG+eZKx&Oai#hQeo(@V8O|ysqybKoL;e!VfVjN(OymN?tAR@ig)GB4ZM7{G8 zaTI{KrugyJl<>@>;4mF5fEqJkX#d4Yt(Gf@h4f@XA^OYnXmi3f&w>X!imzr`o6cJL zW*|O&5?&hPPH~mycSza?zXYxd@nf&IXT08AEPb9ND~P3_3nbmhKBrBaFjI^;TGBAk zV%(P9g~baKVgTEm92$^jSOfvVChowLw;ocG%}=lW<*VQf62Y-JMZ$s zr+G)rae2)m%0Z4OiQaQqoXtQeMeT=7qKyuN17y zR0PWe5f`5GGGHu1TjHF5Dd_i~t^RT-$G7&XV9lOH@`s>13h{S!ON4!roW;=(_+V{| z1cOwZhs|J=h9YjG5Emx>pv$LwEVb?_6@J7cKgerA7cqB5+AvEDl>Ip4fzye-y3OoN z!%&?WLTLl02hVcW6yZAco`+;XXIhADYSD~m$n9j*_jjXcSIR9@Rbt=@_7pF(Sd*N; zIk<8-zlMFx4&d;2uF%8dS1(995lk&3hkyurgKntQ2}S&TY!g}4gOt1T$ACfE73-o{ z%~Ng#`Vmh!vKgj1cAD8Wo$yqs)ojkJ0Gh8NpthU?q;NX*=~(Z#ttiDiu|@&{49;!H zG$o_&ko`QWmWig}7>nOoqfJV0{7DlAYm2_eq8Gg9xOem$Mj?8@XHZ=oVMp^Ss#I1w z-;k$f>ax}29v5--BA?>(Gpt-Cn47tUQ)`fBR>$1i~jOq;cHGzi{$SBfOCu#$29z;L;2!$@AUd z3J#j|K;w^l1jhBAN5iL)3{ux6QWgJHNQG7j7{=xVWLjqkmpHekq`QJGM4cPVio(N* ze>=&a5iG45m1CniDvonHo?R&E2q_xK&Gi$C!=5(_o8Nl^jY`33cRv-`ZRwq zCe}Q~8Y@}>hD3ijv^41x54iNO?p z2*vk6cH_&sT(=dE5D5rK*kU#hO;q7gn}u8swd$fgc)c-CD?2N(F_xGxZ^#h zoscMz#$5L@ryynrD^8H#zn*Vf7Qg zVyUsH4B3tqyw>_!*mE=(^5nhkp~p>0k5o@yk;8DKK9b!a375UwdWNl4&6+7?I~B`f z0;FZ}EVIW=VoMY7BQ*uLj3FSg>);3_`LPo@o*bS%Exgv1W`-f&2ah`z>60GqB2d0; z(Cx=w!96gx5q8sXQgtSW%oPFd-51eNL8#b2tsqwt7)&Pz+(ZhfD!dPTn`Xg|vaSiC z8Dr)e0yhkj?iFq+1G6gVlpsr4yUD#ra@8tgjG7W7!CKUbCW8PFbIIKYCP!UQ!w1(KnTO0SV zM8tmj3V511X`=oR*XWwmXcYyPgnE({b24zo0t8y$8{Os^I zl+a}_c-|^(khIr>v1eXY#2gyE_pHeO;LHh9ZFatcRx6qQ?nUXfinSJW--SG6nNAW? z(}9O-Z=HxvfrW?3Y0i%M3+13mQeGoSull6rB5aK_klqeygqh*9@h@{fNZv`7UV6a{pfRM zb_a2{Ya>dH)-f!p6yGw9*+lV21x~B&w%ko~=Wqm(WGIG)$WPNw%V`>rj?YgjG*dU0=}a-w+W+Sh{4%& zZ>(lq5qq(Kg=XoVlnNHk%VU*}2G9D4CGOp`l^{m?eWteHA{@OB!vSr-C_SOPWE8>I zQT&eIb2EbQ^lIa5DZd;w;ozr+EPJu(0HvjA2Q2ab73dc=C!~^$lL0D>u(irmR4fmw z#N9Qgi3cTzi{QppD02*oH*vP!!s|1<%T&8~p|KpA4do3Blcv7&S5{+w>ojE9_wL~U z3+>zV3D2_D6-!Z^zFm6x?D^@z3MXC6~X*zs+!mNt5k1AeH$AeM;Uv&Y~$R z-w%_k#t`tsR&A0PinwBygqMc6>RcX~weZi&_qcq}>1mGs-IhlFv@YG#jD9ta*=j~Q z?=E(mN{1fCIE8rsEOV7H3#%?*T)}yq45io=_toOlX5OqqiPU^3&WPPq-vPvgF}<9~ z(rFxzSJlYDwf8;7cN;Jv-?%fxdAwL{+XLAP;4NKNmJQo zea_C)jJ_h7xg)nnivyscax$9@be=_xVH5cJShyD z#2|p?7l^+kQ-E#GFb3y1ncNRb0tePOLD8ZiQkCgKc(=) z@-w=+dTI-*W$|~VM8gb$N=ujHRdNV=;m}wJ%2Ez$`Zk=Nhq>aTK706hmr$(h%dwuq z#q}$(5F|adlAb>0QNyqJ{8w3@d6#d>>Ac0bp{Ax_M;5bXsouw*q|3FD-{r)R*dw_n z5=5Fk=6ShP`Zj}{chK(1$;Mjgv_gQsSeVA>a>ga&Js8T1ts;ucyHe*jVZYR4UfDW$ z*12=1(;DbzH*cw2k)_#HGe|mwU2lV>jHB#Q8J(w#TMj=)!?2ZUS>2JNyNCaZoK*yw zHkVv7MuiYPZUw`D=^^T%)hpRmNj{ibP7V6DqKq|)wArqIs_`no=N_-s2|95ezix$K zY)9QL4ITc$mf=w=)K4nnwEpt->B%}3?;+OV%w9U!-EY9UKY=ALJ_-Ew;`Q0#DLFJsgvx<~tzt!?yO$Ef?blBoRwRGh@#%&wcuBG8R+k6{R4G$ZsYcuu%V-HZ zgo6wFt)nGKAXTLpR}fWC!$6%Oj&5^lrOjft54mY|&WrkOSkPG2A z<-nXGXS(mlNiXP%W|TBXJzy@FwY4HfDT~6eexmjjx7Lr(F(o0q zqUzWuhHZ#~ZuD=Ag#=tzU^we2Ojn%Qrj>AfR6jjBToZsC-Y3hV`mtJFqyLwEW!JN1 z*XjRy_@@yXJqR)=y@Kxh?-dmE0<+~%dMLHvPh&%=+916>>Z2iXKNY2gM&skhj|*kO zD2%c_>caXD`&hRZ^rOM3%O+aP6tJfhjV{@%Ea;0AUZQC$ss)i0h7iMu@Ywr<6|gl7%Y8ZIuN3g{gd82(y*hH&eJC*(syyMFk~ z{AVH0>W0SZutOxsll$SNV7$RZT!taAx67EOv5(v#4Vxn}bF>zK4%>=$bLb0+$|p^D zM5uaBRiOSY;|7xBO;8e1ihvYCZTWK_!V>qM~kJ=AoK;TR>?PimquwJ^6#;` zu>}wmI?du2jY4P^uR6j@jcNR&9?3#XG;{dJDt0NOe-OG93lb60qnJ3avy#b_7x(ee+YwenPZg4Z>#BM&SZmSh1&&YYsfPh6Q;t0VEmU5Y|SGT#TWc9W3TK(Tw{nK6mA)N9EPD7eKJhL1pG;kn!_OZ z-Au+HjqH}t$Rx?%?dUUmWQ7W2(|g$!^4ebTUUAaga>Q!1>5^G@(7X`jX8gym|5oV3 zmf(SVUicTbf6e03&d?ra<6M@mL#ad^$>($!BLbs`WJ@eUo_-nO0&%Wod0qZ69)?Vh zjSxhlE7a3-yRA562LP#rgTaJ)4M*s`brH&<5ls;KllMv9!Tmx;(-=>2e)LhJHd$dY zdZ)?GXN;po}E#M`yWpn-9 zsCzN&sLKwhaX&P}B`${&6Ro-XDJ^IkGZxvh=m3M$U@Bq5=*J^$ce^0EPLHA@zD)z; zTZ>!67WXv{Wz0#IDNaR-9G4_!$?)l@3-2=+pm%tR4*e?xnZIe=GgLho$*;^Fj+%S? zwVk)8vUzzr=tj*@o?pkJa*Rahd#Raz{#83lQsh|%)7!pcn2K4K;@x6?j_QuxL#PB6 z#rk=n(b|EqKyDftAux}4jX{z)oyIa`jS`BQJfM!1%)Ab|K{K?(9I3M4flp?Ka#F6r z0qEY-q8R*2_UP_(8#*2@_Hl8=2waR*SSBGXoQLF>&H~pTfU0RY!B}1}Gv0i1UJh?^ zTXpf4*-cZHZn4`)Dj8P300yN}M>6jrH_r(_3?!{-P+hQ3-w@SwJv=3m&Sm#_YC>6r z70~Z>C*upvMUCY7w%!Ful$Q%=<@P2^k9_Qm`S|xu<}0%}rk^jC7M3ZBw$bs*n1E4g zojA2F`d$unsi+*MkG`%Jnup7ky{c%VnKa|^X?0omJWlcJA_g!(&PQ|0bJ38sb`;Jc zFf=-d(;|#u{6|#hB88y|2}ht(C?e{e(*hYH`wE3H!+f1FDNr!Lzno$m4q0@W(l&%V<)k4 z%-HdL(b&_V9TtooUvcoB6cr3`gbBJhWAxHuZP!Ige`{_|9>&Jj9RmHtNr3b;guk8e zMkvKmF-rTBDGCbN1T=;_^fN_^@J)EjBAhS^nC(O#P@N8Z)x|7djopyOZf~1#2V>|{ zZw9zWyGXUR7Z<VY%N#edc5q5 z5kZa_&O`)b)>Z{;lgH2O>+(7TB-yXkS-+sG{)`MDOG^{Ez#UcDnDbMY(4U)dnu=~> zE<5{Ea*^!`lqRP5Oizd|Ama%UZ6*B7jL1k|RxsV2haH%sK8fV9^*rpi`01a8CJ}D# z!2(%XqNo#xJPOCqJnQ6J3D^9#6zraRR4wspy(4({3V1%fom& zN}h$5XJM)qRwpvmJL>)_)a_-_1ynwfx~F2%lc;+fm;UP1J&sdbcI2!g{9_Err?dY? zyZ&n=ewUv~{vT_b)tvqJ+M`Ez_TOLO<8j__e3U7>uQVDJ#+jHohVdd4OEL{Gdk;Ef!wEx#tf+5O8saY25)#|3$y+|VTwuIBbn;?mQ8$|^LpNIWl15E#O5G4PG zqtpASB2L2AMKCO=@Xt~Ie$>2(#9`bUC9p0JYrA~XupPUi7#WT82xv0*EJ!-pXGzr0 zKD$bhgq>$}S%|F6NI)Q*$H`UJrL{vsky@BL`}LQHrEZ9^e#)X$!ms5ArL?@fR$hfa zOYmRWIDf>Q0M;xVVo@jpUMu#GUhX}A=_X|!^>E!%Ns$ZS121}M2R&xe4%v6boz{5= zxJ)Zdl8RXPrT-K@=wcJ7)Ib>J7eukeL4}Tm`lrB>zw{|&Q8$nwFe?JTh8(IS+xRD{ zi=R(qQAXbeNfdtqXrQIC4o8PDnrJc#=rXoV_IQdXmGSvEPpMNh)7X}WDXtIys(Y`w zJTNc<{x3o>7E>IG-EPIyXA2MdiQrbWH`qOTmJZo@|HfU++`}(@M%!n}l$}tck_gyn zhoW$CCiLI4?JR`kiD;MSW?^34X&|D?W+!%EmrXXyZs1F2M`_x>7Y92(H4aW+HcspR zSHog5d;4DP#m?*fv&POzZHL~m6`~|B;Uu!xK}z&{HmRY!wcWrI>_jHMw#ZfHy)LV6 z*aDTKiAz!zOkWJZ11c_Gk_y{;D<6}opYxcXpO4yYGXfg{vRMb2F!2s9xxO<(HR|oL zgSH}c$WS)WIvX@Gkqwf#lLWm6$03}GP;4TJ2Vozhbhym`Vu3p~_I7FqM~8YGHjVKd zW=X^eByO@d=Q&y)2l@#i$~-UuK}@4K21?;>wP<%l5pbvg4$TU2?lzHxnCHfWM-G^1 z)t?*w8%b|^gjsW?vft1mX8vG1%ZhdnDEULsU|Tm68=E$k_GJr)f+Z0zZ*97Jw_UI^ zeIhza07?XvKV`eP&0MeaQL@S90Lhtl*b1tuxH);1aS zvp7<5)AJ+BqAknxX>jrTigZ;*QLe*wxi})Jm*?Gl)!q0omfOVDZ6p)WdP#$pTJH4`{he5Un>oNOb^ z&vJ;Yx)n-REf38!T%Q1*Qhe585jS6>MXnsV8rXx6Vf#yGIkZDsj;O}_2eRu7I|j%L zSTXUsB1TEAw%GB6=!V*HiKj)b8A-DuuqC>tRuY&dcRpFh#PCrvp3$*PfC_zXLlN((pv(;O71W=hs-TEOf$-Zgcn zwg1omOs)UBzWRTX{(o&_b0e?++qjGW_BB3A|BnY5qy6V!`e*KlFJP{oJk;-(*v=o6(H8mZPeeyyxUPXRN{ToNmo`@%Azd~0@k~4zs0v@Xb>|V zPtgX(GO=Tm7*&kTG?BSpaQ1;TOsMp>`c7SQIC>X(sG|+fRF->`{3V4a z`AZ4A@+ZKhx?z^j-N@*AUL~WgEl^w?1HE@Lx`J*0sd~HMq^z5e5%aEd$lWfIx$Iuu zeNMem5*^M<=9Nd;;9PkSE&oNM^L_cxwEVxJZvU=v4>W=QZ?3I-;(u=3-T!`#&usTU zw{=J3xsS1Kmz{#EyiWb;{_7~f*;$tSL#X|3j9WQtlMKs zgdhAxDB!dzfj_ph+W+5F2;%L`i$)L51VJZE8v|r)SioYLXty|%rjhl!-hjz;-1;Do z3EZBgUvpE<`7Y@-hU9&c+9mRB`R~K+`h`764681($dR`J4&KuUwy&2=qSXez>-usS?VUejXF(fiAVPN)SE{_ ztpPl2tHWkEG;#73eNH(ynxZpvG6vz(C3Yyj=-?idKF&?3Fd1gGI1JzzW8Oz)obWIo zOx{pfMPwTt8lU-lUf;$4bOENTU!lV}zlf%rHBdpuS80$Krh+=e9WI+owm{q(gRlVvwp~k`5 zYb)v#N~5@h!bGXTF>eWHolprbGl>o)7J$)VP6G=m60~tWGup9Jn~vR1{Wn`Gh&_w# znlEMMiC$BjIC$Zoo&rWrH61KY$Hl$06%UF*^pH|Km;h=q*QwsxPA~kl^{uI2Rqn~$n@>;Ef!SpRbj3vWyLw;k{`WH0E$ zDTSh&wv(V2UdGA$6%G=lf6Fk$7-j{VaXxLdBMJIf>RPi4rx6uu=nZF);4c4GZ*2)h zVwDeKZ3X_fMp~%V>c(nyO;p#m*4MYzHbl@2(lqRg+Q)(Tn`~=mG`xtDl-t_rh984| zD+$Fem8^*GWu1R?F{j1yhjb-QI?r;@{xj%{S8*4;^Ey!J*P#Co%$U`@Sm}quXR<5j zLzs{TVTgxTgr>*mAWOBBxyD622vwvcj`n%30^wJ3?LkfPWBu&a(d#p@bNI9Pap&Y@ z=kV<3ZF0=SWECOB20-V|-k^(-+AcA}Y#$@}wsXxL)J}F^LH(WQ_5J$U&loi6Mg8os zc6usa9G!?AalCVKR^NTSzjGpvU!NQwoz_-zjhu#jFaPrJwRlN^^Sk1Bbl#1cD%%Ie z1L$G2>Q;zX89Gq=SX`mbUZin*2qOr$F`fWjh5(sBX1^z)K_W#N@3&UtB-dImZeb1u zC}1*;z=@%kDzDaJaC2>8Y7#7wUI0GNuc-P9gzi*ACtk$R3%Sy6i!dTTUYP_X*VwuO zK=xKate0T=DPTf8z(&fnCc44Uw4+dFX<>Is3%j;Vs@NHbdez>du}Cs>G^)1hl$U;P zwXY!cw!-sK2N4|-pdMelH+}V zuOBSSPcIDc#HM~ez!Kkxs(^oJLNM*DgY9p)#2S`3Vsk8aI#h{uEI}mKAHf>*l-R%$ zAUNOvGKFM`hgjk;9#ZhtXq0mHMH-SU@dQik2jq7i%J>Ry8{c7x9bGR62cbgaBlCG6 zk=E(P=YV^P(}q#jc&5%_F?=UVVsmX>lx>#W?gkyon4zYGQt&z1c1Zl&t37}HvN1o8 zQ-TlV-J;a`;nQttVFY5KzLUgcALd8Y4fWOK0JD3|jrw@l#+Z^ZhW3|s*!aDfj(TuZ z1U7X*dAhfe9xe3gyelT!qbe$I`~bgi*Eb)%GfH$_fHPxK3A~yn>uvI~e&^`b`y*uc z4O5!61$GH~f|*iz-gs73A|N{uC4g&8zkeR zstARDQkrmc=cBfqm`Lh67`>Ro3{U3p9-jZ3`y-2eWw?%-vA#4|r{Y-uW3U-)8k6}Y zDud}_v@sd#!eoIm)X*JCJu9WP&f-<3!GtcYnTg)5P&@?ELp%D)=)nW2=AsObSR&sf z#s$hg#Cr2{%=Sw8*<}|7Lk%=^7a~q4#7K4DNN)#;8225{7R6xhdfvh8;X65rx%cEh z_*5+`_Z==0gX1|L^2B#a&&iD7o=jZHs>KDK__vE2tu6TPowR&=*ll5e)x{LPZ?r5k zILVDLUwamNWE5JFM9SoeFk7|M5DBe)nnS5$CVawtG6~TN0RGY%4J1*K&FQTY{+z{d z=9Q<4G>ardNH#*BW_6&29Wd+?4_})7-7T2^&;`SE`Da-$v?=aI>7W~2i9lXM;A)8B z*Q?r3J1Bnlf+30%a6%ZsA;D})xK8HDaE9wif@IrnTsRb`M&Ing7=DG7Cl?jrLmJj< zM=+`&7RA~lL>bN!KY1WZYmYG9o_W8`#=CYg?JLL&Rv_g!;m?ByhTL_x(qBRUUS8hT zzhRmdR~~*83os0rzv{)D~1-5Pnf{<1Dc7L~sArNwGgY_cYlSVl_KF(Q z+-G6E*MnBC)dTHQGM6E>IiAMPGEg?WqYVRvzLIABK+ZGl81^n@b8jU_t>)jj{B$Bi9m`SuTytG528V0v z*(8~r5+=goF~cUA`OO=uA~xu9zd3I9(^EXbY~#Ghb7_q-hPT3D*d*R&d>+UMMUfhB z&+g!iHRpXf#YTsJ@OKM0Z&!(TR|6tx)Sow)9W7cuiVt!ZS)#{y^D&gxSgmbv^ zxU$)fx6T^XQKx3ElbK${YMd!<#!z9vdmAnb=>{dH-Z1CJ@0m^s+CTG{vIwe}r0Au+ z`Q;`=@jCx>_yj>48@rSw8Yaf@F{e9C2>0@HY4C!|7daWvm+8h zby8fkQIDnBT7i(rMly1Ybd0T?oE)7fXG0zwjrYs)zdslAd$^tDP+2}S?`#&|$jt%@ zeWZO$<86%ON$YF+g)~v}oFBt%9D&s3#74Q&&Z5?N<>Jk)mBYF7IjH zKBCp|TIOLzMRF8&IVNoqUy7*3TSS|Pzb)>;zO}gtU;8LN&Ra7kZBn#k(P&3#6Cx$# zpx+PK$VqEx$Znoss8%%BqaWu%i$_%5Hi9&M@$)XsI7{D~sJ$`I`b} zUPxZ~6r8+w#H@~AwRn;P*E&Kt<&~uKM4bT)7BwP;SbnBSLS)$-w~#e zX+OxW4XKnGi#d*l!1Vs#f;U%kG#i&^>jJ#?FmSQj!UXSO_70{SIE#ltS7Hapc78RK z31@LNwN_SEV4N+gj7J@-=Ao{mvh~`vR_vO6yWTq$FSoUN`v>Nb zYr|=Wxko`|XBB2EQ+4@H%ZNy~pFW8`{v$;U_@+u(a^ury;#l6Sr(xJjkx5+yA42EW zZ;-^W1@^=@-+ZGYP$@0WxOUEU1A)2QMI$eO-9)moZ?=@=;A(1Syy#-lb+QVlLjSJk zF1?EMHfpHqrWaPdTwY35p#UxrkH5I;hpqAdOlO~sZFAJIt}g9UgweXubV=@U8!DNc z-h~^@6&lCIWXzb^kH3ma_ypXKfhB{mjYp4vYx4PTJ{5nLI~9*rRXF}8ibB@WoZY@D z!<#wZUd_{HU9Vx~GM=Bfb7FH6~!YN z$s*hHP9z{B%mOAJKCxd?7~MW41S;95i4x|<`9<&krAFgLeZSUdluckVeD?Zq_pE+& z$j=+l#UYj{i?Z&5;>VuLj6>W7DeU0c?R0Qb<3XHPU>Mwi5)P@4TN}yg*~#APV+UE% zX70va%o~xHWl31y!fmnvqN;aWRVD&)O*bagFx|O&gp3AZ zLM!|*XJt4|-`@Km_8~)UNdYN08P>H5JSb;~aUh8iBSNt9cz|h@)mdN2s0&1O%9b4cvj?Yd?$7K<SpzEUjBc0m;d8yd_401ZrpE2oe`%GB;j8$0j%OBAkcw0?qc9& zGDAg~sdd#4dQmecRAKrV=}0mH5hw{UvT4{Ka>H1&30+YSg{KQedUU#|u56%i1t*Km zRXAr<*SFT6Y*oh{F65wQki+gy3wNi5FL+vT9Q1r~(846?$C-F%AHwD^PTU}7OHg7~H52M-{r_r)l+d9-C9N35X~cVO%&h}P1+Q&vKkJmC z@Xfv%Fd_|rJal@%0BRhadqJT$4mdBO#DT%OTUPgT-#C>G2=p5uwbxK7x9oH+d+kBT zL8~SD;U#r#BUl!5Ihi{!Nl0orRe14K)I1wfrqiREg)CW)=RHg**}l@@{^iK$oc7p!FyG~8Z-7DM+cJ-j?k?++ zM){AVH3-HF%FXsAa#+K0#gfiROwlRj^mEoCWVo^|9A z4?r5inIu$}3~bCSO?{y`%d+?W`}lm?@GdDGnp9<CZU(EEK5nYso|BT`WY-* zzO(i#GD~7-MnRA{!`4Xo-Jy}sdiyF zai2B|y&g5xpFUBKFp&Hbg%RafC<{3t=BQQr&3${#e(U`D{eG@EA;Vqd_Rj_0nf0Ql zFfC`7F>&OuIT}VELeYxx;3FhWFT-yP$cst(yA_-DDO|q?8hFFzDrL%6> z;TZwLeP><%qM4Ey=10=a5C3IuORENeR2f6^#LvYZ$aB|hBrmx|fFLfj4&Qj}%3IU!Ts7nLu01R9zpNgFSz1N5NjOlez*)T5#ti#Z*;v5kcPzaQ zGux2O6nxu=V(n@hh5^B}Z@I@c$)mUPa=X#|&6600>c0|RIg^MG20bOQlg*w^Fk|F~ zf!b}_AWo(w%e0T{m$j9)BXHw10(u(>*FZOf1mxFy0}IGC+x{FUhh)BzBX?Mkq+}y# zpTyKWl01n(HHOMi(AL{TI=7xVRPes5ZMOO0us5*xRw=B<{T4>!ufix;I}8Vc^uFi; zVIY|h(CpixuAF@^R?D_FP#e;6XIekC>Ey?-a&Q2a(V{o9l>(7{v0%_-V)`@e>gSD%i3-BjO z2p4Gmh}y~rYjmF#^DPubxnlcElE*wYdTlfysIcxZRS?%{bj?t)gmLd%OL54pw(!N2Hgm;qxH6| z-L-EMY`-OIVned$==&&FUzy4jC=&3JJ%J0YupNxL!*qefnktH8 z&iiu^lHa2nfhoW%!BeCWer$%cI@99Pt?)wxjHal++-raRqUu_kH>L$$MiwzRgiSDN z0jWw=pi(e7@>#)>N{5L(yT$uURgrEw%=r7|`5$jBlHtMs<)Xs-e6@!3;vskpc`mOR zX=_P#g~v|4jy?OMcqZc{*^oq?eoUu>@Z&HEl$8vex9}NhiAeU!Lnp?u<+ZZ4?iJ|v zy3d0C`~5tUqCQQS*0&b`BANP_4sB%l){!Noju**u6Pv}RlA%#4;DdyQGvi_9_WPJ((nJ^g>7nyUQ$;uW5(=%Syn3BeP z$Dh9j%5PuF&dpFEALMD8deu0HFA%6rcr-uiIbtH~fWA2XWqd~OEO+8w)`t7UVcV#`{! zqv!S_)2Eqdy7R)`%|Vw{n>M+R`sCam$}K+_dRYQ=?psPUlv(XkrZP-X!z?s>uy~GZ z=paqm)HMNoJf}Q;Iv~{2cua)V#L~_eUBiNRUZtgc33(&#_K={i zKsL|nbQQMAJ|Suue1)#=AK*z5xjZtjb^t@OkBK&WSF1o>FBBP!z>G;^lb3B0vJ6wx zBfxd3I>Rx$_9TW6n|5W4Ux`DPT1{l%XHWgKc5v$JG(Tq{& zoK`LFC7D;EbQXKKtLe;=+ThLJ84w!(zTjc}$iwaJLbFw@vHZ-K0%pau!&vVqCPL1F z=j1LmDNjL^8-)E5<7y#U&`e(`@N=iFc+_p7pn>%=>KXDVKsIA$K?}^J^ed4KblJB7 zphgr#MtH>hH_BwV0G1N1DD!HugPCJXgPx&X|~Y3;<0E})-G6J5X) zHoy~cKt&Rm5QV_w0M$fCbQOevos+zj?`Ehk37b|{Pm$*%oK8*)$w&>ueQJQGZxyU&Lg0| z0KwzF?XLM%h&o|Qu&N9yQ5mBeWY3YM_hmXVEI%``9ML8Y9qXT3Z}Gb4ZS+naF$suc z6V|{)G@v`cnOxRp^c|YXc}SlKag(wq*tDcQOf&*r*QW+bCafH|DEoa_)Cu>3vx%cN z*NJ-Ich=e-TgJF(Iq@E5cg&*U&xT+zlSAOVJc4@gE5uYNX6%w)26`;#2bsaMDp|2t zQ+C=&bh&=ZRd)(0_khRk2%jt03YfLbq>gu1GG(Q)aiNWPCV)qgA(lfa(;j*8dqbYk zWc93iQ(VWHXq)c-Z^t1eyL_eZ!X)ecKS7X<>CS(hK@3t3hQ7T{42bdPKMeJd&;S0g zdUyW&8lTl{{Hi9!uX^|X-*Jh?Ui+0_@1TE($){^ ze7sP>>|jP`^O3*&kd04>pS~XGz4rg#%4CW%^aW9kEUp(AGg8=a#w8WiMOT0qrF<=aOa?A zsnF_2$4C41-Jct;5BF*>l<|l=9oVXxkPLgKOR$z@IwI)8N+rjDS0tsQdz+dQbX&ly zEHiniY*Z>|Dyk+y7uB zr%i?E*}@La)ptS`7E+Q`XdG|=O~36VY{#g{OclB7z0JbddpKd!kd-g^U)Yv|Ut1dMnCn6OpHP54j06Xmsffzb;|Y>|QW% z$qy-RP)L!UvOePEZ^ce`Su)lE3Q)~JgJsa@ZbN>3N_kY^ZzO|Lp&u!shJ9k??82Hu)wxTa|S23M@5>~`z$Z@r=1b`$0 zip(&OPF8?xeOs^Rpk&>NLjlK~a817oS}m&zo_?^bQ+Qng(hf0Ex;FCWNnO=;G{91* zDO`(s7z1x(8Ye>LOSRd_17;`1`2AJm*GBNK@3LHkn2?_bF>t?TF3o9^9>9BNY2hH& zv(NaLtoIZG(z#nN#K(GBUP!wr(Mb9AoycYOlozN>mAI_jZKK5YxpY3or+DJDhWSIS zcHB7LIeT@ArSuEqjAJZt5S%TmB_<0PK&BO>p{*=feAml$I~sDyvTDvu}8beJK#Or+^)KMH+*YA_4s9@jt zo)0c|fS+5TxiMX8BhBj(k!>Vvh@w0@ftktxg@$ii4cR4z&+~sIK{&dQ$t=dn*NRnU zly&4)fm}2iu3I7v)2!cwTE5T9EQJ~l#S>h2!n~)RYB$F^a;|x@BrzJ-=GrD{)t*Jr zS-zYO&|4C5+IJpE*M=yE>K6 zHU{d-E;RHFSOa^aHqdPJh+F>2!2%uQsRZd1;TVKhk`OH4*P%r(hX1s|rY!HVLs zBxWr)Lt;cc7S)jI557+&xfThog;N(vOR|N0sqV-@(4u6OFSQ^zvUeu^f9qH3in+NmF6VRKO% zM18ttWupd_g+#TMy+0Bg>tv^e+eOf!C=SCU?sm~utr-l0^Qa4ZqO{)Xk9s1C6&)fg zbZ-qSaMG2Rd+=3V-oe+*<(&NlZ{6(QTKP#fbj3Hq(sm?wKPgI%#U7`ZkqSTsxmM#% zb%K^XjXM@8U?yq>vjqzz>TI!bS1W%83zoajO+M4{f4l|0cKVm`{2v(qqs@(+|Hnhv z6Ylu`m;V&l|6JGdCvWx*gwzT@^n$?v{V6hbLP3%>62D4U(P7$s+KQ4eYdSva19+{; z{p)-h4oL9#!&KHtQ`;HIhYhHZNw(4RrRDIY?@(@X;dB;Eyecz^JvjEv4`fVf3DuiQU?|6am>XYk+g{mAw9KT3Ko@HgWcW5v*0=Zv`4I zTlfA(SVlrM6si)37t*MGo+uk{&Nsb@| zWO9|Z(_0x!s~1fgNvpR^3q_S*e%6cn>}@s0h{z&xp>QNgeA8ikGwnDuB+lrUpHb`+ zj7~qPfh1m-a?r_T@rcQ*GEB!!AF`9?DB&-|cqloGERS0X*3m1I0%|{1Ss$!KEmYN9 zDX8$f$0tWGPim*9js4mowl_*(nNrzpS?bqpsbvlsr`CP6ylllsX*#JgnhFU&Ef@>V z5{LRNA*3iZz?P4Wal#Ju@!9I&*C{#>3oA4CK%Er8D;A?wB6LDMqkUUNr=VmPxV=j( zuUUC7RM0~Eb>Z}*dGt9*inp?Q2OZtq)2Ct?)iuv|c7JHp4-RU3^_{cYB$AGLy|5Jp z!_Zw9MeV*g+TTC=5j8@S8g9qkZhT30;PxFJw5?ih0A}7#YG%23#p#7)SIGAut?)9# zDx99*M&T&L?c_G5rysLE3II>&(&6xkl;w?++S$p^4MgiC1jOyOMuC{N;s1SIdp&XL zWKQ*qTIOvf#9vF%PVGLpIr!CP?42A{y)FFfD_u7i{YasbBxDj)j+BSdNHu^8J9P`*UIi^Fl*P7RA#j!X+6KrF+l5+HZ z?BfIMdT6ZEB3-HV0z}~!K#gzMT4lVBp<;zCblReDSHvur_Sul^qZxiJRa@6Tx z2kqW%%LDep@^UdG0qLc0H0#pwp7qI14omjC^j_cD#gJ0}tnHp{<&`9v9oCd>oSvN^ zmaQg~u0;Kj$cmKh$^j`u{`>n zu=4u;;W}3jGs{ln$S*sJi9*vwGwNQiV`c^eOkqM2V+Xk5%0--_mutq|!@oYa=zpvN z9Ism0QvYYkB-dT$DU7Dy54)MCX)}#bjB%fKNBv^8#`NsC5H;UetgaRpD|V2XWGWul4)^MZp4}pIQ?d#S9}P2kCang} z>Ib!>*Ax532IToai!6-vSo7?gnS0m}qw=!aGrvnsxbpm5tkz}K=Z)#_nl#tyWvTA; z40mW)U&z2Fuh{D^EOoc`MJ#w;dI z2Czl@c7E^09Yxf@>pJ>Ipho@TEd&0&6;Udq7lR@G-SICITVlERE_cvrq+ypG9A|*W zI=Jz@zGWVTRx`@G3O($(bq^9VyKIV$OE7{i0ktZ2&uIsthd+c9q(&SvE`SvWNR z=*UfLlv@1bCG!9{qCB613CLJZ77LN}_v)upHPDLEf)-|GVYkMGX1>iDf8NO4W4YH@ z`F=V4$`?B6$e1Q@4NM-mV@p-D^Y8MjowoLC(fY^7OY^X2%1<48oiTfHP*ygn&VPX#qMI%Pr|lt zR(poBE3voPDTtnEBEw0ji_6RY)M~S_d_*q{cToXACahzgn@Jc3UmAu1#u_Pr0V9fC z9|YejPN=*5GUn%hu63+n!c!)GU0!T$Ew+|%LC^biL?W*svK|eSpr6VXiTo@~%(DDx z%_9p)!d^TK8`umgffK83S`oT~aXi3kWDF}HlOn7AYq0|jPnPIzhb@@l-Y#G8EQss! z1x2q;puV@&ca*=qs z`(rm$>i@8kZ-p{ex;JvNlm0bYHsV984?iPs+m zC0+XxuG7LgM6^~Vs}8;5qA%`CWe!^Qs?t_b^@>aXFP2soIiAw$6_-B5(saY=2SeFs za_Iz1U&8q}L?y?Nt5~Izn9B|CvtLCz^tWmoTXKz4LI+ItL=<8nuG1#GNLxQ2UgRq- z{ZV1DptNl%#5FFkhBo1oRjeBN6&K&RFHgI1-weVk&ab#^RiRzl{!s<1to4d3tPy^+ zSzZqF<`tJ;$MV{WEf2eX#l<(UxNXvgHLT+HE3Wa7$V^*&#LFND@9$*QQleQDwxhVBOc%XdxuA5OGS}PO)O{^3 zE;fZ&Orc>u7t7{Umld~t>U_$kf9X#>hT9!Nb_6#Y0AF5AHHyyd4x^JDM<+87c`CqA z04VcQwh;=!gzK^!T!D0=a)0T#a7dQ21*B5>x-)R1aKcICLzoOpybg3-YZ=>l`qZvB zjNyEWraE(tEELo}XPD#8#oxvL&d*1$(U1&tD!!`i?A1=hmizSoY9~k7o*n0vnsSa> zG;WL%j|;Okyx<_|^tB==Ocq1YpfZB~b%PpM2vK)aRLa~+d4R=h9_~dvRmR+AZrltt zxluWlt9E(o5@~fwv|`K|&VWyYQXtbaA@!2~$B=jt98lCve}#;#b_;W{OevK})Z zciv;*D(h5)9k3KH9pgc|{7f#%624^q?F?0=NmKyxGGvcs3uqWBhHY_%A*lfyEgMr< zFU1;3TFoA%khDVhPQ&gs*VY7O^8-&GOcT99mL~{{C-lbf1X(kyX2`Gw({YA3WFab1 zXSc*4dYVC)^^r$G!6Gqmz~>9B727Lil1v2KdgOvFX;Sn39l?6v^sro!Mla&bW#U);T1w(>Si& zRu86|?sfb~gz-=$VU0;^+Lgy}%ceogGFyIy0*1B-eC1K*Z1p)+!qWWA^H(^1Q_kL0 zlQ(AG;o2%_>pf4!2xt%h>X|B92SmsA`JBF+m}YHV3;iLaJ_`u+8OX*5L!A z_VGir8LCKeO8^g1jESztQ_9n69V{s#4q4P|>S*N1LyXy(NXF5OZfg4Bw?F`YEkY`k z15wBI`AYtX@I+KVkPi;3Nw=Y3rD&}yG$n5Iv-jMV4U<~0rJ(i@tULQO<=sF6; zE5dE0%nCHo$Q}rWm~|rVT#c3dNQgjk`4A@On8WHyANGFp2%%=)L%M`#;4weha(aHi#PX%X!VmxCX^i$&Qq{hgz`__7F zMZ>aPcr0(WT>9rMoBX5jXqgVLy5VFplD<_~*kO-ze){TX6|YmOxJYwy9>-nL55ty< z`|uRi<+2O$OsrXH=B;=R$f__N!Qs)_tNP)~@r5W3w7X`H4;MKHr$nXRMw09zXh$1vd8{+D6q377RWOVOZPM72plLS zN{g3eT}&*tU^Un_rWmfiuP!{-G)asl|4C#)E6uPFOTPD$#jh3TLf$12eFH!VvWjlG z+?P9Bk=0zXZo>x>z@^fS#Kqe&YQyuFt zNlTlTZ$)OLX3{GI32^2B`lWAMT;?__NL3po;9>-mynG*r4bNS?Tp(-8vR+2u?{fA4 ziQz8BX}(?u^L$B0;zQ$L=NSDgj!&oR5SVR;ujLG;)%~wbbu0N8t4cGMKQ487FMp^` zg_NBt9#FwTVY2|-77Ffy=h{z!^z}ycD+X51q%@@7R7OK+ra8DO0f8=jT7Iw$e1uVS z{IXF8j(K>-dyr5uTCMW`uef}6ii{vcV=SNnlz%kj)_gFe%tV+3viU0|UT}&Aoy-)a zO2sP=BeLX7w{zMY!@ks(n4WVa=TG-ps#$73#jG1tj-vR_$@G$*`3S7Us5XMdCkwwA z^}xcg4w~y!_bWM;%niAvu%XC@;FyJj-9d5b&SPxb1vEG{fn znQFtVITX3MnXFxo&n4j3G#63I*}bBEE5wXxTmnm@(}Uj1kOWaSx>Ge9Exsg0aaLe!(lqpAQ?S#_S@+AeQuC+tRSkBO=?*weF}le0!` zzjiQ|0ZXo#X*)ky4?4MrH?@<~`VrreTQ3iG{t3%Zy|k-=)MVbwfUd9`_JC`|d5ObZW@J<~tnze#NHyg2vr)}4m7SB5ou6l$ z_UQ-hF1W}yX1Qw0*OUORJKAfolA@8?J+4)lRpz<0pFN}Z*sbv9=_C^=-WYB>%{j18 z#F>b3UhTldXXs|^7FN_P;bN*o?Tmw2kky&cAu8suDU^b5 zsn?|>XOF=2_w~ulT4z2w8^3wWj(qWnapV{|hmO0vvV0QfOjJ3~UM_=o`S|zOH268wgq&#rlRxr;nih~wguw- zrSBOP1ns8WY$Px%|d-<9Cl`1!{1rCCdT8XY?bqtrsUopGQxoc84Z6{U( zy02VU*`}vGkNh%}AxD0niX+ZNut^5P5F?`~fYTC#P!af_e|@R36@&51aPhrZ{Gczu zuq~X^=~mDTXOKA53J7ey&LD(vc_!iZb9^rGU5(S*vXpP(=cOS(Dy+ZZhm`S|%Me-i295J8x)LnuJv)@a&C7nnZT~Vf z!~HYzP(a|cFVy3xF9M*k zUJo;uVA~9PB|5<>GJZrvC1rUn>J%FzYNJL#H?#4G1zonA~TztlAXcA zl7;p7RuG#2R}4%pxs1|KZBU`OL_;oWMOJFZqdv4ToWK?5m@hK)Q?SC>&^9-YCFYo- zAB9;Qex82rZ00!4{CxhZ0+tDu^C3)RCyLwrn`ONW%1jO?PceXhSL> zLP#O;oXilh)*wy|vCYrHPco*b8yuntTMfEo%(C!ZiE)8-mQD9%W4Uj+no`RioWf&; zQ~J7~0x^9bg4A>MOk$YLyM$L1Tp}5Y9vOoNApVKzP=IVkVlh!z> z%U)u}#MGkPhVjQFdTxauz5+?>IN120^&d#utsB#J>klAqU!Q+4b#EC0Z>gj^>X*#9 zGY!q#d%hv|B*b9ZrI~mAF?61}D7I!FpL%ECXNo+fI#*y|Yr-zYGUEe;ME=6E&?DWl zHok8PHZj{w=pJ=)kHwI4#Tc-&vPUTRQe#{e;m2k;prnrW2xc8X=nMd9I|tJj90i7G z7eK0mFd1Hbow-uI{dFfxkKk+17AZYuo22W_5o?9M^5|}NlKzk(NXB>5DN=IIWUdFj z{fXyk;yA)7$3f?zYo4MtIM+Q!TL1UK+vH6Kk1hNaN3J%^n~h$z@+ZW=&Fpl> zt=DN*6*QAM*G;dI&lvYi9PG@q#;2lNp0n|@*7`Cdkte!8<4~?~1@kA;TzU?_EMZKz z{I+73%&>EZV|VWG58JsLMyk5?P26hxHum$--Ot0n&VC-=%B~h#`}s`<|26mX+Z?&s z&u=pNuf3nofPp_`KM$S#JiOb_)vW!e?B~-D<*&G(%LqCWQM_4?J95))P1gh=8*l17 z*`$s8Pr^a>Y8y=z#rY`e4ws|8>NiTov-Rrx=OXCB;%i-zvCXKTMjf{B8Jgfv8|#lB zJ<*QI)TXjhRfWEPDqeGNjh|N6^;3*`BqLf7IL(S!8urk9RRTsxL^dKw|!Z zk1aDUXol@%CadRHKGPKx5VpM zm$sLRe(+hkR^fW$HVs$vM)JlZ%P93#3)VE5aN=;;v6g|c84d1&X zu!1-cTVo)icNqelAwa_NdNo}f=?zu_#Obv-TWwUX2;GmofF=GO_ai`9*lN&Qbq`wX z7ns4K90MgorEQTf$TQ6nTBqK@DFalxB^F!1^v_4>l^x_S(=dRLHbx;xV89chXsP^n zv2d1*LW+v^BIu@;+t>6Pw`+1njyU6Pojr~v+08po{(JQkSTWuAttc_H3_n5?0`PhG z!92&Aq<^5NZMm^S0YsEu9wyWoz8NOlvt533kVwRpZ(R|gmKa6Yte$MEUYZZ>l|*j6rn7yt?Qi-X-cC*+><1RJ4w~QAD%Yqr$D+TS#kwL zke+i*pRZCx0u~K;i6CeGJOfKabaUKmLIzv0XrC$aT0SQoSC*|=<%#A80|{Y5mAjb# zTWV;$S2=p4_UeVK)~We~L;{v!XEIzDvPpA)if7|dU-L(4Rj$p25@Wq|-L7D948y{% zOoX^unlETQ)AsaR2b+A&d+2G_Jz#Zd9s@ZKTbQ_t`o*Zs7h!i0Ch0t$lqgQG6Dc)#~(qU{O<8jG~9er;9=i)^(tKbOtj zsIjq@op}{dg2P6;lh5%J^L^WsUlf5dC)ZiThR?X|&-4HDB|h4RXn7dN-E=u@KWcsV zHiG@~gxf8-Fi<&DJ z3-h{UhV4iLqs2?H7*S;8J+U|ti$k$^27-ZDj2C=0IYb`U)YZ6-zryaT+U^gv6Ssoy zCl-sl*=iVi7LS3iPbGwXvG_tP{;ya(q-se~g;QZFRK?<&SX>v28)EUHufpNZLCvlJ zfL;2^Q4m~N4#NdMT|5=-5YF@hq*c9@OH2F&+5nfb;6|(o8B^Z%tj%q-ZFOdMj_UGWt_l} zf`r9i7J9+2z!X2g<{riUUl#EASpn{h;rvOUlcl1*uT*g_7^sku^846wFc}hg5}ESW+?EM_1d{y*CanavK;V1+-RTcf;;-ZoWpxokNQJKpGWOBUQ9I6JB;szEQO$c)*^A<`96VnY+!;Uc25bI#_|>A4c(JDdN*8^*(++xV?9j3n(YZWK}v6#|h_w)wE) z=heg-xT=4p@JPZg37TrqY0;o15+m+(Fs4wB#KypfkvyHs#J{)?=Gnfg$R@>vp)n|C zHs#VCSG1v_-W!7j{}?BMVHJ-j6>na=w~C)lE>4PMRlYf?{1lT&6yntQ<;`J;!<3!V8$ ztgSz>NcHIDN$vEM+ghul(O4$)m{K&TtZ-T_ER%doRWId7lHW_}lDg~$NkoaT;k(Vz zM{hh5ZfhViIU2tPB$+UbEIaOV*ZgTpSSWI~q^+Nh<9o zoy=4!%C%cubGpoiN^9k5haN#=zKmj4W?;@GHmHaX`D|h;k(kaQhAG4{RiR!%o}ck~ zV_nFlE`K8MPT+DIj2?{uPfzwBOmP^AlMV`p)0=5HI>PI$nQ zzu!?JU&REB>w#?sWQ$xL0%ifNxCeT_M7gn~3_fcw2E+bd^n0A{n|Cr@enoYj@TOVJ zZ%=4%(Z*bBN+XUpkbkt={?=<&vS?*3pp9B+s%Ha*j2iUTQxqluaLs?Q3r32%p)Q$yibx&So`%; zK5dooO%e@Zk4aFTns+P|>DUAXl;*7D+Am5&Jo(ZD#1l?2X^5qP5wbNKm_))lgQYH0R%ZCpE~kE2KWmuDx;I#UMqxw9;0II2wUuGx znsj85k!Flp0$RIDs9bml1|b78STw3I4KFV%c+4}Mz>yLeZ_ow2u*gVgs1{pn)`(D( zjh5X?#=^j9aMVZLFIuFyO)pRr*cMio#z$QTEfQGPtQ#AMR+nsM>{s7d_E}a|=3NjO z;-O#=oN+Cp)n+QKQ1zHlfsbjKIkf{vv7|)B1Isp~*$sm}$N@xke&V1%m`~hJt7W|z zhCQMm8g)BP8f4zU-i&F`4okXz#Z;(>d-eja2o5?!E=GzjOhvXXDxz;y?7fM{C1@%< zL(!HgSb&lqKmpkLOH{#HS}G8@XH=ze&~rQ*nXp(Bm$U?g0?W{_WlP$03qz{HI|;+i$;(qVU11v)swNqT!#N~B^0F;$hO2Qc zt%1(*!Q1`%^M)QU8wF*|YT2kZH$hT42*jHX6UCSe4=ZWEwn1*X=Irr$aIVIy7OE~T zfv$)w)KmlIA?$iFT}fk33Z21(YEavDss`_+#<0_2Pu0r8v9*Nh&K{SyjL_TH3!33_ zHw;|RR>;x}lPY9U5~wn>Qf4=3;@U;KVuOQ|v;Dos;n9x<(RsF2;_0Eq^Y%s$ zkhQw$RnPEPfJrt*24(rN$dStz*0`=SEMbPE&?$Q_yMrWN18Yw28yP-hd4<3_k+EP6 zw=8lRAr7KYmuDc^y9F0{!j_Iy=XwBSqNaI^Dw^e8cp(X`xo5Mno4v4vs*;5-@prK% zwxqD*a6amanEIG*4E$KKpb_S?(=>u59WzTpa{;q-n`)&)hksUb9NaCRCe2KCif>x! z(3Xz)DPe%~7nog*L%355)?Qgsyg=?*Ns|^Xmn)J)Rh`fCrWQ31(Aeu!c>y}6nzSvV z9{`r+QA2(I?kE=vqhrpk%GBoB&%`ntZf1a?PUKJZR&zgvQ!1o{K=hn(=5;U{W|vM& z<|EBbls!WvV%XrgQBl z_q4T#ZQB|L+)>@WU`fTvmHSM2BufZz$Unf4`_4!ZE-^y4j=plUU1{?0j6DmmqW#x9 zb8`zpcN8qRZ+4FkPtV{L?JSvhdpl=4yGJKAc#T))%{U1&C29w|@G|T*GtXb`ox<~r zR+@c&+&KLa-wYb*W#(PIhHyk-7K)?8vz=pj6ZeO~AoK2I=Wy@n0A41*IOAUS?cNT8 zm$ZT`d_UIeFJGP2_Q=F%Zs9VFIu{@eP+lXq(q&%4cf%Pi=y$v-g4W z(BsFOMe-kg&&Yr4j~;IP&*tq9H~;xBm;Yv;|AXLth{5rv?_+}ezh2$U`F}m!s6M`v z|G&cL+xc(BZalb3P$(0n-LhDR#VU3$5|A+B0WkJAK@$HqiYns!rhd5cfgk<@)rRSZ z=1Mc}J)8e_UdhudE35E-MJX%rcz%BO#s1FAQ}ibOTM1<+{#_Q!^_3N1<)YpeSMdmU zZ4u)|O)tjGXU^^sbkkUj1|T1YMjg89ra@cToQKv=;Y|Gts?$hoi=sGeGu9K@#N0

UN)kxa~dwIXm+J#cTHw$kpxx5~tlqEJSCXf$;1;v4v&#jV%GYZ%BHENAvSRx4XsI zJ}uAByU5rQ^d+W0jbu3JtiK zX+q#UC~a3&8!I*ri=pZpfBh?#$3p#hd6{I`Z9K;OuN-bAjS*5I(YzuWi)hm94B%Vu@{wV*9&E3C5 zO*{})3m7OI<95^QUN0Vx(CTM!nZQ$Z4hMd<+iJyWijAu}Y6iyfsF(ENu!!m$RIhQw zFK$?(jKX%x)|aUj8m`qxQVER*Hlm0Id3Q3t8jK2Qaa;XIv#)*v#(wz$UpSxBb@h@Q z6n;#vF7V6W+aSzb^jO@H(PG9{-UU*ST7Y+={%O+3Y6$M@lY@0%1!^s=7Bh^pPxx5O zN=o~b7NqNtj~Eiw)bUw#dVX?p+&HW4FD)%q0%aO!C$FPdyY&Mqu^A}wx^}j^duq!( z4wQjLoDy3>SfcvTtK-Ju?pgi#Xldz*vE}gX7n*6rYPWY3aBg|&9d>?va#laA|5t7Q z{nFBoBA?Tb@y1{{PI|zW$e4%99UULJWo^;^pud(c4pP9;{>xvuQ2?jkzPL6o&yRNB z!iaWX9@MC%N#8`dGGz{4?ne8ylNxzBQ>m^{vW|nrO6swxf$l_&w|XG#LjCgm^)^Tm zK&?qz0V-1_@O!4x@vB$puf}x-oeqW+F)z;=yGN&W#A^NMHNh|j=`u}F6N5_oi+KDg zj{6cOZ>1!TS~=V!>W5-vj}t&Q>?4k7I%=s0JF5KoSx4V(;S+q|rb%%o&l_shHc;+V zP5l?jErpks@bE|F40y4&CH_&q;HdRp-$XB?mXbuIq~FPCm}Xyj!|x@$(xWdRULgYD z4-h9dDV~d{?vh+U*qGH~a=cV1ZtOqk!Y^1gN+&}~w8l~Wyk<1ce)Kcptp%5$Q+{Vh z(F<4@wJ8-nE@7{1-69T?$XlDB@fo{&pyr(hrO5e%-SL1g-cQgx4h99x8b&p|EHXtf z9-3wwh?>OtIewzW!tgSOQHzN@upYm{*~$V76arn}FK>QU@9wAX$sou;H)@qsZY97f zK*hBt`sZb|Ls(JohNHL>qov1tihH=?7+@gDh!F%1GX4zgIt5M?VI5Shir&~<_w&yo zTRiETZ=64EdEyvGaQry{4*o0fHTX)Vhl|8Xz=N^R{1(U=%^#Ap5>7Hmp2L zdh9@5I8G!jZ-8iZ;m?6sTT%ev=h&F!C;g{I*qSzFVJO24ayx6=MjQpElCBnogQJL{ zSxPa4fe>d6w%i&_y6yf$S`~Tbx@a#ROPt@2<;aRTGRqE&_U7zFUSE$xeHn}~619*r zrKc~hl`ON^Kl=#vzxs2_^Z$*Ef##h5%av!L^Z$4K|F`%U`yX1pj{T4P&YUw@znF>s z#wIUHEMCkFGXBhM;r810`?~#~@VVXkXEIn+2{?QGSDrn6_9VOhpOni_zOVmp@VOiP zACtp({of7sf8HZlar3<|yGbuW1z^_IG8weSUH>tlVthS}(`*A5m}i@{kDAvJ^7x zdTdpcr>{}itRL2n&pBS;8V!s&Akl^*HLL0Ybu}-Ud~sqrYQOgK{56II z&x9tU=Y>v5HP_eIDWZTI;}=f;Akk78IQ%Op_Lsjji?F|;K5AA&dJ7atk0~7;?Jr*=?#NJ(Z8bo^TU%jwSNQ#2v5xVjEc6sYFpc8{3%Q06TZ+>P?&Aa4%Nfipvz#~;DQY$**|KBJSIjUlm4oI%+bHL{> z!Pzlb&=a#zA(_1f9Y#`B#&GXAN66~*^r<+3MVOENjPuf7+7mxbw-1pN-ra*zkXHpj8hQ=4v~vS$NQul#syOT zyqPI;e0T^4@#w79IIJJ-!ub}w&GG(0C?GY@rkyl`ON%Xi@h4p26r=gi3 zI4C(qxO8q#B$Y)W1QY6gIz<10xiY{abllg)kd!9!BZ74qeZp)An?;?x2v+bCFr75U z6mxX^&Mba;i$Q~8)I;iqDe(k*Ksp89mERMPo16o|w2TT&w^)UXb*M+3(qMY=O;gF^Nk-RtsWS^ka&HeJ zc}G_$sKX|ODlC{8875`LqgBvUn=vYMo~NFZ5i_1ccF ztzK%lT&m0dWD0`c`Ma!_837ujtO(+H1V72+2>z}Q&@uP;q}Cv1C=l*`Evg^==Xt&H zi}s&{F$)FyFp_~WzNHR`(_@Q>3`~|Kco7yp8AnEDh%VyF(}F<_R$}vfY{PQu?1oiT zJP>~rc9eh{ca+GKutE5{4oHtjon|YJlJ?S$dU*O!UO*#5ypap{WeedV!*WjF^0NK8 zgK13?;QB~vOSFjh|M3de@2ke~A&3oc-ICNB4&AFRtqV%z6)eXk>Jz6|p7lOQyy6{T z=)DFn9JlZJ z=^fM>DMy8%-0LTCv$nem^){y`TC-Gq;eKY)6R%UjIw8Uf#IfNV4>TtkiKu`Zzvw;5 zsVJw{P0?^Z#?woavY$W&Y)zy;Y=mv=sUf_!Mq{q2{Al)Nqh?WyG8qH{SF_xRE-kUY zqb#Hxo*qC^cV)rPqPYffIAw>q49E`fFIRGECa%@w~h;Q-7H zd^))RP@s;}5)Fr6jN_iJs&9Cu2JGl2X_bDf zz~<4TNEZdcqb7HXA(6u-mlgIY7b|oRMbGid#<*Lp+@Ao)7{`>+PubReCYZhGH|v_> zv6Y>Q&PArPd=TqY)G6oO*V`5AtbBdXUvUUYH!#x%!Uj&jJ3NbQ0V^XiJb;%VH5TF2 zxP^_udE=xxYW4?7lMWMhPmxw$?5Ok8HAM6fjAAlJ_1EiRo_4R<)jv!?KWQ5&LX@f=1BPZMCE}7JCpE_p*zNVQy~madyoTes~(z;yE8t% zYWCFt&gjslO3)B3=_Gi#!5}k64)U{~@>CC14yzXQBL0DsD4^NSabV5CRExEbo-b>b zG;_F%4A$_rmHuGn_`W!iQuHd!S?S=Z4V8~Z9>UYusz`aH;#&APhRys5XEBoZGp8}c zF^<-Oh)!OpzsG%_lXsXiSoWm#c=P*7Yu-s~?x`wt6#GL?S~EBEo1B@DT;?B`az=rc zCgz-tj6LQQ%fIlE1kC_%C(#l4i$Dio+nG0(ugwwZaK*y!r(4n3lLr0}=}s-Wx!+E* zo4#f14V$J zEmB!w2#uiIS&1qjGO%QUQUeMJ^!J}3ImzpHs*E&+!)$9IX@w*vBPCIENA)Se_%;|* zfiyC@D2W~GMrLyC2QwX`x#7?7YAA|19K zd)5$C@br9duXcKh{G{x^@pagq$5;5Y<+*%i_ae{NE6;Sv(aShE+)}|@o!-Er3O(Dz z9m$h^Xc;p(|BlgRZpr_dE*I=$Hviw;d{)lI|J!={tn!`ze}m86@P8(U@BDu;{(pM1 z_c+7<&7X-v>|ZEVffK+47(e?UeTF`GKcMJ5%Lm}hdSNp=98B<{A?HHzW8 z>cMh_+Sb+z0l~JUKXSo|X_D_6jn=p-Z14bk@#o5>3FntFcThPM1qIXhA6-R86$fl>edoiX|$%PM^gpbO^{pleL~lUz*3aTFB_!)EJ4%*sG>|B8;xq-kBAY9BHMp{ogdCMPX8URBh; zc8m?r+FgEV0p0Z4{jMQEAWq^@GQ5gMu+)B^z=@gE+-N70uKR&3{}T<(j%s`C@{eR$ zc37 zxjBNead4b_yN&&*K`BrfsRBU9EB&%j-v?MdD3QGUX+M7XAK2;3-BYG8DB#cd?)lj< zyVpiE^{;km{)oN02sNv1p9LYsV$qx3$J8_KLpp zdfv;qx3C%Jsm*!0nWr`9?PE)AE>P$)DSI5rEIwf5P)WgQ`DSme;=ghM_TSK4@72$8 zE1llf{^7md^xwWbK6_(XK)?zpzo}i6%??Hz4Vu3gei2!|mEDwR!}AM^VG1&rz@`LS zrMGQipR&2puGt%WB-x}Fx06XPuo3be`+4dXo9|NSCckSx)?+sPFR~FE1oa1_9x&5p ztLgZ{<`5)>uaZ%7)VfNb=dS8b`c!2-yT#j)4MFIO(Z;L?vR57q=d(#-*s!(s*ejmL z18@C#G&~VB*l9?|gAvMcA`*0I;-~cw+a~~vW=1X+{5dl%i&wHVj9&($b_NZfHO}%O zDF|sDX*fjNPji^O_Fu z`?Qm@fzy;m{tM}PoX|m2_PQzAtE$h!K5rb7*hXIWuco9%Yx zX&B}VCZB!X()@HWNdrBFk&|BcTXQj~k%ReS5K80ZV~N2-&cZO8Lx7f#fnp}s%5(}Q zKc<`0W#q<>~aIBjEJNS>J8t%SgZJFm7RE?>5W% zG8a#t+H;fH0Tx-Aa>#07s3tVCT?D_s!_j#DGz)%{$<)IB7&N?F0SwT#1N&jxg3S?F zDxf`d@X}2@dAAvOD~JTf*6g7|C4GmOT>OlNSN35m+mK+eDrw|&0-vM}hqNc^#S67n zR1ehSKkB4bm$R5}DE;XwM%!yx5h+X&o)P*0!d!g1qAvj5KdZ8Za+! zXMGQ_pvP4UZBl(bP|w&_0^hqi935NOS;X?kp43Qx7$I#{xe?^DQ>Vr16+_t1VQH}m z_yaZ?(n|dgfEJi>YVesBw9PRzb=ahLqjP$>rBkw6o)PJNEY@O0WTk zm`M+hM-)*HcB}zeOJaZdTD+;D7)aW60Sud>YNirqDI~Xe4bUIE{e>*8hb7e(&-%fr zKwp;7{%9!X#r&jD&WNou*n+~lu1_3)V{isK(t*fJ<8W$=4 zA$K%5!yPyxbDAxN4^D6?%^}eld>vU5!y7c3LJqv>o^i1`aU#=af#6jRk+3ddiG=*E z@qmgt0HjvV`GtK2+|&x6P#3}1YZ$nTfHVjAlA_mCBZU=0X4FJ`&>yu>q5-A@HRu<0 zkOOQ@Q>MA-!{obp0KVx(5846XzTdPmiYQt^WTRrbM7e2ruxoi8;KGApm3d1&A~-Epx6Xl6%g!Vup_%!hK^{4X$Rlws*eNjZhKWU&ze1i`c4Un6d6F8b5qFyygIJw0`JN#8)~&AsU1K|> zy&j%}@i3VyB^t5bjfJ?BIS^!nJ7!Jb5 ziM=;obYpzoS$5Ub28-JT}e3Z6fl5C zQCSUHPWOC6H3cnLv~J1=Weh9Fvs(DYID-_1X|#c>r>c-dljTIkcC~_GO_qe%_SJ{e zG%a4p?s=N5K*1?&(;T;M#H%>kM&N}gRwn)A_euVq9K>I=XUnATbNR@v4-sK2;;>(X zuZ=;jSLT4Ronnr^O*t<(T;7$;9kJZ&bHQPG)`cOfagY!$v*IDf-hNOJ0TJB@@0ZF+LX8${)HBklaz!~Xt}&&}7r z$&nSWi11C(SOJtOD1(8jpwD8ylZKeOkZlPu2&c zOISKBbo5O(UT9lmix0#iKO{xNoS>j?V9(5R6bHT1E9hFz-?ORBZ<<+1-+UbXC!E+$ z4t|NU*{$)--r+uJMU-cjrQcwUr?#nfE5i8i*l$Vo(o4*7$06bQ5k-a91VPr@7{L(= zme9tq$or3euai1EadRkf2bKXOpr41cA(?~_82g5vr|pyyWk1fJ0q_!Yuh)Lr{qW8i z3FRU32F;O*=syoj@I-wHHTrVW>Adrb=KEfiazl=1gkN)Iya;$a025Lm8Y})nzTS58 zh30_l%6j-FWeMPcT6zali$h#l(M49hLMUwKE0y1Cm-2grX7YoSdB&Uq{Wxwr>88o0 z(rY!1$DU8Q8%HrsTg`q)CpM9B?A%Yh7IrWi=rToscwk)S-2!wevI&rV;S@nC-*l!u zWxJxLm)!Ry)6LBr&bLNwRGc<4_?z_O&qFqew^(GQY!Gc58_2mhl<040B`@!3v6Ka^ z;}INo3O*P=G8lgER13S@_9qR51ibHn({-Uj6xnRy9Yinb7XwgHr#hSgoWGuwQOWi% zWgfjC$}AUW^{>m)|2yge1ACWI|);vc1$CN>o_f#s1i;&clA3( zGodY1IJAXVnA`OjQl^N{g)HduoZ+=^Fs!H_pwqsyd`P}k7o^wh1X8pMZZsS4LgykX zm)6h`MVJ^R^1FyT)q3SAMj73;#PW8^g2`;9120J;B07cLT>i(5$Tv#=IamIFlK206 z{N%~jclrMteC9-@&qtu2B9#6i;wQN>gUm&m+^n3bUs6zbN7ft;BOuWQ4en<#r*r12=wCXcx>hMq8mS@Agi$V3>dWR(Ww38{{Gz@AQ3d?rwPz z+9RijgQDyPPWPxrXQb)fFCQDq-7QJTa+U`QS}AIk`Oiq3Sa8J z`axcm!>FO%cY^-NVq-!5C4G4Ip+ET4_oVRv_^7I{K}VE-R*?s8b39-(F22O_Fys)QB8w2dbh9Cr1sMFH@?>HKC_1RUmI^|Mfb($No|5 zE%>q8fdg@l!DmH*1`T!}@G(oxE&P;392ofSXwMq)&&Rl9E5r43Hs=7olQ~?Sn=~bZDc_p7WAYkt&T;j5dD87ze@p z8#M&wj|StIACtE>XGhdFW4aaNV=s0*@kd~pNoN^p&pKl}R%S3qoQoMFEwPP5E>!?3 zA~K_R{$8Z!M?0G^9uA4bf^Gr+6z?u=s7TNG%|9nW+dv`z+pjWiF8`A%^+tWnmj5e{ z%g?s*^8d5V@ACgQ_=MtryxBixmHsBo+xo1yAHeH?93t3OCa_?9P5$P3xvX8+E&UMl z+h@P=!{!k4Y#eGjBl|z>{FMC$rS_WyPP5324!Ilsn!Nv-2?n+JG;n+jNlgZOb{m*v zv){VL01~9a*Y!x^>;v;d-dZ>S>95F)j+rv@DT(CQRv(ilHIMM6!UDQT zun)-_U&BybSFZpFct}D*zlDaH&D7asD1-ntg3XCR547J@2oSJH00TS64s5$L7ETPr z-3n8tCuBEiT`iN8&282$00nj8$jxpFLm8xLg8LBmCIjWb!Oc|Z@nBnsMghkk-MV^% zxp}ZbV(1&f*JTvg=%={tz)G}27$kg}Avn;I-KYlFzXGzv)4GaVA4Hj)jaVYauxP{6 z$C)Fz;RQCdXZz_-dKcIo)VKtgQ*{ASv>P&pt#Eam2Sg(D+KaaZChOd;j`!hYiVaa$ z_;Z_%OpW^4FRC)LaP4jF$SGXT6vo$6Tb^Aw({e??uJby^fXQWjI=k- z5+(~g?#haRm@m3X3S3Qz?N)ct1gdIwfgPY)g?L-D+mTB~x+1$)_A{c3IRkamSyqrQ8v zO)1SPmn`t?%3!!=s6E3iZ>Q0WcuY(Vbq7$u5X z%3v~rEn!H}qE!4jZUMQ$fLg8Gma5hUY9qZ!`WtkVV%30CLbE0EvQBBsUMoLat32Iy zgITRf0W$E1)&2CQ1Cv!Wm{|lZFBst_%m`~ z6af5ICTO=vKDI*bAWzHD=o1s!pap9f766|a;yxyP^W$+jqvktc?3r?A4PZmv825%7 z>wrF9Ve$I?3H}HDAc^`dVVKt>Mw0@nwzf~Ip~2`nKXgEr9XE>>!zK(6-ALh#fCsu1 z9ZWH*nL&u(o4!_9Gv3}Aa?VfS^R-GjGl4I0pVHesj8~Yc1KUO1YGS-K-U%;hP1yNR z?LnOSfZ+j+tROgCS>sLZU`w4pR>|Y%Pctw*TLZ8*pCL?3YtlEKw2`g$n!gQ3+r6ZZ z@`CnK0!Sr15Tf5azgg6@1&kyn{RE!Q*IUP_)r3-n_YqHvNG&E zV!z*$&$}m|eh08gR{*HHJcCEaY~2Ix;R+}9q;nCV=H3LjL_y_TjeI5v*UfL&gT0uX z5@ABqd!;HcvnZ(_=+gap=FXjNkZfULBqddOHsy}~sb7KFOi4YV;#-;0TV=m=mzdp@ zvRi&xWKS?p3`Vx>4;iq5bxkY#q)bKy4*s^FoRMoO6*A+961VupjHt^QlNmdKa*psz zB^fP&f{sW`1rZ~GVn$4+LWqhGa9Vn1-~b0SQW0nffs`8po%K*Yepr6E&4Q8l6@6fZ{_|_93G@6!PQ7Q2xm?5k8O29PT%o2n(5= zhuIY3&Vx;dxK_FItB?|)9{ z219GWNy{!*HE&L|j$ga(S`D62J;kV*xRQ$yc1q@`4jg5?hwNq`5hHXw6LWvS3cjW_ zl;mbiFcjTe6)S!+HW1D90|EzP{MFzSr;|mU&PP!TI{_?o`1P5FZu-bSTZs@n=wrYMhyNX6Sf&6ltsH|XBhbz zz~b1-=Ixu4=w$co4FzC$Tg!ye)h|tW0Yj=&pFM zh0GRWjlZB{PWe2Aj;OZTV*GkC0>mYO$99A`iv$t@BvB!jrbtQ z=EFn$;ts~&+2+Hv`GX5Y0~v`pn9{w;h=MU{AczkTv&r=ABntc^t>T^w0Lq_|Lgz8>oV2k4|K-id(n&G~hEI19=%)M^a-Gw=V4!>f?vF zSzyj7irv;r(*B@_4JT;nCjqF~=(^QSD2P@9u)T{f*U{v=zm{ND-}l%UhBX++O|*7k zKgbnWU@PlI>FYdgUdG#0kX<9`LuKqkb`G{a$H{P~QeLlA)+?LqmB%ZlDH!1fFz$_Z zl785@xL(s1gm6G&OQQOTW1azf5RO>wrnoaO2GwR+6|R!YtD-hVu*Y_&EJ@e~sshEj zgHNUu>}6w(KG$MnrS??C%s4T`^s5%U`lP`_yDZhBU^U8>Gc>Do_L4TJeDddvfzt)MG8ep%+t*+N>-@*~wWn>W2PH|;PHRot=RS%gT4FX1OV zqyTW2D7qKWmH)D&J8jfJM*hbc2JG86KCDz>N1s@*-ClFt!i*o}PzEjc>47*NVSn@+ zUaSuFo1^oC1AJ+UV!!L7IO?YpJbx{jk~#-B`>II`MHm}bC9nuC{f1;FU7H3HxAeF) zdblo#DDtz+Umx|NbYKgh`BLU} zEUyKH_=j?JwAC87R~30zdXzNd1~2>q@j{RAPO~T@;M~~qUL;CDM87q>md9`uWz4*z zuHN&ZUUE`PpYQMysu~{tT7D>R2w6it4_X?wq@9(5v*o|I7Z!}eFU#Iqgk{a=Zo9JF z6+~|kqlpyDYgn?uKKv*b$#7bb3#W(|;zHM;OcMag$raw{RMfVZACoa`vww}-0-n^< zlJC2|PPM2ku4dxR@n_hm(p$&N00_h3GV(o1?jG3jj(-XT({MKlxg0hRFeb&Fg{1I6 zONPcFNJo$ehonFte%!%;=9$hz5h}!3Y?(Tf zZWn=Z-yzlJpxr<^CU7YBB`T3d1zo!+0T#N0!O-mQGlssr^yw<;#sylTXv9%)MnpWe z*~a#%KUYWM6oVsSL}7Kxy)=GuS1eNnA9zXf6|M>UG?wti>mji!NrI=P->X z9qguRl6%B(LT+0&(eo>W=2W0juaIRMyMhq(7D$uQdi~k%%lZNO z{Q+KH)z6MB^7MeVAS-Nspc@BCo5p-#>lC&#C?b#)rY8aou?ateYt>?L`Kwqfev z#IwFg^vVToD*gof3H#7Q1D_UpXlX{+A;;okzxHbP{D6{GAHUr_SaMPxH)^Nw<}^Co z{m0Vglc%nE#aaEZ22;L77tEfi0x{VenkrD8S*8l&hDaV$?MZJKwb~bj%>5)hl1Q4U zAJBTG#5uXVtCUxtJgS%@3#=GCKI0pX38_KDQ`;Juny9_~mjDxrGe}8=WT#wJ$&c6t z{C)IDuEy1)9pfv7ao?dMQgy5)7ixn(2qQEqBU040uU7SMTQ83XFTjyMmTiXbVmN zt-bJC!^lqhh0~xd?cZlt-H1JFFWlQ}k);E(MYom|L{28no3&h9&J+gb5HOeTJ~N{v zHuDkN79GkQljJ;Qmf;=ckwos*Ah9+juer6#Hai)V6!8(%o{;NXd0V9u@=+xYW|At< z{e3&S{McN;f`?DEmlAt4^IY_FDc94#BBbM7g*hR^rUV2-@~@Q1CJ4hCu_e%F3jWo^ ze|~t*Um2^zOB==TqR538jsJxf#sfk{3`sovS`onW$Dx_aMbt~wHCN7r_lRF#M>`-67-PQWxPon`H z`bk5(5-x6FUwej2TzF*Y5A#hs){-;Ak~1Xx{n`7#6!KCB$_m?%gqiDkzbSX5gA0to zf*b7TYqGl4d{%D>V*41Y11zBC^_rqAs>7 zPSizo`F1((?bxl$KQ(`oXI^;4Kh#k3Td~~i0RL^cF7sP$chv)K6Z2C0@9ZkS{!}zVFx#PUouUqm3c1eQL{v->c z$SBD&&!OA4^Lz|@Ffdv&@W@t0Bjju~e#Theaf9H`-CMeqBdL)5JSZRO1otmcVRczVA^yS3xL{pLG?RyC~ankj!n9s@WMml zw$Pmw7Y*UfA}xo;X{AB44g}h%BMWlTg$7ea3XEQ1jZm-fX4M;zR3H!pKd%3;YmSeh zgcAzr<#5IUdW=lEZ4Bl?xnu2K#a83e+Lp%UUE72^Jo39u`2Wt&&F}vx3R$-~jxn_6 zLf3$E?*E=vp5*dBKH2(i|NTuq!T7J|yFb_J>MU+u^#`!^UBkQ4a2+$mJqz9ensBfl zX-ouzv`{4U7KG%_m*z%OwMCWdoK~o(gGafqW+|}LMAOMD816pqP+m5 zsD=GjGVI3s#?dz1OeLl$t4}KH>gBaL5jIsT9+3t`0+X7~pdGYnq7a*6MXiHe8a;|4 z|LCMY8B9`i#3LK-{uprCf>~nEMIG*rhMlPd?NDG*6Wsa!I#m6w79K)X##k!V)*CB;Z@R2hU?ex z!H6`kC(!19O!}V_RMh==2|s_6Uzu792C=iZ%d}lL``3h-k$$c(Qsw3^dVO>rogSYz z_G+^)S9|D=;5})fPlo>pw_yKCr`69zy9-~xc7doqZ*x{(3D8~mGZg=jNA0HXU{jE z{jddaZTW!hzI`1X?4H$*_I@F-`Lm89<#|6DZ>tH#4Rb;EtE?|&%LcE#G2HNygOu~r z+Fo=*j<0os?R|Mj|dR#McpuND*neq35UNBdf zj{Kr~I+croC~A(ypeTx<_N0$)My#=uDcDi}&qX$+@KD16sf7A$h0o@uBUW0Zu8;oI zY0>xV&a!I{rl2fzRLmg~2obT@X-7!xSU>8tQ+qpt^*&-!k{$)TSRa3cf-RdjkSyp0 zE%FV72m(Z-9!|{h2O0oqK$pKvxui~OwV!ZEq=HzhWER2FtNrM|YK>!5A~7UIeh4+F z1@F1euY#HZc>Ad0yf2aAy#DvWxM#EtQ0d1VFHs@&tf3aWb?S|<1Q?R4rpUb=!dqtj z=28dJB$G=<1Sm{+W>}Ui!L&_KTdKt_Hgb`8j_9rMqqF641W|eM!r3E>Szd-3G4cVC z!k904GA2()6n_W|HNp_WQxm-wG)Mx1-q9Ec^YVqa#ZCvrRJb81ZfbhbU)THgY_g8I zg-X`HW?M$Q(>Fct^f==~{JDwoF{H5QnMJ1G*(}@gmGVl7gMsU~+a%E9rXc8KK^*Ex z5(6_heu2V3;I9CuOBmDY~95vLhW9u~q z?ZB=wj(bD%2v%>2{*978z@~N4@)vmtK!rL{W-J7lRx1+`5UzIE$xf3W4%B-jV48xINwkXxe5#duPDzN`{ySGv3@r$TG`~FYy(Abs|3h()3JMkE=Bv;k3XYL z7D7;XfE|<^bQ%@)Jt$!}JlX5?3sS2RPBq;Cr93N&p9H!?U~O0v;v}`SD%ipRx#J?d z91kX4ETkT(XYBdMGlM2|)&Yiq-cjZ)$J=lrTC#Ij$ti#{pc=vkV1Ebzt7BcPnt4E|eIvP=*24B9Z7-4^O*3c?4vmr?WMr5v0LcYvq8=4a;xULx98(3N>*b``HB z-2d_=&C<%Yuhw#<&DQQU`(h_oH@jkIcHy=^%dy5P#pme6`M$2Cgf-gjS1brJd$9jB zgZv!U14z+TDP&D^)Q(WGMuzELv*SUx9e118+K!<=rqc;qwi)@%UPpS;whtkK?(_@W zO#1r-wz$+~=B)qEWM^iX1z(4^C`RoAEv`H;f{N>hu90bv;keixe7Z;CYHn{p6KQhS z#Zxt1m$-@ohQK+4ZOg5mu;BY`yLI1Rf86be)vCGo(6AfOWvl5L-h_a-Z*z3XMKWjh zqS|n9pCtob$3L`tb(WXHXJvg+^FYX|O;qK5jGCP>I%L8(%*s=>d<1{uO=*{(!wWjg7F&2Wj$o#+!NT6b@!n6- z;qlS&+3`_*55;WVyp0f$JDy~2qeRM<5f|+>Z-!22>9+@;@B&k2n75?xxl#8*jc3uf z!LCUK z$_+H>rGRj}$xQk!OqCY%Te`;-B{vZ>9&SIyvTa^mYdTkSc_63St_&RkBXs!d!6aAx z8B?A?*EW@uRhSRR&qf^a4+fWO9PW-Q8W$f_;gbH}D6vVSEsZ3U>1ArgWj#QbO+VVP zO97UY!({Cniu<9?^eI2?R3thMBCrbVgdl+JQk=YWt^XbOJwdn}5t zzmLX+f;&TN9u8MCfGo3Z=!Q95ujvRLWV>MGu^Y<*I!}O6F*2^r*7ordwyez<7Ntm) z<7;?O>5#+;JKL}Q6?RQ9sEt1lGxNNv7f_LlVu=7&oMIphxk@-Ru=s8X@IUTz^ZS1| zk+cWBn>YZ^iT_sK+REMkZ*6|R|NkbRo4asg__y4}qJ9#%1H6-%1z830N8~IbI1M`O z<~2%0tbnBqD@de;g4F7c?cUM~K7 zTQJ>X{kNN~n+1TJv;McXp61s7<7bZ_e_#LK;B(_pjh?;0ADkdhJJ~2sJT%o2TV=B0 zA&D*!C=iPUA_Wq|q9*Rd`a2UFIpAe9&HKp9UpLx!1nw3Cqdj7V#S>Nt5?)(irlFV{&BEl?!>`$s^kH+#YxX96*m|hK82UKqqV7R*CQGK1DQ-qn(S@l1 z_rxynEjLKnTwW#;JG|fn^<2DoDn*HeUQs&6|FYHJ2xyq*7t?f`SSU{RX;@rw@)1aB z*=TVxQ*IR;$W;Etan}WOoMnO51dt`TPqe`wR@4c^{2^#Zq*u!3h{J(wJEPcj5>ean zz_;EY9Xmm5$5*4l$ErZ)-pJFaGJCvaX!FGj^`xjN z)C2ALREM*>bZM~r{{Ib+hMUX(AOLpKyUhQ!x%n)R|LbY_yZrwRK71D~bE*@1X-|Mc ztB6MbPt}`dzaOK$KM2^Z4>5=v=chGwfHuPFb?@TM)NoMqEP&fd+CsK;9X=sw;}({| zWohRmY+^{}HWOo6!V={%MZCFEIGi}@HHT!;0xkSgJt2b;&TTdr!r}(C45$0qT! zXB^|3vJA=W1keKi>G-~x9)R<%7^{{cTb(#9(2eaF1SR%;#NeiAy5T-jxhKDlABLO3 zw*;fnSf&Dx zcGPp%ngbvHTkXJq?&s$F|ECzYhPcg!k&E;(Xa9ftr1Ci6|5y3G|9^uI?f>L2#&DMwJsEt8;;_hIGZgH3pZrJQ!m(;=fiEd*7k0=%uHg4k@n05KH z-h5$)L48v3d;{?$r9JyH5j-t0O-Xs;d7!b`t!c<6DD5PdlM$V%urV6G330(i08^tR zg`d49h&LDU_){$5JY`Ih_0$Z?xcDXHZwE+0{Cv7fT5?c?|M2K1j(jInR~+JOlXPkv z#g~}R8EN92sgp*WDMYi~u`TnCuZ6)Rm`jJs|IRkxJJS&a>y$)|D2W~Pz+G%l0i z<|^Ck_&>F&w&dH^%KWMt%(UIaoHA(}4Wd^B1RY`oW^909bKV*{vzl33EK;dfbI(*# zdyLO}!!)pf!&@)z4YIOsAgxg#9g;K`eT-W3c}IM@HmzQa}|bnIv$5Ow7e?bsr5JByl0RM^WwtOjBa5r1%Trj$`#xOV<7ge|~{~ zz9`N(P%gUeCCe9+q>IiWqomo55YN+WG0El_B{u-t6`NTcCVL1c5+yYy%@#PSyn3W~ zycltw0<9Y)WzBVS@O}E!zf0gKj3>0&UkJ2Zgw0HimF<;TRdjE|Z`0fO@*56~J6mvM z8H;S-%t_z!`Vkx=aOH@tH0kGwh?ogXn|YHK#YseinJ-?|4{FiT?qMzRvVGvG&wOWR zfmKP&w90bsOot2&89}_0vt8o6tP$lHkOPFt3AKP1C6E z?m2^9a;0;uU7g}&Ve7C+58y25II#e%7DmZ6LuocBPLu(f^JURV#kde{u0 z(+TDifa2$$k8&UwHhb6o|8v^rR`0W;m=O@2jZM#b7o^p48x zTD$nlD2A%b8U2Q}b#O>y*2>y5(!`xw@;DO* zfLd}`S#vx{Xb?_@6`Q&Z+t!hxzl5D|>>S*QZ->*Ww+&ze|GTrMeC7H7YLPzX+W&2C z=Fk66pM5|7e}m6ok`A2CJ1Y9QR)78GthUcduHV>@B-t0{4QVO8xBeMv#gxQ7Q?1}J zaK(x5z#A7Hfar{8U-6cNrV6+R+2^oHKo6h#D^uf7sPghH;FT%V63muXZHH9lq*|Lv+KX|_}SC%>;D^k<|r&snKjp*FQop+hxQqc2E#PYJw(d# zlpj;_O9xUtFKV&~93jx4NigFEJ-UFuA2Xqrh>r|0UQ;?|C6Qr(Kh=JT8nxYhRn9#8 z8MskRRkE=&Xtm%Zx#w9S?X2ozbADoN?WB z6eQ{roccqpD8d zu2L9Sy3FHukMx}$HOs|*?LTBRd7bA=JFt+mKh^PuBoJkY1>KHVq8HQ-M(W}H^x=xz zAl?DHop~8G^+?xb5mD~cA7#{ffcX;l7%>kXmCi~8*+qSK+;%CW ziz}Km?*Qz!9uAJ3k1Q@_@F|6no9#YN7G@Ggtt%k`07 z{0RXqu`?syfM8bXL5JQ-`bn>I%`f=xBaKrGVT5U=t=T8=AcVp)I_Kz$b&wbZ(uaRx z@^Vqqi+iYz&|GbZ|77L_i}Cw+{u`Gv{H(sF_XiKuJ+2!zN0`d>{2?#O13$qLDE=z` zr-2us4R~p@6GzlM!MO4lAhOCdU@S9ZfGBM8t$A4(wIR&ucuH{o{|0!{JB8M<(F$3) zpF%_EuBbFkY1R@zBfEMtn>O$+j7bY}2x14|FM(i8Y}1W_Dw_hm7PHQ2c^(Gq%0_52{=6~*+4 z^_1}+*CwLbUK{kg*SSY?W;gk7?^gcd=ZDyIQ(ZM% zA2^*T*?lMDhfW{{ig4haWjJ7v%nGOXL^H=hKjr$+Z7W6>A6>pZh*JsrpeQ;`C2em6)TBX>LP2v4jqQWT>{SD(hvC_qp=X@mXzKVrI&I+MJ9BXrsn%P-w$}@lCA1 znxWyg&d|MXn)_uiQRx-=OW~%C`w?zNuq%z-PILet)k;RKNsrC(QqzoS?iFoX+vc|% zhJaN&MZbkKSp6nP5OZOI4v3mqaDV=@Df;{8CZ7fQKdbI^??|38IKImiE>ZGDgb z@-03azQ>nhm#;F2x$y53wRbfFCOsGeD}CD>4St^_!QxNU%eenr6VrzrHb?&rQvQde zq#AJ>4joe}{FGdyqo_KM+f9&VYkOpA*f=fs^dpLJ?KmBC7!Zn$!A8(a`Xk2BP?Dk+k6LRl zplVT_k zkHyt$G^{#9q7d9p8RsjnjtEcW&DK?vb_e4EbrXRIkjTh?m6LWf%;Q5NMBZ6^1Q0@x zeT3knFBY6UZq!udTz!gz6N`rBStN>#16BIt(X~bA+6#E(R?hgDl738+m75s;Y|9?ZgHg=XazcQT3B9kn!s?380tZsUOYdNaAT&^bXuE!#CoR!#txX? zFcx00NzL6h80BO@CnfanEVH|6KR+iT;6*W5-;>=C-hd$%@xPkP62qj;3ST(Yh4 zf-`0-#BFTSrB^{yfoY69hl-lUvx`^O61z>>$7Ut@lvwpwinmaDLs|g6A+3?(lI_tl z#2zf!9x|66uia9ftcuwNWzl6D%&bT>Ej5i=!q2rf_&Ayl9_woj9XKs!X(`t(R&^TA zx9c?KP<*Z(J$F>lnL27vzcejz0WbX20&@_vVevft4{w5hGLxQ#|KY-T8qUPi@HX=} zoIj7l8{mI94gXLE)8%9&0FX30jtDSQ0w~ZHVRP>2Yl%Wd{rDrdM9$E>k0Bvs%l>P} zD_mW&MFFHgRFFUf()fh{W#|qDee4)^AQ-yYW>U=etEp>V$D)Rq*X#8C#-DQ%VyShS zZzJn1AnZxi!DIwX{hqdV;4FO6(eY8un`^K1PQC?qvNLLQT|D!+YAZN5lT=dwuHFHe zuuR43C%O~B2tA7{hu9X)iG?TI5k^OLX%1U0sok@)Ms#?*Pj?bNZ3GI0))3~j;zi^Y zwO8$Y&)`}gp&ti@9okXl`vbbaC;FyCnvgnmE{rGZ1?J#plCj{3NX#6<3g%Ly zw65b3#x_smyi>U9Hm~6gn;la4G2_S%tCk*I#(g;JQuX>`)4 zy{iACI8CJRhU*h6o9q~*>h@i1`k^L1HG#)Y;Gh7f{3M2cctNE%#Nrf|M>eDR#u34C ziVwVXPK%+p`mQ*j(5TLCHm59@*?dlcQ1w;6IR8_ipVsoylA|wK0N6PYx>^%%O%qqJ zMNMPprxc*NUOU=9U}kwbmDB(ET~XU=r9W5+F83R@ zm}SJY0KT3X7>^s?p@lT@R4-p;so6c6e)`APp;K3`)j5}@=KYYYz z1|J#%8wKY^o5hnq((nkfQ!eoH3SMvw4sjZ{sZeh^1`1FSB3HWddnqn2h4-l0n^QoV zvJn1FmC-DV7BwY-8(~!H79cU|#7!s+d>Nx>wR z{rG4wcZ=O?PBNDt88yJF(KQL1Ct#sQ`)QXF3jz!S+_GH!QQZ|v4M@Fj7*2|=j}8e6`4saO z{kUY9k{z&q1-MXBe#l4$j)92{&~pnJ%*v4B9@2b13;^^{TfwvA1Fi|(e^u_>SN&>8 zMaLX}p;0?){KBzebwcG#*-X*@Jg=Rz{~;gSz0x{REGG-WA4N$ZLT;2^S@zV*vXgA* zz*Y)LA26Qaq!_IgQi~=`^rDn(el&Q7!9@XPDM8PNpPRsXXl(#eGUP-F16dMm163Qx zfDAhB1@U1++1?#SHU%TeWq&{by5lv;nllSL5+9_c z06ckcj*kepHZIj-qd0!`s(ACczn{7jKIn8F&Ktzk33m#8$%xmw(4FY&9W{q;H>2hV zJjMf9;4vM(1JCu@$d1lv9&5X2=MCo+gkp%@c3oM?X%~f-*&>M}={#^N%SxwbIe|pK z$Vnt2C8vdPhEBx}c(z7Gn{&6XB#QWyXf|{e&b%uc^Tl|iLr_W;G}Vj5er0vic9VAF zt3aH2PTf60;l-&;LC!I$H1JPCZ92I~uVGi~VF5HpD=c%ovv zss^{J%>|d2E(U`xieV8pi{TqboOaoaY)3uNU~~9NTod094hvF7DKVa1FQk!6&wdg*1k{CM-}`qjACEz(W8qjjgwC`(%|?TGQRhpola32be> zclXhYNs7Gh^q13Dr_syv)97^Xw4Mo2!r2CCD;u_>^itAIQJ4+N77P1&~Ga4G>?D`vSLo;8w$by~s6&UxOt*_et>9A`eBj+VuMgzntcdG9mUdLP}j? zZ!}6HG-1|F=)muB>fNK6d!vptapYSdf-{~Boc1DKH?Cu}@{tzi&t%mMma7Kzp&A5R z_5MVqCisgBk4em#!Jjzn6BXGMKsuc#&e{W8n^pFU17alwkq)Sb;#BAmARFb_MG4Gi zbXGsC9iN}w6(TabdNmvkN869V^EoDDbJ@-^pDB`dWQ@SjB7p+6cu&zg2!EtPG5Tfd zg~c{!AGd0T>CCrHb)6M*w?vMyG$R1}bsqX%+jqG9a~0@nb4mram&?}BmW9D8=2p^u z@7zb$_an5ZtG_&_;1X6O%;PLTP}y0^E^$p&ncgied8}DR7U+lHWJD@29|e~vS^uP* zI7LPavbDHzqGwR4776r247p7?9v5*M%KOjhf!jm0M?)9u(!L9eSD>10&dq4(HAgeyHYelo3RH75kOB0bxmul0 z4Gtl=G;sGu_6stTS(3KaOAX15kxU{SS)2Ke$}pasl+Ekdh}g6cwS4XJJ?;Nv)cS-T z9!%UW7~y)hOdb%C(KcfTPNe-dX_JL-49A$BgSoW6?l#;Y$XnQVEo5OdyIxKj56R#8 zb({4e4Ykb*q~TEfO07_iD|{iqaw6qi{_1knFn^uuKq&jT+&*_=%&<+{3HeT7v{TfY zlyK)w#+*o{*+uh*Yc;rFWtDT8YI07RB?UxMvRj&bCDYG?n#uBk2^NMXTHjJA^TKo~ zo=CHB&+LPwYr@#D(jyw~MUF1#h?PAonG z>|6%x3ug<9ESe)_8k#0p`xlsBtJ}8LOhK~;R8X~(6qjv8*V!N$hp!a%TP4NYuBMCa zg|hc7x!Y^BJ+Cfj!<0I=Qn?FR=W1%&JCvfQy(4)!`_eUg58W15HhE;ZMiF7!%W4Zqz{BR`u&b9cSSv+Tg|v4)8i?eJy$cw z%$*h%(W|&Hc$I?+6~AAv{B%uHQ z*qxfrth4MhgW>GD%04u>3gGDvLy~flbVF|GZBx*|$Ee*K{r>JTML4OHF!gu&i{_MX zYmL+T@lo`;CcF4Yj%rr2HH(fuH?!zm15hU(WUl0e5!$F|#ulKNjw2Ljno0LAER~CfWDVxHp)=k{6&a zye#hy(z~$3n2C4YPX_0K$AoYHIY}J!TkW_v3S}RuW-LBJ-L|sG)bG9?k)7@&y^03? zsEhN{j_-n!ean_?2U!!B8Sja_XS`<`pHaXNdbW&1?FZ+lZ>I9YT*V-^fqSr>OuqDv zq7I_k(eBHG+J4ppV1XIRMwh))iuWQ^i{67aathD5qgGJs>c>W8TBhyT#s#p_#uO35 z77ZWCCMH5|&V|3kCI}f9{<1vEgbc{V7YHmnEou8zGj%b#CX3!4K2*UbIN>0cteDp3 z5gZj#?-?caKtfeNaKV?{igYNNKX4OCd3IS7Ir)q6-_1~txC=VrmqQI{iw&h*kj1Ic z!B~hdmj$)hQPv zKkqh<>PN3JRpjrJ1P$M`DNApSVvZ{T0gu|1^(X7)z+H(U&~DP7e2%0BaL{&KpfmbU zwZ>8HAd=x>B9zBAr{uz;IGQ$yq&Ms)oY-BUhd#H~ABTZ;o!8%ngY21B zC$}T!PCOdH!eX24yO2?JZ0>{l%l*S>_oNQUcvWjOYWrGr_qyaOetHjV;qdrvO<49! zj*aSF^uwW4IB3eNGeQv4vpi3-V_F?xw)1@Nz#~o?$FCc;(^FqVXeW)^5U(Od8Q2Gx zuz#dEUEx#>U^}W1)9kdjLbTIfTdMU+xMb_$Vg}u2=WseNUI68{Cf;uII{MTc zx5Osr4?VT=tYv%5P27wEJa;n+$n?!9VP`N~$eqN4-Cvk7SRVuyTru$?{v|bQ?pPe^ zH$U^)QeUfY;P#U7H=aV%;glH+y>}-t^xm7lP=W09nKE}adtR^8CeIYQ>D*`c{E=UN{%$I$i_Y?N1n?p;J>yCHq}{m&(lsl~%oGPU>=LYZ2AI<5Fs?wnlm z5Y49;zs?^)G%=frT{ee*5?jeaFrRRySC~RN(<@9Pp6NAakWZ%4-4jp%ss%_WQ|pe2 zs6CkAtv{#D{1Zqh-~UVknpr$gJ~N94h-YT`FzMv0+$rINA(~A#`8r=sH0g(A7=0Kv zN8>w=`9;CjY~z{955J+1Yr!`(rQug5@S1(=#9sTUeiHq3vfDVD9tg}u!K@RVS8hi+ zP2ct;*K2-`QjSX+eYm*$>wmBL-13|9k{8>Qm$I~`ytNC-E#TM+?EWJ0r(mRZRtCpn7qdVxj;HJc7RdO$wBQ@quV2CaBle0ZHZtH1^?}Zuj6LXdz;`yc(o( zaJ-Y1I+K?>on`1I{DvGLf^Udo!ml*BIBzYjynb_hD#yYb@Yqa8+4*sC_;uIZWEyMl zCbj?2-KcN*9y;7bKpQ)yBnM`qkGY(#AMHnn@U4z!d#BpNsF*P`t#?dN2Nt%}446{UNK* z@ThEd@L7d+)Y^>K`hxYIm;vhuGqV~bt9;{Z!-1iu;j`))U9S{0Uqf?UL72f8Usrtz z8n5ckv0er+_3H{?b2R>S1qr!rT)#Y5nrVcw0D+Uc_GL62{}GWurRfa+2t99c4AA@w z8vs<^xzRrlqO;f0$=TE$-wtlpe(#jpQKr$G?Dcn@|LsQk|8AK9c254+t*1|(1@iwr z`=0;r8+<}hPZ|;3Rv2c6)YzOMO#yy58h# z+PRyHyg7~D`T}TPySKk1n9=fADUN;CWKY{So1!}jRZIsqI{k)Y7TcGBz{ME><2GlZ z>fI+-Ur7E>FC)qKd#fYB9Ql9q>Eo@e{J;75S^2yC{|!DmVnIZK)7|{rtu%p&mkiu& zh_+wfkB)ybQ4aX0GN1D2av7r_9vv&-B_My#`Cz_pr>UdkXz%#wsJ3@TO;xa|J&X&6 z>Qz`4eONf^BF4A{MvcL-%yLa(*e&?~F9OvjHU+<7Sv9XQ)ZQe$R=_<6lgle=N;z$1 znnL|cbbNj$O+Ch@@Y%k?hp0vwjITgC7{$$W(4RTLm%Gp$2V29Ywg{@-eZ{WI>o>vG z?n{i;X3+kGpu%fo)PP+KMy%jT2RO7Wc$ub7b{qAxUrbX^v8j_Lg>suaih$>4nMN2ibwM+D6)OyY-o?Om5(ZNJ1{_L#O42LURP5ZFZK{5F$nMfSz!u{Q zOXBW^q}`5NAo|69ilxkrv<4H{j`C=y_}EL(Oq-h_FK#nD)WRmcUffPF7AX5UQ`kP< z{Z_+0;zf+p>rx&YXN}#XQ;a|u?blBm=O<^dz5s?;AyzQRJ6fa)3AK|HrwrC{{5ft- zaO<{vFMzMzfY2IadkS5JHSw1 zHrr^tUw?T>ku@E0V%$y!C`{N#lRh-v_MZXS!SSCnS>)beC~1*LH)j(fY#)dWx1UeGCy%A?_|1f(LE3wYt7 zt9u3cM(tIjRx4o3c*VuQO0*Iid60&p)6;ZDahyQ}D~IJ-YT~*k)j7Bc17h+RiTI#Kqc+0WqKl@CqLBYj~u4y80A{ z*psm*p!aSfFIxBoiJs<@lD?3aheOMvmT7JCr04Xww5-{#z+bE;>@f`3glF@{Ty#(} zoQ$&wSq_AEGZEydGQBf3#W&Kirf8eMS*`9MjpdCm8pDO%uHZ$P@ZjNw6gemu06fe^(Z8NoWgDbP15Ec{ctv86tKF*_ce*=wk*d)o;` z4^O7t!gYZ@|nm@*Byd7qZNCsP`-7blsPyf_I<{v)?7Z>2f(7bd&KnLrMS)2E|1 z92Pw^I|*s+fZTY9Lz@URgp_tK$=1e4rY`*OYkCZdiUb*y&`5=0T6H%Ess3kUYk7ge`?~}8VNgCmxM-NGCm0U6SBA1lc%~(@o@}wU!h;K_e_Z zSVk9s>~bNvj64wpOEueVN4f}ZSs~yIY|sR>2?UWDpJiRTYa9j?bpVDxRgqd*$e<-L z4RzD?EiM9GeS^B1jX}48xrp?86NSPQP-khl45S&gmTJxh)~KQ80qQBiazF-zLJ0$o zNjiE-A1yW6^g@b8GJsXhG&%IuVDuFX&Ky~8v?rJ?7MV8gc}bu1;dy&9MI9YbFc|^U zp8lD@tR%-^%tZ_CJae$(TC31b^^LG|ll?M_h?}B83~?97gXBGT5Mfhx-4Z37tV^~A zEv!i$O0W4JczY8pLm7i(qIivvG;KBebTBK? zRmFV_`u%_x1&+(z1G7xPV2Darvr%ueRH2I_ECE$26(=DHDxhL%%J9rC>J1Qg|AkaT zdb3`T2%J4Tvy>==zV@^s;lr6#?obONTQ z&Yy;*i1JU7^tTA6qVWt|vD}u$77h!GkqCo^38TFsR^c z8U`F)l7|Euy<}qDkq$8hP{BMSZN<;^gZ-jxTF@s-qh@^cBtJlZcv*RD>hLTMW)0Hp zmcz@b31F2cz-c`xH}`1An+bZ);CS3FFf<^Tne#U7Wy_T}lal%^OW%kUD5Zxz#FH6} zx+Ekf=asO+Ejzh^6;9lvX%R(@i>Z70^PKA&5TsEqQcDrw7MpmMF^Z zaRSQy%`N3(r(E3j)-WD8bP9EC((CiGzM1J3&ml-L-Kvf@9K%G94KM3trD3#q9E`8X z&}pFB1DhJ9k1KPP^4~rzKlF2VF6-UDbu}vVOX{I|SaebsE&KU263>dxBpBEELr^kp zCjC^U!)7Z+-$Qa7bikx(#thZkZ&VsUAKXc|D=-)Ct>W;ocT{LLQ*w{)6dsHz&+&cR zGL)sz(Q6f#`w~8uRy&wKrRoh=_rHhtPncT90YGP$8KUO~+D>m6>G)}RHK`mt_)V51(0s+hC@Jol3xhzFoMR#x&txKf{xka5u)J^{~&Zlvk)=CQT^-a~fmvY=aYc zeGz+|$4oPp+BBEYgmR<>Y;QKR1R2DAkRQS_f=L5WgvJ@>Q2oG4L;FNBr_Il=-qHHZ zO^}fkt0qbXRfOqC$!yuo1xPP|4W~gW+`N#G6BbPpZ(_(pz?~ftg#@X=6`?F=7+=cr z)1;3K1|ZRkow;0KUpLf0bf|wwWHuz4BNa5#qI8b=CW+B9MJ|bKXi^wjMor3Wc&pl6 zloS!oF=7wcAYH@4(Fqz~Q)DXu{i3Lzd12Q3>4#)EgTAP4+nqyr3u28o7mjd1s(RV2 zLpTs5go+DhcwxwZism{-VmxHGm40?x`Lm68@8EMI`|m#_{=??uttUDEukZHX-{_-V zyQ0&x#`)gaY4pZ;GB}T1L+7(MdR zQf2eGd3;)H)OQc$#nUI|`O)!yjq^U$AW_&{8uN9<9(QHeph+szdSwLJ*(M94cu=5fk<2J#0Qd)oLefDp=BX75HNr6SzJF!o2V!a3T{hIfCZ|~>K@A~Pf z_oVT1-}{Y|TC%{98VHqx1j`9iuLeYZ;%I97_V@1IS^aIzY2(sq;dQ17`7H^voG1JB z)9j;c!`E?&AxdoPzZ}67mgw&H(pl%k2Jc?eO>rGd+NW zqT9;6JK|T=eCFM&pa3J)+%oi~GBh($Zpf$B{-&ZX!|iY;N}$#wFEB3(fgMO3l^U*4@10)X7x z(ft+QJIKjK$Qkr0yHip9y1Z1lcdx*|auM3pgTP>m7FWq-AMFS5=Ju=FtmoV8$Di<8 z>8qMOf@X!0WyWs_EL(?&O)(Y?lgpIR>qW>h_ZpW>9&dq?uYrN@{}L))50pMV+-;l% zoBr2g_0Jmhy+s>1f(D}8(}Ug9GiT9qq$3BJlnXG3LVBZFoQFL(f1ont>-5qcTG6@rqA*ZF)EOmlzump2gxfALoP&56y=v4! z)H(QtgrqP*gvw=zB3R@oIKFJO4+o%JwyY2|p=4_=D1nq)K{%XHLkY?2JJ)T2Z|12#SduYbn8b$=+aO=QTvA&Zh>%g z8IRIH^Sfs_@aMTk*uM^O{kc<8q@Y#lFm5HCq@~RKxHA_J--zbOGp|HH9D*^`oUlwz zO()*65U{3S_l<7PQod;xusTlYW})pgTR*CwS^1rQ9l{Bre)Kvzhhw*XMxiWD&tPr3 zPmh0c4+>7MP?q$wsaZ>zXM4v-ud>fjPvA<>I<%7mvJLebTIfz7Sbv$j5n{88T<+J& z!&1qWl{j;1LkwP2@=KgHwL#p34C1aZ5XDv0>b0XGux|HhJL2<4J06a&&=@Pfu(e;O zv^mzHE$9)+^-8o$Z}wsPcwIYtT|0({N-H?*Q;d)Cm_z|~jgB+^Q(=Sda~@;sx(h;O?7u?m3A8O4jcE`Pi^DU8_@~?l0+{c7 zEs;r4Oh!fTTusn>Ye3@oLaJ5#VPEll(!chhJ7)Z%J3*oSozaq+zCQxUgAugwF01u1 zMPTaM&@z_EX;Ms~5e(1Mo|rc&ao2Z_CeFMXUm^*%V-n2X`8v7xIXpA6VS!gOnQlp% zNYI$ae?CrHAB5g6CaHWIbUHARv8HrfcJjU5bAPq2K8)Pos2dTJA-3TW&tm=a5~<^} zZpw;Q{u2>=iY;QaH>naG zH2q)(hAM63U)Wti2PW?Hi$UMSYQV_$pR-pg8L~!$Zsr{mANN)zn<(j+Y}Vwvl2&hP(Mu6 z3A<~v1CvWv=UlgmCNbEmZiFf`xB`v6RYa0u(;3~IuBFM9kO)Pq#@N{)G#4XSBig9Y zC@r}`ob?s83(Pw-8n)t{XUx-V@YT$VERUHPiF9fiKd|WZVwpIh!Gig)pPED4^N^|N zo>nxNwqb*Q_u6|%JLo9x4w`MV4&rvoK4=k8a%|X$Bb(-*XfpQp7#)BZp99Am zD`vx&^!<{)qcT0B95UX{mD|%C7q`^;d1<*%yB8(>&H(MHdx_kAPhnoJi$m4_3EL9L zRG;lr?WSv==o@tV#3eka#<%gKXo{czq%|0AOF(w|>(wxRUgxHC=h@Wn$OeAZf$Nu;^ zAUtgv=Hkn`!x28$oJb!<{LRj8PkP7e4Xf^zijfwJj8?GMcg8Y{ zZrn-bhbKjA0*5l*pKYu6M|^H#|4ETeZxI7{j{WE6)2EMf@&BJzzUTk?7N40Bdf60x zTGZaTVR%0VLhg$HSvohGZYb!ku|r-c>@F?uY(FNpupd*GTwF%kXuOj3&MTUv6fXRF zUM%01&UWcP_5&QdZ$#aR2Q0FJWkaPFoUl=}#59lOH<2nE#tEbPlfRYtNRpKisq&~O z?0Q3%_NGNy@r9S!ew%scZgGwM&558eB=@JhcW2oxqoKzD2Nd7HiAzMu84NzojSWz(3Iy-E8emh>wP&b6mU^tek zog#pSV!*K{GsnOQOsBpKts%jmKrb-4Z2K4X>K4Ao8^p!^}Z|6P@U^u|7#q8&t2vPNaquq!wPb7$VRf z=@jEf!Ye4(npj?X*LQwB$)sqXg(B+C3evkkuw6fPasXd9W)VT|aKqJW&`66()~Gv) zSbhceLB2+b+bh=nN=L&Jp&klN4caKr8MG9h!nc&qal^^zGLH1NW+G8!LxXT9PRr2U zN`^NW|3Hc?4OKdrDh6#v$Sn|^7@9-z{mUXg<)y1*|Jdlr8a%TN7BF@ru?Zb7I7J*% z%>t{Ji`W8%31GkbY>+{(PU1q|!D|`Pvk07_Fn-oE!HMN)XTgTv$>|1eFcaaa)I)az z{CJ}=d|HQhrM<-vh!$s%MVjtHgD|p?59v)}XL0$tkrO@e-LOw#u$eO^~M|wmL4_S_zl1nj4 zsJva`P3uRP$u{07Wmg%6rxhB@%3Wo zTHg)M$cUQn=%>UH~Sf*#izRocwoO zlD0FUI5b(cntik$KufUzx6TFNpe~aX38{w{(%7%vx2Pk%K+Pa$cI-5^5CFNDjk)>Y zYqcp8VlmFeZjW)U?;)KZ%||qsyD_e%NB+Y*;KHa~u*uzPVR zaSk{#)XY<9Zq+*hqQbGB{L`#^Lbc+7dydu80Sa0y8@Q35blmem>?b*zV5#6Simt7O zahtJn-=7OVlx`s4u>}xzH7=Bs0I6Xe1b~&ZaFn`sq`{@xXUyutxL?kl@TRXu)O#&R zJR$ZtZ7I$jN>)0}p*)ISogeL;)sK&&h~&F@(Z_?ay*)v1NgkVx-#^;>dxi(G$1wec z=`6v_7^k#uSyN7JkYC_28pTACx$oM`lRo88bNe#eNPJ&c|#Wpi9zq3E_ay5{M-kt25A^@#Uaj$4up*ZO?nq)*z8+#-vU&>d3Qk&#p)F>u?mhh4qU!P%j$Z9T4=6SYNUaLbcZW zw1RuqHYE zb8-t2{T4_p)|}X?!Tg;^;;mDpSTzH9cET3mmlgtjDFpcb@y|zoEB^b_H@iRmVh2EG z%X47YVmdaIv=pZSz+GO4A<{SXQ&b?!G8@@btvS>N>$#`9MGmh{1X8P()w)pPtmPeMn zXgWppqhTmvMGkUkefr7DD>Nr4udoVA&NKupwIQ;~k}s~9I|9=gv!*YKb{)SfeVWxN zod>GfYQ<@44^UG(D4K(rjoCc!SS6P!s53O%_iq6$vR*5KUFDt_9d+_Fg|b;{zj23| z+;u)KvPT#q>BOEPB^bBC#Z+8p_Q-sUXTBlNi<8^a_aI<{Sk6U%VW z?IL;h*)N4|^J$*su*6M~>j6&C6veJN^#C!ftuc1ALyof{8`01g`n6mbI$;UNv(i?e z{=IC*G@b#YvCP@k>u{jiEIZaoM?fc<-=;m6+WQdd>lmSz`VSM*1KS8?z+iNslZTWwAAl%JRyyEK_Xo z6f?7OfX>yt^EqNI3T_3HG;ZUCMLOF6a!xpQ`vjU|FBTSWwCVcP6qO%M7T3J|71Gaz zE%A+>&#r8e$l0OhhU!7Fgmz9BQ!VOca%jid^cpQa1!LoXiDIKv)o~K1uO;Ww3R64cZ9Jy=?(cS0{Ta#Rt;HHrC ztlQY?ZA6!_TLE#^Kh?EhvHjnA?cTlpe|huqv(3Q%zx93p{{|mELu0V@5k_!Og;r5* zmdj7n-qk2c$AjTjtll<9gWo5~l!CQ3in!|a;PNu*msIU=j}ET4aSjOE_dCRgas=@Z zTBe--oop(32?tzEy(~^u-)&irTp?RWy2kPRnY98fl+m7l`>k5lb=V{*l;dlrO%UHZ zgl~ZO;zT0bYd9XU7S(amUJ8s$V*i^QxcL&rzzEIP4VAA@HL3doh!I7nXoT%N&bhzU zbBA|}8BE*2Ct~TK%Vp=U60+$K_l9XVf;aU!$kK;z$b~2gQ!aaZE=`*PN9F0E^o55I zt@z9!$*WQ|C9>!VP9$25Xxt`p4{Y>(d3ey=Hvmw0R04fyq&I^w1R`rvO^!1?ojO9! zzeVzfJNVpq|G)e5f4Q>tG_e1F&;Rf(J~MXHX%QQ=M|+loPdj2k`9FJ<-#^nni>-h1 zq`ZaX&!0K|zvay*x%FRxFW=YyH~8e_|2-D#*WjP0>Zj(lI!*9`ELA^#XkM?U{NwK* zN1f~S!RYb@)Q10-D3ix?b6vm$&QRMt_JnE%rAcsF*ADv6+{jNHhTy&F`I!Ib^KcxWuLwtg6MCyVv ze_=zf5QbBMLA^pFR|=(s+Orh@ZtAwBq4g<)u`rWD5^G!yhOq?tAFEGEw~H2glQiy3 zx+MiAv6-LiXK#+r&(!YGFY4#rMq~Hr?3b#Nd=3gjlu=VjZ`j4_QGjyP?1Kz7z$?h5 z!&+nS4OH2ESwEbRkHF>%dVeee8Ww}FbUljGCcx>Bcctg(fS zOhH(OaE^iUFaljS)dT+prYQyJx@}H`Fp67of`+-6>R@=i$W&moC~S(-L5>|n0&sQ8 zU|1q!fgi8N#b%OmkYd z&pNICxa&V^VZ2BGQ9K&;vmIQg8|}R@U7!of(Q!Hu8gH}dffJ)i=T3z-aOH74 zw!vhC4#TQ5=~I+U&exH08aovtIwetMZmmPt-_BNe}cZ>c)<9 z4YY-OuNRrb1PKP}qkk?Y9qo=lfnqhlY(uqX+&}IiD$#Mv07Sp2+pPJI$-62Llx*56 zy7t{5n{;Q~>{)W1k_HzIS;!{Q^prJg2hQ175AUZBIrTc$66Y^;7S2%&`6{9h1J<)J z9Y>A*0{k}BpQLj$N37`$%f+MkvwP*CeW82v$i?GqgOV^Yg^V3Zb|EF9{A z0tg%Drw!LeG!GUtie?*|TnMg{TH{cR@?;TUb($eradxR`+e9oEoHU|Gvfa3!-eBJJ z>eIBcL|sy{Sjq;A@LBx{m)>#UVsiqjLoe4<#i{DAB@ksg-N7fx+^NHX2+SFb30!5{ zzu%GDiIhdtPY`tq%qRr0F6IUCY^jL`x*p5CNcwlcHkXti;_^H5{P$&^_kzse58$5v zQ`qNs{yCR_&S#c)!V+)9*=T{LUoQ+gum1;eHT#VL_@Bb#Xn8Eox|UDZ3r3hwRtfoWaHwr4Vc>@9;Ff{mHm7vcAW`DEx9|# zG+mwtZLj&;U{s<46e_o*$PkNvR843QZ=WjJF8tj~dgB&wGk|BnHDLElMja>j4QtZW zDg&;uD45o;mR9b!x5@VWfdKiyKuKJ8(?>X(z$bln29jM{@{7>&H7KZh8=wty0q-{9 z9|XH##^>#Z7O};A*PKyL(p}L8j5;go+Nl@lJQq5H-Lx+iW5=yu^fv7LZjDzv8y9F| z3%mA)kVU3}C7KJ_U*UT}b61Y_LGQ$TK1k2j7m9Xvvxy+TEZlDwnNv9kWH6am=7zt- za$TXoz>0*5U=b+n&SZg+jb(%$t6T$?4@+Sy>nnO=F{U+Bi<+`|iw=hpGu1G%=o%BG zvqp-}+Rq`&ZfUUH_STpz#Z$^bk>3$}Wx1Z*I<|+?ErRbXhhXo5(`FZOdJW>~2ckqNV-EY}Ak~C9fFFF^|F&~84&7t+W8W}TGqQF0-{eJ=JWfdid z#M02Kqr=D~nPVcXW*o*90T*@J;?~z3UGg?dyEyOk_>AgZ3K-XjO*cX2v{ zT6SX)2%AHC?_-q2Oe=ZLizJ6{iD31CaRq~`-~|8$Rxw;hAhx?ZEOgBT3FZgwq?DO* zj8-?iYNmtHSo6sdbB}zxM(P{orArMfrxwSa$=Qk)god@G=Vcnu!N8w*KZ|5W9^4oc zKOr$fB>=>TqMXuV4?rmUGME>uR_lCL2T<0ei+sLzHdlWQNl^)q~tYn%X4C(a;%avd?RM&UN zZVDbUDinJjUdkaQeAM|8!i$at`z1i3^3JkHqQ&nvdw;;^2KGO9lC9Q(h@X63v6 z&!6?-i+h=1Hn}h^fd}=Mhvx@pbv`isa{B7j^$ZNZbk{v>}8=&K8)>Q9>tuGNGJc zfM+!E>J9pX@t_Z<+7`Kk>-Z-|K!gS&OjI3V$%6NIOd+}2bX;{`5D(>~yjsu9$voi? zx|C##V)KOu_!Xs7MoNLo;`yyQwH|C}1T@zzsl9{ay`Q4PfC!i_Ni_zjMh zHwU8~19Kf*&l&+m&QY~~ikY%#0?McfAE#?C#vh}8N+IdJpFgS!kTmdk=g+#C9S#~o zdk}`L8OANW)#%@9b<7c}M0e-6EvFCn;iDbu@FtikocO)f??3)jyWi`k@+J4E!4=fm~?)PtaLqd}{}= z+3Www<4QpP^W@2Q{m-}fu>MC+Fo+1_QF3`1W41w%)BEwboAf`(`;=9{D5-ylNBy`f zZbQfY?zKFTBF4jN{pot8yo!Dv!_nYl(q``@ZqBrxg4i67(dT06ybrq!l>q{5t#PAk zSHLjP1r7bU*zp5|WArK0o*XR@%1{VIucK{&N~y~h45+S2v`w1#Ke97*LsUv&3npieRq=k?j-joJIT#*fH7nAgwuB1(zowzr| z7%^6dW}`C}?7&g6L?r=Aq?d?(6dnksGnFU(Ky|s=E!^XF{`D^()MC|%_pj$#BIe6a z3wWj&`~|oUcMlGZ_X=_s?iDE-dlBr3ltMTuktG=%35NP@vu#!IZ7;?!e!7ffb4i%i z2~B9!a|$KlV8l?ztzeB}7yu|yR4;H?oMwd5UyBt7ywldnWc2;u0qV)$ z!T0wF=);|dI>HwQGKQ`mQ9C-|kxB0L#kUf*sif4}3+-27EjPGBcS#P3O%N`&^D&=! zxf%sNO4Aw3scc>Y$1*NMA;UqMU_fXf((yv15~h_bc?9T?7K)yIF8RB;4lo%bhMJI& z9j($Yv@dt8w$^k)DyFG1h=B!IeGg#mRmz&OR)0r2!J60(7S36AX>4lqWBfjAYTW*v zXjTNf!)f%eF*!$eqr}B)Z24Bbq{W#f1|U^)`A+D|A_+-uk!U)bL77b7Bkw82TZJE~ zBsbA7(-N;YJ}CzKH`YWjt{K$fb*HBis^IKX7l>3^d59h6hnXs3U8!dRPp1*>61lA^ zgH<+?wB=n($$9ujFf%wokiEvl>}z(O7ojOzF*hJMoknoZYc)qxsf+lw5VaRxF-J#| z9j!eeYv)eV#S{qbo>=0ict%CLc-XTfshO7)-kEeZvxb%PxEQdnH2IIIeU2nIwTnN1 zwmEAfb{* z2oB?;QkGeFn@||3Ad7XWpeC$E(urcOnyE?sNOjj$?Q)wct~A>mmaL-w1x!g22*VHk zd{g~PGI!I96;99H?CUO@X{MoI1+CYz-L0Uy1;ebEK37QX#LZ&5j>$Mfk4TO(LQ9e~ z9y@Ea+3Ujcu1TRr$WIpGT9Hzk!o3z;8kZc>?nHjcp_~Q~I~d0i>futlCI{J4n1=f= z<)GdmZ$5tWrG+efT%y|R4pC_e8)WiWR_34_K>b>LhZm0=3Xq3l^xPXS9m5uT`kgRH z%x6IfuaTpZ;;0*UbOULKMNS=1b~vU}j?P2f^_m}I)l|PtE;&Mu*2qx;FwQ(VK($_i zsk!@ULdF~eg<~cdF&T~nlbI*lMA5BJprbTmIs6JdnqH+rYJC{D8CD%@D2`D@s^ASu zldlD?#2j@o!xW*#{m?R@2+MmQ;^HmSgR>dX~MDBcGBs@F8WiqBSk~5Q7ZD;{@}I`~1WyndK5S61=lJfiYdDJG*b?8Rif2UENbx*Xk0^7p0y;|M zqA-}D3|a~)gXU_3JatgO3&zb88kW?p`Xhf>VwaWdan@Bnxrh(Ts6;Ae?JO`GX1V2N zBpvkP(2STGG%F8;I9Zy{&XLZODALoU-;dL@30t}mjrHQiQhYtfITSeU~q`BA2x9VXwe+<2gW{7r;^pGAoly(ipw=6cIG;u}YD0a!OfZip+~ zi+2eVxV^d4D-lj|B&$pM^!>6O=O4gto35+iT{RQip#id1GsT0CXNyuOq6zz8GHS)? z3aL*KP=T;*ug)wmy#b&eCT%V>k(5-c`paT~N$D_Tx_5?9eifYzuBS|xu4xb@hvF!# z&bM{n)>#j$r*TMb5o}UGi>BbsQMIE9@C>3-s~=nU&3_ zU=q4?byMPEaEzz3K6wMcVQ+xOT%VeFwC~_=vT+#?*1f$Wcjv2brrg_XY=o}v={~!p zGQfWc41jL3sPS}&hAx(8084q`peKu+;1#o^bn)iY-$5PD@3-#pO7GPde<_^Bqh8W) zj%6{(C3egN%xfUadwzE=$;zQ?ZoLm+>br{xo|?t&jyF?vR@n!NPfnz>@QH_=z+u9tXskm`O*YB1=nxR+IY18Cyq6c~ge1Fl|Z zH+6KT=ls+1X2*ZyD5%i-j#Uc)b==mrSBgi8I`pxYedN(_lzfB@QL9GC*h=sOlrIXe zq}Pkv2^0g;AH|b2cKhIlv>F2MYKPan6Yv`}WrJyXb9{DkaQ-@adH(8EtwHg1)FXBL z@;_>OXPmnnuXz|Kxg$1n!(ZO<@NHBp4x5JS4{cP(XjwLFUUvt$TW?S;m^OR4&8-yq zLYV4`DvYhOs1Efjk9U*-z_io48Wr@g9{&BInS3aa5AJi(Y-hTVD@=hTyGiEg0{eBt zc=3SIZ&Z9kHN+CN3~getO69$jy&8;%-N~gAk(YTDOkLdnn2ZK}(p)yjV~|x~BG-^y z@S2kr3tiB^=iq_PZGS4U^wIfYR6BZm0;KDh1K_gy5MQ(1f-Elh zO$;6W;t1?)Lq`}yWr-`;nS|ejFVFN~M^QVJY5El(BT*rn#=vU&HguKY(fa%iwP3DJ zYySxV@4)0dbED}Agz<1ZVo931gf^iy=ZYI4f25uP55|)Eu3OG+LpH#WGIDbBnxR{3 zV)%mHM>~Qfv0nJHoE@t+@yH)xDcT*!NksLdket(DNn=hQA6ya=j;s$8JVqjWw-gZn zh9Q3U`b{^@KhZIa=#T=Qn8oQ*UzWZmQ>{sy#r1@&1N5k*w0lQ85ep*<^Vv+gm}pu{ zhn_iCN``4BNGJ*??e-|@cU9W&23|~HDNm4e@d?aNL|H#aOwM90!5854qxBIcH2rVf zxi_D$R?3@O_6X0ubv*3%dy4H$e$l|PruCWuNNLlo2m3a-QdqfWDzba7el zzKRZx_jV5$sklcx&}AqXUgbSTGeQeqrX37-V{eU#vT5@abYl#gP6uELf>2VrU1ayd zHQeqVRm?t+vV|iLx1hl+sZ;b%-GANKJuE3>x-M;FMGr0YD6jXG)M| zggvR9k7$GELxPBd(UtHDl<_UbU-;XoFJTCrWljVPf|<>_)0iypTOb(#77`SzeYj!D z5YEAHEYP1GA4G`j+8KV2PIgaE_Zqc*Yu5C@60xB=`>43s;B1gRf!sm}d@04l+U!9) zA>na@0T~dP3N}b#oP}L#mkpr-8oF6K{qCH#)9*^`(|&io-}TncQSI!Ye)N;`c1YF@ zm+=_B6x?c*Y>e`8el8P*XGr|SwB{4JJdA!4q3pc&7EWgdz1&D3DiorZBOw7WBLv_P%sl6@#F>Z!S%Ba~`0`xP8D$7dH`;=L;aQ;P@VvX)o(M)?fs{SkFZn70dJ@tQ z=%>B(@(PBO!e8fUGWZy`@LzL~L1acy=-uAo>Fen9WOuKYHLu4a#o~LXnU=J^+VY#H zqVN>{<)>^;j{RVe$+^dAHm#Puhfd($)+t{RqM62W`f?xV^bJ+hs)8*I zU=HtTJSy4F;Kw@rKY|9a3&ENDn7gTXk5OAO8X%!*#D-pb0P2FgAdR{N*5gNbDzvJh zHe@H|EZNbq4SkdF1X8OXoi+H>mS0PDrT6f{@-mjVyo#dQ+7P|@D`1>%0F6lHRlRX~ z_GZ7q2sLnV5o>Xczt>*izY)6sAaJL9hY>Od*r@Bf2d9BMDS#!weY8_vNyDw+C^3Kn zE7QP5YTQu;pE`>K{{HUSE&*#Hhqq*J>%{W+pc0Uv#LoQy5G7?=m;#Run9r`S%uNFd zpQ1MZmw9H@g;2{%^Y0sI<_4&hS1&wL55TR>N;SaH&E@!N8qzi-5SS_MLMu85_>Y(8 z%HKCQhO!OL?4R!YsGhm(1AOgFgTeln7Evnt-JsRIYCql0Vw)BbZ@Pk;G}xkJFk0-AT8;Zo z;CO0|uPgAfQmxwW3oE?y7lHZ;@aC#;QMLN|-0XHuy#Hr!+rBm97Mr-><#J;F~%!{j%1( zT5Y-4<0JJv+|KSE`sU`EG1ml{R-RES7N`X4Wwqi+rQTheR`JSpcbk^*;!5AJ!uQ`! z!<$v`l3&n7JL|$`>ITHYv&1T04N<(D5@|$PRp4?>T@(#)rC^NC#tCKH@PmM+!%x)vC^tD#)EiCB2Al=L_p9_j`) zCrwNbcI9^Sy6`{`r^K=al)+yk3=HJFb20V6AcI6{J3u5&{c2s}t4V0MNB)}$zS@v* zabgMUG~-8m*QUUkQUL^_hx|1BY2l%*?sq3}1Yr!)6zL%v^qEekp^&B;MP9ATlMs0u z-gGm&prS9bj{1w3Iy=@IazBwXezCsiBfJ{jtj;w_k=>M&oR#D>A9cFT%TyCiHAnt- z`lTwFQR&+gIi2BiBCH8|cs@qa!ZXj{F&G;SxovO-xRezPBD|4@SvzTA$Qs4+6y7^i zP!wzKLXB|Kc+`?|q`sq6WE7+TSh2Y;z;%gvkqdA{PuE`HkK(eZ-bOKWiq*8X64eLf zv`d;AQTAokNMx@-O$<61{U+`YCYM*9@jcB|&H@0=Uo@3;_x^e8Nj>^%52w+wP71rx z`4&?wybzM@ynE(E7;l(_NKt1NB+V24SusMKHaE(xD624sqZp==rcp?79tCM$fD)?V zDD?<*#!Po~@rdKG;o*R!b!LTLzmz-WLDG^YrS&r8$;_5Y5eqvNBO7|S(~ z+1Upxy$i6I2YQnu-lKS)qbxBI>}%;YFbhgHf|?RbCM(1%#PrsvCRf@?`oXLT=wdqU z$YKyXbxCArz{YHK1a$yR)(uBSW0a*PtU3dGIo0yizI}`VEX;QKAm|GQ?v}4bgN*KU zmSQw}7Ij`>*dbUSF$OW{cJ%=Xzelov=x3dFYcT1LU3KLHsa8@sy&|{Eg6$hE6Xlx?Xv>N_u@V%h=or%NIuM~lnA4Iu59taI9_T@@j|7Sb z0)-rqEDWCD>P?2!e1v(h{-!E0*#y-R9}Yaa(ri)G1P)a#nM9`2bLd7??}EhMC7l*m z_H;3HKnv(}Tn&YBIq)<(elxRGFP`{-R}X{+K1v1ETN>*j-R(|RcWZOt%+%zrPwBRf9kU)Lf?G;w3LxQp;lH>g~w1}oB66<5X&=?>`S(`y`cu?6Uh$0cB@~O(XD>p1`P5K2vm)OB4bP8#!=yk(ZO9~F zN2$}jjz{guu)wSeKn}smnJ;gK9~q)x<&d)4txWHNaz=k;7px?k+660-zP1ysM9Zmd zFayf`QMfaSdAnvzCH8iHUf*9a^T`!*6RJ=9o;N0?3d8ErNu&0v{txd*bWl4A1yRw% z$4qaT;_r2=qwjI!|2KYa694(O3Bcy%f5BWY-{U|3IUf`Movq>A1YhQfxM_(t0o7Zs z{#%EFLv5sq4E-==lcJ=*OscJmjSqv1-!Mg{&{9js(Cwh7QGXd^KizTQ25f1`3oDwv zY*<=)ylGxKS7ji9J*jNkjAmgAKvOgPdTFWhM5|7gor7UDd$VaZ?$)akMgMBxx%EEG zXgl?3lY3aw_Aux$u!u>FT!hLchxyH0ocYOfRP}cqbf?YV2arX*sYn+US?oi%UuHxW ztuCenuFi1uOF_ORU#vTD^Q+!aYR#9QEq><8&y^#qw~(#Eb!Lkh;X3oApXv>T89#f1 z<{|%vnG^m!K8x-DaQ-Ex@Q37oslaBR%m1=jdG>w({{|ns{~zrh)L$Rf_PzWs-qTD> z`Tkhazesr3F4ma962-U|xZz*J-cW z8V%AwvW3%6>=th{Ef&N>wH5#ZDRT@{$xzT5Nqw z7HDd1Eh#EKl)iiPD6!7@j$&B1q}Arj=v;x5(HdT>f_tb;M=hWR4qu9!IR2kB$?gJI<>YL>~5n$m3tS`jBl=*(CuLBSlPDux6Suw*mL`h&1)# zfFCgimd!9FJ&MF&u$Ae(Z>WKn$OiS>Ioo!*q@)`LSP0ZW$(b7QgV216JE-~zDl}C0 zQ!0<&k`>?w+!nVWs12oMC_5s&JKQgtODerg9bS~M-_3{p=re~6&WGdJIsdAxRg!( z*auh<6C=%RQ^COvWOFowUteE0)_b}Kg5786VtJmy6|kB=30K?(BZZd1?~JnFd9Arv zv1mk`=rQWlLj1zUN5HM)=5sP*N@gMxc@5fUZDKTkQs!yZESufSd;Ec3h-RCFDumHj z^@EyP?RYv_GEeOdd(Gb{&R#EpYNWq}Kd6?}_=HB@VSTz?^>xE!AjTmn@LtrsboU(m zNA?}f)Lv8gdDDLpEZBv+8oj?v%T9Pz<}cj})9<_x(=hz2-Tz@vfkZx&g&E#KulN5Ing7 zbzqeq#h(B$oez^jj`&sC&?ObG6bH4LE;clR+$lB&SzUt4otO|jRP;2epB^0jRFL=U z6f6_tGg1&TG4Dqte0Sqb{1-KTgO+Mi;@ zqGxHT!_JMJwogPAYd7fU-tsCKy4v;)F>=dZbCpUtLnV)SsR*zgOwr0~Wg2$~aKRb8 zB4^b+V`-|)q73weyk@`N$nzS@liZHnUhX>~P4FO(=i%!)oh~^?&w_XKEM_&N^W*Q(jY;G3M**K5uO?Bk)pus+5k$_rF*y))&?)#<}I`iNH7bG`H}y~ugb zuTJwr0o|1NZi|m#s|82pjTP%2Io2ElOF!CCPiQr)a@~jb9@^F5B_)yOXp@7feL_q@ z1T=yYc9$nb0|X)U5jBqCiM;1_`e>*yfp~#Fmh53D6L|DMFO6=5SRpJKv&9?9BpL(T zYj0D4g9pqpkx#Ky5mh4;CEYA7sFB6a(2eL^^D-XuLE1A|OO; zKeYQ3+95K%Vb<(idsSnWO#reB{gG__VFe-0~ zNt?pZq=}Rm<>SdP67yrMQy4lw@WP6dBASzGv-JVL>*ExM`ZTLtayxRqMz1BZ0N2=K z)pvo4?Kr{kbnCE3>I}Z8XS;hpMThkx#ELDjlP^#W_KVSwbghDnMgN`wiW!+sO%iCA z%iz8%EiY>yAd`L={ynQj`!#^^O>Lj%Ind!3eSBpvqjsdDA+wK88<3aftiFa|IEp*T zXUn}Zr_B<&7scKK>A^pef*1jfC!>xN&w&;E@L1Rwi$kK$GXkVES5l@u%wAx;C)edY zZD%$-07(jNjr(*jfhdr_D;Tc2sr7Y)DU@aU=5%TX$Z3}7&_DyjFpopL zFdY@Nd_&XC?{XHsWmkRCrpP~-oM*%pibbt@6*-G1gA|nB>0ZwE58GUG&DoflT@_bfz-^+JV+Jk9DcUK=io%=mjT}@nM+G`5*co(v zsIgLY&Qi>-L&N#Jb)kRESkLS`yAh9D)_0bwA$}LHKS@V;b^KLrd~N;FgiowFJUWSp zqb`uk=LpkrfS@0>$PiQBYrZ<@qq`6k{n(=IB58IhHj(A^$47fLO6Ojs!$U)k3$4kB zn3M#dkWS!`gWa?-F&iD(R-Zn3^7tu`Je}NDH=p2lGJ7m7Q(*oQ+uD9^_J&A;9K{jC zEhQbt)E18wm*lmH(Hfh5wYk2zUa4$D8`unf5R&Hih z&C+J6QbEB3FL5WG&I|QL8pHVOqvY~xtO|QYRr%qEAJ#U@+oZ$h;Nn^20UebXv zT@(=9S9!dJ|UNdGq;Wo|3^Du*M7 zKa>lu@rZb&_v-UQ&c!W1|1rI!q}$e4y<dvbPi5FPHG{^XqlT#_Py8HaWQY%Et?Fl(G2A>M# z)bdXwD)H&WsI7H)Ohgg4h^b)o7kNH^`1n zlK4d2%1DT-PBWIN-pbIWYIe{?j7h4uH6f_p_CCFuyF1n}lA1%q2jvz}cvh$CkV#w) zsF167p}DM*K1bb=KBs!4Gf;J|gjBtW6q74_^L@H{yDbcTX=FWSWOS`*hHY}(D#9tA zZrh41VPa6&0^h9}i4%(zZF2;QzJdPO9MMsu*96*XjxN*n_4VS?ua0VjO30lWd@tJK zfB6emaPQpkeWssWGx_c~P))GUsh#<@=ESeQTbbYRv)KOs8RHq<+5&ve{{Lj_@mAjd z_v!cj|66?6wf7hf^<*~IoQ$sq821Sne)}^1d)n+>H1X(OQvcEHPcUOK9QZf$>HuIu z@ZyQuyBZ}Jh43m?Z=0jR?~`Oo!QE~%Z8wvV`Y9e=Vhqnl+`ej#>Co@{84a>_%`pfBA z?Qq|3pViRqwRSV^4Y(_IN_LFRY5Q&U+GHO-+X!9Obl84fJibX)lb|biFX_T&M|pm^ z6AU>I{|vj=g(5$vjF@y8LM{SL$`UWxpVV9Rtv{_|Db=fZSc~ic41dddLpOxvjL8%2C0@DmA|V^A`KvoVA!OTF=jhv!H;%g-{_8G z@^BD0*`o=V)9wF2fb#}*MK4pIESB&@(4pq2zEK}HA%_^RHdy^GQ=Qq zWD^9%Y}`hh5cP8;k?O>uIvcv#DuUU5wi==@4ugsQ-8wX2KGhWESgI}ut4or&wg3@z z+G)XDS>ekUs*<;5@yg5SF{CL>ZJVMoPkOGM2Zdah>_ocVogLjUU7?)rM;N8Eb`-tZ zKgAok#u>;wlsEOe$TBm1?nwLh4FK^ZYgWtoT z2mOa*6LnHgWQh|NXA>)UNU-*p4{%molQjHIW|sJ6YGyL?l5XUj%!^B2{z1NXd88_M zA0y%En$jR0DU7w<1HVN~a>iFFuE{p#Q9(KkWKofUP=>{MDC3l3gSj~K%(b!z)ah$c zo7E<3tGWGh@vrRJr7Dy87}G?cby1U(?(`+!f?P6++-nv+mdR zTo!*1c{yd&bpOd44JilFK9TK&8F05wt$y^D)&P+}Zog1rl`jGv4+?Wz#Z%x^IyyeA z9aeR`%-nczr=kHdGRX`)Gd8SglZ;S0)m5FR#(*MN%MH+yoetT?bf<&=E=+p2Ap;FnLtDBtv{-F3zG7WE& zKrxlhAi`2dn4+2by|~tW#-Cep+@_%L{=n8lJok32uetySTWI}@Yw{nY|9Q3v-*fAK z>+$#X{|!F8fKK3Ox-GdE)mxfviS0BQ;gP+c3@2SW(XWf@=Pm2hxzbm2?ak-g<;SYoLVLr$s(l`+ze-cPq;rz)cf0XtSg_FR9+fPq zAEnOUNtwU)G1ZnN+PcMj$ao(Z+2yF&!xh|4Qn|OlbwMlb3eMD=eF5Z*Pf53{E@D(G zbSB+Wu02en`g8s4&GGq}+CBP3{k+>~>>i!{QYD24hUleytk`bSW6S+d%@Jl|y;g%x zuDQcnWA6>r-+fs>sGt3UhAyw_XGgWuQ}yb&p?1{?oLlRA=LfqDb#mS~IX4s69W{OP~JO)a2$_%srHnZ4sNckCcuRy(ko_|Sp5}3cPh}S zS7^~i)L2zmAY;&aB(J0I5EjLR<*7WaI zj#zJ^6Wy4jpbP0aofr|a^VN+_kE}mgwnR9jX`{>|4{=j_sM78LXto>oC@S?B)o&si zOTz>gf0sWIHDc|Gq!+Y$FYx!GJ_xa*QkeaN>RE?TPZB?6?u_*IwO7dT*XR&g3Jg)`Wi+J<)BktPr(Zy;;a1|oe6v}na9O*qD-^3p_B z5S;f0ALD2;GzjNwSh}F*``C2s%z@4gC$UDvP(3AWE;?I#cFXqd3nj5V@Xw1Kf7}_p ziO%aL@Vum+aA!ve5+ zL-Ce}09mvP7280&ET~klG75ZiXKcwtud)H4q>wvf8Z6Fr%0yb=g5)&^Sl2U_vdJ;S zlS=XfcUaQC#>**Q(-|QO8|J+ygAp{F4zfne_r0@tkVn$95Rb1oJ5%B?Y*B`4@R2_c zI3v^?Sm=TeUHUCcw~0>Wo(?w^S3Ry3=b;@d;FHArbQU{KI#nqb8tnfK9qa$(&rS3{ ze~|w7>1MeSi2q;yuK)Q4A3jFn(c0*Leu`md?NUDU1Y;kdOAKZ>HtGW0H|b3M_7tCC zSpVF?`^Qh8KCP3+=3_D%PcV-Nu-g&oZq`-ZX3BeD)k^_gfWmaU7tL<7-$J!5wV{R- zken{_iALAD&Fgr?zEMWo;iRb^d$S7m)yW&Jy-vNmiAj7YX&$I{2(M+Gm@}0psyD0h*(_hk#`{QJMUHA;s{<$d1 z)7J^|JR|hOAGTyP8d6wrmsAGHx#ZdE!O66H?dUP34ZlA6TomFWyYa$6^&4ynbK_vG zb+v-URwyFS1)5|~9Aw3@93>Lby4-TA6+My_iT0QxyC#3yYhLLY6pPzO0pKkuIwsLr z2(%*luK|_||CDU8_+!b->|qve6ls-ju_^`SRTPnW6FQ(b{0=+8O21WY!(>ksCC(G4 zS3Gb~OLD%jWw?D$8_gZL)ok1YTQRh9U>GF;;y3&!q0$UT_`Cxx+Y=8I7MR^rBo?Wf z(J-uZ^0q@{kAFMnFV6V0=O$=?=LWw0R)m(R*cXeZFAmP2aMk|&QX~d`;$7s&pJDy> z9SYB=^sA->9~`Hv-mA-gBN;u0-%wC}P|YoW)C>^0;ktC|=&OYS#$qeN+oIR}bd^F7 zj5%laV4Ycd#W2!tq8`>>ZL{^P)mt3;gM-Pc%EBX_^oG-l;JY~pcR*d_7QvVt|Jeti z|Kpzp&;Kk+-ckWD=ls9<_~~Zu{QvCn_xumv;uARkn|aqECwtA|5KltQ(IqNLC*uJy z?M`wz_56&k4|IAi!|Ayqr{^CwD$iBr$#&)O_T%TO^^tGFryrk#x8~mu%HI#l-`eKm z=`;fl=S)prx&EPAKXT5C{AllZzoyEc(ekbQ%)H&l$ZYfqKJfNQ`GQhc%IlNH@oRju zl3~~@w#Xrzd+QWrLwgC!$gFd%e!|(D;Isxky?RwLsLK?2o-ct#bP0Z!AK>X(qki<7 zKweQF@3+_KKUKKDzS-Wuf6#me{}zAkuav0Cr9AL1x{3|}28=)*gT$ie8*C=yyL)i< zv(WyJsX^1*CxDv0|8G9te46+F-70_2|NAXIv;ArVX_CUOw)s>~p*&F`Z{8Vxwvs67 z?lLC@@-v0pVCized%_DK(^jVm3ncTD1*2@qk1RoXp0)laQz@&LasRhw4`i0Z=IFoS zF!>?ze4-t%tmW=t@L@8H5UPTtiO}ZY_^hZkv?jmC#iaA@pngb{oOld^hJF4>DO)nEFN|> zD5>M)Pixmk1j8EJ%Zp>wPr5V3Z*Q5Rj6@)=GLiT$10Ib~h}@+?rxT4qZtA4;(-4hC z-Xrz+y^W=7L-ixDUMUR0ct72st(|%ja{{ag(^2pWV~9}%fjsnF2TY6&55nlfv3R0U zQzYi%(D3T7aKDYg^K>-N5jthUswclpj?`5Qxnc4cVF*Br@dt7PgT78{wV$He(Y^*& zN(E!%Ggw#~9YaviL@!Q|If+ZK7q^9L0g#AL{5WLdh)Zd{Bu1V69RLV}=2H`lCxB~V zV2JR5TlP_rO%U+lO=Q(FKT(1ohA_JW2NNnBYo7+yxF5#?KXQ`_CIHG-WE zhJ}jbXD+U-#C>4BYfn_u>{N0QWHX_xyYxcNPtEq)px?db@RhoC0@@O-Pd4Q#xg@e= zlcUVwvYpape$}4V&SrP)u2c@fAm_sc7DoUI&r?1)W&V236%lWDSk?453-unc7iTdO zm{%|%@n{aTaMlqrQItfc+3j9aOX$8XEl}>Esgsvo@_U)N%Ym^d)`%#3lu;4>cz3t| zT-FiI%Tp?cZgMcP8?1D+_%q47GP@p*3ySc9v*QbNV7k|jx0hXCet5cV*cEMUYg>~ z8QkC&90pM%0a`=_K|7&14|v65_D`NyUM^n7ADl_5>O{}*Q>N%0+)b9^M`ripOmJlD zhxgNmE4Er_t~rj|2;^9l1Hv=!Pdzb_X)`_rSw6NnzmZRdOBoKg@)t~7Y=uM!#2S$=fuXJ>fD?HovORAZslO8Ed zVgH14iI9$)<+7#g5T&6BLDG+{JjykMs~JUr9wg5Q*~yDEWjRwo@Rz_q zzBuKWVJ|2&dD|g(@JMY@MD6jXfl9m0^eQH2Gd*C6hSXI59ghaY=m=39u$Y5Gxgj-D z5A#7uTyG`Xs@*PLTFW;U#cdXe@kmgVInm%bCb)M?;wH3~>~sg8VBfsP-#$dXNX7lS z{D6vLH9{8hg)GCfeB%F_$ZC*ybAgpfIkRIkZzbn|SzEt$7;wzlT`_>vQjx`xv)uT~ zn*|f19XBqQgGky0N^%+(ozB1KNyT>)Lmf|>awgJFGIBCMWXVA51E~0dyTGh~Ogf{4 zt4-_pIt$J|F-<~sBwJ^KozlGX1d7if^(kb%uCnI>lN>VKkqn^I#i{QUoftxag~i2O zoFX!tz4^>@TIc*KAdm}sWnIbqOj%dF$y%b-uEl)N9}X)eZP|oR$hyra4Lk=UScR8; zI6Xw@P}Yt=rX@DMF)gQdt?9-$Z@>I9ok7velW0KURCwX}fM{nO`@}6ATEpfgFPltr zn1nskyPuN4PsDAK7(rwAQxS9U!rU|&W5_eW{n`u3kV)NUyRZp}#ywtJR+orppn&3r z(xWl>Lku)cBtsJ^{R!!aOx7E^iRRnA2&ZE*p*ncJOqyxQbj}G0INvQ^ADYZ-x`5M# zqt7e`#B~xXI8|k{i|g~+#Z5_lh~pt4a4d4R3wuDM3mt9^IRhD*6D~`lf_NMcyyQv9 zAD-Myqt3vnMs|#DPNTrVga-#Kf$51XTm=VEh9zx#D~%&3ZtV4Hi6w&oErAPT%x$Dj zD8EY%mDGgwDSZZNqoiguEE5|A? zE@`s!=ktCU<;A%iUVZoXqr5L;v?rb7An3EL9yz!0dPFXv|7fS z87EVcLf;K4Lu=Makfe_`egh_osQ;KUElbukl&=`*lEGflot{kAEZsT%o{}=li8E>U zG^|MS;01bljXpU7vz$qt^J+HFk=JV}gNA^Vo56xB;@YVORpw5blFt3M0oXn79wm7k#qDqBTbYCd?sc!t(aJ}?0lqFJbsR?=n%1r%8#Ldh> z-J@Zq+yL1!ccty$W-D-VgS!)k`TS_HQT7deo?k(?0UT5m1*eK(MLkBIoPm;sW$RKD zbvAn-3ZC2o6J0VP7`Qp&nxT>btQ!ZlF#%D_XCmFc#ADm|;e>BYAKXPK4D z!GO+9c8|$XdXfsUdvr?}byCbpB2A6TE@g@|nbnKgXtX|1?ij5`^ys*DbQY*{bbRL5 z%M@`ZFE^TAbM#^6cs5qyVA<{JTzr{@zO6pR>O&tjS!h4&??dtDBpq|EJaWUan4{M7 zlaU>qKz@ECEja)U7mr=35Hz@nr< zXgkYx-0C*ru$5uTgJB8xOZ6+cjSPnBFMm-YU1r!dmiZ@|Q0lHz{-00*Zv9@ z172I(X5R&^6-5`69x`+?a6oU9G5nuh2ka58*>AfEKum+b3?^Eyg*t~ZUgWWzKRY6z8OCZ_zpwnZl z@-m1R+b{$y3b4x;e1hfR^!L}o-d<7vRBHoW7XIoX!`D6YO-4^OU;kJAq^K*bKUXj8 z_w~#F#=Q@S6Z*%p^`q0X-GhS&z3LjfhtO3UO7GWB&-Uw$;$JDr5+XiWw5OgudE!8p ztG2O77rkcx`K&&kZf$u32v=SvZPYfLVu!4l!sZ&#LJR#@SJy2DR|N@7p?@uWO1kY< zbJP}WZ?6w_*4voXbkcV*g>8j~s3$Q{L<6_sp;JR+fDQ$&H zSwMdPK$VMw&&}MEi`u;31wUp{iQ#;9spdLBOz-J5!z#03aNebPzPB5PwhF@7_CY)C<3cX1R`Fj!3}wZo`2>hs+EoUBe0=xbH;zRP zl(LPpnHP>o6Va`#3309`LMX)Xqv5A$e>mmwu!*ry>>H+4TP`+tCO8#tjS3ZBmpxrz5HY^gq5Fj`Pol<6$@4%alI&-FTQ8xl6A) zALkT8ms0Nz`C9%T(OG@}^u3E0XrSWYF7uPozE<%t=|B4zk1htOiw0Ob-S}hNb-^Aa z>GiZ>s2vJ?PjpWF$Ph+gSgU9fINh?7e1C^ybkD$C6hNYIUic@P9Cp~&0L|*!G422> zM*~K2j6q~DHTAE3w#l8O&C6JkCFoN8ITCuDa%o}tHd3=*yfX|cAs7_nd~J#0c>vpna{fEB&w{A`regSt+z;)K3ZshpIi{1@YvQC)tKDo#>@LvY?#r9Cc{U&Mp9$Yaq__>fvGN*L{v+|7x(n9BPW>oq zygEJGJpOBf*{li&EWn4(%W1wDEzR=@IoJHg2+%c}A)7O@%wwAPS zy1JavnP#R8uN&qQ4x5-Dn_#K1_gT)_=*D`Z(NMKDR+HRtG|E^#9%?h+=w!FCdx&|D z)sHFw+EmE0kXSG|vvP{snWQ)AiHFM4(h6sn$FM=<$s2&-D}*cw2gXy7gBFGC*5I0@)}1hZxWlzCmjbRp`(;2M2kF)TyAoP?bLq zGQ%z`bO;O*4o=y1f86}cR#0ltSF|e_a$&pVCDBQg^%0Lbqq|v91Tx+aoGqzn$v8J| z^$G@g!q*7Ma2he?B~r(eG3m)Er>%C3YYw3!Xreief9+EOBaEorq^u6AH%Z5MzSo5T zqnJ_1aMc^rvWqf3hqEwNKguJFl{yAvo(k;+TeVL^%+FVpPa`wRj*l)qSQl+cs$}dy zOK3zV99xqTAJ+}OI4Q?%(If)Ejz8hkhNVF{8f3@CP;|n?P(L!@5&bX5oe(-Rg|14I z*WpyepA80>M(a8QV#+X9l`K__S0qrR)LVl1Mf)NA^D9=jW;|L+$*E(qBJJVvTM+Va zahmlyl^?0KwNZ>&>OaP79IJc{#U&o}3NK9#`^`?QSe$j(YiJhvwd_g;RLIMy}1m$c`XlN0HJ1?i;el`XOd^b(W5dty`$PAy7*ZjSm%|8iToCq%4w(Yyd`_DRrU z9i^a|2u@I`Hy5qqeW5mKmUEXTQ&pf7G=HUVZBSf9=oI}QKyVU|73sG%==IRxmtv-X ztk5P|A#gooX37(EOn}WWAh7r)7CsgC`OobM26!_014`T4lcr$26g?NxtjaeQ>} zOHl_i3qy-eQskROZJ_%vSu~?Rhw8L<7&nAAuXP(G!yN*dZBH2hgNywOETVp&evxM{ z@gxWrzL~+h*qt>F0VO)azsm|=Q00l>d0tqt(+2ydzI7D@o7 zyQpD_FCt3%(!vY_8@uPu`}y7;#`vExvf!SfG#T@_&9HLN^BJO$-Mr`|nAd^usbuPf zF3mwuiTGBeB>1~;-@=$}g-%@NJ{W2$YI#(0FVGVP; zY;;`_T`(s@N|QxThIAz4uO_CIe?=0mkD;>)Q}0sLYH?McoaN@FSmbyZa!UmaGzmZFH6*h?96h4+Q%w03k_i_VYgXVLE2S?%boetcvVw;=zmSX3!N74AOUDs80+`94oT z#5nIKW3`L1W$~fJPAHQ?Dc>0;4!}WGs7?PWR(F;8O4gJ*zzQ1gI|*XAV7;r!*O8QTq=| z0Ch?uir=?$a*l+S`36R9+E543I)t-k#8DtU6BOxW(n6}wbXDcrA1Ky1EjY|6)r}I4 zNm-T5pJdiTWfW&Pg(pAefuWNlzRAEYEacH6?gt$X-2IF+zO=76{i7{KYxoX|zvtaV zZvao^#H0(#j>H2mNFCTvH{Yutf5gl=kCc7*_&o*1#0nHH04n{cHn&&_%1vzA*I4I; zi`t^*t;pH1FKEqqT~hpra4E4fF>HdJnnyc~)@7rG|L2`_215w-#bf#6#V>J+Sc|o( zBB`2gWN3rB{Z{%wN4z}MK^th~W6h*S@B|)cuApEqQJ0jP3Yp0c>fk{pM@pnl)?QG@ zR#aLSKo~suWh;|RgbtEBi`H(o+mu?l*_D;4Hb^{i^-`KJ8Q!I`(mNcCapbT;XmDM# zK*n@Nimm7d-R3GYnp2$t?De0>nbis8Wa{2;�VA?QMPhM(ivv;e60C@u#WyU_p$* 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 1.02.89 -BuildRequires: libselinux-devel, libsepol-devel, readline-devel, ncurses-devel, git -BuildRequires: systemd-units, systemd-devel, json-c-devel, perl-interpreter, pkgconfig -Requires: userspace-rcu, json-c, device-mapper >= 1.02.96 -Requires: kpartx = %{version}-%{release} -Requires(post): systemd-units -Requires(preun): systemd-units +Patch0001: 0001-libmpathpersist-limit-PRIN-allocation-length-to-8192.patch +Patch0002: 0002-libmpathpersist-format_transportids-avoid-PROUT-over.patch +Patch0003: 0003-libmpathpersist-mpath_format_readfullstatus-use-real.patch +Patch0004: 0004-libmultipath-assign-variable-to-make-gcc-happy.patch +Patch0005: 0005-libmutipath-don-t-close-fd-on-dm_lib_release.patch +Patch0006: 0006-libmultipath-allow-force-reload-with-no-active-paths.patch +Patch0007: 0007-kpartx.rules-honor-DM_UDEV_DISABLE_OTHER_RULES_FLAG.patch +Patch0008: 0008-kpartx.rules-check-for-skip_kpartx-on-synthetic-ueve.patch +Patch0009: 0009-libmpathpersist-depend-on-libmultipath.patch +Patch0010: 0010-multipath-tools-Makefile-more-dependency-fixes-for-p.patch +Patch0011: 0011-multipath-tools-Makefile.inc-separate-out-OPTFLAGS.patch +Patch0012: 0012-multipath-tools-Makefile.inc-allow-user-settings-for.patch +Patch0013: 0013-multipath-tools-Makefile.inc-set-Wno-error-clobbered.patch +Patch0014: 0014-libmultipath-discovery.c-use-z-qualifier-for-size_t.patch +Patch0015: 0015-libmultipath-eliminate-more-signed-unsigned-comparis.patch +Patch0016: 0016-libmultipath-set_uint-fix-parsing-for-32bit.patch +Patch0017: 0017-multipath-tools-tests-Makefile-add-lmpathcmd-to-LIBD.patch +Patch0018: 0018-multipath-tools-tests-Makefile-Fix-OBJDEPS-for-hwtab.patch +Patch0019: 0019-multipath-tools-tests-test-lib.c-drop-__wrap_is_clai.patch +Patch0020: 0020-multipath-tools-tests-directio-fix-Wmaybe-uninitaliz.patch +Patch0021: 0021-libmultipath-move-libsg-into-libmultipath.patch +Patch0022: 0022-multipath-tools-Makefile-add-install-dependency.patch +Patch0023: 0023-libmultipath-make-libmp_dm_init-optional.patch +Patch0024: 0024-libmultipath-make-sysfs_is_multipathed-able-to-retur.patch +Patch0025: 0025-multipath-centralize-validation-code.patch +Patch0026: 0026-Unit-tests-for-is_path_valid.patch +Patch0027: 0027-libmultipath-simplify-failed-wwid-code.patch +Patch0028: 0028-libmultipath-use-atomic-linkat-in-mark_failed_wwid.patch +Patch0029: 0029-fix-boolean-value-with-json-c-0.14.patch +Patch0030: 0030-libmultipath-fix-condlog-NULL-argument-in-uevent_get.patch +Patch0031: 0031-libmultipath-set-enable_foreign-to-NONE-by-default.patch +Patch0032: 0032-multipath-add-e-option-to-enable-foreign-libraries.patch +Patch0033: 0033-libmultipath-remove-_blacklist_exceptions-functions.patch +Patch0034: 0034-libmultipath-fix-parser-issue-with-comments-in-strin.patch +Patch0035: 0035-libmultipath-invert-regexes-that-start-with-exclamat.patch +Patch0036: 0036-multipath-Fix-compiler-warnings-when-built-without-s.patch +Patch0037: 0037-libmultipath-fix-sysfs-dev_loss_tmo-parsing.patch +Patch0038: 0038-kpartx-read-devices-with-direct-IO.patch +Patch0039: 0039-kpartx-handle-alternate-bsd-disklabel-location.patch +Patch0040: 0040-libmultipath-fix-checker-detection-for-nvme-devices.patch +Patch0041: 0041-libmultipath-make-dm_get_map-status-return-codes-sym.patch +Patch0042: 0042-multipathd-fix-check_path-errors-with-removed-map.patch +Patch0043: 0043-libmultipath-make-dm_flush_maps-only-return-0-on-suc.patch +Patch0044: 0044-multipathd-add-del-maps-multipathd-command.patch +Patch0045: 0045-multipath-make-flushing-maps-work-like-other-command.patch +Patch0046: 0046-multipath-delegate-flushing-maps-to-multipathd.patch +Patch0047: 0047-multipath-add-option-to-skip-multipathd-delegation.patch +Patch0048: 0048-Makefile.inc-trim-extra-information-from-systemd-ver.patch +Patch0049: 0049-kpartx-fix-Wsign-compare-error.patch +Patch0050: 0050-RH-fixup-udev-rules-for-redhat.patch +Patch0051: 0051-RH-Remove-the-property-blacklist-exception-builtin.patch +Patch0052: 0052-RH-don-t-start-without-a-config-file.patch +Patch0053: 0053-RH-use-rpm-optflags-if-present.patch +Patch0054: 0054-RH-add-mpathconf.patch +Patch0055: 0055-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch +Patch0056: 0056-RH-warn-on-invalid-regex-instead-of-failing.patch +Patch0057: 0057-RH-reset-default-find_mutipaths-value-to-off.patch +Patch0058: 0058-RH-Fix-nvme-compilation-warning.patch +Patch0059: 0059-RH-attempt-to-get-ANA-info-via-sysfs-first.patch +Patch0060: 0060-RH-work-around-gcc-10-format-truncation-issue.patch + +Requires: %{name}-libs = %{version}-%{release} +Requires: kpartx = %{version}-%{release} +Requires: device-mapper >= 1.02.96 +Requires: userspace-rcu +Requires(post): systemd-units +Requires(preun): systemd-units Requires(postun): systemd-units -Conflicts: mdadm < 4.1-rc2.0.2 -Conflicts: udisks2 < 2.8.0-2 -Provides: device-mapper-multipath -Obsoletes: device-mapper-multipath -Provides: device-mapper-multipath-libs -Obsoletes: device-mapper-multipath-libs -Provides: libdmmp -Obsoletes: libdmmp +Conflicts: mdadm < 4.1-rc2.0.2 +Conflicts: udisks2 < 2.8.0-2 +BuildRequires: libaio-devel, device-mapper-devel >= 1.02.89 +BuildRequires: libselinux-devel, libsepol-devel +BuildRequires: readline-devel, ncurses-devel +BuildRequires: systemd-units, systemd-devel +BuildRequires: json-c-devel, perl-interpreter, pkgconfig, gcc +BuildRequires: userspace-rcu-devel %description -This package provides the multipath tool and the multipathd daemon -to manage dm-multipath devices. multipath can detect and set up -multipath maps. multipathd sets up multipath maps automatically, -monitors path devices for failure, removal, or addition, and applies -the necessary changes to the multipath maps to ensure continuous -availability of the map devices. +%{name} provides tools to manage multipath devices by +instructing the device-mapper multipath kernel module what to do. +The tools are : +* multipath - Scan the system for multipath devices and assemble them. +* multipathd - Detects when paths fail and execs multipath to update things. + +%package libs +Summary: The %{name} modules and shared library +License: GPLv2 and LGPLv2+ + +%description libs +The %{name}-libs provides the path checker +and prioritizer modules. It also contains the libmpathpersist and +libmpathcmd shared libraries, as well as multipath's internal library, +libmultipath. %package devel -Summary: Development libraries for %{name} -Requires: %{name} = %{version}-%{release} -Obsoletes: %{name}-libs < %{version}-%{release} -Provides: libdmmp-devel -Obsoletes: libdmmp-devel -Provides: device-mapper-multipath-devel -Obsoletes: device-mapper-multipath-devel -Requires: pkgconfig -Obsoletes: libdmmp +Summary: Development libraries and headers for %{name} +Requires: %{name} = %{version}-%{release} +Requires: %{name}-libs = %{version}-%{release} %description devel -This package contains the development libraries for %{name} -that are %{name}'s libbmpathpersist and libmpathcmd libraries. - -%package help -Summary: Including man files for multipath-tools. -Requires: man -Provides: device-mapper-multipath-help -Obsoletes: device-mapper-multipath-help -%description help -This contains man files for the using of multipath-tools. +This package contains the files need to develop applications that use +device-mapper-multipath's lbmpathpersist and libmpathcmd libraries. %package -n kpartx -Summary: Create device maps from partition tables. +Summary: Partition device manager for device-mapper devices %description -n kpartx -Reads partition tables and create device maps over partitions segments detected. +kpartx manages partition creation and removal for device-mapper devices. + +%package -n libdmmp +Summary: multipath-tools C API library +License: GPLv3+ +Requires: json-c +Requires: %{name} = %{version}-%{release} +Requires: %{name}-libs = %{version}-%{release} + +%description -n libdmmp +This package contains the shared library for the multipath-tools +C API library. + +%package -n libdmmp-devel +Summary: multipath-tools C API library headers +Requires: pkgconfig +Requires: libdmmp = %{version}-%{release} + +%description -n libdmmp-devel +This package contains the files needed to develop applications that use +multipath-tools's libdmmp C API library %prep -%autosetup -Sgit -n multipath-tools-ef6d98b +%autosetup -n multipath-tools-d491591 -p1 cp %{SOURCE1} . %build -%make_build LIB=%{_lib} +%define _sbindir /usr/sbin +%define _libdir /usr/%{_lib} +%define _libmpathdir %{_libdir}/multipath +%define _pkgconfdir %{_libdir}/pkgconfig +make %{?_smp_mflags} LIB=%{_lib} %install make install \ - DESTDIR=%{buildroot} \ - bindir=/usr/sbin \ - syslibdir=/usr/%{_lib} \ - usrlibdir=/usr/%{_lib} \ - libdir=/usr/%{_lib}/multipath \ - rcdir=%{_initrddir} \ - unitdir=%{_unitdir} \ - includedir=%{_includedir} \ - pkgconfdir=/usr/%{_lib}/pkgconfig + DESTDIR=%{buildroot} \ + bindir=%{_sbindir} \ + syslibdir=%{_libdir} \ + usrlibdir=%{_libdir} \ + libdir=%{_libmpathdir} \ + rcdir=%{_initrddir} \ + unitdir=%{_unitdir} \ + includedir=%{_includedir} \ + pkgconfdir=%{_pkgconfdir} install -d %{buildroot}/etc/multipath rm -rf %{buildroot}/%{_initrddir} + %post -/sbin/ldconfig +%systemd_post multipathd.service %preun %systemd_preun multipathd.service %postun -/sbin/ldconfig if [ $1 -ge 1 ] ; then - /sbin/multipathd forcequeueing daemon > /dev/null 2>&1 || : + /sbin/multipathd forcequeueing daemon > /dev/null 2>&1 || : fi %systemd_postun_with_restart multipathd.service %triggerun -- %{name} < 0.4.9-37 /bin/systemctl --quiet is-enabled multipathd.service >/dev/null 2>&1 && /bin/systemctl reenable multipathd.service ||: - %files -%doc README README.alua multipath.conf -%license LICENSES/GPL-2.0 LICENSES/LGPL-2.0 LICENSES/GPL-3.0 -%{_unitdir}/* - /usr/sbin/multipath - /usr/sbin/multipathd - /usr/sbin/mpathconf - /usr/sbin/mpathpersist - /usr/%{_lib}/libmultipath.so - /usr/%{_lib}/libmultipath.so.* - /usr/%{_lib}/libmpathpersist.so.* - /usr/%{_lib}/libmpathcmd.so.* - /usr/%{_lib}/libdmmp.so.* -%dir /etc/multipath -%dir /usr/%{_lib}/multipath - /usr/%{_lib}/multipath/* +%license LICENSES/GPL-2.0 LICENSES/LGPL-2.0 +%{_sbindir}/multipath +%{_sbindir}/multipathd +%{_sbindir}/mpathconf +%{_sbindir}/mpathpersist +%{_unitdir}/multipathd.service +%{_unitdir}/multipathd.socket +%{_mandir}/man5/multipath.conf.5.gz +%{_mandir}/man8/multipath.8.gz +%{_mandir}/man8/multipathd.8.gz +%{_mandir}/man8/mpathconf.8.gz +%{_mandir}/man8/mpathpersist.8.gz %config /usr/lib/udev/rules.d/62-multipath.rules %config /usr/lib/udev/rules.d/11-dm-mpath.rules +%doc README +%doc README.alua +%doc multipath.conf +%dir /etc/multipath +%files libs +%license LICENSES/GPL-2.0 LICENSES/LGPL-2.0 +%doc README +%{_libdir}/libmultipath.so +%{_libdir}/libmultipath.so.* +%{_libdir}/libmpathpersist.so.* +%{_libdir}/libmpathcmd.so.* +%dir %{_libmpathdir} +%{_libmpathdir}/* + +%ldconfig_scriptlets libs %files devel %doc README - %{_includedir}/*.h -%dir %{_includedir}/libdmmp - %{_includedir}/libdmmp/* - /usr/%{_lib}/libmpathpersist.so - /usr/%{_lib}/libmpathcmd.so - /usr/%{_lib}/libdmmp.so - /usr/%{_lib}/pkgconfig/libdmmp.pc - -%files help -%{_mandir}/man3/* -%{_mandir}/man5/* -%{_mandir}/man8/* +%{_libdir}/libmpathpersist.so +%{_libdir}/libmpathcmd.so +%{_includedir}/mpath_cmd.h +%{_includedir}/mpath_persist.h +%{_mandir}/man3/mpath_persistent_reserve_in.3.gz +%{_mandir}/man3/mpath_persistent_reserve_out.3.gz %files -n kpartx %license LICENSES/GPL-2.0 %doc README -/usr/sbin/kpartx +%{_sbindir}/kpartx /usr/lib/udev/kpartx_id +%{_mandir}/man8/kpartx.8.gz %config /usr/lib/udev/rules.d/11-dm-parts.rules %config /usr/lib/udev/rules.d/66-kpartx.rules %config /usr/lib/udev/rules.d/68-del-part-nodes.rules +%files -n libdmmp +%license LICENSES/GPL-3.0 +%doc README +%{_libdir}/libdmmp.so.* + +%ldconfig_scriptlets -n libdmmp + +%files -n libdmmp-devel +%doc README +%{_libdir}/libdmmp.so +%dir %{_includedir}/libdmmp +%{_includedir}/libdmmp/* +%{_mandir}/man3/dmmp_* +%{_mandir}/man3/libdmmp.h.3.gz +%{_pkgconfdir}/libdmmp.pc %changelog +* Wed Jul 15 2020 wangyue - 0.8.4-3 +- upgrade the version to 0.8.4 + * Sun Jul 5 2020 Zhiqiang Liu - 0.7.7-20 - remove useless readme files. -- Gitee