From e8f6135e931c1fb7a055730972c4778e8d4891a4 Mon Sep 17 00:00:00 2001 From: idk Date: Thu, 9 Sep 2021 14:18:23 -0400 Subject: [PATCH] Move keys from gitinator to main namespace. Repository history could not be migrated at this time, but may be added retroactively in the near future --- HOWTO-EXPIRED-KEY.txt | 126 +++++++++++++++++++ README.md | 4 +- README.txt | 1 + build.xml | 87 +++++++++++++ debian/changelog | 60 +++++++++ debian/compat | 1 + debian/control | 16 +++ debian/copyright | 29 +++++ debian/install | 2 + debian/maint-script | 124 +++++++++++++++++++ debian/rules | 73 +++++++++++ keys/official_repo.key | 268 +++++++++++++++++++++++++++++++++++++++++ 12 files changed, 790 insertions(+), 1 deletion(-) create mode 100644 HOWTO-EXPIRED-KEY.txt create mode 100644 README.txt create mode 100644 build.xml create mode 100644 debian/changelog create mode 100644 debian/compat create mode 100644 debian/control create mode 100644 debian/copyright create mode 100644 debian/install create mode 100755 debian/maint-script create mode 100755 debian/rules create mode 100644 keys/official_repo.key diff --git a/HOWTO-EXPIRED-KEY.txt b/HOWTO-EXPIRED-KEY.txt new file mode 100644 index 0000000..3d33493 --- /dev/null +++ b/HOWTO-EXPIRED-KEY.txt @@ -0,0 +1,126 @@ +Debian reprepro signing key is 5BCF1346 or 7840E7610F28B904753549D767ECE5605BCF1346 + +If you do all this SEVERAL DAYS BEFORE the key expires, +then users will pull the updated i2p-keyring package, +and all will go smoothly. + + +to update expiration +-------------------- + +1) Update the GPG key + +gpg --edit-key 5BCF1346 +list +key 0 +expire +13m +key 1 (subkey 3CAB5E06) +expire +13m +save + + +2) Backup + +If you didn't do the above on deb.i2p2.no, import the +public key with the new expiration to kytv's gpg there +Also import the new 59683006 key there if it's been renewed since last time. + +If you did do the above on deb.i2p2.no, import the +public key with the new expiration to your own box + +gpg --export -a 7840E7610F28B904753549D767ECE5605BCF1346 > i2p-debian-repo.key.asc +scp i2p-debian-repo.key.asc ... +sudo su kytv +gpg --import i2p-debian-repo.key.asc + + +3) Send to key server + +gpg --keyserver foo --send-keys 5BCF1346 +keyservers: pool.sks-keyservers.net, pgp.mit.edu, keys.gnupg.net + + +4) Put the new public key on the website + +This file is linked from https://geti2p.net/debian + +gpg --export -a 7840E7610F28B904753549D767ECE5605BCF1346 > i2p-debian-repo.key.asc +copy file to mtn i2p.www i2p2www/static/i2p-debian-repo.key.asc +check in and push + + +5) i2p-keyring package update + +gpg --export -a 7840E7610F28B904753549D767ECE5605BCF1346 > official_repo.key +checkout mtn i2p.keyring.i2p branch +copy official_repo.key to keys/official_repo.key in workspace +Update debian/changelog +Update Extended.Version in build.xml +mtn ci, mtn push + +Now build the new package: + +ant debian-binary +ant debian-tarball +cd ../i2p-keyring-201x.xx.xx/ +debuild -S -sa -k85F345DD59683006 + + +Copy these files to a temp dir on the reprepro server: + i2p-keyring_201x.xx.xx.dsc + i2p-keyring_201x.xx.xx.tar.gz + i2p-keyring_201x.xx.xx_all.deb + i2p-keyring_201x.xx.xx_source.build + i2p-keyring_201x.xx.xx_source.changes + +Now add the updated package to reprepro: + +reprepro -v includedeb wheezy i2p-keyring_201x.xx.xx_all.deb +reprepro -v includedeb jessie i2p-keyring_201x.xx.xx_all.deb +reprepro -v includedeb stretch i2p-keyring_201x.xx.xx_all.deb +reprepro -v includedeb buster i2p-keyring_201x.xx.xx_all.deb +reprepro -v includedeb sid i2p-keyring_201x.xx.xx_all.deb +reprepro -v includedeb precise i2p-keyring_201x.xx.xx_all.deb +reprepro -v includedeb trusty i2p-keyring_201x.xx.xx_all.deb +reprepro -v includedeb vivid i2p-keyring_201x.xx.xx_all.deb +reprepro -v includedeb xenial i2p-keyring_201x.xx.xx_all.deb +reprepro -v includedeb zesty i2p-keyring_201x.xx.xx_all.deb +reprepro -v includedeb artful i2p-keyring_201x.xx.xx_all.deb +reprepro -v includedeb bionic i2p-keyring_201x.xx.xx_all.deb +reprepro -v includedeb cosmic i2p-keyring_201x.xx.xx_all.deb +reprepro -v includedeb disco i2p-keyring_201x.xx.xx_all.deb +reprepro -v includedeb eoan i2p-keyring_201x.xx.xx_all.deb + +reprepro -v includedsc wheezy i2p-keyring_201x.xx.xx.dsc +reprepro -v includedsc jessie i2p-keyring_201x.xx.xx.dsc +reprepro -v includedsc stretch i2p-keyring_201x.xx.xx.dsc +reprepro -v includedsc buster i2p-keyring_201x.xx.xx.dsc +reprepro -v includedsc sid i2p-keyring_201x.xx.xx.dsc +reprepro -v includedsc precise i2p-keyring_201x.xx.xx.dsc +reprepro -v includedsc trusty i2p-keyring_201x.xx.xx.dsc +reprepro -v includedsc vivid i2p-keyring_201x.xx.xx.dsc +reprepro -v includedsc xenial i2p-keyring_201x.xx.xx.dsc +reprepro -v includedsc zesty i2p-keyring_201x.xx.xx.dsc +reprepro -v includedsc artful i2p-keyring_201x.xx.xx.dsc +reprepro -v includedsc bionic i2p-keyring_201x.xx.xx.dsc +reprepro -v includedsc cosmic i2p-keyring_201x.xx.xx.dsc +reprepro -v includedsc disco i2p-keyring_201x.xx.xx.dsc +reprepro -v includedsc eoan i2p-keyring_201x.xx.xx.dsc + +review changes: +reprepro ls i2p-keyring + + +6) Announce + +Add a note to /var/www/debian/index.php + +If you did all this before the old key expired, everything is good. + +If not, you may have to tell people to +download the key used to sign the repository and add it to apt: + wget https://geti2p.net/_static/i2p-debian-repo.key.asc + sudo apt-key add i2p-debian-repo.key.asc + sudo apt-get update diff --git a/README.md b/README.md index 8ff9726..dd3387d 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ # I2P Debian Package Keyring -I2P Debian Package Keyring Package. \ No newline at end of file +I2P Debian Package Keyring Package. + +See HOWTO-EXPIRED-KEY.txt for instructions. \ No newline at end of file diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..1249277 --- /dev/null +++ b/README.txt @@ -0,0 +1 @@ +See HOWTO-EXPIRED-KEY.txt in the i2p.reprepro branch for instructions. diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..6b33601 --- /dev/null +++ b/build.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..403242a --- /dev/null +++ b/debian/changelog @@ -0,0 +1,60 @@ +i2p-keyring (2019.09.21) unstable; urgency=medium + + * Extend keys for two more years + + -- zzz on i2p Sat, 21 Sep 2019 12:00:00 +0000 + +i2p-keyring (2018.09.16) unstable; urgency=medium + + * Extend keys for another year + + -- zzz on i2p Mon, 16 Sep 2018 12:00:00 +0000 + +i2p-keyring (2017.09.21) unstable; urgency=medium + + * Fix for old GPG + + -- zzz on i2p Mon, 21 Sep 2017 12:00:00 +0000 + +i2p-keyring (2017.09.20) unstable; urgency=medium + + * Fix incompatibility with new GPG + + -- zzz on i2p Mon, 20 Sep 2017 12:00:00 +0000 + +i2p-keyring (2017.09.18) unstable; urgency=medium + + * Extend keys for another year + + -- zzz on i2p Mon, 18 Sep 2017 12:00:00 +0000 + +i2p-keyring (2016.10.01) unstable; urgency=medium + + * Extend keys for another year + + -- zzz on i2p Sat, 01 Oct 2016 16:50:00 +0000 + +i2p-keyring (2015.10.02.1) unstable; urgency=medium + + * Extend the subkey too + + -- Kill Your TV Fri, 02 Oct 2015 02:29:31 +0000 + +i2p-keyring (2015.10.02) unstable; urgency=medium + + * Extend key for another yet + + -- Kill Your TV Fri, 02 Oct 2015 02:04:04 +0000 + +i2p-keyring (2014.09.25) unstable; urgency=medium + + * Extend key for another year + + -- Kill Your TV Thu, 25 Sep 2014 17:20:29 +0000 + +i2p-keyring (2013.10.12) unstable; urgency=low + + * Initial release + + -- Kill Your TV Sat, 12 Oct 2013 14:09:28 +0000 + diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..7f8f011 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +7 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..35e17f7 --- /dev/null +++ b/debian/control @@ -0,0 +1,16 @@ +Source: i2p-keyring +Section: misc +Priority: extra +Maintainer: zzz on i2p +Build-Depends: debhelper (>= 7), gnupg +Standards-Version: 3.9.4 + +Package: i2p-keyring +Architecture: all +Depends: ${misc:Depends}, gnupg, coreutils (>= 7.4) +Recommends: killyourtv-keyring +Description: GnuPG keys of the I2P package repository + This package provides digital keys used for signing I2P's repositories. + Upon installation of this package, your APT trusted keyring will updated with + these keys. Upon removal of this package, the keys provided by this package + will be removed from the APT trusted keyring. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..9d8ab61 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,29 @@ +This package was debianized by Modestas Vainius on +Mon, 03 Aug 2009 02:12:19 +0300. + +Upstream Authors: + + Modestas Vainius + +Copyright: + + Copyright: © 2009 Modestas Vainius + +License of all content including debian packaging: + + | This package 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 package 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 package; if not, write to the Free Software + | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian systems, the complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL-2'. diff --git a/debian/install b/debian/install new file mode 100644 index 0000000..7d5b9e3 --- /dev/null +++ b/debian/install @@ -0,0 +1,2 @@ +i2p-archive-keyring.gpg usr/share/keyrings +i2p-archive-removed-keys.gpg usr/share/keyrings diff --git a/debian/maint-script b/debian/maint-script new file mode 100755 index 0000000..183b427 --- /dev/null +++ b/debian/maint-script @@ -0,0 +1,124 @@ +#!/bin/sh + +set -e + +KEYRING=/usr/share/keyrings/i2p-archive-keyring.gpg +REMOVED_KEYS=/usr/share/keyrings/i2p-archive-removed-keys.gpg +TRUSTDB=`mktemp --tmpdir trustdb.gpg.XXXXXXXXXX` + +# Run cleanup function on exit +trap cleanup 0 + +run_gpg() { + if [ -f "$TRUSTDB" ] && [ ! -s "$TRUSTDB" ]; then + rm -f "$TRUSTDB" + fi + gpg --homedir=/dev/null --secret-keyring=/dev/null --trustdb-name="$TRUSTDB" \ + --batch --ignore-time-conflict --no-options --lock-never --no-auto-check-trustdb \ + --no-default-keyring --no-use-agent "$@" 2>/dev/null +} + +cleanup() { + if [ -f "$TRUSTDB" ]; then + rm -f "$TRUSTDB" + fi +} + +list_keys() { + run_gpg --with-colons --list-keys "$@" | grep ^pub +} + +print_key() { + echo "$1" | awk -F: 'BEGIN { ORS = "" } { print " " $5, $6, $10; if ($7) print " [ expires " $7 " ]"; }' +} + +remove_keys() { + list_keys "$@" | while read key; do + id=`echo "$key" | cut -d: -f5` + if [ -n "`apt-key export $id 2>/dev/null`" ]; then + print_key "$key" + echo -n " ... " + apt-key del $id + fi + done +} + +sync_keys() { + action="$1" + if [ -s "$KEYRING" ]; then + if [ "$action" = "update" ]; then + echo "Adding/refreshing keys:" + list_keys --keyring $KEYRING | while read key; do + print_key "$key" + echo + done + echo -n "... " + # doesn't work with new GPG + # apt-key add $KEYRING + run_gpg --keyring $KEYRING --export -a | apt-key add - + elif [ "$action" = "remove" ]; then + echo "Removing keys (if exist):" + remove_keys --keyring $KEYRING + else + echo "Internal error: unknown sync action '$action'" >&2 + exit 2 + fi + fi + + if [ -s "$REMOVED_KEYS" ]; then + echo "Removing old keys (if exist):" + remove_keys --keyring $REMOVED_KEYS + fi +} + +postinst() { + case "$1" in + configure) + sync_keys update + ;; + abort-upgrade|abort-remove|abort-deconfigure) + ;; + *) + echo "unrecognized postinst argument: $1" >&2 + exit 1 + ;; + esac +} + +prerm() { + case "$1" in + remove|purge) + sync_keys remove + ;; + + upgrade|deconfigure) + ;; + + failed-upgrade) + ;; + + *) + echo "unrecognized prerm argument: $1" >&2 + exit 1 + ;; + esac +} + +if [ ! -x /usr/bin/apt-key ]; then + exit 0 +fi + +case "$0" in + *prerm) + prerm "$@" + ;; + *postinst) + postinst "$@" + ;; + *) + echo "Unhandled script: $0" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..60aa0ad --- /dev/null +++ b/debian/rules @@ -0,0 +1,73 @@ +#!/usr/bin/make -f + +KEYRING := ./i2p-archive-keyring.gpg +REMOVED_KEYS_KEYRING := ./i2p-archive-removed-keys.gpg +KEYRING_TMP := ./i2p-archive-keyring-tmp.gpg +REMOVED_KEYS_KEYRING_TMP := ./i2p-archive-removed-keys-tmp.gpg +GPG := gpg --homedir=gpghome --batch --ignore-time-conflict \ + --secret-keyring=/dev/null --no-use-agent \ + --no-options --lock-never --no-auto-check-trustdb \ + --no-default-keyring + +gpghome: + mkdir gpghome + chmod 0700 gpghome + +$(KEYRING): $(wildcard keys/*) | gpghome + # Create a keyring from the keys in the keys/ directory + if [ -d keys ]; then \ + $(GPG) --keyring $(KEYRING_TMP) --import keys/*; \ + $(GPG) --keyring $(KEYRING_TMP) --export > $(KEYRING); \ + else \ + echo "No keys in the keys directory." >&2 && exit 1; \ + fi + +$(REMOVED_KEYS_KEYRING): $(wildcard removed-keys/*) | gpghome $(KEYRING) + # Create a keyring from the keys in the remove-keys/ directory + if [ -d removed-keys ]; then \ + $(GPG) --keyring $(REMOVED_KEYS_KEYRING_TMP) --import removed-keys/*; \ + $(GPG) --keyring $(REMOVED_KEYS_KEYRING_TMP) --export > $(REMOVED_KEYS_KEYRING); \ + else \ + touch $(REMOVED_KEYS_KEYRING); \ + fi + +build: $(KEYRING) $(REMOVED_KEYS_KEYRING) + +clean: + dh_testdir + dh_testroot + dh_clean + + rm -rf gpghome + rm -f *.gpg *.gpg~ + rm -f debian/prerm debian/postinst + +build-arch: + # dummy + +build-indep: + #dummy + +binary-arch: + #policy requires this. + +binary-indep: build + dh_testdir + dh_testroot + dh_installchangelogs + dh_installdocs + dh_installexamples + dh_install + dh_installman + dh_link + dh_compress + dh_fixperms + cp -a debian/maint-script debian/prerm + cp -a debian/maint-script debian/postinst + dh_installdeb + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep +.PHONY: clean binary-indep binary-arch binary build diff --git a/keys/official_repo.key b/keys/official_repo.key new file mode 100644 index 0000000..ebbb021 --- /dev/null +++ b/keys/official_repo.key @@ -0,0 +1,268 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBFJXM+IBEAC4d7PbH0ZZjOld1DBu0rFAjZYITMa0yFCqOEbRGd3gdMeMx21h +TJ8B2gICRL6UJL/GFN9HieSzQGAd9ABf924/UQyZJ+zMwt3x0bYAfC8SMWg5XgHM +rR4M9v+aUZ5fsqwXEoKVI0AC3z3e6IutRota6/mpsuFaHwjzsv/0elFa6aapK6D+ +ZYHCQLXEk72RokmYcIxYaNZilgNjKf0IYS5wwEg9NZqiUyaJr9dvQb8uYQMNt0MK +7Lklm5aepFOS+KmThnFTZb5l3UYr/rNvpMmHmS8XpNBvtoga0YNXMYjrPf9QdvjP +1V0dMdOF6rSPkq7sTKDyF713ovSLxgtnibqhp9LgQcjyA43591Fg7cmwNu42ccd2 +Frdt+BxpYjzYu49d+pxQJXoSwPSQFuAE5V0AkuQeng/IxpW3zi6ybJJWOwvxeq2Z +RdNjzpwu0vUYsLELdsCW88etc141n7O9P5L3s4o7PYHE/y3N47PwDgb43cErvTcF +bIP2aEmJnyIbOWwiCftnxaKlfAbv0g7TNho5HX66OreR4Fb5vUkoIfzte/fxZKOL +R/hhNTH1fZNEaIaxHwvitfQe8xPsLgR/O3PoXd74UOJuwOwcf0LROgNaN5O+0rmD +5eAbVn7CYd7ZQPIRRKlHrFsQDg4u5jEt7GVd+jYsEF9A6fK7npNhCkNAnwARAQAB +tDZJMlAgRGViaWFuIFBhY2thZ2UgUmVwb3NpdG9yeSA8a2lsbHlvdXJ0dkBpMnBt +YWlsLm9yZz6JARwEEAECAAYFAlMGmuQACgkQ2C/gPMVbz+MJTQf9GozgpGl/xBBR +bI0LOgjTC318+RQN7ZY710zU+zabmWovuAe08kwhAt4igp73q9K7hl2+rA1Rs77/ +QrtLhsrqXm5575JrG1LkXrPOXIyyucbb1REaXIc5+a7eOcUbc19bBX8hsCtlKsUh +AWR8zIz6ypddaGpXm+xe26ZYbR9Bn+zhNSPS85zJ2wTZ3adoysogtM0RKfBy3sAW +Mr7+vualufkb8VnqAKzUmFdLsQUz8HrTIzGzYARAdY20is3V2HhWpAnKujzHYyaM +1my6f19CTqaPrDb/7DsxmnqfLOHpvs53Nrow5uWXJYAoH5UYQnUXc0vDz4sKrsSt +VOxVySjWWYkBHAQQAQoABgUCUliUEAAKCRCr4MMZ3woKGgdyB/wN6BHiCXoXi7Ji +cdcpK5slgdJ9YYdop7uaygKMCdrXcG0qRlePYNYMtSYwLAj+oe9BPVX2Y3CwGBac +BqAoBN4H5uG6aD3/FsEAqd1qjAdO4YjTBn25dtdrHGWlds4MVJwGhHzoIJ4lrgXc +3lHBZmvK/czCUtzXT1oRoKuIv2c1v8rY5n3wj2L4rZJ1PmYhOTcV4CDMP5StWouh +g1DrvsGmwlB+9O84/o+IWldtVXNGi6FBfprsPOR3avOMtE14BzaCnT6fhTWPw3Qd +NG8EBfpFG/oFk0ta1LbVurA+1ytMn2qvxottbKNZsFMWpFHiUBSfS8NAF8DkHZnP +5vbLHiKoiQGcBBABCgAGBQJTeAZLAAoJEEQpB7WI38RX8Y0L/1ZFDp7F/32I9sbq +z1aNN4GvFlwkpxaS/YloEDf9eSMg2IeZViEXABQ2HkMI3nnBbaSRYUrsLGGZQZZQ +38UfPpezt2YyC9zxLF1DxtJAX1ffqfaiAcjyr9di1RtY43KZzRWyh86IjX5TUZM/ +o49HjXpl7ZZxFZ2J7dnxfelW1XoieLxJEHSwJXt0V96oVAVA90K59DlLe3EyRiOp +ApfIQ+b2Q8wb87+CC6QyKMrSn24qzeds0gFv5Y9PJPTabNVdi6YVhmDL6h5O5dUu +7NXPZTg1JsIAi097oMw/0qQ0dPow+ycjs2uJfF7Q6Njc0+PvAOxE+Klt6xUMdjKg +9NDS6Q/i2bXQZUpBiWXeSizYLFHLaHHYRrz4BLGlyJAiYj1BsREhSmMI6OXrrzDJ +OZR6k6DwCmYGP3y6k4qFLlJYEfxlttRaSjo0N9lt7yZRw+vgX8W37IRzsOFOT+6C +5N6L95fHFbvVdL5JCg580Rkk/tbb+RkGgZP10cAAX8yb1V6t24kBnAQQAQoABgUC +U3jkKgAKCRDy7y9HBp6Lj1VmDACEn6/VAqLqn0YuXR4RtbqJrQ0+ld5GTFX8Lgaz +P9yDRf0NEft84UExvV+Pjky0TPHQKmcPy00iGBl0HK9AQ6L//Qo8CO6GYF224pBK +8KagQ2dIGJw+9IQoIPkun5s47xdrKpsqlqg7yX81ddDlqJMvCCYn5ecjQCSXLqLp +hk+IPSawWzYBkmzcu/4Q9qFEuUVYumeF7o1S3sfsIUbkndPwN1CJ00QUgceLf402 +6y31bVLOVjiI6qzmBo2ExW+QXiDnvO+3uDYFZv6vBCFeDO8jw6lT8Av6qQ1h8Eoq +fTZ2eo9tJkfxHMEE7FBZy8dGGyj+2TzkHCB5/OJyJ3XbWQjSNzRfqIMqmyUiZKrH +BbA8KJ4BynTY+jmJ+2Exf8T8PUPpD5GUwE/mwbbnHSFhXMLnquVjPeexlfehX/eu +V/GDtahyXrlALc9V8OkiVNtI1lhJkxhLYRBre/OVSADIwvGpbLWN3yIO3+NKyrB9 +kE5w66IZOzmDoixWYanZHGyYARWJAZwEEAEKAAYFAlN46GAACgkQ8u8vRwaei48+ +JAv8CJzE+HCZ5zJsiHc37mljP0uWMHkUagmKR8CPnGUi4lfo+yaSQ8og78LTqtiQ +j1iTKcGL8jym9ST6gxjeNGecF3I4ZAhiy0DvvBQLCFY4t0lfn0YTPVL8UR2C4FJE +mApdF1afxlQGGH3mqYbZW8ge0UIb3X/v1fxS9msvlJUrf9DVOD3fxyCNFU7BCk0f +LDA0cPP9tmP92DBQelrZ+D8A5peyGEQ0UmLL4U4nKBZNBTx4O/4KlxmhZxuBl28s +rra4WNqva5tumyfdP8KIIorh4X9n93BaR9DdMQDoXEzwJApQhp/qW8cLI0IUC+U6 +kp+2mpnOnzqP/DbDjSL6LbFVF0PSCcceUUbbDi0nJ39Zq/zlsxABhBUVOmmP1a/Y +GVV+wt8poZe9Sa3Cg6j2QQCHXOwq+Lgio1WpmfI4X38nxhRto5Ww1O7VEK6J0i/u +wHQNI0KqdNWtwe5HJoa00Bn08guK/oq8fFNKqyDiaUZa+SiOIscK9RE5fx0OBNUe +wjrAiQGcBBABCgAGBQJTgMoiAAoJECrT7UPn2xWPWSgMALtMtOZBV/t5/o865419 +CZeNSyHyHtevzbgolqk6gLcmdKpmjdbdE1qKXGTN3J6sXmwZn1KHOmItlPu0t37n +//ArEo0j9B9RQ9eKBaiWfLwBkFIOOD1GSU3UhASSqLfv5hqxMqIQiL9V1WR0H94r +3Qq3hdtUlk6hZp+dX/iP58VY+LIZp4FL2PHqrnynPZKSP0iPQse0GmksFVj8w3tA +EbT23FIiwz35zOHKpmOvgEfkYpIa5dcJ/2B7/3vZTCQXm04h1Gp7/zmtjlCqp/TI +RgQus+kKsYS5abVHa3TMQo4Zg66JMgyH2+hg+sFlR2Qp8hxnyCwMRz3U59BgC/Ln +PFDfC1Jnm29Kv4MRuXd32SpYot/4GDH+ziw4lRmvCnENbrZbnyVqbSaD5wTLEX8g +iF3nEgk1vqUSHlnsbFkJUjjkrgM4XK81HWdW4qi6JuYbL4pqo2kQzKo92KGRDY4b +NMOvDaN/HLwt36F/wHzN6yExrB3WWDH3lOL+Y1ZopWA8nIkCHAQQAQIABgUCU+qo +7gAKCRA6L9iUeafEwVuqEACyRsnnenF8ELMKxfGZnhJB5dg/SPsu9hz79uDwFvHt ++AQtyIJDcK4qPYbztXdzY2iiT3w5do8ZmYrrFH7TXYFAM+Axa03eVQ9jLdco5n1A +DpUNHUUQGUoDszmkdgfhtD8LDPuoHDe3NaMu9OTL8tH4zLxpkh4OTYdA5ESOYWYR +RmQevf5IkJzNcXmcs1SUqfavtgol5/Nsxv49uwd6zJ53krygfTCGxaHcDbesnp4P +a85MAWcUHfw9gv4LbX2de4CRSQ4Px9nNElZC9ZaOhK2rEuCSy4fAWQWuaW7lfPgg +pCLy0FDk44O2laKtGMcmeFHkJlRgKUfHT5JhOlhuA/W64/2Cx8VWV+HYa++AcyU6 +Dzl+8E58i+29BHrkcTqJn0frMaC001z4Knakpr0Rzo179gzhlJbvLHdy52hP+Mmw +22TqcKmHdXYGrOQiy03uQI1WC4BULKuAPo5RQkr2jRsq8/8dqpyUoJ1tlmf0nH33 +qhFvim7hRQhFeJwmboX/veDCPA0Sktas4bfHqYZMdAQ0N8fiZF9fIZXzoHIp/THo +1ez0DvVXcE9WPixENPCsgZKeMeT3RrNZJQKoijv4upTZXb3n0n+S/GFZA8otiTqC +J/Ovtk7RDeNISozpSBbLHtbVapKE6TQ36JoxK2OCkdtQhP7iomCpLar9YgkMJN/+ +OYkCHAQQAQIABgUCVGcYwgAKCRDNl0yaOU1jPwrHEACdqG2123q3kF/8rfUe9gb4 +rgMj8SAfyl8T/oBbjZA6vAvoHk+0OIdty4zlJTC3vmaToN0w7vQOFHGp9JhQr01t +hfvzJB3M4jr/fJE1HcwNqzEj0S7KgBqbItT4jvtEYqyUQriRhgU9S/EzuDVkWOyo +rFDN4X4hjDI1yYSmxImyB/JBnE7m+lnQW/NOztDCwdc2ndNtzknLM6ZbuZZfy7JX +avaCYuG/EqB11ZXUOFZ2b5d93BArVLcWJqJvQpzOaKin2uL2icMUx3YwaRr06rr3 +/mJbLU9c/rKRFGNCQ/4JooPjasbUzda3jBgBloqYZk+zXOJLmJK1DoYS6GUSZhGW +KYrd1c3z43R6IRyEDfqRTulcDy7wiCZXCt1OZJWxyaM0IMEvVeN8vPqayTB8PL36 +JJ4KxMhvBB5xsermmtW/h7wvs8XLlnlfophMhBVejprLW0jv1q+xMyXQUJxgygCz +oB5gKpDz/By6eCoJd5BIS9GGnRJCFnfFMoW7hFiP3Bu/UUGmU0W7qssu+SNLByhj +mxxncwSkaKdLZy30kfzo58dCAkPhFqwL0xwWm9rbUt2ou9dBIHlKNsmDYUPYTpj0 +Pe6re2RL+lt5xgBMKzr2c3R+rZIshSDoDKkc7z9BXkBDdgtTcg6LLfQBcJc86Bp9 +aKcDJ8Xq7gk451obT4lvz4kCHAQQAQIABgUCVHHpAgAKCRCY3btOIsosg7DWEACQ +z4/CPT82p5StN6QfRGxDukQGud4VbF6ZfgNZyPycKAw18+gN5ywiaYhgoXN0MiSg +gUY7L+yT8k82h1pIEMI2fAEFyZEx8hs9W3k6s3tsVcOBEy/pz1V8S6qX9O2WDO6R +RaeQKO1L328D/0V1dd5koGF1Z0bNzmjrN2bjceIcl3kfApc/9Z+8f1loG7J6UMfC +jxFhiwOGRnvrV58csDH1icDhZyIxCYpk3MS1eFdi/z40FWET2B87nJLx0RIGrs3o +wWoaW4tlI99PL0l5W2AsFV4014NONpW4Ys9kqq0eF2VeCG72jnVvles1gJhhCsC8 +ERJ6lZ+gFAjbb0i144hNdUOn1O59QDzktYYFtOlQUpMAV4ozFVCMhA+qoI0zAS+f +wypgb0wChxLob8QEWdPFUvPnqxjgmtJEs0AHCRcbRfT2oJ9/lQ9w1LPGI2SVqcN9 +E2N951xdTCVb4QHWvu+zp/K9sKLM2vnVp+k8G4vFP+nNBcE+CzWlhrlCyxXkrrtH +4VltMSrPFwQ7qUg2hjM0ei+C1ErQ23fbwXulg/K8ZfUakqF2K+S8173e2e3YSzyM +inV3WX/MXnKYQSm2jRNw+11BFlCCXJewPs2fk6ThwXihiq5DhfugktYDBUjHA3NZ +mi3xt2z6Cg7AL0S8rbCmP9eOfS2wQtTplVGdJEmsRokCHAQQAQoABgUCU4Ek3AAK +CRBdcNLrytLJ5uAxD/9EGDCLaRYWcP+cKtzJGoTPZA1iTPhR/r8AbBkA4QD2yK0Q +NICiXwpkcvnlpGEW47eGC7jR4W4EMU2Yfkw0on7W7Ijvmd3Y+GJ+k0DJqQ1Y3GEj +dGtEh+zkst+9nA1Br36Cy0xKRenn+gTPlhSR1tIWnYr/T3HQ5XHSHqLtcQ0S/jo2 +d6bdEu0y1vmeXAoekf54M3RtU9qLoG5t4yuuDbWisH/59gEIJoawmSLfB5Mh0AJW +C+AAVf00N70TfRSCDIJrV98Jma4Rb/9iFqz+oOBMbJcfphSKVmreTmfidnXPhSBn +q42Ee1vHmWrpVnGNvzT+/2HAT2F76y9aBOlxAAD4vyX7qDSkWnl4rygaL9TUQggH +TDiUmCQ4gC9+5D4MoqZrXPtGZ1n0Aw7EGh9mTuk7E2kOyII3Zu6gcaWXvVWtOoFs +cwJWpvwn4NSW9N9ZQlfQlEdpoXdkfSfYkoilh2puXlTDZD9/m95J3G9BbM1RBipU +jUyXcWujsa8SO1LvsreHtLBa4hIX6/KKoEsG8M5Iyg7fN8NdDQkZASi6kXmy6Zpv +qXsEc0bELEnoH0j0JVxELr7IzzQTrRc6wuYNksDTlgOAUTcPJWyGadP4Tbbl/l7Z +yXzKe7hcnPAWJC5bEphvDWyl8FDiMVziCm+hLTkkyFxRnlTrn4MnPpsL5v8+l4kC +PQQTAQoAJwIbAwULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAUCVg3rkgUJBZfrLgAK +CRBn7OVgW88TRm4vD/91ZKyzlI+BP0ZVKnlYzyTJ0pvS0sO9Jyb45//93GyhLjHK +nQfV9uf4xZEZyy/SAHuQPSNvWubK441LFz/mCch+ApXqcOZtowrNNjiQnZFRkQdN +dfHrgS7xigDy5MDG98dJ9P8gfP+eIHuT/KIemYNQ4PrVyj5Xc8/7OqGECCCZpRSQ +yhfDouqHQYPEPxC9Cnvh2eb67gvgwCT/GIw4tJn0atkOzVW3KnzLWVcXkKE9UW41 +XhHQTWfS0ToxtT2COKLr1ZtzBbv/AdrgYxd/lubIq2RTm3lFKS1s/Q8rE+zNc6IC +EvaKzTsgNYg4gst6cCYvqA9JKJFy+U5dV3Yf/yJYDVRalR14NQZ7YE7FThnkYZGy +pv7hi/k5Dsyq2tRWOeR/5xRPzYt+Fl8bmSZkV3AXLY5N02Td80Arr0XlWdTWg3H1 +91BPEA4mmKWc1TtDhdMds1oejqu9ywpzAZ6DLmmjrvCeJ0Z2vLBPJ7EZtBLAnkg6 +cReWiCc42apnT5JYmsc9UaTa8hmp+ZnNzP+r/ewvIiU4Od4OrXRZm3gMFiAHdGgL +humMiSLEiS436RJicHLk93ilA26dRqXlHzb/HHg9BQQu1vFmc7MsACSsQ1JaxwnH +FdR9BY16bHDVgnwBYum3cGahMGxNSTvxDW/ksJNL5s/A0olWI7iZURyNLXgzk4kC +PQQTAQoAJwUCUlcz4gIbAwUJAeEzgAULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAAK +CRBn7OVgW88TRqMoEACvrgN7W8wlv5LOpbbR8IXI6Yb9BsWAYr0V4nMNpnyVwYMW +Iy0y+bsiQvSMApCXlsiewADbpJCriPWARTcMjHaYlPiL5nO0Ms5O/dfE7oO5V08y +00QfcAqJG5/AYf8e2520DJTLuDAhiDaqFFVHeHPuIez1ZuCSRfLpCn9YJgka4fvi +FchC1b4LLJ153nS+Oby4+pi5FR/N7qN61mRZRKQCapvNmF8c+/WO7kam0dYf71ni +r1++vUtnT14fL5d+fET82k/id9cnjYX39Ck0MQ+BPwNOnc2SelI33kQOEp24cZfW +sECNzhlATov6BNLYMmrmjOAAz+wV8f24v6RQvHuXNtdOnAvVl3x9XCuYYzzV245n +t6sWWlGpgqfppV0ttAXFwvPpDhZQG4d3hcETlaKVi9PI48H+Zh9OZYFpNLiCVjPd +wUqL0nwtJpbpvz+KT2BVLpnvA9yRYe5ZYhF1wqTfMlmhd47OtNkpf7Pa4BORftN+ +l3TujjDBJGZZ68UaeIYvWaX5ptqekgYe3yHv3+CxwRDxpB0P6LR02OqCktNLVMvR +pDSwn9QPkR7Fsy5YogZq0AFWC66h+srvsaYZNzPUsveYYlXQchG9eMU7He0RXkdh +0Mkr2CrVbQkrFiYT6lrDw8Vozn6+dc/TGhPPvkoqUvc3VFrr+YbCEg8Ahox+GIkC +PQQTAQoAJwIbAwULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAUCVCRQkAUJA89FqwAK +CRBn7OVgW88TRmM8D/0TKZ/ac4Z/pQp3deNzKzLyPcqN0T/qcOEJBEo2NU8d9aN+ +3cciJmsaS7RxoeGS7ilQyD6HQxVWnzGZ9UMDcR7BiX0Dxxf4hX7lduAFoj0+NwjX +xs2k+ExDoE6CMKJhpjOJifRXQUUc4b6TWEr1J5Eu06BlCewNMVU5IBykVStW3utM +tyebj0smnDRFGkIDkfxQzVChvYKNqlt4QVLWIZNHj2BZUAE72nzyDHPhMTgS6vSk +Cu/m1Vtn9MiTu5X6m3FOH1aLvLKJGsNp6EPFkT3o2783CGInO3y+ygrudzPkLsoZ +FTxzY/wqlx33o/qJ7HlEAAPeo4+Z0tqYanKkrdf4bof8yEeGrZWoll2S8S+oiyWL ++cETf4eyzeRM6fKSJmZN4bJ1BnA0HVtTjWbjhfBaTO2fZA7PZDzT7hmh0xSptw2g +3ycl4buQ3WxyC/N/Mj5Q3UYEwXM6l/By+fs6CyZ2HNf4kmJsvEAZTLAylmtyBy8F +/OyQbmrzHm252lp6sMMBOmLyBPngGFrsb54CDjYjwtPpAyks9z3icCKzjjsxp6aK +Pm0LJny3OnGyXQ6ruiwFIP7FxMY0xaFdFeqOZJkhhwWuObURNkM457t7eMeJ2Zlw +qBAkVnqi2P6kBcWRYd7xcp+gUW3yy/zO2Xe6E/FPrhublUSwVaWDKqLOFyJyf4kC +PQQTAQoAJwIbAwULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAUCVg3lqgUJBZflQQAK +CRBn7OVgW88TRiVwD/0d7bcoU1RcZwPBYQyf8tzv7ODh7Iq5Rt+KTL8PjCtDN4O1 +nEFRPSEIsyFUcjzP+3a/c1KXr/0SSeF77UgO/5mV9ofPTcmfDvJg3bIvA5rIln85 +zQw7UnC0VBldtG12cryLPzvFV6sDvCkjEKGWuLip2FaOMIeHY5Il8Jywbuug1kTn +gl9oY9dp/TIBJs1NPY2I82UZzwIHXtDgR+KI9Gn0PcHaDZryVBFx5dgBI4Sb/aKO +OZ2/Mtv4Qcc/9gsiD54NTPwv08QkmFwPnkvhCq+BJANA9fWEW9wXAjZSXCYo/tiJ +pPv4x+of30TKw3pzrHe19q/41l9EWw4ccLct0eyf5bmuMTdM+6Y+Gar0yFY06/5L +r2xT9OJC6tktybS4R/YWcSXIKX3D5KNwSoOi77/7cnqrFtW3btQAOKmNiuSCzPx5 +xA/auC/KN2p79EgSBV/EYe7ykO+BFgi/hAhMA8rR/OrVnHtniI36cn4NS2kStoOT +WfCRfqwo1HQTH0lxbvJCO9kohMN9gxHDC8UU/kP6CMoNrZPvErjWaGOIoqwXwE/w +orfCYjIEN2xNAQ8PQzf8zbP/mDBczggAJCiCM/MXAPOaVq+asuqN1SDh0PWOQni9 +K74JNZay+yT+Yqj93AlsjcJH0ztKIfEL6BPyWZRVfToVUNoNTwqvYhljvP528IkC +VAQTAQoAPgIbAwULCQgHAwUVCgkICwUWAgMBAAIeAQIXgBYhBHhA52EPKLkEdTVJ +12fs5WBbzxNGBQJdhjV1BQkPC8aTAAoJEGfs5WBbzxNGFTUP/iN2Pp2gcOxWA9dW +ctrp4V36uxpWWdKZ8mG9HlvXBmCdkgftcikKlq5iWVFf1uI/7m5SfMcLj2EXpEuB +/lRRgdDFwKACVCsrjDqedfBOP2XH+sA2kgXKdeJ9JcXRM5vHzJ3/gz09HNWrMnbb +lp7jDZ46T/rDsGxYKjvPsE9/y3MqS3Go0HbILIJJ5eVUE9KzmrT9/KGN1qjSyuZ4 +AMq+3qf+/RfUwgI3Li7FIitqvagz+aq5+5KiEQu3zwU3TjWNKImxWWEjtGfx0RTS +zDxWhgqPMx5EY5RbbJ5FN6QzR7AcN65dc8SdqklQ0rmon04GyhW7U1CWyqLb+I4q +x/O50L6rTg+BL2CwNrA9SDbc4NiZEp8WjyQeu6AxW9z6dvF4ICQD4OCETQXbya1J +c8Cnu9Skglr9aI+oAW5ISxoug8OoQ3bj0JZi8jttdt4P38d6ECQ7uzG8x1s7pViX +lznlXoMSS331mpDwUzgjnb+HxcwtDrMbrKbfY3zjDWBtORQI46oXO0eC1BHUJsSg +kbe8hm3F62iVzGgIccSxKoxQTqS0sVbwpsP/wWPX9nbn0QC5KGh4T4jVxEsDVPvQ +/WfRExyI6ORJy6FvV6WsXxm1cpQHTFfTMLtYEFk1jNJYw5rTwhsIH4lyMA5cz12M +IIE41ilOTjCFOHPz4SnbqcLim0GkiQI9BBMBCgAnAhsDBQsJCAcDBRUKCQgLBRYC +AwEAAh4BAheABQJUJE28BQkDz0LHAAoJEGfs5WBbzxNGxj4P/jKOcNcBje4ffmu6 ++m2F1lOShT4VCtliIAnZNAgFrAaRRJsBddaSbF7IvPphUYD2wnhLkHpSmhvD54ee +qUGZo1ohrRKyiELWUXyDpL4B+u/AiegXotFLkWBDz0ENv0CS2KgdK/k0cE3e0cYY +o/QSMk5enagLhC36iCDJzWGB8QqkCbQmCddy5LUFCq20bABzIQMrxp/wZYK1TnAY +LWzGchylMJLZ/QWxMj3vkud1eoGt9M7fI+9FMX9ODBom70VvqiQnkKleGIegWig+ +1e2e5ID9T1B+H2YduYkv/4EVCZJDn/izB4omGGFhK3f/RkMs8PcryiyApX3zj5bn +maj8mGHNcfINnfXJCgxYwFiPbXJP1YsAi1bnc/HjUmaEYPI8Tsx3PmXvI7Z4Dx3n +sNm0KcjIcutjLJHLezG8kuXCmyguitxgrcaluOpyttLe21f5c2bW6mP6qbs0rrcb +r66wIOPSdeK0AjRo1BG6/5z2RUTUTgotJiE29SN+yxSK1145HuwXx+8l/dQdW/rs +vfNZPgrpPI6KMNlujFkucjtQLWzHyJtiAejomrJCzHdNZDdiPSnF+YjDqLuqlWrj +yvEmENVPRRX1c3/1A0p0Os3+aYY5AkqapZsIMHZf2fUgxI7h53XTBIEPjP+CjZzf +ZY40oJSJaB2SjqBxK5y7xE6X2lKfiQEcBBABCAAGBQJXg3YrAAoJEElgd060gLzS +2D4H/R3/zZ/7uQlCdcwl7ZAGykck4bo67IE9O3ZRNNRpqSbhECIgQsM6A977PpK+ +ZlzawNH+4SJHgL5OJeskveMRQS1pyNipyPYns0apGEhxo5T3FI1IHIGD0XC/BUY0 +ubR5meneYPbwej6sqh3HNY5AINz9bDIdDhxux+F+ZSb1QGT9hfUhC8e6f3AuPwXW +OH9v9cKXiZU5UZzefPZ/gsTwUdgdSE9tXTk0DkJTzmP2yX3vSsNzeXyu2SdQ7xXT +ZF3g/P/VkRYKj+Qn4YM8AXT3IQWbJxNK3yRhPyQuswHUjCGB6TsCiWrDrQWJdLsD +NAqwIlboPVoYoDuEEBJcvV/zKbWJAj0EEwEKACcCGwMFCwkIBwMFFQoJCAsFFgID +AQACHgECF4AFAlfv714FCQd57vIACgkQZ+zlYFvPE0b+Fg/8D4xcMzrv6eTXErA7 +8jQL4RBREXl0EwuTcvv4hZ9Xe+8av/uJagSeOEkc4AjNxPtZ5wuN7LEtLKrQTUoG +SZgap6fyL1Jy02jjKi9FLn4IBvhbWZn3UhRvqUyzCrbAT/FcJOGnzfq/f+xhEuGH +LlQXxmoz5AKOTbSztig8gyu4Dx0dD/LMNTAM3EuTChFNUT1F614sMFowSAYd85N0 +eTFIO8UqHVNR+AY/qrD5BKN3PWyDvwOXJP9Y0pcU9U1R0FwbxSMlqN3N8F3pLBux +3QR8o4TWLlOjb0yojZQWFVkuIXnIo3R1uTGgLrlvK+F7gSpKxKExLwihuvIkM2RA +ITkw5taf+xaatgcDNsaCbZWpAZQ5QP5FH/phybSZ2ilPwpkYeB3COtsfphO/0dne +G9Va5TrLOy6jfSMiGGbjS8OjNDOgVId7U8BytZSLwItkzUkaEKLZn7dQ7Mut9Lf/ +nj+UotSR6cSKeML4ljz8vOxWgtMI5TEUICKG3HmTe4uqIHLXzs8bmE+iu/D3OjNu +iG0JYMeQyoxcY80ym+yf8oxSJn4jv1tjkuWpPI96JFMiYjP34r7hG1cGubL9xqS8 +QfR91HWOCW6+f4eGNI7v4LeLW6zFAOXSuvRO8rQK0UkfdAYmF3d3Zd3taQbmGxXT +5W62OfJEYS+tP7rSyJdKdtfuux+JAj0EEwEKACcCGwMFCwkIBwMFFQoJCAsFFgID +AQACHgECF4AFAlnAHfsFCQlrExkACgkQZ+zlYFvPE0YN/w/8Ci/RZqS1Gyqujqzg +QmDtwS3i9Vjc1eC9EYqtNtOToCUyOWkvRXDcm+ZD77u5+yyiUdlLertwQYViakns +BvVc021q/gZk0A3hrl2PTP120kyysd/eMLVFBq4ycbzWyYpEb9bSz/CT/iqxYEpO +qrTgYPa89xIz2OhOj1Nn6iwQ7lHI9IBbitVoVSISF7WnRRswO/nLMAIstDbfqLlT +gg+4XIpNu2gauZmDU1gMZqQyrl5ibFJ5jSTLTlgzTiyFpnpt6pxruJjYQXs2T/Od +9CBYZV4EaSQBjqWqNm30PUIKCrAz/BuTOoDg5fS11EiKsNAmQ5WKay1mlTHqLlLn +OsMwhgIfcuklxuGtP8LCy9igT0NXCD8RBsWvdsSuYRTVBSbejQm8K6mMxbxUxTUQ +CAJRf/VHUMQ2XbwEEA8mGKk6u97Zvr48e5OVgnCxn+70d9473q++2+cblR+SSufW +yT+jjTmUh7M7//L1sx/6u0tD+Ej8vKHHwfD0EO2Jj6oRmlPmQXYue1xzoiy+K8wv +N0MRDEF9FvLKJfSdZeRRixcwPFZ14j3SLmXcX/VXGQPW594Ts7gi8+todJHfhV0G +2eSiDARJ6Qh3CE8sUTYBOxxRTWzWZqMr8lwjTislGTqJINeir4MZ6k2rgeBJJKyp +p8EDcWH7UYI74q/4V9jRteaX4rW5Ag0EUyx+NgEQANWzAFIGgVIJiKOv2VNjpaiW +hkIEJVQHud/yGLKwjRMTc+oh25fH2moYOIXGbEQ4xbDnlysi7UuEGNq2iQsUFhdI +JD/EcYmiWDysd0QuCvXegofGohMztWuXw6sJ3LY9Cq13foEthcLob5ZrJuSdvNxr +sU/M3wUC0+ArihhKahRUpKdR4PNYz4x+hkduYl+gUaJtpvRAhJeKUfudvjPISJbD +R0cr28tTNugs0F7VAuAWITQvmvqMBuQy3OBUMXdqDTnwhn82jLIylmZM2dXJbzC5 +Nanp4BKmI9DX8W+LWoN5GhUUVRRxE+6xk4pWDSnyLdbbYpyHRaUvrDEs2+NiQ4Yw +JeNtCjNerQLBchQ2rZklmyj3KCCYqLWsJot68BDIxdPj6ahRljwkVJ2VJDsQZqW7 +YDHODE51rrBwrFkJ+4xR1qh4SNVtwLOGvYyRjswVqcpxEOXPdluxlR17M6MUztU4 +DVwdpGy1o+15+Z8VAYyJeuG9MX+1x50dW3g+jM7+cxKIMU6vcQcn6b2/Pjrq8K+f +Anv5ib+HJgnYPk5znUsnPHUB8eoGVnqn+wcaG8UK4SnGF6Slh1PRIjAeq/tD118h +zpYsSKLkF3jh7E1IlDQzVZ2us3i9RMYELwaljhb7Vne8KcNr4J6y3YjxWPPysRU3 +Ey1YkNdltAx8Y0JwFsvdABEBAAGJBEQEGAEKAA8CGwIFAlYN684FCQTCoRUCKcFd +IAQZAQoABgUCUyx+NgAKCRDSQc6/PKteBgkmD/sFBqCRfPi7Eu7XB8wcPRlSteNU +CA2r6YpQMawJU8jpQs+w+XOm3KXq/s0khHXYpvtgqtNeWYZIE2zJQ1pgdc9GfYRh +PHuLH4kLHUqrd46U6hvce18p13eGXR3jzRdQuAT6JLCxvnZHCRWKdfnb6986zQPk +A+YTB3j5rlChRlu0LAe9Y4qBUNBWvg1AdXpYa0n6GU14xELsMaT64OZerV1AVYfi +gRwWQ40/bS+xHWiTZ93vX97+hAVN4N0aOHZDaKy0uStCdrP7uKD5yJe1d8AYXYqe +Ci1cTixbq8BjnAZbHHpiGEKPOCiE8PPEay9RLLtY83VwV2oOjhr/ro+NcC/zPU7M +hssWfkAhd+1/xGmtGfbQhlA44AJxmRU81HORRHn/LwmgRhts0weBmQ02Fgf0NGqZ +d2OdM9gSXcxxlwsrB9wSiP36YY4VStlIo0eJR1PQgZbjd0yowwqKSLWwsdfiTGVW +1JeBfO15mI4RvLRyivJJ932mrHJB60I9Z+37INQwBf8DHW7n7hsGwPmrObgwV9wz +f3cDbmvCi7wGrhExaaEpCHMlcbgOcGWCuEl6DjiznW5yl9jQ8Z9gV7kxEYAJGDyO +Lr+9l7/JTzC57rQFS1N2OnTWfnUFv2ZlMnNJWMKSDt/sUf2F3JOAmWMvE8u6797R +/6ipLtuhBfgbfZfqRQkQZ+zlYFvPE0agtQ//boWLm6a0WgnFOy2pcWqVrn/ytDr2 +dAnpQ9zqP8Uu8kpEbJ31o/+W7dopYboICbqglH/uawAwUNs+XiKvNCoK1NYavlyI +AHXqeKarJBho+eqjayAoZWWAyXAnbgXN8NAPYcFXK9i9bY1YbULxwneCYbitfbzE +PbzrcgjQo9AfwCpVvxWxvYVhBTHQvw4OovTRnCohWYTeSK85vKI1kRoUrvLBh8j+ +aX/C6QDmTio7sek+lj46BZnjHYeM4v4vJPwDi2A8qiFtq2UvPF8yLmo1t2KdrX6W +oYj3c531WbSqK1PRcqNl6QnSIfHoGUc8trnfLeIe+p+hZmcBzcy+pVpUG/yLnAut +Mjo5z8OAE9wKq+i6a8FWTPjBKQk+aSoHWzxvfMVW2uC5WKiraDi/P7mP7sKSuIWE +i4zbVr3051aiZTX9FE6ci+tKkWDZSfx2roTCLl4awV2KIHl2gIbw5g4IX+H7z7C0 +P5nKVpuyp354kQHrowdo9SHM/Dyc4drmfDzUHFnM5DDbOxIoAgU42eJQwtBE7f8W +Bcu4jupXIGTOrSCgzkzc1rh+bFNI3Twe9bj50QH9oCCyw/Q1eHT8nqU54wm9byRV +VMmMEDCwpPahx30tdGoC/PxwauPbYWq7C9P4L69f/rkd8aEhwGT/xqIxphXe2Id6 +IF1zopWyYbHYJ4yJBFsEGAEKACYCGwIWIQR4QOdhDyi5BHU1Sddn7OVgW88TRgUC +XYY1gQUJDjZ8SwIpwV0gBBkBCgAGBQJTLH42AAoJENJBzr88q14GCSYP+wUGoJF8 ++LsS7tcHzBw9GVK141QIDavpilAxrAlTyOlCz7D5c6bcper+zSSEddim+2Cq015Z +hkgTbMlDWmB1z0Z9hGE8e4sfiQsdSqt3jpTqG9x7XynXd4ZdHePNF1C4BPoksLG+ +dkcJFYp1+dvr3zrNA+QD5hMHePmuUKFGW7QsB71jioFQ0Fa+DUB1elhrSfoZTXjE +QuwxpPrg5l6tXUBVh+KBHBZDjT9tL7EdaJNn3e9f3v6EBU3g3Ro4dkNorLS5K0J2 +s/u4oPnIl7V3wBhdip4KLVxOLFurwGOcBlscemIYQo84KITw88RrL1Esu1jzdXBX +ag6OGv+uj41wL/M9TsyGyxZ+QCF37X/Eaa0Z9tCGUDjgAnGZFTzUc5FEef8vCaBG +G2zTB4GZDTYWB/Q0apl3Y50z2BJdzHGXCysH3BKI/fphjhVK2UijR4lHU9CBluN3 +TKjDCopItbCx1+JMZVbUl4F87XmYjhG8tHKK8kn3faasckHrQj1n7fsg1DAF/wMd +bufuGwbA+as5uDBX3DN/dwNua8KLvAauETFpoSkIcyVxuA5wZYK4SXoOOLOdbnKX +2NDxn2BXuTERgAkYPI4uv72Xv8lPMLnutAVLU3Y6dNZ+dQW/ZmUyc0lYwpIO3+xR +/YXck4CZYy8Ty7rv3tH/qKku26EF+Bt9l+pFCRBn7OVgW88TRjHVD/9PCbycUE4U +IQIe5wAZaxw3GxgiIbewGhl2pfHtSpopzSkcglXl+u/G9kFd3beyHA6TFOPUrxXH ++Y0phQTg5iM4CLayIX6O+PeZYcftiKw5VOB7vR/4NqA54rbY2w1czMws1Fvwi77k +i9C/EKr3zi21aHdz87UrDxPoGh464kUBJDHiGdIlYK3le7bzMWu9Cp93S4ptfM8F +2hSdS7mJ69F+lFXts6aBkOaCkagxRMar9q3uGqhpRzF3pZkFYVgqwdjszxps2Ykb +fICm0Pw+tHCnBZU9N6y4xzoWynYVgGh5+IGyHyFYKuYfyNfIINg5my/rmUkksklU +k8tdNIODg6KDPXMyBiJkeYiD9FD0mO4ONfvCw08eue+4qOdRCLG+8QcSffO7DvDT +8sL/0RZL922Sk4q+yZkqTIXqckvSuhV4sXUcHXUnnu6j2V4PL+kOAh0WGZvDu60v +ETXzOZldaX9KoeWtmjLoj9KQd23uyJMh1z6Epw4DcsFBntUElHL5j0Veo3qMztAj +SgrTHH89lh7QZ8ZtU8TbwKROJOuyBL2A4uN+dMO3obKpLFfAFj+pQDj3hWeK45yl +UWEXwzYXlo6htZDOuMazEHajVDiUoEDh5BBSNC8NhAKw6yFexQacySw30UhxcF/4 +GI5fntTjhyu6d6NJ0xVcWa/w+hTyPDjQGQ== +=KZp7 +-----END PGP PUBLIC KEY BLOCK-----