From 09eac739de1975ec9015e1dfb74cbf058f5b9d92010f13859ba48662a5694ed0 Mon Sep 17 00:00:00 2001 From: Reinhard Max Date: Mon, 2 Oct 2017 14:34:17 +0000 Subject: [PATCH 1/3] - Security update to version 2.78: * bsc#1060354, CVE-2017-14491: 2 byte heap based overflow. * bsc#1060355, CVE-2017-14492: heap based overflow. * bsc#1060360, CVE-2017-14493: stack based overflow. * bsc#1060361, CVE-2017-14494: DHCP - info leak. * bsc#1060362, CVE-2017-14495: DNS - OOM DoS. * bsc#1060364, CVE-2017-14496: DNS - DoS Integer underflow. * Fix DHCP relaying, broken in 2.76 and 2.77. * For other changes, see http://www.thekelleys.org.uk/dnsmasq/CHANGELOG - Obsoleted patches: * Fix-crash-introduced-in-2675f2061525bc954be14988d643.patch * Handle-binding-upstream-servers-to-an-interface.patch OBS-URL: https://build.opensuse.org/package/show/network/dnsmasq?expand=0&rev=90 --- ...uced-in-2675f2061525bc954be14988d643.patch | 29 ----- ...ing-upstream-servers-to-an-interface.patch | 119 ------------------ dnsmasq-2.76.tar.xz | 3 - dnsmasq-2.76.tar.xz.asc | 7 -- dnsmasq-2.78.tar.xz | 3 + dnsmasq-2.78.tar.xz.asc | 17 +++ dnsmasq-groups.patch | 6 +- dnsmasq.changes | 17 +++ dnsmasq.spec | 6 +- 9 files changed, 41 insertions(+), 166 deletions(-) delete mode 100644 Fix-crash-introduced-in-2675f2061525bc954be14988d643.patch delete mode 100644 Handle-binding-upstream-servers-to-an-interface.patch delete mode 100644 dnsmasq-2.76.tar.xz delete mode 100644 dnsmasq-2.76.tar.xz.asc create mode 100644 dnsmasq-2.78.tar.xz create mode 100644 dnsmasq-2.78.tar.xz.asc diff --git a/Fix-crash-introduced-in-2675f2061525bc954be14988d643.patch b/Fix-crash-introduced-in-2675f2061525bc954be14988d643.patch deleted file mode 100644 index 0c46baf..0000000 --- a/Fix-crash-introduced-in-2675f2061525bc954be14988d643.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 16800ea072dd0cdf14d951c4bb8d2808b3dfe53d Mon Sep 17 00:00:00 2001 -From: Simon Kelley -Date: Tue, 30 Aug 2016 23:07:06 +0100 -Subject: [PATCH 4/4] Fix crash introduced in - 2675f2061525bc954be14988d64384b74aa7bf8b - ---- - src/network.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/src/network.c b/src/network.c -index ddf8d31..d87d08f 100644 ---- a/src/network.c -+++ b/src/network.c -@@ -1516,8 +1516,9 @@ void check_servers(void) - serv->flags |= SERV_MARK; - continue; - } -- -- serv->sfd->used = 1; -+ -+ if (serv->sfd) -+ serv->sfd->used = 1; - } - - if (!(serv->flags & SERV_NO_REBIND) && !(serv->flags & SERV_LITERAL_ADDRESS)) --- -2.11.0 - diff --git a/Handle-binding-upstream-servers-to-an-interface.patch b/Handle-binding-upstream-servers-to-an-interface.patch deleted file mode 100644 index 211fe9c..0000000 --- a/Handle-binding-upstream-servers-to-an-interface.patch +++ /dev/null @@ -1,119 +0,0 @@ -From 2675f2061525bc954be14988d64384b74aa7bf8b Mon Sep 17 00:00:00 2001 -From: Beniamino Galvani -Date: Sun, 28 Aug 2016 20:44:05 +0100 -Subject: [PATCH 1/4] Handle binding upstream servers to an interface - (--server=1.2.3.4@eth0) when the named interface is destroyed and recreated - in the kernel. - ---- - CHANGELOG | 5 +++++ - src/dnsmasq.h | 1 + - src/network.c | 31 +++++++++++++++++++++++++++++-- - 3 files changed, 35 insertions(+), 2 deletions(-) - -diff --git a/src/dnsmasq.h b/src/dnsmasq.h -index 27385a9..f239ce5 100644 ---- a/src/dnsmasq.h -+++ b/src/dnsmasq.h -@@ -488,6 +488,7 @@ struct serverfd { - int fd; - union mysockaddr source_addr; - char interface[IF_NAMESIZE+1]; -+ unsigned int ifindex, used; - struct serverfd *next; - }; - -diff --git a/src/network.c b/src/network.c -index e7722fd..ddf8d31 100644 ---- a/src/network.c -+++ b/src/network.c -@@ -1204,6 +1204,7 @@ int local_bind(int fd, union mysockaddr *addr, char *intname, int is_tcp) - static struct serverfd *allocate_sfd(union mysockaddr *addr, char *intname) - { - struct serverfd *sfd; -+ unsigned int ifindex = 0; - int errsave; - - /* when using random ports, servers which would otherwise use -@@ -1224,11 +1225,15 @@ static struct serverfd *allocate_sfd(union mysockaddr *addr, char *intname) - return NULL; - #endif - } -+ -+ if (intname && strlen(intname) != 0) -+ ifindex = if_nametoindex(intname); /* index == 0 when not binding to an interface */ - - /* may have a suitable one already */ - for (sfd = daemon->sfds; sfd; sfd = sfd->next ) - if (sockaddr_isequal(&sfd->source_addr, addr) && -- strcmp(intname, sfd->interface) == 0) -+ strcmp(intname, sfd->interface) == 0 && -+ ifindex == sfd->ifindex) - return sfd; - - /* need to make a new one. */ -@@ -1250,11 +1255,13 @@ static struct serverfd *allocate_sfd(union mysockaddr *addr, char *intname) - errno = errsave; - return NULL; - } -- -+ - strcpy(sfd->interface, intname); - sfd->source_addr = *addr; - sfd->next = daemon->sfds; -+ sfd->ifindex = ifindex; - daemon->sfds = sfd; -+ - return sfd; - } - -@@ -1429,12 +1436,16 @@ void check_servers(void) - { - struct irec *iface; - struct server *serv; -+ struct serverfd *sfd, *tmp, **up; - int port = 0, count; - - /* interface may be new since startup */ - if (!option_bool(OPT_NOWILD)) - enumerate_interfaces(0); - -+ for (sfd = daemon->sfds; sfd; sfd = sfd->next) -+ sfd->used = 0; -+ - #ifdef HAVE_DNSSEC - /* Disable DNSSEC validation when using server=/domain/.... servers - unless there's a configured trust anchor. */ -@@ -1505,6 +1516,8 @@ void check_servers(void) - serv->flags |= SERV_MARK; - continue; - } -+ -+ serv->sfd->used = 1; - } - - if (!(serv->flags & SERV_NO_REBIND) && !(serv->flags & SERV_LITERAL_ADDRESS)) -@@ -1547,6 +1560,20 @@ void check_servers(void) - if (count - 1 > SERVERS_LOGGED) - my_syslog(LOG_INFO, _("using %d more nameservers"), count - SERVERS_LOGGED - 1); - -+ /* Remove unused sfds */ -+ for (sfd = daemon->sfds, up = &daemon->sfds; sfd; sfd = tmp) -+ { -+ tmp = sfd->next; -+ if (!sfd->used) -+ { -+ *up = sfd->next; -+ close(sfd->fd); -+ free(sfd); -+ } -+ else -+ up = &sfd->next; -+ } -+ - cleanup_servers(); - } - --- -2.11.0 - diff --git a/dnsmasq-2.76.tar.xz b/dnsmasq-2.76.tar.xz deleted file mode 100644 index 689001e..0000000 --- a/dnsmasq-2.76.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4b92698dee19ca0cb2a8f2e48f1d2dffd01a21eb15d1fbed4cf085630c8c9f96 -size 480796 diff --git a/dnsmasq-2.76.tar.xz.asc b/dnsmasq-2.76.tar.xz.asc deleted file mode 100644 index 00151b5..0000000 --- a/dnsmasq-2.76.tar.xz.asc +++ /dev/null @@ -1,7 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1 - -iEYEABECAAYFAlc8gxEACgkQKPyGmiibgrcEZQCghIcBK2ici5/4klzL7gMQmrar -ZtkAn0evIF/mFDAJsQlWnGTbew3lsxAs -=SVPw ------END PGP SIGNATURE----- diff --git a/dnsmasq-2.78.tar.xz b/dnsmasq-2.78.tar.xz new file mode 100644 index 0000000..cbcc202 --- /dev/null +++ b/dnsmasq-2.78.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89949f438c74b0c7543f06689c319484bd126cc4b1f8c745c742ab397681252b +size 489172 diff --git a/dnsmasq-2.78.tar.xz.asc b/dnsmasq-2.78.tar.xz.asc new file mode 100644 index 0000000..f986d0f --- /dev/null +++ b/dnsmasq-2.78.tar.xz.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2 + +iQIcBAABCAAGBQJZ0kGzAAoJEBXN2mrhkTWiYaYQAIadoc1Cr6Qg0cDxhUNMDL0G +Qp4VWhD/KkxUerTCWdWiSlWBt94hnDNlOBJ8QnqHHzYH/dopvOdLU3/HpVUMYfZf +XA2wCz38xQREj961jZ8r3kK1LR42NqqlV/E4qn4lsZedxgq62lP2xiZiVWaRqe9g +klXlzUORfu/JxyOKTtyy4rR0YNOWx2GYex5T3av+sieKgcR7ZryQgZF+SGoonqil +srbKriSXLSpVjyDp+3fLECAguL/dzw53pWdoAm9ZizWu8miNqGj/PbQJx44tpwOO +N2+4y07yD0e6eNlQOb3JStmyrTSO+qwqQG4kFKFPDM0/ZBGTUcmA2WZjDXrGySfD +015T9JW+6CkJ3ikCW0ik9PiO5ryKJgIhejyT2POL0/APaKTj4wmDbK6ekYivanpD +2hCkyCcvNrxx5oADGPhlHC5okYXdJ9Hrr+AcdMMdhFZCo5U2JP0TMqZaotQQdy54 +GoOEKJ+ij116Tw8hqA0k34zcwklaXluZX4ghm7ZxoOiJwwO6fUeKKBnxXvwzpgm6 +3jCq8OJkCpXym3S5nD0y/QWGLJtaNFYVRYO4J4YnfjICGd88NtQnCXzND1R+dvdi +Z06MgDOuUFu2ZSode13u1uU6w3h415m6M45jAeBRwZhGX26+NM9a9P+tO6gmR0Hy +zyOEsbgfqBof6BBlPdlw +=ecMB +-----END PGP SIGNATURE----- diff --git a/dnsmasq-groups.patch b/dnsmasq-groups.patch index 141c982..953c323 100644 --- a/dnsmasq-groups.patch +++ b/dnsmasq-groups.patch @@ -1,13 +1,13 @@ --- src/dnsmasq.c.orig +++ src/dnsmasq.c -@@ -557,11 +557,10 @@ int main (int argc, char **argv) +@@ -581,11 +581,10 @@ int main (int argc, char **argv) if (!option_bool(OPT_DEBUG) && getuid() == 0) { int bad_capabilities = 0; - gid_t dummy; -- /* remove all supplimentary groups */ -+ /* set the supplimentary groups of the daemon user */ +- /* remove all supplementary groups */ ++ /* set the supplementary groups of the daemon user */ if (gp && - (setgroups(0, &dummy) == -1 || + (initgroups(daemon->username, gp->gr_gid) == -1 || diff --git a/dnsmasq.changes b/dnsmasq.changes index 56fa2ac..437bf74 100644 --- a/dnsmasq.changes +++ b/dnsmasq.changes @@ -1,3 +1,20 @@ +------------------------------------------------------------------- +Mon Oct 2 14:09:59 UTC 2017 - max@suse.com + +- Security update to version 2.78: + * bsc#1060354, CVE-2017-14491: 2 byte heap based overflow. + * bsc#1060355, CVE-2017-14492: heap based overflow. + * bsc#1060360, CVE-2017-14493: stack based overflow. + * bsc#1060361, CVE-2017-14494: DHCP - info leak. + * bsc#1060362, CVE-2017-14495: DNS - OOM DoS. + * bsc#1060364, CVE-2017-14496: DNS - DoS Integer underflow. + * Fix DHCP relaying, broken in 2.76 and 2.77. + * For other changes, see + http://www.thekelleys.org.uk/dnsmasq/CHANGELOG +- Obsoleted patches: + * Fix-crash-introduced-in-2675f2061525bc954be14988d643.patch + * Handle-binding-upstream-servers-to-an-interface.patch + ------------------------------------------------------------------- Tue Sep 12 08:29:59 UTC 2017 - tchvatal@suse.com diff --git a/dnsmasq.spec b/dnsmasq.spec index 2089169..bc0a7a1 100644 --- a/dnsmasq.spec +++ b/dnsmasq.spec @@ -20,7 +20,7 @@ Name: dnsmasq Summary: Lightweight, Easy-to-Configure DNS Forwarder and DHCP Server License: GPL-2.0 or GPL-3.0 Group: Productivity/Networking/DNS/Servers -Version: 2.76 +Version: 2.78 Release: 0 Provides: dns_daemon PreReq: /usr/sbin/useradd /bin/mkdir @@ -35,8 +35,6 @@ Source6: SuSEFirewall.dnsmasq-dhcp Source7: SuSEFirewall.dnsmasq-dns Source8: %{name}-rpmlintrc Patch0: dnsmasq-groups.patch -Patch10: Handle-binding-upstream-servers-to-an-interface.patch -Patch11: Fix-crash-introduced-in-2675f2061525bc954be14988d643.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: dbus-1-devel BuildRequires: dos2unix @@ -70,8 +68,6 @@ server's leases. %prep %setup -q %patch0 -%patch10 -p1 -%patch11 -p1 # Some docs have the DOS line ends dos2unix contrib/systemd/dbus_activation From 7a3d7e2c7bce09963c866b51aee6a10c1b56b9d12635e734e3646c82a10115ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ismail=20D=C3=B6nmez?= Date: Fri, 1 Dec 2017 15:00:21 +0000 Subject: [PATCH 2/3] Accepting request 547138 from home:cbosdonnat:branches:network - Get rid of python dependency due to examples. (fate#323526) OBS-URL: https://build.opensuse.org/request/show/547138 OBS-URL: https://build.opensuse.org/package/show/network/dnsmasq?expand=0&rev=92 --- dnsmasq.changes | 5 +++++ dnsmasq.spec | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/dnsmasq.changes b/dnsmasq.changes index 437bf74..257f9f6 100644 --- a/dnsmasq.changes +++ b/dnsmasq.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Fri Dec 1 14:50:09 UTC 2017 - cbosdonnat@suse.com + +- Get rid of python dependency due to examples. (fate#323526) + ------------------------------------------------------------------- Mon Oct 2 14:09:59 UTC 2017 - max@suse.com diff --git a/dnsmasq.spec b/dnsmasq.spec index bc0a7a1..f157544 100644 --- a/dnsmasq.spec +++ b/dnsmasq.spec @@ -69,6 +69,10 @@ server's leases. %setup -q %patch0 +# Remove the executable bit from python example files to +# avoid unwanted automatic dependencies +find contrib -name *.py -exec chmod a-x '{}' \; + # Some docs have the DOS line ends dos2unix contrib/systemd/dbus_activation From b5b76cd9b134fc6454d14cea806dcd0fc08840383f10799d08b8dda923c1e093 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ismail=20D=C3=B6nmez?= Date: Mon, 4 Dec 2017 13:39:44 +0000 Subject: [PATCH 3/3] - Update keyring OBS-URL: https://build.opensuse.org/package/show/network/dnsmasq?expand=0&rev=93 --- dnsmasq.changes | 5 ++ dnsmasq.keyring | 143 ++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 118 insertions(+), 30 deletions(-) diff --git a/dnsmasq.changes b/dnsmasq.changes index 257f9f6..0d7cad9 100644 --- a/dnsmasq.changes +++ b/dnsmasq.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Mon Dec 4 13:39:32 UTC 2017 - idonmez@suse.com + +- Update keyring + ------------------------------------------------------------------- Fri Dec 1 14:50:09 UTC 2017 - cbosdonnat@suse.com diff --git a/dnsmasq.keyring b/dnsmasq.keyring index 8d86ce1..b8a47fd 100644 --- a/dnsmasq.keyring +++ b/dnsmasq.keyring @@ -1,33 +1,116 @@ -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v2 -mQGiBEdAp6gRBACnOax2ntWEcx7Fw4OMXOJrGmfFcHUVkoe+hpRaFlfENvhffPdM -8qELIlc6xvQRUfnHViIYYTYNbKd4+8QRQMP9lZwKP0ckDA7/2WW7oig/6MNGGYu+ -VmngF+l0KU5gyib8NYeyiBjdJOcBrx3+q9S0U+BhyxmrvHgxJub4n/sJiwCgq/oH -n2b7cKdqzuK1+B5TaRKExk8D/RoZYGRDvSJpMzJyyED77CAH946I+oVbNLyYMMy/ -LxaA/x0nBQ9Mu0bAVvUHF+lG++kKNAd7vcveGPKCoXVuPOx/LtdOgMma/ipEGHWt -mzgHRoNIYweffwMhEP929woWJ2KXrH0P0imel7aOLHYl7w6hybdaQ9tBExMlMj6r -1+4DA/9LduhBW1MWxttDUhex0iXQPx6vFwqai+yjtueyhC3Y5ZGe8JBdWLXzoD3v -IMfCeLk0RKoy0EP2JhgUwYxvg80KPDLHfEcZWk2BR/LXyHPyf2x7N1YVJewYkCSN -VTUgiH6HfxGdH3ucP9vEMiP/0p0umN4MMZiKzMYylVpPTNfzlLQwU2ltb24gS2Vs -bGV5IChuZXcga2V5KSA8c2ltb25AdGhla2VsbGV5cy5vcmcudWs+iEYEEBECAAYF -AkdBboEACgkQKeFPmTkbOShRlgCfSh1u9jLW4tp33rfSlkO3xzkPj24AnieFVZk8 -kPTTqz7J/0T0Dot9H3SGiEYEExECAAYFAkdMI68ACgkQFuL09fyB4VlLuQCdGHJe -uokNUce+dy0pNF2R8mejemsAnRCmxKnl8/7FRCY0mfF3Pk+mnbX4iGAEExECACAF -AkdAp6gCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRAo/IaaKJuCtwePAJkB -pdX+q/VLx1PEM6ux9tGPXIeqcACfb0ZC5bOrQK6z4VstM70q+fajiNC5Ag0ER0Cn -uBAIAMo6EdGScaI0qDzDuvmrTr4VbGxf4LOGE7s/LGZKLP0M0I1W5WXEIUcU5u3j -sGuKDZ+YP5eNFg5V48GvVCOSDq16senlyaFNfwZ8CqWJGE2wz1PiFzGR08hALsfH -11i6efntcISuSgjQpFkL6AA3I4yANskTK40ZfSyha0WKCI/8nfQ3OVbgUjb63jFG -ckuidHEZiWIdl8K0DifDFGF2uQmOZ9tsTidpBOf1mZoq4Uy8sRDehdqu14TB1nOh -ERFrJhVA43OWlklCuIGrh2qOQENYKemZapdE37EiPd7MT3E3fGWO7dlXk5Kqk97S -Va89u4h5cqxMW63CaIMFn8T/5mMAAwYIAIPQHFbZ2d1RfiBTKrEJ2LNWa978kihF -y6nQoyajZ92i/9uYQwLdrhJahrO2AONJ1fqoL5asS0nprE1TqOHPJBfKCxUKMHzI -MM+uRwbxENafQIlPL1E5qzsWwcJZx2JdWLLL7kVnIrIRzH6nL/qdr9fbDBBJR1NS -KgfCrT+qy7+VVrA+QcoXEFiuBz/MlmbtZHNrHy+6p3HcvDev98AWdoLobhkUfQN/ -/5ujk2iwnmFCsBcqwrbpaq8TJHThur+COTZ2C9AXCRJfDvgEUKAGHaqXvq8grshT -ibk64wttvZtQQ+8w/X01LPWBcTBK1RJS+ZkiCtTH7/ppYTmXSY17eDuISQQYEQIA -CQUCR0CnuAIbDAAKCRAo/IaaKJuCt7CJAJ4oh5z19BNnN12v7QIkxXyVU0jt5wCd -G9/hEd8WOkbOb2yQ2rny/XBVtCs= -=7kAN +mQINBFMbjUMBEACsU1Xk8+uu/EsGVJTh9Tn31C2e0ycd0voBVT7cTdtXpzeiNR+o +/zUAi95ds7FiecpZJp1nRO4vNzvaaAPZhFsFVLzZYyIVABgTXsskT88xbZvzb4W5 +KKRWVhoTQxVDgj1+dXLUXULTB6rg02WEhqnix/qf/zFdM9I4/3pRHJn9k+3XKygR +on+nYtljfn3AKBelCo1y28istC6wCncoH11b/qdQtlfxVXaJY4HF27V0MqFFmDMg +cuhOHR7DnhymeDh7GmLfTHJ4LUFG+TecqCjiYhyWcuv2wuSb0EPXUKHJQVViQ8qg +KyPm1ly6uFP0CYdVavO7/oJwKFBIChECrj7BQ4GsImMHeuSzfWno7qy6Fxoxx2+g +0F9cdXWvcxFDGPQsL5vXp8KYNwBrzmijRzQ2ZAnrbG+ilFCkJCbxXcrhzpd4tKwE +0dgcyPL1Ma/lrznhL4ZuOzjVMgLNne7WiPpBNRqI1GoT0pUn6as4pU3En8B+K7zy +MLVfHvI1+iH45fP5bZwYSbXCa85v4+xqljYrzs9giaROEsXe/tsXvuc6JPCcmJXk +CUO3c3QVxqDFt9OYuTHIR8hqehDPLgFgzKqVuoAwMkhTf/zZNGlsy4jvKXQNcZ50 +uD4mWO3e+gykNW/OH+88IoCR0rgjQ6trMLOceZFnrtvxwRL//lMndGCTYQARAQAB +tB1TaW1vbiBLZWxsZXkgPHNya0BkZWJpYW4ub3JnPohGBBARCAAGBQJTIekzAAoJ +ECnhT5k5Gzkoj68AoLY6cFPxNnlydNDCV5iyFSzEl12RAKCl5yuxvzKxW1q7uVcG +CsD9f9Z5/YhGBBARCAAGBQJTL0SDAAoJEBbi9PX8geFZnAsAnAs9JR/9UxY1QnWF +HA2j7uSlQYt1AJ4zM23PcfSyZ9SfzgJJEEVggkMiEIkCHAQQAQgABgUCUyHp8gAK +CRAC0CBFCPsO9xaxD/9IX6DfMxFh5n6o0LebuyWJsk0I90wKJ53TmjBl83qgeF8F +pENzucALqZJ3AUXvqKt3n9tKDYfNHpOniEjL/kzlZcW/iO2b7QpdgqcOMe/Xb3ux +IAsWhgqWbgriWcTtP+omSdz+YaUtZ9abljmNX9B9X1nDG/KRPk6HnHHN42I52+SZ +XikIKT5u3Xm0YPSkgjaf9Mw9V8NUAMuWGtYGsGnuVorKfpDlW8jgaJUGcdKIqwZU +RpfTJS4NjMZlJTZEtokbgE80eqUepJBi+zKjpAc+keDQrq9ZZkWmAU5ceUtgw0n3 +U1L4NfsGqUSJvad1ZCoJjNm2BFQkr8N3obqvZ7rT/kI+focLCpBmvUxF1jq8QlL0 +ul3m4Yg55AVMQMFnbalxQBvbRxk10rUn4GCKV9W4y8sCzZbt8A3Eu0Aexd00K+WS +qvryh0wjwLrDdl3hHpcvi1+hheX16Y4qI3lKIKkr0cck3FIC5fq8feVPJH7+wbWF +rGe27hOfVPbMElGCHYOIq4ksfqGefsXul/V9kRRQT8DpVJ9uan5roJd+f2a+CcXn +VDKUqQUJq5eFXlay6wS1aU0AJ4mMpcGD53wuQDoWYl5wxthnMFN1xo3k7At9dGkC +QKw4NaTaVck2WE6e2ZV9rowsOeWXrhL/eP7XCco4eKF/5zZ7FEzLl5AJQrCpVIkC +HAQQAQgABgUCUy9EqgAKCRBjziC6xJxBSJJ/EAC41IxcJQazTbF0m+dBFzXQeQnG +b/CDtieBVrhZl916rI/a1A6NN1/rk4xIg4Iit+lYc8Oxwl+w/d+NseiMV/HzWImc +WY53HH1qoH0oPXkUPhaGCr4TKTxOI9lQQeJVT1FHw3pP/uYh76VU0noZnWJKTb0P +WDr6gznoajHZ3fLRzwWcIrVOzoPWl5GIiIyr6CMZxx1UnKKb/JkjdarMe+6X/9aZ +0QXPCBeqHTfBvHeJBLbNd2/CDIH6AFtWmT7prE4hti6kC9M1dhBX0fPiKZagMWVc +Z1jMIzNvpDIfjpE2B8SUBvxRwKSdCMvCdrACNc8QeCsfrJqu5hH0fUsEvFggcDig +FhAJTGafgCsMs4XqRnrx4zx58HFW7i4C2SWKX1fw1TKeHIj0MNYmhARPnZ6SiO06 +vfU0JccK1SZORhs8TAnEA5EwF/ckQ+XPZusZGBxJtpwkblEThDDaF8olM5BOI2Tg +OkvBisKEsrwK2adFLuMBm2HdTZbsWpzs4V8qzfO6j/ZFFEIbd+M5Vftog6ngKehu ++TQ3FcOES1Skx4/Sjuo9bw53GsXJDdgKjG73iLHVLp1rebXjc66N2aUzQazsBzJ6 +rhs3cWiQvOszFyKg7qzBfOCH1EYLMyRGsHO1aASldB/w9twGWIX6wNXZph6sYE32 +qZs30VffQgoZpadCwokCNwQTAQgAIQUCUyDDdAIbAwULCQgHAwUVCgkICwUWAgMB +AAIeAQIXgAAKCRAVzdpq4ZE1oqFGD/9LkbZFigc1jbZ5zIbmGkGvfniWp1mJhEcp +gKNfb2MMiu1lKULccIvfVyIY5WDrrpoPnHLnhYA9OXHcwVADGBayoVOQgIePrMV0 +V24uYjUh9+9zGRwQrCLo0rl/l07GKH0S1dxDUeyhJRYZGYEqW2+3XDJqIbfsDzSm +PNCyjVvqSvkkt0YyuNbH0+cVEoJ1Q2HmfEhvgd4LlHZDyhMVqKlKmlnCa8DmhwK+ +EyzJgLKITqjxBO3NOqPmYZlp8irLXyHAH1sDafaBwRjV9cNX2TLTwn3wDdUmoAwM +z1jopi/61A0kEglENYaa+NH/UnqfWOo7riXuZNwGVP/F/KlMV+JdXMY34fcSIQMW +k9cpxzhpuOJjwhoK7g/yq8q9578QXv4VR6ndH+LeHDRrm2Ftnih/Ut8unqqDteMJ +nd3YxSK3Ep78WgVBL9y2Qo3CyKY6VSXlshWZokwyrwVS8uLqIGAUzLwsKTYi1nms +Db7mQZqUbPBxYN2mrroD7Pr1/XAV8oNxw6l84nzfzObEKvNZLFtWctNpFJXhWhtm +/AeQBdkYKcMyTrwQt9Q0XMYKUGE05U+oAdtTvgCRJLltqzmt5yMpTPncNmXVoA5Y +vEVdCU6/Gxpn3Aea8ckBmIqxxQY1QFdEr2nvxPNASbkvHDNDr9XUlKQDqjherurK +BIBEiKCMnLQmU2ltb24gS2VsbGV5IDxzaW1vbkB0aGVrZWxsZXlzLm9yZy51az6I +RgQQEQgABgUCUxuNwQAKCRAo/IaaKJuCt0K1AJ9VX7VMWs0ECf4+hyf6d0qGutHy +cgCeMSyQgaaL/XbiUbhPaxdTgWjGQ3iIRgQQEQgABgUCUyHpMwAKCRAp4U+ZORs5 +KMjoAJ463imlnHBKRGUmZ45Z3OwxJx7kvgCePl6vO1lSo/XCdOaPE0UpCsSWJRCI +RgQQEQgABgUCUy9EgwAKCRAW4vT1/IHhWQW1AJ0dyPzHcxuJAbQnnMHj8zLynSkt +UgCfQshlIc2/HKFEbTM2yJR/Re45ui+JAhwEEAEIAAYFAlMh6fIACgkQAtAgRQj7 +Dvch0g//cWB0hAsMJ3jBQDuJxBh8gEJ4b8g8190brWXl9faXPqjpuYi1A/tRFcfP +gL408NN9+8iBzmuZ2SNwqYJgYZo9fEPbxIJrWZ+hDF2kRAr3nbEY1End0OfghdAF +G6NSUKmYVVHWCxGWHL3zYBJipeiKFR8D/JqB/3MQxXOWOhnZRQHicpcpz3Wdy2/e +AxMmvFUHNpkhvC+sumQ1vMn+jPJ6UBu39XMiW/ZTySapR2WhZ6Stg39Q7ziVwfPB +UB9alvvsPbiKLM3VowzkhpsDrmsztxjJqX2TyT5B+ZV6BVyjeQTv5f4LxENY7Jqd +eFWRyanXDux0R5LC0C7zQ0Eot2puKJNsZtyp9ja8idStkJlARq1ruArcGm4L4aCh +sa9BgAwkCVZS6kQgvlCKfeydJDrGY/BWI8ANyNVOcPMCYklKsPLvvDgghRpta0ul +0Mv8Gxgz8GYwmZ2jRyAko/M3lxPWJIU39nzLP0vDS0FD8rtYN/yKCBjZ2nRE8xJg +HdNhSZ3FJVKNOcgwHFYPyKsIDPGrSUKhFi2BNEB63Kjlonmggiffn8diocSp0aqS +gF0qL/jNCmA5CFfTkBPioqBs8XZazdmRZm3yCiy2DMB9LMTJICY224T/CoX8QyFK +EpMvYFE8MMq6SVYypF2esjRaUqPjLZ/Dhy9dpy6s8kDjU8Gnq8eJAhwEEAEIAAYF +AlMvRKQACgkQY84gusScQUi4WA//agQcVXsdp8Wr6zFeFXdAIWCWuYiNePDW6g+x +GS57gg1sIvsK6p3zItE6FB5YdS6d+r13dOlvCckhyIgMS9Mw6aurXU+uX+ojk0We +lusbnm8SoKgt5GbMXBM3HmEdXTgipUYUALGe0PQST/2Wn0g/zTptrMXTzp3mJvCA +OEF8Fg1Tmsq1fBTiAwZAS5j4ZtQRjRK3YQgQmLL6mEje4BSQTbM13IjTCbQZl1jc +k7B7TQHiiELsxEYGAgtvy7kziJaHiOs+pjO5lWbj7K2qkWuYhiE7xiOKnkM4k6fs +aiLvGD0KxOu4kDKkmWQsb92oXooiXdOpeBRaRGBIOR+BTA/SVuK752sS8F3PMdf2 +VUEIcpboIXrRPY+6D0GwN+d6MlAggLpHeFIjWLVCzQm2c3ynSghQmo5yHyGPCKjR +rlr5roylYgwJNu2yJSkHsjShMSMfCZK+Fj0ASxZlwpE/o2EDCcf0ekqDcK6WudEq +H00/svuNxqUkOeXtyn35MtEmZPjv5u6Fu4Cj48M4f1Ji7Dm/SDVyd4GEvwg0938A +PlLAAPoF53k9yMoGKn1PHZ5NrpldtICJvKv0kGIsoTDPj2QpCl3h8qHlP0mzu9g1 +isP2bWSP9W/cV67nNRwSif1FzTyUcqByIuHWfwEUP85PN/W3gTJxptALAdctfpXk +5azWTOaJAjoEEwEIACQCGwMFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AFAlMgw44C +GQEACgkQFc3aauGRNaLaZg/+PR41J3P7omGv6XD+TiAXfJQoR5RfzQoeLNUQEnir +/XBulg45203cYHEurchEhSTn2f4WVtFgxJrgId7XGYdf8oIZIjBd82fpwdMwhbfc +v/6iqzWL0+2vaPmBqE7iwDTatI888q5TyXppGe8L5/VjX0aBvmVIPyEE9BFQas+v +v5byUkU542FxPApGsv0W0P1pKabLl0F7ItPFPuaD0+K1kwBrWbuGhBKMV9jGHB4q +dX/21FBczgAf3J9yJ22vm6orCwwhptxde+DSn7vqZNjDtHGrkUWDzKAQBy1g4BmT +l6IoVgYKZXAVBGMtYUjS+80VV+QE9meVqmtX1aJJEnf0/BRdv9CeD46hZArwXwi/ +AWFs300pEfzwcC+9T5xc3jlSdYdWxeQDV7XwK2VCOhxjFqTm+ehP2Gh14Wfpc34j +N9jMJ3OowxzN5iZxGYzkHLFhM+0IKEeWEjxRWOoJgV5PmNvG7IBbzt8O9xo550h7 +JmXZVsfSpkFpzJPy0Puz1JeyH/niCeDwKkhEHXQTk/4O+EODRxruJbwIYGeO2lNf +Pn2Hcb1aHvSclx7GGOYDzI4jN0UcYroJpvHZU+0X2ClpCTAW5IshgHkOkdUQ1c7S ++5zPTeLbW+pxTlbWClA0NYMbSn68//i/DMstyBEwtTWYJLmg5V3HWzRd/6BwKZfD +Suu5Ag0EUyDDoQEQAMfQfa2tw3+OJFGMQEzLJSoXYN8/HnZEgKNlcMuYzhheQLgu +/MfcQJ7mnCIdn6xdPaalfLmYx63tM47/NGEM1+MSEvovPiRG0OLxzSgwei9DiGeN +EgsPTLXSZ5EVSXCM1+e9mT1ExT9aGLNnpCd6kIyWIcKCVMot+XC70R9prWLeyKSh +0FAZ0Pwv9i23osJVGOtJjND+WZ0uCeN29ocfN0b64yF4nPRc9IbcmYIDgNU3RybK +2Z/dupbthTisRjHRI3iX3/tiymXF3J0sSvsCluWIJWmyltS3Xyk/wfKVJz6OouiJ +jTj5utXVnCGptCDw+DCcj89vx1N0+0Dhm1cQcNZvXjMbVDTsuU+eVpJbxU6y8N+n +XpAXjEw4jMi3zNpqKtkyv2YpoqY5HhGLybgrY0zwSQOyMNf9lZ5J7znq5gEmiMXn +G9OPEw7PPSvm6QfbHPY/jAOgxsu7Fme7k303D5KkyGkkbzQiYyEtMZvbOMH/uECi +2uHGB72qiGpEYjMtHhihaRCBl+0bY8sH83He690qNQHSdStjaKXcecduE/v5iO0m +OYIHdsEHhKlWsE1GXXVLofBr68UBhYV6/AGXko4Pr+dXLzauN4kALDx6WltFu3qU +voD+uEoLq7IXULMo5Pyd7bO4qGQMKykaXTb5o6dqdu4GzWIUw1fr9kLEmo29ABEB +AAGJAh8EGAEIAAkFAlMgw6ECGwwACgkQFc3aauGRNaIjqA/+PXuaM6JHuudLycmB +0iKAwyB5csOFGpF3b9FgMR68TC4jzi5J5hJZASl0cO/e0ytQsrDUBbH74y+WaA4l +dwBVYr0j/2hqzIjrnGMtgWeHFPLV3sKw8DGuNx1/cOoljJXzi1WWSHIwDvaj3uZ9 +CwHt+4/abR7kdvMcnFhQVA4zuzZWFqpp+CDkkJNVwB9zxtAQwGTGF4cQ0IvTkhCo +6DQhZZVTeyn+nBKxzzWijniWc0LyRsum03MxZ6E7UVIInCTjdXTalnO8wColwIx5 +FV4nTMxdsKKgnIXmLexBdd03bW9TkowWf2C2XfDN+pDS8X3MzO6zAyogqJhAiBFj +nRzkOw0cw1VTL00o8uiWdMeu7OKOKeQbUilMAn4MweKB57mc582kjeGmwdZgWFA4 +BJ2eiH7HwjxiynwMdZwQEBdOTNLbggHk3/mScF8U1KcJhjAFf7Ne+Z0feG/8GgKl +5aj3ucl821+dfpzB79lLo+kmd1qkDyDiUR5yN6P8l8k6IAUJz2KUe0BjtO6VFFw0 +xni05dkrXdfo7IO79ictHmEn+g3QO8ZLUGRwdtZ1cMhTkm7FhH8Bdby0y4Soqluv +Hbri++cC91i1I3a92kHi/8O45rnLhVt+sOfxY1QnSIYh5OFwGMqMCNDTEL7ESiFa +FhSXkmzzVntlyvOBMlgz3IGh2hA= +=00xm -----END PGP PUBLIC KEY BLOCK-----