summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Watson <cjwatson@debian.org>2020-10-20 14:12:31 +0100
committerColin Watson <cjwatson@debian.org>2020-10-20 14:12:31 +0100
commite371906fbbbbc11b0dced8fd4e0d258eb489d7c1 (patch)
tree4d0d8d2afd52572deb7910e29ff5a334b2bcf702
parente429009cde648a41479cd1b60ce972760a2bdabc (diff)
parent3728919292c05983372954d27426f7d966813139 (diff)
New upstream release (8.4p1)
-rw-r--r--.depend6
-rwxr-xr-x.github/run_test.sh34
-rwxr-xr-x.github/setup_ci.sh51
-rw-r--r--.github/workflows/c-cpp.yml39
-rw-r--r--.gitignore3
-rw-r--r--.skipped-commit-ids2
-rw-r--r--ChangeLog3743
-rw-r--r--INSTALL16
-rw-r--r--Makefile.in23
-rw-r--r--PROTOCOL6
-rw-r--r--PROTOCOL.agent2
-rw-r--r--PROTOCOL.sshsig3
-rw-r--r--PROTOCOL.u2f130
-rw-r--r--README2
-rw-r--r--aclocal.m4193
-rw-r--r--auth-options.c20
-rw-r--r--auth-options.h4
-rw-r--r--auth-pam.c6
-rw-r--r--auth.c9
-rw-r--r--auth2-pubkey.c18
-rw-r--r--auth2.c26
-rw-r--r--authfd.c6
-rw-r--r--authfd.h6
-rw-r--r--authfile.c10
-rw-r--r--channels.c9
-rw-r--r--channels.h9
-rw-r--r--clientloop.c38
-rw-r--r--compat.c44
-rw-r--r--compat.h8
-rw-r--r--config.h.in21
-rwxr-xr-xconfigure734
-rw-r--r--configure.ac94
-rw-r--r--contrib/gnome-ssh-askpass2.c99
-rw-r--r--contrib/redhat/openssh.spec7
-rw-r--r--contrib/ssh-copy-id158
-rw-r--r--contrib/ssh-copy-id.12
-rw-r--r--contrib/suse/openssh.spec6
-rw-r--r--debian/.git-dpm16
-rw-r--r--debian/NEWS16
-rw-r--r--debian/changelog130
-rw-r--r--debian/control2
-rw-r--r--debian/patches/authorized-keys-man-symlink.patch6
-rw-r--r--debian/patches/avoid-extra-ports.patch67
-rw-r--r--debian/patches/conch-old-privkey-format.patch6
-rw-r--r--debian/patches/debian-banner.patch30
-rw-r--r--debian/patches/debian-config.patch22
-rw-r--r--debian/patches/dnssec-sshfp.patch2
-rw-r--r--debian/patches/doc-hash-tab-completion.patch6
-rw-r--r--debian/patches/gnome-ssh-askpass2-icon.patch6
-rw-r--r--debian/patches/gssapi.patch138
-rw-r--r--debian/patches/keepalive-extensions.patch20
-rw-r--r--debian/patches/mention-ssh-keygen-on-keychange.patch8
-rw-r--r--debian/patches/no-openssl-version-status.patch2
-rw-r--r--debian/patches/openbsd-docs.patch22
-rw-r--r--debian/patches/package-versioning.patch8
-rw-r--r--debian/patches/restore-authorized_keys2.patch2
-rw-r--r--debian/patches/restore-tcp-wrappers.patch18
-rw-r--r--debian/patches/revert-ipqos-defaults.patch16
-rw-r--r--debian/patches/scp-quoting.patch4
-rw-r--r--debian/patches/selinux-role.patch34
-rw-r--r--debian/patches/series1
-rw-r--r--debian/patches/shell-path.patch8
-rw-r--r--debian/patches/ssh-agent-setgid.patch6
-rw-r--r--debian/patches/ssh-argv0.patch6
-rw-r--r--debian/patches/ssh-vulnkey-compat.patch8
-rw-r--r--debian/patches/syslog-level-silent.patch8
-rw-r--r--debian/patches/systemd-readiness.patch12
-rw-r--r--debian/patches/user-group-modes.patch32
-rw-r--r--defines.h4
-rw-r--r--hostfile.c54
-rw-r--r--hostfile.h5
-rw-r--r--kex.c6
-rw-r--r--kexdh.c3
-rw-r--r--krl.c7
-rw-r--r--log.c10
-rw-r--r--loginrec.c3
-rw-r--r--m4/openssh.m4199
-rw-r--r--match.c12
-rw-r--r--match.h6
-rw-r--r--misc.c263
-rw-r--r--misc.h6
-rw-r--r--moduli867
-rw-r--r--moduli.02
-rw-r--r--monitor.c21
-rw-r--r--monitor_wrap.c4
-rw-r--r--monitor_wrap.h5
-rw-r--r--msg.c4
-rw-r--r--mux.c14
-rw-r--r--openbsd-compat/bcrypt_pbkdf.c4
-rw-r--r--openbsd-compat/memmem.c216
-rw-r--r--openbsd-compat/port-net.c7
-rw-r--r--openbsd-compat/sys-queue.h375
-rw-r--r--packet.c11
-rw-r--r--readconf.c113
-rw-r--r--readconf.h3
-rw-r--r--readpass.c46
-rw-r--r--regress/Makefile5
-rw-r--r--regress/addrmatch.sh14
-rw-r--r--regress/agent-subprocess.sh22
-rw-r--r--regress/agent.sh73
-rw-r--r--regress/misc/sk-dummy/sk-dummy.c2
-rw-r--r--regress/multiplex.sh14
-rw-r--r--regress/netcat.c38
-rw-r--r--regress/percent.sh51
-rw-r--r--regress/servcfginclude.sh36
-rw-r--r--regress/unittests/Makefile4
-rw-r--r--regress/unittests/match/tests.c4
-rw-r--r--regress/unittests/misc/tests.c88
-rwxr-xr-xregress/unittests/sshkey/mktestdata.sh53
-rw-r--r--regress/unittests/sshkey/test_file.c133
-rw-r--r--regress/unittests/sshkey/test_fuzz.c4
-rw-r--r--regress/unittests/sshkey/test_sshkey.c9
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_sk113
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_sk1-cert.fp1
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_sk1-cert.pub1
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_sk1.fp1
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_sk1.fp.bb1
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_sk1.pub1
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_sk1_pw14
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_sk213
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_sk2.fp1
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_sk2.fp.bb1
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_sk2.pub1
-rw-r--r--regress/unittests/sshkey/testdata/ed25519_sk18
-rw-r--r--regress/unittests/sshkey/testdata/ed25519_sk1-cert.fp1
-rw-r--r--regress/unittests/sshkey/testdata/ed25519_sk1-cert.pub1
-rw-r--r--regress/unittests/sshkey/testdata/ed25519_sk1.fp1
-rw-r--r--regress/unittests/sshkey/testdata/ed25519_sk1.fp.bb1
-rw-r--r--regress/unittests/sshkey/testdata/ed25519_sk1.pub1
-rw-r--r--regress/unittests/sshkey/testdata/ed25519_sk1_pw9
-rw-r--r--regress/unittests/sshkey/testdata/ed25519_sk28
-rw-r--r--regress/unittests/sshkey/testdata/ed25519_sk2.fp1
-rw-r--r--regress/unittests/sshkey/testdata/ed25519_sk2.fp.bb1
-rw-r--r--regress/unittests/sshkey/testdata/ed25519_sk2.pub1
-rw-r--r--regress/unittests/sshsig/Makefile25
-rwxr-xr-xregress/unittests/sshsig/mktestdata.sh42
-rw-r--r--regress/unittests/sshsig/testdata/dsa12
-rw-r--r--regress/unittests/sshsig/testdata/dsa.pub1
-rw-r--r--regress/unittests/sshsig/testdata/dsa.sig13
-rw-r--r--regress/unittests/sshsig/testdata/ecdsa5
-rw-r--r--regress/unittests/sshsig/testdata/ecdsa.pub1
-rw-r--r--regress/unittests/sshsig/testdata/ecdsa.sig7
-rw-r--r--regress/unittests/sshsig/testdata/ecdsa_sk13
-rw-r--r--regress/unittests/sshsig/testdata/ecdsa_sk.pub1
-rw-r--r--regress/unittests/sshsig/testdata/ecdsa_sk.sig8
-rw-r--r--regress/unittests/sshsig/testdata/ecdsa_sk_webauthn.pub1
-rw-r--r--regress/unittests/sshsig/testdata/ecdsa_sk_webauthn.sig13
-rw-r--r--regress/unittests/sshsig/testdata/ed255197
-rw-r--r--regress/unittests/sshsig/testdata/ed25519.pub1
-rw-r--r--regress/unittests/sshsig/testdata/ed25519.sig6
-rw-r--r--regress/unittests/sshsig/testdata/ed25519_sk8
-rw-r--r--regress/unittests/sshsig/testdata/ed25519_sk.pub1
-rw-r--r--regress/unittests/sshsig/testdata/ed25519_sk.sig7
-rw-r--r--regress/unittests/sshsig/testdata/namespace1
-rw-r--r--regress/unittests/sshsig/testdata/rsa39
-rw-r--r--regress/unittests/sshsig/testdata/rsa.pub1
-rw-r--r--regress/unittests/sshsig/testdata/rsa.sig19
-rw-r--r--regress/unittests/sshsig/testdata/signed-data1
-rw-r--r--regress/unittests/sshsig/tests.c139
-rw-r--r--regress/unittests/sshsig/webauthn.html692
-rw-r--r--scp.07
-rw-r--r--scp.111
-rw-r--r--scp.c20
-rw-r--r--servconf.c77
-rw-r--r--servconf.h11
-rw-r--r--serverloop.c4
-rw-r--r--session.c43
-rw-r--r--sftp-client.c4
-rw-r--r--sftp-server.022
-rw-r--r--sftp-server.822
-rw-r--r--sftp-server.c39
-rw-r--r--sftp.07
-rw-r--r--sftp.111
-rw-r--r--sftp.c11
-rw-r--r--sk-api.h7
-rw-r--r--sk-usbhid.c626
-rw-r--r--ssh-add.020
-rw-r--r--ssh-add.135
-rw-r--r--ssh-add.c92
-rw-r--r--ssh-agent.020
-rw-r--r--ssh-agent.123
-rw-r--r--ssh-agent.c158
-rw-r--r--ssh-ecdsa-sk.c169
-rw-r--r--ssh-keygen.047
-rw-r--r--ssh-keygen.141
-rw-r--r--ssh-keygen.c336
-rw-r--r--ssh-keyscan.02
-rw-r--r--ssh-keyscan.c18
-rw-r--r--ssh-keysign.02
-rw-r--r--ssh-keysign.c4
-rw-r--r--ssh-pkcs11-helper.02
-rw-r--r--ssh-pkcs11.c5
-rw-r--r--ssh-sk-helper.02
-rw-r--r--ssh-sk-helper.c13
-rw-r--r--ssh-sk.c47
-rw-r--r--ssh.012
-rw-r--r--ssh.123
-rw-r--r--ssh.c128
-rw-r--r--ssh.h7
-rw-r--r--ssh_api.c14
-rw-r--r--ssh_config3
-rw-r--r--ssh_config.067
-rw-r--r--ssh_config.585
-rw-r--r--sshbuf-getput-basic.c4
-rw-r--r--sshbuf-misc.c47
-rw-r--r--sshbuf.h6
-rw-r--r--sshconnect.c10
-rw-r--r--sshconnect2.c107
-rw-r--r--sshd.07
-rw-r--r--sshd.811
-rw-r--r--sshd.c120
-rw-r--r--sshd_config.027
-rw-r--r--sshd_config.525
-rw-r--r--sshkey.c26
-rw-r--r--sshkey.h11
-rw-r--r--sshsig.c17
-rw-r--r--sshsig.h9
-rw-r--r--version.h4
218 files changed, 8310 insertions, 4632 deletions
diff --git a/.depend b/.depend
index 1ccc1dcc7..f05bd9d74 100644
--- a/.depend
+++ b/.depend
@@ -60,7 +60,7 @@ gss-serv-krb5.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd
60gss-serv.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h 60gss-serv.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
61hash.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h crypto_api.h 61hash.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h crypto_api.h
62hmac.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h sshbuf.h digest.h hmac.h 62hmac.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h sshbuf.h digest.h hmac.h
63hostfile.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h match.h sshkey.h hostfile.h log.h misc.h ssherr.h digest.h hmac.h 63hostfile.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h match.h sshkey.h hostfile.h log.h misc.h pathnames.h ssherr.h digest.h hmac.h
64kex.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ssh.h ssh2.h atomicio.h version.h packet.h openbsd-compat/sys-queue.h dispatch.h compat.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h sshkey.h kex.h mac.h crypto_api.h log.h match.h 64kex.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h ssh.h ssh2.h atomicio.h version.h packet.h openbsd-compat/sys-queue.h dispatch.h compat.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h sshkey.h kex.h mac.h crypto_api.h log.h match.h
65kex.o: misc.h monitor.h ssherr.h sshbuf.h digest.h 65kex.o: misc.h monitor.h ssherr.h sshbuf.h digest.h
66kexc25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h sshkey.h kex.h mac.h crypto_api.h sshbuf.h digest.h ssherr.h ssh2.h 66kexc25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h sshkey.h kex.h mac.h crypto_api.h sshbuf.h digest.h ssherr.h ssh2.h
@@ -125,8 +125,8 @@ sftp-server.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-c
125sftp.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h log.h pathnames.h misc.h utf8.h sftp.h ssherr.h sshbuf.h sftp-common.h sftp-client.h openbsd-compat/glob.h 125sftp.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h log.h pathnames.h misc.h utf8.h sftp.h ssherr.h sshbuf.h sftp-common.h sftp-client.h openbsd-compat/glob.h
126sk-usbhid.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h 126sk-usbhid.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
127sntrup4591761.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h crypto_api.h 127sntrup4591761.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h crypto_api.h
128ssh-add.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h ssh.h log.h sshkey.h sshbuf.h authfd.h authfile.h pathnames.h misc.h ssherr.h digest.h ssh-sk.h 128ssh-add.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h xmalloc.h ssh.h log.h sshkey.h sshbuf.h authfd.h authfile.h pathnames.h misc.h ssherr.h digest.h ssh-sk.h sk-api.h
129ssh-agent.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h ssh.h sshbuf.h sshkey.h authfd.h compat.h log.h misc.h digest.h ssherr.h match.h msg.h pathnames.h ssh-pkcs11.h sk-api.h 129ssh-agent.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h sshbuf.h sshkey.h authfd.h compat.h log.h misc.h digest.h ssherr.h match.h msg.h pathnames.h ssh-pkcs11.h sk-api.h
130ssh-dss.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h 130ssh-dss.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
131ssh-ecdsa-sk.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/openssl-compat.h sshbuf.h ssherr.h digest.h sshkey.h 131ssh-ecdsa-sk.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h openbsd-compat/openssl-compat.h sshbuf.h ssherr.h digest.h sshkey.h
132ssh-ecdsa.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h 132ssh-ecdsa.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/fnmatch.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h
diff --git a/.github/run_test.sh b/.github/run_test.sh
new file mode 100755
index 000000000..93c3a5e9e
--- /dev/null
+++ b/.github/run_test.sh
@@ -0,0 +1,34 @@
1#!/usr/bin/env bash
2
3TARGETS=$@
4
5TEST_TARGET="tests"
6LTESTS="" # all tests by default
7
8set -ex
9
10for TARGET in $TARGETS; do
11 case $TARGET in
12 --without-openssl)
13 # When built without OpenSSL we can't do the file-based RSA key tests.
14 TEST_TARGET=t-exec
15 ;;
16 esac
17done
18
19if [ -z "$LTESTS" ]; then
20 make $TEST_TARGET
21 result=$?
22else
23 make $TEST_TARGET LTESTS="$LTESTS"
24 result=$?
25fi
26
27if [ "$result" -ne "0" ]; then
28 for i in regress/failed*; do
29 echo -------------------------------------------------------------------------
30 echo LOGFILE $i
31 cat $i
32 echo -------------------------------------------------------------------------
33 done
34fi
diff --git a/.github/setup_ci.sh b/.github/setup_ci.sh
new file mode 100755
index 000000000..e2474ccd7
--- /dev/null
+++ b/.github/setup_ci.sh
@@ -0,0 +1,51 @@
1#!/usr/bin/env bash
2
3TARGETS=$@
4
5PACKAGES=""
6INSTALL_FIDO_PPA="no"
7
8#echo "Setting up for '$TARGETS'"
9
10set -ex
11
12lsb_release -a
13
14for TARGET in $TARGETS; do
15 case $TARGET in
16 ""|--without-openssl|--without-zlib)
17 # nothing to do
18 ;;
19 "--with-kerberos5")
20 PACKAGES="$PACKAGES heimdal-dev"
21 #PACKAGES="$PACKAGES libkrb5-dev"
22 ;;
23 "--with-libedit")
24 PACKAGES="$PACKAGES libedit-dev"
25 ;;
26 "--with-pam")
27 PACKAGES="$PACKAGES libpam0g-dev"
28 ;;
29 "--with-security-key-builtin")
30 INSTALL_FIDO_PPA="yes"
31 PACKAGES="$PACKAGES libfido2-dev libu2f-host-dev"
32 ;;
33 "--with-selinux")
34 PACKAGES="$PACKAGES libselinux1-dev selinux-policy-dev"
35 ;;
36 *) echo "Invalid option"
37 exit 1
38 ;;
39 esac
40done
41
42if [ "yes" == "$INSTALL_FIDO_PPA" ]; then
43 sudo apt update -qq
44 sudo apt install software-properties-common
45 sudo apt-add-repository ppa:yubico/stable
46fi
47
48if [ "x" != "x$PACKAGES" ]; then
49 sudo apt update -qq
50 sudo apt install -qy $PACKAGES
51fi
diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml
new file mode 100644
index 000000000..2189756bb
--- /dev/null
+++ b/.github/workflows/c-cpp.yml
@@ -0,0 +1,39 @@
1name: C/C++ CI
2
3on:
4 push:
5 branches: [ master, ci ]
6 pull_request:
7 branches: [ master ]
8
9jobs:
10 build:
11
12 runs-on: ubuntu-latest
13
14 strategy:
15 matrix:
16 configs:
17 - ""
18 - "--with-kerberos5"
19 - "--with-libedit"
20 - "--with-pam"
21 - "--with-security-key-builtin"
22 - "--with-selinux"
23 - "--with-kerberos5 --with-libedit --with-pam --with-security-key-builtin --with-selinux"
24 - "--without-openssl --without-zlib"
25
26 steps:
27 - uses: actions/checkout@v2
28 - name: setup CI system
29 run: ./.github/setup_ci.sh ${{ matrix.configs }}
30 - name: autoreconf
31 run: autoreconf
32 - name: configure
33 run: ./configure ${{ matrix.configs }}
34 - name: make
35 run: make
36 - name: make tests
37 run: ./.github/run_test.sh ${{ matrix.configs }}
38 env:
39 TEST_SSH_UNSAFE_PERMISSIONS: 1
diff --git a/.gitignore b/.gitignore
index 34a95721d..5e4ae5a60 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,9 +2,11 @@ Makefile
2buildpkg.sh 2buildpkg.sh
3config.h 3config.h
4config.h.in 4config.h.in
5config.h.in~
5config.log 6config.log
6config.status 7config.status
7configure 8configure
9aclocal.m4
8openbsd-compat/Makefile 10openbsd-compat/Makefile
9openbsd-compat/regress/Makefile 11openbsd-compat/regress/Makefile
10openssh.xml 12openssh.xml
@@ -30,4 +32,5 @@ ssh-pkcs11-helper
30ssh-sk-helper 32ssh-sk-helper
31sshd 33sshd
32!regress/misc/fuzz-harness/Makefile 34!regress/misc/fuzz-harness/Makefile
35!regress/unittests/sshsig/Makefile
33tags 36tags
diff --git a/.skipped-commit-ids b/.skipped-commit-ids
index 611d1093d..6abbb99bc 100644
--- a/.skipped-commit-ids
+++ b/.skipped-commit-ids
@@ -19,6 +19,8 @@ d9b910e412d139141b072a905e66714870c38ac0 Makefile.inc
197b7b619c1452a459310b0cf4391c5757c6bdbc0f moduli update 197b7b619c1452a459310b0cf4391c5757c6bdbc0f moduli update
205010ff08f7ad92082e87dde098b20f5c24921a8f moduli regen script update 205010ff08f7ad92082e87dde098b20f5c24921a8f moduli regen script update
213bcae7a754db3fc5ad3cab63dd46774edb35b8ae moduli regen script update 213bcae7a754db3fc5ad3cab63dd46774edb35b8ae moduli regen script update
2252ff0e3205036147b2499889353ac082e505ea54 moduli update
2307b5031e9f49f2b69ac5e85b8da4fc9e393992a0 Makefile.inc
22 24
23Old upstream tree: 25Old upstream tree:
24 26
diff --git a/ChangeLog b/ChangeLog
index f283a8b3f..bcaa38f94 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,10 +1,1675 @@
1commit 9ca7e9c861775dd6c6312bc8aaab687403d24676 1commit 279261e1ea8150c7c64ab5fe7cb4a4ea17acbb29
2Author: Damien Miller <djm@mindrot.org> 2Author: Damien Miller <djm@mindrot.org>
3Date: Wed May 27 10:38:00 2020 +1000 3Date: Sun Sep 27 17:25:01 2020 +1000
4
5 update version numbers
6
7commit 58ca6ab6ff035ed12b5078e3e9c7199fe72c8587
8Author: djm@openbsd.org <djm@openbsd.org>
9Date: Sun Sep 27 07:22:05 2020 +0000
10
11 upstream: openssh 8.4
12
13 OpenBSD-Commit-ID: a29e5b372d2c00e297da8a35a3b87c9beb3b4a58
14
15commit 9bb8a303ce05ff13fb421de991b495930be103c3
16Author: Damien Miller <djm@mindrot.org>
17Date: Tue Sep 22 10:07:43 2020 +1000
18
19 sync with upstream ssh-copy-id rev f0da1a1b7
20
21commit 0a4a5571ada76b1b012bec9cf6ad1203fc19ec8d
22Author: djm@openbsd.org <djm@openbsd.org>
23Date: Mon Sep 21 07:29:09 2020 +0000
24
25 upstream: close stdin when forking after authentication too; ok markus
26
27 OpenBSD-Commit-ID: 43db17e4abc3e6b4a7b033aa8cdab326a7cb6c24
28
29commit d14fe25e6c3b89f8af17e2894046164ac3b45688
30Author: djm@openbsd.org <djm@openbsd.org>
31Date: Sun Sep 20 23:31:46 2020 +0000
32
33 upstream: close stdout/stderr after "ssh -f ..." forking
34
35 bz#3137, ok markus
36
37 OpenBSD-Commit-ID: e2d83cc4dea1665651a7aa924ad1ed6bcaaab3e2
38
39commit 53a33a0d745179c02108589e1722457ca8ae4372
40Author: Damien Miller <djm@mindrot.org>
41Date: Sun Sep 20 15:57:09 2020 +1000
42
43 .depend
44
45commit 107eb3eeafcd390e1fa7cc7672a05e994d14013e
46Author: djm@openbsd.org <djm@openbsd.org>
47Date: Sun Sep 20 05:47:25 2020 +0000
48
49 upstream: cap channel input buffer size at 16MB; avoids high memory use
50
51 when peer advertises a large window but is slow to consume the data we send
52 (e.g. because of a slow network)
53
54 reported by Pierre-Yves David
55
56 fix with & ok markus@
57
58 OpenBSD-Commit-ID: 1452771f5e5e768876d3bfe2544e3866d6ade216
59
60commit acfe2ac5fe033e227ad3a56624fbbe4af8b5da04
61Author: Damien Miller <djm@mindrot.org>
62Date: Fri Sep 18 22:02:53 2020 +1000
63
64 libfido2 1.5.0 is recommended
65
66commit 52a03e9fca2d74eef953ddd4709250f365ca3975
67Author: djm@openbsd.org <djm@openbsd.org>
68Date: Fri Sep 18 08:16:38 2020 +0000
69
70 upstream: handle multiple messages in a single read()
71
72 PR#183 by Dennis Kaarsemaker; feedback and ok markus@
73
74 OpenBSD-Commit-ID: 8570bb4d02d00cf70b98590716ea6a7d1cce68d1
75
76commit dc098405b2939146e17567a25b08fc6122893cdf
77Author: pedro martelletto <pedro@ambientworks.net>
78Date: Fri Sep 18 08:57:29 2020 +0200
79
80 configure.ac: add missing includes
81
82 when testing, make sure to include the relevant header files that
83 declare the types of the functions used by the test:
84
85 - stdio.h for printf();
86 - stdlib.h for exit();
87 - string.h for strcmp();
88 - unistd.h for unlink(), _exit(), fork(), getppid(), sleep().
89
90commit b3855ff053f5078ec3d3c653cdaedefaa5fc362d
91Author: djm@openbsd.org <djm@openbsd.org>
92Date: Fri Sep 18 05:23:03 2020 +0000
93
94 upstream: tweak the client hostkey preference ordering algorithm to
95
96 prefer the default ordering if the user has a key that matches the
97 best-preference default algorithm.
98
99 feedback and ok markus@
100
101 OpenBSD-Commit-ID: a92dd7d7520ddd95c0a16786a7519e6d0167d35f
102
103commit f93b187ab900c7d12875952cc63350fe4de8a0a8
104Author: Damien Miller <djm@mindrot.org>
105Date: Fri Sep 18 14:55:48 2020 +1000
106
107 control over the colours in gnome-ssh-askpass[23]
108
109 Optionally set the textarea colours via $GNOME_SSH_ASKPASS_FG_COLOR and
110 $GNOME_SSH_ASKPASS_BG_COLOR. These accept the usual three or six digit
111 hex colours.
112
113commit 9d3d36bdb10b66abd1af42e8655502487b6ba1fa
114Author: Damien Miller <djm@mindrot.org>
115Date: Fri Sep 18 14:50:38 2020 +1000
116
117 focus improvement for gnome-ssh-askpass[23]
118
119 When serving a SSH_ASKPASS_PROMPT=none information dialog, ensure
120 then <enter> doesn't immediately close the dialog. Instead, require an
121 explicit <tab> to reach the close button, or <esc>.
122
123commit d6f507f37e6c75a899db0ef8224e72797c5563b6
124Author: dtucker@openbsd.org <dtucker@openbsd.org>
125Date: Wed Sep 16 03:07:31 2020 +0000
126
127 upstream: Remove unused buf, last user was removed when switching
128
129 to the sshbuf API. Patch from Sebastian Andrzej Siewior.
130
131 OpenBSD-Commit-ID: 250fa17f0cec01039cc4abd95917d9746e24c889
132
133commit c3c786c3a0973331ee0922b2c51832a3b8d7f20f
134Author: djm@openbsd.org <djm@openbsd.org>
135Date: Wed Sep 9 21:57:27 2020 +0000
136
137 upstream: For the hostkey confirmation message:
138
139 > Are you sure you want to continue connecting (yes/no/[fingerprint])?
140
141 compare the fingerprint case sensitively; spotted Patrik Lundin
142 ok dtucker
143
144 OpenBSD-Commit-ID: 73097afee1b3a5929324e345ba4a4a42347409f2
145
146commit f2950baf0bafe6aa20dfe2e8d1ca4b23528df617
147Author: Darren Tucker <dtucker@dtucker.net>
148Date: Fri Sep 11 14:45:23 2020 +1000
149
150 New config-build-time dependency on automake.
151
152commit 600c1c27abd496372bd0cf83d21a1c119dfdf9a5
153Author: Darren Tucker <dtucker@dtucker.net>
154Date: Sun Sep 6 21:56:36 2020 +1000
155
156 Add aclocal.m4 and config.h.in~ to .gitignore.
157
158 aclocal.m4 is now generated by autoreconf.
159
160commit 4bf7e1d00b1dcd3a6b3239f77465c019e61c6715
161Author: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
162Date: Sat Sep 5 17:50:03 2020 +0200
163
164 Quote the definition of OSSH_CHECK_HEADER_FOR_FIELD
165
166 autoreconf complains about underquoted definition of
167 OSSH_CHECK_HEADER_FOR_FIELD after aclocal.m4 has been and now is beeing
168 recreated.
169
170 Quote OSSH_CHECK_HEADER_FOR_FIELD as suggested.
171
172 Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
173
174commit a2f3ae386b5f7938ed3c565ad71f30c4f7f010f1
175Author: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
176Date: Sat Sep 5 17:50:02 2020 +0200
177
178 Move the local m4 macros
179
180 The `aclocal' step is skipped during `autoreconf' because aclocal.m4 is
181 present.
182 Move the current aclocal.m4 which contains local macros into the m4/
183 folder. With this change the aclocal.m4 will be re-created during
184 changes to the m4/ macro.
185 This is needed so the `aclocal' can fetch m4 macros from the system if
186 they are references in the configure script. This is a prerequisite to
187 use PKG_CHECK_MODULES.
188
189 Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
190
191commit 8372bff3a895b84fd78a81dc39da10928b662f5a
192Author: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
193Date: Sat Sep 5 17:50:01 2020 +0200
194
195 Remove HAVE_MMAP and BROKEN_MMAP
196
197 BROKEN_MMAP is no longer defined since commit
198 1cfd5c06efb12 ("Remove portability support for mmap")
199
200 this commit also removed other HAVE_MMAP user. I didn't find anything
201 that defines HAVE_MMAP. The check does not trigger because compression
202 on server side is by default COMP_DELAYED (2) so it never triggers.
203
204 Remove remaining HAVE_MMAP and BROKEN_MMAP bits.
205
206 Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
207
208commit bbf20ac8065905f9cb9aeb8f1df57fcab52ee2fb
209Author: djm@openbsd.org <djm@openbsd.org>
210Date: Wed Sep 9 03:10:21 2020 +0000
211
212 upstream: adapt to SSH_SK_VERSION_MAJOR crank
213
214 OpenBSD-Regress-ID: 0f3e76bdc8f9dbd9d22707c7bdd86051d5112ab8
215
216commit 9afe2a150893b20bdf9eab764978d817b9a7b783
217Author: dtucker@openbsd.org <dtucker@openbsd.org>
218Date: Fri Aug 28 03:17:13 2020 +0000
219
220 upstream: Ensure that address/mask mismatches are flagged at
221
222 config-check time. ok djm@
223
224 OpenBSD-Regress-ID: 8f5f4c2c0bf00e6ceae7a1755a444666de0ea5c2
225
226commit c76773524179cb654ff838dd43ba1ddb155bafaa
227Author: djm@openbsd.org <djm@openbsd.org>
228Date: Wed Sep 9 03:08:01 2020 +0000
229
230 upstream: when writing an attestation blob for a FIDO key, record all
231
232 the data needed to verify the attestation. Previously we were missing the
233 "authenticator data" that is included in the signature.
234
235 spotted by Ian Haken
236 feedback Pedro Martelletto and Ian Haken; ok markus@
237
238 OpenBSD-Commit-ID: 8439896e63792b2db99c6065dd9a45eabbdb7e0a
239
240commit c1c44eeecddf093a7983bd91e70b446de789b363
241Author: pedro martelletto <pedro@ambientworks.net>
242Date: Tue Sep 1 17:01:55 2020 +0200
243
244 configure.ac: fix libfido2 back-compat
245
246 - HAVE_FIDO_CRED_PROD -> HAVE_FIDO_CRED_PROT;
247 - check for fido_dev_get_touch_begin(), so that
248 HAVE_FIDO_DEV_GET_TOUCH_BEGIN gets defined.
249
250commit 785f0f315bf7ac5909e988bb1ac3e019fb5e1594
251Author: djm@openbsd.org <djm@openbsd.org>
252Date: Mon Aug 31 04:33:17 2020 +0000
253
254 upstream: refuse to add verify-required (PINful) FIDO keys to
255
256 ssh-agent until the agent supports them properly
257
258 OpenBSD-Commit-ID: 125bd55a8df32c87c3ec33c6ebe437673a3d037e
259
260commit 39e88aeff9c7cb6862b37ad1a87a03ebbb38c233
261Author: djm@openbsd.org <djm@openbsd.org>
262Date: Mon Aug 31 00:17:41 2020 +0000
263
264 upstream: Add RCS IDs to the few files that are missing them; from
265
266 Pedro Martelletto
267
268 OpenBSD-Commit-ID: 39aa37a43d0c75ec87f1659f573d3b5867e4a3b3
269
270commit 72730249b38a676da94a1366b54a6e96e6928bcb
271Author: dtucker@openbsd.org <dtucker@openbsd.org>
272Date: Fri Aug 28 03:15:52 2020 +0000
273
274 upstream: Check that the addresses supplied to Match Address and
275
276 Match LocalAddress are valid when parsing in config-test mode. This will
277 catch address/mask mismatches before they cause problems at runtime. Found by
278 Daniel Stocker, ok djm@
279
280 OpenBSD-Commit-ID: 2d0b10c69fad5d8fda4c703e7c6804935289378b
281
282commit 2a3a9822311a565a9df48ed3b6a3c972f462bd7d
283Author: jmc@openbsd.org <jmc@openbsd.org>
284Date: Thu Aug 27 12:34:00 2020 +0000
285
286 upstream: sentence fix; from pedro martelletto
287
288 OpenBSD-Commit-ID: f95b84a1e94e9913173229f3787448eea2f8a575
289
290commit ce178be0d954b210c958bc2b9e998cd6a7aa73a9
291Author: Damien Miller <djm@mindrot.org>
292Date: Thu Aug 27 20:01:52 2020 +1000
293
294 tweak back-compat for older libfido2
295
296commit d6f45cdde031acdf434bbb27235a1055621915f4
297Author: djm@openbsd.org <djm@openbsd.org>
298Date: Thu Aug 27 09:46:04 2020 +0000
299
300 upstream: debug()-print a little info about FIDO-specific key
301
302 fields via "ssh-keygen -vyf /path/key"
303
304 OpenBSD-Commit-ID: cf315c4fe77db43947d111b00155165cb6b577cf
305
306commit b969072cc3d62d05cb41bc6d6f3c22c764ed932f
307Author: djm@openbsd.org <djm@openbsd.org>
308Date: Thu Aug 27 09:43:28 2020 +0000
309
310 upstream: skip a bit more FIDO token selection logic when only a
311
312 single token is attached.
313
314 with Pedro Martelletto
315
316 OpenBSD-Commit-ID: e4a324bd9814227ec1faa8cb619580e661cca9ac
317
318commit 744df42a129d7d7db26947b7561be32edac89f88
319Author: jmc@openbsd.org <jmc@openbsd.org>
320Date: Thu Aug 27 06:15:22 2020 +0000
321
322 upstream: tweak previous;
323
324 OpenBSD-Commit-ID: 92714b6531e244e4da401b2defaa376374e24be7
325
326commit e32479645ce649b444ba5c6e7151304306a09654
327Author: djm@openbsd.org <djm@openbsd.org>
328Date: Thu Aug 27 03:55:22 2020 +0000
329
330 upstream: adapt to API changes
331
332 OpenBSD-Regress-ID: 5f147990cb67094fe554333782ab268a572bb2dd
333
334commit bbcc858ded3fbc46abfa7760e40389e3ca93884c
335Author: Damien Miller <djm@mindrot.org>
336Date: Thu Aug 27 12:37:12 2020 +1000
337
338 degrade semi-gracefully when libfido2 is too old
339
340commit 9cbbdc12cb6a2ab1e9ffe9974cca91d213c185c2
341Author: djm@openbsd.org <djm@openbsd.org>
342Date: Thu Aug 27 01:15:36 2020 +0000
343
344 upstream: dummy firmware needs to match API version numner crank (for
345
346 verify-required resident keys) even though it doesn't implement this feature
347
348 OpenBSD-Regress-ID: 86579ea2891e18e822e204413d011b2ae0e59657
349
350commit c1e76c64956b424ba260fd4eec9970e5b5859039
351Author: djm@openbsd.org <djm@openbsd.org>
352Date: Thu Aug 27 02:11:09 2020 +0000
353
354 upstream: remove unreachable code I forgot to delete in r1.334
355
356 OpenBSD-Commit-ID: 9ed6078251a0959ee8deda443b9ae42484fd8b18
357
358commit 0caff05350bd5fc635674c9e051a0322faba5ae3
359Author: djm@openbsd.org <djm@openbsd.org>
360Date: Thu Aug 27 01:08:45 2020 +0000
361
362 upstream: Request PIN ahead of time for certain FIDO actions
363
364 When we know that a particular action will require a PIN, such as
365 downloading resident keys or generating a verify-required key, request
366 the PIN before attempting it.
367
368 joint work with Pedro Martelletto; ok markus@
369
370 OpenBSD-Commit-ID: 863182d38ef075bad1f7d20ca485752a05edb727
371
372commit b649b3daa6d4b8ebe1bd6de69b3db5d2c03c9af0
373Author: djm@openbsd.org <djm@openbsd.org>
374Date: Thu Aug 27 01:08:19 2020 +0000
375
376 upstream: preserve verify-required for resident FIDO keys
377
378 When downloading a resident, verify-required key from a FIDO token,
379 preserve the verify-required in the private key that is written to
380 disk. Previously we weren't doing that because of lack of support
381 in the middleware API.
382
383 from Pedro Martelletto; ok markus@ and myself
384
385 OpenBSD-Commit-ID: 201c46ccdd227cddba3d64e1bdbd082afa956517
386
387commit 642e06d0df983fa2af85126cf4b23440bb2985bf
388Author: djm@openbsd.org <djm@openbsd.org>
389Date: Thu Aug 27 01:07:51 2020 +0000
390
391 upstream: major rework of FIDO token selection logic
392
393 When PINs are in use and multiple FIDO tokens are attached to a host, we
394 cannot just blast requests at all attached tokens with the PIN specified
395 as this will cause the per-token PIN failure counter to increment. If
396 this retry counter hits the token's limit (usually 3 attempts), then the
397 token will lock itself and render all (web and SSH) of its keys invalid.
398 We don't want this.
399
400 So this reworks the key selection logic for the specific case of
401 multiple keys being attached. When multiple keys are attached and the
402 operation requires a PIN, then the user must touch the key that they
403 wish to use first in order to identify it.
404
405 This may require multiple touches, but only if there are multiple keys
406 attached AND (usually) the operation requires a PIN. The usual case of a
407 single key attached should be unaffected.
408
409 Work by Pedro Martelletto; ok myself and markus@
410
411 OpenBSD-Commit-ID: 637d3049ced61b7a9ee796914bbc4843d999a864
412
413commit 801c9f095e6d8b7b91aefd98f5001c652ea13488
414Author: djm@openbsd.org <djm@openbsd.org>
415Date: Thu Aug 27 01:07:09 2020 +0000
416
417 upstream: support for requiring user verified FIDO keys in sshd
418
419 This adds a "verify-required" authorized_keys flag and a corresponding
420 sshd_config option that tells sshd to require that FIDO keys verify the
421 user identity before completing the signing/authentication attempt.
422 Whether or not user verification was performed is already baked into the
423 signature made on the FIDO token, so this is just plumbing that flag
424 through and adding ways to require it.
425
426 feedback and ok markus@
427
428 OpenBSD-Commit-ID: 3a2313aae153e043d57763d766bb6d55c4e276e6
429
430commit 9b8ad93824c682ce841f53f3b5762cef4e7cc4dc
431Author: djm@openbsd.org <djm@openbsd.org>
432Date: Thu Aug 27 01:06:18 2020 +0000
433
434 upstream: support for user-verified FIDO keys
435
436 FIDO2 supports a notion of "user verification" where the user is
437 required to demonstrate their identity to the token before particular
438 operations (e.g. signing). Typically this is done by authenticating
439 themselves using a PIN that has been set on the token.
440
441 This adds support for generating and using user verified keys where
442 the verification happens via PIN (other options might be added in the
443 future, but none are in common use now). Practically, this adds
444 another key generation option "verify-required" that yields a key that
445 requires a PIN before each authentication.
446
447 feedback markus@ and Pedro Martelletto; ok markus@
448
449 OpenBSD-Commit-ID: 57fd461e4366f87c47502c5614ec08573e6d6a15
450
451commit 1196d7f49d4fbc90f37e550de3056561613b0960
452Author: cheloha@openbsd.org <cheloha@openbsd.org>
453Date: Wed Aug 12 01:23:45 2020 +0000
454
455 upstream: ssh-keyscan(1): simplify conloop() with timercmp(3),
456
457 timersub(3); ok djm@
458
459 OpenBSD-Commit-ID: a102acb544f840d33ad73d40088adab4a687fa27
460
461commit d0a195c89e26766d3eb8f3e4e2a00ebc98b57795
462Author: djm@openbsd.org <djm@openbsd.org>
463Date: Tue Aug 11 09:49:57 2020 +0000
464
465 upstream: let ssh_config(5)'s AddKeysToAgent keyword accept a time
466
467 limit for keys in addition to its current flag options. Time-limited keys
468 will automatically be removed from ssh-agent after their expiry time has
469 passed; ok markus@
470
471 OpenBSD-Commit-ID: 792e71cacbbc25faab5424cf80bee4a006119f94
472
473commit e9c2002891a7b8e66f4140557a982978f372e5a3
474Author: djm@openbsd.org <djm@openbsd.org>
475Date: Tue Aug 11 09:45:54 2020 +0000
476
477 upstream: let the "Confirm user presence for key ..." ssh-askpass
478
479 notification respect $SSH_ASKPASS_REQUIRE; ok markus@
480
481 OpenBSD-Commit-ID: 7c1a616b348779bda3b9ad46bf592741f8e206c1
482
483commit eaf8672b1b52db2815a229745f4e4b08681bed6d
484Author: Darren Tucker <dtucker@dtucker.net>
485Date: Fri Aug 21 00:04:13 2020 +1000
486
487 Remove check for 'ent' command.
488
489 It was added in 8d1fd57a9 for measuring entropy of ssh_prng_cmds which
490 has long since been removed and there are no other references to it.
491
492commit 05c215de8d224e094a872d97d45f37f60c06206b
493Author: Darren Tucker <dtucker@dtucker.net>
494Date: Mon Aug 17 21:34:32 2020 +1000
495
496 Wrap stdint.h include in ifdef HAVE_STDINT_H.
497
498commit eaf2765efe8bc74feba85c34295d067637fc6635
499Author: Damien Miller <djm@mindrot.org>
500Date: Mon Aug 10 13:24:09 2020 +1000
501
502 sync memmem.c with OpenBSD
503
504commit ed6bef77f5bb5b8f9ca2914478949e29f2f0a780
505Author: Darren Tucker <dtucker@dtucker.net>
506Date: Fri Aug 7 17:12:16 2020 +1000
507
508 Always send any PAM account messages.
509
510 If the PAM account stack reaturns any messages, send them to the user
511 not just if the check succeeds. bz#2049, ok djm@
512
513commit a09e98dcae1e26f026029b7142b0e0d10130056f
514Author: Darren Tucker <dtucker@dtucker.net>
515Date: Fri Aug 7 15:37:37 2020 +1000
516
517 Output test debug logs on failure.
518
519commit eb122b1eebe58b29a83a507ee814cbcf8aeded1b
520Author: Darren Tucker <dtucker@dtucker.net>
521Date: Fri Aug 7 15:11:42 2020 +1000
522
523 Add ability to specify exact test target.
524
525commit c2ec7a07f8caabb4d8e00c66e7cd46bf2cd1e922
526Author: Darren Tucker <dtucker@dtucker.net>
527Date: Fri Aug 7 14:21:15 2020 +1000
528
529 Document --without-openssl and --without-zlib.
530
531commit 651bb3a31949bbdc3a78b2ede95a77bce0c72984
532Author: Darren Tucker <dtucker@dtucker.net>
533Date: Fri Aug 7 14:15:11 2020 +1000
534
535 Add without-openssl without-zlib test target.
536
537commit 9499f2bb01dc1032ae155999b2d7764b9491341f
538Author: Stefan Schindler <dns2utf8@estada.ch>
539Date: Wed Aug 5 19:00:52 2020 +0200
540
541 Add CI with prepare script
542
543 * Only use heimdal kerberos implementation
544 * Fetch yubico/libfido2 (see: https://github.com/Yubico/libfido2)
545 * Add one target for
546 * all features
547 * each feature alone
548 * no features
549
550commit ea1f649046546a860f68b97ddc3015b7e44346ca
551Author: Damien Miller <djm@mindrot.org>
552Date: Wed Aug 5 08:58:57 2020 +1000
553
554 support NetBSD's utmpx.ut_ss address field
555
556 bz#960, ok dtucker
557
558commit 32c63e75a70a0ed9d6887a55fcb0e4531a6ad617
559Author: Damien Miller <djm@mindrot.org>
560Date: Tue Aug 4 14:59:21 2020 +1000
561
562 wrap a declaration in the same ifdefs as its use
563
564 avoids warnings on NetBSD
565
566commit c9e3be9f4b41fda32a2a0138d54c7a6b563bc94d
567Author: Damien Miller <djm@mindrot.org>
568Date: Tue Aug 4 14:58:46 2020 +1000
569
570 undef TAILQ_CONCAT and friends
571
572 Needed for NetBSD. etc that supply these macros
573
574commit 2d8a3b7e8b0408dfeb933ac5cfd3a58f5bac49af
575Author: djm@openbsd.org <djm@openbsd.org>
576Date: Mon Aug 3 02:53:51 2020 +0000
577
578 upstream: ensure that certificate extensions are lexically sorted.
579
580 Previously if the user specified a custom extension then the everything would
581 be in order except the custom ones. bz3198 ok dtucker markus
582
583 OpenBSD-Commit-ID: d97deb90587b06cb227c66ffebb2d9667bf886f0
584
585commit a8732d74cb8e72f0c6366015687f1e649f60be87
586Author: djm@openbsd.org <djm@openbsd.org>
587Date: Mon Aug 3 02:43:41 2020 +0000
588
589 upstream: allow -A to explicitly enable agent forwarding in scp and
590
591 sftp. The default remains to not forward an agent, even when ssh_config
592 enables it. ok jmc dtucker markus
593
594 OpenBSD-Commit-ID: 36cc526aa3b0f94e4704b8d7b969dd63e8576822
595
596commit ab9105470a83ed5d8197959a1b1f367399958ba1
597Author: deraadt@openbsd.org <deraadt@openbsd.org>
598Date: Mon Aug 3 02:42:49 2020 +0000
599
600 upstream: clang -Wimplicit-fallthrough does not recognise /*
601
602 FALLTHROUGH */ comments, which is the style we currently use, and gives too
603 many boring warnings. ok djm
604
605 OpenBSD-Commit-ID: 07b5031e9f49f2b69ac5e85b8da4fc9e393992a0
606
607commit ced327b9fb78c94d143879ef4b2a02cbc5d38690
608Author: dtucker@openbsd.org <dtucker@openbsd.org>
609Date: Fri Jul 31 04:19:37 2020 +0000
610
611 upstream: Also compare username when checking for JumpHost loops.
612
613 bz#3057, ok djm@
614
615 OpenBSD-Commit-ID: 9bbc1d138adb34c54f3c03a15a91f75dbf418782
616
617commit ae7527010c44b3376b85d036a498f136597b2099
618Author: Darren Tucker <dtucker@dtucker.net>
619Date: Fri Jul 31 15:19:04 2020 +1000
620
621 Remove AC_REVISION.
622
623 It hasn't been useful since we switched to git in 2014. ok djm@
624
625commit 89fc3f414be0ce4e8008332a9739a7d721269e50
626Author: Darren Tucker <dtucker@dtucker.net>
627Date: Tue Jul 28 19:40:30 2020 +1000
628
629 Use argv in OSSH_CHECK_CFLAG_COMPILE test.
630
631 configure.ac is not detecting -Wextra in compilers that implement the
632 option. The problem is that -Wextra implies -Wunused-parameter, and the
633 C excerpt used by aclocal.m4 does not use argv. Patch from pedro at
634 ambientworks.net, ok djm@
635
636commit 62c81ef531b0cc7ff655455dd34f5f0c94f48e82
637Author: Darren Tucker <dtucker@dtucker.net>
638Date: Mon Jul 20 22:12:07 2020 +1000
639
640 Skip ECDSA-SK webauthn test when built w/out ECC
641
642commit 3ec9a6d7317236a9994887d8bd5d246af403a00d
643Author: Damien Miller <djm@mindrot.org>
644Date: Mon Jul 20 13:09:25 2020 +1000
645
646 Add ssh-sk-helper and manpage to RPM spec file
647
648 Based on patch from Fabio Pedretti
649
650commit a2855c048b3f4b17d8787bd3f24232ec0cd79abe
651Author: dtucker@openbsd.org <dtucker@openbsd.org>
652Date: Fri Jul 17 07:09:24 2020 +0000
653
654 upstream: Add %k to the TOKENs for Match Exec for consistency with
655
656 the other keywords that recently got %k.
657
658 OpenBSD-Commit-ID: 1857d1c40f270cbc254fca91e66110641dddcfdb
659
660commit 69860769fa9f4529d8612ec055ae11912f7344cf
661Author: jmc@openbsd.org <jmc@openbsd.org>
662Date: Fri Jul 17 05:59:05 2020 +0000
663
664 upstream: fix macro slip in previous;
665
666 OpenBSD-Commit-ID: 624e47ab209450ad9ad5c69f54fa69244de5ed9a
667
668commit 40649bd0822883b684183854b16d0b8461d5697b
669Author: dtucker@openbsd.org <dtucker@openbsd.org>
670Date: Fri Jul 17 07:10:24 2020 +0000
671
672 upstream: Add test for '%k' (HostKeyAlias) TOKEN.
673
674 OpenBSD-Regress-ID: 8ed1ba1a811790031aad3fcea860a34ad7910456
675
676commit 6736fe680704a3518cb4f3f8f6723b00433bd3dd
677Author: dtucker@openbsd.org <dtucker@openbsd.org>
678Date: Fri Jul 17 03:26:58 2020 +0000
679
680 upstream: Add tests for expansions on UserKnownHostsFile.
681
682 OpenBSD-Regress-ID: bccf8060306c841bbcceb1392644f906a4d6ca51
683
684commit 287dc6396e0f9cb2393f901816dbd7f2a7dfbb5f
685Author: djm@openbsd.org <djm@openbsd.org>
686Date: Fri Jul 17 03:51:32 2020 +0000
687
688 upstream: log error message for process_write() write failures
689
690 OpenBSD-Commit-ID: f733d7b3b05e3c68967dc18dfe39b9e8fad29851
691
692commit 8df5774a42d2eaffe057bd7f293fc6a4b1aa411c
693Author: dtucker@openbsd.org <dtucker@openbsd.org>
694Date: Fri Jul 17 03:43:42 2020 +0000
695
696 upstream: Add a '%k' TOKEN that expands to the effective HostKey of
697
698 the destination. This allows, eg, keeping host keys in individual files
699 using "UserKnownHostsFile ~/.ssh/known_hosts.d/%k". bz#1654, ok djm@, jmc@
700 (man page bits)
701
702 OpenBSD-Commit-ID: 7084d723c9cc987a5c47194219efd099af5beadc
703
704commit c4f239944a4351810fd317edf408bdcd5c0102d9
705Author: dtucker@openbsd.org <dtucker@openbsd.org>
706Date: Fri Jul 17 03:23:10 2020 +0000
707
708 upstream: Add %-TOKEN, environment variable and tilde expansion to
709
710 UserKnownHostsFile, allowing the file to be automagically split up in the
711 configuration (eg bz#1654). ok djm@, man page parts jmc@
712
713 OpenBSD-Commit-ID: 7e1b406caf147638bb51558836a72d6cc0bd1b18
714
715commit dbaaa01daedb423c38124a72c471982fb08a16fb
716Author: solene@openbsd.org <solene@openbsd.org>
717Date: Wed Jul 15 07:50:46 2020 +0000
718
719 upstream: - Add [-a rounds] in ssh-keygen man page and usage() -
720
721 Reorder parameters list in the first usage() case - Sentence rewording
722
723 ok dtucker@
724 jmc@ noticed usage() missed -a flag too
725
726 OpenBSD-Commit-ID: f06b9afe91cc96f260b929a56e9930caecbde246
727
728commit 69924a92c3af7b99a7541aa544a2334ec0fb092c
729Author: jmc@openbsd.org <jmc@openbsd.org>
730Date: Wed Jul 15 05:40:05 2020 +0000
731
732 upstream: start sentence with capital letter;
733
734 OpenBSD-Commit-ID: ab06581d51b2b4cc1b4aab781f7f3cfa56cad973
735
736commit 5b56bd0affea7b02b540bdbc4d1d271b0e4fc885
737Author: Damien Miller <djm@mindrot.org>
738Date: Fri Jul 17 13:15:50 2020 +1000
739
740 detect Linux/X32 systems
741
742 This is a frankenstein monster of AMD64 instructions/calling conventions
743 but with a 4GB address space. Allegedly deprecated but people still run
744 into it causing weird sandbox failures, e.g. bz#3085
745
746commit 9c9ddc1391d6af8d09580a2424ab467d0a5df3c7
747Author: dtucker@openbsd.org <dtucker@openbsd.org>
748Date: Wed Jul 15 06:43:16 2020 +0000
749
750 upstream: Fix previous by calling the correct function.
751
752 OpenBSD-Regress-ID: 821cdd1dff9c502cceff4518b6afcb81767cad5a
753
754commit f1a4798941b4372bfe5e46f1c0f8672fe692d9e4
755Author: dtucker@openbsd.org <dtucker@openbsd.org>
756Date: Wed Jul 15 05:36:50 2020 +0000
757
758 upstream: Update test to match recent change in match.c
759
760 OpenBSD-Regress-ID: 965bda1f95f09a765050707340c73ad755f41167
761
762commit d7e71be4fd57b7c7e620d733cdf2333b27bfa924
763Author: Darren Tucker <dtucker@dtucker.net>
764Date: Wed Jul 15 15:30:43 2020 +1000
765
766 Adjust portable code to match changes in 939d787d,
767
768commit fec89f32a84fd0aa1afc81deec80a460cbaf451a
769Author: dtucker@openbsd.org <dtucker@openbsd.org>
770Date: Wed Jul 15 04:27:34 2020 +0000
771
772 upstream: Add default for number of rounds (-a). ok djm@
773
774 OpenBSD-Commit-ID: cb7e9aa04ace01a98e63e4bd77f34a42ab169b15
775
776commit aaa8b609a7b332be836cd9a3b782422254972777
777Author: djm@openbsd.org <djm@openbsd.org>
778Date: Tue Jul 14 23:57:01 2020 +0000
779
780 upstream: allow some additional control over the use of ssh-askpass
781
782 via $SSH_ASKPASS_REQUIRE, including force-enable/disable. bz#69 ok markus@
783
784 OpenBSD-Commit-ID: 3a1e6cbbf6241ddc4405c4246caa2c249f149eb2
785
786commit 6368022cd4dd508671c4999a59ec5826df098530
787Author: deraadt@openbsd.org <deraadt@openbsd.org>
788Date: Tue Jul 7 02:47:21 2020 +0000
789
790 upstream: correct recently broken comments
791
792 OpenBSD-Commit-ID: 964d9a88f7de1d0eedd3f8070b43fb6e426351f1
793
794commit 6d755706a0059eb9e2d63517f288b75cbc3b4701
795Author: djm@openbsd.org <djm@openbsd.org>
796Date: Sun Jul 5 23:59:45 2020 +0000
797
798 upstream: some language improvements; ok markus
799
800 OpenBSD-Commit-ID: 939d787d571b4d5da50b3b721fd0b2ac236acaa8
801
802commit b0c1e8384d5e136ebdf895d1434aea7dd8661a1c
803Author: markus@openbsd.org <markus@openbsd.org>
804Date: Fri Jul 3 10:12:26 2020 +0000
805
806 upstream: update setproctitle after re-exec; ok djm
807
808 OpenBSD-Commit-ID: bc92d122f9184ec2a9471ade754b80edd034ce8b
809
810commit cd119a5ec2bf0ed5df4daff3bd14f8f7566dafd3
811Author: markus@openbsd.org <markus@openbsd.org>
812Date: Fri Jul 3 10:11:33 2020 +0000
813
814 upstream: keep ignoring HUP after fork+exec; ok djm
815
816 OpenBSD-Commit-ID: 7679985a84ee5ceb09839905bb6f3ddd568749a2
817
818commit 8af4a743693ccbea3e15fc9e93edbeb610fa94f4
819Author: markus@openbsd.org <markus@openbsd.org>
820Date: Fri Jul 3 10:10:17 2020 +0000
821
822 upstream: don't exit the listener on send_rexec_state errors; ok
823
824 djm
825
826 OpenBSD-Commit-ID: 57cbd757d130d3f45b7d41310b3a15eeec137d5c
827
828commit 03da4c2b70468f04ed1c08518ea0a70e67232739
829Author: dtucker@openbsd.org <dtucker@openbsd.org>
830Date: Wed Jul 15 04:55:47 2020 +0000
831
832 upstream: Use $OBJ to find key files. Fixes test when run on an obj
833
834 directory (on OpenBSD) or out of tree (in Portable).
835
836 OpenBSD-Regress-ID: 938fa8ac86adaa527d64a305bd2135cfbb1c0a17
837
838commit 73f20f195ad18f1cf633eb7d8be95dc1b6111eea
839Author: Darren Tucker <dtucker@dtucker.net>
840Date: Sat Jul 4 23:11:23 2020 +1000
841
842 Wrap stdint.h in ifdef HAVE_STDINT_H.
843
844commit aa6fa4bf3023fa0e5761cd8f4b2cd015d2de74dd
845Author: djm@openbsd.org <djm@openbsd.org>
846Date: Fri Jul 3 07:25:18 2020 +0000
847
848 upstream: put back the mux_ctx memleak fix, but only for channels of
849
850 type SSH_CHANNEL_MUX_LISTENER; Specifically SSH_CHANNEL_MUX_PROXY channels
851 should not have this structure freed.
852
853 OpenBSD-Commit-ID: f3b213ae60405f77439e2b06262f054760c9d325
854
855commit d8195914eb43b20b13381f4e5a74f9f8a14f0ded
856Author: djm@openbsd.org <djm@openbsd.org>
857Date: Fri Jul 3 07:17:35 2020 +0000
858
859 upstream: revert r1.399 - the lifetime of c->mux_ctx is more complex;
860
861 simply freeing it here causes other problems
862
863 OpenBSD-Commit-ID: c6fee8ca94e2485faa783839541962be2834c5ed
864
865commit 20b5fab9f773b3d3c7f06cb15b8f69a2c081ee80
866Author: djm@openbsd.org <djm@openbsd.org>
867Date: Fri Jul 3 07:02:37 2020 +0000
868
869 upstream: avoid tilde_expand_filename() in expanding ~/.ssh/rc - if
870
871 sshd is in chroot mode, the likely absence of a password database will cause
872 tilde_expand_filename() to fatal; ok dtucker@
873
874 OpenBSD-Commit-ID: e20aee6159e8b79190d18dba1513fc1b7c8b7ee1
875
876commit c8935081db35d73ee6355999142fa0776a2af912
877Author: djm@openbsd.org <djm@openbsd.org>
878Date: Fri Jul 3 06:46:41 2020 +0000
879
880 upstream: when redirecting sshd's log output to a file, undo this
881
882 redirection after the session child process is forked(); ok dtucker@
883
884 OpenBSD-Commit-ID: 6df86dd653c91f5bc8ac1916e7680d9d24690865
885
886commit 183c4aaef944af3a1a909ffa01058c65bac55748
887Author: djm@openbsd.org <djm@openbsd.org>
888Date: Fri Jul 3 06:29:57 2020 +0000
889
890 upstream: start ClientAliveInterval bookkeeping before first pass
891
892 through select() loop; fixed theoretical case where busy sshd may ignore
893 timeouts from client; inspired by and ok dtucker
894
895 OpenBSD-Commit-ID: 96bfc4b1f86c7da313882a84755b2b47eb31957f
896
897commit 6fcfd303d67f16695198cf23d109a988e40eefb6
898Author: Damien Miller <djm@mindrot.org>
899Date: Fri Jul 3 15:28:27 2020 +1000
900
901 add check for fido_cred_set_prot() to configure
902
903commit f11b23346309e4d5138e733a49321aedd6eeaa2f
904Author: dtucker@openbsd.org <dtucker@openbsd.org>
905Date: Fri Jul 3 05:09:06 2020 +0000
906
907 upstream: Only reset the serveralive check when we receive traffic from
908
909 the server and ignore traffic from a port forwarding client, preventing a
910 client from keeping a connection alive when it should be terminated. Based
911 on a patch from jxraynor at gmail.com via openssh-unix-dev and bz#2265, ok
912 djm@
913
914 OpenBSD-Commit-ID: a941a575a5cbc244c0ef5d7abd0422bbf02c2dcd
915
916commit adfdbf1211914b631c038f0867a447db7b519937
917Author: Damien Miller <djm@mindrot.org>
918Date: Fri Jul 3 15:15:15 2020 +1000
919
920 sync sys-queue.h with OpenBSD upstream
921
922 needed for TAILQ_CONCAT
923
924commit 1b90ddde49e2ff377204082b6eb130a096411dc1
925Author: djm@openbsd.org <djm@openbsd.org>
926Date: Fri Jul 3 05:08:41 2020 +0000
927
928 upstream: fix memory leak of mux_ctx; patch from Sergiy Lozovsky
929
930 via bz3189 ok dtucker
931
932 OpenBSD-Commit-ID: db249bd4526fd42d0f4f43f72f7b8b7705253bde
933
934commit 55ef3e9cbd5b336bd0f89205716924886fcf86de
935Author: markus@openbsd.org <markus@openbsd.org>
936Date: Wed Jul 1 16:28:31 2020 +0000
937
938 upstream: free kex in ssh_packet_close; ok djm semarie
939
940 OpenBSD-Commit-ID: dbc181e90d3d32fd97b10d75e68e374270e070a2
941
942commit e1c401109b61f7dbc199b5099933d579e7fc5dc9
943Author: bket@openbsd.org <bket@openbsd.org>
944Date: Sat Jun 27 13:39:09 2020 +0000
945
946 upstream: Replace TAILQ concatenation loops with TAILQ_CONCAT
947
948 OK djm@
949
950 OpenBSD-Commit-ID: 454b40e09a117ddb833794358970a65b14c431ef
951
952commit 14beca57ac92d62830c42444c26ba861812dc837
953Author: semarie@openbsd.org <semarie@openbsd.org>
954Date: Fri Jun 26 11:26:01 2020 +0000
955
956 upstream: backout 1.293 fix kex mem-leak in ssh_packet_close at markus
957
958 request
959
960 the change introduced a NULL deref in sshpkt_vfatal() (uses of ssh->kex after
961 calling ssh_packet_clear_keys())
962
963 OpenBSD-Commit-ID: 9c9a6721411461b0b1c28dc00930d7251a798484
964
965commit 598c3a5e3885080ced0d7c40fde00f1d5cdbb32b
966Author: Damien Miller <djm@mindrot.org>
967Date: Fri Jun 26 16:07:12 2020 +1000
968
969 document a PAM spec problem in a frustrated comment
970
971commit 976c4f86286d52a0cb2aadf4a095d379c0da752e
972Author: djm@openbsd.org <djm@openbsd.org>
973Date: Fri Jun 26 05:42:16 2020 +0000
974
975 upstream: avoid spurious error message when ssh-keygen creates files
976
977 outside ~/.ssh; with dtucker@
978
979 OpenBSD-Commit-ID: ac0c662d44607e00ec78c266ee60752beb1c7e08
980
981commit 32b2502a9dfdfded1ccdc1fd6dc2b3fe41bfc205
982Author: Damien Miller <djm@mindrot.org>
983Date: Fri Jun 26 15:30:06 2020 +1000
984
985 missing ifdef SELINUX; spotted by dtucker
986
987commit e073106f370cdd2679e41f6f55a37b491f0e82fe
988Author: djm@openbsd.org <djm@openbsd.org>
989Date: Fri Jun 26 05:12:21 2020 +0000
990
991 upstream: regress test for ssh-add -d; ok dtucker@
992
993 OpenBSD-Regress-ID: 3a2e044be616afc7dd4f56c100179e83b33d8abf
994
995commit c809daaa1bad6b1c305b0e0b5440360f32546c84
996Author: markus@openbsd.org <markus@openbsd.org>
997Date: Wed Jun 24 15:16:23 2020 +0000
998
999 upstream: add test for mux w/-Oproxy; ok djm
1000
1001 OpenBSD-Regress-ID: 764d5c696e2a259f1316a056e225e50023abb027
1002
1003commit 3d06ff4bbd3dca8054c238d2a94c0da563ef7eee
1004Author: djm@openbsd.org <djm@openbsd.org>
1005Date: Fri Jun 26 05:16:38 2020 +0000
1006
1007 upstream: handle EINTR in waitfd() and timeout_connect() helpers;
1008
1009 bz#3071; ok dtucker@
1010
1011 OpenBSD-Commit-ID: 08fa87be50070bd8b754d9b1ebb1138d7bc9d8ee
1012
1013commit fe2ec0b9c19adeab0cd9f04b8152dc17f31c31e5
1014Author: djm@openbsd.org <djm@openbsd.org>
1015Date: Fri Jun 26 05:04:07 2020 +0000
1016
1017 upstream: allow "ssh-add -d -" to read keys to be deleted from
1018
1019 stdin bz#3180; ok dtucker@
1020
1021 OpenBSD-Commit-ID: 15c7f10289511eb19fce7905c9cae8954e3857ff
1022
1023commit a3e0c376ffc11862fa3568b28188bd12965973e1
1024Author: djm@openbsd.org <djm@openbsd.org>
1025Date: Fri Jun 26 05:03:36 2020 +0000
1026
1027 upstream: constify a few things; ok dtucker (as part of another
1028
1029 diff)
1030
1031 OpenBSD-Commit-ID: 7c17fc987085994d752304bd20b1ae267a9bcdf6
1032
1033commit 74344c3ca42c3f53b00b025daf09ae7f6aa38076
1034Author: dtucker@openbsd.org <dtucker@openbsd.org>
1035Date: Fri Jun 26 05:02:03 2020 +0000
1036
1037 upstream: Defer creation of ~/.ssh by ssh(1) until we attempt to
1038
1039 write to it so we don't leave an empty .ssh directory when it's not needed.
1040 Use the same function to replace the code in ssh-keygen that does the same
1041 thing. bz#3156, ok djm@
1042
1043 OpenBSD-Commit-ID: 59c073b569be1a60f4de36f491a4339bc4ae870f
1044
1045commit c9e24daac6324fcbdba171392c325bf9ccc3c768
1046Author: dtucker@openbsd.org <dtucker@openbsd.org>
1047Date: Fri Jun 26 04:45:11 2020 +0000
1048
1049 upstream: Expand path to ~/.ssh/rc rather than relying on it
1050
1051 being relative to the current directory, so that it'll still be found if the
1052 shell startup changes its directory. Since the path is potentially longer,
1053 make the cmd buffer that uses it dynamically sized. bz#3185, with & ok djm@
1054
1055 OpenBSD-Commit-ID: 36e33ff01497af3dc8226d0c4c1526fc3a1e46bf
1056
1057commit 07f5f369a25e228a7357ef6c57205f191f073d99
1058Author: markus@openbsd.org <markus@openbsd.org>
1059Date: Wed Jun 24 15:12:09 2020 +0000
1060
1061 upstream: fix kex mem-leak in ssh_packet_close; ok djm
1062
1063 OpenBSD-Commit-ID: e2e9533f393620383afd0b68ef435de8d5e8abe4
1064
1065commit e35995088cd6691a712bfd586bae8084a3a922ba
1066Author: markus@openbsd.org <markus@openbsd.org>
1067Date: Wed Jun 24 15:10:38 2020 +0000
1068
1069 upstream: fix ssh -O proxy w/mux which got broken by no longer
1070
1071 making ssh->kex optional in packet.c revision 1.278 ok djm@
1072
1073 OpenBSD-Commit-ID: 2b65df04a064c2c6277359921d2320c90ab7d917
1074
1075commit 250246fef22b87a54a63211c60a2def9be431fbd
1076Author: markus@openbsd.org <markus@openbsd.org>
1077Date: Wed Jun 24 15:09:53 2020 +0000
1078
1079 upstream: support loading big sshd_config files w/o realloc; ok
1080
1081 djm
1082
1083 OpenBSD-Commit-ID: ba9238e810074ac907f0cf8cee1737ac04983171
1084
1085commit 89b54900ac61986760452f132bbe3fb7249cfdac
1086Author: markus@openbsd.org <markus@openbsd.org>
1087Date: Wed Jun 24 15:08:53 2020 +0000
1088
1089 upstream: allow sshd_config longer than 256k; ok djm
1090
1091 OpenBSD-Commit-ID: 83f40dd5457a64c1d3928eb4364461b22766beb3
1092
1093commit e3fa6249e6d9ceb57c14b04dd4c0cfab12fa7cd5
1094Author: markus@openbsd.org <markus@openbsd.org>
1095Date: Wed Jun 24 15:07:33 2020 +0000
1096
1097 upstream: only call sshkey_xmss_init() once for KEY_XMSS_CERT; ok
1098
1099 djm
1100
1101 OpenBSD-Commit-ID: d0002ffb7f20f538b014d1d0735facd5a81ff096
1102
1103commit 37f2da069c0619f2947fb92785051d82882876d7
1104Author: djm@openbsd.org <djm@openbsd.org>
1105Date: Mon Jun 22 23:44:27 2020 +0000
1106
1107 upstream: some clarifying comments
1108
1109 OpenBSD-Commit-ID: 5268479000fd97bfa30ab819f3517139daa054a2
1110
1111commit b659319a5bc9e8adf3c4facc51f37b670d2a7426
1112Author: jmc@openbsd.org <jmc@openbsd.org>
1113Date: Mon Jun 22 06:37:38 2020 +0000
1114
1115 upstream: updated argument name for -P in first synopsis was
1116
1117 missed in previous;
1118
1119 OpenBSD-Commit-ID: 8d84dc3050469884ea91e29ee06a371713f2d0b7
1120
1121commit 02a9222cbce7131d639984c2f6c71d1551fc3333
1122Author: jmc@openbsd.org <jmc@openbsd.org>
1123Date: Mon Jun 22 06:36:40 2020 +0000
1124
1125 upstream: supply word missing in previous;
1126
1127 OpenBSD-Commit-ID: 16a38b049f216108f66c8b699aa046063381bd23
1128
1129commit 5098b3b6230852a80ac6cef5d53a785c789a5a56
1130Author: Damien Miller <djm@mindrot.org>
1131Date: Mon Jun 22 16:54:02 2020 +1000
1132
1133 missing files for webauthn/sshsig unit test
1134
1135commit 354535ff79380237924ac8fdc98f8cdf83e67da6
1136Author: djm@openbsd.org <djm@openbsd.org>
1137Date: Mon Jun 22 06:00:06 2020 +0000
1138
1139 upstream: add support for verification of webauthn sshsig signature,
1140
1141 and example HTML/JS to generate webauthn signatures in SSH formats (also used
1142 to generate the testdata/* for the test).
1143
1144 OpenBSD-Regress-ID: dc575be5bb1796fdf4b8aaee0ef52a6671a0f6fb
1145
1146commit bb52e70fa5330070ec9a23069c311d9e277bbd6f
1147Author: djm@openbsd.org <djm@openbsd.org>
1148Date: Mon Jun 22 05:58:35 2020 +0000
1149
1150 upstream: Add support for FIDO webauthn (verification only).
1151
1152 webauthn is a standard for using FIDO keys in web browsers. webauthn
1153 signatures are a slightly different format to plain FIDO signatures - this
1154 support allows verification of these. Feedback and ok markus@
1155
1156 OpenBSD-Commit-ID: ab7e3a9fb5782d99d574f408614d833379e564ad
1157
1158commit 64bc121097f377142f1387ffb2df7592c49935af
1159Author: djm@openbsd.org <djm@openbsd.org>
1160Date: Mon Jun 22 05:56:23 2020 +0000
1161
1162 upstream: refactor ECDSA-SK verification a little ahead of adding
1163
1164 support for FIDO webauthn signature verification support; ok markus@
1165
1166 OpenBSD-Commit-ID: c9f478fd8e0c1bd17e511ce8694f010d8e32043e
1167
1168commit 12848191f8fe725af4485d3600e0842d92f8637f
1169Author: djm@openbsd.org <djm@openbsd.org>
1170Date: Mon Jun 22 05:54:10 2020 +0000
1171
1172 upstream: support for RFC4648 base64url encoding; ok markus
1173
1174 OpenBSD-Commit-ID: 0ef22c55e772dda05c112c88412c0797fec66eb4
1175
1176commit 473b4af43db12127137c7fc1a10928313f5a16d2
1177Author: djm@openbsd.org <djm@openbsd.org>
1178Date: Mon Jun 22 05:53:26 2020 +0000
1179
1180 upstream: better terminology for permissions; feedback & ok markus@
1181
1182 OpenBSD-Commit-ID: ff2a71803b5ea57b83cc3fa9b3be42b70e462fb9
1183
1184commit fc270baf264248c3ee3050b13a6c8c0919e6559f
1185Author: djm@openbsd.org <djm@openbsd.org>
1186Date: Mon Jun 22 05:52:05 2020 +0000
1187
1188 upstream: better terminology for permissions; feedback & ok markus@
1189
1190 OpenBSD-Commit-ID: ffb220b435610741dcb4de0e7fc68cbbdc876d2c
1191
1192commit 00531bb42f1af17ddabea59c3d9c4b0629000d27
1193Author: dtucker@openbsd.org <dtucker@openbsd.org>
1194Date: Fri Jun 19 07:21:42 2020 +0000
1195
1196 upstream: Correct synopsis and usage for the options accepted when
1197
1198 passing a command to ssh-agent. ok jmc@
1199
1200 OpenBSD-Commit-ID: b36f0679cb0cac0e33b361051b3406ade82ea846
1201
1202commit b4556c8ad7177e379f0b60305a0cd70f12180e7c
1203Author: Darren Tucker <dtucker@dtucker.net>
1204Date: Fri Jun 19 19:22:00 2020 +1000
1205
1206 Add OPENBSD ORIGINAL marker to bcrypt_pbkdf.
1207
1208commit 1babb8bb14c423011ca34c2f563bb1c51c8fbf1d
1209Author: Darren Tucker <dtucker@dtucker.net>
1210Date: Fri Jun 19 19:10:47 2020 +1000
1211
1212 Extra brackets around sizeof() in bcrypt.
1213
1214 Prevents following warning from clang 10:
1215 bcrypt_pbkdf.c:94:40: error: expression does not compute the number of
1216 elements in this array; element type is ´uint32_tÂ[...]
1217 place parentheses around the ´sizeof(uint64_t)´ expression to
1218 silence this warning
1219
1220commit 9e065729592633290e5ddb6852792913b2286545
1221Author: Darren Tucker <dtucker@dtucker.net>
1222Date: Fri Jun 19 18:47:56 2020 +1000
1223
1224 Add includes.h to new test.
1225
1226 Fixes warnings eg "´bounded´ attribute directive ignor" from gcc.
1227
1228commit e684b1ea365e070433f282a3c1dabc3e2311ce49
1229Author: Darren Tucker <dtucker@dtucker.net>
1230Date: Fri Jun 19 18:38:39 2020 +1000
1231
1232 Skip OpenSSL specific tests w/out OpenSSL.
1233
1234 Allows unit tests to pass when configure'ed --without-openssl.
1235
1236commit 80610e97a76407ca982e62fd051c9be03622fe7b
1237Author: Darren Tucker <dtucker@dtucker.net>
1238Date: Fri Jun 19 17:15:27 2020 +1000
1239
1240 Hook sshsig tests up to Portable Makefiles.
1241
1242commit 5dba1fcabacaab46693338ec829b42a1293d1f52
1243Author: dtucker@openbsd.org <dtucker@openbsd.org>
1244Date: Fri Jun 19 05:07:09 2020 +0000
1245
1246 upstream: Test that ssh-agent exits when running as as subprocess
1247
1248 of a specified command (ie "ssh-agent command"). Would have caught bz#3181.
1249
1250 OpenBSD-Regress-ID: 895b4765ba5153eefaea3160a7fe08ac0b6db8b3
1251
1252commit 68e8294f6b04f9590ea227e63d3e129398a49e27
1253Author: djm@openbsd.org <djm@openbsd.org>
1254Date: Fri Jun 19 04:34:21 2020 +0000
1255
1256 upstream: run sshsig unit tests
1257
1258 OpenBSD-Regress-ID: 706ef17e2b545b64873626e0e35553da7c06052a
1259
1260commit 5edfa1690e9a75048971fd8775f7c16d153779db
1261Author: djm@openbsd.org <djm@openbsd.org>
1262Date: Fri Jun 19 04:32:09 2020 +0000
1263
1264 upstream: basic unit test for sshsig.[ch], including FIDO keys
1265
1266 verification only so far
1267
1268 OpenBSD-Regress-ID: fb1f946c8fc59206bc6a6666e577b5d5d7e45896
1269
1270commit e95c0a0e964827722d29b4bc00d5c0ff4afe0ed2
1271Author: djm@openbsd.org <djm@openbsd.org>
1272Date: Fri Jun 19 03:48:49 2020 +0000
1273
1274 upstream: basic unit test for FIDO kep parsing
1275
1276 OpenBSD-Regress-ID: 8089b88393dd916d7c95422b442a6fd4cfe00c82
1277
1278commit 7775819c6de3e9547ac57b87c7dd2bfd28cefcc5
1279Author: djm@openbsd.org <djm@openbsd.org>
1280Date: Thu Jun 18 23:34:19 2020 +0000
1281
1282 upstream: check public host key matches private; ok markus@ (as
1283
1284 part of previous diff)
1285
1286 OpenBSD-Commit-ID: 65a4f66436028748b59fb88b264cb8c94ce2ba63
1287
1288commit c514f3c0522855b4d548286eaa113e209051a6d2
1289Author: djm@openbsd.org <djm@openbsd.org>
1290Date: Thu Jun 18 23:33:38 2020 +0000
1291
1292 upstream: avoid spurious "Unable to load host key" message when
1293
1294 sshd can load a private key but no public counterpart; with & ok markus@
1295
1296 OpenBSD-Commit-ID: 0713cbdf9aa1ff8ac7b1f78b09ac911af510f81b
1297
1298commit 7fafaeb5da365f4a408fec355dac04a774f27193
1299Author: djm@openbsd.org <djm@openbsd.org>
1300Date: Fri Jun 12 05:26:37 2020 +0000
1301
1302 upstream: correct RFC number; from HARUYAMA Seigo via GH PR191
1303
1304 OpenBSD-Commit-ID: 8d03b6c96ca98bfbc23d3754c3c33e1fe0852e10
1305
1306commit 3a7f654d5bcb20df24a134b6581b0d235da4564a
1307Author: djm@openbsd.org <djm@openbsd.org>
1308Date: Fri Jun 5 06:18:07 2020 +0000
1309
1310 upstream: unbreak "sshd -ddd" - close of config passing fd happened too
1311
1312 early. ok markus@
1313
1314 OpenBSD-Commit-ID: 49346e945c6447aca3e904e65fc400128d2f8ed0
1315
1316commit 3de02be39e5c0c2208d9682a3844991651620fcc
1317Author: Andreas Schwab <schwab@suse.de>
1318Date: Mon May 25 11:10:44 2020 +0200
1319
1320 Add support for AUDIT_ARCH_RISCV64
1321
1322commit ea547eb0329c2f8da77a4ac05f6c330bd49bdaab
1323Author: djm@openbsd.org <djm@openbsd.org>
1324Date: Fri Jun 5 03:25:35 2020 +0000
1325
1326 upstream: make sshbuf_putb(b, NULL) a no-op
1327
1328 OpenBSD-Commit-ID: 976fdc99b500e347023d430df372f31c1dd128f7
1329
1330commit 69796297c812640415c6cea074ea61afc899cbaa
1331Author: djm@openbsd.org <djm@openbsd.org>
1332Date: Fri Jun 5 03:24:36 2020 +0000
1333
1334 upstream: make sshbuf_dump() args const
1335
1336 OpenBSD-Commit-ID: b4a5accae750875d665b862504169769bcf663bd
1337
1338commit 670428895739d1f79894bdb2457891c3afa60a59
1339Author: djm@openbsd.org <djm@openbsd.org>
1340Date: Fri Jun 5 03:24:16 2020 +0000
1341
1342 upstream: wrap long line
1343
1344 OpenBSD-Commit-ID: ed405a12bd27bdc9c52e169bc5ff3529b4ebbbb2
1345
1346commit 2f648cf222882719040906722b3593b01df4ad1a
1347Author: dtucker@openbsd.org <dtucker@openbsd.org>
1348Date: Fri Jun 5 03:15:26 2020 +0000
1349
1350 upstream: Correct historical comment: provos@ modified OpenSSH to
1351
1352 work with SSLeay (very quickly replaced by OpenSSL) not SSL in general. ok
1353 deraadt, historical context markus@
1354
1355 OpenBSD-Commit-ID: 7209e07a2984b50411ed8ca5a4932da5030d2b90
1356
1357commit 56548e4efcc3e3e8093c2eba30c75b23e561b172
1358Author: dtucker@openbsd.org <dtucker@openbsd.org>
1359Date: Wed Jun 3 08:23:18 2020 +0000
1360
1361 upstream: Import regenerated moduli file.
1362
1363 OpenBSD-Commit-ID: 52ff0e3205036147b2499889353ac082e505ea54
1364
1365commit 8da801f585dd9c534c0cbe487a3b1648036bf2fb
1366Author: Darren Tucker <dtucker@dtucker.net>
1367Date: Fri Jun 5 13:20:10 2020 +1000
1368
1369 Test fallthrough in OSSH_CHECK_CFLAG_COMPILE.
1370
1371 clang 10's -Wimplicit-fallthrough does not understand /* FALLTHROUGH */
1372 comments and we don't use the __attribute__((fallthrough)) that it's
1373 looking for. This has the effect of turning off -Wimplicit-fallthrough
1374 where it does not currently help (particularly with -Werror). ok djm@
1375
1376commit 049297de975b92adcc2db77e3fb7046c0e3c695d
1377Author: dtucker@openbsd.org <dtucker@openbsd.org>
1378Date: Wed Jun 3 08:23:18 2020 +0000
1379
1380 upstream: Import regenerated moduli file.
1381
1382 OpenBSD-Commit-ID: 52ff0e3205036147b2499889353ac082e505ea54
1383
1384commit b458423a38a3140ac022ffcffcb332609faccfe3
1385Author: dtucker@openbsd.org <dtucker@openbsd.org>
1386Date: Mon Jun 1 07:11:38 2020 +0000
1387
1388 upstream: Remove now-unused proto_spec and associated definitions.
1389
1390 ok djm@
1391
1392 OpenBSD-Commit-ID: 2e2b18e3aa6ee22a7b69c39f2d3bd679ec35c362
1393
1394commit 5ad3c3a33ef038b55a14ebd31faeeec46073db2c
1395Author: millert@openbsd.org <millert@openbsd.org>
1396Date: Fri May 29 21:22:02 2020 +0000
1397
1398 upstream: Fix error message on close(2) and add printf format
1399
1400 attributes. From Christos Zoulas, OK markus@
1401
1402 OpenBSD-Commit-ID: 41523c999a9e3561fcc7082fd38ea2e0629ee07e
1403
1404commit 712ac1efb687a945a89db6aa3e998c1a17b38653
1405Author: dtucker@openbsd.org <dtucker@openbsd.org>
1406Date: Fri May 29 11:17:56 2020 +0000
1407
1408 upstream: Make dollar_expand variadic and pass a real va_list to
1409
1410 vdollar_percent_expand. Fixes build error on arm64 spotted by otto@.
1411
1412 OpenBSD-Commit-ID: 181910d7ae489f40ad609b4cf4a20f3d068a7279
1413
1414commit 837ffa9699a9cba47ae7921d2876afaccc027133
1415Author: Darren Tucker <dtucker@dtucker.net>
1416Date: Fri May 29 20:39:00 2020 +1000
1417
1418 Omit ToS setting if we don't have IPV6_TCLASS too.
1419
1420 Fixes tests on old BSDs.
1421
1422commit f85b118d2150847cc333895296bc230e367be6b5
1423Author: dtucker@openbsd.org <dtucker@openbsd.org>
1424Date: Fri May 29 09:02:44 2020 +0000
1425
1426 upstream: Pass a NULL instead of zeroed out va_list from
1427
1428 dollar_expand. The original intent was in case there's some platform where
1429 va_list is not a pointer equivalent, but on i386 this chokes on the memset.
1430 This unbreaks that build, but will require further consideration.
1431
1432 OpenBSD-Commit-ID: 7b90afcd8e1137a1d863204060052aef415baaf7
1433
1434commit ec1d50b01c84ff667240ed525f669454c4ebc8e9
1435Author: jmc@openbsd.org <jmc@openbsd.org>
1436Date: Fri May 29 05:48:39 2020 +0000
1437
1438 upstream: remove a stray .El;
1439
1440 OpenBSD-Commit-ID: 58ddfe6f8a15fe10209db6664ecbe7896f1d167c
1441
1442commit 058674a62ffe33f01d871d46e624bc2a2c22d91f
1443Author: dtucker@openbsd.org <dtucker@openbsd.org>
1444Date: Fri May 29 04:32:26 2020 +0000
1445
1446 upstream: Add regression and unit tests for ${ENV} style
1447
1448 environment variable expansion in various keywords (bz#3140). ok djm@
1449
1450 OpenBSD-Regress-ID: 4d9ceb95d89365b7b674bc26cf064c15a5bbb197
1451
1452commit 0b15892fc47d6840eba1291a6be9be1a70bc8972
1453Author: dtucker@openbsd.org <dtucker@openbsd.org>
1454Date: Fri May 29 01:21:35 2020 +0000
1455
1456 upstream: Unit test for convtime. ok djm@
1457
1458 OpenBSD-Regress-ID: cec4239efa2fc4c7062064f07a847e1cbdbcd5dd
1459
1460commit 188e332d1c8f9f24e5b6659e9680bf083f837df9
1461Author: djm@openbsd.org <djm@openbsd.org>
1462Date: Fri May 29 05:37:03 2020 +0000
1463
1464 upstream: mention that wildcards are processed in lexical order;
1465
1466 bz#3165
1467
1468 OpenBSD-Commit-ID: 8856f3d1612bd42e9ee606d89386cae456dd165c
1469
1470commit 4a1b46e6d032608b7ec00ae51c4e25b82f460b05
1471Author: dtucker@openbsd.org <dtucker@openbsd.org>
1472Date: Fri May 29 04:25:40 2020 +0000
1473
1474 upstream: Allow some keywords to expand shell-style ${ENV}
1475
1476 environment variables on the client side. The supported keywords are
1477 CertificateFile, ControlPath, IdentityAgent and IdentityFile, plus
1478 LocalForward and RemoteForward when used for Unix domain socket paths. This
1479 would for example allow forwarding of Unix domain socket paths that change at
1480 runtime. bz#3140, ok djm@
1481
1482 OpenBSD-Commit-ID: a4a2e801fc2d4df2fe0e58f50d9c81b03822dffa
1483
1484commit c9bab1d3a9e183cef3a3412f57880a0374cc8cb2
1485Author: Damien Miller <djm@mindrot.org>
1486Date: Fri May 29 14:49:16 2020 +1000
4 1487
5 depend 1488 depend
6 1489
7commit b6d251ed9af90e16c08a72c4aac2cb8ace8f94b1 1490commit 0b0d219313bf9239ca043f20b1a095db0245588f
1491Author: sobrado <sobrado@openbsd.org>
1492Date: Thu Sep 3 23:06:28 2015 +0000
1493
1494 partial sync of regress/netcat.c with upstream
1495
1496 synchronize synopsis and usage.
1497
1498commit 0f04c8467f589f85a523e19fd684c4f6c4ed9482
1499Author: chl <chl@openbsd.org>
1500Date: Sun Jul 26 19:12:28 2015 +0000
1501
1502 partial sync of regress/netcat.c with upstream
1503
1504 remove unused variable
1505
1506 ok tedu@
1507
1508commit d6a81050ace2630b06c3c6dd39bb4eef5d1043f8
1509Author: tobias <tobias@openbsd.org>
1510Date: Thu Mar 26 21:22:50 2015 +0000
1511
1512 partial sync of regress/netcat.c with upstream
1513
1514 The code in socks.c writes multiple times in a row to a socket. If the socket becomes invalid between these calls (e.g. connection closed), write will throw SIGPIPE. With this patch, SIGPIPE is ignored so we can handle write's -1 return value (errno will be EPIPE). Ultimately, it leads to program exit, too -- but with nicer error message. :)
1515
1516 with input by and ok djm
1517
1518commit bf3893dddd35e16def04bf48ed2ee1ad695b8f82
1519Author: tobias <tobias@openbsd.org>
1520Date: Thu Mar 26 10:36:03 2015 +0000
1521
1522 partial sync of regress/netcat.c with upstream
1523
1524 Check for short writes in fdpass(). Clean up while at it.
1525
1526 ok djm
1527
1528commit e18435fec124b4c08eb6bbbbee9693dc04f4befb
1529Author: jca <jca@openbsd.org>
1530Date: Sat Feb 14 22:40:22 2015 +0000
1531
1532 partial sync of regress/netcat.c with upstream
1533
1534 Support for nc -T on IPv6 addresses.
1535
1536 ok sthen@
1537
1538commit 4c607244054a036ad3b2449a6cb4c15feb846a76
1539Author: djm@openbsd.org <djm@openbsd.org>
1540Date: Fri May 29 03:14:02 2020 +0000
1541
1542 upstream: fix compilation on !HAVE_DLOPEN platforms; stub function
1543
1544 was not updated to match API change. From Dale Rahn via beck@ ok markus@
1545
1546 OpenBSD-Commit-ID: 2b8d054afe34c9ac85e417dae702ef981917b836
1547
1548commit 224418cf55611869a4ace1b8b07bba0dff77a9c3
1549Author: djm@openbsd.org <djm@openbsd.org>
1550Date: Fri May 29 03:11:54 2020 +0000
1551
1552 upstream: fix exit status for downloading of FIDO resident keys;
1553
1554 from Pedro Martelletto, ok markus@
1555
1556 OpenBSD-Commit-ID: 0da77dc24a1084798eedd83c39a002a9d231faef
1557
1558commit 1001dd148ed7c57bccf56afb40cb77482ea343a6
1559Author: dtucker@openbsd.org <dtucker@openbsd.org>
1560Date: Fri May 29 01:20:46 2020 +0000
1561
1562 upstream: Fix multiplier in convtime when handling seconds after
1563
1564 other units. bz#3171, spotted by ronf at timeheart.net, ok djm@.
1565
1566 OpenBSD-Commit-ID: 95b7a848e1083974a65fbb6ccb381d438e1dd5be
1567
1568commit 7af1e92cd289b7eaa9a683e9a6f2fddd98f37a01
1569Author: djm@openbsd.org <djm@openbsd.org>
1570Date: Wed May 27 22:37:53 2020 +0000
1571
1572 upstream: fix Include before Match in sshd_config; bz#3122 patch
1573
1574 from Jakub Jelen
1575
1576 OpenBSD-Commit-ID: 1b0aaf135fe6732b5d326946042665dd3beba5f4
1577
1578commit 0a9a611619b0a1fecd0195ec86a9885f5d681c84
1579Author: djm@openbsd.org <djm@openbsd.org>
1580Date: Wed May 27 21:59:11 2020 +0000
1581
1582 upstream: Do not call process_queued_listen_addrs() for every
1583
1584 included file from sshd_config; patch from Jakub Jelen
1585
1586 OpenBSD-Commit-ID: 0ff603d6f06a7fab4881f12503b53024799d0a49
1587
1588commit 16ea1fdbe736648f79a827219134331f8d9844fb
1589Author: djm@openbsd.org <djm@openbsd.org>
1590Date: Wed May 27 21:25:18 2020 +0000
1591
1592 upstream: fix crash in recallocarray when deleting SendEnv
1593
1594 variables; spotted by & ok sthen@
1595
1596 OpenBSD-Commit-ID: b881e8e849edeec5082b5c0a87d8d7cff091a8fd
1597
1598commit 47adfdc07f4f8ea0064a1495500244de08d311ed
1599Author: djm@openbsd.org <djm@openbsd.org>
1600Date: Wed May 27 22:35:19 2020 +0000
1601
1602 upstream: two new tests for Include in sshd_config, checking whether
1603
1604 Port directives are processed correctly and handling of Include directives
1605 that appear before Match. Both tests currently fail. bz#3122 and bz#3169 -
1606 patch from Jakub Jelen
1607
1608 OpenBSD-Regress-ID: 8ad5a4a385a63f0a1c59c59c763ff029b45715df
1609
1610commit 47faad8f794516c33864d866aa1b55d88416f94c
1611Author: Darren Tucker <dtucker@dtucker.net>
1612Date: Wed May 27 23:26:23 2020 +1000
1613
1614 Document that libfido2 >= 1.4.0 is needed.
1615
1616commit 4be563994c0cbe9856e7dd3078909f41beae4a9c
1617Author: djm@openbsd.org <djm@openbsd.org>
1618Date: Tue May 26 01:59:46 2020 +0000
1619
1620 upstream: fix memleak of signature; from Pedro Martelletto
1621
1622 OpenBSD-Commit-ID: d0a6eb07e77c001427d738b220dd024ddc64b2bb
1623
1624commit 0c111eb84efba7c2a38b2cc3278901a0123161b9
1625Author: djm@openbsd.org <djm@openbsd.org>
1626Date: Tue May 26 01:26:58 2020 +0000
1627
1628 upstream: Restrict ssh-agent from signing web challenges for FIDO
1629
1630 keys.
1631
1632 When signing messages in ssh-agent using a FIDO key that has an
1633 application string that does not start with "ssh:", ensure that the
1634 message being signed is one of the forms expected for the SSH protocol
1635 (currently pubkey authentication and sshsig signatures).
1636
1637 This prevents ssh-agent forwarding on a host that has FIDO keys
1638 attached granting the ability for the remote side to sign challenges
1639 for web authentication using those keys too.
1640
1641 Note that the converse case of web browsers signing SSH challenges is
1642 already precluded because no web RP can have the "ssh:" prefix in the
1643 application string that we require.
1644
1645 ok markus@
1646
1647 OpenBSD-Commit-ID: 9ab6012574ed0352d2f097d307f4a988222d1b19
1648
1649commit 9c5f64b6cb3a68b99915202d318b842c6c76cf14
1650Author: djm@openbsd.org <djm@openbsd.org>
1651Date: Tue May 26 01:09:05 2020 +0000
1652
1653 upstream: improve logging for MaxStartups connection throttling:
1654
1655 have sshd log when it starts and stops throttling and periodically while in
1656 this state. bz#3055 ok markus@
1657
1658 OpenBSD-Commit-ID: 2e07a09a62ab45d790d3d2d714f8cc09a9ac7ab9
1659
1660commit 756c6f66aee83a5862a6f936a316f761532f3320
1661Author: djm@openbsd.org <djm@openbsd.org>
1662Date: Tue May 26 01:06:52 2020 +0000
1663
1664 upstream: add fmt_timeframe() (from bgpd) to format a time
1665
1666 interval in a human- friendly format. Switch copyright for this file from BSD
1667 to MIT to make it easier to add Henning's copyright for this function. ok
1668 markus@
1669
1670 OpenBSD-Commit-ID: 414a831c662df7e68893e5233e86f2cac081ccf9
1671
1672commit 2a63ce5cd6d0e782783bf721462239b03757dd49
8Author: djm@openbsd.org <djm@openbsd.org> 1673Author: djm@openbsd.org <djm@openbsd.org>
9Date: Mon May 18 04:29:35 2020 +0000 1674Date: Mon May 18 04:29:35 2020 +0000
10 1675
@@ -12,6 +1677,117 @@ Date: Mon May 18 04:29:35 2020 +0000
12 1677
13 OpenBSD-Commit-ID: e6099c3fbb70aa67eb106e84d8b43f1fa919b721 1678 OpenBSD-Commit-ID: e6099c3fbb70aa67eb106e84d8b43f1fa919b721
14 1679
1680commit 4b307faf2fb0e63e51a550b37652f7f972df9676
1681Author: markus@openbsd.org <markus@openbsd.org>
1682Date: Fri May 15 08:34:03 2020 +0000
1683
1684 upstream: sshd listener must not block if reexecd sshd exits
1685
1686 in write(2) on config_s[0] if the forked child exits early before finishing
1687 recv_rexec_state (e.g. with fatal()) because config_s[1] stays open in the
1688 parent. this prevents the parent from accepting new connections. ok djm,
1689 deraadt
1690
1691 OpenBSD-Commit-ID: 92ccfeb939ccd55bda914dc3fe84582158c4a9ef
1692
1693commit af8b16fb2cce880341c0ee570ceb0d84104bdcc0
1694Author: djm@openbsd.org <djm@openbsd.org>
1695Date: Fri May 15 03:57:33 2020 +0000
1696
1697 upstream: fix off-by-one error that caused sftp downloads to make
1698
1699 one more concurrent request that desired. This prevented using sftp(1) in
1700 unpipelined request/response mode, which is useful when debugging. Patch from
1701 Stephen Goetze in bz#3054
1702
1703 OpenBSD-Commit-ID: 41b394ebe57037dbc43bdd0eef21ff0511191f28
1704
1705commit d7d753e2979f2d3c904b03a08d30856cd2a6e892
1706Author: deraadt@openbsd.org <deraadt@openbsd.org>
1707Date: Wed May 13 22:38:41 2020 +0000
1708
1709 upstream: we are still aiming for pre-C99 ...
1710
1711 OpenBSD-Commit-ID: a240fc9cbe60bc4e6c3d24d022eb4ab01fe1cb38
1712
1713commit 2ad7b7e46408dbebf2a4efc4efd75a9544197d57
1714Author: djm@openbsd.org <djm@openbsd.org>
1715Date: Wed May 13 10:08:02 2020 +0000
1716
1717 upstream: Enable credProtect extension when generating a resident
1718
1719 key.
1720
1721 The FIDO 2.1 Client to Authenticator Protocol introduced a "credProtect"
1722 feature to better protect resident keys. This option allows (amone other
1723 possibilities) requiring a PIN prior to all operations that may retrieve
1724 the key handle.
1725
1726 Patch by Pedro Martelletto; ok djm and markus
1727
1728 OpenBSD-Commit-ID: 013bc06a577dcaa66be3913b7f183eb8cad87e73
1729
1730commit 1e70dc3285fc9b4f6454975acb81e8702c23dd89
1731Author: djm@openbsd.org <djm@openbsd.org>
1732Date: Wed May 13 09:57:17 2020 +0000
1733
1734 upstream: always call fido_init(); previous behaviour only called
1735
1736 fido_init() when SK_DEBUG was defined. Harmless with current libfido2, but
1737 this isn't guaranteed in the future.
1738
1739 OpenBSD-Commit-ID: c7ea20ff2bcd98dd12015d748d3672d4f01f0864
1740
1741commit f2d84f1b3fa68d77c99238d4c645d0266fae2a74
1742Author: djm@openbsd.org <djm@openbsd.org>
1743Date: Wed May 13 09:55:57 2020 +0000
1744
1745 upstream: preserve group/world read permission on known_hosts
1746
1747 file across runs of "ssh-keygen -Rf /path". The old behaviour was to remove
1748 all rights for group/other. bz#3146 ok dtucker@
1749
1750 OpenBSD-Commit-ID: dc369d0e0b5dd826430c63fd5f4b269953448a8a
1751
1752commit 05a651400da6fbe12296c34e3d3bcf09f034fbbf
1753Author: djm@openbsd.org <djm@openbsd.org>
1754Date: Wed May 13 09:52:41 2020 +0000
1755
1756 upstream: when ordering the hostkey algorithms to request from a
1757
1758 server, prefer certificate types if the known_hosts files contain a key
1759 marked as a @cert-authority; bz#3157 ok markus@
1760
1761 OpenBSD-Commit-ID: 8f194573e5bb7c01b69bbfaabc68f27c9fa5e0db
1762
1763commit 829451815ec207e14bd54ff5cf7e22046816f042
1764Author: djm@openbsd.org <djm@openbsd.org>
1765Date: Tue May 12 01:41:32 2020 +0000
1766
1767 upstream: fix non-ASCII quote that snuck in; spotted by Gabriel
1768
1769 Kihlman
1770
1771 OpenBSD-Commit-ID: 04bcde311de2325d9e45730c744c8de079b49800
1772
1773commit 5a442cec92c0efd6fffb4af84bf99c70af248ef3
1774Author: djm@openbsd.org <djm@openbsd.org>
1775Date: Mon May 11 02:11:29 2020 +0000
1776
1777 upstream: clarify role of FIDO tokens in multi-factor
1778
1779 authentictation; mostly from Pedro Martelletto
1780
1781 OpenBSD-Commit-ID: fbe05685a1f99c74b1baca7130c5a03c2df7c0ac
1782
1783commit ecb2c02d994b3e21994f31a70ff911667c262f1f
1784Author: djm@openbsd.org <djm@openbsd.org>
1785Date: Fri May 8 05:13:14 2020 +0000
1786
1787 upstream: fix compilation with DEBUG_KEXDH; bz#3160 ok dtucker@
1788
1789 OpenBSD-Commit-ID: 832e771948fb45f2270e8b8895aac36d176ba17a
1790
15commit 3ab6fccc3935e9b778ff52f9c8d40f215d58e01d 1791commit 3ab6fccc3935e9b778ff52f9c8d40f215d58e01d
16Author: Damien Miller <djm@mindrot.org> 1792Author: Damien Miller <djm@mindrot.org>
17Date: Thu May 14 12:22:09 2020 +1000 1793Date: Thu May 14 12:22:09 2020 +1000
@@ -10714,1964 +12490,3 @@ Date: Tue Oct 2 12:40:07 2018 +0000
10714 ok markus@ dtucker@ 12490 ok markus@ dtucker@
10715 12491
10716 OpenBSD-Commit-ID: 4bea826f575862eaac569c4bedd1056a268be1c3 12492 OpenBSD-Commit-ID: 4bea826f575862eaac569c4bedd1056a268be1c3
10717
10718commit dba50258333f2604a87848762af07ba2cc40407a
10719Author: djm@openbsd.org <djm@openbsd.org>
10720Date: Wed Sep 26 07:32:44 2018 +0000
10721
10722 upstream: remove big ugly TODO comment from start of file. Some of
10723
10724 the mentioned tasks are obsolete and, of the remainder, most are already
10725 captured in PROTOCOL.mux where they better belong
10726
10727 OpenBSD-Commit-ID: 16d9d76dee42a5bb651c9d6740f7f0ef68aeb407
10728
10729commit 92b61a38ee9b765f5049f03cd1143e13f3878905
10730Author: djm@openbsd.org <djm@openbsd.org>
10731Date: Wed Sep 26 07:30:05 2018 +0000
10732
10733 upstream: Document mux proxy mode; added by Markus in openssh-7.4
10734
10735 Also add a little bit of information about the overall packet format
10736
10737 OpenBSD-Commit-ID: bdb6f6ea8580ef96792e270cae7857786ad84a95
10738
10739commit 9d883a1ce4f89b175fd77405ff32674620703fb2
10740Author: djm@openbsd.org <djm@openbsd.org>
10741Date: Wed Sep 26 01:48:57 2018 +0000
10742
10743 upstream: s/process_mux_master/mux_master_process/ in mux master
10744
10745 function names,
10746
10747 Gives better symmetry with the existing mux_client_*() names and makes
10748 it more obvious when a message comes from the master vs client (they
10749 are interleved in ControlMaster=auto mode).
10750
10751 no functional change beyond prefixing a could of log messages with
10752 __func__ where they were previously lacking.
10753
10754 OpenBSD-Commit-ID: b01f7c3fdf92692e1713a822a89dc499333daf75
10755
10756commit c2fa53cd6462da82d3a851dc3a4a3f6b920337c8
10757Author: Darren Tucker <dtucker@dtucker.net>
10758Date: Sat Sep 22 14:41:24 2018 +1000
10759
10760 Remove unused variable in _ssh_compat_fflush.
10761
10762commit d1b3540c21212624af907488960d703c7d987b42
10763Author: Darren Tucker <dtucker@dtucker.net>
10764Date: Thu Sep 20 18:08:43 2018 +1000
10765
10766 Import updated moduli.
10767
10768commit b5e412a8993ad17b9e1141c78408df15d3d987e1
10769Author: djm@openbsd.org <djm@openbsd.org>
10770Date: Fri Sep 21 12:46:22 2018 +0000
10771
10772 upstream: Allow ssh_config ForwardX11Timeout=0 to disable the
10773
10774 timeout and allow X11 connections in untrusted mode indefinitely. ok dtucker@
10775
10776 OpenBSD-Commit-ID: ea1ceed3f540b48e5803f933e59a03b20db10c69
10777
10778commit cb24d9fcc901429d77211f274031653476864ec6
10779Author: djm@openbsd.org <djm@openbsd.org>
10780Date: Fri Sep 21 12:23:17 2018 +0000
10781
10782 upstream: when compiled with GSSAPI support, cache supported method
10783
10784 OIDs by calling ssh_gssapi_prepare_supported_oids() regardless of whether
10785 GSSAPI authentication is enabled in the main config.
10786
10787 This avoids sandbox violations for configurations that enable GSSAPI
10788 auth later, e.g.
10789
10790 Match user djm
10791 GSSAPIAuthentication yes
10792
10793 bz#2107; ok dtucker@
10794
10795 OpenBSD-Commit-ID: a5dd42d87c74e27cfb712b15b0f97ab20e0afd1d
10796
10797commit bbc8af72ba68da014d4de6e21a85eb5123384226
10798Author: djm@openbsd.org <djm@openbsd.org>
10799Date: Fri Sep 21 12:20:12 2018 +0000
10800
10801 upstream: In sshkey_in_file(), ignore keys that are considered for
10802
10803 being too short (i.e. SSH_ERR_KEY_LENGTH). These keys will not be considered
10804 to be "in the file". This allows key revocation lists to contain short keys
10805 without the entire revocation list being considered invalid.
10806
10807 bz#2897; ok dtucker
10808
10809 OpenBSD-Commit-ID: d9f3d857d07194a42ad7e62889a74dc3f9d9924b
10810
10811commit 383a33d160cefbfd1b40fef81f72eadbf9303a66
10812Author: djm@openbsd.org <djm@openbsd.org>
10813Date: Fri Sep 21 03:11:36 2018 +0000
10814
10815 upstream: Treat connections with ProxyJump specified the same as ones
10816
10817 with a ProxyCommand set with regards to hostname canonicalisation (i.e. don't
10818 try to canonicalise the hostname unless CanonicalizeHostname is set to
10819 'always').
10820
10821 Patch from Sven Wegener via bz#2896
10822
10823 OpenBSD-Commit-ID: 527ff501cf98bf65fb4b29ed0cb847dda10f4d37
10824
10825commit 0cbed248ed81584129b67c348dbb801660f25a6a
10826Author: djm@openbsd.org <djm@openbsd.org>
10827Date: Thu Sep 20 23:40:16 2018 +0000
10828
10829 upstream: actually make CASignatureAlgorithms available as a config
10830
10831 option
10832
10833 OpenBSD-Commit-ID: 93fa7ff58314ed7b1ab7744090a6a91232e6ae52
10834
10835commit 62528870c0ec48cd86a37dd7320fb85886c3e6ee
10836Author: dtucker@openbsd.org <dtucker@openbsd.org>
10837Date: Thu Sep 20 08:07:03 2018 +0000
10838
10839 upstream: Import updated moduli.
10840
10841 OpenBSD-Commit-ID: 04431e8e7872f49a2129bf080a6b73c19d576d40
10842
10843commit e6933a2ffa0659d57f3c7b7c457b2c62b2a84613
10844Author: jmc@openbsd.org <jmc@openbsd.org>
10845Date: Thu Sep 20 06:58:48 2018 +0000
10846
10847 upstream: reorder CASignatureAlgorithms, and add them to the
10848
10849 various -o lists; ok djm
10850
10851 OpenBSD-Commit-ID: ecb88baecc3c54988b4d1654446ea033da359288
10852
10853commit aa083aa9624ea7b764d5a81c4c676719a1a3e42b
10854Author: djm@openbsd.org <djm@openbsd.org>
10855Date: Thu Sep 20 03:31:49 2018 +0000
10856
10857 upstream: fix "ssh -Q sig" to show correct signature algorithm list
10858
10859 (it was erroneously showing certificate algorithms); prompted by markus@
10860
10861 OpenBSD-Commit-ID: 1cdee002f2f0c21456979deeb887fc889afb154d
10862
10863commit ecac7e1f7add6b28874959a11f2238d149dc2c07
10864Author: djm@openbsd.org <djm@openbsd.org>
10865Date: Thu Sep 20 03:30:44 2018 +0000
10866
10867 upstream: add CASignatureAlgorithms option for the client, allowing
10868
10869 it to specify which signature algorithms may be used by CAs when signing
10870 certificates. Useful if you want to ban RSA/SHA1; ok markus@
10871
10872 OpenBSD-Commit-ID: 9159e5e9f67504829bf53ff222057307a6e3230f
10873
10874commit 86e5737c39153af134158f24d0cab5827cbd5852
10875Author: djm@openbsd.org <djm@openbsd.org>
10876Date: Thu Sep 20 03:28:06 2018 +0000
10877
10878 upstream: Add sshd_config CASignatureAlgorithms option to allow
10879
10880 control over which signature algorithms a CA may use when signing
10881 certificates. In particular, this allows a sshd to ban certificates signed
10882 with RSA/SHA1.
10883
10884 ok markus@
10885
10886 OpenBSD-Commit-ID: b05c86ef8b52b913ed48d54a9b9c1a7714d96bac
10887
10888commit f80e68ea7d62e2dfafc12f1a60ab544ae4033a0f
10889Author: djm@openbsd.org <djm@openbsd.org>
10890Date: Wed Sep 19 02:03:02 2018 +0000
10891
10892 upstream: Make "ssh-add -q" do what it says on the tin: silence
10893
10894 output from successful operations.
10895
10896 Based on patch from Thijs van Dijk; ok dtucker@ deraadt@
10897
10898 OpenBSD-Commit-ID: c4f754ecc055c10af166116ce7515104aa8522e1
10899
10900commit 5e532320e9e51de720d5f3cc2596e95d29f6e98f
10901Author: millert@openbsd.org <millert@openbsd.org>
10902Date: Mon Sep 17 15:40:14 2018 +0000
10903
10904 upstream: When choosing a prime from the moduli file, avoid
10905
10906 re-using the linenum variable for something that is not a line number to
10907 avoid the confusion that resulted in the bug in rev. 1.64. This also lets us
10908 pass the actual linenum to parse_prime() so the error messages include the
10909 correct line number. OK markus@ some time ago.
10910
10911 OpenBSD-Commit-ID: 4d8e5d3e924d6e8eb70053e3defa23c151a00084
10912
10913commit cce8cbe0ed7d1ba3a575310e0b63c193326ae616
10914Author: Darren Tucker <dtucker@dtucker.net>
10915Date: Sat Sep 15 19:44:06 2018 +1000
10916
10917 Fix openssl-1.1 fallout for --without-openssl.
10918
10919 ok djm@
10920
10921commit 149519b9f201dac755f3cba4789f4d76fecf0ee1
10922Author: Damien Miller <djm@mindrot.org>
10923Date: Sat Sep 15 19:37:48 2018 +1000
10924
10925 add futex(2) syscall to seccomp sandbox
10926
10927 Apparently needed for some glibc/openssl combinations.
10928
10929 Patch from Arkadiusz Miśkiewicz
10930
10931commit 4488ae1a6940af704c4dbf70f55bf2f756a16536
10932Author: Damien Miller <djm@mindrot.org>
10933Date: Sat Sep 15 19:36:55 2018 +1000
10934
10935 really add source for authopt_fuzz this time
10936
10937commit 9201784b4a257c8345fbd740bcbdd70054885707
10938Author: Damien Miller <djm@mindrot.org>
10939Date: Sat Sep 15 19:35:40 2018 +1000
10940
10941 remove accidentally checked-in authopt_fuzz binary
10942
10943commit beb9e522dc7717df08179f9e59f36b361bfa14ab
10944Author: djm@openbsd.org <djm@openbsd.org>
10945Date: Fri Sep 14 05:26:27 2018 +0000
10946
10947 upstream: second try, deals properly with missing and private-only
10948
10949 Use consistent format in debug log for keys readied, offered and
10950 received during public key authentication.
10951
10952 This makes it a little easier to see what is going on, as each message
10953 now contains (where available) the key filename, its type and fingerprint,
10954 and whether the key is hosted in an agent or a token.
10955
10956 OpenBSD-Commit-ID: f1c6a8e9cfc4e108c359db77f24f9a40e1e25ea7
10957
10958commit 6bc5a24ac867bfdc3ed615589d69ac640f51674b
10959Author: Damien Miller <djm@mindrot.org>
10960Date: Fri Sep 14 15:16:34 2018 +1000
10961
10962 fuzzer harness for authorized_keys option parsing
10963
10964commit 6c8b82fc6929b6a9a3f645151b6ec26c5507d9ef
10965Author: djm@openbsd.org <djm@openbsd.org>
10966Date: Fri Sep 14 04:44:04 2018 +0000
10967
10968 upstream: revert following; deals badly with agent keys
10969
10970 revision 1.285
10971 date: 2018/09/14 04:17:12; author: djm; state: Exp; lines: +47 -26; commitid: lflGFcNb2X2HebaK;
10972 Use consistent format in debug log for keys readied, offered and
10973 received during public key authentication.
10974
10975 This makes it a little easier to see what is going on, as each message
10976 now contains the key filename, its type and fingerprint, and whether
10977 the key is hosted in an agent or a token.
10978
10979 OpenBSD-Commit-ID: e496bd004e452d4b051f33ed9ae6a54ab918f56d
10980
10981commit 6da046f9c3374ce7e269ded15d8ff8bc45017301
10982Author: djm@openbsd.org <djm@openbsd.org>
10983Date: Fri Sep 14 04:17:44 2018 +0000
10984
10985 upstream: garbage-collect moribund ssh_new_private() API.
10986
10987 OpenBSD-Commit-ID: 7c05bf13b094093dfa01848a9306c82eb6e95f6c
10988
10989commit 1f24ac5fc05252ceb1c1d0e8cab6a283b883c780
10990Author: djm@openbsd.org <djm@openbsd.org>
10991Date: Fri Sep 14 04:17:12 2018 +0000
10992
10993 upstream: Use consistent format in debug log for keys readied,
10994
10995 offered and received during public key authentication.
10996
10997 This makes it a little easier to see what is going on, as each message
10998 now contains the key filename, its type and fingerprint, and whether
10999 the key is hosted in an agent or a token.
11000
11001 OpenBSD-Commit-ID: 2a01d59285a8a7e01185bb0a43316084b4f06a1f
11002
11003commit 488c9325bb7233e975dbfbf89fa055edc3d3eddc
11004Author: millert@openbsd.org <millert@openbsd.org>
11005Date: Thu Sep 13 15:23:32 2018 +0000
11006
11007 upstream: Fix warnings caused by user_from_uid() and group_from_gid()
11008
11009 now returning const char *.
11010
11011 OpenBSD-Commit-ID: b5fe571ea77cfa7b9035062829ab05eb87d7cc6f
11012
11013commit 0aa1f230846ebce698e52051a107f3127024a05a
11014Author: Damien Miller <djm@mindrot.org>
11015Date: Fri Sep 14 10:31:47 2018 +1000
11016
11017 allow SIGUSR1 as synonym for SIGINFO
11018
11019 Lets users on those unfortunate operating systems that lack SIGINFO
11020 still be able to obtain progress information from unit tests :)
11021
11022commit d64e78526596f098096113fcf148216798c327ff
11023Author: Damien Miller <djm@mindrot.org>
11024Date: Thu Sep 13 19:05:48 2018 +1000
11025
11026 add compat header
11027
11028commit a3fd8074e2e2f06602e25618721f9556c731312c
11029Author: djm@openbsd.org <djm@openbsd.org>
11030Date: Thu Sep 13 09:03:20 2018 +0000
11031
11032 upstream: missed a bit of openssl-1.0.x API in this unittest
11033
11034 OpenBSD-Regress-ID: a73a54d7f7381856a3f3a2d25947bee7a9a5dbc9
11035
11036commit 86e0a9f3d249d5580390daf58e015e68b01cef10
11037Author: djm@openbsd.org <djm@openbsd.org>
11038Date: Thu Sep 13 05:06:51 2018 +0000
11039
11040 upstream: use only openssl-1.1.x API here too
11041
11042 OpenBSD-Regress-ID: ae877064597c349954b1b443769723563cecbc8f
11043
11044commit 48f54b9d12c1c79fba333bc86d455d8f4cda8cfc
11045Author: Damien Miller <djm@mindrot.org>
11046Date: Thu Sep 13 12:13:50 2018 +1000
11047
11048 adapt -portable to OpenSSL 1.1x API
11049
11050 Polyfill missing API with replacement functions extracted from LibreSSL
11051
11052commit 86112951d63d48839f035b5795be62635a463f99
11053Author: Damien Miller <djm@mindrot.org>
11054Date: Thu Sep 13 12:12:42 2018 +1000
11055
11056 forgot to stage these test files in commit d70d061
11057
11058commit 482d23bcacdd3664f21cc82a5135f66fc598275f
11059Author: djm@openbsd.org <djm@openbsd.org>
11060Date: Thu Sep 13 02:08:33 2018 +0000
11061
11062 upstream: hold our collective noses and use the openssl-1.1.x API in
11063
11064 OpenSSH; feedback and ok tb@ jsing@ markus@
11065
11066 OpenBSD-Commit-ID: cacbcac87ce5da0d3ca7ef1b38a6f7fb349e4417
11067
11068commit d70d061828730a56636ab6f1f24fe4a8ccefcfc1
11069Author: djm@openbsd.org <djm@openbsd.org>
11070Date: Wed Sep 12 01:36:45 2018 +0000
11071
11072 upstream: Include certs with multiple RSA signature variants in
11073
11074 test data Ensure that cert->signature_key is populated correctly
11075
11076 OpenBSD-Regress-ID: 56e68f70fe46cb3a193ca207385bdb301fd6603a
11077
11078commit f803b2682992cfededd40c91818b653b5d923ef5
11079Author: djm@openbsd.org <djm@openbsd.org>
11080Date: Wed Sep 12 01:23:48 2018 +0000
11081
11082 upstream: test revocation by explicit hash and by fingerprint
11083
11084 OpenBSD-Regress-ID: 079c18a9ab9663f4af419327c759fc1e2bc78fd8
11085
11086commit 2de78bc7da70e1338b32feeefcc6045cf49efcd4
11087Author: djm@openbsd.org <djm@openbsd.org>
11088Date: Wed Sep 12 01:22:43 2018 +0000
11089
11090 upstream: s/sshkey_demote/sshkey_from_private/g
11091
11092 OpenBSD-Regress-ID: 782bde7407d94a87aa8d1db7c23750e09d4443c4
11093
11094commit 41c115a5ea1cb79a6a3182773c58a23f760e8076
11095Author: Damien Miller <djm@mindrot.org>
11096Date: Wed Sep 12 16:50:01 2018 +1000
11097
11098 delete the correct thing; kexfuzz binary
11099
11100commit f0fcd7e65087db8c2496f13ed39d772f8e38b088
11101Author: djm@openbsd.org <djm@openbsd.org>
11102Date: Wed Sep 12 06:18:59 2018 +0000
11103
11104 upstream: fix edit mistake; spotted by jmc@
11105
11106 OpenBSD-Commit-ID: dd724e1c52c9d6084f4cd260ec7e1b2b138261c6
11107
11108commit 4cc259bac699f4d2a5c52b92230f9e488c88a223
11109Author: djm@openbsd.org <djm@openbsd.org>
11110Date: Wed Sep 12 01:34:02 2018 +0000
11111
11112 upstream: add SSH_ALLOWED_CA_SIGALGS - the default list of
11113
11114 signature algorithms that are allowed for CA signatures. Notably excludes
11115 ssh-dsa.
11116
11117 ok markus@
11118
11119 OpenBSD-Commit-ID: 1628e4181dc8ab71909378eafe5d06159a22deb4
11120
11121commit ba9e788315b1f6a350f910cb2a9e95b2ce584e89
11122Author: djm@openbsd.org <djm@openbsd.org>
11123Date: Wed Sep 12 01:32:54 2018 +0000
11124
11125 upstream: add sshkey_check_cert_sigtype() that checks a
11126
11127 cert->signature_type against a supplied whitelist; ok markus
11128
11129 OpenBSD-Commit-ID: caadb8073292ed7a9535e5adc067d11d356d9302
11130
11131commit a70fd4ad7bd9f2ed223ff635a3d41e483057f23b
11132Author: djm@openbsd.org <djm@openbsd.org>
11133Date: Wed Sep 12 01:31:30 2018 +0000
11134
11135 upstream: add cert->signature_type field and keep it in sync with
11136
11137 certificate signature wrt loading and certification operations; ok markus@
11138
11139 OpenBSD-Commit-ID: e8b8b9f76b66707a0cd926109c4383db8f664df3
11140
11141commit 357128ac48630a9970e3af0e6ff820300a28da47
11142Author: djm@openbsd.org <djm@openbsd.org>
11143Date: Wed Sep 12 01:30:10 2018 +0000
11144
11145 upstream: Add "ssh -Q sig" to allow listing supported signature
11146
11147 algorithms ok markus@
11148
11149 OpenBSD-Commit-ID: 7a8c6eb6c249dc37823ba5081fce64876d10fe2b
11150
11151commit 9405c6214f667be604a820c6823b27d0ea77937d
11152Author: djm@openbsd.org <djm@openbsd.org>
11153Date: Wed Sep 12 01:21:34 2018 +0000
11154
11155 upstream: allow key revocation by SHA256 hash and allow ssh-keygen
11156
11157 to create KRLs using SHA256/base64 key fingerprints; ok markus@
11158
11159 OpenBSD-Commit-ID: a0590fd34e7f1141f2873ab3acc57442560e6a94
11160
11161commit 50e2687ee0941c0ea216d6ffea370ffd2c1f14b9
11162Author: djm@openbsd.org <djm@openbsd.org>
11163Date: Wed Sep 12 01:19:12 2018 +0000
11164
11165 upstream: log certificate fingerprint in authentication
11166
11167 success/failure message (previously we logged only key ID and CA key
11168 fingerprint).
11169
11170 ok markus@
11171
11172 OpenBSD-Commit-ID: a8ef2d172b7f1ddbcce26d6434b2de6d94f6c05d
11173
11174commit de37ca909487d23e5844aca289b3f5e75d3f1e1f
11175Author: dtucker@openbsd.org <dtucker@openbsd.org>
11176Date: Fri Sep 7 04:26:56 2018 +0000
11177
11178 upstream: Add FALLTHROUGH comments where appropriate. Patch from
11179
11180 jjelen at redhat via bz#2687.
11181
11182 OpenBSD-Commit-ID: c48eb457be697a19d6d2950c6d0879f3ccc851d3
11183
11184commit 247766cd3111d5d8c6ea39833a3257ca8fb820f2
11185Author: djm@openbsd.org <djm@openbsd.org>
11186Date: Fri Sep 7 01:42:54 2018 +0000
11187
11188 upstream: ssh -MM requires confirmation for all operations that
11189
11190 change the multiplexing state, not just new sessions.
11191
11192 mention that confirmation is checked via ssh-askpass
11193
11194 OpenBSD-Commit-ID: 0f1b45551ebb9cc5c9a4fe54ad3b23ce90f1f5c2
11195
11196commit db8bb80e3ac1bcb3e1305d846cd98c6b869bf03f
11197Author: mestre@openbsd.org <mestre@openbsd.org>
11198Date: Tue Aug 28 12:25:53 2018 +0000
11199
11200 upstream: fix misplaced parenthesis inside if-clause. it's harmless
11201
11202 and the only issue is showing an unknown error (since it's not defined)
11203 during fatal(), if it ever an error occurs inside that condition.
11204
11205 OK deraadt@ markus@ djm@
11206
11207 OpenBSD-Commit-ID: acb0a8e6936bfbe590504752d01d1d251a7101d8
11208
11209commit 086cc614f550b7d4f100c95e472a6b6b823938ab
11210Author: mestre@openbsd.org <mestre@openbsd.org>
11211Date: Tue Aug 28 12:17:45 2018 +0000
11212
11213 upstream: fix build with DEBUG_PK enabled
11214
11215 OK dtucker@
11216
11217 OpenBSD-Commit-ID: ec1568cf27726e9638a0415481c20c406e7b441c
11218
11219commit 2678833013e97f8b18f09779b7f70bcbf5eb2ab2
11220Author: Darren Tucker <dtucker@dtucker.net>
11221Date: Fri Sep 7 14:41:53 2018 +1000
11222
11223 Handle ngroups>_SC_NGROUPS_MAX.
11224
11225 Based on github pull request #99 from Darren Maffat at Oracle: Solaris'
11226 getgrouplist considers _SC_NGROUPS_MAX more of a guideline and can return
11227 a larger number of groups. In this case, retry getgrouplist with a
11228 larger array and defer allocating groups_byname. ok djm@
11229
11230commit 039bf2a81797b8f3af6058d34005a4896a363221
11231Author: Darren Tucker <dtucker@dtucker.net>
11232Date: Fri Sep 7 14:06:57 2018 +1000
11233
11234 Initial len for the fmt=NULL case.
11235
11236 Patch from jjelen at redhat via bz#2687. (OpenSSH never calls
11237 setproctitle with a null format so len is always initialized).
11238
11239commit ea9c06e11d2e8fb2f4d5e02f8a41e23d2bd31ca9
11240Author: Darren Tucker <dtucker@dtucker.net>
11241Date: Fri Sep 7 14:01:39 2018 +1000
11242
11243 Include stdlib.h.
11244
11245 Patch from jjelen at redhat via bz#2687.
11246
11247commit 9617816dbe73ec4d65075f4d897443f63a97c87f
11248Author: Damien Miller <djm@mindrot.org>
11249Date: Mon Aug 27 13:08:01 2018 +1000
11250
11251 document some more regress control env variables
11252
11253 Specifically SKIP_UNIT, USE_VALGRING and LTESTS. Sort the list of
11254 environment variables.
11255
11256 Based on patch from Jakub Jelen
11257
11258commit 71508e06fab14bc415a79a08f5535ad7bffa93d9
11259Author: Damien Miller <djm@mindrot.org>
11260Date: Thu Aug 23 15:41:42 2018 +1000
11261
11262 shorten temporary SSH_REGRESS_TMP path
11263
11264 Previous path was exceeding max socket length on at least one platform (OSX)
11265
11266commit 26739cf5bdc9030a583b41ae5261dedd862060f0
11267Author: Damien Miller <djm@mindrot.org>
11268Date: Thu Aug 23 13:06:02 2018 +1000
11269
11270 rebuild dependencies
11271
11272commit ff729025c7463cf5d0a8d1ca1823306e48c6d4cf
11273Author: Damien Miller <djm@mindrot.org>
11274Date: Thu Aug 23 13:03:32 2018 +1000
11275
11276 fix path in distclean target
11277
11278 Patch from Jakub Jelen
11279
11280commit 7fef173c28f7462dcd8ee017fdf12b5073f54c02
11281Author: djm@openbsd.org <djm@openbsd.org>
11282Date: Thu Aug 23 03:01:08 2018 +0000
11283
11284 upstream: memleak introduced in r1.83; from Colin Watson
11285
11286 OpenBSD-Commit-ID: 5c019104c280cbd549a264a7217b67665e5732dc
11287
11288commit b8ae02a2896778b8984c7f51566c7f0f56fa8b56
11289Author: schwarze@openbsd.org <schwarze@openbsd.org>
11290Date: Tue Aug 21 13:56:27 2018 +0000
11291
11292 upstream: AIX reports the CODESET as "ISO8859-1" in the POSIX locale.
11293
11294 Treating that as a safe encoding is OK because even when other systems return
11295 that string for real ISO8859-1, it is still safe in the sense that it is
11296 ASCII-compatible and stateless.
11297
11298 Issue reported by Val dot Baranov at duke dot edu. Additional
11299 information provided by Michael dot Felt at felt dot demon dot nl.
11300 Tested by Michael Felt on AIX 6.1 and by Val Baranov on AIX 7.1.
11301 Tweak and OK djm@.
11302
11303 OpenBSD-Commit-ID: 36f1210e0b229817d10eb490d6038f507b8256a7
11304
11305commit bc44ee088ad269d232e514f037c87ada4c2fd3f0
11306Author: Tim Rice <tim@multitalents.net>
11307Date: Tue Aug 21 08:57:24 2018 -0700
11308
11309 modified: openbsd-compat/port-uw.c
11310 remove obsolete and un-needed include
11311
11312commit 829fc28a9c54e3f812ee7248c7a3e31eeb4f0b3a
11313Author: Damien Miller <djm@mindrot.org>
11314Date: Mon Aug 20 15:57:29 2018 +1000
11315
11316 Missing unistd.h for regress/mkdtemp.c
11317
11318commit c8313e492355a368a91799131520d92743d8d16c
11319Author: Damien Miller <djm@mindrot.org>
11320Date: Fri Aug 17 05:45:20 2018 +1000
11321
11322 update version numbers in anticipation of release
11323
11324commit 477b49a34b89f506f4794b35e3c70b3e2e83cd38
11325Author: Corinna Vinschen <vinschen@redhat.com>
11326Date: Mon Aug 13 17:08:51 2018 +0200
11327
11328 configure: work around GCC shortcoming on Cygwin
11329
11330 Cygwin's latest 7.x GCC allows to specify -mfunction-return=thunk
11331 as well as -mindirect-branch=thunk on the command line, albeit
11332 producing invalid code, leading to an error at link stage.
11333
11334 The check in configure.ac only checks if the option is present,
11335 but not if it produces valid code.
11336
11337 This patch fixes it by special-casing Cygwin. Another solution
11338 may be to change these to linker checks.
11339
11340 Signed-off-by: Corinna Vinschen <vinschen@redhat.com>
11341
11342commit b0917945efa374be7648d67dbbaaff323ab39edc
11343Author: Corinna Vinschen <vinschen@redhat.com>
11344Date: Mon Aug 13 17:05:05 2018 +0200
11345
11346 cygwin: add missing stdarg.h include
11347
11348 Further header file standarization in Cygwin uncovered a lazy
11349 indirect include in bsd-cygwin_util.c
11350
11351 Signed-off-by: Corinna Vinschen <vinschen@redhat.com>
11352
11353commit c3903c38b0fd168ab3d925c2b129d1a599593426
11354Author: djm@openbsd.org <djm@openbsd.org>
11355Date: Mon Aug 13 02:41:05 2018 +0000
11356
11357 upstream: revert compat.[ch] section of the following change. It
11358
11359 causes double-free under some circumstances.
11360
11361 --
11362
11363 date: 2018/07/31 03:07:24; author: djm; state: Exp; lines: +33 -18; commitid: f7g4UI8eeOXReTPh;
11364 fix some memory leaks spotted by Coverity via Jakub Jelen in bz#2366
11365 feedback and ok dtucker@
11366
11367 OpenBSD-Commit-ID: 1e77547f60fdb5e2ffe23e2e4733c54d8d2d1137
11368
11369commit 1b9dd4aa15208100fbc3650f33ea052255578282
11370Author: djm@openbsd.org <djm@openbsd.org>
11371Date: Sun Aug 12 20:19:13 2018 +0000
11372
11373 upstream: better diagnosics on alg list assembly errors; ok
11374
11375 deraadt@ markus@
11376
11377 OpenBSD-Commit-ID: 5a557e74b839daf13cc105924d2af06a1560faee
11378
11379commit e36a5f61b0f5bebf6d49c215d228cd99dfe86e28
11380Author: Damien Miller <djm@mindrot.org>
11381Date: Sat Aug 11 18:08:45 2018 -0700
11382
11383 Some AIX fixes; report from Michael Felt
11384
11385commit 2f4766ceefe6657c5ad5fe92d13c411872acae0e
11386Author: dtucker@openbsd.org <dtucker@openbsd.org>
11387Date: Fri Aug 10 01:35:49 2018 +0000
11388
11389 upstream: The script that cooks up PuTTY format host keys does not
11390
11391 understand the new key format so convert back to old format to create the
11392 PuTTY key and remove it once done.
11393
11394 OpenBSD-Regress-ID: 2a449a18846c3a144bc645135b551ba6177e38d3
11395
11396commit e1b26ce504662a5d5b991091228984ccfd25f280
11397Author: djm@openbsd.org <djm@openbsd.org>
11398Date: Fri Aug 10 00:44:01 2018 +0000
11399
11400 upstream: improve
11401
11402 OpenBSD-Commit-ID: 40d839db0977b4e7ac8b647b16d5411d4faf2f60
11403
11404commit 7c712966a3139622f7fb55045368d05de4e6782c
11405Author: djm@openbsd.org <djm@openbsd.org>
11406Date: Fri Aug 10 00:42:29 2018 +0000
11407
11408 upstream: Describe pubkey format, prompted by bz#2853
11409
11410 While I'm here, describe and link to the remaining local PROTOCOL.*
11411 docs that weren't already mentioned (PROTOCOL.key, PROTOCOL.krl and
11412 PROTOCOL.mux)
11413
11414 OpenBSD-Commit-ID: 2a900f9b994ba4d53e7aeb467d44d75829fd1231
11415
11416commit ef100a2c5a8ed83afac0b8f36520815803da227a
11417Author: djm@openbsd.org <djm@openbsd.org>
11418Date: Fri Aug 10 00:27:15 2018 +0000
11419
11420 upstream: fix numbering
11421
11422 OpenBSD-Commit-ID: bc7a1764dff23fa4c5ff0e3379c9c4d5b63c9596
11423
11424commit ed7bd5d93fe14c7bd90febd29b858ea985d14d45
11425Author: djm@openbsd.org <djm@openbsd.org>
11426Date: Wed Aug 8 01:16:01 2018 +0000
11427
11428 upstream: Use new private key format by default. This format is
11429
11430 suported by OpenSSH >= 6.5 (released January 2014), so it should be supported
11431 by most OpenSSH versions in active use.
11432
11433 It is possible to convert new-format private keys to the older
11434 format using "ssh-keygen -f /path/key -pm PEM".
11435
11436 ok deraadt dtucker
11437
11438 OpenBSD-Commit-ID: e3bd4f2509a2103bfa2f710733426af3ad6d8ab8
11439
11440commit 967226a1bdde59ea137e8f0df871854ff7b91366
11441Author: djm@openbsd.org <djm@openbsd.org>
11442Date: Sat Aug 4 00:55:06 2018 +0000
11443
11444 upstream: invalidate dh->priv_key after freeing it in error path;
11445
11446 avoids unlikely double-free later. Reported by Viktor Dukhovni via
11447 https://github.com/openssh/openssh-portable/pull/96 feedback jsing@ tb@
11448
11449 OpenBSD-Commit-ID: e317eb17c3e05500ae851f279ef6486f0457c805
11450
11451commit 74287f5df9966a0648b4a68417451dd18f079ab8
11452Author: djm@openbsd.org <djm@openbsd.org>
11453Date: Tue Jul 31 03:10:27 2018 +0000
11454
11455 upstream: delay bailout for invalid authentic
11456
11457 =?UTF-8?q?ating=20user=20until=20after=20the=20packet=20containing=20the?=
11458 =?UTF-8?q?=20request=20has=20been=20fully=20parsed.=20Reported=20by=20Dar?=
11459 =?UTF-8?q?iusz=20Tytko=20and=20Micha=C5=82=20Sajdak;=20ok=20deraadt?=
11460 MIME-Version: 1.0
11461 Content-Type: text/plain; charset=UTF-8
11462 Content-Transfer-Encoding: 8bit
11463
11464 OpenBSD-Commit-ID: b4891882fbe413f230fe8ac8a37349b03bd0b70d
11465
11466commit 1a66079c0669813306cc69e5776a4acd9fb49015
11467Author: djm@openbsd.org <djm@openbsd.org>
11468Date: Tue Jul 31 03:07:24 2018 +0000
11469
11470 upstream: fix some memory leaks spotted by Coverity via Jakub Jelen
11471
11472 in bz#2366 feedback and ok dtucker@
11473
11474 OpenBSD-Commit-ID: 8402bbae67d578bedbadb0ce68ff7c5a136ef563
11475
11476commit 87f08be054b7eeadbb9cdeb3fb4872be79ccf218
11477Author: Damien Miller <djm@mindrot.org>
11478Date: Fri Jul 20 13:18:28 2018 +1000
11479
11480 Remove support for S/Key
11481
11482 Most people will 1) be using modern multi-factor authentication methods
11483 like TOTP/OATH etc and 2) be getting support for multi-factor
11484 authentication via PAM or BSD Auth.
11485
11486commit 5d14019ba2ff54acbfd20a6b9b96bb860a8c7c31
11487Author: markus@openbsd.org <markus@openbsd.org>
11488Date: Fri Jul 27 12:03:17 2018 +0000
11489
11490 upstream: avoid expensive channel_open_message() calls; ok djm@
11491
11492 OpenBSD-Commit-ID: aea3b5512ad681cd8710367d743e8a753d4425d9
11493
11494commit e655ee04a3cb7999dbf9641b25192353e2b69418
11495Author: dtucker@openbsd.org <dtucker@openbsd.org>
11496Date: Fri Jul 27 05:34:42 2018 +0000
11497
11498 upstream: Now that ssh can't be setuid, remove the
11499
11500 original_real_uid and original_effective_uid globals and replace with calls
11501 to plain getuid(). ok djm@
11502
11503 OpenBSD-Commit-ID: 92561c0cd418d34e6841e20ba09160583e27b68c
11504
11505commit 73ddb25bae4c33a0db361ac13f2e3a60d7c6c4a5
11506Author: dtucker@openbsd.org <dtucker@openbsd.org>
11507Date: Fri Jul 27 05:13:02 2018 +0000
11508
11509 upstream: Remove uid checks from low port binds. Now that ssh
11510
11511 cannot be setuid and sshd always has privsep on, we can remove the uid checks
11512 for low port binds and just let the system do the check. We leave a sanity
11513 check for the !privsep case so long as the code is stil there. with & ok
11514 djm@
11515
11516 OpenBSD-Commit-ID: 9535cfdbd1cd54486fdbedfaee44ce4367ec7ca0
11517
11518commit c12033e102760d043bc5c98e6c8180e4d331b0df
11519Author: dtucker@openbsd.org <dtucker@openbsd.org>
11520Date: Fri Jul 27 03:55:22 2018 +0000
11521
11522 upstream: ssh(1) no longer supports being setuid root. Remove reference
11523
11524 to crc32 which went with protocol 1. Pointed out by deraadt@.
11525
11526 OpenBSD-Commit-ID: f8763c25fd96ed91dd1abdab5667fd2e27e377b6
11527
11528commit 4492e2ec4e1956a277ef507f51d66e5c2aafaaf8
11529Author: Damien Miller <djm@mindrot.org>
11530Date: Fri Jul 27 14:15:28 2018 +1000
11531
11532 correct snprintf truncation check in closefrom()
11533
11534 Truncation cannot happen unless the system has set PATH_MAX to some
11535 nonsensically low value.
11536
11537 bz#2862, patch from Daniel Le
11538
11539commit 149cab325a8599a003364ed833f878449c15f259
11540Author: Darren Tucker <dtucker@dtucker.net>
11541Date: Fri Jul 27 13:46:06 2018 +1000
11542
11543 Include stdarg.h in mkdtemp for va_list.
11544
11545commit 6728f31bdfdc864d192773c32465b1860e23f556
11546Author: deraadt@openbsd.org <deraadt@openbsd.org>
11547Date: Wed Jul 25 17:12:35 2018 +0000
11548
11549 upstream: Don't redefine Makefile choices which come correct from
11550
11551 bsd.*.mk ok markus
11552
11553 OpenBSD-Commit-ID: 814b2f670df75759e1581ecef530980b2b3d7e0f
11554
11555commit 21fd477a855753c1a8e450963669e28e39c3b5d2
11556Author: deraadt@openbsd.org <deraadt@openbsd.org>
11557Date: Wed Jul 25 13:56:23 2018 +0000
11558
11559 upstream: fix indent; Clemens Goessnitzer
11560
11561 OpenBSD-Commit-ID: b5149a6d92b264d35f879d24608087b254857a83
11562
11563commit 8e433c2083db8664c41499ee146448ea7ebe7dbf
11564Author: beck@openbsd.org <beck@openbsd.org>
11565Date: Wed Jul 25 13:10:56 2018 +0000
11566
11567 upstream: Use the caller provided (copied) pwent struct in
11568
11569 load_public_identity_files instead of calling getpwuid() again and discarding
11570 the argument. This prevents a client crash where tilde_expand_filename calls
11571 getpwuid() again before the pwent pointer is used. Issue noticed and reported
11572 by Pierre-Olivier Martel <pom@apple.com> ok djm@ deraadt@
11573
11574 OpenBSD-Commit-ID: a067d74b5b098763736c94cc1368de8ea3f0b157
11575
11576commit e2127abb105ae72b6fda64fff150e6b24b3f1317
11577Author: jmc@openbsd.org <jmc@openbsd.org>
11578Date: Mon Jul 23 19:53:55 2018 +0000
11579
11580 upstream: oops, failed to notice that SEE ALSO got messed up;
11581
11582 OpenBSD-Commit-ID: 61c1306542cefdc6e59ac331751afe961557427d
11583
11584commit ddf1b797c2d26bbbc9d410aa4f484cbe94673587
11585Author: kn@openbsd.org <kn@openbsd.org>
11586Date: Mon Jul 23 19:02:49 2018 +0000
11587
11588 upstream: Point to glob in section 7 for the actual list of special
11589
11590 characters instead the C API in section 3.
11591
11592 OK millert jmc nicm, "the right idea" deraadt
11593
11594 OpenBSD-Commit-ID: a74fd215488c382809e4d041613aeba4a4b1ffc6
11595
11596commit 01c98d9661d0ed6156e8602b650f72eed9fc4d12
11597Author: dtucker@openbsd.org <dtucker@openbsd.org>
11598Date: Sun Jul 22 12:16:59 2018 +0000
11599
11600 upstream: Switch authorized_keys example from ssh-dss to ssh-rsa
11601
11602 since the former is no longer enabled by default. Pointed out by Daniel A.
11603 Maierhofer, ok jmc
11604
11605 OpenBSD-Commit-ID: 6a196cef53d7524e0c9b58cdbc1b5609debaf8c7
11606
11607commit 472269f8fe19343971c2d08f504ab5cbb8234b33
11608Author: djm@openbsd.org <djm@openbsd.org>
11609Date: Fri Jul 20 05:01:10 2018 +0000
11610
11611 upstream: slightly-clearer description for AuthenticationMethods - the
11612
11613 lists have comma-separated elements; bz#2663 from Hans Meier
11614
11615 OpenBSD-Commit-ID: 931c983d0fde4764d0942fb2c2b5017635993b5a
11616
11617commit c59aca8adbdf7f5597084ad360a19bedb3f80970
11618Author: Damien Miller <djm@mindrot.org>
11619Date: Fri Jul 20 14:53:42 2018 +1000
11620
11621 Create control sockets in clean temp directories
11622
11623 Adds a regress/mkdtemp tool and uses it to create empty temp
11624 directories for tests needing control sockets.
11625
11626 Patch from Colin Watson via bz#2660; ok dtucker
11627
11628commit 6ad8648e83e4f4ace37b742a05c2a6b6b872514e
11629Author: djm@openbsd.org <djm@openbsd.org>
11630Date: Fri Jul 20 03:46:34 2018 +0000
11631
11632 upstream: remove unused zlib.h
11633
11634 OpenBSD-Commit-ID: 8d274a9b467c7958df12668b49144056819f79f1
11635
11636commit 3ba6e6883527fe517b6e4a824876e2fe62af22fc
11637Author: dtucker@openbsd.org <dtucker@openbsd.org>
11638Date: Thu Jul 19 23:03:16 2018 +0000
11639
11640 upstream: Fix typo in comment. From Alexandru Iacob via github.
11641
11642 OpenBSD-Commit-ID: eff4ec07c6c8c5483533da43a4dda37d72ef7f1d
11643
11644commit c77bc73c91bc656e343a1961756e09dd1b170820
11645Author: Darren Tucker <dtucker@dtucker.net>
11646Date: Fri Jul 20 13:48:51 2018 +1000
11647
11648 Explicitly include openssl before zlib.
11649
11650 Some versions of OpenSSL have "free_func" in their headers, which zlib
11651 typedefs. Including openssl after zlib (eg via sshkey.h) results in
11652 "syntax error before `free_func'", which this fixes.
11653
11654commit 95d41e90eafcd1286a901e8e361e4a37b98aeb52
11655Author: dtucker@openbsd.org <dtucker@openbsd.org>
11656Date: Thu Jul 19 10:28:47 2018 +0000
11657
11658 upstream: Deprecate UsePrivilegedPort now that support for running
11659
11660 ssh(1) setuid has been removed, remove supporting code and clean up
11661 references to it in the man pages
11662
11663 We have not shipped ssh(1) the setuid bit since 2002. If ayone
11664 really needs to make connections from a low port number this can
11665 be implemented via a small setuid ProxyCommand.
11666
11667 ok markus@ jmc@ djm@
11668
11669 OpenBSD-Commit-ID: d03364610b7123ae4c6792f5274bd147b6de717e
11670
11671commit 258dc8bb07dfb35a46e52b0822a2c5b7027df60a
11672Author: dtucker@openbsd.org <dtucker@openbsd.org>
11673Date: Wed Jul 18 11:34:04 2018 +0000
11674
11675 upstream: Remove support for running ssh(1) setuid and fatal if
11676
11677 attempted. Do not link uidwap.c into ssh any more. Neuters
11678 UsePrivilegedPort, which will be marked as deprecated shortly. ok markus@
11679 djm@
11680
11681 OpenBSD-Commit-ID: c4ba5bf9c096f57a6ed15b713a1d7e9e2e373c42
11682
11683commit ac590760b251506b0a152551abbf8e8d6dc2f527
11684Author: dtucker@openbsd.org <dtucker@openbsd.org>
11685Date: Mon Jul 16 22:25:01 2018 +0000
11686
11687 upstream: Slot 0 in the hostbased key array was previously RSA1,
11688
11689 but that is now gone and the slot is unused so remove it. Remove two
11690 now-unused macros, and add an array bounds check to the two remaining ones
11691 (array is statically sized, so mostly a safety check on future changes). ok
11692 markus@
11693
11694 OpenBSD-Commit-ID: 2e4c0ca6cc1d8daeccead2aa56192a3f9d5e1e7a
11695
11696commit 26efc2f5df0e3bcf6a6bbdd0506fd682d60c2145
11697Author: dtucker@openbsd.org <dtucker@openbsd.org>
11698Date: Mon Jul 16 11:05:41 2018 +0000
11699
11700 upstream: Remove support for loading HostBasedAuthentication keys
11701
11702 directly in ssh(1) and always use ssh-keysign. This removes one of the few
11703 remaining reasons why ssh(1) might be setuid. ok markus@
11704
11705 OpenBSD-Commit-ID: 97f01e1448707129a20d75f86bad5d27c3cf0b7d
11706
11707commit 3eb7f1038d17af7aea3c2c62d1e30cd545607640
11708Author: djm@openbsd.org <djm@openbsd.org>
11709Date: Mon Jul 16 07:06:50 2018 +0000
11710
11711 upstream: keep options.identity_file_userprovided array in sync when we
11712
11713 load keys, fixing some spurious error messages; ok markus
11714
11715 OpenBSD-Commit-ID: c63e3d5200ee2cf9e35bda98de847302566c6a00
11716
11717commit 2f131e1b34502aa19f345e89cabf6fa3fc097f09
11718Author: djm@openbsd.org <djm@openbsd.org>
11719Date: Mon Jul 16 03:09:59 2018 +0000
11720
11721 upstream: memleak in unittest; found by valgrind
11722
11723 OpenBSD-Regress-ID: 168c23b0fb09fc3d0b438628990d3fd9260a8a5e
11724
11725commit de2997a4cf22ca0a524f0e5b451693c583e2fd89
11726Author: djm@openbsd.org <djm@openbsd.org>
11727Date: Mon Jul 16 03:09:13 2018 +0000
11728
11729 upstream: memleaks; found by valgrind
11730
11731 OpenBSD-Commit-ID: 6c3ba22be53e753c899545f771e8399fc93cd844
11732
11733commit 61cc0003eb37fa07603c969c12b7c795caa498f3
11734Author: Darren Tucker <dtucker@dtucker.net>
11735Date: Sat Jul 14 16:49:01 2018 +1000
11736
11737 Undef a few new macros in sys-queue.h.
11738
11739 Prevents macro redefinition warnings on OSX.
11740
11741commit 30a2c213877a54a44dfdffb6ca8db70be5b457e0
11742Author: Darren Tucker <dtucker@dtucker.net>
11743Date: Fri Jul 13 13:40:20 2018 +1000
11744
11745 Include unistd.h for geteuid declaration.
11746
11747commit 1dd32c23f2a85714dfafe2a9cc516971d187caa4
11748Author: Darren Tucker <dtucker@dtucker.net>
11749Date: Fri Jul 13 13:38:10 2018 +1000
11750
11751 Fallout from buffer conversion in AUDIT_EVENTS.
11752
11753 Supply missing "int r" and fix error path for sshbuf_new().
11754
11755commit 7449c178e943e5c4f6c8416a4e41d93b70c11c9e
11756Author: djm@openbsd.org <djm@openbsd.org>
11757Date: Fri Jul 13 02:13:50 2018 +0000
11758
11759 upstream: make this use ssh_proxy rather than starting/stopping a
11760
11761 daemon for each testcase
11762
11763 OpenBSD-Regress-ID: 608b7655ea65b1ba8fff5a13ce9caa60ef0c8166
11764
11765commit dbab02f9208d9baa134cec1d007054ec82b96ca9
11766Author: djm@openbsd.org <djm@openbsd.org>
11767Date: Fri Jul 13 02:13:19 2018 +0000
11768
11769 upstream: fix leaks in unit test; with this, all unit tests are
11770
11771 leak free (as far as valgrind can spot anyway)
11772
11773 OpenBSD-Regress-ID: b824d8b27998365379963440e5d18b95ca03aa17
11774
11775commit 2f6accff5085eb79b0dbe262d8b85ed017d1a51c
11776Author: Damien Miller <djm@mindrot.org>
11777Date: Fri Jul 13 11:39:25 2018 +1000
11778
11779 Enable leak checks for unit tests with valgrind
11780
11781 Leave the leak checking on unconditionally when running with valgrind.
11782 The unit tests are leak-free and I want them to stay that way.
11783
11784commit e46cfbd9db5e907b821bf4fd0184d4dab99815ee
11785Author: Damien Miller <djm@mindrot.org>
11786Date: Fri Jul 13 11:38:59 2018 +1000
11787
11788 increase timeout to match cfgmatch.sh
11789
11790 lets test pass under valgrind (on my workstation at least)
11791
11792commit 6aa1bf475cf3e7a2149acc5a1e80e904749f064c
11793Author: Damien Miller <djm@mindrot.org>
11794Date: Thu Jul 12 14:54:18 2018 +1000
11795
11796 rm regress/misc/kexfuzz/*.o in distclean target
11797
11798commit eef1447ddb559c03725a23d4aa6d03f40e8b0049
11799Author: Damien Miller <djm@mindrot.org>
11800Date: Thu Jul 12 14:49:26 2018 +1000
11801
11802 repair !WITH_OPENSSL build
11803
11804commit 4d3b2f36fd831941d1627ac587faae37b6d3570f
11805Author: Damien Miller <djm@mindrot.org>
11806Date: Thu Jul 12 14:49:14 2018 +1000
11807
11808 missing headers
11809
11810commit 3f420a692b293921216549c1099c2e46ff284eae
11811Author: Darren Tucker <dtucker@dtucker.net>
11812Date: Thu Jul 12 14:57:46 2018 +1000
11813
11814 Remove key.h from portable files too.
11815
11816 Commit 5467fbcb removed key.h so stop including it in portable files
11817 too. Fixes builds on lots of platforms.
11818
11819commit e2c4af311543093f16005c10044f7e06af0426f0
11820Author: djm@openbsd.org <djm@openbsd.org>
11821Date: Thu Jul 12 04:35:25 2018 +0000
11822
11823 upstream: remove prototype to long-gone function
11824
11825 OpenBSD-Commit-ID: 0414642ac7ce01d176b9f359091a66a8bbb640bd
11826
11827commit 394a842e60674bf8ee5130b9f15b01452a0b0285
11828Author: markus@openbsd.org <markus@openbsd.org>
11829Date: Wed Jul 11 18:55:11 2018 +0000
11830
11831 upstream: treat ssh_packet_write_wait() errors as fatal; ok djm@
11832
11833 OpenBSD-Commit-ID: f88ba43c9d54ed2d911218aa8d3f6285430629c3
11834
11835commit 5467fbcb09528ecdcb914f4f2452216c24796790
11836Author: markus@openbsd.org <markus@openbsd.org>
11837Date: Wed Jul 11 18:53:29 2018 +0000
11838
11839 upstream: remove legacy key emulation layer; ok djm@
11840
11841 OpenBSD-Commit-ID: 2b1f9619259e222bbd4fe9a8d3a0973eafb9dd8d
11842
11843commit 5dc4c59d5441a19c99e7945779f7ec9051126c25
11844Author: martijn@openbsd.org <martijn@openbsd.org>
11845Date: Wed Jul 11 08:19:35 2018 +0000
11846
11847 upstream: s/wuth/with/ in comment
11848
11849 OpenBSD-Commit-ID: 9de41468afd75f54a7f47809d2ad664aa577902c
11850
11851commit 1c688801e9dd7f9889fb2a29bc2b6fbfbc35a11f
11852Author: Darren Tucker <dtucker@dtucker.net>
11853Date: Wed Jul 11 12:12:38 2018 +1000
11854
11855 Include stdlib.h for declaration of free.
11856
11857 Fixes build with -Werror on at least Fedora and probably others.
11858
11859commit fccfa239def497615f92ed28acc57cfe63da3666
11860Author: Damien Miller <djm@mindrot.org>
11861Date: Wed Jul 11 10:19:56 2018 +1000
11862
11863 VALGRIND_CHECK_LEAKS logic was backwards :(
11864
11865commit 416287d45fcde0a8e66eee8b99aa73bd58607588
11866Author: Darren Tucker <dtucker@dtucker.net>
11867Date: Wed Jul 11 10:10:26 2018 +1000
11868
11869 Fix sshbuf_new error path in skey.
11870
11871commit 7aab109b8b90a353c1af780524f1ac0d3af47bab
11872Author: Darren Tucker <dtucker@dtucker.net>
11873Date: Wed Jul 11 10:06:18 2018 +1000
11874
11875 Supply missing third arg in skey.
11876
11877 During the change to the new buffer api the third arg to
11878 sshbuf_get_cstring was ommitted. Fixes build when configured with skey.
11879
11880commit 380320bb72cc353a901790ab04b6287fd335dc4a
11881Author: Darren Tucker <dtucker@dtucker.net>
11882Date: Wed Jul 11 10:03:34 2018 +1000
11883
11884 Supply some more missing "int r" in skey
11885
11886commit d20720d373d8563ee737d1a45dc5e0804d622dbc
11887Author: Damien Miller <djm@mindrot.org>
11888Date: Wed Jul 11 09:56:36 2018 +1000
11889
11890 disable valgrind memleak checking by default
11891
11892 Add VALGRIND_CHECK_LEAKS knob to turn it back on.
11893
11894commit 79c9d35018f3a5e30ae437880b669aa8636cd3cd
11895Author: Darren Tucker <dtucker@dtucker.net>
11896Date: Wed Jul 11 09:54:00 2018 +1000
11897
11898 Supply missing "int r" in skey code.
11899
11900commit 984bacfaacbbe31c35191b828fb5b5b2f0362c36
11901Author: sf@openbsd.org <sf@openbsd.org>
11902Date: Tue Jul 10 09:36:58 2018 +0000
11903
11904 upstream: re-remove some pre-auth compression bits
11905
11906 This time, make sure to not remove things that are necessary for
11907 pre-auth compression on the client. Add a comment that pre-auth
11908 compression is still supported in the client.
11909
11910 ok markus@
11911
11912 OpenBSD-Commit-ID: 282c6fec7201f18a5c333bbb68d9339734d2f784
11913
11914commit 120a1ec74e8d9d29f4eb9a27972ddd22351ddef9
11915Author: Damien Miller <djm@mindrot.org>
11916Date: Tue Jul 10 19:39:52 2018 +1000
11917
11918 Adapt portable to legacy buffer API removal
11919
11920commit 0f3958c1e6ffb8ea4ba27e2a97a00326fce23246
11921Author: djm@openbsd.org <djm@openbsd.org>
11922Date: Tue Jul 10 09:13:30 2018 +0000
11923
11924 upstream: kerberos/gssapi fixes for buffer removal
11925
11926 OpenBSD-Commit-ID: 1cdf56fec95801e4563c47f21696f04cd8b60c4c
11927
11928commit c74ae8e7c45f325f3387abd48fa7dfef07a08069
11929Author: djm@openbsd.org <djm@openbsd.org>
11930Date: Tue Jul 10 06:45:29 2018 +0000
11931
11932 upstream: buffer.[ch] and bufaux.c are no more
11933
11934 OpenBSD-Commit-ID: d1a1852284e554f39525eb4d4891b207cfb3d3a0
11935
11936commit a881e5a133d661eca923fb0633a03152ab2b70b2
11937Author: djm@openbsd.org <djm@openbsd.org>
11938Date: Tue Jul 10 06:43:52 2018 +0000
11939
11940 upstream: one mention of Buffer that almost got away :)
11941
11942 OpenBSD-Commit-ID: 30d7c27a90b4544ad5dfacf654595710cd499f02
11943
11944commit 49f47e656b60bcd1d1db98d88105295f4b4e600d
11945Author: markus@openbsd.org <markus@openbsd.org>
11946Date: Mon Jul 9 21:59:10 2018 +0000
11947
11948 upstream: replace cast with call to sshbuf_mutable_ptr(); ok djm@
11949
11950 OpenBSD-Commit-ID: 4dfe9d29fa93d9231645c89084f7217304f7ba29
11951
11952commit cb30cd47041edb03476be1c8ef7bc1f4b69d1555
11953Author: markus@openbsd.org <markus@openbsd.org>
11954Date: Mon Jul 9 21:56:06 2018 +0000
11955
11956 upstream: remove legacy buffer API emulation layer; ok djm@
11957
11958 OpenBSD-Commit-ID: 2dd5dc17cbc23195be4299fa93be2707a0e08ad9
11959
11960commit 235c7c4e3bf046982c2d8242f30aacffa01073d1
11961Author: markus@openbsd.org <markus@openbsd.org>
11962Date: Mon Jul 9 21:53:45 2018 +0000
11963
11964 upstream: sshd: switch monitor to sshbuf API; lots of help & ok
11965
11966 djm@
11967
11968 OpenBSD-Commit-ID: d89bd02d33974fd35ca0b8940d88572227b34a48
11969
11970commit b8d9214d969775e409e1408ecdf0d58fad99b344
11971Author: markus@openbsd.org <markus@openbsd.org>
11972Date: Mon Jul 9 21:37:55 2018 +0000
11973
11974 upstream: sshd: switch GSSAPI to sshbuf API; ok djm@
11975
11976 OpenBSD-Commit-ID: e48449ab4be3f006f7ba33c66241b7d652973e30
11977
11978commit c7d39ac8dc3587c5f05bdd5bcd098eb5c201c0c8
11979Author: markus@openbsd.org <markus@openbsd.org>
11980Date: Mon Jul 9 21:35:50 2018 +0000
11981
11982 upstream: sshd: switch authentication to sshbuf API; ok djm@
11983
11984 OpenBSD-Commit-ID: 880aa06bce4b140781e836bb56bec34873290641
11985
11986commit c3cb7790e9efb14ba74b2d9f543ad593b3d55b31
11987Author: markus@openbsd.org <markus@openbsd.org>
11988Date: Mon Jul 9 21:29:36 2018 +0000
11989
11990 upstream: sshd: switch config to sshbuf API; ok djm@
11991
11992 OpenBSD-Commit-ID: 72b02017bac7feac48c9dceff8355056bea300bd
11993
11994commit 2808d18ca47ad3d251836c555f0e22aaca03d15c
11995Author: markus@openbsd.org <markus@openbsd.org>
11996Date: Mon Jul 9 21:26:02 2018 +0000
11997
11998 upstream: sshd: switch loginmsg to sshbuf API; ok djm@
11999
12000 OpenBSD-Commit-ID: f3cb4e54bff15c593602d95cc43e32ee1a4bac42
12001
12002commit 89dd615b8b531979be63f05f9d5624367c9b28e6
12003Author: markus@openbsd.org <markus@openbsd.org>
12004Date: Mon Jul 9 21:20:26 2018 +0000
12005
12006 upstream: ttymodes: switch to sshbuf API; ok djm@
12007
12008 OpenBSD-Commit-ID: 5df340c5965e822c9da21e19579d08dea3cbe429
12009
12010commit f4608a7065480516ab46214f554e5f853fb7870f
12011Author: markus@openbsd.org <markus@openbsd.org>
12012Date: Mon Jul 9 21:18:10 2018 +0000
12013
12014 upstream: client: switch mux to sshbuf API; with & ok djm@
12015
12016 OpenBSD-Commit-ID: 5948fb98d704f9c4e075b92edda64e0290b5feb2
12017
12018commit cecee2d607099a7bba0a84803e2325d15be4277b
12019Author: markus@openbsd.org <markus@openbsd.org>
12020Date: Mon Jul 9 21:03:30 2018 +0000
12021
12022 upstream: client: switch to sshbuf API; ok djm@
12023
12024 OpenBSD-Commit-ID: 60cb0356114acc7625ab85105f6f6a7cd44a8d05
12025
12026commit ff55f4ad898137d4703e7a2bcc81167dfe8e9324
12027Author: markus@openbsd.org <markus@openbsd.org>
12028Date: Mon Jul 9 20:39:28 2018 +0000
12029
12030 upstream: pkcs11: switch to sshbuf API; ok djm@
12031
12032 OpenBSD-Commit-ID: 98cc4e800f1617c51caf59a6cb3006f14492db79
12033
12034commit 168b46f405d6736960ba7930389eecb9b6710b7e
12035Author: sf@openbsd.org <sf@openbsd.org>
12036Date: Mon Jul 9 13:37:10 2018 +0000
12037
12038 upstream: Revert previous two commits
12039
12040 It turns out we still support pre-auth compression on the client.
12041 Therefore revert the previous two commits:
12042
12043 date: 2018/07/06 09:06:14; author: sf; commitid: yZVYKIRtUZWD9CmE;
12044 Rename COMP_DELAYED to COMP_ZLIB
12045
12046 Only delayed compression is supported nowadays.
12047
12048 ok markus@
12049
12050 date: 2018/07/06 09:05:01; author: sf; commitid: rEGuT5UgI9f6kddP;
12051 Remove leftovers from pre-authentication compression
12052
12053 Support for this has been removed in 2016.
12054 COMP_DELAYED will be renamed in a later commit.
12055
12056 ok markus@
12057
12058 OpenBSD-Commit-ID: cdfef526357e4e1483c86cf599491b2dafb77772
12059
12060commit ab39267fa1243d02b6c330615539fc4b21e17dc4
12061Author: sf@openbsd.org <sf@openbsd.org>
12062Date: Fri Jul 6 09:06:14 2018 +0000
12063
12064 upstream: Rename COMP_DELAYED to COMP_ZLIB
12065
12066 Only delayed compression is supported nowadays.
12067
12068 ok markus@
12069
12070 OpenBSD-Commit-ID: 5b1dbaf3d9a4085aaa10fec0b7a4364396561821
12071
12072commit 95db395d2e56a6f868193aead6cadb2493f036c6
12073Author: sf@openbsd.org <sf@openbsd.org>
12074Date: Fri Jul 6 09:05:01 2018 +0000
12075
12076 upstream: Remove leftovers from pre-authentication compression
12077
12078 Support for this has been removed in 2016.
12079 COMP_DELAYED will be renamed in a later commit.
12080
12081 ok markus@
12082
12083 OpenBSD-Commit-ID: 6a99616c832627157113fcb0cf5a752daf2e6b58
12084
12085commit f28a4d5cd24c4aa177e96b4f96957991e552cb70
12086Author: sf@openbsd.org <sf@openbsd.org>
12087Date: Fri Jul 6 09:03:02 2018 +0000
12088
12089 upstream: Remove unused ssh_packet_start_compression()
12090
12091 ok markus@
12092
12093 OpenBSD-Commit-ID: 9d34cf2f59aca5422021ae2857190578187dc2b4
12094
12095commit 872517ddbb72deaff31d4760f28f2b0a1c16358f
12096Author: Darren Tucker <dtucker@dtucker.net>
12097Date: Fri Jul 6 13:32:02 2018 +1000
12098
12099 Defer setting bufsiz in getdelim.
12100
12101 Do not write to bufsiz until we are sure the malloc has succeeded,
12102 in case any callers rely on it (which they shouldn't). ok djm@
12103
12104commit 3deb56f7190a414dc264e21e087a934fa1847283
12105Author: Darren Tucker <dtucker@dtucker.net>
12106Date: Thu Jul 5 13:32:01 2018 +1000
12107
12108 Fix other callers of read_environment_file.
12109
12110 read_environment_file recently gained an extra argument Some platform
12111 specific code also calls it so add the argument to those too. Fixes
12112 build on Solaris and AIX.
12113
12114commit 314908f451e6b2d4ccf6212ad246fa4619c721d3
12115Author: djm@openbsd.org <djm@openbsd.org>
12116Date: Wed Jul 4 13:51:45 2018 +0000
12117
12118 upstream: deal with API rename: match_filter_list() =>
12119
12120 match_filter_blacklist()
12121
12122 OpenBSD-Regress-ID: 2da342be913efeb51806351af906fab01ba4367f
12123
12124commit 89f54cdf6b9cf1cf5528fd33897f1443913ddfb4
12125Author: djm@openbsd.org <djm@openbsd.org>
12126Date: Wed Jul 4 13:51:12 2018 +0000
12127
12128 upstream: exercise new expansion behaviour of
12129
12130 PubkeyAcceptedKeyTypes and, by proxy, test kex_assemble_names()
12131
12132 ok markus@
12133
12134 OpenBSD-Regress-ID: 292978902e14d5729aa87e492dd166c842f72736
12135
12136commit 187633f24c71564e970681c8906df5a6017dcccf
12137Author: djm@openbsd.org <djm@openbsd.org>
12138Date: Tue Jul 3 13:53:26 2018 +0000
12139
12140 upstream: add a comment that could have saved me 45 minutes of wild
12141
12142 goose chasing
12143
12144 OpenBSD-Regress-ID: d469b29ffadd3402c090e21b792d627d46fa5297
12145
12146commit 312d2f2861a2598ed08587cb6c45c0e98a85408f
12147Author: djm@openbsd.org <djm@openbsd.org>
12148Date: Wed Jul 4 13:49:31 2018 +0000
12149
12150 upstream: repair PubkeyAcceptedKeyTypes (and friends) after RSA
12151
12152 signature work - returns ability to add/remove/specify algorithms by
12153 wildcard.
12154
12155 Algorithm lists are now fully expanded when the server/client configs
12156 are finalised, so errors are reported early and the config dumps
12157 (e.g. "ssh -G ...") now list the actual algorithms selected.
12158
12159 Clarify that, while wildcards are accepted in algorithm lists, they
12160 aren't full pattern-lists that support negation.
12161
12162 (lots of) feedback, ok markus@
12163
12164 OpenBSD-Commit-ID: a8894c5c81f399a002f02ff4fe6b4fa46b1f3207
12165
12166commit 303af5803bd74bf05d375c04e1a83b40c30b2be5
12167Author: djm@openbsd.org <djm@openbsd.org>
12168Date: Tue Jul 3 11:43:49 2018 +0000
12169
12170 upstream: some magic for RSA-SHA2 checks
12171
12172 OpenBSD-Regress-ID: e5a9b11368ff6d86e7b25ad10ebe43359b471cd4
12173
12174commit 7d68e262944c1fff1574600fe0e5e92ec8b398f5
12175Author: Damien Miller <djm@mindrot.org>
12176Date: Tue Jul 3 23:27:11 2018 +1000
12177
12178 depend
12179
12180commit b4d4eda633af433d20232cbf7e855ceac8b83fe5
12181Author: djm@openbsd.org <djm@openbsd.org>
12182Date: Tue Jul 3 13:20:25 2018 +0000
12183
12184 upstream: some finesse to fix RSA-SHA2 certificate authentication
12185
12186 for certs hosted in ssh-agent
12187
12188 OpenBSD-Commit-ID: e5fd5edd726137dda2d020e1cdebc464110a010f
12189
12190commit d78b75df4a57e0f92295f24298e5f2930e71c172
12191Author: djm@openbsd.org <djm@openbsd.org>
12192Date: Tue Jul 3 13:07:58 2018 +0000
12193
12194 upstream: check correct variable; unbreak agent keys
12195
12196 OpenBSD-Commit-ID: c36981fdf1f3ce04966d3310826a3e1e6233d93e
12197
12198commit 2f30300c5e15929d0e34013f38d73e857f445e12
12199Author: djm@openbsd.org <djm@openbsd.org>
12200Date: Tue Jul 3 11:42:12 2018 +0000
12201
12202 upstream: crank version number to 7.8; needed for new compat flag
12203
12204 for prior version; part of RSA-SHA2 strictification, ok markus@
12205
12206 OpenBSD-Commit-ID: 84a11fc0efd2674c050712336b5093f5d408e32b
12207
12208commit 4ba0d54794814ec0de1ec87987d0c3b89379b436
12209Author: djm@openbsd.org <djm@openbsd.org>
12210Date: Tue Jul 3 11:39:54 2018 +0000
12211
12212 upstream: Improve strictness and control over RSA-SHA2 signature
12213
12214 In ssh, when an agent fails to return a RSA-SHA2 signature when
12215 requested and falls back to RSA-SHA1 instead, retry the signature to
12216 ensure that the public key algorithm sent in the SSH_MSG_USERAUTH
12217 matches the one in the signature itself.
12218
12219 In sshd, strictly enforce that the public key algorithm sent in the
12220 SSH_MSG_USERAUTH message matches what appears in the signature.
12221
12222 Make the sshd_config PubkeyAcceptedKeyTypes and
12223 HostbasedAcceptedKeyTypes options control accepted signature algorithms
12224 (previously they selected supported key types). This allows these
12225 options to ban RSA-SHA1 in favour of RSA-SHA2.
12226
12227 Add new signature algorithms "rsa-sha2-256-cert-v01@openssh.com" and
12228 "rsa-sha2-512-cert-v01@openssh.com" to force use of RSA-SHA2 signatures
12229 with certificate keys.
12230
12231 feedback and ok markus@
12232
12233 OpenBSD-Commit-ID: c6e9f6d45eed8962ad502d315d7eaef32c419dde
12234
12235commit 95344c257412b51199ead18d54eaed5bafb75617
12236Author: djm@openbsd.org <djm@openbsd.org>
12237Date: Tue Jul 3 10:59:35 2018 +0000
12238
12239 upstream: allow sshd_config PermitUserEnvironment to accept a
12240
12241 pattern-list of whitelisted environment variable names in addition to yes|no.
12242
12243 bz#1800, feedback and ok markus@
12244
12245 OpenBSD-Commit-ID: 77dc2b468e0bf04b53f333434ba257008a1fdf24
12246
12247commit 6f56fe4b9578b0627667f8bce69d4d938a88324c
12248Author: millert@openbsd.org <millert@openbsd.org>
12249Date: Tue Jun 26 11:23:59 2018 +0000
12250
12251 upstream: Fix "WARNING: line 6 disappeared in /etc/moduli, giving up"
12252
12253 when choosing a prime. An extra increment of linenum snuck in as part of the
12254 conversion to getline(). OK djm@ markus@
12255
12256 OpenBSD-Commit-ID: 0019225cb52ed621b71cd9f19ee2e78e57e3dd38
12257
12258commit 1eee79a11c1b3594f055b01e387c49c9a6e80005
12259Author: dtucker@openbsd.org <dtucker@openbsd.org>
12260Date: Mon Jul 2 14:13:30 2018 +0000
12261
12262 upstream: One ampersand is enough to backgroud an process. OpenBSD
12263
12264 doesn't seem to mind, but some platforms in -portable object to the second.
12265
12266 OpenBSD-Regress-ID: d6c3e404871764343761dc25c3bbe29c2621ff74
12267
12268commit 6301e6c787d4e26bfae1119ab4f747bbcaa94e44
12269Author: Darren Tucker <dtucker@dtucker.net>
12270Date: Mon Jul 2 21:16:58 2018 +1000
12271
12272 Add implementation of getline.
12273
12274 Add getline for the benefit of platforms that don't have it. Sourced
12275 from NetBSD (OpenBSD's implementation is a little too chummy with the
12276 internals of FILE).
12277
12278commit 84623e0037628f9992839063151f7a9f5f13099a
12279Author: djm@openbsd.org <djm@openbsd.org>
12280Date: Tue Jun 26 02:02:36 2018 +0000
12281
12282 upstream: whitespace
12283
12284 OpenBSD-Commit-ID: 9276951caf4daf555f6d262e95720e7f79244572
12285
12286commit 90e51d672711c19a36573be1785caf35019ae7a8
12287Author: djm@openbsd.org <djm@openbsd.org>
12288Date: Mon Jun 25 22:28:33 2018 +0000
12289
12290 upstream: fix NULL dereference in open_listen_match_tcpip()
12291
12292 OpenBSD-Commit-ID: c968c1d29e392352383c0f9681fcc1e93620c4a9
12293
12294commit f535ff922a67d9fcc5ee69d060d1b21c8bb01d14
12295Author: jmc@openbsd.org <jmc@openbsd.org>
12296Date: Tue Jun 19 05:36:57 2018 +0000
12297
12298 upstream: spelling;
12299
12300 OpenBSD-Commit-ID: db542918185243bea17202383a581851736553cc
12301
12302commit 80e199d6175904152aafc5c297096c3e18297691
12303Author: djm@openbsd.org <djm@openbsd.org>
12304Date: Tue Jun 19 03:02:17 2018 +0000
12305
12306 upstream: test PermitListen with bare port numbers
12307
12308 OpenBSD-Regress-ID: 4b50a02dfb0ccaca08247f3877c444126ba901b3
12309
12310commit 87ddd676da0f3abd08b778b12b53b91b670dc93c
12311Author: djm@openbsd.org <djm@openbsd.org>
12312Date: Tue Jun 19 02:59:41 2018 +0000
12313
12314 upstream: allow bare port numbers to appear in PermitListen directives,
12315
12316 e.g.
12317
12318 PermitListen 2222 8080
12319
12320 is equivalent to:
12321
12322 PermitListen *:2222 *:8080
12323
12324 Some bonus manpage improvements, mostly from markus@
12325
12326 "looks fine" markus@
12327
12328 OpenBSD-Commit-ID: 6546b0cc5aab7f53d65ad0a348ca0ae591d6dd24
12329
12330commit 26f96ca10ad0ec5da9b05b99de1e1ccea15a11be
12331Author: djm@openbsd.org <djm@openbsd.org>
12332Date: Fri Jun 15 07:01:11 2018 +0000
12333
12334 upstream: invalidate supplemental group cache used by
12335
12336 temporarily_use_uid() when the target uid differs; could cause failure to
12337 read authorized_keys under some configurations. patch by Jakub Jelen via
12338 bz2873; ok dtucker, markus
12339
12340 OpenBSD-Commit-ID: 48a345f0ee90f6c465a078eb5e89566b23abd8a1
12341
12342commit 89a85d724765b6b82e0135ee5a1181fdcccea9c6
12343Author: djm@openbsd.org <djm@openbsd.org>
12344Date: Sun Jun 10 23:45:41 2018 +0000
12345
12346 upstream: unbreak SendEnv; patch from tb@
12347
12348 OpenBSD-Commit-ID: fc808daced813242563b80976e1478de95940056
12349
12350commit acf4260f0951f89c64e1ebbc4c92f451768871ad
12351Author: jmc@openbsd.org <jmc@openbsd.org>
12352Date: Sat Jun 9 06:36:31 2018 +0000
12353
12354 upstream: sort previous;
12355
12356 OpenBSD-Commit-ID: 27d80d8b8ca99bc33971dee905e8ffd0053ec411
12357
12358commit 1678d4236451060b735cb242d2e26e1ac99f0947
12359Author: djm@openbsd.org <djm@openbsd.org>
12360Date: Sat Jun 9 03:18:11 2018 +0000
12361
12362 upstream: slightly better wording re handing of $TERM, from Jakub
12363
12364 Jelen via bz2386
12365
12366 OpenBSD-Commit-ID: 14bea3f069a93c8be66a7b97794255a91fece964
12367
12368commit 28013759f09ed3ebf7e8335e83a62936bd7a7f47
12369Author: djm@openbsd.org <djm@openbsd.org>
12370Date: Sat Jun 9 03:03:10 2018 +0000
12371
12372 upstream: add a SetEnv directive for sshd_config to allow an
12373
12374 administrator to explicitly specify environment variables set in sessions
12375 started by sshd. These override the default environment and any variables set
12376 by user configuration (PermitUserEnvironment, etc), but not the SSH_*
12377 variables set by sshd itself.
12378
12379 ok markus@
12380
12381 OpenBSD-Commit-ID: b6a96c0001ccd7dd211df6cae9e961c20fd718c0
12382
12383commit 7082bb58a2eb878d23ec674587c742e5e9673c36
12384Author: djm@openbsd.org <djm@openbsd.org>
12385Date: Sat Jun 9 03:01:12 2018 +0000
12386
12387 upstream: add a SetEnv directive to ssh_config that allows setting
12388
12389 environment variables for the remote session (subject to the server accepting
12390 them)
12391
12392 refactor SendEnv to remove the arbitrary limit of variable names.
12393
12394 ok markus@
12395
12396 OpenBSD-Commit-ID: cfbb00d9b0e10c1ffff1d83424351fd961d1f2be
12397
12398commit 3b9798bda15bd3f598f5ef07595d64e23504da91
12399Author: djm@openbsd.org <djm@openbsd.org>
12400Date: Sat Jun 9 02:58:02 2018 +0000
12401
12402 upstream: reorder child environment preparation so that variables
12403
12404 read from ~/.ssh/environment (if enabled) do not override SSH_* variables set
12405 by the server.
12406
12407 OpenBSD-Commit-ID: 59f9d4c213cdcef2ef21f4b4ae006594dcf2aa7a
12408
12409commit 0368889f82f63c82ff8db9f8c944d89e7c657db4
12410Author: djm@openbsd.org <djm@openbsd.org>
12411Date: Fri Jun 8 03:35:36 2018 +0000
12412
12413 upstream: fix incorrect expansion of %i in
12414
12415 load_public_identity_files(); reported by Roumen Petrov
12416
12417 OpenBSD-Commit-ID: a827289e77149b5e0850d72a350c8b0300e7ef25
12418
12419commit 027607fc2db6a0475a3380f8d95c635482714cb0
12420Author: djm@openbsd.org <djm@openbsd.org>
12421Date: Fri Jun 8 01:55:40 2018 +0000
12422
12423 upstream: fix some over-long lines and __func__ up some debug
12424
12425 messages
12426
12427 OpenBSD-Commit-ID: c70a60b4c8207d9f242fc2351941ba50916bb267
12428
12429commit 6ff6fda705bc204456a5fa12518dde6e8790bb02
12430Author: jmc@openbsd.org <jmc@openbsd.org>
12431Date: Thu Jun 7 11:26:14 2018 +0000
12432
12433 upstream: tweak previous;
12434
12435 OpenBSD-Commit-ID: f98f16af10b28e24bcecb806cb71ea994b648fd6
12436
12437commit f2c06ab8dd90582030991f631a2715216bf45e5a
12438Author: Darren Tucker <dtucker@dtucker.net>
12439Date: Fri Jun 8 17:43:36 2018 +1000
12440
12441 Remove ability to override $LD.
12442
12443 Since autoconf always uses $CC to link C programs, allowing users to
12444 override LD caused mismatches between what LD_LINK_IFELSE thought worked
12445 and what ld thought worked. If you do need to do this kind of thing you
12446 need to set a compiler flag such as gcc's -fuse-ld in LDFLAGS.
12447
12448commit e1542a80797b4ea40a91d2896efdcc76a57056d2
12449Author: Darren Tucker <dtucker@dtucker.net>
12450Date: Fri Jun 8 13:55:59 2018 +1000
12451
12452 Better detection of unsupported compiler options.
12453
12454 Should prevent "unsupported -Wl,-z,retpoline" warnings during linking.
12455 ok djm@
12456
12457commit 57379dbd013ad32ee3f9989bf5f5741065428360
12458Author: djm@openbsd.org <djm@openbsd.org>
12459Date: Thu Jun 7 14:29:43 2018 +0000
12460
12461 upstream: test the correct configuration option name
12462
12463 OpenBSD-Regress-ID: 492279ea9f65657f97a970e0e7c7fd0b339fee23
12464
12465commit 6d41815e202fbd6182c79780b6cc90e1ec1c9981
12466Author: djm@openbsd.org <djm@openbsd.org>
12467Date: Thu Jun 7 09:26:42 2018 +0000
12468
12469 upstream: some permitlisten fixes from markus@ that I missed in my
12470
12471 insomnia-fueled commits last night
12472
12473 OpenBSD-Commit-ID: 26f23622e928996086e85b1419cc1c0f136e359c
12474
12475commit 4319f7a868d86d435fa07112fcb6153895d03a7f
12476Author: djm@openbsd.org <djm@openbsd.org>
12477Date: Thu Jun 7 04:46:34 2018 +0000
12478
12479 upstream: permitlisten/PermitListen unit test from Markus
12480
12481 OpenBSD-Regress-ID: ab12eb42f0e14926980441cf7c058a6d1d832ea5
12482
12483commit fa09076410ffc2d34d454145af23c790d728921e
12484Author: djm@openbsd.org <djm@openbsd.org>
12485Date: Thu Jun 7 04:31:51 2018 +0000
12486
12487 upstream: fix regression caused by recent permitlisten option commit:
12488
12489 authorized_keys lines that contained permitopen/permitlisten were being
12490 treated as invalid.
12491
12492 OpenBSD-Commit-ID: 7ef41d63a5a477b405d142dc925b67d9e7aaa31b
12493
12494commit 7f90635216851f6cb4bf3999e98b825f85d604f8
12495Author: markus@openbsd.org <markus@openbsd.org>
12496Date: Wed Jun 6 18:29:18 2018 +0000
12497
12498 upstream: switch config file parsing to getline(3) as this avoids
12499
12500 static limits noted by gerhard@; ok dtucker@, djm@
12501
12502 OpenBSD-Commit-ID: 6d702eabef0fa12e5a1d75c334a8c8b325298b5c
12503
12504commit 392db2bc83215986a91c0b65feb0e40e7619ce7e
12505Author: djm@openbsd.org <djm@openbsd.org>
12506Date: Wed Jun 6 18:25:33 2018 +0000
12507
12508 upstream: regress test for PermitOpen
12509
12510 OpenBSD-Regress-ID: ce8b5f28fc039f09bb297fc4a92319e65982ddaf
12511
12512commit 803d896ef30758135e2f438bdd1a0be27989e018
12513Author: djm@openbsd.org <djm@openbsd.org>
12514Date: Wed Jun 6 18:24:15 2018 +0000
12515
12516 upstream: man bits for permitlisten authorized_keys option
12517
12518 OpenBSD-Commit-ID: 86910af8f781a4ac5980fea125442eb25466dd78
12519
12520commit 04df43208b5b460d7360e1598f876b92a32f5922
12521Author: djm@openbsd.org <djm@openbsd.org>
12522Date: Wed Jun 6 18:24:00 2018 +0000
12523
12524 upstream: man bits for PermitListen
12525
12526 OpenBSD-Commit-ID: 35b200cba4e46a16a4db6a80ef11838ab0fad67c
12527
12528commit 93c06ab6b77514e0447fe4f1d822afcbb2a9be08
12529Author: djm@openbsd.org <djm@openbsd.org>
12530Date: Wed Jun 6 18:23:32 2018 +0000
12531
12532 upstream: permitlisten option for authorized_keys; ok markus@
12533
12534 OpenBSD-Commit-ID: 8650883018d7aa893173d703379e4456a222c672
12535
12536commit 115063a6647007286cc8ca70abfd2a7585f26ccc
12537Author: djm@openbsd.org <djm@openbsd.org>
12538Date: Wed Jun 6 18:22:41 2018 +0000
12539
12540 upstream: Add a PermitListen directive to control which server-side
12541
12542 addresses may be listened on when the client requests remote forwarding (ssh
12543 -R).
12544
12545 This is the converse of the existing PermitOpen directive and this
12546 includes some refactoring to share much of its implementation.
12547
12548 feedback and ok markus@
12549
12550 OpenBSD-Commit-ID: 15a931238c61a3f2ac74ea18a98c933e358e277f
12551
12552commit 7703ae5f5d42eb302ded51705166ff6e19c92892
12553Author: Darren Tucker <dtucker@dtucker.net>
12554Date: Wed Jun 6 16:04:29 2018 +1000
12555
12556 Use ssh-keygen -A to generate missing host keys.
12557
12558 Instead of testing for each specific key type, use ssh-keygen -A to
12559 generate any missing host key types.
12560
12561commit e8d59fef1098e24f408248dc64e5c8efa5d01f3c
12562Author: jmc@openbsd.org <jmc@openbsd.org>
12563Date: Fri Jun 1 06:23:10 2018 +0000
12564
12565 upstream: add missing punctuation after %i in ssh_config.5, and
12566
12567 make the grammatical format in sshd_config.5 match that in ssh_config.5;
12568
12569 OpenBSD-Commit-ID: e325663b9342f3d556e223e5306e0d5fa1a74fa0
12570
12571commit a1f737d6a99314e291a87856122cb4dbaf64c641
12572Author: jmc@openbsd.org <jmc@openbsd.org>
12573Date: Fri Jun 1 05:52:26 2018 +0000
12574
12575 upstream: oops - further adjustment to text neccessary;
12576
12577 OpenBSD-Commit-ID: 23585576c807743112ab956be0fb3c786bdef025
12578
12579commit 294028493471e0bd0c7ffe55dc0c0a67cba6ec41
12580Author: jmc@openbsd.org <jmc@openbsd.org>
12581Date: Fri Jun 1 05:50:18 2018 +0000
12582
12583 upstream: %U needs to be escaped; tweak text;
12584
12585 OpenBSD-Commit-ID: 30887b73ece257273fb619ab6f4e86dc92ddc15e
12586
12587commit e5019da3c5a31e6e729a565f2b886a80c4be96cc
12588Author: dtucker@openbsd.org <dtucker@openbsd.org>
12589Date: Fri Jun 1 04:31:48 2018 +0000
12590
12591 upstream: Apply umask to all incoming files and directories not
12592
12593 just files. This makes sure it gets applied to directories too, and prevents
12594 a race where files get chmodded after creation. bz#2839, ok djm@
12595
12596 OpenBSD-Commit-ID: 3168ee6c7c39093adac4fd71039600cfa296203b
12597
12598commit a1dcafc41c376332493b9385ee39f9754dc145ec
12599Author: djm@openbsd.org <djm@openbsd.org>
12600Date: Fri Jun 1 03:52:37 2018 +0000
12601
12602 upstream: Adapt to extra default verboisity from ssh-keygen when
12603
12604 searching for and hashing known_hosts entries in a single operation
12605 (ssh-keygen -HF ...) Patch from Anton Kremenetsky
12606
12607 OpenBSD-Regress-ID: 519585a4de35c4611285bd6a7272766c229b19dd
12608
12609commit 76f314c75dffd4a55839d50ee23622edad52c168
12610Author: djm@openbsd.org <djm@openbsd.org>
12611Date: Tue May 22 00:22:49 2018 +0000
12612
12613 upstream: Add TEST_SSH_FAIL_FATAL variable, to force all failures
12614
12615 to instantly abort the test. Useful in capturing clean logs for individual
12616 failure cases.
12617
12618 OpenBSD-Regress-ID: feba18cf338c2328b9601bd4093cabdd9baa3af1
12619
12620commit 065c8c055df8d83ae7c92e5e524a579d87668aab
12621Author: dtucker@openbsd.org <dtucker@openbsd.org>
12622Date: Fri May 11 03:51:06 2018 +0000
12623
12624 upstream: Clean up comment.
12625
12626 OpenBSD-Regress-ID: 6adb35f384d447e7dcb9f170d4f0d546d3973e10
12627
12628commit 01b048c8eba3b021701bd0ab26257fc82903cba8
12629Author: djm@openbsd.org <djm@openbsd.org>
12630Date: Fri Jun 1 04:21:29 2018 +0000
12631
12632 upstream: whitespace
12633
12634 OpenBSD-Commit-ID: e5edb5e843ddc9b73a8e46518899be41d5709add
12635
12636commit 854ae209f992465a276de0b5f10ef770510c2418
12637Author: djm@openbsd.org <djm@openbsd.org>
12638Date: Fri Jun 1 04:05:29 2018 +0000
12639
12640 upstream: make ssh_remote_ipaddr() capable of being called after
12641
12642 the ssh->state has been torn down; bz#2773
12643
12644 OpenBSD-Commit-ID: 167f12523613ca3d16d7716a690e7afa307dc7eb
12645
12646commit 3e088aaf236ef35beeef3c9be93fd53700df5861
12647Author: djm@openbsd.org <djm@openbsd.org>
12648Date: Fri Jun 1 03:51:34 2018 +0000
12649
12650 upstream: return correct exit code when searching for and hashing
12651
12652 known_hosts entries in a single operation (ssh-keygen -HF hostname); bz2772
12653 Report and fix from Anton Kremenetsky
12654
12655 OpenBSD-Commit-ID: ac10ca13eb9bb0bc50fcd42ad11c56c317437b58
12656
12657commit 9c935dd9bf05628826ad2495d3e8bdf3d3271c21
12658Author: djm@openbsd.org <djm@openbsd.org>
12659Date: Fri Jun 1 03:33:53 2018 +0000
12660
12661 upstream: make UID available as a %-expansion everywhere that the
12662
12663 username is available currently. In the client this is via %i, in the server
12664 %U (since %i was already used in the client in some places for this, but used
12665 for something different in the server); bz#2870, ok dtucker@
12666
12667 OpenBSD-Commit-ID: c7e912b0213713316cb55db194b3a6415b3d4b95
12668
12669commit d8748b91d1d6c108c0c260ed41fa55f37b9ef34b
12670Author: djm@openbsd.org <djm@openbsd.org>
12671Date: Fri Jun 1 03:11:49 2018 +0000
12672
12673 upstream: prefer argv0 to "ssh" when re-executing ssh for ProxyJump
12674
12675 directive; bz2831, feedback and ok dtucker@
12676
12677 OpenBSD-Commit-ID: 3cec709a131499fbb0c1ea8a0a9e0b0915ce769e
diff --git a/INSTALL b/INSTALL
index 443ff9f3f..ee621da43 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,4 +1,3 @@
11. Prerequisites
2---------------- 1----------------
3 2
4A C compiler. Any C89 or better compiler should work. Where supported, 3A C compiler. Any C89 or better compiler should work. Where supported,
@@ -97,11 +96,12 @@ http://nlnetlabs.nl/projects/ldns/
97Autoconf: 96Autoconf:
98 97
99If you modify configure.ac or configure doesn't exist (eg if you checked 98If you modify configure.ac or configure doesn't exist (eg if you checked
100the code out of git yourself) then you will need autoconf-2.69 to rebuild 99the code out of git yourself) then you will need autoconf-2.69 and
101the automatically generated files by running "autoreconf". Earlier 100automake-1.16.1 to rebuild the automatically generated files by running
102versions may also work but this is not guaranteed. 101"autoreconf". Earlier versions may also work but this is not guaranteed.
103 102
104http://www.gnu.org/software/autoconf/ 103http://www.gnu.org/software/autoconf/
104http://www.gnu.org/software/automake/
105 105
106Basic Security Module (BSM): 106Basic Security Module (BSM):
107 107
@@ -120,7 +120,8 @@ the dependency (.depend) file using "make depend", which requires the
120libfido2: 120libfido2:
121 121
122libfido2 allows the use of hardware security keys over USB. libfido2 122libfido2 allows the use of hardware security keys over USB. libfido2
123in turn depends on libcbor. 123in turn depends on libcbor. libfido2 >= 1.5.0 is strongly recommended.
124Limited functionality is possible with earlier libfido2 versions.
124 125
125https://github.com/Yubico/libfido2 126https://github.com/Yubico/libfido2
126https://github.com/pjk/libcbor 127https://github.com/pjk/libcbor
@@ -221,6 +222,11 @@ libraries are installed.
221 222
222--with-ssl-engine enables Libre/OpenSSL's (hardware) ENGINE support 223--with-ssl-engine enables Libre/OpenSSL's (hardware) ENGINE support
223 224
225--without-openssl builds without using OpenSSL. Only a subset of ciphers
226and algorithms are supported in this configuration.
227
228--without-zlib builds without zlib. This disables the Compression option.
229
224--with-4in6 Check for IPv4 in IPv6 mapped addresses and convert them to 230--with-4in6 Check for IPv4 in IPv6 mapped addresses and convert them to
225real (AF_INET) IPv4 addresses. Works around some quirks on Linux. 231real (AF_INET) IPv4 addresses. Works around some quirks on Linux.
226 232
diff --git a/Makefile.in b/Makefile.in
index 3aa808a38..73e56aaac 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -49,7 +49,6 @@ PICFLAG=@PICFLAG@
49LIBS=@LIBS@ 49LIBS=@LIBS@
50K5LIBS=@K5LIBS@ 50K5LIBS=@K5LIBS@
51GSSLIBS=@GSSLIBS@ 51GSSLIBS=@GSSLIBS@
52SSHLIBS=@SSHLIBS@
53SSHDLIBS=@SSHDLIBS@ 52SSHDLIBS=@SSHDLIBS@
54LIBEDIT=@LIBEDIT@ 53LIBEDIT=@LIBEDIT@
55LIBFIDO2=@LIBFIDO2@ 54LIBFIDO2=@LIBFIDO2@
@@ -58,7 +57,6 @@ AWK=@AWK@
58RANLIB=@RANLIB@ 57RANLIB=@RANLIB@
59INSTALL=@INSTALL@ 58INSTALL=@INSTALL@
60SED=@SED@ 59SED=@SED@
61ENT=@ENT@
62XAUTH_PATH=@XAUTH_PATH@ 60XAUTH_PATH=@XAUTH_PATH@
63LDFLAGS=-L. -Lopenbsd-compat/ @LDFLAGS@ 61LDFLAGS=-L. -Lopenbsd-compat/ @LDFLAGS@
64LDFLAGS_NOPIE=-L. -Lopenbsd-compat/ @LDFLAGS_NOPIE@ 62LDFLAGS_NOPIE=-L. -Lopenbsd-compat/ @LDFLAGS_NOPIE@
@@ -190,7 +188,7 @@ $(SSHOBJS): Makefile.in config.h
190$(SSHDOBJS): Makefile.in config.h 188$(SSHDOBJS): Makefile.in config.h
191configure-check: $(srcdir)/configure 189configure-check: $(srcdir)/configure
192 190
193$(srcdir)/configure: configure.ac aclocal.m4 191$(srcdir)/configure: configure.ac $(srcdir)/m4/*.m4
194 @echo "ERROR: configure is out of date; please run ${AUTORECONF} (and configure)" 1>&2 192 @echo "ERROR: configure is out of date; please run ${AUTORECONF} (and configure)" 1>&2
195 @exit 1 193 @exit 1
196 194
@@ -207,7 +205,7 @@ libssh.a: $(LIBSSH_OBJS)
207 $(RANLIB) $@ 205 $(RANLIB) $@
208 206
209ssh$(EXEEXT): $(LIBCOMPAT) libssh.a $(SSHOBJS) 207ssh$(EXEEXT): $(LIBCOMPAT) libssh.a $(SSHOBJS)
210 $(LD) -o $@ $(SSHOBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(SSHLIBS) $(LIBS) $(GSSLIBS) 208 $(LD) -o $@ $(SSHOBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) $(GSSLIBS)
211 209
212sshd$(EXEEXT): libssh.a $(LIBCOMPAT) $(SSHDOBJS) 210sshd$(EXEEXT): libssh.a $(LIBCOMPAT) $(SSHDOBJS)
213 $(LD) -o $@ $(SSHDOBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(SSHDLIBS) $(LIBS) $(GSSLIBS) $(K5LIBS) 211 $(LD) -o $@ $(SSHDOBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(SSHDLIBS) $(LIBS) $(GSSLIBS) $(K5LIBS)
@@ -278,6 +276,8 @@ clean: regressclean
278 rm -f regress/unittests/sshbuf/test_sshbuf$(EXEEXT) 276 rm -f regress/unittests/sshbuf/test_sshbuf$(EXEEXT)
279 rm -f regress/unittests/sshkey/*.o 277 rm -f regress/unittests/sshkey/*.o
280 rm -f regress/unittests/sshkey/test_sshkey$(EXEEXT) 278 rm -f regress/unittests/sshkey/test_sshkey$(EXEEXT)
279 rm -f regress/unittests/sshsig/*.o
280 rm -f regress/unittests/sshsig/test_sshsig$(EXEEXT)
281 rm -f regress/unittests/bitmap/*.o 281 rm -f regress/unittests/bitmap/*.o
282 rm -f regress/unittests/bitmap/test_bitmap$(EXEEXT) 282 rm -f regress/unittests/bitmap/test_bitmap$(EXEEXT)
283 rm -f regress/unittests/conversion/*.o 283 rm -f regress/unittests/conversion/*.o
@@ -311,6 +311,8 @@ distclean: regressclean
311 rm -f regress/unittests/sshbuf/test_sshbuf 311 rm -f regress/unittests/sshbuf/test_sshbuf
312 rm -f regress/unittests/sshkey/*.o 312 rm -f regress/unittests/sshkey/*.o
313 rm -f regress/unittests/sshkey/test_sshkey 313 rm -f regress/unittests/sshkey/test_sshkey
314 rm -f regress/unittests/sshsig/*.o
315 rm -f regress/unittests/sshsig/test_sshsig
314 rm -f regress/unittests/bitmap/*.o 316 rm -f regress/unittests/bitmap/*.o
315 rm -f regress/unittests/bitmap/test_bitmap 317 rm -f regress/unittests/bitmap/test_bitmap
316 rm -f regress/unittests/conversion/*.o 318 rm -f regress/unittests/conversion/*.o
@@ -490,6 +492,7 @@ regress-prep:
490 $(MKDIR_P) `pwd`/regress/unittests/test_helper 492 $(MKDIR_P) `pwd`/regress/unittests/test_helper
491 $(MKDIR_P) `pwd`/regress/unittests/sshbuf 493 $(MKDIR_P) `pwd`/regress/unittests/sshbuf
492 $(MKDIR_P) `pwd`/regress/unittests/sshkey 494 $(MKDIR_P) `pwd`/regress/unittests/sshkey
495 $(MKDIR_P) `pwd`/regress/unittests/sshsig
493 $(MKDIR_P) `pwd`/regress/unittests/bitmap 496 $(MKDIR_P) `pwd`/regress/unittests/bitmap
494 $(MKDIR_P) `pwd`/regress/unittests/conversion 497 $(MKDIR_P) `pwd`/regress/unittests/conversion
495 $(MKDIR_P) `pwd`/regress/unittests/hostkeys 498 $(MKDIR_P) `pwd`/regress/unittests/hostkeys
@@ -561,6 +564,17 @@ regress/unittests/sshkey/test_sshkey$(EXEEXT): ${UNITTESTS_TEST_SSHKEY_OBJS} \
561 regress/unittests/test_helper/libtest_helper.a \ 564 regress/unittests/test_helper/libtest_helper.a \
562 -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS) 565 -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
563 566
567UNITTESTS_TEST_SSHSIG_OBJS=\
568 sshsig.o \
569 regress/unittests/sshsig/tests.o \
570 $(SKOBJS)
571
572regress/unittests/sshsig/test_sshsig$(EXEEXT): ${UNITTESTS_TEST_SSHSIG_OBJS} \
573 regress/unittests/test_helper/libtest_helper.a libssh.a
574 $(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_SSHSIG_OBJS) \
575 regress/unittests/test_helper/libtest_helper.a \
576 -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
577
564UNITTESTS_TEST_BITMAP_OBJS=\ 578UNITTESTS_TEST_BITMAP_OBJS=\
565 regress/unittests/bitmap/tests.o 579 regress/unittests/bitmap/tests.o
566 580
@@ -657,6 +671,7 @@ regress-binaries: regress-prep $(LIBCOMPAT) \
657regress-unit-binaries: regress-prep $(REGRESSLIBS) \ 671regress-unit-binaries: regress-prep $(REGRESSLIBS) \
658 regress/unittests/sshbuf/test_sshbuf$(EXEEXT) \ 672 regress/unittests/sshbuf/test_sshbuf$(EXEEXT) \
659 regress/unittests/sshkey/test_sshkey$(EXEEXT) \ 673 regress/unittests/sshkey/test_sshkey$(EXEEXT) \
674 regress/unittests/sshsig/test_sshsig$(EXEEXT) \
660 regress/unittests/bitmap/test_bitmap$(EXEEXT) \ 675 regress/unittests/bitmap/test_bitmap$(EXEEXT) \
661 regress/unittests/conversion/test_conversion$(EXEEXT) \ 676 regress/unittests/conversion/test_conversion$(EXEEXT) \
662 regress/unittests/hostkeys/test_hostkeys$(EXEEXT) \ 677 regress/unittests/hostkeys/test_hostkeys$(EXEEXT) \
diff --git a/PROTOCOL b/PROTOCOL
index c702fca45..ecdacb9dc 100644
--- a/PROTOCOL
+++ b/PROTOCOL
@@ -140,7 +140,7 @@ window space and may be sent even if no window space is available.
140NB. due to certain broken SSH implementations aborting upon receipt 140NB. due to certain broken SSH implementations aborting upon receipt
141of this message (in contravention of RFC4254 section 5.4), this 141of this message (in contravention of RFC4254 section 5.4), this
142message is only sent to OpenSSH peers (identified by banner). 142message is only sent to OpenSSH peers (identified by banner).
143Other SSH implementations may be whitelisted to receive this message 143Other SSH implementations may be listed to receive this message
144upon request. 144upon request.
145 145
1462.2. connection: disallow additional sessions extension 1462.2. connection: disallow additional sessions extension
@@ -169,7 +169,7 @@ Note that this is not a general defence against compromised clients
169NB. due to certain broken SSH implementations aborting upon receipt 169NB. due to certain broken SSH implementations aborting upon receipt
170of this message, the no-more-sessions request is only sent to OpenSSH 170of this message, the no-more-sessions request is only sent to OpenSSH
171servers (identified by banner). Other SSH implementations may be 171servers (identified by banner). Other SSH implementations may be
172whitelisted to receive this message upon request. 172listed to receive this message upon request.
173 173
1742.3. connection: Tunnel forward extension "tun@openssh.com" 1742.3. connection: Tunnel forward extension "tun@openssh.com"
175 175
@@ -496,4 +496,4 @@ OpenSSH's connection multiplexing uses messages as described in
496PROTOCOL.mux over a Unix domain socket for communications between a 496PROTOCOL.mux over a Unix domain socket for communications between a
497master instance and later clients. 497master instance and later clients.
498 498
499$OpenBSD: PROTOCOL,v 1.37 2020/02/21 00:04:43 dtucker Exp $ 499$OpenBSD: PROTOCOL,v 1.38 2020/07/05 23:59:45 djm Exp $
diff --git a/PROTOCOL.agent b/PROTOCOL.agent
index da3381942..6947b46cd 100644
--- a/PROTOCOL.agent
+++ b/PROTOCOL.agent
@@ -2,4 +2,6 @@ This file used to contain a description of the SSH agent protocol
2implemented by OpenSSH. It has since been superseded by an Internet- 2implemented by OpenSSH. It has since been superseded by an Internet-
3draft that is available from: 3draft that is available from:
4 4
5$OpenBSD: PROTOCOL.agent,v 1.13 2020/08/31 00:17:41 djm Exp $
6
5https://tools.ietf.org/html/draft-miller-ssh-agent-02 7https://tools.ietf.org/html/draft-miller-ssh-agent-02
diff --git a/PROTOCOL.sshsig b/PROTOCOL.sshsig
index 720e1f18a..78457ddfc 100644
--- a/PROTOCOL.sshsig
+++ b/PROTOCOL.sshsig
@@ -71,7 +71,7 @@ encoding rules for the chosen key type. For RSA signatures, the
71signature algorithm must be "rsa-sha2-512" or "rsa-sha2-256" (i.e. 71signature algorithm must be "rsa-sha2-512" or "rsa-sha2-256" (i.e.
72not the legacy RSA-SHA1 "ssh-rsa"). 72not the legacy RSA-SHA1 "ssh-rsa").
73 73
74This blob is encoded as a string using the RFC4243 encoding 74This blob is encoded as a string using the RFC4253 encoding
75rules and base64 encoded to form the middle part of the 75rules and base64 encoded to form the middle part of the
76armored signature. 76armored signature.
77 77
@@ -97,3 +97,4 @@ the reserved field if it is not empty.
97The data is concatenated and passed to the SSH signing 97The data is concatenated and passed to the SSH signing
98function. 98function.
99 99
100$OpenBSD: PROTOCOL.sshsig,v 1.4 2020/08/31 00:17:41 djm Exp $
diff --git a/PROTOCOL.u2f b/PROTOCOL.u2f
index 917e669cd..f8ca56b11 100644
--- a/PROTOCOL.u2f
+++ b/PROTOCOL.u2f
@@ -39,6 +39,13 @@ the key handle be supplied for each signature operation. U2F tokens
39primarily use ECDSA signatures in the NIST-P256 field, though the FIDO2 39primarily use ECDSA signatures in the NIST-P256 field, though the FIDO2
40standard specifies additional key types, including one based on Ed25519. 40standard specifies additional key types, including one based on Ed25519.
41 41
42Use of U2F security keys does not automatically imply multi-factor
43authentication. From sshd's perspective, a security key constitutes a
44single factor of authentication, even if protected by a PIN or biometric
45authentication. To enable multi-factor authentication in ssh, please
46refer to the AuthenticationMethods option in sshd_config(5).
47
48
42SSH U2F Key formats 49SSH U2F Key formats
43------------------- 50-------------------
44 51
@@ -147,6 +154,16 @@ by trusted hardware before it will issue a certificate. To support this
147case, OpenSSH optionally allows retaining the attestation information 154case, OpenSSH optionally allows retaining the attestation information
148at the time of key generation. It will take the following format: 155at the time of key generation. It will take the following format:
149 156
157 string "ssh-sk-attest-v01"
158 string attestation certificate
159 string enrollment signature
160 string authenticator data (CBOR encoded)
161 uint32 reserved flags
162 string reserved string
163
164A previous version of this format, emitted prior to OpenSSH 8.4 omitted
165the authenticator data.
166
150 string "ssh-sk-attest-v00" 167 string "ssh-sk-attest-v00"
151 string attestation certificate 168 string attestation certificate
152 string enrollment signature 169 string enrollment signature
@@ -202,6 +219,32 @@ For Ed25519 keys the signature is encoded as:
202 byte flags 219 byte flags
203 uint32 counter 220 uint32 counter
204 221
222webauthn signatures
223-------------------
224
225The W3C/FIDO webauthn[1] standard defines a mechanism for a web browser to
226interact with FIDO authentication tokens. This standard builds upon the
227FIDO standards, but requires different signature contents to raw FIDO
228messages. OpenSSH supports ECDSA/p256 webauthn signatures through the
229"webauthn-sk-ecdsa-sha2-nistp256@openssh.com" signature algorithm.
230
231The wire encoding for a webauthn-sk-ecdsa-sha2-nistp256@openssh.com
232signature is similar to the sk-ecdsa-sha2-nistp256@openssh.com format:
233
234 string "webauthn-sk-ecdsa-sha2-nistp256@openssh.com"
235 string ecdsa_signature
236 byte flags
237 uint32 counter
238 string origin
239 string clientData
240 string extensions
241
242Where "origin" is the HTTP origin making the signature, "clientData" is
243the JSON-like structure signed by the browser and "extensions" are any
244extensions used in making the signature.
245
246[1] https://www.w3.org/TR/webauthn-2/
247
205ssh-agent protocol extensions 248ssh-agent protocol extensions
206----------------------------- 249-----------------------------
207 250
@@ -234,87 +277,15 @@ regress testing. For this reason, OpenSSH shall support a dynamically-
234loaded middleware libraries to communicate with security keys, but offer 277loaded middleware libraries to communicate with security keys, but offer
235support for the common case of USB HID security keys internally. 278support for the common case of USB HID security keys internally.
236 279
237The middleware library need only expose a handful of functions: 280The middleware library need only expose a handful of functions and
238 281numbers listed in sk-api.h. Included in the defined numbers is a
239 #define SSH_SK_VERSION_MAJOR 0x00050000 /* API version */ 282SSH_SK_VERSION_MAJOR that should be incremented for each incompatible
240 #define SSH_SK_VERSION_MAJOR_MASK 0xffff0000
241
242 /* Flags */
243 #define SSH_SK_USER_PRESENCE_REQD 0x01
244 #define SSH_SK_USER_VERIFICATION_REQD 0x04
245 #define SSH_SK_RESIDENT_KEY 0x20
246
247 /* Algs */
248 #define SSH_SK_ECDSA 0x00
249 #define SSH_SK_ED25519 0x01
250
251 /* Error codes */
252 #define SSH_SK_ERR_GENERAL -1
253 #define SSH_SK_ERR_UNSUPPORTED -2
254 #define SSH_SK_ERR_PIN_REQUIRED -3
255 #define SSH_SK_ERR_DEVICE_NOT_FOUND -4
256
257 struct sk_enroll_response {
258 uint8_t *public_key;
259 size_t public_key_len;
260 uint8_t *key_handle;
261 size_t key_handle_len;
262 uint8_t *signature;
263 size_t signature_len;
264 uint8_t *attestation_cert;
265 size_t attestation_cert_len;
266 };
267
268 struct sk_sign_response {
269 uint8_t flags;
270 uint32_t counter;
271 uint8_t *sig_r;
272 size_t sig_r_len;
273 uint8_t *sig_s;
274 size_t sig_s_len;
275 };
276
277 struct sk_resident_key {
278 uint32_t alg;
279 size_t slot;
280 char *application;
281 struct sk_enroll_response key;
282 };
283
284 struct sk_option {
285 char *name;
286 char *value;
287 uint8_t important;
288 };
289
290 /* Return the version of the middleware API */
291 uint32_t sk_api_version(void);
292
293 /* Enroll a U2F key (private key generation) */
294 int sk_enroll(uint32_t alg,
295 const uint8_t *challenge, size_t challenge_len,
296 const char *application, uint8_t flags, const char *pin,
297 struct sk_option **options,
298 struct sk_enroll_response **enroll_response);
299
300 /* Sign a challenge */
301 int sk_sign(uint32_t alg, const uint8_t *message, size_t message_len,
302 const char *application,
303 const uint8_t *key_handle, size_t key_handle_len,
304 uint8_t flags, const char *pin, struct sk_option **options,
305 struct sk_sign_response **sign_response);
306
307 /* Enumerate all resident keys */
308 int sk_load_resident_keys(const char *pin, struct sk_option **options,
309 struct sk_resident_key ***rks, size_t *nrks);
310
311The SSH_SK_VERSION_MAJOR should be incremented for each incompatible
312API change. 283API change.
313 284
314The options may be used to pass miscellaneous options to the middleware 285miscellaneous options may be passed to the middleware as a NULL-
315as a NULL-terminated array of pointers to struct sk_option. The middleware 286terminated array of pointers to struct sk_option. The middleware may
316may ignore unsupported or unknown options unless the "important" flag is 287ignore unsupported or unknown options unless the "required" flag is set,
317set, in which case it should return failure if an unsupported option is 288in which case it should return failure if an unsupported option is
318requested. 289requested.
319 290
320At present the following options names are supported: 291At present the following options names are supported:
@@ -335,3 +306,4 @@ In OpenSSH, the middleware will be invoked by using a similar mechanism to
335ssh-pkcs11-helper to provide address-space containment of the 306ssh-pkcs11-helper to provide address-space containment of the
336middleware from ssh-agent. 307middleware from ssh-agent.
337 308
309$OpenBSD: PROTOCOL.u2f,v 1.26 2020/09/09 03:08:01 djm Exp $
diff --git a/README b/README
index cae4c28c7..f69b441b5 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
1See https://www.openssh.com/releasenotes.html#8.3p1 for the release notes. 1See https://www.openssh.com/releasenotes.html#8.4p1 for the release notes.
2 2
3Please read https://www.openssh.com/report.html for bug reporting 3Please read https://www.openssh.com/report.html for bug reporting
4instructions and note that we do not use Github for bug reporting or 4instructions and note that we do not use Github for bug reporting or
diff --git a/aclocal.m4 b/aclocal.m4
index 25ecc49a2..c1b774884 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,186 +1,15 @@
1dnl OpenSSH-specific autoconf macros 1# generated automatically by aclocal 1.16.2 -*- Autoconf -*-
2dnl
3 2
4dnl OSSH_CHECK_CFLAG_COMPILE(check_flag[, define_flag]) 3# Copyright (C) 1996-2020 Free Software Foundation, Inc.
5dnl Check that $CC accepts a flag 'check_flag'. If it is supported append
6dnl 'define_flag' to $CFLAGS. If 'define_flag' is not specified, then append
7dnl 'check_flag'.
8AC_DEFUN([OSSH_CHECK_CFLAG_COMPILE], [{
9 AC_MSG_CHECKING([if $CC supports compile flag $1])
10 saved_CFLAGS="$CFLAGS"
11 CFLAGS="$CFLAGS $WERROR $1"
12 _define_flag="$2"
13 test "x$_define_flag" = "x" && _define_flag="$1"
14 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
15#include <stdlib.h>
16#include <stdio.h>
17int main(int argc, char **argv) {
18 /* Some math to catch -ftrapv problems in the toolchain */
19 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
20 float l = i * 2.1;
21 double m = l / 0.5;
22 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
23 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o);
24 exit(0);
25}
26 ]])],
27 [
28if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
29then
30 AC_MSG_RESULT([no])
31 CFLAGS="$saved_CFLAGS"
32else
33 AC_MSG_RESULT([yes])
34 CFLAGS="$saved_CFLAGS $_define_flag"
35fi],
36 [ AC_MSG_RESULT([no])
37 CFLAGS="$saved_CFLAGS" ]
38 )
39}])
40 4
41dnl OSSH_CHECK_CFLAG_LINK(check_flag[, define_flag]) 5# This file is free software; the Free Software Foundation
42dnl Check that $CC accepts a flag 'check_flag'. If it is supported append 6# gives unlimited permission to copy and/or distribute it,
43dnl 'define_flag' to $CFLAGS. If 'define_flag' is not specified, then append 7# with or without modifications, as long as this notice is preserved.
44dnl 'check_flag'.
45AC_DEFUN([OSSH_CHECK_CFLAG_LINK], [{
46 AC_MSG_CHECKING([if $CC supports compile flag $1 and linking succeeds])
47 saved_CFLAGS="$CFLAGS"
48 CFLAGS="$CFLAGS $WERROR $1"
49 _define_flag="$2"
50 test "x$_define_flag" = "x" && _define_flag="$1"
51 AC_LINK_IFELSE([AC_LANG_SOURCE([[
52#include <stdlib.h>
53#include <stdio.h>
54int main(int argc, char **argv) {
55 /* Some math to catch -ftrapv problems in the toolchain */
56 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
57 float l = i * 2.1;
58 double m = l / 0.5;
59 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
60 long long int p = n * o;
61 printf("%d %d %d %f %f %lld %lld %lld\n", i, j, k, l, m, n, o, p);
62 exit(0);
63}
64 ]])],
65 [
66if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
67then
68 AC_MSG_RESULT([no])
69 CFLAGS="$saved_CFLAGS"
70else
71 AC_MSG_RESULT([yes])
72 CFLAGS="$saved_CFLAGS $_define_flag"
73fi],
74 [ AC_MSG_RESULT([no])
75 CFLAGS="$saved_CFLAGS" ]
76 )
77}])
78 8
79dnl OSSH_CHECK_LDFLAG_LINK(check_flag[, define_flag]) 9# This program is distributed in the hope that it will be useful,
80dnl Check that $LD accepts a flag 'check_flag'. If it is supported append 10# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
81dnl 'define_flag' to $LDFLAGS. If 'define_flag' is not specified, then append 11# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
82dnl 'check_flag'. 12# PARTICULAR PURPOSE.
83AC_DEFUN([OSSH_CHECK_LDFLAG_LINK], [{
84 AC_MSG_CHECKING([if $LD supports link flag $1])
85 saved_LDFLAGS="$LDFLAGS"
86 LDFLAGS="$LDFLAGS $WERROR $1"
87 _define_flag="$2"
88 test "x$_define_flag" = "x" && _define_flag="$1"
89 AC_LINK_IFELSE([AC_LANG_SOURCE([[
90#include <stdlib.h>
91#include <stdio.h>
92int main(int argc, char **argv) {
93 /* Some math to catch -ftrapv problems in the toolchain */
94 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
95 float l = i * 2.1;
96 double m = l / 0.5;
97 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
98 long long p = n * o;
99 printf("%d %d %d %f %f %lld %lld %lld\n", i, j, k, l, m, n, o, p);
100 exit(0);
101}
102 ]])],
103 [
104if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
105then
106 AC_MSG_RESULT([no])
107 LDFLAGS="$saved_LDFLAGS"
108else
109 AC_MSG_RESULT([yes])
110 LDFLAGS="$saved_LDFLAGS $_define_flag"
111fi ],
112 [ AC_MSG_RESULT([no])
113 LDFLAGS="$saved_LDFLAGS" ]
114 )
115}])
116
117dnl OSSH_CHECK_HEADER_FOR_FIELD(field, header, symbol)
118dnl Does AC_EGREP_HEADER on 'header' for the string 'field'
119dnl If found, set 'symbol' to be defined. Cache the result.
120dnl TODO: This is not foolproof, better to compile and read from there
121AC_DEFUN(OSSH_CHECK_HEADER_FOR_FIELD, [
122# look for field '$1' in header '$2'
123 dnl This strips characters illegal to m4 from the header filename
124 ossh_safe=`echo "$2" | sed 'y%./+-%__p_%'`
125 dnl
126 ossh_varname="ossh_cv_$ossh_safe""_has_"$1
127 AC_MSG_CHECKING(for $1 field in $2)
128 AC_CACHE_VAL($ossh_varname, [
129 AC_EGREP_HEADER($1, $2, [ dnl
130 eval "$ossh_varname=yes" dnl
131 ], [ dnl
132 eval "$ossh_varname=no" dnl
133 ]) dnl
134 ])
135 ossh_result=`eval 'echo $'"$ossh_varname"`
136 if test -n "`echo $ossh_varname`"; then
137 AC_MSG_RESULT($ossh_result)
138 if test "x$ossh_result" = "xyes"; then
139 AC_DEFINE($3, 1, [Define if you have $1 in $2])
140 fi
141 else
142 AC_MSG_RESULT(no)
143 fi
144])
145
146dnl Check for socklen_t: historically on BSD it is an int, and in
147dnl POSIX 1g it is a type of its own, but some platforms use different
148dnl types for the argument to getsockopt, getpeername, etc. So we
149dnl have to test to find something that will work.
150AC_DEFUN([TYPE_SOCKLEN_T],
151[
152 AC_CHECK_TYPE([socklen_t], ,[
153 AC_MSG_CHECKING([for socklen_t equivalent])
154 AC_CACHE_VAL([curl_cv_socklen_t_equiv],
155 [
156 # Systems have either "struct sockaddr *" or
157 # "void *" as the second argument to getpeername
158 curl_cv_socklen_t_equiv=
159 for arg2 in "struct sockaddr" void; do
160 for t in int size_t unsigned long "unsigned long"; do
161 AC_TRY_COMPILE([
162 #include <sys/types.h>
163 #include <sys/socket.h>
164
165 int getpeername (int, $arg2 *, $t *);
166 ],[
167 $t len;
168 getpeername(0,0,&len);
169 ],[
170 curl_cv_socklen_t_equiv="$t"
171 break
172 ])
173 done
174 done
175
176 if test "x$curl_cv_socklen_t_equiv" = x; then
177 AC_MSG_ERROR([Cannot find a type to use in place of socklen_t])
178 fi
179 ])
180 AC_MSG_RESULT($curl_cv_socklen_t_equiv)
181 AC_DEFINE_UNQUOTED(socklen_t, $curl_cv_socklen_t_equiv,
182 [type to use in place of socklen_t if not defined])],
183 [#include <sys/types.h>
184#include <sys/socket.h>])
185])
186 13
14m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
15m4_include([m4/openssh.m4])
diff --git a/auth-options.c b/auth-options.c
index 696ba6ac6..98afdf5fe 100644
--- a/auth-options.c
+++ b/auth-options.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth-options.c,v 1.92 2020/03/06 18:15:38 markus Exp $ */ 1/* $OpenBSD: auth-options.c,v 1.93 2020/08/27 01:07:09 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2018 Damien Miller <djm@mindrot.org> 3 * Copyright (c) 2018 Damien Miller <djm@mindrot.org>
4 * 4 *
@@ -119,7 +119,10 @@ cert_option_list(struct sshauthopt *opts, struct sshbuf *oblob,
119 } 119 }
120 } 120 }
121 if (!found && (which & OPTIONS_CRITICAL) != 0) { 121 if (!found && (which & OPTIONS_CRITICAL) != 0) {
122 if (strcmp(name, "force-command") == 0) { 122 if (strcmp(name, "verify-required") == 0) {
123 opts->require_verify = 1;
124 found = 1;
125 } else if (strcmp(name, "force-command") == 0) {
123 if ((r = sshbuf_get_cstring(data, &command, 126 if ((r = sshbuf_get_cstring(data, &command,
124 NULL)) != 0) { 127 NULL)) != 0) {
125 error("Unable to parse \"%s\" " 128 error("Unable to parse \"%s\" "
@@ -134,8 +137,7 @@ cert_option_list(struct sshauthopt *opts, struct sshbuf *oblob,
134 } 137 }
135 opts->force_command = command; 138 opts->force_command = command;
136 found = 1; 139 found = 1;
137 } 140 } else if (strcmp(name, "source-address") == 0) {
138 if (strcmp(name, "source-address") == 0) {
139 if ((r = sshbuf_get_cstring(data, &allowed, 141 if ((r = sshbuf_get_cstring(data, &allowed,
140 NULL)) != 0) { 142 NULL)) != 0) {
141 error("Unable to parse \"%s\" " 143 error("Unable to parse \"%s\" "
@@ -351,6 +353,8 @@ sshauthopt_parse(const char *opts, const char **errstrp)
351 ret->permit_x11_forwarding_flag = r == 1; 353 ret->permit_x11_forwarding_flag = r == 1;
352 } else if ((r = opt_flag("touch-required", 1, &opts)) != -1) { 354 } else if ((r = opt_flag("touch-required", 1, &opts)) != -1) {
353 ret->no_require_user_presence = r != 1; /* NB. flip */ 355 ret->no_require_user_presence = r != 1; /* NB. flip */
356 } else if ((r = opt_flag("verify-required", 1, &opts)) != -1) {
357 ret->require_verify = r == 1;
354 } else if ((r = opt_flag("pty", 1, &opts)) != -1) { 358 } else if ((r = opt_flag("pty", 1, &opts)) != -1) {
355 ret->permit_pty_flag = r == 1; 359 ret->permit_pty_flag = r == 1;
356 } else if ((r = opt_flag("user-rc", 1, &opts)) != -1) { 360 } else if ((r = opt_flag("user-rc", 1, &opts)) != -1) {
@@ -572,6 +576,7 @@ sshauthopt_merge(const struct sshauthopt *primary,
572 } 576 }
573 577
574#define OPTFLAG_AND(x) ret->x = (primary->x == 1) && (additional->x == 1) 578#define OPTFLAG_AND(x) ret->x = (primary->x == 1) && (additional->x == 1)
579#define OPTFLAG_OR(x) ret->x = (primary->x == 1) || (additional->x == 1)
575 /* Permissive flags are logical-AND (i.e. must be set in both) */ 580 /* Permissive flags are logical-AND (i.e. must be set in both) */
576 OPTFLAG_AND(permit_port_forwarding_flag); 581 OPTFLAG_AND(permit_port_forwarding_flag);
577 OPTFLAG_AND(permit_agent_forwarding_flag); 582 OPTFLAG_AND(permit_agent_forwarding_flag);
@@ -579,6 +584,8 @@ sshauthopt_merge(const struct sshauthopt *primary,
579 OPTFLAG_AND(permit_pty_flag); 584 OPTFLAG_AND(permit_pty_flag);
580 OPTFLAG_AND(permit_user_rc); 585 OPTFLAG_AND(permit_user_rc);
581 OPTFLAG_AND(no_require_user_presence); 586 OPTFLAG_AND(no_require_user_presence);
587 /* Restrictive flags are logical-OR (i.e. must be set in either) */
588 OPTFLAG_OR(require_verify);
582#undef OPTFLAG_AND 589#undef OPTFLAG_AND
583 590
584 /* Earliest expiry time should win */ 591 /* Earliest expiry time should win */
@@ -649,6 +656,7 @@ sshauthopt_copy(const struct sshauthopt *orig)
649 OPTSCALAR(force_tun_device); 656 OPTSCALAR(force_tun_device);
650 OPTSCALAR(valid_before); 657 OPTSCALAR(valid_before);
651 OPTSCALAR(no_require_user_presence); 658 OPTSCALAR(no_require_user_presence);
659 OPTSCALAR(require_verify);
652#undef OPTSCALAR 660#undef OPTSCALAR
653#define OPTSTRING(x) \ 661#define OPTSTRING(x) \
654 do { \ 662 do { \
@@ -781,7 +789,8 @@ sshauthopt_serialise(const struct sshauthopt *opts, struct sshbuf *m,
781 (r = sshbuf_put_u8(m, opts->permit_user_rc)) != 0 || 789 (r = sshbuf_put_u8(m, opts->permit_user_rc)) != 0 ||
782 (r = sshbuf_put_u8(m, opts->restricted)) != 0 || 790 (r = sshbuf_put_u8(m, opts->restricted)) != 0 ||
783 (r = sshbuf_put_u8(m, opts->cert_authority)) != 0 || 791 (r = sshbuf_put_u8(m, opts->cert_authority)) != 0 ||
784 (r = sshbuf_put_u8(m, opts->no_require_user_presence)) != 0) 792 (r = sshbuf_put_u8(m, opts->no_require_user_presence)) != 0 ||
793 (r = sshbuf_put_u8(m, opts->require_verify)) != 0)
785 return r; 794 return r;
786 795
787 /* Simple integer options */ 796 /* Simple integer options */
@@ -844,6 +853,7 @@ sshauthopt_deserialise(struct sshbuf *m, struct sshauthopt **optsp)
844 OPT_FLAG(restricted); 853 OPT_FLAG(restricted);
845 OPT_FLAG(cert_authority); 854 OPT_FLAG(cert_authority);
846 OPT_FLAG(no_require_user_presence); 855 OPT_FLAG(no_require_user_presence);
856 OPT_FLAG(require_verify);
847#undef OPT_FLAG 857#undef OPT_FLAG
848 858
849 /* Simple integer options */ 859 /* Simple integer options */
diff --git a/auth-options.h b/auth-options.h
index d96ffedee..118a32087 100644
--- a/auth-options.h
+++ b/auth-options.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth-options.h,v 1.29 2019/11/25 00:54:23 djm Exp $ */ 1/* $OpenBSD: auth-options.h,v 1.30 2020/08/27 01:07:09 djm Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2018 Damien Miller <djm@mindrot.org> 4 * Copyright (c) 2018 Damien Miller <djm@mindrot.org>
@@ -71,6 +71,8 @@ struct sshauthopt {
71 71
72 /* Key requires user presence asserted */ 72 /* Key requires user presence asserted */
73 int no_require_user_presence; 73 int no_require_user_presence;
74 /* Key requires user verification (e.g. PIN) */
75 int require_verify;
74}; 76};
75 77
76struct sshauthopt *sshauthopt_new(void); 78struct sshauthopt *sshauthopt_new(void);
diff --git a/auth-pam.c b/auth-pam.c
index 5a3ba09b4..832382151 100644
--- a/auth-pam.c
+++ b/auth-pam.c
@@ -375,7 +375,11 @@ import_environments(struct sshbuf *b)
375 error("PAM: pam_putenv: %s", 375 error("PAM: pam_putenv: %s",
376 pam_strerror(sshpam_handle, r)); 376 pam_strerror(sshpam_handle, r));
377 } 377 }
378 /* XXX leak env? */ 378 /*
379 * XXX this possibly leaks env because it is not documented
380 * what pam_putenv() does with it. Does it copy it? Does it
381 * take ownweship? We don't know, so it's safest just to leak.
382 */
379 } 383 }
380#endif 384#endif
381} 385}
diff --git a/auth.c b/auth.c
index aed3c13ac..4152d9c44 100644
--- a/auth.c
+++ b/auth.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth.c,v 1.146 2020/01/31 22:42:45 djm Exp $ */ 1/* $OpenBSD: auth.c,v 1.147 2020/08/27 01:07:09 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * 4 *
@@ -913,21 +913,22 @@ auth_log_authopts(const char *loc, const struct sshauthopt *opts, int do_remote)
913 913
914 snprintf(buf, sizeof(buf), "%d", opts->force_tun_device); 914 snprintf(buf, sizeof(buf), "%d", opts->force_tun_device);
915 /* Try to keep this alphabetically sorted */ 915 /* Try to keep this alphabetically sorted */
916 snprintf(msg, sizeof(msg), "key options:%s%s%s%s%s%s%s%s%s%s%s%s%s%s", 916 snprintf(msg, sizeof(msg), "key options:%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
917 opts->permit_agent_forwarding_flag ? " agent-forwarding" : "", 917 opts->permit_agent_forwarding_flag ? " agent-forwarding" : "",
918 opts->force_command == NULL ? "" : " command", 918 opts->force_command == NULL ? "" : " command",
919 do_env ? " environment" : "", 919 do_env ? " environment" : "",
920 opts->valid_before == 0 ? "" : "expires", 920 opts->valid_before == 0 ? "" : "expires",
921 opts->no_require_user_presence ? " no-touch-required" : "",
921 do_permitopen ? " permitopen" : "", 922 do_permitopen ? " permitopen" : "",
922 do_permitlisten ? " permitlisten" : "", 923 do_permitlisten ? " permitlisten" : "",
923 opts->permit_port_forwarding_flag ? " port-forwarding" : "", 924 opts->permit_port_forwarding_flag ? " port-forwarding" : "",
924 opts->cert_principals == NULL ? "" : " principals", 925 opts->cert_principals == NULL ? "" : " principals",
925 opts->permit_pty_flag ? " pty" : "", 926 opts->permit_pty_flag ? " pty" : "",
927 opts->require_verify ? " uv" : "",
926 opts->force_tun_device == -1 ? "" : " tun=", 928 opts->force_tun_device == -1 ? "" : " tun=",
927 opts->force_tun_device == -1 ? "" : buf, 929 opts->force_tun_device == -1 ? "" : buf,
928 opts->permit_user_rc ? " user-rc" : "", 930 opts->permit_user_rc ? " user-rc" : "",
929 opts->permit_x11_forwarding_flag ? " x11-forwarding" : "", 931 opts->permit_x11_forwarding_flag ? " x11-forwarding" : "");
930 opts->no_require_user_presence ? " no-touch-required" : "");
931 932
932 debug("%s: %s", loc, msg); 933 debug("%s: %s", loc, msg);
933 if (do_remote) 934 if (do_remote)
diff --git a/auth2-pubkey.c b/auth2-pubkey.c
index 815ea0f25..c3ecd9afc 100644
--- a/auth2-pubkey.c
+++ b/auth2-pubkey.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth2-pubkey.c,v 1.99 2020/02/06 22:30:54 naddy Exp $ */ 1/* $OpenBSD: auth2-pubkey.c,v 1.100 2020/08/27 01:07:09 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * 4 *
@@ -97,7 +97,7 @@ userauth_pubkey(struct ssh *ssh)
97 u_char *pkblob = NULL, *sig = NULL, have_sig; 97 u_char *pkblob = NULL, *sig = NULL, have_sig;
98 size_t blen, slen; 98 size_t blen, slen;
99 int r, pktype; 99 int r, pktype;
100 int req_presence = 0, authenticated = 0; 100 int req_presence = 0, req_verify = 0, authenticated = 0;
101 struct sshauthopt *authopts = NULL; 101 struct sshauthopt *authopts = NULL;
102 struct sshkey_sig_details *sig_details = NULL; 102 struct sshkey_sig_details *sig_details = NULL;
103 103
@@ -239,6 +239,20 @@ userauth_pubkey(struct ssh *ssh)
239 authenticated = 0; 239 authenticated = 0;
240 goto done; 240 goto done;
241 } 241 }
242 req_verify = (options.pubkey_auth_options &
243 PUBKEYAUTH_VERIFY_REQUIRED) ||
244 authopts->require_verify;
245 if (req_verify && (sig_details->sk_flags &
246 SSH_SK_USER_VERIFICATION_REQD) == 0) {
247 error("public key %s signature for %s%s from "
248 "%.128s port %d rejected: user "
249 "verification requirement not met ", key_s,
250 authctxt->valid ? "" : "invalid user ",
251 authctxt->user, ssh_remote_ipaddr(ssh),
252 ssh_remote_port(ssh));
253 authenticated = 0;
254 goto done;
255 }
242 } 256 }
243 auth2_record_key(authctxt, authenticated, key); 257 auth2_record_key(authctxt, authenticated, key);
244 } else { 258 } else {
diff --git a/auth2.c b/auth2.c
index 05d6c2447..d8363bdba 100644
--- a/auth2.c
+++ b/auth2.c
@@ -398,20 +398,20 @@ userauth_finish(struct ssh *ssh, int authenticated, const char *method,
398 398
399#ifdef USE_PAM 399#ifdef USE_PAM
400 if (options.use_pam && authenticated) { 400 if (options.use_pam && authenticated) {
401 int r; 401 int r, success = PRIVSEP(do_pam_account());
402 402
403 if (!PRIVSEP(do_pam_account())) { 403 /* If PAM returned a message, send it to the user. */
404 /* if PAM returned a message, send it to the user */ 404 if (sshbuf_len(loginmsg) > 0) {
405 if (sshbuf_len(loginmsg) > 0) { 405 if ((r = sshbuf_put(loginmsg, "\0", 1)) != 0)
406 if ((r = sshbuf_put(loginmsg, "\0", 1)) != 0) 406 fatal("%s: buffer error: %s",
407 fatal("%s: buffer error: %s", 407 __func__, ssh_err(r));
408 __func__, ssh_err(r)); 408 userauth_send_banner(ssh, sshbuf_ptr(loginmsg));
409 userauth_send_banner(ssh, sshbuf_ptr(loginmsg)); 409 if ((r = ssh_packet_write_wait(ssh)) != 0) {
410 if ((r = ssh_packet_write_wait(ssh)) != 0) { 410 sshpkt_fatal(ssh, r,
411 sshpkt_fatal(ssh, r, 411 "%s: send PAM banner", __func__);
412 "%s: send PAM banner", __func__);
413 }
414 } 412 }
413 }
414 if (!success) {
415 fatal("Access denied for user %s by PAM account " 415 fatal("Access denied for user %s by PAM account "
416 "configuration", authctxt->user); 416 "configuration", authctxt->user);
417 } 417 }
diff --git a/authfd.c b/authfd.c
index 4b647a628..8288ef215 100644
--- a/authfd.c
+++ b/authfd.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: authfd.c,v 1.123 2020/03/06 18:24:39 markus Exp $ */ 1/* $OpenBSD: authfd.c,v 1.124 2020/06/26 05:03:36 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -336,7 +336,7 @@ ssh_free_identitylist(struct ssh_identitylist *idl)
336 * Returns 0 if found, or a negative SSH_ERR_* error code on failure. 336 * Returns 0 if found, or a negative SSH_ERR_* error code on failure.
337 */ 337 */
338int 338int
339ssh_agent_has_key(int sock, struct sshkey *key) 339ssh_agent_has_key(int sock, const struct sshkey *key)
340{ 340{
341 int r, ret = SSH_ERR_KEY_NOT_FOUND; 341 int r, ret = SSH_ERR_KEY_NOT_FOUND;
342 size_t i; 342 size_t i;
@@ -534,7 +534,7 @@ ssh_add_identity_constrained(int sock, struct sshkey *key,
534 * This call is intended only for use by ssh-add(1) and like applications. 534 * This call is intended only for use by ssh-add(1) and like applications.
535 */ 535 */
536int 536int
537ssh_remove_identity(int sock, struct sshkey *key) 537ssh_remove_identity(int sock, const struct sshkey *key)
538{ 538{
539 struct sshbuf *msg; 539 struct sshbuf *msg;
540 int r; 540 int r;
diff --git a/authfd.h b/authfd.h
index c3bf6259a..4fbf82f8c 100644
--- a/authfd.h
+++ b/authfd.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: authfd.h,v 1.48 2019/12/21 02:19:13 djm Exp $ */ 1/* $OpenBSD: authfd.h,v 1.49 2020/06/26 05:03:36 djm Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -33,8 +33,8 @@ void ssh_free_identitylist(struct ssh_identitylist *idl);
33int ssh_add_identity_constrained(int sock, struct sshkey *key, 33int ssh_add_identity_constrained(int sock, struct sshkey *key,
34 const char *comment, u_int life, u_int confirm, u_int maxsign, 34 const char *comment, u_int life, u_int confirm, u_int maxsign,
35 const char *provider); 35 const char *provider);
36int ssh_agent_has_key(int sock, struct sshkey *key); 36int ssh_agent_has_key(int sock, const struct sshkey *key);
37int ssh_remove_identity(int sock, struct sshkey *key); 37int ssh_remove_identity(int sock, const struct sshkey *key);
38int ssh_update_card(int sock, int add, const char *reader_id, 38int ssh_update_card(int sock, int add, const char *reader_id,
39 const char *pin, u_int life, u_int confirm); 39 const char *pin, u_int life, u_int confirm);
40int ssh_remove_all_identities(int sock, int version); 40int ssh_remove_all_identities(int sock, int version);
diff --git a/authfile.c b/authfile.c
index 35ccf576c..946f50ca8 100644
--- a/authfile.c
+++ b/authfile.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: authfile.c,v 1.140 2020/04/17 07:15:11 djm Exp $ */ 1/* $OpenBSD: authfile.c,v 1.141 2020/06/18 23:33:38 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000, 2013 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000, 2013 Markus Friedl. All rights reserved.
4 * 4 *
@@ -263,7 +263,7 @@ int
263sshkey_load_public(const char *filename, struct sshkey **keyp, char **commentp) 263sshkey_load_public(const char *filename, struct sshkey **keyp, char **commentp)
264{ 264{
265 char *pubfile = NULL; 265 char *pubfile = NULL;
266 int r; 266 int r, oerrno;
267 267
268 if (keyp != NULL) 268 if (keyp != NULL)
269 *keyp = NULL; 269 *keyp = NULL;
@@ -283,8 +283,14 @@ sshkey_load_public(const char *filename, struct sshkey **keyp, char **commentp)
283 if ((r = sshkey_load_pubkey_from_private(filename, keyp)) == 0) 283 if ((r = sshkey_load_pubkey_from_private(filename, keyp)) == 0)
284 goto out; 284 goto out;
285 285
286 /* Pretend we couldn't find the key */
287 r = SSH_ERR_SYSTEM_ERROR;
288 errno = ENOENT;
289
286 out: 290 out:
291 oerrno = errno;
287 free(pubfile); 292 free(pubfile);
293 errno = oerrno;
288 return r; 294 return r;
289} 295}
290 296
diff --git a/channels.c b/channels.c
index 95a51e21b..e4917f3c9 100644
--- a/channels.c
+++ b/channels.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: channels.c,v 1.398 2020/04/25 06:59:36 dtucker Exp $ */ 1/* $OpenBSD: channels.c,v 1.402 2020/09/20 05:47:25 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -354,6 +354,7 @@ channel_new(struct ssh *ssh, char *ctype, int type, int rfd, int wfd, int efd,
354 struct ssh_channels *sc = ssh->chanctxt; 354 struct ssh_channels *sc = ssh->chanctxt;
355 u_int i, found; 355 u_int i, found;
356 Channel *c; 356 Channel *c;
357 int r;
357 358
358 /* Try to find a free slot where to put the new channel. */ 359 /* Try to find a free slot where to put the new channel. */
359 for (i = 0; i < sc->channels_alloc; i++) { 360 for (i = 0; i < sc->channels_alloc; i++) {
@@ -383,6 +384,8 @@ channel_new(struct ssh *ssh, char *ctype, int type, int rfd, int wfd, int efd,
383 (c->output = sshbuf_new()) == NULL || 384 (c->output = sshbuf_new()) == NULL ||
384 (c->extended = sshbuf_new()) == NULL) 385 (c->extended = sshbuf_new()) == NULL)
385 fatal("%s: sshbuf_new failed", __func__); 386 fatal("%s: sshbuf_new failed", __func__);
387 if ((r = sshbuf_set_max_size(c->input, CHAN_INPUT_MAX)) != 0)
388 fatal("%s: sshbuf_set_max_size: %s", __func__, ssh_err(r));
386 c->ostate = CHAN_OUTPUT_OPEN; 389 c->ostate = CHAN_OUTPUT_OPEN;
387 c->istate = CHAN_INPUT_OPEN; 390 c->istate = CHAN_INPUT_OPEN;
388 channel_register_fds(ssh, c, rfd, wfd, efd, extusage, nonblock, 0); 391 channel_register_fds(ssh, c, rfd, wfd, efd, extusage, nonblock, 0);
@@ -603,6 +606,10 @@ channel_free(struct ssh *ssh, Channel *c)
603 606
604 if (c->type == SSH_CHANNEL_MUX_CLIENT) 607 if (c->type == SSH_CHANNEL_MUX_CLIENT)
605 mux_remove_remote_forwardings(ssh, c); 608 mux_remove_remote_forwardings(ssh, c);
609 else if (c->type == SSH_CHANNEL_MUX_LISTENER) {
610 free(c->mux_ctx);
611 c->mux_ctx = NULL;
612 }
606 613
607 if (log_level_get() >= SYSLOG_LEVEL_DEBUG3) { 614 if (log_level_get() >= SYSLOG_LEVEL_DEBUG3) {
608 s = channel_open_message(ssh); 615 s = channel_open_message(ssh);
diff --git a/channels.h b/channels.h
index c8ae0d904..74e9b3f87 100644
--- a/channels.h
+++ b/channels.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: channels.h,v 1.133 2020/01/25 22:49:38 djm Exp $ */ 1/* $OpenBSD: channels.h,v 1.135 2020/09/20 05:47:25 djm Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -52,11 +52,11 @@
52#define SSH_CHANNEL_DYNAMIC 13 52#define SSH_CHANNEL_DYNAMIC 13
53#define SSH_CHANNEL_ZOMBIE 14 /* Almost dead. */ 53#define SSH_CHANNEL_ZOMBIE 14 /* Almost dead. */
54#define SSH_CHANNEL_MUX_LISTENER 15 /* Listener for mux conn. */ 54#define SSH_CHANNEL_MUX_LISTENER 15 /* Listener for mux conn. */
55#define SSH_CHANNEL_MUX_CLIENT 16 /* Conn. to mux slave */ 55#define SSH_CHANNEL_MUX_CLIENT 16 /* Conn. to mux client */
56#define SSH_CHANNEL_ABANDONED 17 /* Abandoned session, eg mux */ 56#define SSH_CHANNEL_ABANDONED 17 /* Abandoned session, eg mux */
57#define SSH_CHANNEL_UNIX_LISTENER 18 /* Listening on a domain socket. */ 57#define SSH_CHANNEL_UNIX_LISTENER 18 /* Listening on a domain socket. */
58#define SSH_CHANNEL_RUNIX_LISTENER 19 /* Listening to a R-style domain socket. */ 58#define SSH_CHANNEL_RUNIX_LISTENER 19 /* Listening to a R-style domain socket. */
59#define SSH_CHANNEL_MUX_PROXY 20 /* proxy channel for mux-slave */ 59#define SSH_CHANNEL_MUX_PROXY 20 /* proxy channel for mux-client */
60#define SSH_CHANNEL_RDYNAMIC_OPEN 21 /* reverse SOCKS, parsing request */ 60#define SSH_CHANNEL_RDYNAMIC_OPEN 21 /* reverse SOCKS, parsing request */
61#define SSH_CHANNEL_RDYNAMIC_FINISH 22 /* reverse SOCKS, finishing connect */ 61#define SSH_CHANNEL_RDYNAMIC_FINISH 22 /* reverse SOCKS, finishing connect */
62#define SSH_CHANNEL_MAX_TYPE 23 62#define SSH_CHANNEL_MAX_TYPE 23
@@ -223,6 +223,9 @@ struct Channel {
223/* Read buffer size */ 223/* Read buffer size */
224#define CHAN_RBUF (16*1024) 224#define CHAN_RBUF (16*1024)
225 225
226/* Maximum channel input buffer size */
227#define CHAN_INPUT_MAX (16*1024*1024)
228
226/* Hard limit on number of channels */ 229/* Hard limit on number of channels */
227#define CHANNELS_MAX_CHANNELS (16*1024) 230#define CHANNELS_MAX_CHANNELS (16*1024)
228 231
diff --git a/clientloop.c b/clientloop.c
index 42ace7789..2cebea29f 100644
--- a/clientloop.c
+++ b/clientloop.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: clientloop.c,v 1.344 2020/04/24 02:19:40 dtucker Exp $ */ 1/* $OpenBSD: clientloop.c,v 1.346 2020/09/16 03:07:31 dtucker Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -166,6 +166,7 @@ static int connection_out; /* Connection to server (output). */
166static int need_rekeying; /* Set to non-zero if rekeying is requested. */ 166static int need_rekeying; /* Set to non-zero if rekeying is requested. */
167static int session_closed; /* In SSH2: login session closed. */ 167static int session_closed; /* In SSH2: login session closed. */
168static u_int x11_refuse_time; /* If >0, refuse x11 opens after this time. */ 168static u_int x11_refuse_time; /* If >0, refuse x11 opens after this time. */
169static time_t server_alive_time; /* Time to do server_alive_check */
169 170
170static void client_init_dispatch(struct ssh *ssh); 171static void client_init_dispatch(struct ssh *ssh);
171int session_ident = -1; 172int session_ident = -1;
@@ -471,6 +472,13 @@ client_global_request_reply(int type, u_int32_t seq, struct ssh *ssh)
471} 472}
472 473
473static void 474static void
475schedule_server_alive_check(void)
476{
477 if (options.server_alive_interval > 0)
478 server_alive_time = monotime() + options.server_alive_interval;
479}
480
481static void
474server_alive_check(struct ssh *ssh) 482server_alive_check(struct ssh *ssh)
475{ 483{
476 int r; 484 int r;
@@ -486,6 +494,7 @@ server_alive_check(struct ssh *ssh)
486 fatal("%s: send packet: %s", __func__, ssh_err(r)); 494 fatal("%s: send packet: %s", __func__, ssh_err(r));
487 /* Insert an empty placeholder to maintain ordering */ 495 /* Insert an empty placeholder to maintain ordering */
488 client_register_global_confirm(NULL, NULL); 496 client_register_global_confirm(NULL, NULL);
497 schedule_server_alive_check();
489} 498}
490 499
491/* 500/*
@@ -499,7 +508,7 @@ client_wait_until_can_do_something(struct ssh *ssh,
499{ 508{
500 struct timeval tv, *tvp; 509 struct timeval tv, *tvp;
501 int timeout_secs; 510 int timeout_secs;
502 time_t minwait_secs = 0, server_alive_time = 0, now = monotime(); 511 time_t minwait_secs = 0, now = monotime();
503 int r, ret; 512 int r, ret;
504 513
505 /* Add any selections by the channel mechanism. */ 514 /* Add any selections by the channel mechanism. */
@@ -528,10 +537,8 @@ client_wait_until_can_do_something(struct ssh *ssh,
528 */ 537 */
529 538
530 timeout_secs = INT_MAX; /* we use INT_MAX to mean no timeout */ 539 timeout_secs = INT_MAX; /* we use INT_MAX to mean no timeout */
531 if (options.server_alive_interval > 0) { 540 if (options.server_alive_interval > 0)
532 timeout_secs = options.server_alive_interval; 541 timeout_secs = MAXIMUM(server_alive_time - now, 0);
533 server_alive_time = now + options.server_alive_interval;
534 }
535 if (options.rekey_interval > 0 && !rekeying) 542 if (options.rekey_interval > 0 && !rekeying)
536 timeout_secs = MINIMUM(timeout_secs, 543 timeout_secs = MINIMUM(timeout_secs,
537 ssh_packet_get_rekey_timeout(ssh)); 544 ssh_packet_get_rekey_timeout(ssh));
@@ -561,7 +568,6 @@ client_wait_until_can_do_something(struct ssh *ssh,
561 */ 568 */
562 memset(*readsetp, 0, *nallocp); 569 memset(*readsetp, 0, *nallocp);
563 memset(*writesetp, 0, *nallocp); 570 memset(*writesetp, 0, *nallocp);
564
565 if (errno == EINTR) 571 if (errno == EINTR)
566 return; 572 return;
567 /* Note: we might still have data in the buffers. */ 573 /* Note: we might still have data in the buffers. */
@@ -569,15 +575,14 @@ client_wait_until_can_do_something(struct ssh *ssh,
569 "select: %s\r\n", strerror(errno))) != 0) 575 "select: %s\r\n", strerror(errno))) != 0)
570 fatal("%s: buffer error: %s", __func__, ssh_err(r)); 576 fatal("%s: buffer error: %s", __func__, ssh_err(r));
571 quit_pending = 1; 577 quit_pending = 1;
572 } else if (ret == 0) { 578 } else if (options.server_alive_interval > 0 && !FD_ISSET(connection_in,
579 *readsetp) && monotime() >= server_alive_time)
573 /* 580 /*
574 * Timeout. Could have been either keepalive or rekeying. 581 * ServerAlive check is needed. We can't rely on the select
575 * Keepalive we check here, rekeying is checked in clientloop. 582 * timing out since traffic on the client side such as port
583 * forwards can keep waking it up.
576 */ 584 */
577 if (server_alive_time != 0 && server_alive_time <= monotime()) 585 server_alive_check(ssh);
578 server_alive_check(ssh);
579 }
580
581} 586}
582 587
583static void 588static void
@@ -617,6 +622,7 @@ client_process_net_input(struct ssh *ssh, fd_set *readset)
617 * the packet subsystem. 622 * the packet subsystem.
618 */ 623 */
619 if (FD_ISSET(connection_in, readset)) { 624 if (FD_ISSET(connection_in, readset)) {
625 schedule_server_alive_check();
620 /* Read as much as possible. */ 626 /* Read as much as possible. */
621 len = read(connection_in, buf, sizeof(buf)); 627 len = read(connection_in, buf, sizeof(buf));
622 if (len == 0) { 628 if (len == 0) {
@@ -1236,7 +1242,6 @@ client_loop(struct ssh *ssh, int have_pty, int escape_char_arg,
1236 int r, max_fd = 0, max_fd2 = 0, len; 1242 int r, max_fd = 0, max_fd2 = 0, len;
1237 u_int64_t ibytes, obytes; 1243 u_int64_t ibytes, obytes;
1238 u_int nalloc = 0; 1244 u_int nalloc = 0;
1239 char buf[100];
1240 1245
1241 debug("Entering interactive session."); 1246 debug("Entering interactive session.");
1242 1247
@@ -1318,6 +1323,8 @@ client_loop(struct ssh *ssh, int have_pty, int escape_char_arg,
1318 client_channel_closed, 0); 1323 client_channel_closed, 0);
1319 } 1324 }
1320 1325
1326 schedule_server_alive_check();
1327
1321 /* Main loop of the client for the interactive session mode. */ 1328 /* Main loop of the client for the interactive session mode. */
1322 while (!quit_pending) { 1329 while (!quit_pending) {
1323 1330
@@ -1472,7 +1479,6 @@ client_loop(struct ssh *ssh, int have_pty, int escape_char_arg,
1472 } 1479 }
1473 1480
1474 /* Clear and free any buffers. */ 1481 /* Clear and free any buffers. */
1475 explicit_bzero(buf, sizeof(buf));
1476 sshbuf_free(stderr_buffer); 1482 sshbuf_free(stderr_buffer);
1477 1483
1478 /* Report bytes transferred, and transfer rates. */ 1484 /* Report bytes transferred, and transfer rates. */
diff --git a/compat.c b/compat.c
index 0624dc6de..dec8e7e93 100644
--- a/compat.c
+++ b/compat.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: compat.c,v 1.113 2018/08/13 02:41:05 djm Exp $ */ 1/* $OpenBSD: compat.c,v 1.115 2020/07/05 23:59:45 djm Exp $ */
2/* 2/*
3 * Copyright (c) 1999, 2000, 2001, 2002 Markus Friedl. All rights reserved. 3 * Copyright (c) 1999, 2000, 2001, 2002 Markus Friedl. All rights reserved.
4 * 4 *
@@ -157,40 +157,14 @@ compat_datafellows(const char *version)
157 return 0; 157 return 0;
158} 158}
159 159
160#define SEP ","
161int
162proto_spec(const char *spec)
163{
164 char *s, *p, *q;
165 int ret = SSH_PROTO_UNKNOWN;
166
167 if (spec == NULL)
168 return ret;
169 q = s = strdup(spec);
170 if (s == NULL)
171 return ret;
172 for ((p = strsep(&q, SEP)); p && *p != '\0'; (p = strsep(&q, SEP))) {
173 switch (atoi(p)) {
174 case 2:
175 ret |= SSH_PROTO_2;
176 break;
177 default:
178 logit("ignoring bad proto spec: '%s'.", p);
179 break;
180 }
181 }
182 free(s);
183 return ret;
184}
185
186char * 160char *
187compat_cipher_proposal(char *cipher_prop) 161compat_cipher_proposal(char *cipher_prop)
188{ 162{
189 if (!(datafellows & SSH_BUG_BIGENDIANAES)) 163 if (!(datafellows & SSH_BUG_BIGENDIANAES))
190 return cipher_prop; 164 return cipher_prop;
191 debug2("%s: original cipher proposal: %s", __func__, cipher_prop); 165 debug2("%s: original cipher proposal: %s", __func__, cipher_prop);
192 if ((cipher_prop = match_filter_blacklist(cipher_prop, "aes*")) == NULL) 166 if ((cipher_prop = match_filter_denylist(cipher_prop, "aes*")) == NULL)
193 fatal("match_filter_blacklist failed"); 167 fatal("match_filter_denylist failed");
194 debug2("%s: compat cipher proposal: %s", __func__, cipher_prop); 168 debug2("%s: compat cipher proposal: %s", __func__, cipher_prop);
195 if (*cipher_prop == '\0') 169 if (*cipher_prop == '\0')
196 fatal("No supported ciphers found"); 170 fatal("No supported ciphers found");
@@ -203,8 +177,8 @@ compat_pkalg_proposal(char *pkalg_prop)
203 if (!(datafellows & SSH_BUG_RSASIGMD5)) 177 if (!(datafellows & SSH_BUG_RSASIGMD5))
204 return pkalg_prop; 178 return pkalg_prop;
205 debug2("%s: original public key proposal: %s", __func__, pkalg_prop); 179 debug2("%s: original public key proposal: %s", __func__, pkalg_prop);
206 if ((pkalg_prop = match_filter_blacklist(pkalg_prop, "ssh-rsa")) == NULL) 180 if ((pkalg_prop = match_filter_denylist(pkalg_prop, "ssh-rsa")) == NULL)
207 fatal("match_filter_blacklist failed"); 181 fatal("match_filter_denylist failed");
208 debug2("%s: compat public key proposal: %s", __func__, pkalg_prop); 182 debug2("%s: compat public key proposal: %s", __func__, pkalg_prop);
209 if (*pkalg_prop == '\0') 183 if (*pkalg_prop == '\0')
210 fatal("No supported PK algorithms found"); 184 fatal("No supported PK algorithms found");
@@ -218,14 +192,14 @@ compat_kex_proposal(char *p)
218 return p; 192 return p;
219 debug2("%s: original KEX proposal: %s", __func__, p); 193 debug2("%s: original KEX proposal: %s", __func__, p);
220 if ((datafellows & SSH_BUG_CURVE25519PAD) != 0) 194 if ((datafellows & SSH_BUG_CURVE25519PAD) != 0)
221 if ((p = match_filter_blacklist(p, 195 if ((p = match_filter_denylist(p,
222 "curve25519-sha256@libssh.org")) == NULL) 196 "curve25519-sha256@libssh.org")) == NULL)
223 fatal("match_filter_blacklist failed"); 197 fatal("match_filter_denylist failed");
224 if ((datafellows & SSH_OLD_DHGEX) != 0) { 198 if ((datafellows & SSH_OLD_DHGEX) != 0) {
225 if ((p = match_filter_blacklist(p, 199 if ((p = match_filter_denylist(p,
226 "diffie-hellman-group-exchange-sha256," 200 "diffie-hellman-group-exchange-sha256,"
227 "diffie-hellman-group-exchange-sha1")) == NULL) 201 "diffie-hellman-group-exchange-sha1")) == NULL)
228 fatal("match_filter_blacklist failed"); 202 fatal("match_filter_denylist failed");
229 } 203 }
230 debug2("%s: compat KEX proposal: %s", __func__, p); 204 debug2("%s: compat KEX proposal: %s", __func__, p);
231 if (*p == '\0') 205 if (*p == '\0')
diff --git a/compat.h b/compat.h
index d611d33e7..66db42cc0 100644
--- a/compat.h
+++ b/compat.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: compat.h,v 1.54 2018/08/13 02:41:05 djm Exp $ */ 1/* $OpenBSD: compat.h,v 1.55 2020/06/01 07:11:38 dtucker Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 1999, 2000, 2001 Markus Friedl. All rights reserved. 4 * Copyright (c) 1999, 2000, 2001 Markus Friedl. All rights reserved.
@@ -27,11 +27,6 @@
27#ifndef COMPAT_H 27#ifndef COMPAT_H
28#define COMPAT_H 28#define COMPAT_H
29 29
30#define SSH_PROTO_UNKNOWN 0x00
31#define SSH_PROTO_1 0x01
32#define SSH_PROTO_1_PREFERRED 0x02
33#define SSH_PROTO_2 0x04
34
35#define SSH_BUG_UTF8TTYMODE 0x00000001 30#define SSH_BUG_UTF8TTYMODE 0x00000001
36#define SSH_BUG_SIGTYPE 0x00000002 31#define SSH_BUG_SIGTYPE 0x00000002
37/* #define unused 0x00000004 */ 32/* #define unused 0x00000004 */
@@ -64,7 +59,6 @@
64#define SSH_BUG_DHGEX_LARGE 0x40000000 59#define SSH_BUG_DHGEX_LARGE 0x40000000
65 60
66u_int compat_datafellows(const char *); 61u_int compat_datafellows(const char *);
67int proto_spec(const char *);
68char *compat_cipher_proposal(char *); 62char *compat_cipher_proposal(char *);
69char *compat_pkalg_proposal(char *); 63char *compat_pkalg_proposal(char *);
70char *compat_kex_proposal(char *); 64char *compat_kex_proposal(char *);
diff --git a/config.h.in b/config.h.in
index 6af4bfdd1..18e0b90c2 100644
--- a/config.h.in
+++ b/config.h.in
@@ -573,6 +573,21 @@
573/* Define to 1 if you have the <features.h> header file. */ 573/* Define to 1 if you have the <features.h> header file. */
574#undef HAVE_FEATURES_H 574#undef HAVE_FEATURES_H
575 575
576/* Define to 1 if you have the `fido_cred_prot' function. */
577#undef HAVE_FIDO_CRED_PROT
578
579/* Define to 1 if you have the `fido_cred_set_prot' function. */
580#undef HAVE_FIDO_CRED_SET_PROT
581
582/* Define to 1 if you have the `fido_dev_get_touch_begin' function. */
583#undef HAVE_FIDO_DEV_GET_TOUCH_BEGIN
584
585/* Define to 1 if you have the `fido_dev_get_touch_status' function. */
586#undef HAVE_FIDO_DEV_GET_TOUCH_STATUS
587
588/* Define to 1 if you have the `fido_dev_supports_cred_prot' function. */
589#undef HAVE_FIDO_DEV_SUPPORTS_CRED_PROT
590
576/* Define to 1 if you have the <floatingpoint.h> header file. */ 591/* Define to 1 if you have the <floatingpoint.h> header file. */
577#undef HAVE_FLOATINGPOINT_H 592#undef HAVE_FLOATINGPOINT_H
578 593
@@ -1275,6 +1290,9 @@
1275/* Fields in struct sockaddr_storage */ 1290/* Fields in struct sockaddr_storage */
1276#undef HAVE_SS_FAMILY_IN_SS 1291#undef HAVE_SS_FAMILY_IN_SS
1277 1292
1293/* Define if you have ut_ss in utmpx.h */
1294#undef HAVE_SS_IN_UTMPX
1295
1278/* Define to 1 if you have the `statfs' function. */ 1296/* Define to 1 if you have the `statfs' function. */
1279#undef HAVE_STATFS 1297#undef HAVE_STATFS
1280 1298
@@ -1856,6 +1874,9 @@
1856/* The size of `short int', as computed by sizeof. */ 1874/* The size of `short int', as computed by sizeof. */
1857#undef SIZEOF_SHORT_INT 1875#undef SIZEOF_SHORT_INT
1858 1876
1877/* The size of `size_t', as computed by sizeof. */
1878#undef SIZEOF_SIZE_T
1879
1859/* Define as const if snprintf() can declare const char *fmt */ 1880/* Define as const if snprintf() can declare const char *fmt */
1860#undef SNPRINTF_CONST 1881#undef SNPRINTF_CONST
1861 1882
diff --git a/configure b/configure
index d2465270a..57b261503 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,4 @@
1#! /bin/sh 1#! /bin/sh
2# From configure.ac Revision: 1.583 .
3# Guess values for system-dependent variables and create Makefiles. 2# Guess values for system-dependent variables and create Makefiles.
4# Generated by GNU Autoconf 2.69 for OpenSSH Portable. 3# Generated by GNU Autoconf 2.69 for OpenSSH Portable.
5# 4#
@@ -643,7 +642,6 @@ K5LIBS
643GSSLIBS 642GSSLIBS
644KRB5CONF 643KRB5CONF
645SSHDLIBS 644SSHDLIBS
646SSHLIBS
647SSH_PRIVSEP_USER 645SSH_PRIVSEP_USER
648LIBFIDO2 646LIBFIDO2
649SK_DUMMY_LIBRARY 647SK_DUMMY_LIBRARY
@@ -667,7 +665,6 @@ NROFF
667GROFF 665GROFF
668SH 666SH
669TEST_MINUS_S_SH 667TEST_MINUS_S_SH
670ENT
671SED 668SED
672KILL 669KILL
673CAT 670CAT
@@ -716,6 +713,7 @@ infodir
716docdir 713docdir
717oldincludedir 714oldincludedir
718includedir 715includedir
716runstatedir
719localstatedir 717localstatedir
720sharedstatedir 718sharedstatedir
721sysconfdir 719sysconfdir
@@ -845,6 +843,7 @@ datadir='${datarootdir}'
845sysconfdir='${prefix}/etc' 843sysconfdir='${prefix}/etc'
846sharedstatedir='${prefix}/com' 844sharedstatedir='${prefix}/com'
847localstatedir='${prefix}/var' 845localstatedir='${prefix}/var'
846runstatedir='${localstatedir}/run'
848includedir='${prefix}/include' 847includedir='${prefix}/include'
849oldincludedir='/usr/include' 848oldincludedir='/usr/include'
850docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' 849docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1097,6 +1096,15 @@ do
1097 | -silent | --silent | --silen | --sile | --sil) 1096 | -silent | --silent | --silen | --sile | --sil)
1098 silent=yes ;; 1097 silent=yes ;;
1099 1098
1099 -runstatedir | --runstatedir | --runstatedi | --runstated \
1100 | --runstate | --runstat | --runsta | --runst | --runs \
1101 | --run | --ru | --r)
1102 ac_prev=runstatedir ;;
1103 -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
1104 | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
1105 | --run=* | --ru=* | --r=*)
1106 runstatedir=$ac_optarg ;;
1107
1100 -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) 1108 -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
1101 ac_prev=sbindir ;; 1109 ac_prev=sbindir ;;
1102 -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ 1110 -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1234,7 +1242,7 @@ fi
1234for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ 1242for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
1235 datadir sysconfdir sharedstatedir localstatedir includedir \ 1243 datadir sysconfdir sharedstatedir localstatedir includedir \
1236 oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ 1244 oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
1237 libdir localedir mandir 1245 libdir localedir mandir runstatedir
1238do 1246do
1239 eval ac_val=\$$ac_var 1247 eval ac_val=\$$ac_var
1240 # Remove trailing slashes. 1248 # Remove trailing slashes.
@@ -1387,6 +1395,7 @@ Fine tuning of the installation directories:
1387 --sysconfdir=DIR read-only single-machine data [PREFIX/etc] 1395 --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
1388 --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] 1396 --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
1389 --localstatedir=DIR modifiable single-machine data [PREFIX/var] 1397 --localstatedir=DIR modifiable single-machine data [PREFIX/var]
1398 --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
1390 --libdir=DIR object code libraries [EPREFIX/lib] 1399 --libdir=DIR object code libraries [EPREFIX/lib]
1391 --includedir=DIR C header files [PREFIX/include] 1400 --includedir=DIR C header files [PREFIX/include]
1392 --oldincludedir=DIR C header files for non-gcc [/usr/include] 1401 --oldincludedir=DIR C header files for non-gcc [/usr/include]
@@ -1905,127 +1914,6 @@ fi
1905 1914
1906} # ac_fn_c_check_header_mongrel 1915} # ac_fn_c_check_header_mongrel
1907 1916
1908# ac_fn_c_check_func LINENO FUNC VAR
1909# ----------------------------------
1910# Tests whether FUNC exists, setting the cache variable VAR accordingly
1911ac_fn_c_check_func ()
1912{
1913 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1914 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
1915$as_echo_n "checking for $2... " >&6; }
1916if eval \${$3+:} false; then :
1917 $as_echo_n "(cached) " >&6
1918else
1919 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1920/* end confdefs.h. */
1921/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
1922 For example, HP-UX 11i <limits.h> declares gettimeofday. */
1923#define $2 innocuous_$2
1924
1925/* System header to define __stub macros and hopefully few prototypes,
1926 which can conflict with char $2 (); below.
1927 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
1928 <limits.h> exists even on freestanding compilers. */
1929
1930#ifdef __STDC__
1931# include <limits.h>
1932#else
1933# include <assert.h>
1934#endif
1935
1936#undef $2
1937
1938/* Override any GCC internal prototype to avoid an error.
1939 Use char because int might match the return type of a GCC
1940 builtin and then its argument prototype would still apply. */
1941#ifdef __cplusplus
1942extern "C"
1943#endif
1944char $2 ();
1945/* The GNU C library defines this for functions which it implements
1946 to always fail with ENOSYS. Some functions are actually named
1947 something starting with __ and the normal name is an alias. */
1948#if defined __stub_$2 || defined __stub___$2
1949choke me
1950#endif
1951
1952int
1953main ()
1954{
1955return $2 ();
1956 ;
1957 return 0;
1958}
1959_ACEOF
1960if ac_fn_c_try_link "$LINENO"; then :
1961 eval "$3=yes"
1962else
1963 eval "$3=no"
1964fi
1965rm -f core conftest.err conftest.$ac_objext \
1966 conftest$ac_exeext conftest.$ac_ext
1967fi
1968eval ac_res=\$$3
1969 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
1970$as_echo "$ac_res" >&6; }
1971 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1972
1973} # ac_fn_c_check_func
1974
1975# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
1976# -------------------------------------------
1977# Tests whether TYPE exists after having included INCLUDES, setting cache
1978# variable VAR accordingly.
1979ac_fn_c_check_type ()
1980{
1981 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1982 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
1983$as_echo_n "checking for $2... " >&6; }
1984if eval \${$3+:} false; then :
1985 $as_echo_n "(cached) " >&6
1986else
1987 eval "$3=no"
1988 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1989/* end confdefs.h. */
1990$4
1991int
1992main ()
1993{
1994if (sizeof ($2))
1995 return 0;
1996 ;
1997 return 0;
1998}
1999_ACEOF
2000if ac_fn_c_try_compile "$LINENO"; then :
2001 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2002/* end confdefs.h. */
2003$4
2004int
2005main ()
2006{
2007if (sizeof (($2)))
2008 return 0;
2009 ;
2010 return 0;
2011}
2012_ACEOF
2013if ac_fn_c_try_compile "$LINENO"; then :
2014
2015else
2016 eval "$3=yes"
2017fi
2018rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
2019fi
2020rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
2021fi
2022eval ac_res=\$$3
2023 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
2024$as_echo "$ac_res" >&6; }
2025 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
2026
2027} # ac_fn_c_check_type
2028
2029# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES 1917# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
2030# -------------------------------------------- 1918# --------------------------------------------
2031# Tries to find the compile-time value of EXPR in a program that includes 1919# Tries to find the compile-time value of EXPR in a program that includes
@@ -2209,6 +2097,127 @@ rm -f conftest.val
2209 2097
2210} # ac_fn_c_compute_int 2098} # ac_fn_c_compute_int
2211 2099
2100# ac_fn_c_check_func LINENO FUNC VAR
2101# ----------------------------------
2102# Tests whether FUNC exists, setting the cache variable VAR accordingly
2103ac_fn_c_check_func ()
2104{
2105 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
2106 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
2107$as_echo_n "checking for $2... " >&6; }
2108if eval \${$3+:} false; then :
2109 $as_echo_n "(cached) " >&6
2110else
2111 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2112/* end confdefs.h. */
2113/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
2114 For example, HP-UX 11i <limits.h> declares gettimeofday. */
2115#define $2 innocuous_$2
2116
2117/* System header to define __stub macros and hopefully few prototypes,
2118 which can conflict with char $2 (); below.
2119 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
2120 <limits.h> exists even on freestanding compilers. */
2121
2122#ifdef __STDC__
2123# include <limits.h>
2124#else
2125# include <assert.h>
2126#endif
2127
2128#undef $2
2129
2130/* Override any GCC internal prototype to avoid an error.
2131 Use char because int might match the return type of a GCC
2132 builtin and then its argument prototype would still apply. */
2133#ifdef __cplusplus
2134extern "C"
2135#endif
2136char $2 ();
2137/* The GNU C library defines this for functions which it implements
2138 to always fail with ENOSYS. Some functions are actually named
2139 something starting with __ and the normal name is an alias. */
2140#if defined __stub_$2 || defined __stub___$2
2141choke me
2142#endif
2143
2144int
2145main ()
2146{
2147return $2 ();
2148 ;
2149 return 0;
2150}
2151_ACEOF
2152if ac_fn_c_try_link "$LINENO"; then :
2153 eval "$3=yes"
2154else
2155 eval "$3=no"
2156fi
2157rm -f core conftest.err conftest.$ac_objext \
2158 conftest$ac_exeext conftest.$ac_ext
2159fi
2160eval ac_res=\$$3
2161 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
2162$as_echo "$ac_res" >&6; }
2163 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
2164
2165} # ac_fn_c_check_func
2166
2167# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
2168# -------------------------------------------
2169# Tests whether TYPE exists after having included INCLUDES, setting cache
2170# variable VAR accordingly.
2171ac_fn_c_check_type ()
2172{
2173 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
2174 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
2175$as_echo_n "checking for $2... " >&6; }
2176if eval \${$3+:} false; then :
2177 $as_echo_n "(cached) " >&6
2178else
2179 eval "$3=no"
2180 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2181/* end confdefs.h. */
2182$4
2183int
2184main ()
2185{
2186if (sizeof ($2))
2187 return 0;
2188 ;
2189 return 0;
2190}
2191_ACEOF
2192if ac_fn_c_try_compile "$LINENO"; then :
2193 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
2194/* end confdefs.h. */
2195$4
2196int
2197main ()
2198{
2199if (sizeof (($2)))
2200 return 0;
2201 ;
2202 return 0;
2203}
2204_ACEOF
2205if ac_fn_c_try_compile "$LINENO"; then :
2206
2207else
2208 eval "$3=yes"
2209fi
2210rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
2211fi
2212rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
2213fi
2214eval ac_res=\$$3
2215 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
2216$as_echo "$ac_res" >&6; }
2217 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
2218
2219} # ac_fn_c_check_type
2220
2212# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES 2221# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
2213# ---------------------------------------------------- 2222# ----------------------------------------------------
2214# Tries to find if the field MEMBER exists in type AGGR, after including 2223# Tries to find if the field MEMBER exists in type AGGR, after including
@@ -4642,47 +4651,6 @@ $as_echo "no" >&6; }
4642fi 4651fi
4643 4652
4644 4653
4645# Extract the first word of "ent", so it can be a program name with args.
4646set dummy ent; ac_word=$2
4647{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4648$as_echo_n "checking for $ac_word... " >&6; }
4649if ${ac_cv_path_ENT+:} false; then :
4650 $as_echo_n "(cached) " >&6
4651else
4652 case $ENT in
4653 [\\/]* | ?:[\\/]*)
4654 ac_cv_path_ENT="$ENT" # Let the user override the test with a path.
4655 ;;
4656 *)
4657 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4658for as_dir in $PATH
4659do
4660 IFS=$as_save_IFS
4661 test -z "$as_dir" && as_dir=.
4662 for ac_exec_ext in '' $ac_executable_extensions; do
4663 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4664 ac_cv_path_ENT="$as_dir/$ac_word$ac_exec_ext"
4665 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4666 break 2
4667 fi
4668done
4669 done
4670IFS=$as_save_IFS
4671
4672 ;;
4673esac
4674fi
4675ENT=$ac_cv_path_ENT
4676if test -n "$ENT"; then
4677 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ENT" >&5
4678$as_echo "$ENT" >&6; }
4679else
4680 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4681$as_echo "no" >&6; }
4682fi
4683
4684
4685
4686# Extract the first word of "bash", so it can be a program name with args. 4654# Extract the first word of "bash", so it can be a program name with args.
4687set dummy bash; ac_word=$2 4655set dummy bash; ac_word=$2
4688{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 4656{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -5534,12 +5502,23 @@ $as_echo_n "checking if $CC supports compile flag -pipe... " >&6; }
5534#include <stdlib.h> 5502#include <stdlib.h>
5535#include <stdio.h> 5503#include <stdio.h>
5536int main(int argc, char **argv) { 5504int main(int argc, char **argv) {
5505 (void)argv;
5537 /* Some math to catch -ftrapv problems in the toolchain */ 5506 /* Some math to catch -ftrapv problems in the toolchain */
5538 int i = 123 * argc, j = 456 + argc, k = 789 - argc; 5507 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
5539 float l = i * 2.1; 5508 float l = i * 2.1;
5540 double m = l / 0.5; 5509 double m = l / 0.5;
5541 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; 5510 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
5542 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); 5511 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o);
5512 /*
5513 * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does
5514 * not understand comments and we don't use the "fallthrough" attribute
5515 * that it's looking for.
5516 */
5517 switch(i){
5518 case 0: j += i;
5519 /* FALLTHROUGH */
5520 default: j += k;
5521 }
5543 exit(0); 5522 exit(0);
5544} 5523}
5545 5524
@@ -5577,12 +5556,23 @@ $as_echo_n "checking if $CC supports compile flag -Wunknown-warning-option... "
5577#include <stdlib.h> 5556#include <stdlib.h>
5578#include <stdio.h> 5557#include <stdio.h>
5579int main(int argc, char **argv) { 5558int main(int argc, char **argv) {
5559 (void)argv;
5580 /* Some math to catch -ftrapv problems in the toolchain */ 5560 /* Some math to catch -ftrapv problems in the toolchain */
5581 int i = 123 * argc, j = 456 + argc, k = 789 - argc; 5561 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
5582 float l = i * 2.1; 5562 float l = i * 2.1;
5583 double m = l / 0.5; 5563 double m = l / 0.5;
5584 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; 5564 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
5585 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); 5565 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o);
5566 /*
5567 * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does
5568 * not understand comments and we don't use the "fallthrough" attribute
5569 * that it's looking for.
5570 */
5571 switch(i){
5572 case 0: j += i;
5573 /* FALLTHROUGH */
5574 default: j += k;
5575 }
5586 exit(0); 5576 exit(0);
5587} 5577}
5588 5578
@@ -5620,12 +5610,23 @@ $as_echo_n "checking if $CC supports compile flag -Wno-error=format-truncation..
5620#include <stdlib.h> 5610#include <stdlib.h>
5621#include <stdio.h> 5611#include <stdio.h>
5622int main(int argc, char **argv) { 5612int main(int argc, char **argv) {
5613 (void)argv;
5623 /* Some math to catch -ftrapv problems in the toolchain */ 5614 /* Some math to catch -ftrapv problems in the toolchain */
5624 int i = 123 * argc, j = 456 + argc, k = 789 - argc; 5615 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
5625 float l = i * 2.1; 5616 float l = i * 2.1;
5626 double m = l / 0.5; 5617 double m = l / 0.5;
5627 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; 5618 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
5628 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); 5619 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o);
5620 /*
5621 * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does
5622 * not understand comments and we don't use the "fallthrough" attribute
5623 * that it's looking for.
5624 */
5625 switch(i){
5626 case 0: j += i;
5627 /* FALLTHROUGH */
5628 default: j += k;
5629 }
5629 exit(0); 5630 exit(0);
5630} 5631}
5631 5632
@@ -5663,12 +5664,23 @@ $as_echo_n "checking if $CC supports compile flag -Qunused-arguments... " >&6; }
5663#include <stdlib.h> 5664#include <stdlib.h>
5664#include <stdio.h> 5665#include <stdio.h>
5665int main(int argc, char **argv) { 5666int main(int argc, char **argv) {
5667 (void)argv;
5666 /* Some math to catch -ftrapv problems in the toolchain */ 5668 /* Some math to catch -ftrapv problems in the toolchain */
5667 int i = 123 * argc, j = 456 + argc, k = 789 - argc; 5669 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
5668 float l = i * 2.1; 5670 float l = i * 2.1;
5669 double m = l / 0.5; 5671 double m = l / 0.5;
5670 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; 5672 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
5671 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); 5673 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o);
5674 /*
5675 * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does
5676 * not understand comments and we don't use the "fallthrough" attribute
5677 * that it's looking for.
5678 */
5679 switch(i){
5680 case 0: j += i;
5681 /* FALLTHROUGH */
5682 default: j += k;
5683 }
5672 exit(0); 5684 exit(0);
5673} 5685}
5674 5686
@@ -5706,12 +5718,23 @@ $as_echo_n "checking if $CC supports compile flag -Wall... " >&6; }
5706#include <stdlib.h> 5718#include <stdlib.h>
5707#include <stdio.h> 5719#include <stdio.h>
5708int main(int argc, char **argv) { 5720int main(int argc, char **argv) {
5721 (void)argv;
5709 /* Some math to catch -ftrapv problems in the toolchain */ 5722 /* Some math to catch -ftrapv problems in the toolchain */
5710 int i = 123 * argc, j = 456 + argc, k = 789 - argc; 5723 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
5711 float l = i * 2.1; 5724 float l = i * 2.1;
5712 double m = l / 0.5; 5725 double m = l / 0.5;
5713 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; 5726 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
5714 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); 5727 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o);
5728 /*
5729 * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does
5730 * not understand comments and we don't use the "fallthrough" attribute
5731 * that it's looking for.
5732 */
5733 switch(i){
5734 case 0: j += i;
5735 /* FALLTHROUGH */
5736 default: j += k;
5737 }
5715 exit(0); 5738 exit(0);
5716} 5739}
5717 5740
@@ -5749,12 +5772,23 @@ $as_echo_n "checking if $CC supports compile flag -Wextra... " >&6; }
5749#include <stdlib.h> 5772#include <stdlib.h>
5750#include <stdio.h> 5773#include <stdio.h>
5751int main(int argc, char **argv) { 5774int main(int argc, char **argv) {
5775 (void)argv;
5752 /* Some math to catch -ftrapv problems in the toolchain */ 5776 /* Some math to catch -ftrapv problems in the toolchain */
5753 int i = 123 * argc, j = 456 + argc, k = 789 - argc; 5777 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
5754 float l = i * 2.1; 5778 float l = i * 2.1;
5755 double m = l / 0.5; 5779 double m = l / 0.5;
5756 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; 5780 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
5757 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); 5781 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o);
5782 /*
5783 * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does
5784 * not understand comments and we don't use the "fallthrough" attribute
5785 * that it's looking for.
5786 */
5787 switch(i){
5788 case 0: j += i;
5789 /* FALLTHROUGH */
5790 default: j += k;
5791 }
5758 exit(0); 5792 exit(0);
5759} 5793}
5760 5794
@@ -5792,12 +5826,23 @@ $as_echo_n "checking if $CC supports compile flag -Wpointer-arith... " >&6; }
5792#include <stdlib.h> 5826#include <stdlib.h>
5793#include <stdio.h> 5827#include <stdio.h>
5794int main(int argc, char **argv) { 5828int main(int argc, char **argv) {
5829 (void)argv;
5795 /* Some math to catch -ftrapv problems in the toolchain */ 5830 /* Some math to catch -ftrapv problems in the toolchain */
5796 int i = 123 * argc, j = 456 + argc, k = 789 - argc; 5831 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
5797 float l = i * 2.1; 5832 float l = i * 2.1;
5798 double m = l / 0.5; 5833 double m = l / 0.5;
5799 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; 5834 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
5800 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); 5835 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o);
5836 /*
5837 * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does
5838 * not understand comments and we don't use the "fallthrough" attribute
5839 * that it's looking for.
5840 */
5841 switch(i){
5842 case 0: j += i;
5843 /* FALLTHROUGH */
5844 default: j += k;
5845 }
5801 exit(0); 5846 exit(0);
5802} 5847}
5803 5848
@@ -5835,12 +5880,23 @@ $as_echo_n "checking if $CC supports compile flag -Wuninitialized... " >&6; }
5835#include <stdlib.h> 5880#include <stdlib.h>
5836#include <stdio.h> 5881#include <stdio.h>
5837int main(int argc, char **argv) { 5882int main(int argc, char **argv) {
5883 (void)argv;
5838 /* Some math to catch -ftrapv problems in the toolchain */ 5884 /* Some math to catch -ftrapv problems in the toolchain */
5839 int i = 123 * argc, j = 456 + argc, k = 789 - argc; 5885 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
5840 float l = i * 2.1; 5886 float l = i * 2.1;
5841 double m = l / 0.5; 5887 double m = l / 0.5;
5842 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; 5888 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
5843 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); 5889 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o);
5890 /*
5891 * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does
5892 * not understand comments and we don't use the "fallthrough" attribute
5893 * that it's looking for.
5894 */
5895 switch(i){
5896 case 0: j += i;
5897 /* FALLTHROUGH */
5898 default: j += k;
5899 }
5844 exit(0); 5900 exit(0);
5845} 5901}
5846 5902
@@ -5878,12 +5934,23 @@ $as_echo_n "checking if $CC supports compile flag -Wsign-compare... " >&6; }
5878#include <stdlib.h> 5934#include <stdlib.h>
5879#include <stdio.h> 5935#include <stdio.h>
5880int main(int argc, char **argv) { 5936int main(int argc, char **argv) {
5937 (void)argv;
5881 /* Some math to catch -ftrapv problems in the toolchain */ 5938 /* Some math to catch -ftrapv problems in the toolchain */
5882 int i = 123 * argc, j = 456 + argc, k = 789 - argc; 5939 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
5883 float l = i * 2.1; 5940 float l = i * 2.1;
5884 double m = l / 0.5; 5941 double m = l / 0.5;
5885 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; 5942 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
5886 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); 5943 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o);
5944 /*
5945 * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does
5946 * not understand comments and we don't use the "fallthrough" attribute
5947 * that it's looking for.
5948 */
5949 switch(i){
5950 case 0: j += i;
5951 /* FALLTHROUGH */
5952 default: j += k;
5953 }
5887 exit(0); 5954 exit(0);
5888} 5955}
5889 5956
@@ -5921,12 +5988,23 @@ $as_echo_n "checking if $CC supports compile flag -Wformat-security... " >&6; }
5921#include <stdlib.h> 5988#include <stdlib.h>
5922#include <stdio.h> 5989#include <stdio.h>
5923int main(int argc, char **argv) { 5990int main(int argc, char **argv) {
5991 (void)argv;
5924 /* Some math to catch -ftrapv problems in the toolchain */ 5992 /* Some math to catch -ftrapv problems in the toolchain */
5925 int i = 123 * argc, j = 456 + argc, k = 789 - argc; 5993 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
5926 float l = i * 2.1; 5994 float l = i * 2.1;
5927 double m = l / 0.5; 5995 double m = l / 0.5;
5928 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; 5996 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
5929 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); 5997 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o);
5998 /*
5999 * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does
6000 * not understand comments and we don't use the "fallthrough" attribute
6001 * that it's looking for.
6002 */
6003 switch(i){
6004 case 0: j += i;
6005 /* FALLTHROUGH */
6006 default: j += k;
6007 }
5930 exit(0); 6008 exit(0);
5931} 6009}
5932 6010
@@ -5964,12 +6042,23 @@ $as_echo_n "checking if $CC supports compile flag -Wsizeof-pointer-memaccess...
5964#include <stdlib.h> 6042#include <stdlib.h>
5965#include <stdio.h> 6043#include <stdio.h>
5966int main(int argc, char **argv) { 6044int main(int argc, char **argv) {
6045 (void)argv;
5967 /* Some math to catch -ftrapv problems in the toolchain */ 6046 /* Some math to catch -ftrapv problems in the toolchain */
5968 int i = 123 * argc, j = 456 + argc, k = 789 - argc; 6047 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
5969 float l = i * 2.1; 6048 float l = i * 2.1;
5970 double m = l / 0.5; 6049 double m = l / 0.5;
5971 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; 6050 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
5972 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); 6051 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o);
6052 /*
6053 * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does
6054 * not understand comments and we don't use the "fallthrough" attribute
6055 * that it's looking for.
6056 */
6057 switch(i){
6058 case 0: j += i;
6059 /* FALLTHROUGH */
6060 default: j += k;
6061 }
5973 exit(0); 6062 exit(0);
5974} 6063}
5975 6064
@@ -6007,12 +6096,77 @@ $as_echo_n "checking if $CC supports compile flag -Wpointer-sign... " >&6; }
6007#include <stdlib.h> 6096#include <stdlib.h>
6008#include <stdio.h> 6097#include <stdio.h>
6009int main(int argc, char **argv) { 6098int main(int argc, char **argv) {
6099 (void)argv;
6100 /* Some math to catch -ftrapv problems in the toolchain */
6101 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
6102 float l = i * 2.1;
6103 double m = l / 0.5;
6104 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
6105 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o);
6106 /*
6107 * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does
6108 * not understand comments and we don't use the "fallthrough" attribute
6109 * that it's looking for.
6110 */
6111 switch(i){
6112 case 0: j += i;
6113 /* FALLTHROUGH */
6114 default: j += k;
6115 }
6116 exit(0);
6117}
6118
6119_ACEOF
6120if ac_fn_c_try_compile "$LINENO"; then :
6121
6122if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
6123then
6124 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6125$as_echo "no" >&6; }
6126 CFLAGS="$saved_CFLAGS"
6127else
6128 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
6129$as_echo "yes" >&6; }
6130 CFLAGS="$saved_CFLAGS $_define_flag"
6131fi
6132else
6133 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6134$as_echo "no" >&6; }
6135 CFLAGS="$saved_CFLAGS"
6136
6137fi
6138rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6139}
6140 {
6141 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wunused-parameter" >&5
6142$as_echo_n "checking if $CC supports compile flag -Wunused-parameter... " >&6; }
6143 saved_CFLAGS="$CFLAGS"
6144 CFLAGS="$CFLAGS $WERROR -Wunused-parameter"
6145 _define_flag="-Wno-unused-parameter"
6146 test "x$_define_flag" = "x" && _define_flag="-Wunused-parameter"
6147 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
6148/* end confdefs.h. */
6149
6150#include <stdlib.h>
6151#include <stdio.h>
6152int main(int argc, char **argv) {
6153 (void)argv;
6010 /* Some math to catch -ftrapv problems in the toolchain */ 6154 /* Some math to catch -ftrapv problems in the toolchain */
6011 int i = 123 * argc, j = 456 + argc, k = 789 - argc; 6155 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
6012 float l = i * 2.1; 6156 float l = i * 2.1;
6013 double m = l / 0.5; 6157 double m = l / 0.5;
6014 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; 6158 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
6015 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); 6159 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o);
6160 /*
6161 * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does
6162 * not understand comments and we don't use the "fallthrough" attribute
6163 * that it's looking for.
6164 */
6165 switch(i){
6166 case 0: j += i;
6167 /* FALLTHROUGH */
6168 default: j += k;
6169 }
6016 exit(0); 6170 exit(0);
6017} 6171}
6018 6172
@@ -6050,12 +6204,23 @@ $as_echo_n "checking if $CC supports compile flag -Wunused-result... " >&6; }
6050#include <stdlib.h> 6204#include <stdlib.h>
6051#include <stdio.h> 6205#include <stdio.h>
6052int main(int argc, char **argv) { 6206int main(int argc, char **argv) {
6207 (void)argv;
6053 /* Some math to catch -ftrapv problems in the toolchain */ 6208 /* Some math to catch -ftrapv problems in the toolchain */
6054 int i = 123 * argc, j = 456 + argc, k = 789 - argc; 6209 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
6055 float l = i * 2.1; 6210 float l = i * 2.1;
6056 double m = l / 0.5; 6211 double m = l / 0.5;
6057 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; 6212 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
6058 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); 6213 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o);
6214 /*
6215 * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does
6216 * not understand comments and we don't use the "fallthrough" attribute
6217 * that it's looking for.
6218 */
6219 switch(i){
6220 case 0: j += i;
6221 /* FALLTHROUGH */
6222 default: j += k;
6223 }
6059 exit(0); 6224 exit(0);
6060} 6225}
6061 6226
@@ -6093,12 +6258,23 @@ $as_echo_n "checking if $CC supports compile flag -Wimplicit-fallthrough... " >&
6093#include <stdlib.h> 6258#include <stdlib.h>
6094#include <stdio.h> 6259#include <stdio.h>
6095int main(int argc, char **argv) { 6260int main(int argc, char **argv) {
6261 (void)argv;
6096 /* Some math to catch -ftrapv problems in the toolchain */ 6262 /* Some math to catch -ftrapv problems in the toolchain */
6097 int i = 123 * argc, j = 456 + argc, k = 789 - argc; 6263 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
6098 float l = i * 2.1; 6264 float l = i * 2.1;
6099 double m = l / 0.5; 6265 double m = l / 0.5;
6100 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; 6266 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
6101 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); 6267 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o);
6268 /*
6269 * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does
6270 * not understand comments and we don't use the "fallthrough" attribute
6271 * that it's looking for.
6272 */
6273 switch(i){
6274 case 0: j += i;
6275 /* FALLTHROUGH */
6276 default: j += k;
6277 }
6102 exit(0); 6278 exit(0);
6103} 6279}
6104 6280
@@ -6136,12 +6312,23 @@ $as_echo_n "checking if $CC supports compile flag -fno-strict-aliasing... " >&6;
6136#include <stdlib.h> 6312#include <stdlib.h>
6137#include <stdio.h> 6313#include <stdio.h>
6138int main(int argc, char **argv) { 6314int main(int argc, char **argv) {
6315 (void)argv;
6139 /* Some math to catch -ftrapv problems in the toolchain */ 6316 /* Some math to catch -ftrapv problems in the toolchain */
6140 int i = 123 * argc, j = 456 + argc, k = 789 - argc; 6317 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
6141 float l = i * 2.1; 6318 float l = i * 2.1;
6142 double m = l / 0.5; 6319 double m = l / 0.5;
6143 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; 6320 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
6144 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); 6321 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o);
6322 /*
6323 * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does
6324 * not understand comments and we don't use the "fallthrough" attribute
6325 * that it's looking for.
6326 */
6327 switch(i){
6328 case 0: j += i;
6329 /* FALLTHROUGH */
6330 default: j += k;
6331 }
6145 exit(0); 6332 exit(0);
6146} 6333}
6147 6334
@@ -6180,12 +6367,23 @@ $as_echo_n "checking if $CC supports compile flag -mretpoline... " >&6; }
6180#include <stdlib.h> 6367#include <stdlib.h>
6181#include <stdio.h> 6368#include <stdio.h>
6182int main(int argc, char **argv) { 6369int main(int argc, char **argv) {
6370 (void)argv;
6183 /* Some math to catch -ftrapv problems in the toolchain */ 6371 /* Some math to catch -ftrapv problems in the toolchain */
6184 int i = 123 * argc, j = 456 + argc, k = 789 - argc; 6372 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
6185 float l = i * 2.1; 6373 float l = i * 2.1;
6186 double m = l / 0.5; 6374 double m = l / 0.5;
6187 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; 6375 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
6188 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); 6376 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o);
6377 /*
6378 * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does
6379 * not understand comments and we don't use the "fallthrough" attribute
6380 * that it's looking for.
6381 */
6382 switch(i){
6383 case 0: j += i;
6384 /* FALLTHROUGH */
6385 default: j += k;
6386 }
6189 exit(0); 6387 exit(0);
6190} 6388}
6191 6389
@@ -6223,6 +6421,7 @@ $as_echo_n "checking if $LD supports link flag -Wl,-z,retpolineplt... " >&6; }
6223#include <stdlib.h> 6421#include <stdlib.h>
6224#include <stdio.h> 6422#include <stdio.h>
6225int main(int argc, char **argv) { 6423int main(int argc, char **argv) {
6424 (void)argv;
6226 /* Some math to catch -ftrapv problems in the toolchain */ 6425 /* Some math to catch -ftrapv problems in the toolchain */
6227 int i = 123 * argc, j = 456 + argc, k = 789 - argc; 6426 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
6228 float l = i * 2.1; 6427 float l = i * 2.1;
@@ -6268,12 +6467,23 @@ $as_echo_n "checking if $CC supports compile flag -D_FORTIFY_SOURCE=2... " >&6;
6268#include <stdlib.h> 6467#include <stdlib.h>
6269#include <stdio.h> 6468#include <stdio.h>
6270int main(int argc, char **argv) { 6469int main(int argc, char **argv) {
6470 (void)argv;
6271 /* Some math to catch -ftrapv problems in the toolchain */ 6471 /* Some math to catch -ftrapv problems in the toolchain */
6272 int i = 123 * argc, j = 456 + argc, k = 789 - argc; 6472 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
6273 float l = i * 2.1; 6473 float l = i * 2.1;
6274 double m = l / 0.5; 6474 double m = l / 0.5;
6275 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; 6475 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
6276 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); 6476 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o);
6477 /*
6478 * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does
6479 * not understand comments and we don't use the "fallthrough" attribute
6480 * that it's looking for.
6481 */
6482 switch(i){
6483 case 0: j += i;
6484 /* FALLTHROUGH */
6485 default: j += k;
6486 }
6277 exit(0); 6487 exit(0);
6278} 6488}
6279 6489
@@ -6311,6 +6521,7 @@ $as_echo_n "checking if $LD supports link flag -Wl,-z,relro... " >&6; }
6311#include <stdlib.h> 6521#include <stdlib.h>
6312#include <stdio.h> 6522#include <stdio.h>
6313int main(int argc, char **argv) { 6523int main(int argc, char **argv) {
6524 (void)argv;
6314 /* Some math to catch -ftrapv problems in the toolchain */ 6525 /* Some math to catch -ftrapv problems in the toolchain */
6315 int i = 123 * argc, j = 456 + argc, k = 789 - argc; 6526 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
6316 float l = i * 2.1; 6527 float l = i * 2.1;
@@ -6356,6 +6567,7 @@ $as_echo_n "checking if $LD supports link flag -Wl,-z,now... " >&6; }
6356#include <stdlib.h> 6567#include <stdlib.h>
6357#include <stdio.h> 6568#include <stdio.h>
6358int main(int argc, char **argv) { 6569int main(int argc, char **argv) {
6570 (void)argv;
6359 /* Some math to catch -ftrapv problems in the toolchain */ 6571 /* Some math to catch -ftrapv problems in the toolchain */
6360 int i = 123 * argc, j = 456 + argc, k = 789 - argc; 6572 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
6361 float l = i * 2.1; 6573 float l = i * 2.1;
@@ -6401,6 +6613,7 @@ $as_echo_n "checking if $LD supports link flag -Wl,-z,noexecstack... " >&6; }
6401#include <stdlib.h> 6613#include <stdlib.h>
6402#include <stdio.h> 6614#include <stdio.h>
6403int main(int argc, char **argv) { 6615int main(int argc, char **argv) {
6616 (void)argv;
6404 /* Some math to catch -ftrapv problems in the toolchain */ 6617 /* Some math to catch -ftrapv problems in the toolchain */
6405 int i = 123 * argc, j = 456 + argc, k = 789 - argc; 6618 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
6406 float l = i * 2.1; 6619 float l = i * 2.1;
@@ -6451,6 +6664,7 @@ $as_echo_n "checking if $CC supports compile flag -ftrapv and linking succeeds..
6451#include <stdlib.h> 6664#include <stdlib.h>
6452#include <stdio.h> 6665#include <stdio.h>
6453int main(int argc, char **argv) { 6666int main(int argc, char **argv) {
6667 (void)argv;
6454 /* Some math to catch -ftrapv problems in the toolchain */ 6668 /* Some math to catch -ftrapv problems in the toolchain */
6455 int i = 123 * argc, j = 456 + argc, k = 789 - argc; 6669 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
6456 float l = i * 2.1; 6670 float l = i * 2.1;
@@ -7052,6 +7266,40 @@ SPP_MSG="no"
7052# the --with-solaris-privs option and --with-sandbox=solaris). 7266# the --with-solaris-privs option and --with-sandbox=solaris).
7053SOLARIS_PRIVS="no" 7267SOLARIS_PRIVS="no"
7054 7268
7269# The cast to long int works around a bug in the HP C Compiler
7270# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
7271# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
7272# This bug is HP SR number 8606223364.
7273{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5
7274$as_echo_n "checking size of size_t... " >&6; }
7275if ${ac_cv_sizeof_size_t+:} false; then :
7276 $as_echo_n "(cached) " >&6
7277else
7278 if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default"; then :
7279
7280else
7281 if test "$ac_cv_type_size_t" = yes; then
7282 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
7283$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
7284as_fn_error 77 "cannot compute sizeof (size_t)
7285See \`config.log' for more details" "$LINENO" 5; }
7286 else
7287 ac_cv_sizeof_size_t=0
7288 fi
7289fi
7290
7291fi
7292{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5
7293$as_echo "$ac_cv_sizeof_size_t" >&6; }
7294
7295
7296
7297cat >>confdefs.h <<_ACEOF
7298#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t
7299_ACEOF
7300
7301
7302
7055# Check for some target-specific stuff 7303# Check for some target-specific stuff
7056case "$host" in 7304case "$host" in
7057*-*-aix*) 7305*-*-aix*)
@@ -7385,12 +7633,23 @@ $as_echo_n "checking if $CC supports compile flag -Wno-attributes... " >&6; }
7385#include <stdlib.h> 7633#include <stdlib.h>
7386#include <stdio.h> 7634#include <stdio.h>
7387int main(int argc, char **argv) { 7635int main(int argc, char **argv) {
7636 (void)argv;
7388 /* Some math to catch -ftrapv problems in the toolchain */ 7637 /* Some math to catch -ftrapv problems in the toolchain */
7389 int i = 123 * argc, j = 456 + argc, k = 789 - argc; 7638 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
7390 float l = i * 2.1; 7639 float l = i * 2.1;
7391 double m = l / 0.5; 7640 double m = l / 0.5;
7392 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; 7641 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
7393 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); 7642 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o);
7643 /*
7644 * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does
7645 * not understand comments and we don't use the "fallthrough" attribute
7646 * that it's looking for.
7647 */
7648 switch(i){
7649 case 0: j += i;
7650 /* FALLTHROUGH */
7651 default: j += k;
7652 }
7394 exit(0); 7653 exit(0);
7395} 7654}
7396 7655
@@ -7437,7 +7696,9 @@ $as_echo "assume it is working" >&6; }
7437else 7696else
7438 cat confdefs.h - <<_ACEOF >conftest.$ac_ext 7697 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
7439/* end confdefs.h. */ 7698/* end confdefs.h. */
7440 #include <mach-o/dyld.h> 7699
7700#include <mach-o/dyld.h>
7701#include <stdlib.h>
7441main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16)) 7702main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
7442 exit(0); 7703 exit(0);
7443 else 7704 else
@@ -7974,6 +8235,10 @@ $as_echo_n "checking for seccomp architecture... " >&6; }
7974 case "$host" in 8235 case "$host" in
7975 x86_64-*) 8236 x86_64-*)
7976 seccomp_audit_arch=AUDIT_ARCH_X86_64 8237 seccomp_audit_arch=AUDIT_ARCH_X86_64
8238 # X32: AMD64 instructions in 32bit address space.
8239 if test "x$ac_cv_sizeof_size_t" = "x4" ; then
8240 seccomp_audit_arch=AUDIT_ARCH_I386
8241 fi
7977 ;; 8242 ;;
7978 i*86-*) 8243 i*86-*)
7979 seccomp_audit_arch=AUDIT_ARCH_I386 8244 seccomp_audit_arch=AUDIT_ARCH_I386
@@ -8022,6 +8287,9 @@ $as_echo_n "checking for seccomp architecture... " >&6; }
8022 ;; 8287 ;;
8023 esac 8288 esac
8024 ;; 8289 ;;
8290 riscv64-*)
8291 seccomp_audit_arch=AUDIT_ARCH_RISCV64
8292 ;;
8025 esac 8293 esac
8026 if test "x$seccomp_audit_arch" != "x" ; then 8294 if test "x$seccomp_audit_arch" != "x" ; then
8027 { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"$seccomp_audit_arch\"" >&5 8295 { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"$seccomp_audit_arch\"" >&5
@@ -8773,7 +9041,7 @@ $as_echo "$as_me: WARNING: cross compiling: not checking compiler sanity" >&2;}
8773else 9041else
8774 cat confdefs.h - <<_ACEOF >conftest.$ac_ext 9042 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
8775/* end confdefs.h. */ 9043/* end confdefs.h. */
8776 #include <stdio.h> 9044 #include <stdlib.h>
8777int 9045int
8778main () 9046main ()
8779{ 9047{
@@ -8925,6 +9193,7 @@ else
8925 9193
8926#include <libgen.h> 9194#include <libgen.h>
8927#include <string.h> 9195#include <string.h>
9196#include <stdlib.h>
8928 9197
8929int main(int argc, char **argv) { 9198int main(int argc, char **argv) {
8930 char *s, buf[32]; 9199 char *s, buf[32];
@@ -10308,6 +10577,8 @@ else
10308 10577
10309#include <sys/types.h> 10578#include <sys/types.h>
10310#include <dirent.h> 10579#include <dirent.h>
10580#include <stdlib.h>
10581
10311int 10582int
10312main () 10583main ()
10313{ 10584{
@@ -10692,7 +10963,10 @@ fi
10692$as_echo_n "checking if libedit version is compatible... " >&6; } 10963$as_echo_n "checking if libedit version is compatible... " >&6; }
10693 cat confdefs.h - <<_ACEOF >conftest.$ac_ext 10964 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
10694/* end confdefs.h. */ 10965/* end confdefs.h. */
10695 #include <histedit.h> 10966
10967#include <histedit.h>
10968#include <stdlib.h>
10969
10696int 10970int
10697main () 10971main ()
10698{ 10972{
@@ -10936,12 +11210,23 @@ $as_echo_n "checking if $CC supports compile flag -fPIE... " >&6; }
10936#include <stdlib.h> 11210#include <stdlib.h>
10937#include <stdio.h> 11211#include <stdio.h>
10938int main(int argc, char **argv) { 11212int main(int argc, char **argv) {
11213 (void)argv;
10939 /* Some math to catch -ftrapv problems in the toolchain */ 11214 /* Some math to catch -ftrapv problems in the toolchain */
10940 int i = 123 * argc, j = 456 + argc, k = 789 - argc; 11215 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
10941 float l = i * 2.1; 11216 float l = i * 2.1;
10942 double m = l / 0.5; 11217 double m = l / 0.5;
10943 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; 11218 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
10944 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); 11219 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o);
11220 /*
11221 * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does
11222 * not understand comments and we don't use the "fallthrough" attribute
11223 * that it's looking for.
11224 */
11225 switch(i){
11226 case 0: j += i;
11227 /* FALLTHROUGH */
11228 default: j += k;
11229 }
10945 exit(0); 11230 exit(0);
10946} 11231}
10947 11232
@@ -10979,6 +11264,7 @@ $as_echo_n "checking if $LD supports link flag -pie... " >&6; }
10979#include <stdlib.h> 11264#include <stdlib.h>
10980#include <stdio.h> 11265#include <stdio.h>
10981int main(int argc, char **argv) { 11266int main(int argc, char **argv) {
11267 (void)argv;
10982 /* Some math to catch -ftrapv problems in the toolchain */ 11268 /* Some math to catch -ftrapv problems in the toolchain */
10983 int i = 123 * argc, j = 456 + argc, k = 789 - argc; 11269 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
10984 float l = i * 2.1; 11270 float l = i * 2.1;
@@ -11955,7 +12241,10 @@ $as_echo "$as_me: WARNING: cross compiling: assuming working" >&2;}
11955else 12241else
11956 cat confdefs.h - <<_ACEOF >conftest.$ac_ext 12242 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
11957/* end confdefs.h. */ 12243/* end confdefs.h. */
12244
11958#include <stdio.h> 12245#include <stdio.h>
12246#include <stdlib.h>
12247
11959int 12248int
11960main () 12249main ()
11961{ 12250{
@@ -12163,7 +12452,10 @@ $as_echo "$as_me: WARNING: cross compiling: Assuming working snprintf()" >&2;}
12163else 12452else
12164 cat confdefs.h - <<_ACEOF >conftest.$ac_ext 12453 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12165/* end confdefs.h. */ 12454/* end confdefs.h. */
12166 #include <stdio.h> 12455
12456#include <stdio.h>
12457#include <stdlib.h>
12458
12167int 12459int
12168main () 12460main ()
12169{ 12461{
@@ -12209,6 +12501,8 @@ else
12209 12501
12210#include <sys/types.h> 12502#include <sys/types.h>
12211#include <stdio.h> 12503#include <stdio.h>
12504#include <stdlib.h>
12505#include <string.h>
12212 12506
12213int 12507int
12214main () 12508main ()
@@ -12389,6 +12683,7 @@ else
12389/* end confdefs.h. */ 12683/* end confdefs.h. */
12390 12684
12391#include <stdlib.h> 12685#include <stdlib.h>
12686#include <unistd.h>
12392 12687
12393int 12688int
12394main () 12689main ()
@@ -12438,6 +12733,8 @@ else
12438/* end confdefs.h. */ 12733/* end confdefs.h. */
12439 12734
12440#include <stdio.h> 12735#include <stdio.h>
12736#include <stdlib.h>
12737#include <unistd.h>
12441#include <sys/fcntl.h> 12738#include <sys/fcntl.h>
12442#include <sys/types.h> 12739#include <sys/types.h>
12443#include <sys/wait.h> 12740#include <sys/wait.h>
@@ -12507,6 +12804,7 @@ else
12507/* end confdefs.h. */ 12804/* end confdefs.h. */
12508 12805
12509#include <stdio.h> 12806#include <stdio.h>
12807#include <stdlib.h>
12510#include <sys/socket.h> 12808#include <sys/socket.h>
12511#include <netdb.h> 12809#include <netdb.h>
12512#include <errno.h> 12810#include <errno.h>
@@ -12598,6 +12896,7 @@ else
12598/* end confdefs.h. */ 12896/* end confdefs.h. */
12599 12897
12600#include <stdio.h> 12898#include <stdio.h>
12899#include <stdlib.h>
12601#include <sys/socket.h> 12900#include <sys/socket.h>
12602#include <netdb.h> 12901#include <netdb.h>
12603#include <errno.h> 12902#include <errno.h>
@@ -12687,7 +12986,10 @@ if test "x$check_for_conflicting_getspnam" = "x1"; then
12687$as_echo_n "checking for conflicting getspnam in shadow.h... " >&6; } 12986$as_echo_n "checking for conflicting getspnam in shadow.h... " >&6; }
12688 cat confdefs.h - <<_ACEOF >conftest.$ac_ext 12987 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12689/* end confdefs.h. */ 12988/* end confdefs.h. */
12690 #include <shadow.h> 12989
12990#include <shadow.h>
12991#include <stdlib.h>
12992
12691int 12993int
12692main () 12994main ()
12693{ 12995{
@@ -12731,6 +13033,7 @@ else
12731#include <signal.h> 13033#include <signal.h>
12732#include <stdlib.h> 13034#include <stdlib.h>
12733#include <string.h> 13035#include <string.h>
13036#include <unistd.h>
12734#include <vis.h> 13037#include <vis.h>
12735static void sighandler(int sig) { _exit(1); } 13038static void sighandler(int sig) { _exit(1); }
12736 13039
@@ -12782,6 +13085,7 @@ else
12782#include <sys/time.h> 13085#include <sys/time.h>
12783#include <stdlib.h> 13086#include <stdlib.h>
12784#include <signal.h> 13087#include <signal.h>
13088#include <unistd.h>
12785static void sighandler(int sig) { } 13089static void sighandler(int sig) { }
12786 13090
12787int 13091int
@@ -13064,6 +13368,7 @@ else
13064/* end confdefs.h. */ 13368/* end confdefs.h. */
13065 13369
13066 #include <stdio.h> 13370 #include <stdio.h>
13371 #include <stdlib.h>
13067 #include <string.h> 13372 #include <string.h>
13068 #include <openssl/opensslv.h> 13373 #include <openssl/opensslv.h>
13069 #include <openssl/crypto.h> 13374 #include <openssl/crypto.h>
@@ -13147,6 +13452,7 @@ else
13147 cat confdefs.h - <<_ACEOF >conftest.$ac_ext 13452 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
13148/* end confdefs.h. */ 13453/* end confdefs.h. */
13149 13454
13455 #include <stdlib.h>
13150 #include <string.h> 13456 #include <string.h>
13151 #include <openssl/opensslv.h> 13457 #include <openssl/opensslv.h>
13152 #include <openssl/crypto.h> 13458 #include <openssl/crypto.h>
@@ -13387,6 +13693,7 @@ $as_echo_n "checking whether OpenSSL has crippled AES support... " >&6; }
13387 cat confdefs.h - <<_ACEOF >conftest.$ac_ext 13693 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
13388/* end confdefs.h. */ 13694/* end confdefs.h. */
13389 13695
13696 #include <stdlib.h>
13390 #include <string.h> 13697 #include <string.h>
13391 #include <openssl/evp.h> 13698 #include <openssl/evp.h>
13392 13699
@@ -13424,6 +13731,7 @@ $as_echo_n "checking whether OpenSSL has AES CTR via EVP... " >&6; }
13424 cat confdefs.h - <<_ACEOF >conftest.$ac_ext 13731 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
13425/* end confdefs.h. */ 13732/* end confdefs.h. */
13426 13733
13734 #include <stdlib.h>
13427 #include <string.h> 13735 #include <string.h>
13428 #include <openssl/evp.h> 13736 #include <openssl/evp.h>
13429 13737
@@ -13463,6 +13771,7 @@ $as_echo_n "checking whether OpenSSL has AES GCM via EVP... " >&6; }
13463 cat confdefs.h - <<_ACEOF >conftest.$ac_ext 13771 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
13464/* end confdefs.h. */ 13772/* end confdefs.h. */
13465 13773
13774 #include <stdlib.h>
13466 #include <string.h> 13775 #include <string.h>
13467 #include <openssl/evp.h> 13776 #include <openssl/evp.h>
13468 13777
@@ -13508,6 +13817,7 @@ $as_echo_n "checking if EVP_DigestUpdate returns an int... " >&6; }
13508 cat confdefs.h - <<_ACEOF >conftest.$ac_ext 13817 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
13509/* end confdefs.h. */ 13818/* end confdefs.h. */
13510 13819
13820 #include <stdlib.h>
13511 #include <string.h> 13821 #include <string.h>
13512 #include <openssl/evp.h> 13822 #include <openssl/evp.h>
13513 13823
@@ -13769,6 +14079,7 @@ else
13769 cat confdefs.h - <<_ACEOF >conftest.$ac_ext 14079 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
13770/* end confdefs.h. */ 14080/* end confdefs.h. */
13771 14081
14082 #include <stdlib.h>
13772 #include <openssl/ec.h> 14083 #include <openssl/ec.h>
13773 #include <openssl/ecdh.h> 14084 #include <openssl/ecdh.h>
13774 #include <openssl/ecdsa.h> 14085 #include <openssl/ecdsa.h>
@@ -14144,6 +14455,27 @@ else
14144 as_fn_error $? "no usable libfido2 found" "$LINENO" 5 14455 as_fn_error $? "no usable libfido2 found" "$LINENO" 5
14145fi 14456fi
14146 14457
14458 saved_LIBS="$LIBS"
14459 LIBS="$LIBS $LIBFIDO2"
14460 for ac_func in \
14461 fido_cred_prot \
14462 fido_cred_set_prot \
14463 fido_dev_get_touch_begin \
14464 fido_dev_get_touch_status \
14465 fido_dev_supports_cred_prot \
14466
14467do :
14468 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
14469ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
14470if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
14471 cat >>confdefs.h <<_ACEOF
14472#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
14473_ACEOF
14474
14475fi
14476done
14477
14478 LIBS="$saved_LIBS"
14147 ac_fn_c_check_header_mongrel "$LINENO" "fido.h" "ac_cv_header_fido_h" "$ac_includes_default" 14479 ac_fn_c_check_header_mongrel "$LINENO" "fido.h" "ac_cv_header_fido_h" "$ac_includes_default"
14148if test "x$ac_cv_header_fido_h" = xyes; then : 14480if test "x$ac_cv_header_fido_h" = xyes; then :
14149 14481
@@ -14261,6 +14593,7 @@ else
14261 cat confdefs.h - <<_ACEOF >conftest.$ac_ext 14593 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
14262/* end confdefs.h. */ 14594/* end confdefs.h. */
14263 14595
14596 #include <stdlib.h>
14264 #include <string.h> 14597 #include <string.h>
14265 #include <openssl/rand.h> 14598 #include <openssl/rand.h>
14266 14599
@@ -15145,6 +15478,7 @@ else
15145/* end confdefs.h. */ 15478/* end confdefs.h. */
15146 15479
15147#include <stdio.h> 15480#include <stdio.h>
15481#include <stdlib.h>
15148/* Why is this so damn hard? */ 15482/* Why is this so damn hard? */
15149#ifdef __GNUC__ 15483#ifdef __GNUC__
15150# undef __GNUC__ 15484# undef __GNUC__
@@ -16500,6 +16834,7 @@ else
16500/* end confdefs.h. */ 16834/* end confdefs.h. */
16501 16835
16502#include <stdio.h> 16836#include <stdio.h>
16837#include <stdlib.h>
16503#include <string.h> 16838#include <string.h>
16504#ifdef HAVE_SNPRINTF 16839#ifdef HAVE_SNPRINTF
16505main() 16840main()
@@ -17199,6 +17534,45 @@ $as_echo "no" >&6; }
17199 fi 17534 fi
17200 17535
17201 17536
17537# look for field 'ut_ss' in header 'utmpx.h'
17538 ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'`
17539 ossh_varname="ossh_cv_$ossh_safe""_has_"ut_ss
17540 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_ss field in utmpx.h" >&5
17541$as_echo_n "checking for ut_ss field in utmpx.h... " >&6; }
17542 if eval \${$ossh_varname+:} false; then :
17543 $as_echo_n "(cached) " >&6
17544else
17545
17546 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
17547/* end confdefs.h. */
17548#include <utmpx.h>
17549
17550_ACEOF
17551if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
17552 $EGREP "ut_ss" >/dev/null 2>&1; then :
17553 eval "$ossh_varname=yes"
17554else
17555 eval "$ossh_varname=no"
17556fi
17557rm -f conftest*
17558
17559fi
17560
17561 ossh_result=`eval 'echo $'"$ossh_varname"`
17562 if test -n "`echo $ossh_varname`"; then
17563 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
17564$as_echo "$ossh_result" >&6; }
17565 if test "x$ossh_result" = "xyes"; then
17566
17567$as_echo "#define HAVE_SS_IN_UTMPX 1" >>confdefs.h
17568
17569 fi
17570 else
17571 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
17572$as_echo "no" >&6; }
17573 fi
17574
17575
17202ac_fn_c_check_member "$LINENO" "struct stat" "st_blksize" "ac_cv_member_struct_stat_st_blksize" "$ac_includes_default" 17576ac_fn_c_check_member "$LINENO" "struct stat" "st_blksize" "ac_cv_member_struct_stat_st_blksize" "$ac_includes_default"
17203if test "x$ac_cv_member_struct_stat_st_blksize" = xyes; then : 17577if test "x$ac_cv_member_struct_stat_st_blksize" = xyes; then :
17204 17578
@@ -17387,6 +17761,7 @@ else
17387#include <sys/types.h> 17761#include <sys/types.h>
17388#include <sys/socket.h> 17762#include <sys/socket.h>
17389#include <sys/uio.h> 17763#include <sys/uio.h>
17764#include <stdlib.h>
17390 17765
17391int 17766int
17392main () 17767main ()
@@ -17524,6 +17899,7 @@ else
17524#include <sys/types.h> 17899#include <sys/types.h>
17525#include <sys/socket.h> 17900#include <sys/socket.h>
17526#include <sys/uio.h> 17901#include <sys/uio.h>
17902#include <stdlib.h>
17527 17903
17528int 17904int
17529main () 17905main ()
@@ -17566,7 +17942,7 @@ else
17566 17942
17567 cat confdefs.h - <<_ACEOF >conftest.$ac_ext 17943 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
17568/* end confdefs.h. */ 17944/* end confdefs.h. */
17569 17945 #include <stdio.h>
17570int 17946int
17571main () 17947main ()
17572{ 17948{
@@ -17782,7 +18158,7 @@ else
17782 18158
17783 cat confdefs.h - <<_ACEOF >conftest.$ac_ext 18159 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
17784/* end confdefs.h. */ 18160/* end confdefs.h. */
17785 18161 #include <stdio.h>
17786int 18162int
17787main () 18163main ()
17788{ 18164{
@@ -17818,7 +18194,7 @@ else
17818 18194
17819 cat confdefs.h - <<_ACEOF >conftest.$ac_ext 18195 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
17820/* end confdefs.h. */ 18196/* end confdefs.h. */
17821 18197 #include <stdio.h>
17822int 18198int
17823main () 18199main ()
17824{ 18200{
@@ -18234,8 +18610,6 @@ else
18234 as_fn_error $? "SELinux support requires libselinux library" "$LINENO" 5 18610 as_fn_error $? "SELinux support requires libselinux library" "$LINENO" 5
18235fi 18611fi
18236 18612
18237 SSHLIBS="$SSHLIBS $LIBSELINUX"
18238 SSHDLIBS="$SSHDLIBS $LIBSELINUX"
18239 for ac_func in getseuserbyname get_default_context_with_level 18613 for ac_func in getseuserbyname get_default_context_with_level
18240do : 18614do :
18241 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` 18615 as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
@@ -18248,14 +18622,13 @@ _ACEOF
18248fi 18622fi
18249done 18623done
18250 18624
18251 LIBS="$save_LIBS" 18625 LIBS="$save_LIBS $LIBSELINUX"
18252 fi 18626 fi
18253 18627
18254fi 18628fi
18255 18629
18256 18630
18257 18631
18258
18259# Check whether user wants Kerberos 5 support 18632# Check whether user wants Kerberos 5 support
18260KRB5_MSG="no" 18633KRB5_MSG="no"
18261 18634
@@ -19058,6 +19431,7 @@ else
19058/* end confdefs.h. */ 19431/* end confdefs.h. */
19059 19432
19060#include <stdio.h> 19433#include <stdio.h>
19434#include <stdlib.h>
19061#include <string.h> 19435#include <string.h>
19062#ifdef HAVE_PATHS_H 19436#ifdef HAVE_PATHS_H
19063#include <paths.h> 19437#include <paths.h>
@@ -19442,6 +19816,7 @@ else
19442 19816
19443/* find out what STDPATH is */ 19817/* find out what STDPATH is */
19444#include <stdio.h> 19818#include <stdio.h>
19819#include <stdlib.h>
19445#ifdef HAVE_PATHS_H 19820#ifdef HAVE_PATHS_H
19446# include <paths.h> 19821# include <paths.h>
19447#endif 19822#endif
@@ -21426,9 +21801,6 @@ echo " Libraries: ${LIBS}"
21426if test ! -z "${SSHDLIBS}"; then 21801if test ! -z "${SSHDLIBS}"; then
21427echo " +for sshd: ${SSHDLIBS}" 21802echo " +for sshd: ${SSHDLIBS}"
21428fi 21803fi
21429if test ! -z "${SSHLIBS}"; then
21430echo " +for ssh: ${SSHLIBS}"
21431fi
21432 21804
21433echo "" 21805echo ""
21434 21806
diff --git a/configure.ac b/configure.ac
index 7e0584d2c..5944299fa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -14,7 +14,7 @@
14# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 14# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 15
16AC_INIT([OpenSSH], [Portable], [openssh-unix-dev@mindrot.org]) 16AC_INIT([OpenSSH], [Portable], [openssh-unix-dev@mindrot.org])
17AC_REVISION($Revision: 1.583 $) 17AC_CONFIG_MACRO_DIR([m4])
18AC_CONFIG_SRCDIR([ssh.c]) 18AC_CONFIG_SRCDIR([ssh.c])
19AC_LANG([C]) 19AC_LANG([C])
20 20
@@ -34,8 +34,6 @@ AC_CHECK_TOOLS([AR], [ar])
34AC_PATH_PROG([CAT], [cat]) 34AC_PATH_PROG([CAT], [cat])
35AC_PATH_PROG([KILL], [kill]) 35AC_PATH_PROG([KILL], [kill])
36AC_PATH_PROG([SED], [sed]) 36AC_PATH_PROG([SED], [sed])
37AC_PATH_PROG([ENT], [ent])
38AC_SUBST([ENT])
39AC_PATH_PROG([TEST_MINUS_S_SH], [bash]) 37AC_PATH_PROG([TEST_MINUS_S_SH], [bash])
40AC_PATH_PROG([TEST_MINUS_S_SH], [ksh]) 38AC_PATH_PROG([TEST_MINUS_S_SH], [ksh])
41AC_PATH_PROG([TEST_MINUS_S_SH], [sh]) 39AC_PATH_PROG([TEST_MINUS_S_SH], [sh])
@@ -164,6 +162,7 @@ if test "$GCC" = "yes" || test "$GCC" = "egcs"; then
164 OSSH_CHECK_CFLAG_COMPILE([-Wformat-security]) 162 OSSH_CHECK_CFLAG_COMPILE([-Wformat-security])
165 OSSH_CHECK_CFLAG_COMPILE([-Wsizeof-pointer-memaccess]) 163 OSSH_CHECK_CFLAG_COMPILE([-Wsizeof-pointer-memaccess])
166 OSSH_CHECK_CFLAG_COMPILE([-Wpointer-sign], [-Wno-pointer-sign]) 164 OSSH_CHECK_CFLAG_COMPILE([-Wpointer-sign], [-Wno-pointer-sign])
165 OSSH_CHECK_CFLAG_COMPILE([-Wunused-parameter], [-Wno-unused-parameter])
167 OSSH_CHECK_CFLAG_COMPILE([-Wunused-result], [-Wno-unused-result]) 166 OSSH_CHECK_CFLAG_COMPILE([-Wunused-result], [-Wno-unused-result])
168 OSSH_CHECK_CFLAG_COMPILE([-Wimplicit-fallthrough]) 167 OSSH_CHECK_CFLAG_COMPILE([-Wimplicit-fallthrough])
169 OSSH_CHECK_CFLAG_COMPILE([-fno-strict-aliasing]) 168 OSSH_CHECK_CFLAG_COMPILE([-fno-strict-aliasing])
@@ -522,6 +521,8 @@ SPP_MSG="no"
522# the --with-solaris-privs option and --with-sandbox=solaris). 521# the --with-solaris-privs option and --with-sandbox=solaris).
523SOLARIS_PRIVS="no" 522SOLARIS_PRIVS="no"
524 523
524AC_CHECK_SIZEOF([size_t])
525
525# Check for some target-specific stuff 526# Check for some target-specific stuff
526case "$host" in 527case "$host" in
527*-*-aix*) 528*-*-aix*)
@@ -652,7 +653,9 @@ case "$host" in
652*-*-darwin*) 653*-*-darwin*)
653 use_pie=auto 654 use_pie=auto
654 AC_MSG_CHECKING([if we have working getaddrinfo]) 655 AC_MSG_CHECKING([if we have working getaddrinfo])
655 AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include <mach-o/dyld.h> 656 AC_RUN_IFELSE([AC_LANG_SOURCE([[
657#include <mach-o/dyld.h>
658#include <stdlib.h>
656main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16)) 659main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
657 exit(0); 660 exit(0);
658 else 661 else
@@ -888,6 +891,10 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
888 case "$host" in 891 case "$host" in
889 x86_64-*) 892 x86_64-*)
890 seccomp_audit_arch=AUDIT_ARCH_X86_64 893 seccomp_audit_arch=AUDIT_ARCH_X86_64
894 # X32: AMD64 instructions in 32bit address space.
895 if test "x$ac_cv_sizeof_size_t" = "x4" ; then
896 seccomp_audit_arch=AUDIT_ARCH_I386
897 fi
891 ;; 898 ;;
892 i*86-*) 899 i*86-*)
893 seccomp_audit_arch=AUDIT_ARCH_I386 900 seccomp_audit_arch=AUDIT_ARCH_I386
@@ -936,6 +943,9 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
936 ;; 943 ;;
937 esac 944 esac
938 ;; 945 ;;
946 riscv64-*)
947 seccomp_audit_arch=AUDIT_ARCH_RISCV64
948 ;;
939 esac 949 esac
940 if test "x$seccomp_audit_arch" != "x" ; then 950 if test "x$seccomp_audit_arch" != "x" ; then
941 AC_MSG_RESULT(["$seccomp_audit_arch"]) 951 AC_MSG_RESULT(["$seccomp_audit_arch"])
@@ -1257,7 +1267,7 @@ EOD
1257esac 1267esac
1258 1268
1259AC_MSG_CHECKING([compiler and flags for sanity]) 1269AC_MSG_CHECKING([compiler and flags for sanity])
1260AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include <stdio.h> ]], [[ exit(0); ]])], 1270AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include <stdlib.h> ]], [[ exit(0); ]])],
1261 [ AC_MSG_RESULT([yes]) ], 1271 [ AC_MSG_RESULT([yes]) ],
1262 [ 1272 [
1263 AC_MSG_RESULT([no]) 1273 AC_MSG_RESULT([no])
@@ -1281,6 +1291,7 @@ AC_CHECK_FUNCS([dirname], [AC_CHECK_HEADERS([libgen.h])] , [
1281 [AC_LANG_SOURCE([[ 1291 [AC_LANG_SOURCE([[
1282#include <libgen.h> 1292#include <libgen.h>
1283#include <string.h> 1293#include <string.h>
1294#include <stdlib.h>
1284 1295
1285int main(int argc, char **argv) { 1296int main(int argc, char **argv) {
1286 char *s, buf[32]; 1297 char *s, buf[32];
@@ -1532,7 +1543,9 @@ AC_MSG_CHECKING([whether struct dirent allocates space for d_name])
1532AC_RUN_IFELSE( 1543AC_RUN_IFELSE(
1533 [AC_LANG_PROGRAM([[ 1544 [AC_LANG_PROGRAM([[
1534#include <sys/types.h> 1545#include <sys/types.h>
1535#include <dirent.h>]], 1546#include <dirent.h>
1547#include <stdlib.h>
1548 ]],
1536 [[ 1549 [[
1537 struct dirent d; 1550 struct dirent d;
1538 exit(sizeof(d.d_name)<=sizeof(char)); 1551 exit(sizeof(d.d_name)<=sizeof(char));
@@ -1702,7 +1715,10 @@ AC_ARG_WITH([libedit],
1702 ) 1715 )
1703 AC_MSG_CHECKING([if libedit version is compatible]) 1716 AC_MSG_CHECKING([if libedit version is compatible])
1704 AC_COMPILE_IFELSE( 1717 AC_COMPILE_IFELSE(
1705 [AC_LANG_PROGRAM([[ #include <histedit.h> ]], 1718 [AC_LANG_PROGRAM([[
1719#include <histedit.h>
1720#include <stdlib.h>
1721 ]],
1706 [[ 1722 [[
1707 int i = H_SETSIZE; 1723 int i = H_SETSIZE;
1708 el_init("", NULL, NULL, NULL); 1724 el_init("", NULL, NULL, NULL);
@@ -2192,7 +2208,11 @@ AC_CHECK_FUNCS([setresgid], [
2192 2208
2193AC_MSG_CHECKING([for working fflush(NULL)]) 2209AC_MSG_CHECKING([for working fflush(NULL)])
2194AC_RUN_IFELSE( 2210AC_RUN_IFELSE(
2195 [AC_LANG_PROGRAM([[#include <stdio.h>]], [[fflush(NULL); exit(0);]])], 2211 [AC_LANG_PROGRAM([[
2212#include <stdio.h>
2213#include <stdlib.h>
2214 ]],
2215 [[fflush(NULL); exit(0);]])],
2196 AC_MSG_RESULT([yes]), 2216 AC_MSG_RESULT([yes]),
2197 [AC_MSG_RESULT([no]) 2217 [AC_MSG_RESULT([no])
2198 AC_DEFINE([FFLUSH_NULL_BUG], [1], 2218 AC_DEFINE([FFLUSH_NULL_BUG], [1],
@@ -2228,7 +2248,10 @@ AC_CHECK_FUNC([getpagesize],
2228if test "x$ac_cv_func_snprintf" = "xyes" ; then 2248if test "x$ac_cv_func_snprintf" = "xyes" ; then
2229 AC_MSG_CHECKING([whether snprintf correctly terminates long strings]) 2249 AC_MSG_CHECKING([whether snprintf correctly terminates long strings])
2230 AC_RUN_IFELSE( 2250 AC_RUN_IFELSE(
2231 [AC_LANG_PROGRAM([[ #include <stdio.h> ]], 2251 [AC_LANG_PROGRAM([[
2252#include <stdio.h>
2253#include <stdlib.h>
2254 ]],
2232 [[ 2255 [[
2233 char b[5]; 2256 char b[5];
2234 snprintf(b,5,"123456789"); 2257 snprintf(b,5,"123456789");
@@ -2251,6 +2274,8 @@ if test "x$ac_cv_func_snprintf" = "xyes" ; then
2251 [AC_LANG_PROGRAM([[ 2274 [AC_LANG_PROGRAM([[
2252#include <sys/types.h> 2275#include <sys/types.h>
2253#include <stdio.h> 2276#include <stdio.h>
2277#include <stdlib.h>
2278#include <string.h>
2254 ]], 2279 ]],
2255 [[ 2280 [[
2256 size_t a = 1, b = 2; 2281 size_t a = 1, b = 2;
@@ -2343,6 +2368,7 @@ AC_MSG_CHECKING([for (overly) strict mkstemp])
2343AC_RUN_IFELSE( 2368AC_RUN_IFELSE(
2344 [AC_LANG_PROGRAM([[ 2369 [AC_LANG_PROGRAM([[
2345#include <stdlib.h> 2370#include <stdlib.h>
2371#include <unistd.h>
2346 ]], [[ 2372 ]], [[
2347 char template[]="conftest.mkstemp-test"; 2373 char template[]="conftest.mkstemp-test";
2348 if (mkstemp(template) == -1) 2374 if (mkstemp(template) == -1)
@@ -2370,6 +2396,8 @@ if test ! -z "$check_for_openpty_ctty_bug"; then
2370 AC_RUN_IFELSE( 2396 AC_RUN_IFELSE(
2371 [AC_LANG_PROGRAM([[ 2397 [AC_LANG_PROGRAM([[
2372#include <stdio.h> 2398#include <stdio.h>
2399#include <stdlib.h>
2400#include <unistd.h>
2373#include <sys/fcntl.h> 2401#include <sys/fcntl.h>
2374#include <sys/types.h> 2402#include <sys/types.h>
2375#include <sys/wait.h> 2403#include <sys/wait.h>
@@ -2416,6 +2444,7 @@ if test "x$ac_cv_func_getaddrinfo" = "xyes" && \
2416 AC_RUN_IFELSE( 2444 AC_RUN_IFELSE(
2417 [AC_LANG_PROGRAM([[ 2445 [AC_LANG_PROGRAM([[
2418#include <stdio.h> 2446#include <stdio.h>
2447#include <stdlib.h>
2419#include <sys/socket.h> 2448#include <sys/socket.h>
2420#include <netdb.h> 2449#include <netdb.h>
2421#include <errno.h> 2450#include <errno.h>
@@ -2484,6 +2513,7 @@ if test "x$ac_cv_func_getaddrinfo" = "xyes" && \
2484 AC_RUN_IFELSE( 2513 AC_RUN_IFELSE(
2485 [AC_LANG_PROGRAM([[ 2514 [AC_LANG_PROGRAM([[
2486#include <stdio.h> 2515#include <stdio.h>
2516#include <stdlib.h>
2487#include <sys/socket.h> 2517#include <sys/socket.h>
2488#include <netdb.h> 2518#include <netdb.h>
2489#include <errno.h> 2519#include <errno.h>
@@ -2546,7 +2576,10 @@ fi
2546 2576
2547if test "x$check_for_conflicting_getspnam" = "x1"; then 2577if test "x$check_for_conflicting_getspnam" = "x1"; then
2548 AC_MSG_CHECKING([for conflicting getspnam in shadow.h]) 2578 AC_MSG_CHECKING([for conflicting getspnam in shadow.h])
2549 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <shadow.h> ]], 2579 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2580#include <shadow.h>
2581#include <stdlib.h>
2582 ]],
2550 [[ exit(0); ]])], 2583 [[ exit(0); ]])],
2551 [ 2584 [
2552 AC_MSG_RESULT([no]) 2585 AC_MSG_RESULT([no])
@@ -2576,6 +2609,7 @@ if test "x$ac_cv_func_strnvis" = "xyes"; then
2576#include <signal.h> 2609#include <signal.h>
2577#include <stdlib.h> 2610#include <stdlib.h>
2578#include <string.h> 2611#include <string.h>
2612#include <unistd.h>
2579#include <vis.h> 2613#include <vis.h>
2580static void sighandler(int sig) { _exit(1); } 2614static void sighandler(int sig) { _exit(1); }
2581 ]], [[ 2615 ]], [[
@@ -2604,6 +2638,7 @@ AC_RUN_IFELSE(
2604#include <sys/time.h> 2638#include <sys/time.h>
2605#include <stdlib.h> 2639#include <stdlib.h>
2606#include <signal.h> 2640#include <signal.h>
2641#include <unistd.h>
2607static void sighandler(int sig) { } 2642static void sighandler(int sig) { }
2608 ]], [[ 2643 ]], [[
2609 int r; 2644 int r;
@@ -2760,6 +2795,7 @@ if test "x$openssl" = "xyes" ; then
2760 AC_RUN_IFELSE( 2795 AC_RUN_IFELSE(
2761 [AC_LANG_PROGRAM([[ 2796 [AC_LANG_PROGRAM([[
2762 #include <stdio.h> 2797 #include <stdio.h>
2798 #include <stdlib.h>
2763 #include <string.h> 2799 #include <string.h>
2764 #include <openssl/opensslv.h> 2800 #include <openssl/opensslv.h>
2765 #include <openssl/crypto.h> 2801 #include <openssl/crypto.h>
@@ -2821,6 +2857,7 @@ if test "x$openssl" = "xyes" ; then
2821 AC_MSG_CHECKING([whether OpenSSL's headers match the library]) 2857 AC_MSG_CHECKING([whether OpenSSL's headers match the library])
2822 AC_RUN_IFELSE( 2858 AC_RUN_IFELSE(
2823 [AC_LANG_PROGRAM([[ 2859 [AC_LANG_PROGRAM([[
2860 #include <stdlib.h>
2824 #include <string.h> 2861 #include <string.h>
2825 #include <openssl/opensslv.h> 2862 #include <openssl/opensslv.h>
2826 #include <openssl/crypto.h> 2863 #include <openssl/crypto.h>
@@ -2960,6 +2997,7 @@ if test "x$openssl" = "xyes" ; then
2960 AC_MSG_CHECKING([whether OpenSSL has crippled AES support]) 2997 AC_MSG_CHECKING([whether OpenSSL has crippled AES support])
2961 AC_LINK_IFELSE( 2998 AC_LINK_IFELSE(
2962 [AC_LANG_PROGRAM([[ 2999 [AC_LANG_PROGRAM([[
3000 #include <stdlib.h>
2963 #include <string.h> 3001 #include <string.h>
2964 #include <openssl/evp.h> 3002 #include <openssl/evp.h>
2965 ]], [[ 3003 ]], [[
@@ -2979,6 +3017,7 @@ if test "x$openssl" = "xyes" ; then
2979 AC_MSG_CHECKING([whether OpenSSL has AES CTR via EVP]) 3017 AC_MSG_CHECKING([whether OpenSSL has AES CTR via EVP])
2980 AC_LINK_IFELSE( 3018 AC_LINK_IFELSE(
2981 [AC_LANG_PROGRAM([[ 3019 [AC_LANG_PROGRAM([[
3020 #include <stdlib.h>
2982 #include <string.h> 3021 #include <string.h>
2983 #include <openssl/evp.h> 3022 #include <openssl/evp.h>
2984 ]], [[ 3023 ]], [[
@@ -3000,6 +3039,7 @@ if test "x$openssl" = "xyes" ; then
3000 AC_MSG_CHECKING([whether OpenSSL has AES GCM via EVP]) 3039 AC_MSG_CHECKING([whether OpenSSL has AES GCM via EVP])
3001 AC_LINK_IFELSE( 3040 AC_LINK_IFELSE(
3002 [AC_LANG_PROGRAM([[ 3041 [AC_LANG_PROGRAM([[
3042 #include <stdlib.h>
3003 #include <string.h> 3043 #include <string.h>
3004 #include <openssl/evp.h> 3044 #include <openssl/evp.h>
3005 ]], [[ 3045 ]], [[
@@ -3027,6 +3067,7 @@ if test "x$openssl" = "xyes" ; then
3027 AC_MSG_CHECKING([if EVP_DigestUpdate returns an int]) 3067 AC_MSG_CHECKING([if EVP_DigestUpdate returns an int])
3028 AC_LINK_IFELSE( 3068 AC_LINK_IFELSE(
3029 [AC_LANG_PROGRAM([[ 3069 [AC_LANG_PROGRAM([[
3070 #include <stdlib.h>
3030 #include <string.h> 3071 #include <string.h>
3031 #include <openssl/evp.h> 3072 #include <openssl/evp.h>
3032 ]], [[ 3073 ]], [[
@@ -3113,6 +3154,7 @@ if test "x$openssl" = "xyes" ; then
3113 AC_MSG_CHECKING([if OpenSSL's NID_secp521r1 is functional]) 3154 AC_MSG_CHECKING([if OpenSSL's NID_secp521r1 is functional])
3114 AC_RUN_IFELSE( 3155 AC_RUN_IFELSE(
3115 [AC_LANG_PROGRAM([[ 3156 [AC_LANG_PROGRAM([[
3157 #include <stdlib.h>
3116 #include <openssl/ec.h> 3158 #include <openssl/ec.h>
3117 #include <openssl/ecdh.h> 3159 #include <openssl/ecdh.h>
3118 #include <openssl/ecdsa.h> 3160 #include <openssl/ecdsa.h>
@@ -3253,6 +3295,16 @@ if test "x$enable_sk" = "xyes" -a "x$enable_sk_internal" = "xyes" ; then
3253 ], [ AC_MSG_ERROR([no usable libfido2 found]) ], 3295 ], [ AC_MSG_ERROR([no usable libfido2 found]) ],
3254 [ $OTHERLIBS ] 3296 [ $OTHERLIBS ]
3255 ) 3297 )
3298 saved_LIBS="$LIBS"
3299 LIBS="$LIBS $LIBFIDO2"
3300 AC_CHECK_FUNCS([ \
3301 fido_cred_prot \
3302 fido_cred_set_prot \
3303 fido_dev_get_touch_begin \
3304 fido_dev_get_touch_status \
3305 fido_dev_supports_cred_prot \
3306 ])
3307 LIBS="$saved_LIBS"
3256 AC_CHECK_HEADER([fido.h], [], 3308 AC_CHECK_HEADER([fido.h], [],
3257 AC_MSG_ERROR([missing fido.h from libfido2])) 3309 AC_MSG_ERROR([missing fido.h from libfido2]))
3258 AC_CHECK_HEADER([fido/credman.h], [], 3310 AC_CHECK_HEADER([fido/credman.h], [],
@@ -3285,6 +3337,7 @@ if test "x$openssl" = "xyes" ; then
3285 AC_MSG_CHECKING([whether OpenSSL's PRNG is internally seeded]) 3337 AC_MSG_CHECKING([whether OpenSSL's PRNG is internally seeded])
3286 AC_RUN_IFELSE( 3338 AC_RUN_IFELSE(
3287 [AC_LANG_PROGRAM([[ 3339 [AC_LANG_PROGRAM([[
3340 #include <stdlib.h>
3288 #include <string.h> 3341 #include <string.h>
3289 #include <openssl/rand.h> 3342 #include <openssl/rand.h>
3290 ]], [[ 3343 ]], [[
@@ -3716,6 +3769,7 @@ if test -z "$have_llong_max" && test -z "$have_long_long_max"; then
3716 AC_RUN_IFELSE( 3769 AC_RUN_IFELSE(
3717 [AC_LANG_PROGRAM([[ 3770 [AC_LANG_PROGRAM([[
3718#include <stdio.h> 3771#include <stdio.h>
3772#include <stdlib.h>
3719/* Why is this so damn hard? */ 3773/* Why is this so damn hard? */
3720#ifdef __GNUC__ 3774#ifdef __GNUC__
3721# undef __GNUC__ 3775# undef __GNUC__
@@ -4231,6 +4285,7 @@ dnl test snprintf (broken on SCO w/gcc)
4231 AC_RUN_IFELSE( 4285 AC_RUN_IFELSE(
4232 [AC_LANG_SOURCE([[ 4286 [AC_LANG_SOURCE([[
4233#include <stdio.h> 4287#include <stdio.h>
4288#include <stdlib.h>
4234#include <string.h> 4289#include <string.h>
4235#ifdef HAVE_SNPRINTF 4290#ifdef HAVE_SNPRINTF
4236main() 4291main()
@@ -4275,6 +4330,7 @@ OSSH_CHECK_HEADER_FOR_FIELD([ut_exit], [utmp.h], [HAVE_EXIT_IN_UTMP])
4275OSSH_CHECK_HEADER_FOR_FIELD([ut_time], [utmp.h], [HAVE_TIME_IN_UTMP]) 4330OSSH_CHECK_HEADER_FOR_FIELD([ut_time], [utmp.h], [HAVE_TIME_IN_UTMP])
4276OSSH_CHECK_HEADER_FOR_FIELD([ut_time], [utmpx.h], [HAVE_TIME_IN_UTMPX]) 4331OSSH_CHECK_HEADER_FOR_FIELD([ut_time], [utmpx.h], [HAVE_TIME_IN_UTMPX])
4277OSSH_CHECK_HEADER_FOR_FIELD([ut_tv], [utmpx.h], [HAVE_TV_IN_UTMPX]) 4332OSSH_CHECK_HEADER_FOR_FIELD([ut_tv], [utmpx.h], [HAVE_TV_IN_UTMPX])
4333OSSH_CHECK_HEADER_FOR_FIELD([ut_ss], [utmpx.h], [HAVE_SS_IN_UTMPX])
4278 4334
4279AC_CHECK_MEMBERS([struct stat.st_blksize]) 4335AC_CHECK_MEMBERS([struct stat.st_blksize])
4280AC_CHECK_MEMBERS([struct stat.st_mtim]) 4336AC_CHECK_MEMBERS([struct stat.st_mtim])
@@ -4333,6 +4389,7 @@ AC_CACHE_CHECK([for msg_accrights field in struct msghdr],
4333#include <sys/types.h> 4389#include <sys/types.h>
4334#include <sys/socket.h> 4390#include <sys/socket.h>
4335#include <sys/uio.h> 4391#include <sys/uio.h>
4392#include <stdlib.h>
4336 ]], [[ 4393 ]], [[
4337#ifdef msg_accrights 4394#ifdef msg_accrights
4338#error "msg_accrights is a macro" 4395#error "msg_accrights is a macro"
@@ -4394,6 +4451,7 @@ AC_CACHE_CHECK([for msg_control field in struct msghdr],
4394#include <sys/types.h> 4451#include <sys/types.h>
4395#include <sys/socket.h> 4452#include <sys/socket.h>
4396#include <sys/uio.h> 4453#include <sys/uio.h>
4454#include <stdlib.h>
4397 ]], [[ 4455 ]], [[
4398#ifdef msg_control 4456#ifdef msg_control
4399#error "msg_control is a macro" 4457#error "msg_control is a macro"
@@ -4414,7 +4472,7 @@ if test "x$ac_cv_have_control_in_msghdr" = "xyes" ; then
4414fi 4472fi
4415 4473
4416AC_CACHE_CHECK([if libc defines __progname], ac_cv_libc_defines___progname, [ 4474AC_CACHE_CHECK([if libc defines __progname], ac_cv_libc_defines___progname, [
4417 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], 4475 AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #include <stdio.h> ]],
4418 [[ extern char *__progname; printf("%s", __progname); ]])], 4476 [[ extern char *__progname; printf("%s", __progname); ]])],
4419 [ ac_cv_libc_defines___progname="yes" ], 4477 [ ac_cv_libc_defines___progname="yes" ],
4420 [ ac_cv_libc_defines___progname="no" 4478 [ ac_cv_libc_defines___progname="no"
@@ -4486,7 +4544,7 @@ if test "x$ac_cv_have_getopt_optreset" = "xyes" ; then
4486fi 4544fi
4487 4545
4488AC_CACHE_CHECK([if libc defines sys_errlist], ac_cv_libc_defines_sys_errlist, [ 4546AC_CACHE_CHECK([if libc defines sys_errlist], ac_cv_libc_defines_sys_errlist, [
4489 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], 4547 AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #include <stdio.h> ]],
4490[[ extern const char *const sys_errlist[]; printf("%s", sys_errlist[0]);]])], 4548[[ extern const char *const sys_errlist[]; printf("%s", sys_errlist[0]);]])],
4491 [ ac_cv_libc_defines_sys_errlist="yes" ], 4549 [ ac_cv_libc_defines_sys_errlist="yes" ],
4492 [ ac_cv_libc_defines_sys_errlist="no" 4550 [ ac_cv_libc_defines_sys_errlist="no"
@@ -4499,7 +4557,7 @@ fi
4499 4557
4500 4558
4501AC_CACHE_CHECK([if libc defines sys_nerr], ac_cv_libc_defines_sys_nerr, [ 4559AC_CACHE_CHECK([if libc defines sys_nerr], ac_cv_libc_defines_sys_nerr, [
4502 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], 4560 AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #include <stdio.h> ]],
4503[[ extern int sys_nerr; printf("%i", sys_nerr);]])], 4561[[ extern int sys_nerr; printf("%i", sys_nerr);]])],
4504 [ ac_cv_libc_defines_sys_nerr="yes" ], 4562 [ ac_cv_libc_defines_sys_nerr="yes" ],
4505 [ ac_cv_libc_defines_sys_nerr="no" 4563 [ ac_cv_libc_defines_sys_nerr="no"
@@ -4593,13 +4651,10 @@ AC_ARG_WITH([selinux],
4593 LIBS="$LIBS -lselinux" 4651 LIBS="$LIBS -lselinux"
4594 ], 4652 ],
4595 AC_MSG_ERROR([SELinux support requires libselinux library])) 4653 AC_MSG_ERROR([SELinux support requires libselinux library]))
4596 SSHLIBS="$SSHLIBS $LIBSELINUX"
4597 SSHDLIBS="$SSHDLIBS $LIBSELINUX"
4598 AC_CHECK_FUNCS([getseuserbyname get_default_context_with_level]) 4654 AC_CHECK_FUNCS([getseuserbyname get_default_context_with_level])
4599 LIBS="$save_LIBS" 4655 LIBS="$save_LIBS $LIBSELINUX"
4600 fi ] 4656 fi ]
4601) 4657)
4602AC_SUBST([SSHLIBS])
4603AC_SUBST([SSHDLIBS]) 4658AC_SUBST([SSHDLIBS])
4604 4659
4605# Check whether user wants Kerberos 5 support 4660# Check whether user wants Kerberos 5 support
@@ -4834,6 +4889,7 @@ AC_ARG_WITH([maildir],
4834 AC_RUN_IFELSE( 4889 AC_RUN_IFELSE(
4835 [AC_LANG_PROGRAM([[ 4890 [AC_LANG_PROGRAM([[
4836#include <stdio.h> 4891#include <stdio.h>
4892#include <stdlib.h>
4837#include <string.h> 4893#include <string.h>
4838#ifdef HAVE_PATHS_H 4894#ifdef HAVE_PATHS_H
4839#include <paths.h> 4895#include <paths.h>
@@ -5078,6 +5134,7 @@ otherwise scp will not work.])
5078 [AC_LANG_PROGRAM([[ 5134 [AC_LANG_PROGRAM([[
5079/* find out what STDPATH is */ 5135/* find out what STDPATH is */
5080#include <stdio.h> 5136#include <stdio.h>
5137#include <stdlib.h>
5081#ifdef HAVE_PATHS_H 5138#ifdef HAVE_PATHS_H
5082# include <paths.h> 5139# include <paths.h>
5083#endif 5140#endif
@@ -5585,9 +5642,6 @@ echo " Libraries: ${LIBS}"
5585if test ! -z "${SSHDLIBS}"; then 5642if test ! -z "${SSHDLIBS}"; then
5586echo " +for sshd: ${SSHDLIBS}" 5643echo " +for sshd: ${SSHDLIBS}"
5587fi 5644fi
5588if test ! -z "${SSHLIBS}"; then
5589echo " +for ssh: ${SSHLIBS}"
5590fi
5591 5645
5592echo "" 5646echo ""
5593 5647
diff --git a/contrib/gnome-ssh-askpass2.c b/contrib/gnome-ssh-askpass2.c
index 88cdfaeff..bf8c92c8f 100644
--- a/contrib/gnome-ssh-askpass2.c
+++ b/contrib/gnome-ssh-askpass2.c
@@ -56,9 +56,11 @@
56#include <stdio.h> 56#include <stdio.h>
57#include <string.h> 57#include <string.h>
58#include <unistd.h> 58#include <unistd.h>
59
59#include <X11/Xlib.h> 60#include <X11/Xlib.h>
60#include <gtk/gtk.h> 61#include <gtk/gtk.h>
61#include <gdk/gdkx.h> 62#include <gdk/gdkx.h>
63#include <gdk/gdkkeysyms.h>
62 64
63static void 65static void
64report_failed_grab (GtkWidget *parent_window, const char *what) 66report_failed_grab (GtkWidget *parent_window, const char *what)
@@ -85,6 +87,67 @@ ok_dialog(GtkWidget *entry, gpointer dialog)
85 gtk_dialog_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK); 87 gtk_dialog_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK);
86} 88}
87 89
90static gboolean
91check_none(GtkWidget *widget, GdkEventKey *event, gpointer dialog)
92{
93 switch (event->keyval) {
94 case GDK_KEY_Escape:
95 /* esc -> close dialog */
96 gtk_dialog_response(GTK_DIALOG(dialog), GTK_RESPONSE_CLOSE);
97 return TRUE;
98 case GDK_KEY_Tab:
99 /* tab -> focus close button */
100 gtk_widget_grab_focus(gtk_dialog_get_widget_for_response(
101 dialog, GTK_RESPONSE_CLOSE));
102 return TRUE;
103 default:
104 /* eat all other key events */
105 return TRUE;
106 }
107}
108
109static int
110parse_env_hex_color(const char *env, GdkColor *c)
111{
112 const char *s;
113 unsigned long ul;
114 char *ep;
115 size_t n;
116
117 if ((s = getenv(env)) == NULL)
118 return 0;
119
120 memset(c, 0, sizeof(*c));
121
122 /* Permit hex rgb or rrggbb optionally prefixed by '#' or '0x' */
123 if (*s == '#')
124 s++;
125 else if (strncmp(s, "0x", 2) == 0)
126 s += 2;
127 n = strlen(s);
128 if (n != 3 && n != 6)
129 goto bad;
130 ul = strtoul(s, &ep, 16);
131 if (*ep != '\0' || ul > 0xffffff) {
132 bad:
133 fprintf(stderr, "Invalid $%s - invalid hex color code\n", env);
134 return 0;
135 }
136 /* Valid hex sequence; expand into a GdkColor */
137 if (n == 3) {
138 /* 4-bit RGB */
139 c->red = ((ul >> 8) & 0xf) << 12;
140 c->green = ((ul >> 4) & 0xf) << 12;
141 c->blue = (ul & 0xf) << 12;
142 } else {
143 /* 8-bit RGB */
144 c->red = ((ul >> 16) & 0xff) << 8;
145 c->green = ((ul >> 8) & 0xff) << 8;
146 c->blue = (ul & 0xff) << 8;
147 }
148 return 1;
149}
150
88static int 151static int
89passphrase_dialog(char *message, int prompt_type) 152passphrase_dialog(char *message, int prompt_type)
90{ 153{
@@ -94,11 +157,16 @@ passphrase_dialog(char *message, int prompt_type)
94 int buttons, default_response; 157 int buttons, default_response;
95 GtkWidget *parent_window, *dialog, *entry; 158 GtkWidget *parent_window, *dialog, *entry;
96 GdkGrabStatus status; 159 GdkGrabStatus status;
160 GdkColor fg, bg;
161 int fg_set = 0, bg_set = 0;
97 162
98 grab_server = (getenv("GNOME_SSH_ASKPASS_GRAB_SERVER") != NULL); 163 grab_server = (getenv("GNOME_SSH_ASKPASS_GRAB_SERVER") != NULL);
99 grab_pointer = (getenv("GNOME_SSH_ASKPASS_GRAB_POINTER") != NULL); 164 grab_pointer = (getenv("GNOME_SSH_ASKPASS_GRAB_POINTER") != NULL);
100 grab_tries = 0; 165 grab_tries = 0;
101 166
167 fg_set = parse_env_hex_color("GNOME_SSH_ASKPASS_FG_COLOR", &fg);
168 bg_set = parse_env_hex_color("GNOME_SSH_ASKPASS_BG_COLOR", &bg);
169
102 /* Create an invisible parent window so that GtkDialog doesn't 170 /* Create an invisible parent window so that GtkDialog doesn't
103 * complain. */ 171 * complain. */
104 parent_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 172 parent_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
@@ -127,17 +195,38 @@ passphrase_dialog(char *message, int prompt_type)
127 gtk_dialog_set_default_response(GTK_DIALOG(dialog), default_response); 195 gtk_dialog_set_default_response(GTK_DIALOG(dialog), default_response);
128 gtk_window_set_keep_above(GTK_WINDOW(dialog), TRUE); 196 gtk_window_set_keep_above(GTK_WINDOW(dialog), TRUE);
129 197
130 if (prompt_type == PROMPT_ENTRY) { 198 if (fg_set)
199 gtk_widget_modify_fg(dialog, GTK_STATE_NORMAL, &fg);
200 if (bg_set)
201 gtk_widget_modify_bg(dialog, GTK_STATE_NORMAL, &bg);
202
203 if (prompt_type == PROMPT_ENTRY || prompt_type == PROMPT_NONE) {
131 entry = gtk_entry_new(); 204 entry = gtk_entry_new();
205 if (fg_set)
206 gtk_widget_modify_fg(entry, GTK_STATE_NORMAL, &fg);
207 if (bg_set)
208 gtk_widget_modify_bg(entry, GTK_STATE_NORMAL, &bg);
132 gtk_box_pack_start( 209 gtk_box_pack_start(
133 GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), 210 GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),
134 entry, FALSE, FALSE, 0); 211 entry, FALSE, FALSE, 0);
135 gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); 212 gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE);
136 gtk_widget_grab_focus(entry); 213 gtk_widget_grab_focus(entry);
137 gtk_widget_show(entry); 214 if (prompt_type == PROMPT_ENTRY) {
138 /* Make <enter> close dialog */ 215 gtk_widget_show(entry);
139 g_signal_connect(G_OBJECT(entry), "activate", 216 /* Make <enter> close dialog */
140 G_CALLBACK(ok_dialog), dialog); 217 g_signal_connect(G_OBJECT(entry), "activate",
218 G_CALLBACK(ok_dialog), dialog);
219 } else {
220 /*
221 * Ensure the 'close' button is not focused by default
222 * but is still reachable via tab. This is a bit of a
223 * hack - it uses a hidden entry that responds to a
224 * couple of keypress events (escape and tab only).
225 */
226 gtk_widget_realize(entry);
227 g_signal_connect(G_OBJECT(entry), "key_press_event",
228 G_CALLBACK(check_none), dialog);
229 }
141 } 230 }
142 231
143 /* Grab focus */ 232 /* Grab focus */
diff --git a/contrib/redhat/openssh.spec b/contrib/redhat/openssh.spec
index dcd57aa19..df99f7d73 100644
--- a/contrib/redhat/openssh.spec
+++ b/contrib/redhat/openssh.spec
@@ -1,4 +1,4 @@
1%global ver 8.3p1 1%global ver 8.4p1
2%global rel 1%{?dist} 2%global rel 1%{?dist}
3 3
4# OpenSSH privilege separation requires a user & group ID 4# OpenSSH privilege separation requires a user & group ID
@@ -363,8 +363,10 @@ fi
363%attr(0755,root,root) %dir %{_libexecdir}/openssh 363%attr(0755,root,root) %dir %{_libexecdir}/openssh
364%attr(4711,root,root) %{_libexecdir}/openssh/ssh-keysign 364%attr(4711,root,root) %{_libexecdir}/openssh/ssh-keysign
365%attr(0755,root,root) %{_libexecdir}/openssh/ssh-pkcs11-helper 365%attr(0755,root,root) %{_libexecdir}/openssh/ssh-pkcs11-helper
366%attr(0755,root,root) %{_libexecdir}/openssh/ssh-sk-helper
366%attr(0644,root,root) %{_mandir}/man8/ssh-keysign.8* 367%attr(0644,root,root) %{_mandir}/man8/ssh-keysign.8*
367%attr(0644,root,root) %{_mandir}/man8/ssh-pkcs11-helper.8* 368%attr(0644,root,root) %{_mandir}/man8/ssh-pkcs11-helper.8*
369%attr(0644,root,root) %{_mandir}/man8/ssh-sk-helper.8*
368%endif 370%endif
369%if %{scard} 371%if %{scard}
370%attr(0755,root,root) %dir %{_datadir}/openssh 372%attr(0755,root,root) %dir %{_datadir}/openssh
@@ -422,6 +424,9 @@ fi
422%endif 424%endif
423 425
424%changelog 426%changelog
427* Mon Jul 20 2020 Damien Miller <djm@mindrto.org>
428- Add ssh-sk-helper and corresponding manual page.
429
425* Sat Feb 10 2018 Darren Tucker <dtucker@dtucker.net> 430* Sat Feb 10 2018 Darren Tucker <dtucker@dtucker.net>
426- Update openssl-devel dependency to match current requirements. 431- Update openssl-devel dependency to match current requirements.
427- Handle Fedora >=6 openssl 1.0 compat libs. 432- Handle Fedora >=6 openssl 1.0 compat libs.
diff --git a/contrib/ssh-copy-id b/contrib/ssh-copy-id
index b83b83619..392f64f94 100644
--- a/contrib/ssh-copy-id
+++ b/contrib/ssh-copy-id
@@ -1,6 +1,7 @@
1#!/bin/sh 1#!/bin/sh
2 2
3# Copyright (c) 1999-2016 Philip Hands <phil@hands.com> 3# Copyright (c) 1999-2020 Philip Hands <phil@hands.com>
4# 2017 Sebastien Boyron <seb@boyron.eu>
4# 2013 Martin Kletzander <mkletzan@redhat.com> 5# 2013 Martin Kletzander <mkletzan@redhat.com>
5# 2010 Adeodato =?iso-8859-1?Q?Sim=F3?= <asp16@alu.ua.es> 6# 2010 Adeodato =?iso-8859-1?Q?Sim=F3?= <asp16@alu.ua.es>
6# 2010 Eric Moret <eric.moret@gmail.com> 7# 2010 Eric Moret <eric.moret@gmail.com>
@@ -33,13 +34,15 @@
33# Shell script to install your public key(s) on a remote machine 34# Shell script to install your public key(s) on a remote machine
34# See the ssh-copy-id(1) man page for details 35# See the ssh-copy-id(1) man page for details
35 36
37# shellcheck shell=dash
38
36# check that we have something mildly sane as our shell, or try to find something better 39# check that we have something mildly sane as our shell, or try to find something better
37if false ^ printf "%s: WARNING: ancient shell, hunting for a more modern one... " "$0" 40if false ^ printf "%s: WARNING: ancient shell, hunting for a more modern one... " "$0"
38then 41then
39 SANE_SH=${SANE_SH:-/usr/bin/ksh} 42 SANE_SH=${SANE_SH:-/usr/bin/ksh}
40 if printf 'true ^ false\n' | "$SANE_SH" 43 if printf 'true ^ false\n' | "$SANE_SH"
41 then 44 then
42 printf "'%s' seems viable.\n" "$SANE_SH" 45 printf "'%s' seems viable.\\n" "$SANE_SH"
43 exec "$SANE_SH" "$0" "$@" 46 exec "$SANE_SH" "$0" "$@"
44 else 47 else
45 cat <<-EOF 48 cat <<-EOF
@@ -51,16 +54,16 @@ then
51 a bug describing your setup, and the shell you used to make it work. 54 a bug describing your setup, and the shell you used to make it work.
52 55
53 EOF 56 EOF
54 printf "%s: ERROR: Less dimwitted shell required.\n" "$0" 57 printf '%s: ERROR: Less dimwitted shell required.\n' "$0"
55 exit 1 58 exit 1
56 fi 59 fi
57fi 60fi
58 61
59most_recent_id="$(cd "$HOME" ; ls -t .ssh/id*.pub 2>/dev/null | grep -v -- '-cert.pub$' | head -n 1)" 62# shellcheck disable=SC2010
60DEFAULT_PUB_ID_FILE="${most_recent_id:+$HOME/}$most_recent_id" 63DEFAULT_PUB_ID_FILE=$(ls -t "${HOME}"/.ssh/id*.pub 2>/dev/null | grep -v -- '-cert.pub$' | head -n 1)
61 64
62usage () { 65usage () {
63 printf 'Usage: %s [-h|-?|-f|-n] [-i [identity_file]] [-p port] [[-o <ssh -o options>] ...] [user@]hostname\n' "$0" >&2 66 printf 'Usage: %s [-h|-?|-f|-n] [-i [identity_file]] [-p port] [-F alternative ssh_config file] [[-o <ssh -o options>] ...] [user@]hostname\n' "$0" >&2
64 printf '\t-f: force mode -- copy keys without trying to check if they are already installed\n' >&2 67 printf '\t-f: force mode -- copy keys without trying to check if they are already installed\n' >&2
65 printf '\t-n: dry run -- no keys are actually copied\n' >&2 68 printf '\t-n: dry run -- no keys are actually copied\n' >&2
66 printf '\t-h|-?: print this help\n' >&2 69 printf '\t-h|-?: print this help\n' >&2
@@ -69,18 +72,18 @@ usage () {
69 72
70# escape any single quotes in an argument 73# escape any single quotes in an argument
71quote() { 74quote() {
72 printf "%s\n" "$1" | sed -e "s/'/'\\\\''/g" 75 printf '%s\n' "$1" | sed -e "s/'/'\\\\''/g"
73} 76}
74 77
75use_id_file() { 78use_id_file() {
76 local L_ID_FILE="$1" 79 local L_ID_FILE="$1"
77 80
78 if [ -z "$L_ID_FILE" ] ; then 81 if [ -z "$L_ID_FILE" ] ; then
79 printf "%s: ERROR: no ID file found\n" "$0" 82 printf '%s: ERROR: no ID file found\n' "$0"
80 exit 1 83 exit 1
81 fi 84 fi
82 85
83 if expr "$L_ID_FILE" : ".*\.pub$" >/dev/null ; then 86 if expr "$L_ID_FILE" : '.*\.pub$' >/dev/null ; then
84 PUB_ID_FILE="$L_ID_FILE" 87 PUB_ID_FILE="$L_ID_FILE"
85 else 88 else
86 PUB_ID_FILE="$L_ID_FILE.pub" 89 PUB_ID_FILE="$L_ID_FILE.pub"
@@ -93,7 +96,7 @@ use_id_file() {
93 ErrMSG=$( { : < "$f" ; } 2>&1 ) || { 96 ErrMSG=$( { : < "$f" ; } 2>&1 ) || {
94 local L_PRIVMSG="" 97 local L_PRIVMSG=""
95 [ "$f" = "$PRIV_ID_FILE" ] && L_PRIVMSG=" (to install the contents of '$PUB_ID_FILE' anyway, look at the -f option)" 98 [ "$f" = "$PRIV_ID_FILE" ] && L_PRIVMSG=" (to install the contents of '$PUB_ID_FILE' anyway, look at the -f option)"
96 printf "\n%s: ERROR: failed to open ID file '%s': %s\n" "$0" "$f" "$(printf "%s\n%s\n" "$ErrMSG" "$L_PRIVMSG" | sed -e 's/.*: *//')" 99 printf "\\n%s: ERROR: failed to open ID file '%s': %s\\n" "$0" "$f" "$(printf '%s\n%s\n' "$ErrMSG" "$L_PRIVMSG" | sed -e 's/.*: *//')"
97 exit 1 100 exit 1
98 } 101 }
99 done 102 done
@@ -105,80 +108,37 @@ if [ -n "$SSH_AUTH_SOCK" ] && ssh-add -L >/dev/null 2>&1 ; then
105 GET_ID="ssh-add -L" 108 GET_ID="ssh-add -L"
106fi 109fi
107 110
108while test "$#" -gt 0 111while getopts "i:o:p:F:fnh?" OPT
109do 112do
110 [ "${SEEN_OPT_I}" ] && expr "$1" : "[-]i" >/dev/null && {
111 printf "\n%s: ERROR: -i option must not be specified more than once\n\n" "$0"
112 usage
113 }
114
115 OPT= OPTARG=
116 # implement something like getopt to avoid Solaris pain
117 case "$1" in
118 -i?*|-o?*|-p?*)
119 OPT="$(printf -- "$1"|cut -c1-2)"
120 OPTARG="$(printf -- "$1"|cut -c3-)"
121 shift
122 ;;
123 -o|-p)
124 OPT="$1"
125 OPTARG="$2"
126 shift 2
127 ;;
128 -i)
129 OPT="$1"
130 test "$#" -le 2 || expr "$2" : "[-]" >/dev/null || {
131 OPTARG="$2"
132 shift
133 }
134 shift
135 ;;
136 -f|-n|-h|-\?)
137 OPT="$1"
138 OPTARG=
139 shift
140 ;;
141 --)
142 shift
143 while test "$#" -gt 0
144 do
145 SAVEARGS="${SAVEARGS:+$SAVEARGS }'$(quote "$1")'"
146 shift
147 done
148 break
149 ;;
150 -*)
151 printf "\n%s: ERROR: invalid option (%s)\n\n" "$0" "$1"
152 usage
153 ;;
154 *)
155 SAVEARGS="${SAVEARGS:+$SAVEARGS }'$(quote "$1")'"
156 shift
157 continue
158 ;;
159 esac
160 113
161 case "$OPT" in 114 case "$OPT" in
162 -i) 115 i)
116 [ "${SEEN_OPT_I}" ] && {
117 printf '\n%s: ERROR: -i option must not be specified more than once\n\n' "$0"
118 usage
119 }
163 SEEN_OPT_I="yes" 120 SEEN_OPT_I="yes"
164 use_id_file "${OPTARG:-$DEFAULT_PUB_ID_FILE}" 121 use_id_file "${OPTARG:-$DEFAULT_PUB_ID_FILE}"
165 ;; 122 ;;
166 -o|-p) 123 o|p|F)
167 SSH_OPTS="${SSH_OPTS:+$SSH_OPTS }$OPT '$(quote "$OPTARG")'" 124 SSH_OPTS="${SSH_OPTS:+$SSH_OPTS }-$OPT '$(quote "${OPTARG}")'"
168 ;; 125 ;;
169 -f) 126 f)
170 FORCED=1 127 FORCED=1
171 ;; 128 ;;
172 -n) 129 n)
173 DRY_RUN=1 130 DRY_RUN=1
174 ;; 131 ;;
175 -h|-\?) 132 h|\?)
176 usage 133 usage
177 ;; 134 ;;
178 esac 135 esac
179done 136done
137#shift all args to keep only USER_HOST
138shift $((OPTIND-1))
139
140
180 141
181eval set -- "$SAVEARGS"
182 142
183if [ $# = 0 ] ; then 143if [ $# = 0 ] ; then
184 usage 144 usage
@@ -189,16 +149,18 @@ if [ $# != 1 ] ; then
189fi 149fi
190 150
191# drop trailing colon 151# drop trailing colon
192USER_HOST=$(printf "%s\n" "$1" | sed 's/:$//') 152USER_HOST="$*"
193# tack the hostname onto SSH_OPTS 153# tack the hostname onto SSH_OPTS
194SSH_OPTS="${SSH_OPTS:+$SSH_OPTS }'$(quote "$USER_HOST")'" 154SSH_OPTS="${SSH_OPTS:+$SSH_OPTS }'$(quote "$USER_HOST")'"
195# and populate "$@" for later use (only way to get proper quoting of options) 155# and populate "$@" for later use (only way to get proper quoting of options)
196eval set -- "$SSH_OPTS" 156eval set -- "$SSH_OPTS"
197 157
158# shellcheck disable=SC2086
198if [ -z "$(eval $GET_ID)" ] && [ -r "${PUB_ID_FILE:=$DEFAULT_PUB_ID_FILE}" ] ; then 159if [ -z "$(eval $GET_ID)" ] && [ -r "${PUB_ID_FILE:=$DEFAULT_PUB_ID_FILE}" ] ; then
199 use_id_file "$PUB_ID_FILE" 160 use_id_file "$PUB_ID_FILE"
200fi 161fi
201 162
163# shellcheck disable=SC2086
202if [ -z "$(eval $GET_ID)" ] ; then 164if [ -z "$(eval $GET_ID)" ] ; then
203 printf '%s: ERROR: No identities found\n' "$0" >&2 165 printf '%s: ERROR: No identities found\n' "$0" >&2
204 exit 1 166 exit 1
@@ -209,6 +171,7 @@ fi
209populate_new_ids() { 171populate_new_ids() {
210 local L_SUCCESS="$1" 172 local L_SUCCESS="$1"
211 173
174 # shellcheck disable=SC2086
212 if [ "$FORCED" ] ; then 175 if [ "$FORCED" ] ; then
213 NEW_IDS=$(eval $GET_ID) 176 NEW_IDS=$(eval $GET_ID)
214 return 177 return
@@ -218,17 +181,20 @@ populate_new_ids() {
218 eval set -- "$SSH_OPTS" 181 eval set -- "$SSH_OPTS"
219 182
220 umask 0177 183 umask 0177
221 local L_TMP_ID_FILE=$(mktemp ~/.ssh/ssh-copy-id_id.XXXXXXXXXX) 184 local L_TMP_ID_FILE
185 L_TMP_ID_FILE=$(mktemp ~/.ssh/ssh-copy-id_id.XXXXXXXXXX)
222 if test $? -ne 0 || test "x$L_TMP_ID_FILE" = "x" ; then 186 if test $? -ne 0 || test "x$L_TMP_ID_FILE" = "x" ; then
223 printf '%s: ERROR: mktemp failed\n' "$0" >&2 187 printf '%s: ERROR: mktemp failed\n' "$0" >&2
224 exit 1 188 exit 1
225 fi 189 fi
226 local L_CLEANUP="rm -f \"$L_TMP_ID_FILE\" \"${L_TMP_ID_FILE}.stderr\"" 190 local L_CLEANUP="rm -f \"$L_TMP_ID_FILE\" \"${L_TMP_ID_FILE}.stderr\""
191 # shellcheck disable=SC2064
227 trap "$L_CLEANUP" EXIT TERM INT QUIT 192 trap "$L_CLEANUP" EXIT TERM INT QUIT
228 printf '%s: INFO: attempting to log in with the new key(s), to filter out any that are already installed\n' "$0" >&2 193 printf '%s: INFO: attempting to log in with the new key(s), to filter out any that are already installed\n' "$0" >&2
194 # shellcheck disable=SC2086
229 NEW_IDS=$( 195 NEW_IDS=$(
230 eval $GET_ID | { 196 eval $GET_ID | {
231 while read ID || [ "$ID" ] ; do 197 while read -r ID || [ "$ID" ] ; do
232 printf '%s\n' "$ID" > "$L_TMP_ID_FILE" 198 printf '%s\n' "$ID" > "$L_TMP_ID_FILE"
233 199
234 # the next line assumes $PRIV_ID_FILE only set if using a single id file - this 200 # the next line assumes $PRIV_ID_FILE only set if using a single id file - this
@@ -261,21 +227,52 @@ populate_new_ids() {
261 fi 227 fi
262 if [ -z "$NEW_IDS" ] ; then 228 if [ -z "$NEW_IDS" ] ; then
263 printf '\n%s: WARNING: All keys were skipped because they already exist on the remote system.\n' "$0" >&2 229 printf '\n%s: WARNING: All keys were skipped because they already exist on the remote system.\n' "$0" >&2
264 printf '\t\t(if you think this is a mistake, you may want to use -f option)\n\n' "$0" >&2 230 printf '\t\t(if you think this is a mistake, you may want to use -f option)\n\n' >&2
265 exit 0 231 exit 0
266 fi 232 fi
267 printf '%s: INFO: %d key(s) remain to be installed -- if you are prompted now it is to install the new keys\n' "$0" "$(printf '%s\n' "$NEW_IDS" | wc -l)" >&2 233 printf '%s: INFO: %d key(s) remain to be installed -- if you are prompted now it is to install the new keys\n' "$0" "$(printf '%s\n' "$NEW_IDS" | wc -l)" >&2
268} 234}
269 235
236# installkey_sh [target_path]
237# produce a one-liner to add the keys to remote authorized_keys file
238# optionally takes an alternative path for authorized_keys
239installkeys_sh() {
240 local AUTH_KEY_FILE=${1:-.ssh/authorized_keys}
241
242 # In setting INSTALLKEYS_SH:
243 # the tr puts it all on one line (to placate tcsh)
244 # (hence the excessive use of semi-colons (;) )
245 # then in the command:
246 # cd to be at $HOME, just in case;
247 # the -z `tail ...` checks for a trailing newline. The echo adds one if was missing
248 # the cat adds the keys we're getting via STDIN
249 # and if available restorecon is used to restore the SELinux context
250 INSTALLKEYS_SH=$(tr '\t\n' ' ' <<-EOF)
251 cd;
252 umask 077;
253 mkdir -p $(dirname "${AUTH_KEY_FILE}") &&
254 { [ -z \`tail -1c ${AUTH_KEY_FILE} 2>/dev/null\` ] || echo >> ${AUTH_KEY_FILE}; } &&
255 cat >> ${AUTH_KEY_FILE} ||
256 exit 1;
257 if type restorecon >/dev/null 2>&1; then
258 restorecon -F .ssh ${AUTH_KEY_FILE};
259 fi
260EOF
261
262 # to defend against quirky remote shells: use 'exec sh -c' to get POSIX;
263 printf "exec sh -c '%s'" "${INSTALLKEYS_SH}"
264}
265
270REMOTE_VERSION=$(ssh -v -o PreferredAuthentications=',' -o ControlPath=none "$@" 2>&1 | 266REMOTE_VERSION=$(ssh -v -o PreferredAuthentications=',' -o ControlPath=none "$@" 2>&1 |
271 sed -ne 's/.*remote software version //p') 267 sed -ne 's/.*remote software version //p')
272 268
269# shellcheck disable=SC2029
273case "$REMOTE_VERSION" in 270case "$REMOTE_VERSION" in
274 NetScreen*) 271 NetScreen*)
275 populate_new_ids 1 272 populate_new_ids 1
276 for KEY in $(printf "%s" "$NEW_IDS" | cut -d' ' -f2) ; do 273 for KEY in $(printf "%s" "$NEW_IDS" | cut -d' ' -f2) ; do
277 KEY_NO=$(($KEY_NO + 1)) 274 KEY_NO=$((KEY_NO + 1))
278 printf "%s\n" "$KEY" | grep ssh-dss >/dev/null || { 275 printf '%s\n' "$KEY" | grep ssh-dss >/dev/null || {
279 printf '%s: WARNING: Non-dsa key (#%d) skipped (NetScreen only supports DSA keys)\n' "$0" "$KEY_NO" >&2 276 printf '%s: WARNING: Non-dsa key (#%d) skipped (NetScreen only supports DSA keys)\n' "$0" "$KEY_NO" >&2
280 continue 277 continue
281 } 278 }
@@ -283,20 +280,25 @@ case "$REMOTE_VERSION" in
283 if [ $? = 255 ] ; then 280 if [ $? = 255 ] ; then
284 printf '%s: ERROR: installation of key #%d failed (please report a bug describing what caused this, so that we can make this message useful)\n' "$0" "$KEY_NO" >&2 281 printf '%s: ERROR: installation of key #%d failed (please report a bug describing what caused this, so that we can make this message useful)\n' "$0" "$KEY_NO" >&2
285 else 282 else
286 ADDED=$(($ADDED + 1)) 283 ADDED=$((ADDED + 1))
287 fi 284 fi
288 done 285 done
289 if [ -z "$ADDED" ] ; then 286 if [ -z "$ADDED" ] ; then
290 exit 1 287 exit 1
291 fi 288 fi
292 ;; 289 ;;
290 dropbear*)
291 populate_new_ids 0
292 [ "$DRY_RUN" ] || printf '%s\n' "$NEW_IDS" | \
293 ssh "$@" "$(installkeys_sh /etc/dropbear/authorized_keys)" \
294 || exit 1
295 ADDED=$(printf '%s\n' "$NEW_IDS" | wc -l)
296 ;;
293 *) 297 *)
294 # Assuming that the remote host treats ~/.ssh/authorized_keys as one might expect 298 # Assuming that the remote host treats ~/.ssh/authorized_keys as one might expect
295 populate_new_ids 0 299 populate_new_ids 0
296 # in ssh below - to defend against quirky remote shells: use 'exec sh -c' to get POSIX;
297 # 'cd' to be at $HOME; add a newline if it's missing; and all on one line, because tcsh.
298 [ "$DRY_RUN" ] || printf '%s\n' "$NEW_IDS" | \ 300 [ "$DRY_RUN" ] || printf '%s\n' "$NEW_IDS" | \
299 ssh "$@" "exec sh -c 'cd ; umask 077 ; mkdir -p .ssh && { [ -z "'`tail -1c .ssh/authorized_keys 2>/dev/null`'" ] || echo >> .ssh/authorized_keys ; } && cat >> .ssh/authorized_keys || exit 1 ; if type restorecon >/dev/null 2>&1 ; then restorecon -F .ssh .ssh/authorized_keys ; fi'" \ 301 ssh "$@" "$(installkeys_sh)" \
300 || exit 1 302 || exit 1
301 ADDED=$(printf '%s\n' "$NEW_IDS" | wc -l) 303 ADDED=$(printf '%s\n' "$NEW_IDS" | wc -l)
302 ;; 304 ;;
diff --git a/contrib/ssh-copy-id.1 b/contrib/ssh-copy-id.1
index ae75c79a5..b75a88365 100644
--- a/contrib/ssh-copy-id.1
+++ b/contrib/ssh-copy-id.1
@@ -1,5 +1,5 @@
1.ig \" -*- nroff -*- 1.ig \" -*- nroff -*-
2Copyright (c) 1999-2013 hands.com Ltd. <http://hands.com/> 2Copyright (c) 1999-2016 hands.com Ltd. <http://hands.com/>
3 3
4Redistribution and use in source and binary forms, with or without 4Redistribution and use in source and binary forms, with or without
5modification, are permitted provided that the following conditions 5modification, are permitted provided that the following conditions
diff --git a/contrib/suse/openssh.spec b/contrib/suse/openssh.spec
index a2789052d..e6459e82d 100644
--- a/contrib/suse/openssh.spec
+++ b/contrib/suse/openssh.spec
@@ -13,7 +13,7 @@
13 13
14Summary: OpenSSH, a free Secure Shell (SSH) protocol implementation 14Summary: OpenSSH, a free Secure Shell (SSH) protocol implementation
15Name: openssh 15Name: openssh
16Version: 8.3p1 16Version: 8.4p1
17URL: https://www.openssh.com/ 17URL: https://www.openssh.com/
18Release: 1 18Release: 1
19Source0: openssh-%{version}.tar.gz 19Source0: openssh-%{version}.tar.gz
@@ -75,6 +75,8 @@ patented algorithms to separate libraries (OpenSSL).
75This package contains an X Window System passphrase dialog for OpenSSH. 75This package contains an X Window System passphrase dialog for OpenSSH.
76 76
77%changelog 77%changelog
78* Mon Jul 20 2020 Damien Miller <djm@mindrto.org>
79- Add ssh-sk-helper and corresponding manual page.
78* Wed Oct 26 2005 Iain Morgan <imorgan@nas.nasa.gov> 80* Wed Oct 26 2005 Iain Morgan <imorgan@nas.nasa.gov>
79- Removed accidental inclusion of --without-zlib-version-check 81- Removed accidental inclusion of --without-zlib-version-check
80* Tue Oct 25 2005 Iain Morgan <imorgan@nas.nasa.gov> 82* Tue Oct 25 2005 Iain Morgan <imorgan@nas.nasa.gov>
@@ -211,6 +213,7 @@ rm -rf $RPM_BUILD_ROOT
211%attr(0755,root,root) %{_libdir}/ssh/sftp-server 213%attr(0755,root,root) %{_libdir}/ssh/sftp-server
212%attr(4711,root,root) %{_libdir}/ssh/ssh-keysign 214%attr(4711,root,root) %{_libdir}/ssh/ssh-keysign
213%attr(0755,root,root) %{_libdir}/ssh/ssh-pkcs11-helper 215%attr(0755,root,root) %{_libdir}/ssh/ssh-pkcs11-helper
216%attr(0755,root,root) %{_libdir}/ssh/ssh-sk-helper
214%attr(0644,root,root) %doc %{_mandir}/man1/scp.1* 217%attr(0644,root,root) %doc %{_mandir}/man1/scp.1*
215%attr(0644,root,root) %doc %{_mandir}/man1/sftp.1* 218%attr(0644,root,root) %doc %{_mandir}/man1/sftp.1*
216%attr(0644,root,root) %doc %{_mandir}/man1/ssh.1* 219%attr(0644,root,root) %doc %{_mandir}/man1/ssh.1*
@@ -224,6 +227,7 @@ rm -rf $RPM_BUILD_ROOT
224%attr(0644,root,root) %doc %{_mandir}/man8/sftp-server.8* 227%attr(0644,root,root) %doc %{_mandir}/man8/sftp-server.8*
225%attr(0644,root,root) %doc %{_mandir}/man8/ssh-keysign.8* 228%attr(0644,root,root) %doc %{_mandir}/man8/ssh-keysign.8*
226%attr(0644,root,root) %doc %{_mandir}/man8/ssh-pkcs11-helper.8* 229%attr(0644,root,root) %doc %{_mandir}/man8/ssh-pkcs11-helper.8*
230%attr(0644,root,root) %doc %{_mandir}/man8/ssh-sk-helper.8*
227%attr(0644,root,root) %doc %{_mandir}/man8/sshd.8* 231%attr(0644,root,root) %doc %{_mandir}/man8/sshd.8*
228%attr(0644,root,root) /var/adm/fillup-templates/sysconfig.ssh 232%attr(0644,root,root) /var/adm/fillup-templates/sysconfig.ssh
229 233
diff --git a/debian/.git-dpm b/debian/.git-dpm
index 0e68bd57c..3942a1891 100644
--- a/debian/.git-dpm
+++ b/debian/.git-dpm
@@ -1,12 +1,12 @@
1# see git-dpm(1) from git-dpm package 1# see git-dpm(1) from git-dpm package
2877a000e9474ed5e32029f434dbec4de2fb1696f 23728919292c05983372954d27426f7d966813139
3877a000e9474ed5e32029f434dbec4de2fb1696f 33728919292c05983372954d27426f7d966813139
4202f5a676221c244cd450086c334c2b59f339e86 42b2c99658e3e8ed452e28f88f9cdbcdfb2a461cb
5202f5a676221c244cd450086c334c2b59f339e86 52b2c99658e3e8ed452e28f88f9cdbcdfb2a461cb
6openssh_8.3p1.orig.tar.gz 6openssh_8.4p1.orig.tar.gz
704c7adb9986f16746588db8988b910530c589819 769305059e10a60693ebe6f17731f962c9577535c
81706358 81742201
9debianTag="debian/%e%%%V" 9debianTag="debian/%e%%%V"
10patchedTag="patched/%e%%%V" 10patchedTag="patched/%e%%%V"
11upstreamTag="upstream/%U" 11upstreamTag="upstream/%U"
12signature:e3fdeb7b96543bcc2854614c6163cfe860ba5ec8:683:openssh_8.3p1.orig.tar.gz.asc 12signature:323573568682eac265e1f69206bc98149a8e423e:683:openssh_8.4p1.orig.tar.gz.asc
diff --git a/debian/NEWS b/debian/NEWS
index 3bfafbda7..2d38891ea 100644
--- a/debian/NEWS
+++ b/debian/NEWS
@@ -1,3 +1,19 @@
1openssh (1:8.4p1-1) unstable; urgency=medium
2
3 OpenSSH 8.4 includes a number of changes that may affect existing
4 configurations:
5
6 * ssh-keygen(1): the format of the attestation information optionally
7 recorded when a FIDO key is generated has changed. It now includes the
8 authenticator data needed to validate attestation signatures.
9
10 * The API between OpenSSH and the FIDO token middleware has changed and
11 the SSH_SK_VERSION_MAJOR version has been incremented as a result.
12 Third-party middleware libraries must support the current API version
13 (7) to work with OpenSSH 8.4.
14
15 -- Colin Watson <cjwatson@debian.org> Sun, 18 Oct 2020 12:07:48 +0100
16
1openssh (1:8.3p1-1) unstable; urgency=medium 17openssh (1:8.3p1-1) unstable; urgency=medium
2 18
3 OpenSSH 8.3 includes a number of changes that may affect existing 19 OpenSSH 8.3 includes a number of changes that may affect existing
diff --git a/debian/changelog b/debian/changelog
index 95c88c634..03d7a0af4 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,133 @@
1openssh (1:8.4p1-1) UNRELEASED; urgency=medium
2
3 * New upstream release (https://www.openssh.com/txt/release-8.4):
4 - [SECURITY] ssh-agent(1): restrict ssh-agent from signing web
5 challenges for FIDO/U2F keys.
6 - [SECURITY] ssh-keygen(1): Enable FIDO 2.1 credProtect extension when
7 generating a FIDO resident key.
8 - ssh-keygen(1): the format of the attestation information optionally
9 recorded when a FIDO key is generated has changed. It now includes the
10 authenticator data needed to validate attestation signatures.
11 - The API between OpenSSH and the FIDO token middleware has changed and
12 the SSH_SK_VERSION_MAJOR version has been incremented as a result.
13 Third-party middleware libraries must support the current API version
14 (7) to work with OpenSSH 8.4.
15 - ssh(1), ssh-keygen(1): support for FIDO keys that require a PIN for
16 each use. These keys may be generated using ssh-keygen using a new
17 "verify-required" option. When a PIN-required key is used, the user
18 will be prompted for a PIN to complete the signature operation.
19 - sshd(8): authorized_keys now supports a new "verify-required" option
20 to require FIDO signatures assert that the token verified that the
21 user was present before making the signature. The FIDO protocol
22 supports multiple methods for user-verification, but currently OpenSSH
23 only supports PIN verification.
24 - sshd(8), ssh-keygen(1): add support for verifying FIDO webauthn
25 signatures. Webauthn is a standard for using FIDO keys in web
26 browsers. These signatures are a slightly different format to plain
27 FIDO signatures and thus require explicit support.
28 - ssh(1): allow some keywords to expand shell-style ${ENV} environment
29 variables. The supported keywords are CertificateFile, ControlPath,
30 IdentityAgent and IdentityFile, plus LocalForward and RemoteForward
31 when used for Unix domain socket paths.
32 - ssh(1), ssh-agent(1): allow some additional control over the use of
33 ssh-askpass via a new $SSH_ASKPASS_REQUIRE environment variable,
34 including forcibly enabling and disabling its use (closes: #368657).
35 - ssh(1): allow ssh_config(5)'s AddKeysToAgent keyword accept a time
36 limit for keys in addition to its current flag options. Time-limited
37 keys will automatically be removed from ssh-agent after their expiry
38 time has passed.
39 - scp(1), sftp(1): allow the -A flag to explicitly enable agent
40 forwarding in scp and sftp. The default remains to not forward an
41 agent, even when ssh_config enables it.
42 - ssh(1): add a '%k' TOKEN that expands to the effective HostKey of the
43 destination. This allows, e.g., keeping host keys in individual files
44 using "UserKnownHostsFile ~/.ssh/known_hosts.d/%k" (closes: #481250).
45 - ssh(1): add %-TOKEN, environment variable and tilde expansion to the
46 UserKnownHostsFile directive, allowing the path to be completed by the
47 configuration.
48 - ssh-keygen(1): allow "ssh-add -d -" to read keys to be deleted from
49 stdin.
50 - sshd(8): improve logging for MaxStartups connection throttling. sshd
51 will now log when it starts and stops throttling and periodically
52 while in this state.
53 - ssh(1), ssh-keygen(1): better support for multiple attached FIDO
54 tokens. In cases where OpenSSH cannot unambiguously determine which
55 token to direct a request to, the user is now required to select a
56 token by touching it. In cases of operations that require a PIN to be
57 verified, this avoids sending the wrong PIN to the wrong token and
58 incrementing the token's PIN failure counter (tokens effectively erase
59 their keys after too many PIN failures).
60 - sshd(8): fix Include before Match in sshd_config (LP: #1885990).
61 - ssh(1): close stdin/out/error when forking after authentication
62 completes ("ssh -f ...").
63 - ssh(1), sshd(8): limit the amount of channel input data buffered,
64 avoiding peers that advertise large windows but are slow to read from
65 causing high memory consumption.
66 - ssh-agent(1): handle multiple requests sent in a single write() to the
67 agent.
68 - sshd(8): allow sshd_config longer than 256k.
69 - sshd(8): avoid spurious "Unable to load host key" message when sshd
70 load a private key but no public counterpart.
71 - ssh(1): prefer the default hostkey algorithm list whenever we have a
72 hostkey that matches its best-preference algorithm.
73 - sshd(1): when ordering the hostkey algorithms to request from a
74 server, prefer certificate types if the known_hosts files contain a
75 key marked as a @cert-authority.
76 - ssh(1): perform host key fingerprint comparisons for the "Are you sure
77 you want to continue connecting (yes/no/[fingerprint])?" prompt with
78 case sensitivity.
79 - sshd(8): ensure that address/masklen mismatches in sshd_config yield
80 fatal errors at daemon start time rather than later when they are
81 evaluated.
82 - ssh-keygen(1): ensure that certificate extensions are lexically
83 sorted. Previously if the user specified a custom extension then the
84 everything would be in order except the custom ones.
85 - ssh(1): also compare username when checking for JumpHost loops.
86 - ssh-keygen(1): preserve group/world read permission on known_hosts
87 files across runs of "ssh-keygen -Rf /path". The old behaviour was to
88 remove all rights for group/other.
89 - ssh-keygen(1): Mention the [-a rounds] flag in the ssh-keygen manual
90 page and usage().
91 - sshd(8): explicitly construct path to ~/.ssh/rc rather than relying on
92 it being relative to the current directory, so that it can still be
93 found if the shell startup changes its directory.
94 - sshd(8): when redirecting sshd's log output to a file, undo this
95 redirection after the session child process is forked(). Fixes missing
96 log messages when using this feature under some circumstances.
97 - sshd(8): start ClientAliveInterval bookkeeping before first pass
98 through select() loop; fixed theoretical case where busy sshd may
99 ignore timeouts from client.
100 - ssh(1): only reset the ServerAliveInterval check when we receive
101 traffic from the server and ignore traffic from a port forwarding
102 client, preventing a client from keeping a connection alive when it
103 should be terminated.
104 - ssh-keygen(1): avoid spurious error message when ssh-keygen creates
105 files outside ~/.ssh.
106 - sftp-client(1): fix off-by-one error that caused sftp downloads to
107 make one more concurrent request that desired. This prevented using
108 sftp(1) in unpipelined request/response mode, which is useful when
109 debugging.
110 - ssh(1), sshd(8): handle EINTR in waitfd() and timeout_connect()
111 helpers.
112 - ssh(1), ssh-keygen(1): defer creation of ~/.ssh until we attempt to
113 write to it so we don't leave an empty .ssh directory when it's not
114 needed.
115 - ssh(1), sshd(8): fix multiplier when parsing time specifications when
116 handling seconds after other units.
117 - sshd(8): always send any PAM account messages. If the PAM account
118 stack returns any messages, always send them to the user and not just
119 if the check succeeds.
120 - gnome-ssh-askpass3: ensure the "close" button is not focused by
121 default for SSH_ASKPASS_PROMPT=none prompts. Avoids space/enter
122 accidentally dismissing FIDO touch notifications.
123 - gnome-ssh-askpass3: allow some control over textarea colour via
124 $GNOME_SSH_ASKPASS_FG_COLOR and $GNOME_SSH_ASKPASS_BG_COLOR
125 environment variables.
126 - Detect the Frankenstein monster of Linux/X32 and allow the sandbox to
127 function there.
128
129 -- Colin Watson <cjwatson@debian.org> Sun, 18 Oct 2020 12:07:48 +0100
130
1openssh (1:8.3p1-1) unstable; urgency=medium 131openssh (1:8.3p1-1) unstable; urgency=medium
2 132
3 * New upstream release (https://www.openssh.com/txt/release-8.3): 133 * New upstream release (https://www.openssh.com/txt/release-8.3):
diff --git a/debian/control b/debian/control
index 98ee0189a..14506c5c1 100644
--- a/debian/control
+++ b/debian/control
@@ -11,7 +11,7 @@ Build-Depends: autotools-dev,
11 dpkg-dev (>= 1.16.1~), 11 dpkg-dev (>= 1.16.1~),
12 libaudit-dev [linux-any], 12 libaudit-dev [linux-any],
13 libedit-dev, 13 libedit-dev,
14 libfido2-dev [linux-any], 14 libfido2-dev (>= 1.5.0) [linux-any],
15 libgtk-3-dev <!pkg.openssh.nognome>, 15 libgtk-3-dev <!pkg.openssh.nognome>,
16 libkrb5-dev | heimdal-dev, 16 libkrb5-dev | heimdal-dev,
17 libpam0g-dev | libpam-dev, 17 libpam0g-dev | libpam-dev,
diff --git a/debian/patches/authorized-keys-man-symlink.patch b/debian/patches/authorized-keys-man-symlink.patch
index 68f5029d5..2680fc739 100644
--- a/debian/patches/authorized-keys-man-symlink.patch
+++ b/debian/patches/authorized-keys-man-symlink.patch
@@ -1,4 +1,4 @@
1From eb51213d1bdc8d80cd7d0578737d8a7bfde992d2 Mon Sep 17 00:00:00 2001 1From 27ced5f6a3c5dec6e0a78ae138d3db56d49953bd Mon Sep 17 00:00:00 2001
2From: Tomas Pospisek <tpo_deb@sourcepole.ch> 2From: Tomas Pospisek <tpo_deb@sourcepole.ch>
3Date: Sun, 9 Feb 2014 16:10:07 +0000 3Date: Sun, 9 Feb 2014 16:10:07 +0000
4Subject: Install authorized_keys(5) as a symlink to sshd(8) 4Subject: Install authorized_keys(5) as a symlink to sshd(8)
@@ -13,10 +13,10 @@ Patch-Name: authorized-keys-man-symlink.patch
13 1 file changed, 1 insertion(+) 13 1 file changed, 1 insertion(+)
14 14
15diff --git a/Makefile.in b/Makefile.in 15diff --git a/Makefile.in b/Makefile.in
16index bf1e1de47..3aa808a38 100644 16index 56759c388..73e56aaac 100644
17--- a/Makefile.in 17--- a/Makefile.in
18+++ b/Makefile.in 18+++ b/Makefile.in
19@@ -406,6 +406,7 @@ install-files: 19@@ -408,6 +408,7 @@ install-files:
20 $(INSTALL) -m 644 sshd_config.5.out $(DESTDIR)$(mandir)/$(mansubdir)5/sshd_config.5 20 $(INSTALL) -m 644 sshd_config.5.out $(DESTDIR)$(mandir)/$(mansubdir)5/sshd_config.5
21 $(INSTALL) -m 644 ssh_config.5.out $(DESTDIR)$(mandir)/$(mansubdir)5/ssh_config.5 21 $(INSTALL) -m 644 ssh_config.5.out $(DESTDIR)$(mandir)/$(mansubdir)5/ssh_config.5
22 $(INSTALL) -m 644 sshd.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/sshd.8 22 $(INSTALL) -m 644 sshd.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/sshd.8
diff --git a/debian/patches/avoid-extra-ports.patch b/debian/patches/avoid-extra-ports.patch
deleted file mode 100644
index d8df325ac..000000000
--- a/debian/patches/avoid-extra-ports.patch
+++ /dev/null
@@ -1,67 +0,0 @@
1From 877a000e9474ed5e32029f434dbec4de2fb1696f Mon Sep 17 00:00:00 2001
2From: "djm@openbsd.org" <djm@openbsd.org>
3Date: Wed, 27 May 2020 21:59:11 +0000
4Subject: upstream: Do not call process_queued_listen_addrs() for every
5
6included file from sshd_config; patch from Jakub Jelen
7
8OpenBSD-Commit-ID: 0ff603d6f06a7fab4881f12503b53024799d0a49
9
10Origin: upstream, https://anongit.mindrot.org/openssh.git/commit/?id=0a9a611619b0a1fecd0195ec86a9885f5d681c84
11Bug: https://bugzilla.mindrot.org/show_bug.cgi?id=3169
12Bug-Debian: https://bugs.debian.org/962035
13Bug-Ubuntu: https://bugs.launchpad.net/bugs/1876320
14Last-Update: 2020-06-07
15
16Patch-Name: avoid-extra-ports.patch
17---
18 servconf.c | 10 +++++-----
19 1 file changed, 5 insertions(+), 5 deletions(-)
20
21diff --git a/servconf.c b/servconf.c
22index c290e9786..5f3336365 100644
23--- a/servconf.c
24+++ b/servconf.c
25@@ -1,5 +1,5 @@
26
27-/* $OpenBSD: servconf.c,v 1.363 2020/04/17 03:30:05 djm Exp $ */
28+/* $OpenBSD: servconf.c,v 1.364 2020/05/27 21:59:11 djm Exp $ */
29 /*
30 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
31 * All rights reserved
32@@ -75,8 +75,8 @@ static void add_listen_addr(ServerOptions *, const char *,
33 const char *, int);
34 static void add_one_listen_addr(ServerOptions *, const char *,
35 const char *, int);
36-void parse_server_config_depth(ServerOptions *options, const char *filename,
37- struct sshbuf *conf, struct include_list *includes,
38+static void parse_server_config_depth(ServerOptions *options,
39+ const char *filename, struct sshbuf *conf, struct include_list *includes,
40 struct connection_info *connectinfo, int flags, int *activep, int depth);
41
42 /* Use of privilege separation or not */
43@@ -2623,7 +2623,7 @@ copy_set_server_options(ServerOptions *dst, ServerOptions *src, int preauth)
44 #undef M_CP_STRARRAYOPT
45
46 #define SERVCONF_MAX_DEPTH 16
47-void
48+static void
49 parse_server_config_depth(ServerOptions *options, const char *filename,
50 struct sshbuf *conf, struct include_list *includes,
51 struct connection_info *connectinfo, int flags, int *activep, int depth)
52@@ -2649,7 +2649,6 @@ parse_server_config_depth(ServerOptions *options, const char *filename,
53 if (bad_options > 0)
54 fatal("%s: terminating, %d bad configuration options",
55 filename, bad_options);
56- process_queued_listen_addrs(options);
57 }
58
59 void
60@@ -2660,6 +2659,7 @@ parse_server_config(ServerOptions *options, const char *filename,
61 int active = connectinfo ? 0 : 1;
62 parse_server_config_depth(options, filename, conf, includes,
63 connectinfo, 0, &active, 0);
64+ process_queued_listen_addrs(options);
65 }
66
67 static const char *
diff --git a/debian/patches/conch-old-privkey-format.patch b/debian/patches/conch-old-privkey-format.patch
index dfd1058b8..c7063cece 100644
--- a/debian/patches/conch-old-privkey-format.patch
+++ b/debian/patches/conch-old-privkey-format.patch
@@ -1,4 +1,4 @@
1From f2697f0c5ff23bc13dce1c90fb4c1c934c02070b Mon Sep 17 00:00:00 2001 1From a73fcc8bab768900ca16d3121303941511b28d45 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Thu, 30 Aug 2018 00:58:56 +0100 3Date: Thu, 30 Aug 2018 00:58:56 +0100
4Subject: Work around conch interoperability failure 4Subject: Work around conch interoperability failure
@@ -18,10 +18,10 @@ Patch-Name: conch-old-privkey-format.patch
18 3 files changed, 14 insertions(+), 2 deletions(-) 18 3 files changed, 14 insertions(+), 2 deletions(-)
19 19
20diff --git a/regress/Makefile b/regress/Makefile 20diff --git a/regress/Makefile b/regress/Makefile
21index 62794d25f..53a50ffca 100644 21index 8b4ed9de3..f50d189bb 100644
22--- a/regress/Makefile 22--- a/regress/Makefile
23+++ b/regress/Makefile 23+++ b/regress/Makefile
24@@ -121,7 +121,7 @@ CLEANFILES= *.core actual agent-key.* authorized_keys_${USERNAME} \ 24@@ -122,7 +122,7 @@ CLEANFILES= *.core actual agent-key.* authorized_keys_${USERNAME} \
25 rsa_ssh2_crnl.prv scp-ssh-wrapper.exe \ 25 rsa_ssh2_crnl.prv scp-ssh-wrapper.exe \
26 scp-ssh-wrapper.scp setuid-allowed sftp-server.log \ 26 scp-ssh-wrapper.scp setuid-allowed sftp-server.log \
27 sftp-server.sh sftp.log ssh-log-wrapper.sh ssh.log \ 27 sftp-server.sh sftp.log ssh-log-wrapper.sh ssh.log \
diff --git a/debian/patches/debian-banner.patch b/debian/patches/debian-banner.patch
index 47a2fe372..82cc37c1b 100644
--- a/debian/patches/debian-banner.patch
+++ b/debian/patches/debian-banner.patch
@@ -1,4 +1,4 @@
1From 90c1c8771b61dd3ee0eacb4e1cfac404dc42f4b0 Mon Sep 17 00:00:00 2001 1From 6353ee79cc71ef33a0a34d2d769a5fe327f6260d Mon Sep 17 00:00:00 2001
2From: Kees Cook <kees@debian.org> 2From: Kees Cook <kees@debian.org>
3Date: Sun, 9 Feb 2014 16:10:06 +0000 3Date: Sun, 9 Feb 2014 16:10:06 +0000
4Subject: Add DebianBanner server configuration option 4Subject: Add DebianBanner server configuration option
@@ -22,7 +22,7 @@ Patch-Name: debian-banner.patch
22 7 files changed, 22 insertions(+), 5 deletions(-) 22 7 files changed, 22 insertions(+), 5 deletions(-)
23 23
24diff --git a/kex.c b/kex.c 24diff --git a/kex.c b/kex.c
25index 0e64bf760..aa5acaac3 100644 25index ce7bb5b3b..763c45536 100644
26--- a/kex.c 26--- a/kex.c
27+++ b/kex.c 27+++ b/kex.c
28@@ -1225,7 +1225,7 @@ send_error(struct ssh *ssh, char *msg) 28@@ -1225,7 +1225,7 @@ send_error(struct ssh *ssh, char *msg)
@@ -58,10 +58,10 @@ index fe7141414..938dca03b 100644
58 struct kex *kex_new(void); 58 struct kex *kex_new(void);
59 int kex_ready(struct ssh *, char *[PROPOSAL_MAX]); 59 int kex_ready(struct ssh *, char *[PROPOSAL_MAX]);
60diff --git a/servconf.c b/servconf.c 60diff --git a/servconf.c b/servconf.c
61index ff5b9436c..cf4e52f3b 100644 61index 21abe41ac..f9eb778d6 100644
62--- a/servconf.c 62--- a/servconf.c
63+++ b/servconf.c 63+++ b/servconf.c
64@@ -194,6 +194,7 @@ initialize_server_options(ServerOptions *options) 64@@ -195,6 +195,7 @@ initialize_server_options(ServerOptions *options)
65 options->fingerprint_hash = -1; 65 options->fingerprint_hash = -1;
66 options->disable_forwarding = -1; 66 options->disable_forwarding = -1;
67 options->expose_userauth_info = -1; 67 options->expose_userauth_info = -1;
@@ -69,7 +69,7 @@ index ff5b9436c..cf4e52f3b 100644
69 } 69 }
70 70
71 /* Returns 1 if a string option is unset or set to "none" or 0 otherwise. */ 71 /* Returns 1 if a string option is unset or set to "none" or 0 otherwise. */
72@@ -468,6 +469,8 @@ fill_default_server_options(ServerOptions *options) 72@@ -469,6 +470,8 @@ fill_default_server_options(ServerOptions *options)
73 options->expose_userauth_info = 0; 73 options->expose_userauth_info = 0;
74 if (options->sk_provider == NULL) 74 if (options->sk_provider == NULL)
75 options->sk_provider = xstrdup("internal"); 75 options->sk_provider = xstrdup("internal");
@@ -78,7 +78,7 @@ index ff5b9436c..cf4e52f3b 100644
78 78
79 assemble_algorithms(options); 79 assemble_algorithms(options);
80 80
81@@ -556,6 +559,7 @@ typedef enum { 81@@ -548,6 +551,7 @@ typedef enum {
82 sStreamLocalBindMask, sStreamLocalBindUnlink, 82 sStreamLocalBindMask, sStreamLocalBindUnlink,
83 sAllowStreamLocalForwarding, sFingerprintHash, sDisableForwarding, 83 sAllowStreamLocalForwarding, sFingerprintHash, sDisableForwarding,
84 sExposeAuthInfo, sRDomain, sPubkeyAuthOptions, sSecurityKeyProvider, 84 sExposeAuthInfo, sRDomain, sPubkeyAuthOptions, sSecurityKeyProvider,
@@ -86,7 +86,7 @@ index ff5b9436c..cf4e52f3b 100644
86 sDeprecated, sIgnore, sUnsupported 86 sDeprecated, sIgnore, sUnsupported
87 } ServerOpCodes; 87 } ServerOpCodes;
88 88
89@@ -719,6 +723,7 @@ static struct { 89@@ -712,6 +716,7 @@ static struct {
90 { "rdomain", sRDomain, SSHCFG_ALL }, 90 { "rdomain", sRDomain, SSHCFG_ALL },
91 { "casignaturealgorithms", sCASignatureAlgorithms, SSHCFG_ALL }, 91 { "casignaturealgorithms", sCASignatureAlgorithms, SSHCFG_ALL },
92 { "securitykeyprovider", sSecurityKeyProvider, SSHCFG_GLOBAL }, 92 { "securitykeyprovider", sSecurityKeyProvider, SSHCFG_GLOBAL },
@@ -94,7 +94,7 @@ index ff5b9436c..cf4e52f3b 100644
94 { NULL, sBadOption, 0 } 94 { NULL, sBadOption, 0 }
95 }; 95 };
96 96
97@@ -2393,6 +2398,10 @@ process_server_config_line_depth(ServerOptions *options, char *line, 97@@ -2402,6 +2407,10 @@ process_server_config_line_depth(ServerOptions *options, char *line,
98 *charptr = xstrdup(arg); 98 *charptr = xstrdup(arg);
99 break; 99 break;
100 100
@@ -106,10 +106,10 @@ index ff5b9436c..cf4e52f3b 100644
106 case sIgnore: 106 case sIgnore:
107 case sUnsupported: 107 case sUnsupported:
108diff --git a/servconf.h b/servconf.h 108diff --git a/servconf.h b/servconf.h
109index 253cad97e..5a2b60512 100644 109index f10908e5b..4afdf24d0 100644
110--- a/servconf.h 110--- a/servconf.h
111+++ b/servconf.h 111+++ b/servconf.h
112@@ -226,6 +226,8 @@ typedef struct { 112@@ -227,6 +227,8 @@ typedef struct {
113 int expose_userauth_info; 113 int expose_userauth_info;
114 u_int64_t timing_secret; 114 u_int64_t timing_secret;
115 char *sk_provider; 115 char *sk_provider;
@@ -119,10 +119,10 @@ index 253cad97e..5a2b60512 100644
119 119
120 /* Information about the incoming connection as used by Match */ 120 /* Information about the incoming connection as used by Match */
121diff --git a/sshconnect.c b/sshconnect.c 121diff --git a/sshconnect.c b/sshconnect.c
122index f20d3e792..1e5b8ea5a 100644 122index 3ae20b74e..bab3916d8 100644
123--- a/sshconnect.c 123--- a/sshconnect.c
124+++ b/sshconnect.c 124+++ b/sshconnect.c
125@@ -1293,7 +1293,7 @@ ssh_login(struct ssh *ssh, Sensitive *sensitive, const char *orighost, 125@@ -1296,7 +1296,7 @@ ssh_login(struct ssh *ssh, Sensitive *sensitive, const char *orighost,
126 lowercase(host); 126 lowercase(host);
127 127
128 /* Exchange protocol version identification strings with the server. */ 128 /* Exchange protocol version identification strings with the server. */
@@ -132,10 +132,10 @@ index f20d3e792..1e5b8ea5a 100644
132 132
133 /* Put the connection into non-blocking mode. */ 133 /* Put the connection into non-blocking mode. */
134diff --git a/sshd.c b/sshd.c 134diff --git a/sshd.c b/sshd.c
135index e8b332ca4..baee13506 100644 135index 38d281ab4..50f2726bf 100644
136--- a/sshd.c 136--- a/sshd.c
137+++ b/sshd.c 137+++ b/sshd.c
138@@ -2181,7 +2181,7 @@ main(int ac, char **av) 138@@ -2232,7 +2232,7 @@ main(int ac, char **av)
139 if (!debug_flag) 139 if (!debug_flag)
140 alarm(options.login_grace_time); 140 alarm(options.login_grace_time);
141 141
@@ -145,7 +145,7 @@ index e8b332ca4..baee13506 100644
145 sshpkt_fatal(ssh, r, "banner exchange"); 145 sshpkt_fatal(ssh, r, "banner exchange");
146 146
147diff --git a/sshd_config.5 b/sshd_config.5 147diff --git a/sshd_config.5 b/sshd_config.5
148index 9f093be1f..753ceda10 100644 148index 6457620bb..33dc0c675 100644
149--- a/sshd_config.5 149--- a/sshd_config.5
150+++ b/sshd_config.5 150+++ b/sshd_config.5
151@@ -540,6 +540,11 @@ or 151@@ -540,6 +540,11 @@ or
diff --git a/debian/patches/debian-config.patch b/debian/patches/debian-config.patch
index d01331cc3..aa370e52f 100644
--- a/debian/patches/debian-config.patch
+++ b/debian/patches/debian-config.patch
@@ -1,4 +1,4 @@
1From 08ca1225e6979fc6b5b6e7f85ce5cb0ac5cc7405 Mon Sep 17 00:00:00 2001 1From a0c9f82b05d33f3e2cf8e5442cee47c09d1a1dd8 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:10:18 +0000 3Date: Sun, 9 Feb 2014 16:10:18 +0000
4Subject: Various Debian-specific configuration changes 4Subject: Various Debian-specific configuration changes
@@ -30,7 +30,7 @@ Document all of this.
30 30
31Author: Russ Allbery <rra@debian.org> 31Author: Russ Allbery <rra@debian.org>
32Forwarded: not-needed 32Forwarded: not-needed
33Last-Update: 2020-02-21 33Last-Update: 2020-10-18
34 34
35Patch-Name: debian-config.patch 35Patch-Name: debian-config.patch
36--- 36---
@@ -43,10 +43,10 @@ Patch-Name: debian-config.patch
43 6 files changed, 98 insertions(+), 9 deletions(-) 43 6 files changed, 98 insertions(+), 9 deletions(-)
44 44
45diff --git a/readconf.c b/readconf.c 45diff --git a/readconf.c b/readconf.c
46index 5bf0afbb4..87b0dc62a 100644 46index f4f273c96..e676b6be6 100644
47--- a/readconf.c 47--- a/readconf.c
48+++ b/readconf.c 48+++ b/readconf.c
49@@ -2111,7 +2111,7 @@ fill_default_options(Options * options) 49@@ -2153,7 +2153,7 @@ fill_default_options(Options * options)
50 if (options->forward_x11 == -1) 50 if (options->forward_x11 == -1)
51 options->forward_x11 = 0; 51 options->forward_x11 = 0;
52 if (options->forward_x11_trusted == -1) 52 if (options->forward_x11_trusted == -1)
@@ -56,7 +56,7 @@ index 5bf0afbb4..87b0dc62a 100644
56 options->forward_x11_timeout = 1200; 56 options->forward_x11_timeout = 1200;
57 /* 57 /*
58diff --git a/ssh.1 b/ssh.1 58diff --git a/ssh.1 b/ssh.1
59index 5a31b5dde..035823da3 100644 59index 76ddd89b5..ad48fc8c8 100644
60--- a/ssh.1 60--- a/ssh.1
61+++ b/ssh.1 61+++ b/ssh.1
62@@ -812,6 +812,16 @@ directive in 62@@ -812,6 +812,16 @@ directive in
@@ -98,7 +98,7 @@ index 5a31b5dde..035823da3 100644
98 Send log information using the 98 Send log information using the
99 .Xr syslog 3 99 .Xr syslog 3
100diff --git a/ssh_config b/ssh_config 100diff --git a/ssh_config b/ssh_config
101index 1ff999b68..8a55237b9 100644 101index 52aae8692..09a17cf18 100644
102--- a/ssh_config 102--- a/ssh_config
103+++ b/ssh_config 103+++ b/ssh_config
104@@ -17,9 +17,12 @@ 104@@ -17,9 +17,12 @@
@@ -115,15 +115,15 @@ index 1ff999b68..8a55237b9 100644
115 # PasswordAuthentication yes 115 # PasswordAuthentication yes
116 # HostbasedAuthentication no 116 # HostbasedAuthentication no
117 # GSSAPIAuthentication no 117 # GSSAPIAuthentication no
118@@ -45,3 +48,6 @@ 118@@ -46,3 +49,6 @@
119 # VisualHostKey no
120 # ProxyCommand ssh -q -W %h:%p gateway.example.com 119 # ProxyCommand ssh -q -W %h:%p gateway.example.com
121 # RekeyLimit 1G 1h 120 # RekeyLimit 1G 1h
121 # UserKnownHostsFile ~/.ssh/known_hosts.d/%k
122+ SendEnv LANG LC_* 122+ SendEnv LANG LC_*
123+ HashKnownHosts yes 123+ HashKnownHosts yes
124+ GSSAPIAuthentication yes 124+ GSSAPIAuthentication yes
125diff --git a/ssh_config.5 b/ssh_config.5 125diff --git a/ssh_config.5 b/ssh_config.5
126index dd8241df1..aac3fabb7 100644 126index 96ca7a5df..6d6c59521 100644
127--- a/ssh_config.5 127--- a/ssh_config.5
128+++ b/ssh_config.5 128+++ b/ssh_config.5
129@@ -71,6 +71,29 @@ Since the first obtained value for each parameter is used, more 129@@ -71,6 +71,29 @@ Since the first obtained value for each parameter is used, more
@@ -156,7 +156,7 @@ index dd8241df1..aac3fabb7 100644
156 The file contains keyword-argument pairs, one per line. 156 The file contains keyword-argument pairs, one per line.
157 Lines starting with 157 Lines starting with
158 .Ql # 158 .Ql #
159@@ -729,11 +752,12 @@ elapsed. 159@@ -742,11 +765,12 @@ elapsed.
160 .It Cm ForwardX11Trusted 160 .It Cm ForwardX11Trusted
161 If this option is set to 161 If this option is set to
162 .Cm yes , 162 .Cm yes ,
@@ -229,7 +229,7 @@ index 2c48105f8..459c1b230 100644
229 # Example of overriding settings on a per-user basis 229 # Example of overriding settings on a per-user basis
230 #Match User anoncvs 230 #Match User anoncvs
231diff --git a/sshd_config.5 b/sshd_config.5 231diff --git a/sshd_config.5 b/sshd_config.5
232index c27f99937..b38025dbf 100644 232index 32ae46476..472001dd1 100644
233--- a/sshd_config.5 233--- a/sshd_config.5
234+++ b/sshd_config.5 234+++ b/sshd_config.5
235@@ -56,6 +56,35 @@ Arguments may optionally be enclosed in double quotes 235@@ -56,6 +56,35 @@ Arguments may optionally be enclosed in double quotes
diff --git a/debian/patches/dnssec-sshfp.patch b/debian/patches/dnssec-sshfp.patch
index 3b9e8df3c..23ecc0d3d 100644
--- a/debian/patches/dnssec-sshfp.patch
+++ b/debian/patches/dnssec-sshfp.patch
@@ -1,4 +1,4 @@
1From ca39bb2ab1f56d8ecdeadc32d6bda1a8e73301ac Mon Sep 17 00:00:00 2001 1From 78a7702d88713e854550a05fa9b8670f219d9bf9 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:10:01 +0000 3Date: Sun, 9 Feb 2014 16:10:01 +0000
4Subject: Force use of DNSSEC even if "options edns0" isn't in resolv.conf 4Subject: Force use of DNSSEC even if "options edns0" isn't in resolv.conf
diff --git a/debian/patches/doc-hash-tab-completion.patch b/debian/patches/doc-hash-tab-completion.patch
index f58bbaeee..3e96f3b8e 100644
--- a/debian/patches/doc-hash-tab-completion.patch
+++ b/debian/patches/doc-hash-tab-completion.patch
@@ -1,4 +1,4 @@
1From 0402bdf307736b3afae8c80c84f04b0295990c45 Mon Sep 17 00:00:00 2001 1From 5fca8a730171f96a72007118c0d35cf4a09359f8 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:10:11 +0000 3Date: Sun, 9 Feb 2014 16:10:11 +0000
4Subject: Document that HashKnownHosts may break tab-completion 4Subject: Document that HashKnownHosts may break tab-completion
@@ -13,10 +13,10 @@ Patch-Name: doc-hash-tab-completion.patch
13 1 file changed, 3 insertions(+) 13 1 file changed, 3 insertions(+)
14 14
15diff --git a/ssh_config.5 b/ssh_config.5 15diff --git a/ssh_config.5 b/ssh_config.5
16index d814147d4..dd8241df1 100644 16index 190e1d927..96ca7a5df 100644
17--- a/ssh_config.5 17--- a/ssh_config.5
18+++ b/ssh_config.5 18+++ b/ssh_config.5
19@@ -848,6 +848,9 @@ Note that existing names and addresses in known hosts files 19@@ -861,6 +861,9 @@ Note that existing names and addresses in known hosts files
20 will not be converted automatically, 20 will not be converted automatically,
21 but may be manually hashed using 21 but may be manually hashed using
22 .Xr ssh-keygen 1 . 22 .Xr ssh-keygen 1 .
diff --git a/debian/patches/gnome-ssh-askpass2-icon.patch b/debian/patches/gnome-ssh-askpass2-icon.patch
index 7436be62d..d7d0bed64 100644
--- a/debian/patches/gnome-ssh-askpass2-icon.patch
+++ b/debian/patches/gnome-ssh-askpass2-icon.patch
@@ -1,4 +1,4 @@
1From 9b1d6a32944943b6b18861b97868c463bf5a6e8c Mon Sep 17 00:00:00 2001 1From c26f6f9c7051b9ab2ac13d1d227e6d39527839cc Mon Sep 17 00:00:00 2001
2From: Vincent Untz <vuntz@ubuntu.com> 2From: Vincent Untz <vuntz@ubuntu.com>
3Date: Sun, 9 Feb 2014 16:10:16 +0000 3Date: Sun, 9 Feb 2014 16:10:16 +0000
4Subject: Give the ssh-askpass-gnome window a default icon 4Subject: Give the ssh-askpass-gnome window a default icon
@@ -12,10 +12,10 @@ Patch-Name: gnome-ssh-askpass2-icon.patch
12 1 file changed, 2 insertions(+) 12 1 file changed, 2 insertions(+)
13 13
14diff --git a/contrib/gnome-ssh-askpass2.c b/contrib/gnome-ssh-askpass2.c 14diff --git a/contrib/gnome-ssh-askpass2.c b/contrib/gnome-ssh-askpass2.c
15index bc83a2d67..88cdfaeff 100644 15index f7912727c..bf8c92c8f 100644
16--- a/contrib/gnome-ssh-askpass2.c 16--- a/contrib/gnome-ssh-askpass2.c
17+++ b/contrib/gnome-ssh-askpass2.c 17+++ b/contrib/gnome-ssh-askpass2.c
18@@ -233,6 +233,8 @@ main(int argc, char **argv) 18@@ -322,6 +322,8 @@ main(int argc, char **argv)
19 19
20 gtk_init(&argc, &argv); 20 gtk_init(&argc, &argv);
21 21
diff --git a/debian/patches/gssapi.patch b/debian/patches/gssapi.patch
index 685923e47..d779eacb6 100644
--- a/debian/patches/gssapi.patch
+++ b/debian/patches/gssapi.patch
@@ -1,4 +1,4 @@
1From 79f9d21b406c172878896ef41cdc2502fc2f84a7 Mon Sep 17 00:00:00 2001 1From d1b7918f9bce6e997c7952ac795e18d09192b2a6 Mon Sep 17 00:00:00 2001
2From: Simon Wilkinson <simon@sxw.org.uk> 2From: Simon Wilkinson <simon@sxw.org.uk>
3Date: Sun, 9 Feb 2014 16:09:48 +0000 3Date: Sun, 9 Feb 2014 16:09:48 +0000
4Subject: GSSAPI key exchange support 4Subject: GSSAPI key exchange support
@@ -68,10 +68,10 @@ Patch-Name: gssapi.patch
68 create mode 100644 kexgsss.c 68 create mode 100644 kexgsss.c
69 69
70diff --git a/Makefile.in b/Makefile.in 70diff --git a/Makefile.in b/Makefile.in
71index c9e4294d3..bf1e1de47 100644 71index acfb919da..56759c388 100644
72--- a/Makefile.in 72--- a/Makefile.in
73+++ b/Makefile.in 73+++ b/Makefile.in
74@@ -109,6 +109,7 @@ LIBSSH_OBJS=${LIBOPENSSH_OBJS} \ 74@@ -107,6 +107,7 @@ LIBSSH_OBJS=${LIBOPENSSH_OBJS} \
75 kex.o kexdh.o kexgex.o kexecdh.o kexc25519.o \ 75 kex.o kexdh.o kexgex.o kexecdh.o kexc25519.o \
76 kexgexc.o kexgexs.o \ 76 kexgexc.o kexgexs.o \
77 sntrup4591761.o kexsntrup4591761x25519.o kexgen.o \ 77 sntrup4591761.o kexsntrup4591761x25519.o kexgen.o \
@@ -79,7 +79,7 @@ index c9e4294d3..bf1e1de47 100644
79 sftp-realpath.o platform-pledge.o platform-tracing.o platform-misc.o \ 79 sftp-realpath.o platform-pledge.o platform-tracing.o platform-misc.o \
80 sshbuf-io.o 80 sshbuf-io.o
81 81
82@@ -125,7 +126,7 @@ SSHDOBJS=sshd.o auth-rhosts.o auth-passwd.o \ 82@@ -123,7 +124,7 @@ SSHDOBJS=sshd.o auth-rhosts.o auth-passwd.o \
83 auth-bsdauth.o auth2-hostbased.o auth2-kbdint.o \ 83 auth-bsdauth.o auth2-hostbased.o auth2-kbdint.o \
84 auth2-none.o auth2-passwd.o auth2-pubkey.o \ 84 auth2-none.o auth2-passwd.o auth2-pubkey.o \
85 monitor.o monitor_wrap.o auth-krb5.o \ 85 monitor.o monitor_wrap.o auth-krb5.o \
@@ -130,7 +130,7 @@ index 28fb43d2a..5b73d24c0 100644
130 130
131 [![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/openssh.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:openssh) 131 [![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/openssh.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:openssh)
132diff --git a/auth.c b/auth.c 132diff --git a/auth.c b/auth.c
133index 086b8ebb1..687c57b42 100644 133index 9a5498b66..3d31ec860 100644
134--- a/auth.c 134--- a/auth.c
135+++ b/auth.c 135+++ b/auth.c
136@@ -400,7 +400,8 @@ auth_root_allowed(struct ssh *ssh, const char *method) 136@@ -400,7 +400,8 @@ auth_root_allowed(struct ssh *ssh, const char *method)
@@ -339,7 +339,7 @@ index 9351e0428..d6446c0cf 100644
339 "gssapi-with-mic", 339 "gssapi-with-mic",
340 userauth_gssapi, 340 userauth_gssapi,
341diff --git a/auth2.c b/auth2.c 341diff --git a/auth2.c b/auth2.c
342index 91aaf34a6..a4a5e0069 100644 342index 242a7adbe..9fa1404b3 100644
343--- a/auth2.c 343--- a/auth2.c
344+++ b/auth2.c 344+++ b/auth2.c
345@@ -73,6 +73,7 @@ extern Authmethod method_passwd; 345@@ -73,6 +73,7 @@ extern Authmethod method_passwd;
@@ -477,7 +477,7 @@ index 26d62855a..0cadc9f18 100644
477 int get_peer_port(int); 477 int get_peer_port(int);
478 char *get_local_ipaddr(int); 478 char *get_local_ipaddr(int);
479diff --git a/clientloop.c b/clientloop.c 479diff --git a/clientloop.c b/clientloop.c
480index da396c72a..42ace7789 100644 480index 60b46d161..2cebea29f 100644
481--- a/clientloop.c 481--- a/clientloop.c
482+++ b/clientloop.c 482+++ b/clientloop.c
483@@ -112,6 +112,10 @@ 483@@ -112,6 +112,10 @@
@@ -491,7 +491,7 @@ index da396c72a..42ace7789 100644
491 /* import options */ 491 /* import options */
492 extern Options options; 492 extern Options options;
493 493
494@@ -1361,9 +1365,18 @@ client_loop(struct ssh *ssh, int have_pty, int escape_char_arg, 494@@ -1368,9 +1372,18 @@ client_loop(struct ssh *ssh, int have_pty, int escape_char_arg,
495 break; 495 break;
496 496
497 /* Do channel operations unless rekeying in progress. */ 497 /* Do channel operations unless rekeying in progress. */
@@ -512,10 +512,10 @@ index da396c72a..42ace7789 100644
512 client_process_net_input(ssh, readset); 512 client_process_net_input(ssh, readset);
513 513
514diff --git a/configure.ac b/configure.ac 514diff --git a/configure.ac b/configure.ac
515index 460383757..d98e6f74a 100644 515index 7005a503e..c8a96deb4 100644
516--- a/configure.ac 516--- a/configure.ac
517+++ b/configure.ac 517+++ b/configure.ac
518@@ -676,6 +676,30 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16)) 518@@ -679,6 +679,30 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
519 [Use tunnel device compatibility to OpenBSD]) 519 [Use tunnel device compatibility to OpenBSD])
520 AC_DEFINE([SSH_TUN_PREPEND_AF], [1], 520 AC_DEFINE([SSH_TUN_PREPEND_AF], [1],
521 [Prepend the address family to IP tunnel traffic]) 521 [Prepend the address family to IP tunnel traffic])
@@ -1330,7 +1330,7 @@ index b5d4bb2d1..55f4d4bda 100644
1330 1330
1331 /* Privileged */ 1331 /* Privileged */
1332diff --git a/kex.c b/kex.c 1332diff --git a/kex.c b/kex.c
1333index 09c7258e0..144dee512 100644 1333index aecb9394d..751cfc710 100644
1334--- a/kex.c 1334--- a/kex.c
1335+++ b/kex.c 1335+++ b/kex.c
1336@@ -57,11 +57,16 @@ 1336@@ -57,11 +57,16 @@
@@ -1523,10 +1523,10 @@ index a5ae6ac05..fe7141414 100644
1523 __attribute__((__bounded__(__minbytes__, 1, CURVE25519_SIZE))) 1523 __attribute__((__bounded__(__minbytes__, 1, CURVE25519_SIZE)))
1524 __attribute__((__bounded__(__minbytes__, 2, CURVE25519_SIZE))); 1524 __attribute__((__bounded__(__minbytes__, 2, CURVE25519_SIZE)));
1525diff --git a/kexdh.c b/kexdh.c 1525diff --git a/kexdh.c b/kexdh.c
1526index 67133e339..edaa46762 100644 1526index 6e0159f9f..d024a8b9a 100644
1527--- a/kexdh.c 1527--- a/kexdh.c
1528+++ b/kexdh.c 1528+++ b/kexdh.c
1529@@ -48,13 +48,23 @@ kex_dh_keygen(struct kex *kex) 1529@@ -49,13 +49,23 @@ kex_dh_keygen(struct kex *kex)
1530 { 1530 {
1531 switch (kex->kex_type) { 1531 switch (kex->kex_type) {
1532 case KEX_DH_GRP1_SHA1: 1532 case KEX_DH_GRP1_SHA1:
@@ -2656,7 +2656,7 @@ index 000000000..60bc02deb
2656+} 2656+}
2657+#endif /* defined(GSSAPI) && defined(WITH_OPENSSL) */ 2657+#endif /* defined(GSSAPI) && defined(WITH_OPENSSL) */
2658diff --git a/monitor.c b/monitor.c 2658diff --git a/monitor.c b/monitor.c
2659index b6e855d5d..5347e900d 100644 2659index 4cf79dfc9..11868952b 100644
2660--- a/monitor.c 2660--- a/monitor.c
2661+++ b/monitor.c 2661+++ b/monitor.c
2662@@ -148,6 +148,8 @@ int mm_answer_gss_setup_ctx(struct ssh *, int, struct sshbuf *); 2662@@ -148,6 +148,8 @@ int mm_answer_gss_setup_ctx(struct ssh *, int, struct sshbuf *);
@@ -2709,7 +2709,7 @@ index b6e855d5d..5347e900d 100644
2709 2709
2710 if (auth_opts->permit_pty_flag) { 2710 if (auth_opts->permit_pty_flag) {
2711 monitor_permit(mon_dispatch, MONITOR_REQ_PTY, 1); 2711 monitor_permit(mon_dispatch, MONITOR_REQ_PTY, 1);
2712@@ -1712,6 +1729,17 @@ monitor_apply_keystate(struct ssh *ssh, struct monitor *pmonitor) 2712@@ -1725,6 +1742,17 @@ monitor_apply_keystate(struct ssh *ssh, struct monitor *pmonitor)
2713 # ifdef OPENSSL_HAS_ECC 2713 # ifdef OPENSSL_HAS_ECC
2714 kex->kex[KEX_ECDH_SHA2] = kex_gen_server; 2714 kex->kex[KEX_ECDH_SHA2] = kex_gen_server;
2715 # endif 2715 # endif
@@ -2727,7 +2727,7 @@ index b6e855d5d..5347e900d 100644
2727 #endif /* WITH_OPENSSL */ 2727 #endif /* WITH_OPENSSL */
2728 kex->kex[KEX_C25519_SHA256] = kex_gen_server; 2728 kex->kex[KEX_C25519_SHA256] = kex_gen_server;
2729 kex->kex[KEX_KEM_SNTRUP4591761X25519_SHA512] = kex_gen_server; 2729 kex->kex[KEX_KEM_SNTRUP4591761X25519_SHA512] = kex_gen_server;
2730@@ -1805,8 +1833,8 @@ mm_answer_gss_setup_ctx(struct ssh *ssh, int sock, struct sshbuf *m) 2730@@ -1818,8 +1846,8 @@ mm_answer_gss_setup_ctx(struct ssh *ssh, int sock, struct sshbuf *m)
2731 u_char *p; 2731 u_char *p;
2732 int r; 2732 int r;
2733 2733
@@ -2738,7 +2738,7 @@ index b6e855d5d..5347e900d 100644
2738 2738
2739 if ((r = sshbuf_get_string(m, &p, &len)) != 0) 2739 if ((r = sshbuf_get_string(m, &p, &len)) != 0)
2740 fatal("%s: buffer error: %s", __func__, ssh_err(r)); 2740 fatal("%s: buffer error: %s", __func__, ssh_err(r));
2741@@ -1838,8 +1866,8 @@ mm_answer_gss_accept_ctx(struct ssh *ssh, int sock, struct sshbuf *m) 2741@@ -1851,8 +1879,8 @@ mm_answer_gss_accept_ctx(struct ssh *ssh, int sock, struct sshbuf *m)
2742 OM_uint32 flags = 0; /* GSI needs this */ 2742 OM_uint32 flags = 0; /* GSI needs this */
2743 int r; 2743 int r;
2744 2744
@@ -2749,7 +2749,7 @@ index b6e855d5d..5347e900d 100644
2749 2749
2750 if ((r = ssh_gssapi_get_buffer_desc(m, &in)) != 0) 2750 if ((r = ssh_gssapi_get_buffer_desc(m, &in)) != 0)
2751 fatal("%s: buffer error: %s", __func__, ssh_err(r)); 2751 fatal("%s: buffer error: %s", __func__, ssh_err(r));
2752@@ -1859,6 +1887,7 @@ mm_answer_gss_accept_ctx(struct ssh *ssh, int sock, struct sshbuf *m) 2752@@ -1872,6 +1900,7 @@ mm_answer_gss_accept_ctx(struct ssh *ssh, int sock, struct sshbuf *m)
2753 monitor_permit(mon_dispatch, MONITOR_REQ_GSSSTEP, 0); 2753 monitor_permit(mon_dispatch, MONITOR_REQ_GSSSTEP, 0);
2754 monitor_permit(mon_dispatch, MONITOR_REQ_GSSUSEROK, 1); 2754 monitor_permit(mon_dispatch, MONITOR_REQ_GSSUSEROK, 1);
2755 monitor_permit(mon_dispatch, MONITOR_REQ_GSSCHECKMIC, 1); 2755 monitor_permit(mon_dispatch, MONITOR_REQ_GSSCHECKMIC, 1);
@@ -2757,7 +2757,7 @@ index b6e855d5d..5347e900d 100644
2757 } 2757 }
2758 return (0); 2758 return (0);
2759 } 2759 }
2760@@ -1870,8 +1899,8 @@ mm_answer_gss_checkmic(struct ssh *ssh, int sock, struct sshbuf *m) 2760@@ -1883,8 +1912,8 @@ mm_answer_gss_checkmic(struct ssh *ssh, int sock, struct sshbuf *m)
2761 OM_uint32 ret; 2761 OM_uint32 ret;
2762 int r; 2762 int r;
2763 2763
@@ -2768,7 +2768,7 @@ index b6e855d5d..5347e900d 100644
2768 2768
2769 if ((r = ssh_gssapi_get_buffer_desc(m, &gssbuf)) != 0 || 2769 if ((r = ssh_gssapi_get_buffer_desc(m, &gssbuf)) != 0 ||
2770 (r = ssh_gssapi_get_buffer_desc(m, &mic)) != 0) 2770 (r = ssh_gssapi_get_buffer_desc(m, &mic)) != 0)
2771@@ -1897,13 +1926,17 @@ mm_answer_gss_checkmic(struct ssh *ssh, int sock, struct sshbuf *m) 2771@@ -1910,13 +1939,17 @@ mm_answer_gss_checkmic(struct ssh *ssh, int sock, struct sshbuf *m)
2772 int 2772 int
2773 mm_answer_gss_userok(struct ssh *ssh, int sock, struct sshbuf *m) 2773 mm_answer_gss_userok(struct ssh *ssh, int sock, struct sshbuf *m)
2774 { 2774 {
@@ -2790,7 +2790,7 @@ index b6e855d5d..5347e900d 100644
2790 2790
2791 sshbuf_reset(m); 2791 sshbuf_reset(m);
2792 if ((r = sshbuf_put_u32(m, authenticated)) != 0) 2792 if ((r = sshbuf_put_u32(m, authenticated)) != 0)
2793@@ -1912,7 +1945,11 @@ mm_answer_gss_userok(struct ssh *ssh, int sock, struct sshbuf *m) 2793@@ -1925,7 +1958,11 @@ mm_answer_gss_userok(struct ssh *ssh, int sock, struct sshbuf *m)
2794 debug3("%s: sending result %d", __func__, authenticated); 2794 debug3("%s: sending result %d", __func__, authenticated);
2795 mm_request_send(sock, MONITOR_ANS_GSSUSEROK, m); 2795 mm_request_send(sock, MONITOR_ANS_GSSUSEROK, m);
2796 2796
@@ -2803,7 +2803,7 @@ index b6e855d5d..5347e900d 100644
2803 2803
2804 if ((displayname = ssh_gssapi_displayname()) != NULL) 2804 if ((displayname = ssh_gssapi_displayname()) != NULL)
2805 auth2_record_info(authctxt, "%s", displayname); 2805 auth2_record_info(authctxt, "%s", displayname);
2806@@ -1920,5 +1957,85 @@ mm_answer_gss_userok(struct ssh *ssh, int sock, struct sshbuf *m) 2806@@ -1933,5 +1970,85 @@ mm_answer_gss_userok(struct ssh *ssh, int sock, struct sshbuf *m)
2807 /* Monitor loop will terminate if authenticated */ 2807 /* Monitor loop will terminate if authenticated */
2808 return (authenticated); 2808 return (authenticated);
2809 } 2809 }
@@ -2903,7 +2903,7 @@ index 683e5e071..2b1a2d590 100644
2903 2903
2904 struct ssh; 2904 struct ssh;
2905diff --git a/monitor_wrap.c b/monitor_wrap.c 2905diff --git a/monitor_wrap.c b/monitor_wrap.c
2906index 001a8fa1c..6edb509a3 100644 2906index 5e38d83eb..0e78cd006 100644
2907--- a/monitor_wrap.c 2907--- a/monitor_wrap.c
2908+++ b/monitor_wrap.c 2908+++ b/monitor_wrap.c
2909@@ -993,13 +993,15 @@ mm_ssh_gssapi_checkmic(Gssctxt *ctx, gss_buffer_t gssbuf, gss_buffer_t gssmic) 2909@@ -993,13 +993,15 @@ mm_ssh_gssapi_checkmic(Gssctxt *ctx, gss_buffer_t gssbuf, gss_buffer_t gssmic)
@@ -2982,10 +2982,10 @@ index 001a8fa1c..6edb509a3 100644
2982+ 2982+
2983 #endif /* GSSAPI */ 2983 #endif /* GSSAPI */
2984diff --git a/monitor_wrap.h b/monitor_wrap.h 2984diff --git a/monitor_wrap.h b/monitor_wrap.h
2985index 23ab096aa..485590c18 100644 2985index 0db38c206..75aef1c74 100644
2986--- a/monitor_wrap.h 2986--- a/monitor_wrap.h
2987+++ b/monitor_wrap.h 2987+++ b/monitor_wrap.h
2988@@ -64,8 +64,10 @@ int mm_sshkey_verify(const struct sshkey *, const u_char *, size_t, 2988@@ -65,8 +65,10 @@ int mm_sshkey_verify(const struct sshkey *, const u_char *, size_t,
2989 OM_uint32 mm_ssh_gssapi_server_ctx(Gssctxt **, gss_OID); 2989 OM_uint32 mm_ssh_gssapi_server_ctx(Gssctxt **, gss_OID);
2990 OM_uint32 mm_ssh_gssapi_accept_ctx(Gssctxt *, 2990 OM_uint32 mm_ssh_gssapi_accept_ctx(Gssctxt *,
2991 gss_buffer_desc *, gss_buffer_desc *, OM_uint32 *); 2991 gss_buffer_desc *, gss_buffer_desc *, OM_uint32 *);
@@ -2998,7 +2998,7 @@ index 23ab096aa..485590c18 100644
2998 2998
2999 #ifdef USE_PAM 2999 #ifdef USE_PAM
3000diff --git a/readconf.c b/readconf.c 3000diff --git a/readconf.c b/readconf.c
3001index 2afcbaeca..fb585e248 100644 3001index 554efd7c9..57dae55d1 100644
3002--- a/readconf.c 3002--- a/readconf.c
3003+++ b/readconf.c 3003+++ b/readconf.c
3004@@ -67,6 +67,7 @@ 3004@@ -67,6 +67,7 @@
@@ -3041,7 +3041,7 @@ index 2afcbaeca..fb585e248 100644
3041 #endif 3041 #endif
3042 #ifdef ENABLE_PKCS11 3042 #ifdef ENABLE_PKCS11
3043 { "pkcs11provider", oPKCS11Provider }, 3043 { "pkcs11provider", oPKCS11Provider },
3044@@ -1053,10 +1068,42 @@ parse_time: 3044@@ -1068,10 +1083,42 @@ parse_time:
3045 intptr = &options->gss_authentication; 3045 intptr = &options->gss_authentication;
3046 goto parse_flag; 3046 goto parse_flag;
3047 3047
@@ -3084,7 +3084,7 @@ index 2afcbaeca..fb585e248 100644
3084 case oBatchMode: 3084 case oBatchMode:
3085 intptr = &options->batch_mode; 3085 intptr = &options->batch_mode;
3086 goto parse_flag; 3086 goto parse_flag;
3087@@ -1935,7 +1982,13 @@ initialize_options(Options * options) 3087@@ -1976,7 +2023,13 @@ initialize_options(Options * options)
3088 options->pubkey_authentication = -1; 3088 options->pubkey_authentication = -1;
3089 options->challenge_response_authentication = -1; 3089 options->challenge_response_authentication = -1;
3090 options->gss_authentication = -1; 3090 options->gss_authentication = -1;
@@ -3098,7 +3098,7 @@ index 2afcbaeca..fb585e248 100644
3098 options->password_authentication = -1; 3098 options->password_authentication = -1;
3099 options->kbd_interactive_authentication = -1; 3099 options->kbd_interactive_authentication = -1;
3100 options->kbd_interactive_devices = NULL; 3100 options->kbd_interactive_devices = NULL;
3101@@ -2083,8 +2136,18 @@ fill_default_options(Options * options) 3101@@ -2125,8 +2178,18 @@ fill_default_options(Options * options)
3102 options->challenge_response_authentication = 1; 3102 options->challenge_response_authentication = 1;
3103 if (options->gss_authentication == -1) 3103 if (options->gss_authentication == -1)
3104 options->gss_authentication = 0; 3104 options->gss_authentication = 0;
@@ -3117,7 +3117,7 @@ index 2afcbaeca..fb585e248 100644
3117 if (options->password_authentication == -1) 3117 if (options->password_authentication == -1)
3118 options->password_authentication = 1; 3118 options->password_authentication = 1;
3119 if (options->kbd_interactive_authentication == -1) 3119 if (options->kbd_interactive_authentication == -1)
3120@@ -2726,7 +2789,14 @@ dump_client_config(Options *o, const char *host) 3120@@ -2776,7 +2839,14 @@ dump_client_config(Options *o, const char *host)
3121 dump_cfg_fmtint(oGatewayPorts, o->fwd_opts.gateway_ports); 3121 dump_cfg_fmtint(oGatewayPorts, o->fwd_opts.gateway_ports);
3122 #ifdef GSSAPI 3122 #ifdef GSSAPI
3123 dump_cfg_fmtint(oGssAuthentication, o->gss_authentication); 3123 dump_cfg_fmtint(oGssAuthentication, o->gss_authentication);
@@ -3133,7 +3133,7 @@ index 2afcbaeca..fb585e248 100644
3133 dump_cfg_fmtint(oHashKnownHosts, o->hash_known_hosts); 3133 dump_cfg_fmtint(oHashKnownHosts, o->hash_known_hosts);
3134 dump_cfg_fmtint(oHostbasedAuthentication, o->hostbased_authentication); 3134 dump_cfg_fmtint(oHostbasedAuthentication, o->hostbased_authentication);
3135diff --git a/readconf.h b/readconf.h 3135diff --git a/readconf.h b/readconf.h
3136index e143a1082..c405b837f 100644 3136index d6a15550d..3803eeddf 100644
3137--- a/readconf.h 3137--- a/readconf.h
3138+++ b/readconf.h 3138+++ b/readconf.h
3139@@ -41,7 +41,13 @@ typedef struct { 3139@@ -41,7 +41,13 @@ typedef struct {
@@ -3151,10 +3151,10 @@ index e143a1082..c405b837f 100644
3151 * authentication. */ 3151 * authentication. */
3152 int kbd_interactive_authentication; /* Try keyboard-interactive auth. */ 3152 int kbd_interactive_authentication; /* Try keyboard-interactive auth. */
3153diff --git a/servconf.c b/servconf.c 3153diff --git a/servconf.c b/servconf.c
3154index ba0a92c7b..f38ba9e44 100644 3154index f08e37477..ded8f4a87 100644
3155--- a/servconf.c 3155--- a/servconf.c
3156+++ b/servconf.c 3156+++ b/servconf.c
3157@@ -69,6 +69,7 @@ 3157@@ -70,6 +70,7 @@
3158 #include "auth.h" 3158 #include "auth.h"
3159 #include "myproposal.h" 3159 #include "myproposal.h"
3160 #include "digest.h" 3160 #include "digest.h"
@@ -3162,7 +3162,7 @@ index ba0a92c7b..f38ba9e44 100644
3162 3162
3163 static void add_listen_addr(ServerOptions *, const char *, 3163 static void add_listen_addr(ServerOptions *, const char *,
3164 const char *, int); 3164 const char *, int);
3165@@ -133,8 +134,11 @@ initialize_server_options(ServerOptions *options) 3165@@ -134,8 +135,11 @@ initialize_server_options(ServerOptions *options)
3166 options->kerberos_ticket_cleanup = -1; 3166 options->kerberos_ticket_cleanup = -1;
3167 options->kerberos_get_afs_token = -1; 3167 options->kerberos_get_afs_token = -1;
3168 options->gss_authentication=-1; 3168 options->gss_authentication=-1;
@@ -3174,7 +3174,7 @@ index ba0a92c7b..f38ba9e44 100644
3174 options->password_authentication = -1; 3174 options->password_authentication = -1;
3175 options->kbd_interactive_authentication = -1; 3175 options->kbd_interactive_authentication = -1;
3176 options->challenge_response_authentication = -1; 3176 options->challenge_response_authentication = -1;
3177@@ -375,10 +379,18 @@ fill_default_server_options(ServerOptions *options) 3177@@ -376,10 +380,18 @@ fill_default_server_options(ServerOptions *options)
3178 options->kerberos_get_afs_token = 0; 3178 options->kerberos_get_afs_token = 0;
3179 if (options->gss_authentication == -1) 3179 if (options->gss_authentication == -1)
3180 options->gss_authentication = 0; 3180 options->gss_authentication = 0;
@@ -3193,7 +3193,7 @@ index ba0a92c7b..f38ba9e44 100644
3193 if (options->password_authentication == -1) 3193 if (options->password_authentication == -1)
3194 options->password_authentication = 1; 3194 options->password_authentication = 1;
3195 if (options->kbd_interactive_authentication == -1) 3195 if (options->kbd_interactive_authentication == -1)
3196@@ -531,6 +543,7 @@ typedef enum { 3196@@ -523,6 +535,7 @@ typedef enum {
3197 sHostKeyAlgorithms, 3197 sHostKeyAlgorithms,
3198 sClientAliveInterval, sClientAliveCountMax, sAuthorizedKeysFile, 3198 sClientAliveInterval, sClientAliveCountMax, sAuthorizedKeysFile,
3199 sGssAuthentication, sGssCleanupCreds, sGssStrictAcceptor, 3199 sGssAuthentication, sGssCleanupCreds, sGssStrictAcceptor,
@@ -3201,7 +3201,7 @@ index ba0a92c7b..f38ba9e44 100644
3201 sAcceptEnv, sSetEnv, sPermitTunnel, 3201 sAcceptEnv, sSetEnv, sPermitTunnel,
3202 sMatch, sPermitOpen, sPermitListen, sForceCommand, sChrootDirectory, 3202 sMatch, sPermitOpen, sPermitListen, sForceCommand, sChrootDirectory,
3203 sUsePrivilegeSeparation, sAllowAgentForwarding, 3203 sUsePrivilegeSeparation, sAllowAgentForwarding,
3204@@ -607,12 +620,22 @@ static struct { 3204@@ -600,12 +613,22 @@ static struct {
3205 #ifdef GSSAPI 3205 #ifdef GSSAPI
3206 { "gssapiauthentication", sGssAuthentication, SSHCFG_ALL }, 3206 { "gssapiauthentication", sGssAuthentication, SSHCFG_ALL },
3207 { "gssapicleanupcredentials", sGssCleanupCreds, SSHCFG_GLOBAL }, 3207 { "gssapicleanupcredentials", sGssCleanupCreds, SSHCFG_GLOBAL },
@@ -3224,7 +3224,7 @@ index ba0a92c7b..f38ba9e44 100644
3224 { "passwordauthentication", sPasswordAuthentication, SSHCFG_ALL }, 3224 { "passwordauthentication", sPasswordAuthentication, SSHCFG_ALL },
3225 { "kbdinteractiveauthentication", sKbdInteractiveAuthentication, SSHCFG_ALL }, 3225 { "kbdinteractiveauthentication", sKbdInteractiveAuthentication, SSHCFG_ALL },
3226 { "challengeresponseauthentication", sChallengeResponseAuthentication, SSHCFG_GLOBAL }, 3226 { "challengeresponseauthentication", sChallengeResponseAuthentication, SSHCFG_GLOBAL },
3227@@ -1555,6 +1578,10 @@ process_server_config_line_depth(ServerOptions *options, char *line, 3227@@ -1557,6 +1580,10 @@ process_server_config_line_depth(ServerOptions *options, char *line,
3228 intptr = &options->gss_authentication; 3228 intptr = &options->gss_authentication;
3229 goto parse_flag; 3229 goto parse_flag;
3230 3230
@@ -3235,7 +3235,7 @@ index ba0a92c7b..f38ba9e44 100644
3235 case sGssCleanupCreds: 3235 case sGssCleanupCreds:
3236 intptr = &options->gss_cleanup_creds; 3236 intptr = &options->gss_cleanup_creds;
3237 goto parse_flag; 3237 goto parse_flag;
3238@@ -1563,6 +1590,22 @@ process_server_config_line_depth(ServerOptions *options, char *line, 3238@@ -1565,6 +1592,22 @@ process_server_config_line_depth(ServerOptions *options, char *line,
3239 intptr = &options->gss_strict_acceptor; 3239 intptr = &options->gss_strict_acceptor;
3240 goto parse_flag; 3240 goto parse_flag;
3241 3241
@@ -3258,7 +3258,7 @@ index ba0a92c7b..f38ba9e44 100644
3258 case sPasswordAuthentication: 3258 case sPasswordAuthentication:
3259 intptr = &options->password_authentication; 3259 intptr = &options->password_authentication;
3260 goto parse_flag; 3260 goto parse_flag;
3261@@ -2791,6 +2834,10 @@ dump_config(ServerOptions *o) 3261@@ -2808,6 +2851,10 @@ dump_config(ServerOptions *o)
3262 #ifdef GSSAPI 3262 #ifdef GSSAPI
3263 dump_cfg_fmtint(sGssAuthentication, o->gss_authentication); 3263 dump_cfg_fmtint(sGssAuthentication, o->gss_authentication);
3264 dump_cfg_fmtint(sGssCleanupCreds, o->gss_cleanup_creds); 3264 dump_cfg_fmtint(sGssCleanupCreds, o->gss_cleanup_creds);
@@ -3270,10 +3270,10 @@ index ba0a92c7b..f38ba9e44 100644
3270 dump_cfg_fmtint(sPasswordAuthentication, o->password_authentication); 3270 dump_cfg_fmtint(sPasswordAuthentication, o->password_authentication);
3271 dump_cfg_fmtint(sKbdInteractiveAuthentication, 3271 dump_cfg_fmtint(sKbdInteractiveAuthentication,
3272diff --git a/servconf.h b/servconf.h 3272diff --git a/servconf.h b/servconf.h
3273index a420f398d..253cad97e 100644 3273index 1df8f3db8..f10908e5b 100644
3274--- a/servconf.h 3274--- a/servconf.h
3275+++ b/servconf.h 3275+++ b/servconf.h
3276@@ -137,8 +137,11 @@ typedef struct { 3276@@ -138,8 +138,11 @@ typedef struct {
3277 int kerberos_get_afs_token; /* If true, try to get AFS token if 3277 int kerberos_get_afs_token; /* If true, try to get AFS token if
3278 * authenticated with Kerberos. */ 3278 * authenticated with Kerberos. */
3279 int gss_authentication; /* If true, permit GSSAPI authentication */ 3279 int gss_authentication; /* If true, permit GSSAPI authentication */
@@ -3286,10 +3286,10 @@ index a420f398d..253cad97e 100644
3286 * authentication. */ 3286 * authentication. */
3287 int kbd_interactive_authentication; /* If true, permit */ 3287 int kbd_interactive_authentication; /* If true, permit */
3288diff --git a/session.c b/session.c 3288diff --git a/session.c b/session.c
3289index 18cdfa8cf..f9c2c866e 100644 3289index 27ca8a104..857f17b3c 100644
3290--- a/session.c 3290--- a/session.c
3291+++ b/session.c 3291+++ b/session.c
3292@@ -2678,13 +2678,19 @@ do_cleanup(struct ssh *ssh, Authctxt *authctxt) 3292@@ -2685,13 +2685,19 @@ do_cleanup(struct ssh *ssh, Authctxt *authctxt)
3293 3293
3294 #ifdef KRB5 3294 #ifdef KRB5
3295 if (options.kerberos_ticket_cleanup && 3295 if (options.kerberos_ticket_cleanup &&
@@ -3436,7 +3436,7 @@ index 36180d07a..50d80bbca 100644
3436 3436
3437 #endif /* _SSH_GSS_H */ 3437 #endif /* _SSH_GSS_H */
3438diff --git a/ssh.1 b/ssh.1 3438diff --git a/ssh.1 b/ssh.1
3439index dce5f404b..7a3ba31ab 100644 3439index 555317887..be8e964f0 100644
3440--- a/ssh.1 3440--- a/ssh.1
3441+++ b/ssh.1 3441+++ b/ssh.1
3442@@ -506,7 +506,13 @@ For full details of the options listed below, and their possible values, see 3442@@ -506,7 +506,13 @@ For full details of the options listed below, and their possible values, see
@@ -3463,10 +3463,10 @@ index dce5f404b..7a3ba31ab 100644
3463 (key types), 3463 (key types),
3464 .Ar key-cert 3464 .Ar key-cert
3465diff --git a/ssh.c b/ssh.c 3465diff --git a/ssh.c b/ssh.c
3466index 98b6ce788..4a81ef810 100644 3466index f34ca0d71..bb98a7e2d 100644
3467--- a/ssh.c 3467--- a/ssh.c
3468+++ b/ssh.c 3468+++ b/ssh.c
3469@@ -773,6 +773,8 @@ main(int ac, char **av) 3469@@ -801,6 +801,8 @@ main(int ac, char **av)
3470 else if (strcmp(optarg, "kex") == 0 || 3470 else if (strcmp(optarg, "kex") == 0 ||
3471 strcasecmp(optarg, "KexAlgorithms") == 0) 3471 strcasecmp(optarg, "KexAlgorithms") == 0)
3472 cp = kex_alg_list('\n'); 3472 cp = kex_alg_list('\n');
@@ -3475,7 +3475,7 @@ index 98b6ce788..4a81ef810 100644
3475 else if (strcmp(optarg, "key") == 0) 3475 else if (strcmp(optarg, "key") == 0)
3476 cp = sshkey_alg_list(0, 0, 0, '\n'); 3476 cp = sshkey_alg_list(0, 0, 0, '\n');
3477 else if (strcmp(optarg, "key-cert") == 0) 3477 else if (strcmp(optarg, "key-cert") == 0)
3478@@ -798,8 +800,8 @@ main(int ac, char **av) 3478@@ -826,8 +828,8 @@ main(int ac, char **av)
3479 } else if (strcmp(optarg, "help") == 0) { 3479 } else if (strcmp(optarg, "help") == 0) {
3480 cp = xstrdup( 3480 cp = xstrdup(
3481 "cipher\ncipher-auth\ncompression\nkex\n" 3481 "cipher\ncipher-auth\ncompression\nkex\n"
@@ -3487,7 +3487,7 @@ index 98b6ce788..4a81ef810 100644
3487 if (cp == NULL) 3487 if (cp == NULL)
3488 fatal("Unsupported query \"%s\"", optarg); 3488 fatal("Unsupported query \"%s\"", optarg);
3489diff --git a/ssh_config b/ssh_config 3489diff --git a/ssh_config b/ssh_config
3490index 5e8ef548b..1ff999b68 100644 3490index 842ea866c..52aae8692 100644
3491--- a/ssh_config 3491--- a/ssh_config
3492+++ b/ssh_config 3492+++ b/ssh_config
3493@@ -24,6 +24,8 @@ 3493@@ -24,6 +24,8 @@
@@ -3500,10 +3500,10 @@ index 5e8ef548b..1ff999b68 100644
3500 # CheckHostIP yes 3500 # CheckHostIP yes
3501 # AddressFamily any 3501 # AddressFamily any
3502diff --git a/ssh_config.5 b/ssh_config.5 3502diff --git a/ssh_config.5 b/ssh_config.5
3503index dc010ccbd..e2a2359f9 100644 3503index 6be1f1aa2..bd86d000c 100644
3504--- a/ssh_config.5 3504--- a/ssh_config.5
3505+++ b/ssh_config.5 3505+++ b/ssh_config.5
3506@@ -766,10 +766,67 @@ The default is 3506@@ -779,10 +779,67 @@ The default is
3507 Specifies whether user authentication based on GSSAPI is allowed. 3507 Specifies whether user authentication based on GSSAPI is allowed.
3508 The default is 3508 The default is
3509 .Cm no . 3509 .Cm no .
@@ -3572,7 +3572,7 @@ index dc010ccbd..e2a2359f9 100644
3572 Indicates that 3572 Indicates that
3573 .Xr ssh 1 3573 .Xr ssh 1
3574diff --git a/sshconnect2.c b/sshconnect2.c 3574diff --git a/sshconnect2.c b/sshconnect2.c
3575index 1a6545edf..79a22e600 100644 3575index f64aae66a..c47fc31a6 100644
3576--- a/sshconnect2.c 3576--- a/sshconnect2.c
3577+++ b/sshconnect2.c 3577+++ b/sshconnect2.c
3578@@ -80,8 +80,6 @@ 3578@@ -80,8 +80,6 @@
@@ -3584,7 +3584,7 @@ index 1a6545edf..79a22e600 100644
3584 extern Options options; 3584 extern Options options;
3585 3585
3586 /* 3586 /*
3587@@ -163,6 +161,11 @@ ssh_kex2(struct ssh *ssh, char *host, struct sockaddr *hostaddr, u_short port) 3587@@ -210,6 +208,11 @@ ssh_kex2(struct ssh *ssh, char *host, struct sockaddr *hostaddr, u_short port)
3588 char *s, *all_key; 3588 char *s, *all_key;
3589 int r, use_known_hosts_order = 0; 3589 int r, use_known_hosts_order = 0;
3590 3590
@@ -3596,7 +3596,7 @@ index 1a6545edf..79a22e600 100644
3596 xxx_host = host; 3596 xxx_host = host;
3597 xxx_hostaddr = hostaddr; 3597 xxx_hostaddr = hostaddr;
3598 3598
3599@@ -206,6 +209,41 @@ ssh_kex2(struct ssh *ssh, char *host, struct sockaddr *hostaddr, u_short port) 3599@@ -253,6 +256,41 @@ ssh_kex2(struct ssh *ssh, char *host, struct sockaddr *hostaddr, u_short port)
3600 compat_pkalg_proposal(options.hostkeyalgorithms); 3600 compat_pkalg_proposal(options.hostkeyalgorithms);
3601 } 3601 }
3602 3602
@@ -3638,7 +3638,7 @@ index 1a6545edf..79a22e600 100644
3638 if (options.rekey_limit || options.rekey_interval) 3638 if (options.rekey_limit || options.rekey_interval)
3639 ssh_packet_set_rekey_limits(ssh, options.rekey_limit, 3639 ssh_packet_set_rekey_limits(ssh, options.rekey_limit,
3640 options.rekey_interval); 3640 options.rekey_interval);
3641@@ -224,16 +262,46 @@ ssh_kex2(struct ssh *ssh, char *host, struct sockaddr *hostaddr, u_short port) 3641@@ -271,16 +309,46 @@ ssh_kex2(struct ssh *ssh, char *host, struct sockaddr *hostaddr, u_short port)
3642 # ifdef OPENSSL_HAS_ECC 3642 # ifdef OPENSSL_HAS_ECC
3643 ssh->kex->kex[KEX_ECDH_SHA2] = kex_gen_client; 3643 ssh->kex->kex[KEX_ECDH_SHA2] = kex_gen_client;
3644 # endif 3644 # endif
@@ -3686,7 +3686,7 @@ index 1a6545edf..79a22e600 100644
3686 if ((r = kex_prop2buf(ssh->kex->my, myproposal)) != 0) 3686 if ((r = kex_prop2buf(ssh->kex->my, myproposal)) != 0)
3687 fatal("kex_prop2buf: %s", ssh_err(r)); 3687 fatal("kex_prop2buf: %s", ssh_err(r));
3688 3688
3689@@ -330,6 +398,7 @@ static int input_gssapi_response(int type, u_int32_t, struct ssh *); 3689@@ -377,6 +445,7 @@ static int input_gssapi_response(int type, u_int32_t, struct ssh *);
3690 static int input_gssapi_token(int type, u_int32_t, struct ssh *); 3690 static int input_gssapi_token(int type, u_int32_t, struct ssh *);
3691 static int input_gssapi_error(int, u_int32_t, struct ssh *); 3691 static int input_gssapi_error(int, u_int32_t, struct ssh *);
3692 static int input_gssapi_errtok(int, u_int32_t, struct ssh *); 3692 static int input_gssapi_errtok(int, u_int32_t, struct ssh *);
@@ -3694,7 +3694,7 @@ index 1a6545edf..79a22e600 100644
3694 #endif 3694 #endif
3695 3695
3696 void userauth(struct ssh *, char *); 3696 void userauth(struct ssh *, char *);
3697@@ -346,6 +415,11 @@ static char *authmethods_get(void); 3697@@ -393,6 +462,11 @@ static char *authmethods_get(void);
3698 3698
3699 Authmethod authmethods[] = { 3699 Authmethod authmethods[] = {
3700 #ifdef GSSAPI 3700 #ifdef GSSAPI
@@ -3706,7 +3706,7 @@ index 1a6545edf..79a22e600 100644
3706 {"gssapi-with-mic", 3706 {"gssapi-with-mic",
3707 userauth_gssapi, 3707 userauth_gssapi,
3708 userauth_gssapi_cleanup, 3708 userauth_gssapi_cleanup,
3709@@ -716,12 +790,31 @@ userauth_gssapi(struct ssh *ssh) 3709@@ -763,12 +837,31 @@ userauth_gssapi(struct ssh *ssh)
3710 OM_uint32 min; 3710 OM_uint32 min;
3711 int r, ok = 0; 3711 int r, ok = 0;
3712 gss_OID mech = NULL; 3712 gss_OID mech = NULL;
@@ -3739,7 +3739,7 @@ index 1a6545edf..79a22e600 100644
3739 3739
3740 /* Check to see whether the mechanism is usable before we offer it */ 3740 /* Check to see whether the mechanism is usable before we offer it */
3741 while (authctxt->mech_tried < authctxt->gss_supported_mechs->count && 3741 while (authctxt->mech_tried < authctxt->gss_supported_mechs->count &&
3742@@ -730,13 +823,15 @@ userauth_gssapi(struct ssh *ssh) 3742@@ -777,13 +870,15 @@ userauth_gssapi(struct ssh *ssh)
3743 elements[authctxt->mech_tried]; 3743 elements[authctxt->mech_tried];
3744 /* My DER encoding requires length<128 */ 3744 /* My DER encoding requires length<128 */
3745 if (mech->length < 128 && ssh_gssapi_check_mechanism(&gssctxt, 3745 if (mech->length < 128 && ssh_gssapi_check_mechanism(&gssctxt,
@@ -3756,7 +3756,7 @@ index 1a6545edf..79a22e600 100644
3756 if (!ok || mech == NULL) 3756 if (!ok || mech == NULL)
3757 return 0; 3757 return 0;
3758 3758
3759@@ -976,6 +1071,55 @@ input_gssapi_error(int type, u_int32_t plen, struct ssh *ssh) 3759@@ -1023,6 +1118,55 @@ input_gssapi_error(int type, u_int32_t plen, struct ssh *ssh)
3760 free(lang); 3760 free(lang);
3761 return r; 3761 return r;
3762 } 3762 }
@@ -3813,7 +3813,7 @@ index 1a6545edf..79a22e600 100644
3813 3813
3814 static int 3814 static int
3815diff --git a/sshd.c b/sshd.c 3815diff --git a/sshd.c b/sshd.c
3816index 6f8f11a3b..02fca5c28 100644 3816index 8aa7f3df6..8c5d5822e 100644
3817--- a/sshd.c 3817--- a/sshd.c
3818+++ b/sshd.c 3818+++ b/sshd.c
3819@@ -816,8 +816,8 @@ notify_hostkeys(struct ssh *ssh) 3819@@ -816,8 +816,8 @@ notify_hostkeys(struct ssh *ssh)
@@ -3827,7 +3827,7 @@ index 6f8f11a3b..02fca5c28 100644
3827 sshpkt_fatal(ssh, r, "%s: send", __func__); 3827 sshpkt_fatal(ssh, r, "%s: send", __func__);
3828 sshbuf_free(buf); 3828 sshbuf_free(buf);
3829 } 3829 }
3830@@ -1851,7 +1851,8 @@ main(int ac, char **av) 3830@@ -1901,7 +1901,8 @@ main(int ac, char **av)
3831 free(fp); 3831 free(fp);
3832 } 3832 }
3833 accumulate_host_timing_secret(cfg, NULL); 3833 accumulate_host_timing_secret(cfg, NULL);
@@ -3837,7 +3837,7 @@ index 6f8f11a3b..02fca5c28 100644
3837 logit("sshd: no hostkeys available -- exiting."); 3837 logit("sshd: no hostkeys available -- exiting.");
3838 exit(1); 3838 exit(1);
3839 } 3839 }
3840@@ -2342,6 +2343,48 @@ do_ssh2_kex(struct ssh *ssh) 3840@@ -2393,6 +2394,48 @@ do_ssh2_kex(struct ssh *ssh)
3841 myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = compat_pkalg_proposal( 3841 myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = compat_pkalg_proposal(
3842 list_hostkey_types()); 3842 list_hostkey_types());
3843 3843
@@ -3886,7 +3886,7 @@ index 6f8f11a3b..02fca5c28 100644
3886 /* start key exchange */ 3886 /* start key exchange */
3887 if ((r = kex_setup(ssh, myproposal)) != 0) 3887 if ((r = kex_setup(ssh, myproposal)) != 0)
3888 fatal("kex_setup: %s", ssh_err(r)); 3888 fatal("kex_setup: %s", ssh_err(r));
3889@@ -2357,7 +2400,18 @@ do_ssh2_kex(struct ssh *ssh) 3889@@ -2408,7 +2451,18 @@ do_ssh2_kex(struct ssh *ssh)
3890 # ifdef OPENSSL_HAS_ECC 3890 # ifdef OPENSSL_HAS_ECC
3891 kex->kex[KEX_ECDH_SHA2] = kex_gen_server; 3891 kex->kex[KEX_ECDH_SHA2] = kex_gen_server;
3892 # endif 3892 # endif
@@ -3920,7 +3920,7 @@ index 19b7c91a1..2c48105f8 100644
3920 # Set this to 'yes' to enable PAM authentication, account processing, 3920 # Set this to 'yes' to enable PAM authentication, account processing,
3921 # and session processing. If this is enabled, PAM authentication will 3921 # and session processing. If this is enabled, PAM authentication will
3922diff --git a/sshd_config.5 b/sshd_config.5 3922diff --git a/sshd_config.5 b/sshd_config.5
3923index b294efc2d..360e5fb1a 100644 3923index 6fa421cae..eabbe9e73 100644
3924--- a/sshd_config.5 3924--- a/sshd_config.5
3925+++ b/sshd_config.5 3925+++ b/sshd_config.5
3926@@ -644,6 +644,11 @@ Specifies whether to automatically destroy the user's credentials cache 3926@@ -644,6 +644,11 @@ Specifies whether to automatically destroy the user's credentials cache
@@ -3968,10 +3968,10 @@ index b294efc2d..360e5fb1a 100644
3968 Specifies the key types that will be accepted for hostbased authentication 3968 Specifies the key types that will be accepted for hostbased authentication
3969 as a list of comma-separated patterns. 3969 as a list of comma-separated patterns.
3970diff --git a/sshkey.c b/sshkey.c 3970diff --git a/sshkey.c b/sshkey.c
3971index 1571e3d93..1ac32a0ec 100644 3971index ac451f1a8..b88282e19 100644
3972--- a/sshkey.c 3972--- a/sshkey.c
3973+++ b/sshkey.c 3973+++ b/sshkey.c
3974@@ -154,6 +154,7 @@ static const struct keytype keytypes[] = { 3974@@ -156,6 +156,7 @@ static const struct keytype keytypes[] = {
3975 KEY_ECDSA_SK_CERT, NID_X9_62_prime256v1, 1, 0 }, 3975 KEY_ECDSA_SK_CERT, NID_X9_62_prime256v1, 1, 0 },
3976 # endif /* OPENSSL_HAS_ECC */ 3976 # endif /* OPENSSL_HAS_ECC */
3977 #endif /* WITH_OPENSSL */ 3977 #endif /* WITH_OPENSSL */
@@ -3979,7 +3979,7 @@ index 1571e3d93..1ac32a0ec 100644
3979 { NULL, NULL, NULL, -1, -1, 0, 0 } 3979 { NULL, NULL, NULL, -1, -1, 0, 0 }
3980 }; 3980 };
3981 3981
3982@@ -255,7 +256,7 @@ sshkey_alg_list(int certs_only, int plain_only, int include_sigonly, char sep) 3982@@ -257,7 +258,7 @@ sshkey_alg_list(int certs_only, int plain_only, int include_sigonly, char sep)
3983 const struct keytype *kt; 3983 const struct keytype *kt;
3984 3984
3985 for (kt = keytypes; kt->type != -1; kt++) { 3985 for (kt = keytypes; kt->type != -1; kt++) {
@@ -3989,7 +3989,7 @@ index 1571e3d93..1ac32a0ec 100644
3989 if (!include_sigonly && kt->sigonly) 3989 if (!include_sigonly && kt->sigonly)
3990 continue; 3990 continue;
3991diff --git a/sshkey.h b/sshkey.h 3991diff --git a/sshkey.h b/sshkey.h
3992index 9c1d4f637..f586e8967 100644 3992index 2d8b62497..dc1c10597 100644
3993--- a/sshkey.h 3993--- a/sshkey.h
3994+++ b/sshkey.h 3994+++ b/sshkey.h
3995@@ -69,6 +69,7 @@ enum sshkey_types { 3995@@ -69,6 +69,7 @@ enum sshkey_types {
diff --git a/debian/patches/keepalive-extensions.patch b/debian/patches/keepalive-extensions.patch
index 4a26d9d31..c9bc83267 100644
--- a/debian/patches/keepalive-extensions.patch
+++ b/debian/patches/keepalive-extensions.patch
@@ -1,4 +1,4 @@
1From 24c9c811bfd227e467ab1ce00503f08dcc22c0f4 Mon Sep 17 00:00:00 2001 1From 164d1c9f11309d38273ac64e30eda2baa3733f78 Mon Sep 17 00:00:00 2001
2From: Richard Kettlewell <rjk@greenend.org.uk> 2From: Richard Kettlewell <rjk@greenend.org.uk>
3Date: Sun, 9 Feb 2014 16:09:52 +0000 3Date: Sun, 9 Feb 2014 16:09:52 +0000
4Subject: Various keepalive extensions 4Subject: Various keepalive extensions
@@ -26,7 +26,7 @@ Patch-Name: keepalive-extensions.patch
26 3 files changed, 34 insertions(+), 4 deletions(-) 26 3 files changed, 34 insertions(+), 4 deletions(-)
27 27
28diff --git a/readconf.c b/readconf.c 28diff --git a/readconf.c b/readconf.c
29index 2ccc48572..431243193 100644 29index b069333fa..3d0a812b3 100644
30--- a/readconf.c 30--- a/readconf.c
31+++ b/readconf.c 31+++ b/readconf.c
32@@ -176,6 +176,7 @@ typedef enum { 32@@ -176,6 +176,7 @@ typedef enum {
@@ -46,7 +46,7 @@ index 2ccc48572..431243193 100644
46 46
47 { NULL, oBadOption } 47 { NULL, oBadOption }
48 }; 48 };
49@@ -1519,6 +1522,8 @@ parse_keytypes: 49@@ -1534,6 +1537,8 @@ parse_keytypes:
50 goto parse_flag; 50 goto parse_flag;
51 51
52 case oServerAliveInterval: 52 case oServerAliveInterval:
@@ -55,7 +55,7 @@ index 2ccc48572..431243193 100644
55 intptr = &options->server_alive_interval; 55 intptr = &options->server_alive_interval;
56 goto parse_time; 56 goto parse_time;
57 57
58@@ -2222,8 +2227,13 @@ fill_default_options(Options * options) 58@@ -2266,8 +2271,13 @@ fill_default_options(Options * options)
59 options->rekey_interval = 0; 59 options->rekey_interval = 0;
60 if (options->verify_host_key_dns == -1) 60 if (options->verify_host_key_dns == -1)
61 options->verify_host_key_dns = 0; 61 options->verify_host_key_dns = 0;
@@ -72,10 +72,10 @@ index 2ccc48572..431243193 100644
72 options->server_alive_count_max = 3; 72 options->server_alive_count_max = 3;
73 if (options->control_master == -1) 73 if (options->control_master == -1)
74diff --git a/ssh_config.5 b/ssh_config.5 74diff --git a/ssh_config.5 b/ssh_config.5
75index e2a2359f9..85ab7447f 100644 75index bd86d000c..3ceb800ba 100644
76--- a/ssh_config.5 76--- a/ssh_config.5
77+++ b/ssh_config.5 77+++ b/ssh_config.5
78@@ -266,9 +266,13 @@ If set to 78@@ -275,9 +275,13 @@ If set to
79 .Cm yes , 79 .Cm yes ,
80 user interaction such as password prompts and host key confirmation requests 80 user interaction such as password prompts and host key confirmation requests
81 will be disabled. 81 will be disabled.
@@ -90,7 +90,7 @@ index e2a2359f9..85ab7447f 100644
90 The argument must be 90 The argument must be
91 .Cm yes 91 .Cm yes
92 or 92 or
93@@ -1604,7 +1608,14 @@ from the server, 93@@ -1624,7 +1628,14 @@ from the server,
94 will send a message through the encrypted 94 will send a message through the encrypted
95 channel to request a response from the server. 95 channel to request a response from the server.
96 The default 96 The default
@@ -106,7 +106,7 @@ index e2a2359f9..85ab7447f 100644
106 .It Cm SetEnv 106 .It Cm SetEnv
107 Directly specify one or more environment variables and their contents to 107 Directly specify one or more environment variables and their contents to
108 be sent to the server. 108 be sent to the server.
109@@ -1684,6 +1695,12 @@ Specifies whether the system should send TCP keepalive messages to the 109@@ -1704,6 +1715,12 @@ Specifies whether the system should send TCP keepalive messages to the
110 other side. 110 other side.
111 If they are sent, death of the connection or crash of one 111 If they are sent, death of the connection or crash of one
112 of the machines will be properly noticed. 112 of the machines will be properly noticed.
@@ -120,10 +120,10 @@ index e2a2359f9..85ab7447f 100644
120 connections will die if the route is down temporarily, and some people 120 connections will die if the route is down temporarily, and some people
121 find it annoying. 121 find it annoying.
122diff --git a/sshd_config.5 b/sshd_config.5 122diff --git a/sshd_config.5 b/sshd_config.5
123index 360e5fb1a..9f093be1f 100644 123index eabbe9e73..6457620bb 100644
124--- a/sshd_config.5 124--- a/sshd_config.5
125+++ b/sshd_config.5 125+++ b/sshd_config.5
126@@ -1680,6 +1680,9 @@ This avoids infinitely hanging sessions. 126@@ -1691,6 +1691,9 @@ This avoids infinitely hanging sessions.
127 .Pp 127 .Pp
128 To disable TCP keepalive messages, the value should be set to 128 To disable TCP keepalive messages, the value should be set to
129 .Cm no . 129 .Cm no .
diff --git a/debian/patches/mention-ssh-keygen-on-keychange.patch b/debian/patches/mention-ssh-keygen-on-keychange.patch
index 50b51619c..cb227f839 100644
--- a/debian/patches/mention-ssh-keygen-on-keychange.patch
+++ b/debian/patches/mention-ssh-keygen-on-keychange.patch
@@ -1,4 +1,4 @@
1From 8ec2f85d03524a6b4954f0a29496b5a301f92080 Mon Sep 17 00:00:00 2001 1From c8da63c601b5d44fd233548385809c9c3a2fa0b8 Mon Sep 17 00:00:00 2001
2From: Scott Moser <smoser@ubuntu.com> 2From: Scott Moser <smoser@ubuntu.com>
3Date: Sun, 9 Feb 2014 16:10:03 +0000 3Date: Sun, 9 Feb 2014 16:10:03 +0000
4Subject: Mention ssh-keygen in ssh fingerprint changed warning 4Subject: Mention ssh-keygen in ssh fingerprint changed warning
@@ -14,10 +14,10 @@ Patch-Name: mention-ssh-keygen-on-keychange.patch
14 1 file changed, 8 insertions(+), 1 deletion(-) 14 1 file changed, 8 insertions(+), 1 deletion(-)
15 15
16diff --git a/sshconnect.c b/sshconnect.c 16diff --git a/sshconnect.c b/sshconnect.c
17index bfbf80e92..f20d3e792 100644 17index 5f8c81b84..3ae20b74e 100644
18--- a/sshconnect.c 18--- a/sshconnect.c
19+++ b/sshconnect.c 19+++ b/sshconnect.c
20@@ -991,9 +991,13 @@ check_host_key(char *hostname, struct sockaddr *hostaddr, u_short port, 20@@ -994,9 +994,13 @@ check_host_key(char *hostname, struct sockaddr *hostaddr, u_short port,
21 error("%s. This could either mean that", key_msg); 21 error("%s. This could either mean that", key_msg);
22 error("DNS SPOOFING is happening or the IP address for the host"); 22 error("DNS SPOOFING is happening or the IP address for the host");
23 error("and its host key have changed at the same time."); 23 error("and its host key have changed at the same time.");
@@ -32,7 +32,7 @@ index bfbf80e92..f20d3e792 100644
32 } 32 }
33 /* The host key has changed. */ 33 /* The host key has changed. */
34 warn_changed_key(host_key); 34 warn_changed_key(host_key);
35@@ -1002,6 +1006,9 @@ check_host_key(char *hostname, struct sockaddr *hostaddr, u_short port, 35@@ -1005,6 +1009,9 @@ check_host_key(char *hostname, struct sockaddr *hostaddr, u_short port,
36 error("Offending %s key in %s:%lu", 36 error("Offending %s key in %s:%lu",
37 sshkey_type(host_found->key), 37 sshkey_type(host_found->key),
38 host_found->file, host_found->line); 38 host_found->file, host_found->line);
diff --git a/debian/patches/no-openssl-version-status.patch b/debian/patches/no-openssl-version-status.patch
index b91cbd4ea..e383375c6 100644
--- a/debian/patches/no-openssl-version-status.patch
+++ b/debian/patches/no-openssl-version-status.patch
@@ -1,4 +1,4 @@
1From a5d0b90bbd2c5a6bdec17b1abc5dca8166ae73f7 Mon Sep 17 00:00:00 2001 1From cf3ffd6a25d425bed33dd698f92e64953d9769eb Mon Sep 17 00:00:00 2001
2From: Kurt Roeckx <kurt@roeckx.be> 2From: Kurt Roeckx <kurt@roeckx.be>
3Date: Sun, 9 Feb 2014 16:10:14 +0000 3Date: Sun, 9 Feb 2014 16:10:14 +0000
4Subject: Don't check the status field of the OpenSSL version 4Subject: Don't check the status field of the OpenSSL version
diff --git a/debian/patches/openbsd-docs.patch b/debian/patches/openbsd-docs.patch
index 342487057..64405d578 100644
--- a/debian/patches/openbsd-docs.patch
+++ b/debian/patches/openbsd-docs.patch
@@ -1,4 +1,4 @@
1From 34bf12a8e8fcc7720168dac307ef9388af93b947 Mon Sep 17 00:00:00 2001 1From 6bcbfca92b58917dba48b696dd63529fa5dcbb82 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:10:09 +0000 3Date: Sun, 9 Feb 2014 16:10:09 +0000
4Subject: Adjust various OpenBSD-specific references in manual pages 4Subject: Adjust various OpenBSD-specific references in manual pages
@@ -44,10 +44,10 @@ index ef0de0850..149846c8c 100644
44 .Sh SEE ALSO 44 .Sh SEE ALSO
45 .Xr ssh-keygen 1 , 45 .Xr ssh-keygen 1 ,
46diff --git a/ssh-keygen.1 b/ssh-keygen.1 46diff --git a/ssh-keygen.1 b/ssh-keygen.1
47index 059c1b034..45866f931 100644 47index 3ae596caa..836174fb6 100644
48--- a/ssh-keygen.1 48--- a/ssh-keygen.1
49+++ b/ssh-keygen.1 49+++ b/ssh-keygen.1
50@@ -197,9 +197,7 @@ key in 50@@ -202,9 +202,7 @@ key in
51 .Pa ~/.ssh/id_ed25519_sk 51 .Pa ~/.ssh/id_ed25519_sk
52 or 52 or
53 .Pa ~/.ssh/id_rsa . 53 .Pa ~/.ssh/id_rsa .
@@ -58,7 +58,7 @@ index 059c1b034..45866f931 100644
58 .Pp 58 .Pp
59 Normally this program generates the key and asks for a file in which 59 Normally this program generates the key and asks for a file in which
60 to store the private key. 60 to store the private key.
61@@ -262,9 +260,7 @@ If 61@@ -269,9 +267,7 @@ If
62 .Fl f 62 .Fl f
63 has also been specified, its argument is used as a prefix to the 63 has also been specified, its argument is used as a prefix to the
64 default path for the resulting host key files. 64 default path for the resulting host key files.
@@ -69,7 +69,7 @@ index 059c1b034..45866f931 100644
69 .It Fl a Ar rounds 69 .It Fl a Ar rounds
70 When saving a private key, this option specifies the number of KDF 70 When saving a private key, this option specifies the number of KDF
71 (key derivation function) rounds used. 71 (key derivation function) rounds used.
72@@ -787,7 +783,7 @@ option. 72@@ -804,7 +800,7 @@ option.
73 Valid generator values are 2, 3, and 5. 73 Valid generator values are 2, 3, and 5.
74 .Pp 74 .Pp
75 Screened DH groups may be installed in 75 Screened DH groups may be installed in
@@ -78,7 +78,7 @@ index 059c1b034..45866f931 100644
78 It is important that this file contains moduli of a range of bit lengths and 78 It is important that this file contains moduli of a range of bit lengths and
79 that both ends of a connection share common moduli. 79 that both ends of a connection share common moduli.
80 .Pp 80 .Pp
81@@ -1158,7 +1154,7 @@ on all machines 81@@ -1185,7 +1181,7 @@ on all machines
82 where the user wishes to log in using public key authentication. 82 where the user wishes to log in using public key authentication.
83 There is no need to keep the contents of this file secret. 83 There is no need to keep the contents of this file secret.
84 .Pp 84 .Pp
@@ -88,7 +88,7 @@ index 059c1b034..45866f931 100644
88 The file format is described in 88 The file format is described in
89 .Xr moduli 5 . 89 .Xr moduli 5 .
90diff --git a/ssh.1 b/ssh.1 90diff --git a/ssh.1 b/ssh.1
91index a80be8efe..566fdba6b 100644 91index 5d613076c..1880c032d 100644
92--- a/ssh.1 92--- a/ssh.1
93+++ b/ssh.1 93+++ b/ssh.1
94@@ -890,6 +890,10 @@ implements public key authentication protocol automatically, 94@@ -890,6 +890,10 @@ implements public key authentication protocol automatically,
@@ -103,7 +103,7 @@ index a80be8efe..566fdba6b 100644
103 .Pp 103 .Pp
104 The file 104 The file
105diff --git a/sshd.8 b/sshd.8 105diff --git a/sshd.8 b/sshd.8
106index 730520231..5ce0ea4fa 100644 106index 97d547ffa..7895a6a94 100644
107--- a/sshd.8 107--- a/sshd.8
108+++ b/sshd.8 108+++ b/sshd.8
109@@ -65,7 +65,7 @@ over an insecure network. 109@@ -65,7 +65,7 @@ over an insecure network.
@@ -115,7 +115,7 @@ index 730520231..5ce0ea4fa 100644
115 It forks a new 115 It forks a new
116 daemon for each incoming connection. 116 daemon for each incoming connection.
117 The forked daemons handle 117 The forked daemons handle
118@@ -904,7 +904,7 @@ This file is for host-based authentication (see 118@@ -911,7 +911,7 @@ This file is for host-based authentication (see
119 .Xr ssh 1 ) . 119 .Xr ssh 1 ) .
120 It should only be writable by root. 120 It should only be writable by root.
121 .Pp 121 .Pp
@@ -124,7 +124,7 @@ index 730520231..5ce0ea4fa 100644
124 Contains Diffie-Hellman groups used for the "Diffie-Hellman Group Exchange" 124 Contains Diffie-Hellman groups used for the "Diffie-Hellman Group Exchange"
125 key exchange method. 125 key exchange method.
126 The file format is described in 126 The file format is described in
127@@ -1002,7 +1002,6 @@ The content of this file is not sensitive; it can be world-readable. 127@@ -1009,7 +1009,6 @@ The content of this file is not sensitive; it can be world-readable.
128 .Xr ssh-keyscan 1 , 128 .Xr ssh-keyscan 1 ,
129 .Xr chroot 2 , 129 .Xr chroot 2 ,
130 .Xr hosts_access 5 , 130 .Xr hosts_access 5 ,
@@ -133,7 +133,7 @@ index 730520231..5ce0ea4fa 100644
133 .Xr sshd_config 5 , 133 .Xr sshd_config 5 ,
134 .Xr inetd 8 , 134 .Xr inetd 8 ,
135diff --git a/sshd_config.5 b/sshd_config.5 135diff --git a/sshd_config.5 b/sshd_config.5
136index 753ceda10..c27f99937 100644 136index 33dc0c675..32ae46476 100644
137--- a/sshd_config.5 137--- a/sshd_config.5
138+++ b/sshd_config.5 138+++ b/sshd_config.5
139@@ -385,8 +385,7 @@ Certificates signed using other algorithms will not be accepted for 139@@ -385,8 +385,7 @@ Certificates signed using other algorithms will not be accepted for
diff --git a/debian/patches/package-versioning.patch b/debian/patches/package-versioning.patch
index a560ae940..daa1473db 100644
--- a/debian/patches/package-versioning.patch
+++ b/debian/patches/package-versioning.patch
@@ -1,4 +1,4 @@
1From d66c30698f807ab95aee7ea4a882c192884df047 Mon Sep 17 00:00:00 2001 1From 707144d399b9fc959a4f6be3fd8e239c208c88ff Mon Sep 17 00:00:00 2001
2From: Matthew Vernon <matthew@debian.org> 2From: Matthew Vernon <matthew@debian.org>
3Date: Sun, 9 Feb 2014 16:10:05 +0000 3Date: Sun, 9 Feb 2014 16:10:05 +0000
4Subject: Include the Debian version in our identification 4Subject: Include the Debian version in our identification
@@ -18,7 +18,7 @@ Patch-Name: package-versioning.patch
18 2 files changed, 7 insertions(+), 2 deletions(-) 18 2 files changed, 7 insertions(+), 2 deletions(-)
19 19
20diff --git a/kex.c b/kex.c 20diff --git a/kex.c b/kex.c
21index 144dee512..0e64bf760 100644 21index 751cfc710..ce7bb5b3b 100644
22--- a/kex.c 22--- a/kex.c
23+++ b/kex.c 23+++ b/kex.c
24@@ -1243,7 +1243,7 @@ kex_exchange_identification(struct ssh *ssh, int timeout_ms, 24@@ -1243,7 +1243,7 @@ kex_exchange_identification(struct ssh *ssh, int timeout_ms,
@@ -31,11 +31,11 @@ index 144dee512..0e64bf760 100644
31 version_addendum == NULL ? "" : version_addendum)) != 0) { 31 version_addendum == NULL ? "" : version_addendum)) != 0) {
32 oerrno = errno; 32 oerrno = errno;
33diff --git a/version.h b/version.h 33diff --git a/version.h b/version.h
34index a2eca3ec8..158eaee70 100644 34index c2f9c55bb..480cd59e1 100644
35--- a/version.h 35--- a/version.h
36+++ b/version.h 36+++ b/version.h
37@@ -3,4 +3,9 @@ 37@@ -3,4 +3,9 @@
38 #define SSH_VERSION "OpenSSH_8.3" 38 #define SSH_VERSION "OpenSSH_8.4"
39 39
40 #define SSH_PORTABLE "p1" 40 #define SSH_PORTABLE "p1"
41-#define SSH_RELEASE SSH_VERSION SSH_PORTABLE 41-#define SSH_RELEASE SSH_VERSION SSH_PORTABLE
diff --git a/debian/patches/restore-authorized_keys2.patch b/debian/patches/restore-authorized_keys2.patch
index e32c31717..a1f52056f 100644
--- a/debian/patches/restore-authorized_keys2.patch
+++ b/debian/patches/restore-authorized_keys2.patch
@@ -1,4 +1,4 @@
1From a31d1fdf19480d9a184a27a4d221655f408f74d7 Mon Sep 17 00:00:00 2001 1From 8dc9bb0d9cf53a35d6003623f1e7c91326d79875 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 5 Mar 2017 02:02:11 +0000 3Date: Sun, 5 Mar 2017 02:02:11 +0000
4Subject: Restore reading authorized_keys2 by default 4Subject: Restore reading authorized_keys2 by default
diff --git a/debian/patches/restore-tcp-wrappers.patch b/debian/patches/restore-tcp-wrappers.patch
index e544e3874..7388fadff 100644
--- a/debian/patches/restore-tcp-wrappers.patch
+++ b/debian/patches/restore-tcp-wrappers.patch
@@ -1,4 +1,4 @@
1From 7e3de67f8447064d6963e8299653d8e01baaef1e Mon Sep 17 00:00:00 2001 1From 6806b85f30244d186206004386a9faddc16b8738 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Tue, 7 Oct 2014 13:22:41 +0100 3Date: Tue, 7 Oct 2014 13:22:41 +0100
4Subject: Restore TCP wrappers support 4Subject: Restore TCP wrappers support
@@ -28,10 +28,10 @@ Patch-Name: restore-tcp-wrappers.patch
28 3 files changed, 89 insertions(+) 28 3 files changed, 89 insertions(+)
29 29
30diff --git a/configure.ac b/configure.ac 30diff --git a/configure.ac b/configure.ac
31index d98e6f74a..812b7218f 100644 31index c8a96deb4..bb435ec1f 100644
32--- a/configure.ac 32--- a/configure.ac
33+++ b/configure.ac 33+++ b/configure.ac
34@@ -1558,6 +1558,62 @@ else 34@@ -1571,6 +1571,62 @@ else
35 AC_MSG_RESULT([no]) 35 AC_MSG_RESULT([no])
36 fi 36 fi
37 37
@@ -94,7 +94,7 @@ index d98e6f74a..812b7218f 100644
94 # Check whether user wants to use ldns 94 # Check whether user wants to use ldns
95 LDNS_MSG="no" 95 LDNS_MSG="no"
96 AC_ARG_WITH(ldns, 96 AC_ARG_WITH(ldns,
97@@ -5479,6 +5535,7 @@ echo " PAM support: $PAM_MSG" 97@@ -5536,6 +5592,7 @@ echo " PAM support: $PAM_MSG"
98 echo " OSF SIA support: $SIA_MSG" 98 echo " OSF SIA support: $SIA_MSG"
99 echo " KerberosV support: $KRB5_MSG" 99 echo " KerberosV support: $KRB5_MSG"
100 echo " SELinux support: $SELINUX_MSG" 100 echo " SELinux support: $SELINUX_MSG"
@@ -103,10 +103,10 @@ index d98e6f74a..812b7218f 100644
103 echo " libedit support: $LIBEDIT_MSG" 103 echo " libedit support: $LIBEDIT_MSG"
104 echo " libldns support: $LDNS_MSG" 104 echo " libldns support: $LDNS_MSG"
105diff --git a/sshd.8 b/sshd.8 105diff --git a/sshd.8 b/sshd.8
106index c5f8987d2..730520231 100644 106index b2fad56d3..97d547ffa 100644
107--- a/sshd.8 107--- a/sshd.8
108+++ b/sshd.8 108+++ b/sshd.8
109@@ -893,6 +893,12 @@ the user's home directory becomes accessible. 109@@ -900,6 +900,12 @@ the user's home directory becomes accessible.
110 This file should be writable only by the user, and need not be 110 This file should be writable only by the user, and need not be
111 readable by anyone else. 111 readable by anyone else.
112 .Pp 112 .Pp
@@ -119,7 +119,7 @@ index c5f8987d2..730520231 100644
119 .It Pa /etc/hosts.equiv 119 .It Pa /etc/hosts.equiv
120 This file is for host-based authentication (see 120 This file is for host-based authentication (see
121 .Xr ssh 1 ) . 121 .Xr ssh 1 ) .
122@@ -995,6 +1001,7 @@ The content of this file is not sensitive; it can be world-readable. 122@@ -1002,6 +1008,7 @@ The content of this file is not sensitive; it can be world-readable.
123 .Xr ssh-keygen 1 , 123 .Xr ssh-keygen 1 ,
124 .Xr ssh-keyscan 1 , 124 .Xr ssh-keyscan 1 ,
125 .Xr chroot 2 , 125 .Xr chroot 2 ,
@@ -128,7 +128,7 @@ index c5f8987d2..730520231 100644
128 .Xr moduli 5 , 128 .Xr moduli 5 ,
129 .Xr sshd_config 5 , 129 .Xr sshd_config 5 ,
130diff --git a/sshd.c b/sshd.c 130diff --git a/sshd.c b/sshd.c
131index 02fca5c28..e96d90809 100644 131index 8c5d5822e..a50ec3584 100644
132--- a/sshd.c 132--- a/sshd.c
133+++ b/sshd.c 133+++ b/sshd.c
134@@ -124,6 +124,13 @@ 134@@ -124,6 +124,13 @@
@@ -145,7 +145,7 @@ index 02fca5c28..e96d90809 100644
145 /* Re-exec fds */ 145 /* Re-exec fds */
146 #define REEXEC_DEVCRYPTO_RESERVED_FD (STDERR_FILENO + 1) 146 #define REEXEC_DEVCRYPTO_RESERVED_FD (STDERR_FILENO + 1)
147 #define REEXEC_STARTUP_PIPE_FD (STDERR_FILENO + 2) 147 #define REEXEC_STARTUP_PIPE_FD (STDERR_FILENO + 2)
148@@ -2132,6 +2139,24 @@ main(int ac, char **av) 148@@ -2183,6 +2190,24 @@ main(int ac, char **av)
149 #ifdef SSH_AUDIT_EVENTS 149 #ifdef SSH_AUDIT_EVENTS
150 audit_connection_from(remote_ip, remote_port); 150 audit_connection_from(remote_ip, remote_port);
151 #endif 151 #endif
diff --git a/debian/patches/revert-ipqos-defaults.patch b/debian/patches/revert-ipqos-defaults.patch
index 0ec75419a..b84cef134 100644
--- a/debian/patches/revert-ipqos-defaults.patch
+++ b/debian/patches/revert-ipqos-defaults.patch
@@ -1,4 +1,4 @@
1From 39b8d128ef980a410bb1ea0ee80e95ac9fff59c3 Mon Sep 17 00:00:00 2001 1From 3728919292c05983372954d27426f7d966813139 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Mon, 8 Apr 2019 10:46:29 +0100 3Date: Mon, 8 Apr 2019 10:46:29 +0100
4Subject: Revert "upstream: Update default IPQoS in ssh(1), sshd(8) to DSCP 4Subject: Revert "upstream: Update default IPQoS in ssh(1), sshd(8) to DSCP
@@ -24,10 +24,10 @@ Patch-Name: revert-ipqos-defaults.patch
24 4 files changed, 8 insertions(+), 12 deletions(-) 24 4 files changed, 8 insertions(+), 12 deletions(-)
25 25
26diff --git a/readconf.c b/readconf.c 26diff --git a/readconf.c b/readconf.c
27index 87b0dc62a..9a646dcaa 100644 27index e676b6be6..c60df5602 100644
28--- a/readconf.c 28--- a/readconf.c
29+++ b/readconf.c 29+++ b/readconf.c
30@@ -2254,9 +2254,9 @@ fill_default_options(Options * options) 30@@ -2298,9 +2298,9 @@ fill_default_options(Options * options)
31 if (options->visual_host_key == -1) 31 if (options->visual_host_key == -1)
32 options->visual_host_key = 0; 32 options->visual_host_key = 0;
33 if (options->ip_qos_interactive == -1) 33 if (options->ip_qos_interactive == -1)
@@ -40,10 +40,10 @@ index 87b0dc62a..9a646dcaa 100644
40 options->request_tty = REQUEST_TTY_AUTO; 40 options->request_tty = REQUEST_TTY_AUTO;
41 if (options->proxy_use_fdpass == -1) 41 if (options->proxy_use_fdpass == -1)
42diff --git a/servconf.c b/servconf.c 42diff --git a/servconf.c b/servconf.c
43index cf4e52f3b..c290e9786 100644 43index f9eb778d6..98afcfcec 100644
44--- a/servconf.c 44--- a/servconf.c
45+++ b/servconf.c 45+++ b/servconf.c
46@@ -452,9 +452,9 @@ fill_default_server_options(ServerOptions *options) 46@@ -453,9 +453,9 @@ fill_default_server_options(ServerOptions *options)
47 if (options->permit_tun == -1) 47 if (options->permit_tun == -1)
48 options->permit_tun = SSH_TUNMODE_NO; 48 options->permit_tun = SSH_TUNMODE_NO;
49 if (options->ip_qos_interactive == -1) 49 if (options->ip_qos_interactive == -1)
@@ -56,10 +56,10 @@ index cf4e52f3b..c290e9786 100644
56 options->version_addendum = xstrdup(""); 56 options->version_addendum = xstrdup("");
57 if (options->fwd_opts.streamlocal_bind_mask == (mode_t)-1) 57 if (options->fwd_opts.streamlocal_bind_mask == (mode_t)-1)
58diff --git a/ssh_config.5 b/ssh_config.5 58diff --git a/ssh_config.5 b/ssh_config.5
59index aac3fabb7..2574b1004 100644 59index 6d6c59521..080d289a7 100644
60--- a/ssh_config.5 60--- a/ssh_config.5
61+++ b/ssh_config.5 61+++ b/ssh_config.5
62@@ -1140,11 +1140,9 @@ If one argument is specified, it is used as the packet class unconditionally. 62@@ -1156,11 +1156,9 @@ If one argument is specified, it is used as the packet class unconditionally.
63 If two values are specified, the first is automatically selected for 63 If two values are specified, the first is automatically selected for
64 interactive sessions and the second for non-interactive sessions. 64 interactive sessions and the second for non-interactive sessions.
65 The default is 65 The default is
@@ -74,7 +74,7 @@ index aac3fabb7..2574b1004 100644
74 .It Cm KbdInteractiveAuthentication 74 .It Cm KbdInteractiveAuthentication
75 Specifies whether to use keyboard-interactive authentication. 75 Specifies whether to use keyboard-interactive authentication.
76diff --git a/sshd_config.5 b/sshd_config.5 76diff --git a/sshd_config.5 b/sshd_config.5
77index b38025dbf..88db4db07 100644 77index 472001dd1..a555e7ec3 100644
78--- a/sshd_config.5 78--- a/sshd_config.5
79+++ b/sshd_config.5 79+++ b/sshd_config.5
80@@ -925,11 +925,9 @@ If one argument is specified, it is used as the packet class unconditionally. 80@@ -925,11 +925,9 @@ If one argument is specified, it is used as the packet class unconditionally.
diff --git a/debian/patches/scp-quoting.patch b/debian/patches/scp-quoting.patch
index 0166c914a..604e831b3 100644
--- a/debian/patches/scp-quoting.patch
+++ b/debian/patches/scp-quoting.patch
@@ -1,4 +1,4 @@
1From 2520672d1ccfd88744c93bac102f461f9b1e0cf3 Mon Sep 17 00:00:00 2001 1From 94f06f8888f2e11267120eeebdb931d95bbfb7fd Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Nicolas=20Valc=C3=A1rcel?= <nvalcarcel@ubuntu.com> 2From: =?UTF-8?q?Nicolas=20Valc=C3=A1rcel?= <nvalcarcel@ubuntu.com>
3Date: Sun, 9 Feb 2014 16:09:59 +0000 3Date: Sun, 9 Feb 2014 16:09:59 +0000
4Subject: Adjust scp quoting in verbose mode 4Subject: Adjust scp quoting in verbose mode
@@ -17,7 +17,7 @@ Patch-Name: scp-quoting.patch
17 1 file changed, 10 insertions(+), 2 deletions(-) 17 1 file changed, 10 insertions(+), 2 deletions(-)
18 18
19diff --git a/scp.c b/scp.c 19diff --git a/scp.c b/scp.c
20index b4492a062..66b4af8e8 100644 20index 6ae17061d..2d1b8e9b9 100644
21--- a/scp.c 21--- a/scp.c
22+++ b/scp.c 22+++ b/scp.c
23@@ -201,8 +201,16 @@ do_local_cmd(arglist *a) 23@@ -201,8 +201,16 @@ do_local_cmd(arglist *a)
diff --git a/debian/patches/selinux-role.patch b/debian/patches/selinux-role.patch
index b0088c104..3161999a9 100644
--- a/debian/patches/selinux-role.patch
+++ b/debian/patches/selinux-role.patch
@@ -1,4 +1,4 @@
1From 8641a3f57e67e087b4500beb9916e06c4d0ba94c Mon Sep 17 00:00:00 2001 1From c574865182e2c5dfa183b577f49ac602d16df5c0 Mon Sep 17 00:00:00 2001
2From: Manoj Srivastava <srivasta@debian.org> 2From: Manoj Srivastava <srivasta@debian.org>
3Date: Sun, 9 Feb 2014 16:09:49 +0000 3Date: Sun, 9 Feb 2014 16:09:49 +0000
4Subject: Handle SELinux authorisation roles 4Subject: Handle SELinux authorisation roles
@@ -9,7 +9,7 @@ SELinux maintainer, so we'll keep it until we have something better.
9 9
10Bug: https://bugzilla.mindrot.org/show_bug.cgi?id=1641 10Bug: https://bugzilla.mindrot.org/show_bug.cgi?id=1641
11Bug-Debian: http://bugs.debian.org/394795 11Bug-Debian: http://bugs.debian.org/394795
12Last-Update: 2020-02-21 12Last-Update: 2020-10-18
13 13
14Patch-Name: selinux-role.patch 14Patch-Name: selinux-role.patch
15--- 15---
@@ -43,7 +43,7 @@ index becc672b5..5da9fe75f 100644
43 /* Method lists for multiple authentication */ 43 /* Method lists for multiple authentication */
44 char **auth_methods; /* modified from server config */ 44 char **auth_methods; /* modified from server config */
45diff --git a/auth2.c b/auth2.c 45diff --git a/auth2.c b/auth2.c
46index a4a5e0069..05d6c2447 100644 46index 9fa1404b3..d8363bdba 100644
47--- a/auth2.c 47--- a/auth2.c
48+++ b/auth2.c 48+++ b/auth2.c
49@@ -265,7 +265,7 @@ input_userauth_request(int type, u_int32_t seq, struct ssh *ssh) 49@@ -265,7 +265,7 @@ input_userauth_request(int type, u_int32_t seq, struct ssh *ssh)
@@ -81,7 +81,7 @@ index a4a5e0069..05d6c2447 100644
81 if (auth2_setup_methods_lists(authctxt) != 0) 81 if (auth2_setup_methods_lists(authctxt) != 0)
82 ssh_packet_disconnect(ssh, 82 ssh_packet_disconnect(ssh,
83diff --git a/monitor.c b/monitor.c 83diff --git a/monitor.c b/monitor.c
84index 5347e900d..8002aca86 100644 84index 11868952b..98362948f 100644
85--- a/monitor.c 85--- a/monitor.c
86+++ b/monitor.c 86+++ b/monitor.c
87@@ -118,6 +118,7 @@ int mm_answer_sign(struct ssh *, int, struct sshbuf *); 87@@ -118,6 +118,7 @@ int mm_answer_sign(struct ssh *, int, struct sshbuf *);
@@ -154,7 +154,7 @@ index 5347e900d..8002aca86 100644
154 return (0); 154 return (0);
155 } 155 }
156 156
157@@ -1553,7 +1582,7 @@ mm_answer_pty(struct ssh *ssh, int sock, struct sshbuf *m) 157@@ -1566,7 +1595,7 @@ mm_answer_pty(struct ssh *ssh, int sock, struct sshbuf *m)
158 res = pty_allocate(&s->ptyfd, &s->ttyfd, s->tty, sizeof(s->tty)); 158 res = pty_allocate(&s->ptyfd, &s->ttyfd, s->tty, sizeof(s->tty));
159 if (res == 0) 159 if (res == 0)
160 goto error; 160 goto error;
@@ -177,7 +177,7 @@ index 2b1a2d590..4d87284aa 100644
177 177
178 struct ssh; 178 struct ssh;
179diff --git a/monitor_wrap.c b/monitor_wrap.c 179diff --git a/monitor_wrap.c b/monitor_wrap.c
180index 6edb509a3..b49c268d3 100644 180index 0e78cd006..d41d3949d 100644
181--- a/monitor_wrap.c 181--- a/monitor_wrap.c
182+++ b/monitor_wrap.c 182+++ b/monitor_wrap.c
183@@ -364,10 +364,10 @@ mm_auth2_read_banner(void) 183@@ -364,10 +364,10 @@ mm_auth2_read_banner(void)
@@ -231,13 +231,13 @@ index 6edb509a3..b49c268d3 100644
231 int 231 int
232 mm_auth_password(struct ssh *ssh, char *password) 232 mm_auth_password(struct ssh *ssh, char *password)
233diff --git a/monitor_wrap.h b/monitor_wrap.h 233diff --git a/monitor_wrap.h b/monitor_wrap.h
234index 485590c18..370b08e17 100644 234index 75aef1c74..c39e5dd8b 100644
235--- a/monitor_wrap.h 235--- a/monitor_wrap.h
236+++ b/monitor_wrap.h 236+++ b/monitor_wrap.h
237@@ -47,7 +47,8 @@ DH *mm_choose_dh(int, int, int); 237@@ -48,7 +48,8 @@ DH *mm_choose_dh(int, int, int);
238 #endif
239 int mm_sshkey_sign(struct ssh *, struct sshkey *, u_char **, size_t *, 238 int mm_sshkey_sign(struct ssh *, struct sshkey *, u_char **, size_t *,
240 const u_char *, size_t, const char *, const char *, u_int compat); 239 const u_char *, size_t, const char *, const char *,
240 const char *, u_int compat);
241-void mm_inform_authserv(char *, char *); 241-void mm_inform_authserv(char *, char *);
242+void mm_inform_authserv(char *, char *, char *); 242+void mm_inform_authserv(char *, char *, char *);
243+void mm_inform_authrole(char *); 243+void mm_inform_authrole(char *);
@@ -363,10 +363,10 @@ index ea4f9c584..60d72ffe7 100644
363 char *platform_krb5_get_principal_name(const char *); 363 char *platform_krb5_get_principal_name(const char *);
364 int platform_sys_dir_uid(uid_t); 364 int platform_sys_dir_uid(uid_t);
365diff --git a/session.c b/session.c 365diff --git a/session.c b/session.c
366index f9c2c866e..837a8bacf 100644 366index 857f17b3c..b1796a803 100644
367--- a/session.c 367--- a/session.c
368+++ b/session.c 368+++ b/session.c
369@@ -1360,7 +1360,7 @@ safely_chroot(const char *path, uid_t uid) 369@@ -1364,7 +1364,7 @@ safely_chroot(const char *path, uid_t uid)
370 370
371 /* Set login name, uid, gid, and groups. */ 371 /* Set login name, uid, gid, and groups. */
372 void 372 void
@@ -375,7 +375,7 @@ index f9c2c866e..837a8bacf 100644
375 { 375 {
376 char uidstr[32], *chroot_path, *tmp; 376 char uidstr[32], *chroot_path, *tmp;
377 377
378@@ -1388,7 +1388,7 @@ do_setusercontext(struct passwd *pw) 378@@ -1392,7 +1392,7 @@ do_setusercontext(struct passwd *pw)
379 endgrent(); 379 endgrent();
380 #endif 380 #endif
381 381
@@ -384,7 +384,7 @@ index f9c2c866e..837a8bacf 100644
384 384
385 if (!in_chroot && options.chroot_directory != NULL && 385 if (!in_chroot && options.chroot_directory != NULL &&
386 strcasecmp(options.chroot_directory, "none") != 0) { 386 strcasecmp(options.chroot_directory, "none") != 0) {
387@@ -1529,7 +1529,7 @@ do_child(struct ssh *ssh, Session *s, const char *command) 387@@ -1536,7 +1536,7 @@ do_child(struct ssh *ssh, Session *s, const char *command)
388 388
389 /* Force a password change */ 389 /* Force a password change */
390 if (s->authctxt->force_pwchange) { 390 if (s->authctxt->force_pwchange) {
@@ -393,7 +393,7 @@ index f9c2c866e..837a8bacf 100644
393 child_close_fds(ssh); 393 child_close_fds(ssh);
394 do_pwchange(s); 394 do_pwchange(s);
395 exit(1); 395 exit(1);
396@@ -1547,7 +1547,7 @@ do_child(struct ssh *ssh, Session *s, const char *command) 396@@ -1554,7 +1554,7 @@ do_child(struct ssh *ssh, Session *s, const char *command)
397 /* When PAM is enabled we rely on it to do the nologin check */ 397 /* When PAM is enabled we rely on it to do the nologin check */
398 if (!options.use_pam) 398 if (!options.use_pam)
399 do_nologin(pw); 399 do_nologin(pw);
@@ -402,7 +402,7 @@ index f9c2c866e..837a8bacf 100644
402 /* 402 /*
403 * PAM session modules in do_setusercontext may have 403 * PAM session modules in do_setusercontext may have
404 * generated messages, so if this in an interactive 404 * generated messages, so if this in an interactive
405@@ -1946,7 +1946,7 @@ session_pty_req(struct ssh *ssh, Session *s) 405@@ -1953,7 +1953,7 @@ session_pty_req(struct ssh *ssh, Session *s)
406 sshpkt_fatal(ssh, r, "%s: parse packet", __func__); 406 sshpkt_fatal(ssh, r, "%s: parse packet", __func__);
407 407
408 if (!use_privsep) 408 if (!use_privsep)
@@ -425,7 +425,7 @@ index ce59dabd9..675c91146 100644
425 const char *session_get_remote_name_or_ip(struct ssh *, u_int, int); 425 const char *session_get_remote_name_or_ip(struct ssh *, u_int, int);
426 426
427diff --git a/sshd.c b/sshd.c 427diff --git a/sshd.c b/sshd.c
428index e96d90809..e8b332ca4 100644 428index a50ec3584..38d281ab4 100644
429--- a/sshd.c 429--- a/sshd.c
430+++ b/sshd.c 430+++ b/sshd.c
431@@ -594,7 +594,7 @@ privsep_postauth(struct ssh *ssh, Authctxt *authctxt) 431@@ -594,7 +594,7 @@ privsep_postauth(struct ssh *ssh, Authctxt *authctxt)
diff --git a/debian/patches/series b/debian/patches/series
index 9abd84350..8c1046a74 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -23,4 +23,3 @@ debian-config.patch
23restore-authorized_keys2.patch 23restore-authorized_keys2.patch
24conch-old-privkey-format.patch 24conch-old-privkey-format.patch
25revert-ipqos-defaults.patch 25revert-ipqos-defaults.patch
26avoid-extra-ports.patch
diff --git a/debian/patches/shell-path.patch b/debian/patches/shell-path.patch
index 4752e2a71..503b08dda 100644
--- a/debian/patches/shell-path.patch
+++ b/debian/patches/shell-path.patch
@@ -1,4 +1,4 @@
1From b78e6371a98460f5d12683406674e117d64b35f2 Mon Sep 17 00:00:00 2001 1From a7d2f23b7b86f97749856482233cdc9dd970d1d3 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:10:00 +0000 3Date: Sun, 9 Feb 2014 16:10:00 +0000
4Subject: Look for $SHELL on the path for ProxyCommand/LocalCommand 4Subject: Look for $SHELL on the path for ProxyCommand/LocalCommand
@@ -16,10 +16,10 @@ Patch-Name: shell-path.patch
16 1 file changed, 2 insertions(+), 2 deletions(-) 16 1 file changed, 2 insertions(+), 2 deletions(-)
17 17
18diff --git a/sshconnect.c b/sshconnect.c 18diff --git a/sshconnect.c b/sshconnect.c
19index af08be415..bfbf80e92 100644 19index 9ec0618a9..5f8c81b84 100644
20--- a/sshconnect.c 20--- a/sshconnect.c
21+++ b/sshconnect.c 21+++ b/sshconnect.c
22@@ -260,7 +260,7 @@ ssh_proxy_connect(struct ssh *ssh, const char *host, const char *host_arg, 22@@ -263,7 +263,7 @@ ssh_proxy_connect(struct ssh *ssh, const char *host, const char *host_arg,
23 /* Execute the proxy command. Note that we gave up any 23 /* Execute the proxy command. Note that we gave up any
24 extra privileges above. */ 24 extra privileges above. */
25 ssh_signal(SIGPIPE, SIG_DFL); 25 ssh_signal(SIGPIPE, SIG_DFL);
@@ -28,7 +28,7 @@ index af08be415..bfbf80e92 100644
28 perror(argv[0]); 28 perror(argv[0]);
29 exit(1); 29 exit(1);
30 } 30 }
31@@ -1389,7 +1389,7 @@ ssh_local_cmd(const char *args) 31@@ -1392,7 +1392,7 @@ ssh_local_cmd(const char *args)
32 if (pid == 0) { 32 if (pid == 0) {
33 ssh_signal(SIGPIPE, SIG_DFL); 33 ssh_signal(SIGPIPE, SIG_DFL);
34 debug3("Executing %s -c \"%s\"", shell, args); 34 debug3("Executing %s -c \"%s\"", shell, args);
diff --git a/debian/patches/ssh-agent-setgid.patch b/debian/patches/ssh-agent-setgid.patch
index ed23334d9..5d7a6c0fb 100644
--- a/debian/patches/ssh-agent-setgid.patch
+++ b/debian/patches/ssh-agent-setgid.patch
@@ -1,4 +1,4 @@
1From 303cbd5533df863d518bc61d837ce56a93166b11 Mon Sep 17 00:00:00 2001 1From 7a305ed4a0cba43d0d1bc6ebf5737521a0854a9d Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:10:13 +0000 3Date: Sun, 9 Feb 2014 16:10:13 +0000
4Subject: Document consequences of ssh-agent being setgid in ssh-agent(1) 4Subject: Document consequences of ssh-agent being setgid in ssh-agent(1)
@@ -13,10 +13,10 @@ Patch-Name: ssh-agent-setgid.patch
13 1 file changed, 15 insertions(+) 13 1 file changed, 15 insertions(+)
14 14
15diff --git a/ssh-agent.1 b/ssh-agent.1 15diff --git a/ssh-agent.1 b/ssh-agent.1
16index fff0db6bc..99e4f6d2e 100644 16index 2cf46160b..272da79b3 100644
17--- a/ssh-agent.1 17--- a/ssh-agent.1
18+++ b/ssh-agent.1 18+++ b/ssh-agent.1
19@@ -201,6 +201,21 @@ socket and stores its pathname in this variable. 19@@ -206,6 +206,21 @@ socket and stores its pathname in this variable.
20 It is accessible only to the current user, 20 It is accessible only to the current user,
21 but is easily abused by root or another instance of the same user. 21 but is easily abused by root or another instance of the same user.
22 .El 22 .El
diff --git a/debian/patches/ssh-argv0.patch b/debian/patches/ssh-argv0.patch
index 52e5bf70b..12f8c1b90 100644
--- a/debian/patches/ssh-argv0.patch
+++ b/debian/patches/ssh-argv0.patch
@@ -1,4 +1,4 @@
1From 81723f749647928d918de21057d9dbfbebaa8e53 Mon Sep 17 00:00:00 2001 1From 0e71b467fd84b0972c6aa2762d93af1c3defc0dc Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:10:10 +0000 3Date: Sun, 9 Feb 2014 16:10:10 +0000
4Subject: ssh(1): Refer to ssh-argv0(1) 4Subject: ssh(1): Refer to ssh-argv0(1)
@@ -18,10 +18,10 @@ Patch-Name: ssh-argv0.patch
18 1 file changed, 1 insertion(+) 18 1 file changed, 1 insertion(+)
19 19
20diff --git a/ssh.1 b/ssh.1 20diff --git a/ssh.1 b/ssh.1
21index 566fdba6b..5a31b5dde 100644 21index 1880c032d..76ddd89b5 100644
22--- a/ssh.1 22--- a/ssh.1
23+++ b/ssh.1 23+++ b/ssh.1
24@@ -1613,6 +1613,7 @@ if an error occurred. 24@@ -1632,6 +1632,7 @@ if an error occurred.
25 .Xr sftp 1 , 25 .Xr sftp 1 ,
26 .Xr ssh-add 1 , 26 .Xr ssh-add 1 ,
27 .Xr ssh-agent 1 , 27 .Xr ssh-agent 1 ,
diff --git a/debian/patches/ssh-vulnkey-compat.patch b/debian/patches/ssh-vulnkey-compat.patch
index cc2656bda..f4bedfd7b 100644
--- a/debian/patches/ssh-vulnkey-compat.patch
+++ b/debian/patches/ssh-vulnkey-compat.patch
@@ -1,4 +1,4 @@
1From 6ed578a01fd61f9c930ef46cfefc467203ddd6c0 Mon Sep 17 00:00:00 2001 1From 61b4d4c07d19cd0816ab5d48da81a75f7adbdf24 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@ubuntu.com> 2From: Colin Watson <cjwatson@ubuntu.com>
3Date: Sun, 9 Feb 2014 16:09:50 +0000 3Date: Sun, 9 Feb 2014 16:09:50 +0000
4Subject: Accept obsolete ssh-vulnkey configuration options 4Subject: Accept obsolete ssh-vulnkey configuration options
@@ -17,7 +17,7 @@ Patch-Name: ssh-vulnkey-compat.patch
17 2 files changed, 2 insertions(+) 17 2 files changed, 2 insertions(+)
18 18
19diff --git a/readconf.c b/readconf.c 19diff --git a/readconf.c b/readconf.c
20index fb585e248..2ccc48572 100644 20index 57dae55d1..b069333fa 100644
21--- a/readconf.c 21--- a/readconf.c
22+++ b/readconf.c 22+++ b/readconf.c
23@@ -191,6 +191,7 @@ static struct { 23@@ -191,6 +191,7 @@ static struct {
@@ -29,10 +29,10 @@ index fb585e248..2ccc48572 100644
29 { "useroaming", oDeprecated }, 29 { "useroaming", oDeprecated },
30 { "usersh", oDeprecated }, 30 { "usersh", oDeprecated },
31diff --git a/servconf.c b/servconf.c 31diff --git a/servconf.c b/servconf.c
32index f38ba9e44..ff5b9436c 100644 32index ded8f4a87..21abe41ac 100644
33--- a/servconf.c 33--- a/servconf.c
34+++ b/servconf.c 34+++ b/servconf.c
35@@ -656,6 +656,7 @@ static struct { 35@@ -649,6 +649,7 @@ static struct {
36 { "x11uselocalhost", sX11UseLocalhost, SSHCFG_ALL }, 36 { "x11uselocalhost", sX11UseLocalhost, SSHCFG_ALL },
37 { "xauthlocation", sXAuthLocation, SSHCFG_GLOBAL }, 37 { "xauthlocation", sXAuthLocation, SSHCFG_GLOBAL },
38 { "strictmodes", sStrictModes, SSHCFG_GLOBAL }, 38 { "strictmodes", sStrictModes, SSHCFG_GLOBAL },
diff --git a/debian/patches/syslog-level-silent.patch b/debian/patches/syslog-level-silent.patch
index 273f8069f..d6215dea6 100644
--- a/debian/patches/syslog-level-silent.patch
+++ b/debian/patches/syslog-level-silent.patch
@@ -1,4 +1,4 @@
1From f2c3eb379d31f24de20dc9a2e0089ed84f52055b Mon Sep 17 00:00:00 2001 1From 33a5f7aadea15899586710c615408045eaaecebd Mon Sep 17 00:00:00 2001
2From: Natalie Amery <nmamery@chiark.greenend.org.uk> 2From: Natalie Amery <nmamery@chiark.greenend.org.uk>
3Date: Sun, 9 Feb 2014 16:09:54 +0000 3Date: Sun, 9 Feb 2014 16:09:54 +0000
4Subject: "LogLevel SILENT" compatibility 4Subject: "LogLevel SILENT" compatibility
@@ -21,7 +21,7 @@ Patch-Name: syslog-level-silent.patch
21 2 files changed, 2 insertions(+), 1 deletion(-) 21 2 files changed, 2 insertions(+), 1 deletion(-)
22 22
23diff --git a/log.c b/log.c 23diff --git a/log.c b/log.c
24index d9c2d136c..1749af6d1 100644 24index 6b1a7a314..5ebae1480 100644
25--- a/log.c 25--- a/log.c
26+++ b/log.c 26+++ b/log.c
27@@ -93,6 +93,7 @@ static struct { 27@@ -93,6 +93,7 @@ static struct {
@@ -33,10 +33,10 @@ index d9c2d136c..1749af6d1 100644
33 { "FATAL", SYSLOG_LEVEL_FATAL }, 33 { "FATAL", SYSLOG_LEVEL_FATAL },
34 { "ERROR", SYSLOG_LEVEL_ERROR }, 34 { "ERROR", SYSLOG_LEVEL_ERROR },
35diff --git a/ssh.c b/ssh.c 35diff --git a/ssh.c b/ssh.c
36index 4a81ef810..7879d4f4d 100644 36index bb98a7e2d..aa15b8a1f 100644
37--- a/ssh.c 37--- a/ssh.c
38+++ b/ssh.c 38+++ b/ssh.c
39@@ -1339,7 +1339,7 @@ main(int ac, char **av) 39@@ -1373,7 +1373,7 @@ main(int ac, char **av)
40 /* Do not allocate a tty if stdin is not a tty. */ 40 /* Do not allocate a tty if stdin is not a tty. */
41 if ((!isatty(fileno(stdin)) || stdin_null_flag) && 41 if ((!isatty(fileno(stdin)) || stdin_null_flag) &&
42 options.request_tty != REQUEST_TTY_FORCE) { 42 options.request_tty != REQUEST_TTY_FORCE) {
diff --git a/debian/patches/systemd-readiness.patch b/debian/patches/systemd-readiness.patch
index a85ed6732..37e98c1dc 100644
--- a/debian/patches/systemd-readiness.patch
+++ b/debian/patches/systemd-readiness.patch
@@ -1,4 +1,4 @@
1From fe8c9983321154a61f4f06be602f925f1fd24ee7 Mon Sep 17 00:00:00 2001 1From e8453621b2a26f8d6afec405ff60201749b01e5e Mon Sep 17 00:00:00 2001
2From: Michael Biebl <biebl@debian.org> 2From: Michael Biebl <biebl@debian.org>
3Date: Mon, 21 Dec 2015 16:08:47 +0000 3Date: Mon, 21 Dec 2015 16:08:47 +0000
4Subject: Add systemd readiness notification support 4Subject: Add systemd readiness notification support
@@ -14,10 +14,10 @@ Patch-Name: systemd-readiness.patch
14 2 files changed, 33 insertions(+) 14 2 files changed, 33 insertions(+)
15 15
16diff --git a/configure.ac b/configure.ac 16diff --git a/configure.ac b/configure.ac
17index 812b7218f..7e0584d2c 100644 17index bb435ec1f..5944299fa 100644
18--- a/configure.ac 18--- a/configure.ac
19+++ b/configure.ac 19+++ b/configure.ac
20@@ -4730,6 +4730,29 @@ AC_ARG_WITH([kerberos5], 20@@ -4785,6 +4785,29 @@ AC_ARG_WITH([kerberos5],
21 AC_SUBST([GSSLIBS]) 21 AC_SUBST([GSSLIBS])
22 AC_SUBST([K5LIBS]) 22 AC_SUBST([K5LIBS])
23 23
@@ -47,7 +47,7 @@ index 812b7218f..7e0584d2c 100644
47 # Looking for programs, paths and files 47 # Looking for programs, paths and files
48 48
49 PRIVSEP_PATH=/var/empty 49 PRIVSEP_PATH=/var/empty
50@@ -5542,6 +5565,7 @@ echo " libldns support: $LDNS_MSG" 50@@ -5599,6 +5622,7 @@ echo " libldns support: $LDNS_MSG"
51 echo " Solaris process contract support: $SPC_MSG" 51 echo " Solaris process contract support: $SPC_MSG"
52 echo " Solaris project support: $SP_MSG" 52 echo " Solaris project support: $SP_MSG"
53 echo " Solaris privilege support: $SPP_MSG" 53 echo " Solaris privilege support: $SPP_MSG"
@@ -56,7 +56,7 @@ index 812b7218f..7e0584d2c 100644
56 echo " Translate v4 in v6 hack: $IPV4_IN6_HACK_MSG" 56 echo " Translate v4 in v6 hack: $IPV4_IN6_HACK_MSG"
57 echo " BSD Auth support: $BSD_AUTH_MSG" 57 echo " BSD Auth support: $BSD_AUTH_MSG"
58diff --git a/sshd.c b/sshd.c 58diff --git a/sshd.c b/sshd.c
59index baee13506..d2d1877d4 100644 59index 50f2726bf..fb9b7b7fb 100644
60--- a/sshd.c 60--- a/sshd.c
61+++ b/sshd.c 61+++ b/sshd.c
62@@ -85,6 +85,10 @@ 62@@ -85,6 +85,10 @@
@@ -70,7 +70,7 @@ index baee13506..d2d1877d4 100644
70 #include "xmalloc.h" 70 #include "xmalloc.h"
71 #include "ssh.h" 71 #include "ssh.h"
72 #include "ssh2.h" 72 #include "ssh2.h"
73@@ -2026,6 +2030,11 @@ main(int ac, char **av) 73@@ -2076,6 +2080,11 @@ main(int ac, char **av)
74 } 74 }
75 } 75 }
76 76
diff --git a/debian/patches/user-group-modes.patch b/debian/patches/user-group-modes.patch
index 19c1809d9..8f5a8a383 100644
--- a/debian/patches/user-group-modes.patch
+++ b/debian/patches/user-group-modes.patch
@@ -1,4 +1,4 @@
1From cb72edd9757c469f3b5dc9cde374715ae8b54509 Mon Sep 17 00:00:00 2001 1From d08cd2b0cfbedf3ccd2ec3adaef850b8d9a87e85 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:09:58 +0000 3Date: Sun, 9 Feb 2014 16:09:58 +0000
4Subject: Allow harmless group-writability 4Subject: Allow harmless group-writability
@@ -51,7 +51,7 @@ index e81321b49..3bcc73766 100644
51 pw->pw_name, buf); 51 pw->pw_name, buf);
52 auth_debug_add("Bad file modes for %.200s", buf); 52 auth_debug_add("Bad file modes for %.200s", buf);
53diff --git a/auth.c b/auth.c 53diff --git a/auth.c b/auth.c
54index 687c57b42..aed3c13ac 100644 54index 3d31ec860..4152d9c44 100644
55--- a/auth.c 55--- a/auth.c
56+++ b/auth.c 56+++ b/auth.c
57@@ -474,8 +474,7 @@ check_key_in_hostfiles(struct passwd *pw, struct sshkey *key, const char *host, 57@@ -474,8 +474,7 @@ check_key_in_hostfiles(struct passwd *pw, struct sshkey *key, const char *host,
@@ -65,10 +65,10 @@ index 687c57b42..aed3c13ac 100644
65 "bad owner or modes for %.200s", 65 "bad owner or modes for %.200s",
66 pw->pw_name, user_hostfile); 66 pw->pw_name, user_hostfile);
67diff --git a/misc.c b/misc.c 67diff --git a/misc.c b/misc.c
68index 554ceb0b1..75fe4dfea 100644 68index 4623b5755..c75a795c2 100644
69--- a/misc.c 69--- a/misc.c
70+++ b/misc.c 70+++ b/misc.c
71@@ -61,8 +61,9 @@ 71@@ -55,8 +55,9 @@
72 #include <netdb.h> 72 #include <netdb.h>
73 #ifdef HAVE_PATHS_H 73 #ifdef HAVE_PATHS_H
74 # include <paths.h> 74 # include <paths.h>
@@ -79,8 +79,8 @@ index 554ceb0b1..75fe4dfea 100644
79 #ifdef SSH_TUN_OPENBSD 79 #ifdef SSH_TUN_OPENBSD
80 #include <net/if.h> 80 #include <net/if.h>
81 #endif 81 #endif
82@@ -1124,6 +1125,55 @@ percent_expand(const char *string, ...) 82@@ -1271,6 +1272,55 @@ percent_dollar_expand(const char *string, ...)
83 #undef EXPAND_MAX_KEYS 83 return ret;
84 } 84 }
85 85
86+int 86+int
@@ -135,7 +135,7 @@ index 554ceb0b1..75fe4dfea 100644
135 int 135 int
136 tun_open(int tun, int mode, char **ifname) 136 tun_open(int tun, int mode, char **ifname)
137 { 137 {
138@@ -1909,8 +1959,7 @@ safe_path(const char *name, struct stat *stp, const char *pw_dir, 138@@ -2056,8 +2106,7 @@ safe_path(const char *name, struct stat *stp, const char *pw_dir,
139 snprintf(err, errlen, "%s is not a regular file", buf); 139 snprintf(err, errlen, "%s is not a regular file", buf);
140 return -1; 140 return -1;
141 } 141 }
@@ -145,7 +145,7 @@ index 554ceb0b1..75fe4dfea 100644
145 snprintf(err, errlen, "bad ownership or modes for file %s", 145 snprintf(err, errlen, "bad ownership or modes for file %s",
146 buf); 146 buf);
147 return -1; 147 return -1;
148@@ -1925,8 +1974,7 @@ safe_path(const char *name, struct stat *stp, const char *pw_dir, 148@@ -2072,8 +2121,7 @@ safe_path(const char *name, struct stat *stp, const char *pw_dir,
149 strlcpy(buf, cp, sizeof(buf)); 149 strlcpy(buf, cp, sizeof(buf));
150 150
151 if (stat(buf, &st) == -1 || 151 if (stat(buf, &st) == -1 ||
@@ -156,10 +156,10 @@ index 554ceb0b1..75fe4dfea 100644
156 "bad ownership or modes for directory %s", buf); 156 "bad ownership or modes for directory %s", buf);
157 return -1; 157 return -1;
158diff --git a/misc.h b/misc.h 158diff --git a/misc.h b/misc.h
159index 4a05db2da..5db594b91 100644 159index ab94a79c0..b34c798e7 100644
160--- a/misc.h 160--- a/misc.h
161+++ b/misc.h 161+++ b/misc.h
162@@ -188,6 +188,8 @@ struct notifier_ctx *notify_start(int, const char *, ...) 162@@ -192,6 +192,8 @@ struct notifier_ctx *notify_start(int, const char *, ...)
163 __attribute__((format(printf, 2, 3))); 163 __attribute__((format(printf, 2, 3)));
164 void notify_complete(struct notifier_ctx *); 164 void notify_complete(struct notifier_ctx *);
165 165
@@ -169,10 +169,10 @@ index 4a05db2da..5db594b91 100644
169 #define MAXIMUM(a, b) (((a) > (b)) ? (a) : (b)) 169 #define MAXIMUM(a, b) (((a) > (b)) ? (a) : (b))
170 #define ROUNDUP(x, y) ((((x)+((y)-1))/(y))*(y)) 170 #define ROUNDUP(x, y) ((((x)+((y)-1))/(y))*(y))
171diff --git a/readconf.c b/readconf.c 171diff --git a/readconf.c b/readconf.c
172index 431243193..5bf0afbb4 100644 172index 3d0a812b3..f4f273c96 100644
173--- a/readconf.c 173--- a/readconf.c
174+++ b/readconf.c 174+++ b/readconf.c
175@@ -1926,8 +1926,7 @@ read_config_file_depth(const char *filename, struct passwd *pw, 175@@ -1967,8 +1967,7 @@ read_config_file_depth(const char *filename, struct passwd *pw,
176 176
177 if (fstat(fileno(f), &sb) == -1) 177 if (fstat(fileno(f), &sb) == -1)
178 fatal("fstat %s: %s", filename, strerror(errno)); 178 fatal("fstat %s: %s", filename, strerror(errno));
@@ -183,10 +183,10 @@ index 431243193..5bf0afbb4 100644
183 } 183 }
184 184
185diff --git a/ssh.1 b/ssh.1 185diff --git a/ssh.1 b/ssh.1
186index 7a3ba31ab..a80be8efe 100644 186index be8e964f0..5d613076c 100644
187--- a/ssh.1 187--- a/ssh.1
188+++ b/ssh.1 188+++ b/ssh.1
189@@ -1509,6 +1509,8 @@ The file format and configuration options are described in 189@@ -1528,6 +1528,8 @@ The file format and configuration options are described in
190 .Xr ssh_config 5 . 190 .Xr ssh_config 5 .
191 Because of the potential for abuse, this file must have strict permissions: 191 Because of the potential for abuse, this file must have strict permissions:
192 read/write for the user, and not writable by others. 192 read/write for the user, and not writable by others.
@@ -196,10 +196,10 @@ index 7a3ba31ab..a80be8efe 100644
196 .It Pa ~/.ssh/environment 196 .It Pa ~/.ssh/environment
197 Contains additional definitions for environment variables; see 197 Contains additional definitions for environment variables; see
198diff --git a/ssh_config.5 b/ssh_config.5 198diff --git a/ssh_config.5 b/ssh_config.5
199index 85ab7447f..d814147d4 100644 199index 3ceb800ba..190e1d927 100644
200--- a/ssh_config.5 200--- a/ssh_config.5
201+++ b/ssh_config.5 201+++ b/ssh_config.5
202@@ -1957,6 +1957,8 @@ The format of this file is described above. 202@@ -2010,6 +2010,8 @@ The format of this file is described above.
203 This file is used by the SSH client. 203 This file is used by the SSH client.
204 Because of the potential for abuse, this file must have strict permissions: 204 Because of the potential for abuse, this file must have strict permissions:
205 read/write for the user, and not writable by others. 205 read/write for the user, and not writable by others.
diff --git a/defines.h b/defines.h
index b8ea88b2d..79dcb507f 100644
--- a/defines.h
+++ b/defines.h
@@ -829,10 +829,6 @@ struct winsize {
829# define getgroups(a,b) ((a)==0 && (b)==NULL ? NGROUPS_MAX : getgroups((a),(b))) 829# define getgroups(a,b) ((a)==0 && (b)==NULL ? NGROUPS_MAX : getgroups((a),(b)))
830#endif 830#endif
831 831
832#if defined(HAVE_MMAP) && defined(BROKEN_MMAP)
833# undef HAVE_MMAP
834#endif
835
836#ifndef IOV_MAX 832#ifndef IOV_MAX
837# if defined(_XOPEN_IOV_MAX) 833# if defined(_XOPEN_IOV_MAX)
838# define IOV_MAX _XOPEN_IOV_MAX 834# define IOV_MAX _XOPEN_IOV_MAX
diff --git a/hostfile.c b/hostfile.c
index a4a355972..936d8c9be 100644
--- a/hostfile.c
+++ b/hostfile.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: hostfile.c,v 1.79 2020/03/06 18:25:12 markus Exp $ */ 1/* $OpenBSD: hostfile.c,v 1.82 2020/06/26 05:42:16 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -57,6 +57,7 @@
57#include "hostfile.h" 57#include "hostfile.h"
58#include "log.h" 58#include "log.h"
59#include "misc.h" 59#include "misc.h"
60#include "pathnames.h"
60#include "ssherr.h" 61#include "ssherr.h"
61#include "digest.h" 62#include "digest.h"
62#include "hmac.h" 63#include "hmac.h"
@@ -406,6 +407,18 @@ lookup_key_in_hostkeys_by_type(struct hostkeys *hostkeys, int keytype,
406 found) == HOST_FOUND); 407 found) == HOST_FOUND);
407} 408}
408 409
410int
411lookup_marker_in_hostkeys(struct hostkeys *hostkeys, int want_marker)
412{
413 u_int i;
414
415 for (i = 0; i < hostkeys->num_entries; i++) {
416 if (hostkeys->entries[i].marker == (HostkeyMarker)want_marker)
417 return 1;
418 }
419 return 0;
420}
421
409static int 422static int
410write_host_entry(FILE *f, const char *host, const char *ip, 423write_host_entry(FILE *f, const char *host, const char *ip,
411 const struct sshkey *key, int store_hash) 424 const struct sshkey *key, int store_hash)
@@ -438,6 +451,44 @@ write_host_entry(FILE *f, const char *host, const char *ip,
438} 451}
439 452
440/* 453/*
454 * Create user ~/.ssh directory if it doesn't exist and we want to write to it.
455 * If notify is set, a message will be emitted if the directory is created.
456 */
457void
458hostfile_create_user_ssh_dir(const char *filename, int notify)
459{
460 char *dotsshdir = NULL, *p;
461 size_t len;
462 struct stat st;
463
464 if ((p = strrchr(filename, '/')) == NULL)
465 return;
466 len = p - filename;
467 dotsshdir = tilde_expand_filename("~/" _PATH_SSH_USER_DIR, getuid());
468 if (strlen(dotsshdir) > len || strncmp(filename, dotsshdir, len) != 0)
469 goto out; /* not ~/.ssh prefixed */
470 if (stat(dotsshdir, &st) == 0)
471 goto out; /* dir already exists */
472 else if (errno != ENOENT)
473 error("Could not stat %s: %s", dotsshdir, strerror(errno));
474 else {
475#ifdef WITH_SELINUX
476 ssh_selinux_setfscreatecon(dotsshdir);
477#endif
478 if (mkdir(dotsshdir, 0700) == -1)
479 error("Could not create directory '%.200s' (%s).",
480 dotsshdir, strerror(errno));
481 else if (notify)
482 logit("Created directory '%s'.", dotsshdir);
483#ifdef WITH_SELINUX
484 ssh_selinux_setfscreatecon(NULL);
485#endif
486 }
487 out:
488 free(dotsshdir);
489}
490
491/*
441 * Appends an entry to the host file. Returns false if the entry could not 492 * Appends an entry to the host file. Returns false if the entry could not
442 * be appended. 493 * be appended.
443 */ 494 */
@@ -450,6 +501,7 @@ add_host_to_hostfile(const char *filename, const char *host,
450 501
451 if (key == NULL) 502 if (key == NULL)
452 return 1; /* XXX ? */ 503 return 1; /* XXX ? */
504 hostfile_create_user_ssh_dir(filename, 0);
453 f = fopen(filename, "a"); 505 f = fopen(filename, "a");
454 if (!f) 506 if (!f)
455 return 0; 507 return 0;
diff --git a/hostfile.h b/hostfile.h
index bd2104373..de8b677e3 100644
--- a/hostfile.h
+++ b/hostfile.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: hostfile.h,v 1.24 2015/02/16 22:08:57 djm Exp $ */ 1/* $OpenBSD: hostfile.h,v 1.26 2020/06/26 05:02:03 dtucker Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -39,6 +39,7 @@ HostStatus check_key_in_hostkeys(struct hostkeys *, struct sshkey *,
39 const struct hostkey_entry **); 39 const struct hostkey_entry **);
40int lookup_key_in_hostkeys_by_type(struct hostkeys *, int, 40int lookup_key_in_hostkeys_by_type(struct hostkeys *, int,
41 const struct hostkey_entry **); 41 const struct hostkey_entry **);
42int lookup_marker_in_hostkeys(struct hostkeys *, int);
42 43
43int hostfile_read_key(char **, u_int *, struct sshkey *); 44int hostfile_read_key(char **, u_int *, struct sshkey *);
44int add_host_to_hostfile(const char *, const char *, 45int add_host_to_hostfile(const char *, const char *,
@@ -105,4 +106,6 @@ typedef int hostkeys_foreach_fn(struct hostkey_foreach_line *l, void *ctx);
105int hostkeys_foreach(const char *path, hostkeys_foreach_fn *callback, void *ctx, 106int hostkeys_foreach(const char *path, hostkeys_foreach_fn *callback, void *ctx,
106 const char *host, const char *ip, u_int options); 107 const char *host, const char *ip, u_int options);
107 108
109void hostfile_create_user_ssh_dir(const char *, int);
110
108#endif 111#endif
diff --git a/kex.c b/kex.c
index aa5acaac3..763c45536 100644
--- a/kex.c
+++ b/kex.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: kex.c,v 1.158 2020/03/13 04:01:56 djm Exp $ */ 1/* $OpenBSD: kex.c,v 1.159 2020/07/05 23:59:45 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
4 * 4 *
@@ -281,7 +281,7 @@ kex_assemble_names(char **listp, const char *def, const char *all)
281 list = tmp; 281 list = tmp;
282 } else if (*list == '-') { 282 } else if (*list == '-') {
283 /* Remove names from default list */ 283 /* Remove names from default list */
284 if ((*listp = match_filter_blacklist(def, list + 1)) == NULL) { 284 if ((*listp = match_filter_denylist(def, list + 1)) == NULL) {
285 r = SSH_ERR_ALLOC_FAIL; 285 r = SSH_ERR_ALLOC_FAIL;
286 goto fail; 286 goto fail;
287 } 287 }
@@ -318,7 +318,7 @@ kex_assemble_names(char **listp, const char *def, const char *all)
318 goto fail; 318 goto fail;
319 } 319 }
320 free(matching); 320 free(matching);
321 if ((matching = match_filter_whitelist(all, cp)) == NULL) { 321 if ((matching = match_filter_allowlist(all, cp)) == NULL) {
322 r = SSH_ERR_ALLOC_FAIL; 322 r = SSH_ERR_ALLOC_FAIL;
323 goto fail; 323 goto fail;
324 } 324 }
diff --git a/kexdh.c b/kexdh.c
index edaa46762..d024a8b9a 100644
--- a/kexdh.c
+++ b/kexdh.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: kexdh.c,v 1.32 2019/01/21 10:40:11 djm Exp $ */ 1/* $OpenBSD: kexdh.c,v 1.33 2020/05/08 05:13:14 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2019 Markus Friedl. All rights reserved. 3 * Copyright (c) 2019 Markus Friedl. All rights reserved.
4 * 4 *
@@ -42,6 +42,7 @@
42#include "digest.h" 42#include "digest.h"
43#include "ssherr.h" 43#include "ssherr.h"
44#include "dh.h" 44#include "dh.h"
45#include "log.h"
45 46
46int 47int
47kex_dh_keygen(struct kex *kex) 48kex_dh_keygen(struct kex *kex)
diff --git a/krl.c b/krl.c
index c431f7047..3a69b636a 100644
--- a/krl.c
+++ b/krl.c
@@ -14,7 +14,7 @@
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */ 15 */
16 16
17/* $OpenBSD: krl.c,v 1.50 2020/04/03 05:48:57 djm Exp $ */ 17/* $OpenBSD: krl.c,v 1.51 2020/08/27 01:06:18 djm Exp $ */
18 18
19#include "includes.h" 19#include "includes.h"
20 20
@@ -812,9 +812,10 @@ ssh_krl_to_blob(struct ssh_krl *krl, struct sshbuf *buf,
812 if ((r = sshbuf_put_u8(buf, KRL_SECTION_SIGNATURE)) != 0 || 812 if ((r = sshbuf_put_u8(buf, KRL_SECTION_SIGNATURE)) != 0 ||
813 (r = sshkey_puts(sign_keys[i], buf)) != 0) 813 (r = sshkey_puts(sign_keys[i], buf)) != 0)
814 goto out; 814 goto out;
815 815 /* XXX support sk-* keys */
816 if ((r = sshkey_sign(sign_keys[i], &sblob, &slen, 816 if ((r = sshkey_sign(sign_keys[i], &sblob, &slen,
817 sshbuf_ptr(buf), sshbuf_len(buf), NULL, NULL, 0)) != 0) 817 sshbuf_ptr(buf), sshbuf_len(buf), NULL, NULL,
818 NULL, 0)) != 0)
818 goto out; 819 goto out;
819 KRL_DBG(("%s: signature sig len %zu", __func__, slen)); 820 KRL_DBG(("%s: signature sig len %zu", __func__, slen));
820 if ((r = sshbuf_put_string(buf, sblob, slen)) != 0) 821 if ((r = sshbuf_put_string(buf, sblob, slen)) != 0)
diff --git a/log.c b/log.c
index 1749af6d1..5ebae1480 100644
--- a/log.c
+++ b/log.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: log.c,v 1.51 2018/07/27 12:03:17 markus Exp $ */ 1/* $OpenBSD: log.c,v 1.52 2020/07/03 06:46:41 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -371,6 +371,14 @@ log_redirect_stderr_to(const char *logfile)
371{ 371{
372 int fd; 372 int fd;
373 373
374 if (logfile == NULL) {
375 if (log_stderr_fd != STDERR_FILENO) {
376 close(log_stderr_fd);
377 log_stderr_fd = STDERR_FILENO;
378 }
379 return;
380 }
381
374 if ((fd = open(logfile, O_WRONLY|O_CREAT|O_APPEND, 0600)) == -1) { 382 if ((fd = open(logfile, O_WRONLY|O_CREAT|O_APPEND, 0600)) == -1) {
375 fprintf(stderr, "Couldn't open logfile %s: %s\n", logfile, 383 fprintf(stderr, "Couldn't open logfile %s: %s\n", logfile,
376 strerror(errno)); 384 strerror(errno));
diff --git a/loginrec.c b/loginrec.c
index e5289deb8..ea058fd6f 100644
--- a/loginrec.c
+++ b/loginrec.c
@@ -778,6 +778,9 @@ construct_utmpx(struct logininfo *li, struct utmpx *utx)
778 strncpy(utx->ut_host, li->hostname, 778 strncpy(utx->ut_host, li->hostname,
779 MIN_SIZEOF(utx->ut_host, li->hostname)); 779 MIN_SIZEOF(utx->ut_host, li->hostname));
780# endif 780# endif
781# ifdef HAVE_SS_IN_UTMPX
782 utx->ut_ss = li->hostaddr.sa_storage;
783# endif
781# ifdef HAVE_ADDR_IN_UTMPX 784# ifdef HAVE_ADDR_IN_UTMPX
782 /* this is just a 32-bit IP address */ 785 /* this is just a 32-bit IP address */
783 if (li->hostaddr.sa.sa_family == AF_INET) 786 if (li->hostaddr.sa.sa_family == AF_INET)
diff --git a/m4/openssh.m4 b/m4/openssh.m4
new file mode 100644
index 000000000..6a49f10fa
--- /dev/null
+++ b/m4/openssh.m4
@@ -0,0 +1,199 @@
1dnl OpenSSH-specific autoconf macros
2dnl
3
4dnl OSSH_CHECK_CFLAG_COMPILE(check_flag[, define_flag])
5dnl Check that $CC accepts a flag 'check_flag'. If it is supported append
6dnl 'define_flag' to $CFLAGS. If 'define_flag' is not specified, then append
7dnl 'check_flag'.
8AC_DEFUN([OSSH_CHECK_CFLAG_COMPILE], [{
9 AC_MSG_CHECKING([if $CC supports compile flag $1])
10 saved_CFLAGS="$CFLAGS"
11 CFLAGS="$CFLAGS $WERROR $1"
12 _define_flag="$2"
13 test "x$_define_flag" = "x" && _define_flag="$1"
14 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
15#include <stdlib.h>
16#include <stdio.h>
17int main(int argc, char **argv) {
18 (void)argv;
19 /* Some math to catch -ftrapv problems in the toolchain */
20 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
21 float l = i * 2.1;
22 double m = l / 0.5;
23 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
24 printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o);
25 /*
26 * Test fallthrough behaviour. clang 10's -Wimplicit-fallthrough does
27 * not understand comments and we don't use the "fallthrough" attribute
28 * that it's looking for.
29 */
30 switch(i){
31 case 0: j += i;
32 /* FALLTHROUGH */
33 default: j += k;
34 }
35 exit(0);
36}
37 ]])],
38 [
39if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
40then
41 AC_MSG_RESULT([no])
42 CFLAGS="$saved_CFLAGS"
43else
44 AC_MSG_RESULT([yes])
45 CFLAGS="$saved_CFLAGS $_define_flag"
46fi],
47 [ AC_MSG_RESULT([no])
48 CFLAGS="$saved_CFLAGS" ]
49 )
50}])
51
52dnl OSSH_CHECK_CFLAG_LINK(check_flag[, define_flag])
53dnl Check that $CC accepts a flag 'check_flag'. If it is supported append
54dnl 'define_flag' to $CFLAGS. If 'define_flag' is not specified, then append
55dnl 'check_flag'.
56AC_DEFUN([OSSH_CHECK_CFLAG_LINK], [{
57 AC_MSG_CHECKING([if $CC supports compile flag $1 and linking succeeds])
58 saved_CFLAGS="$CFLAGS"
59 CFLAGS="$CFLAGS $WERROR $1"
60 _define_flag="$2"
61 test "x$_define_flag" = "x" && _define_flag="$1"
62 AC_LINK_IFELSE([AC_LANG_SOURCE([[
63#include <stdlib.h>
64#include <stdio.h>
65int main(int argc, char **argv) {
66 (void)argv;
67 /* Some math to catch -ftrapv problems in the toolchain */
68 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
69 float l = i * 2.1;
70 double m = l / 0.5;
71 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
72 long long int p = n * o;
73 printf("%d %d %d %f %f %lld %lld %lld\n", i, j, k, l, m, n, o, p);
74 exit(0);
75}
76 ]])],
77 [
78if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
79then
80 AC_MSG_RESULT([no])
81 CFLAGS="$saved_CFLAGS"
82else
83 AC_MSG_RESULT([yes])
84 CFLAGS="$saved_CFLAGS $_define_flag"
85fi],
86 [ AC_MSG_RESULT([no])
87 CFLAGS="$saved_CFLAGS" ]
88 )
89}])
90
91dnl OSSH_CHECK_LDFLAG_LINK(check_flag[, define_flag])
92dnl Check that $LD accepts a flag 'check_flag'. If it is supported append
93dnl 'define_flag' to $LDFLAGS. If 'define_flag' is not specified, then append
94dnl 'check_flag'.
95AC_DEFUN([OSSH_CHECK_LDFLAG_LINK], [{
96 AC_MSG_CHECKING([if $LD supports link flag $1])
97 saved_LDFLAGS="$LDFLAGS"
98 LDFLAGS="$LDFLAGS $WERROR $1"
99 _define_flag="$2"
100 test "x$_define_flag" = "x" && _define_flag="$1"
101 AC_LINK_IFELSE([AC_LANG_SOURCE([[
102#include <stdlib.h>
103#include <stdio.h>
104int main(int argc, char **argv) {
105 (void)argv;
106 /* Some math to catch -ftrapv problems in the toolchain */
107 int i = 123 * argc, j = 456 + argc, k = 789 - argc;
108 float l = i * 2.1;
109 double m = l / 0.5;
110 long long int n = argc * 12345LL, o = 12345LL * (long long int)argc;
111 long long p = n * o;
112 printf("%d %d %d %f %f %lld %lld %lld\n", i, j, k, l, m, n, o, p);
113 exit(0);
114}
115 ]])],
116 [
117if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
118then
119 AC_MSG_RESULT([no])
120 LDFLAGS="$saved_LDFLAGS"
121else
122 AC_MSG_RESULT([yes])
123 LDFLAGS="$saved_LDFLAGS $_define_flag"
124fi ],
125 [ AC_MSG_RESULT([no])
126 LDFLAGS="$saved_LDFLAGS" ]
127 )
128}])
129
130dnl OSSH_CHECK_HEADER_FOR_FIELD(field, header, symbol)
131dnl Does AC_EGREP_HEADER on 'header' for the string 'field'
132dnl If found, set 'symbol' to be defined. Cache the result.
133dnl TODO: This is not foolproof, better to compile and read from there
134AC_DEFUN([OSSH_CHECK_HEADER_FOR_FIELD], [
135# look for field '$1' in header '$2'
136 dnl This strips characters illegal to m4 from the header filename
137 ossh_safe=`echo "$2" | sed 'y%./+-%__p_%'`
138 dnl
139 ossh_varname="ossh_cv_$ossh_safe""_has_"$1
140 AC_MSG_CHECKING(for $1 field in $2)
141 AC_CACHE_VAL($ossh_varname, [
142 AC_EGREP_HEADER($1, $2, [ dnl
143 eval "$ossh_varname=yes" dnl
144 ], [ dnl
145 eval "$ossh_varname=no" dnl
146 ]) dnl
147 ])
148 ossh_result=`eval 'echo $'"$ossh_varname"`
149 if test -n "`echo $ossh_varname`"; then
150 AC_MSG_RESULT($ossh_result)
151 if test "x$ossh_result" = "xyes"; then
152 AC_DEFINE($3, 1, [Define if you have $1 in $2])
153 fi
154 else
155 AC_MSG_RESULT(no)
156 fi
157])
158
159dnl Check for socklen_t: historically on BSD it is an int, and in
160dnl POSIX 1g it is a type of its own, but some platforms use different
161dnl types for the argument to getsockopt, getpeername, etc. So we
162dnl have to test to find something that will work.
163AC_DEFUN([TYPE_SOCKLEN_T],
164[
165 AC_CHECK_TYPE([socklen_t], ,[
166 AC_MSG_CHECKING([for socklen_t equivalent])
167 AC_CACHE_VAL([curl_cv_socklen_t_equiv],
168 [
169 # Systems have either "struct sockaddr *" or
170 # "void *" as the second argument to getpeername
171 curl_cv_socklen_t_equiv=
172 for arg2 in "struct sockaddr" void; do
173 for t in int size_t unsigned long "unsigned long"; do
174 AC_TRY_COMPILE([
175 #include <sys/types.h>
176 #include <sys/socket.h>
177
178 int getpeername (int, $arg2 *, $t *);
179 ],[
180 $t len;
181 getpeername(0,0,&len);
182 ],[
183 curl_cv_socklen_t_equiv="$t"
184 break
185 ])
186 done
187 done
188
189 if test "x$curl_cv_socklen_t_equiv" = x; then
190 AC_MSG_ERROR([Cannot find a type to use in place of socklen_t])
191 fi
192 ])
193 AC_MSG_RESULT($curl_cv_socklen_t_equiv)
194 AC_DEFINE_UNQUOTED(socklen_t, $curl_cv_socklen_t_equiv,
195 [type to use in place of socklen_t if not defined])],
196 [#include <sys/types.h>
197#include <sys/socket.h>])
198])
199
diff --git a/match.c b/match.c
index 3a8fa9d78..927565c18 100644
--- a/match.c
+++ b/match.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: match.c,v 1.41 2019/11/13 04:47:52 deraadt Exp $ */ 1/* $OpenBSD: match.c,v 1.42 2020/07/05 23:59:45 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -309,13 +309,13 @@ match_list(const char *client, const char *server, u_int *next)
309 309
310/* 310/*
311 * Filter proposal using pattern-list filter. 311 * Filter proposal using pattern-list filter.
312 * "blacklist" determines sense of filter: 312 * "denylist" determines sense of filter:
313 * non-zero indicates that items matching filter should be excluded. 313 * non-zero indicates that items matching filter should be excluded.
314 * zero indicates that only items matching filter should be included. 314 * zero indicates that only items matching filter should be included.
315 * returns NULL on allocation error, otherwise caller must free result. 315 * returns NULL on allocation error, otherwise caller must free result.
316 */ 316 */
317static char * 317static char *
318filter_list(const char *proposal, const char *filter, int blacklist) 318filter_list(const char *proposal, const char *filter, int denylist)
319{ 319{
320 size_t len = strlen(proposal) + 1; 320 size_t len = strlen(proposal) + 1;
321 char *fix_prop = malloc(len); 321 char *fix_prop = malloc(len);
@@ -333,7 +333,7 @@ filter_list(const char *proposal, const char *filter, int blacklist)
333 *fix_prop = '\0'; 333 *fix_prop = '\0';
334 while ((cp = strsep(&tmp, ",")) != NULL) { 334 while ((cp = strsep(&tmp, ",")) != NULL) {
335 r = match_pattern_list(cp, filter, 0); 335 r = match_pattern_list(cp, filter, 0);
336 if ((blacklist && r != 1) || (!blacklist && r == 1)) { 336 if ((denylist && r != 1) || (!denylist && r == 1)) {
337 if (*fix_prop != '\0') 337 if (*fix_prop != '\0')
338 strlcat(fix_prop, ",", len); 338 strlcat(fix_prop, ",", len);
339 strlcat(fix_prop, cp, len); 339 strlcat(fix_prop, cp, len);
@@ -348,7 +348,7 @@ filter_list(const char *proposal, const char *filter, int blacklist)
348 * the 'filter' pattern list. Caller must free returned string. 348 * the 'filter' pattern list. Caller must free returned string.
349 */ 349 */
350char * 350char *
351match_filter_blacklist(const char *proposal, const char *filter) 351match_filter_denylist(const char *proposal, const char *filter)
352{ 352{
353 return filter_list(proposal, filter, 1); 353 return filter_list(proposal, filter, 1);
354} 354}
@@ -358,7 +358,7 @@ match_filter_blacklist(const char *proposal, const char *filter)
358 * the 'filter' pattern list. Caller must free returned string. 358 * the 'filter' pattern list. Caller must free returned string.
359 */ 359 */
360char * 360char *
361match_filter_whitelist(const char *proposal, const char *filter) 361match_filter_allowlist(const char *proposal, const char *filter)
362{ 362{
363 return filter_list(proposal, filter, 0); 363 return filter_list(proposal, filter, 0);
364} 364}
diff --git a/match.h b/match.h
index 3a8a6ecdc..312ca6e16 100644
--- a/match.h
+++ b/match.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: match.h,v 1.19 2019/03/06 22:14:23 dtucker Exp $ */ 1/* $OpenBSD: match.h,v 1.20 2020/07/05 23:59:45 djm Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -21,8 +21,8 @@ int match_hostname(const char *, const char *);
21int match_host_and_ip(const char *, const char *, const char *); 21int match_host_and_ip(const char *, const char *, const char *);
22int match_user(const char *, const char *, const char *, const char *); 22int match_user(const char *, const char *, const char *, const char *);
23char *match_list(const char *, const char *, u_int *); 23char *match_list(const char *, const char *, u_int *);
24char *match_filter_blacklist(const char *, const char *); 24char *match_filter_denylist(const char *, const char *);
25char *match_filter_whitelist(const char *, const char *); 25char *match_filter_allowlist(const char *, const char *);
26 26
27/* addrmatch.c */ 27/* addrmatch.c */
28int addr_match_list(const char *, const char *); 28int addr_match_list(const char *, const char *);
diff --git a/misc.c b/misc.c
index 75fe4dfea..c75a795c2 100644
--- a/misc.c
+++ b/misc.c
@@ -1,29 +1,23 @@
1/* $OpenBSD: misc.c,v 1.147 2020/04/25 06:59:36 dtucker Exp $ */ 1/* $OpenBSD: misc.c,v 1.153 2020/06/26 05:16:38 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * Copyright (c) 2005,2006 Damien Miller. All rights reserved. 4 * Copyright (c) 2005-2020 Damien Miller. All rights reserved.
5 * Copyright (c) 2004 Henning Brauer <henning@openbsd.org>
5 * 6 *
6 * Redistribution and use in source and binary forms, with or without 7 * Permission to use, copy, modify, and distribute this software for any
7 * modification, are permitted provided that the following conditions 8 * purpose with or without fee is hereby granted, provided that the above
8 * are met: 9 * copyright notice and this permission notice appear in all copies.
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * 10 *
15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 11 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
16 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 12 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
17 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 13 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 14 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 15 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 16 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 17 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */ 18 */
26 19
20
27#include "includes.h" 21#include "includes.h"
28 22
29#include <sys/types.h> 23#include <sys/types.h>
@@ -260,7 +254,7 @@ waitfd(int fd, int *timeoutp, short events)
260 errno = oerrno; 254 errno = oerrno;
261 if (r > 0) 255 if (r > 0)
262 return 0; 256 return 0;
263 else if (r == -1 && errno != EAGAIN) 257 else if (r == -1 && errno != EAGAIN && errno != EINTR)
264 return -1; 258 return -1;
265 else if (r == 0) 259 else if (r == 0)
266 break; 260 break;
@@ -299,12 +293,17 @@ timeout_connect(int sockfd, const struct sockaddr *serv_addr,
299 return connect(sockfd, serv_addr, addrlen); 293 return connect(sockfd, serv_addr, addrlen);
300 294
301 set_nonblock(sockfd); 295 set_nonblock(sockfd);
302 if (connect(sockfd, serv_addr, addrlen) == 0) { 296 for (;;) {
303 /* Succeeded already? */ 297 if (connect(sockfd, serv_addr, addrlen) == 0) {
304 unset_nonblock(sockfd); 298 /* Succeeded already? */
305 return 0; 299 unset_nonblock(sockfd);
306 } else if (errno != EINPROGRESS) 300 return 0;
307 return -1; 301 } else if (errno == EINTR)
302 continue;
303 else if (errno != EINPROGRESS)
304 return -1;
305 break;
306 }
308 307
309 if (waitfd(sockfd, timeoutp, POLLIN | POLLOUT) == -1) 308 if (waitfd(sockfd, timeoutp, POLLIN | POLLOUT) == -1)
310 return -1; 309 return -1;
@@ -494,7 +493,7 @@ a2tun(const char *s, int *remote)
494long 493long
495convtime(const char *s) 494convtime(const char *s)
496{ 495{
497 long total, secs, multiplier = 1; 496 long total, secs, multiplier;
498 const char *p; 497 const char *p;
499 char *endp; 498 char *endp;
500 499
@@ -512,6 +511,7 @@ convtime(const char *s)
512 secs < 0) 511 secs < 0)
513 return -1; 512 return -1;
514 513
514 multiplier = 1;
515 switch (*endp++) { 515 switch (*endp++) {
516 case '\0': 516 case '\0':
517 endp--; 517 endp--;
@@ -552,6 +552,43 @@ convtime(const char *s)
552 return total; 552 return total;
553} 553}
554 554
555#define TF_BUFS 8
556#define TF_LEN 9
557
558const char *
559fmt_timeframe(time_t t)
560{
561 char *buf;
562 static char tfbuf[TF_BUFS][TF_LEN]; /* ring buffer */
563 static int idx = 0;
564 unsigned int sec, min, hrs, day;
565 unsigned long long week;
566
567 buf = tfbuf[idx++];
568 if (idx == TF_BUFS)
569 idx = 0;
570
571 week = t;
572
573 sec = week % 60;
574 week /= 60;
575 min = week % 60;
576 week /= 60;
577 hrs = week % 24;
578 week /= 24;
579 day = week % 7;
580 week /= 7;
581
582 if (week > 0)
583 snprintf(buf, TF_LEN, "%02lluw%01ud%02uh", week, day, hrs);
584 else if (day > 0)
585 snprintf(buf, TF_LEN, "%01ud%02uh%02um", day, hrs, min);
586 else
587 snprintf(buf, TF_LEN, "%02u:%02u:%02u", hrs, min, sec);
588
589 return (buf);
590}
591
555/* 592/*
556 * Returns a standardized host+port identifier string. 593 * Returns a standardized host+port identifier string.
557 * Caller must free returned string. 594 * Caller must free returned string.
@@ -1053,45 +1090,90 @@ tilde_expand_filename(const char *filename, uid_t uid)
1053} 1090}
1054 1091
1055/* 1092/*
1056 * Expand a string with a set of %[char] escapes. A number of escapes may be 1093 * Expand a string with a set of %[char] escapes and/or ${ENVIRONMENT}
1057 * specified as (char *escape_chars, char *replacement) pairs. The list must 1094 * substitutions. A number of escapes may be specified as
1058 * be terminated by a NULL escape_char. Returns replaced string in memory 1095 * (char *escape_chars, char *replacement) pairs. The list must be terminated
1059 * allocated by xmalloc. 1096 * by a NULL escape_char. Returns replaced string in memory allocated by
1097 * xmalloc which the caller must free.
1060 */ 1098 */
1061char * 1099static char *
1062percent_expand(const char *string, ...) 1100vdollar_percent_expand(int *parseerror, int dollar, int percent,
1101 const char *string, va_list ap)
1063{ 1102{
1064#define EXPAND_MAX_KEYS 16 1103#define EXPAND_MAX_KEYS 16
1065 u_int num_keys, i; 1104 u_int num_keys = 0, i;
1066 struct { 1105 struct {
1067 const char *key; 1106 const char *key;
1068 const char *repl; 1107 const char *repl;
1069 } keys[EXPAND_MAX_KEYS]; 1108 } keys[EXPAND_MAX_KEYS];
1070 struct sshbuf *buf; 1109 struct sshbuf *buf;
1071 va_list ap; 1110 int r, missingvar = 0;
1072 int r; 1111 char *ret = NULL, *var, *varend, *val;
1073 char *ret; 1112 size_t len;
1074 1113
1075 if ((buf = sshbuf_new()) == NULL) 1114 if ((buf = sshbuf_new()) == NULL)
1076 fatal("%s: sshbuf_new failed", __func__); 1115 fatal("%s: sshbuf_new failed", __func__);
1077 1116 if (parseerror == NULL)
1078 /* Gather keys */ 1117 fatal("%s: null parseerror arg", __func__);
1079 va_start(ap, string); 1118 *parseerror = 1;
1080 for (num_keys = 0; num_keys < EXPAND_MAX_KEYS; num_keys++) { 1119
1081 keys[num_keys].key = va_arg(ap, char *); 1120 /* Gather keys if we're doing percent expansion. */
1082 if (keys[num_keys].key == NULL) 1121 if (percent) {
1083 break; 1122 for (num_keys = 0; num_keys < EXPAND_MAX_KEYS; num_keys++) {
1084 keys[num_keys].repl = va_arg(ap, char *); 1123 keys[num_keys].key = va_arg(ap, char *);
1085 if (keys[num_keys].repl == NULL) 1124 if (keys[num_keys].key == NULL)
1086 fatal("%s: NULL replacement", __func__); 1125 break;
1126 keys[num_keys].repl = va_arg(ap, char *);
1127 if (keys[num_keys].repl == NULL)
1128 fatal("%s: NULL replacement for token %s", __func__, keys[num_keys].key);
1129 }
1130 if (num_keys == EXPAND_MAX_KEYS && va_arg(ap, char *) != NULL)
1131 fatal("%s: too many keys", __func__);
1132 if (num_keys == 0)
1133 fatal("%s: percent expansion without token list",
1134 __func__);
1087 } 1135 }
1088 if (num_keys == EXPAND_MAX_KEYS && va_arg(ap, char *) != NULL)
1089 fatal("%s: too many keys", __func__);
1090 va_end(ap);
1091 1136
1092 /* Expand string */ 1137 /* Expand string */
1093 for (i = 0; *string != '\0'; string++) { 1138 for (i = 0; *string != '\0'; string++) {
1094 if (*string != '%') { 1139 /* Optionally process ${ENVIRONMENT} expansions. */
1140 if (dollar && string[0] == '$' && string[1] == '{') {
1141 string += 2; /* skip over '${' */
1142 if ((varend = strchr(string, '}')) == NULL) {
1143 error("%s: environment variable '%s' missing "
1144 "closing '}'", __func__, string);
1145 goto out;
1146 }
1147 len = varend - string;
1148 if (len == 0) {
1149 error("%s: zero-length environment variable",
1150 __func__);
1151 goto out;
1152 }
1153 var = xmalloc(len + 1);
1154 (void)strlcpy(var, string, len + 1);
1155 if ((val = getenv(var)) == NULL) {
1156 error("%s: env var ${%s} has no value",
1157 __func__, var);
1158 missingvar = 1;
1159 } else {
1160 debug3("%s: expand ${%s} -> '%s'", __func__,
1161 var, val);
1162 if ((r = sshbuf_put(buf, val, strlen(val))) !=0)
1163 fatal("%s: sshbuf_put: %s", __func__,
1164 ssh_err(r));
1165 }
1166 free(var);
1167 string += len;
1168 continue;
1169 }
1170
1171 /*
1172 * Process percent expansions if we have a list of TOKENs.
1173 * If we're not doing percent expansion everything just gets
1174 * appended here.
1175 */
1176 if (*string != '%' || !percent) {
1095 append: 1177 append:
1096 if ((r = sshbuf_put_u8(buf, *string)) != 0) { 1178 if ((r = sshbuf_put_u8(buf, *string)) != 0) {
1097 fatal("%s: sshbuf_put_u8: %s", 1179 fatal("%s: sshbuf_put_u8: %s",
@@ -1103,8 +1185,10 @@ percent_expand(const char *string, ...)
1103 /* %% case */ 1185 /* %% case */
1104 if (*string == '%') 1186 if (*string == '%')
1105 goto append; 1187 goto append;
1106 if (*string == '\0') 1188 if (*string == '\0') {
1107 fatal("%s: invalid format", __func__); 1189 error("%s: invalid format", __func__);
1190 goto out;
1191 }
1108 for (i = 0; i < num_keys; i++) { 1192 for (i = 0; i < num_keys; i++) {
1109 if (strchr(keys[i].key, *string) != NULL) { 1193 if (strchr(keys[i].key, *string) != NULL) {
1110 if ((r = sshbuf_put(buf, keys[i].repl, 1194 if ((r = sshbuf_put(buf, keys[i].repl,
@@ -1115,16 +1199,79 @@ percent_expand(const char *string, ...)
1115 break; 1199 break;
1116 } 1200 }
1117 } 1201 }
1118 if (i >= num_keys) 1202 if (i >= num_keys) {
1119 fatal("%s: unknown key %%%c", __func__, *string); 1203 error("%s: unknown key %%%c", __func__, *string);
1204 goto out;
1205 }
1120 } 1206 }
1121 if ((ret = sshbuf_dup_string(buf)) == NULL) 1207 if (!missingvar && (ret = sshbuf_dup_string(buf)) == NULL)
1122 fatal("%s: sshbuf_dup_string failed", __func__); 1208 fatal("%s: sshbuf_dup_string failed", __func__);
1209 *parseerror = 0;
1210 out:
1123 sshbuf_free(buf); 1211 sshbuf_free(buf);
1124 return ret; 1212 return *parseerror ? NULL : ret;
1125#undef EXPAND_MAX_KEYS 1213#undef EXPAND_MAX_KEYS
1126} 1214}
1127 1215
1216/*
1217 * Expand only environment variables.
1218 * Note that although this function is variadic like the other similar
1219 * functions, any such arguments will be unused.
1220 */
1221
1222char *
1223dollar_expand(int *parseerr, const char *string, ...)
1224{
1225 char *ret;
1226 int err;
1227 va_list ap;
1228
1229 va_start(ap, string);
1230 ret = vdollar_percent_expand(&err, 1, 0, string, ap);
1231 va_end(ap);
1232 if (parseerr != NULL)
1233 *parseerr = err;
1234 return ret;
1235}
1236
1237/*
1238 * Returns expanded string or NULL if a specified environment variable is
1239 * not defined, or calls fatal if the string is invalid.
1240 */
1241char *
1242percent_expand(const char *string, ...)
1243{
1244 char *ret;
1245 int err;
1246 va_list ap;
1247
1248 va_start(ap, string);
1249 ret = vdollar_percent_expand(&err, 0, 1, string, ap);
1250 va_end(ap);
1251 if (err)
1252 fatal("%s failed", __func__);
1253 return ret;
1254}
1255
1256/*
1257 * Returns expanded string or NULL if a specified environment variable is
1258 * not defined, or calls fatal if the string is invalid.
1259 */
1260char *
1261percent_dollar_expand(const char *string, ...)
1262{
1263 char *ret;
1264 int err;
1265 va_list ap;
1266
1267 va_start(ap, string);
1268 ret = vdollar_percent_expand(&err, 1, 1, string, ap);
1269 va_end(ap);
1270 if (err)
1271 fatal("%s failed", __func__);
1272 return ret;
1273}
1274
1128int 1275int
1129secure_permissions(struct stat *st, uid_t uid) 1276secure_permissions(struct stat *st, uid_t uid)
1130{ 1277{
diff --git a/misc.h b/misc.h
index 5db594b91..b34c798e7 100644
--- a/misc.h
+++ b/misc.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: misc.h,v 1.84 2020/01/24 23:54:40 djm Exp $ */ 1/* $OpenBSD: misc.h,v 1.87 2020/05/29 11:17:56 dtucker Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -66,8 +66,12 @@ int parse_user_host_path(const char *, char **, char **, char **);
66int parse_user_host_port(const char *, char **, char **, int *); 66int parse_user_host_port(const char *, char **, char **, int *);
67int parse_uri(const char *, const char *, char **, char **, int *, char **); 67int parse_uri(const char *, const char *, char **, char **, int *, char **);
68long convtime(const char *); 68long convtime(const char *);
69const char *fmt_timeframe(time_t t);
69char *tilde_expand_filename(const char *, uid_t); 70char *tilde_expand_filename(const char *, uid_t);
71
72char *dollar_expand(int *, const char *string, ...);
70char *percent_expand(const char *, ...) __attribute__((__sentinel__)); 73char *percent_expand(const char *, ...) __attribute__((__sentinel__));
74char *percent_dollar_expand(const char *, ...) __attribute__((__sentinel__));
71char *tohex(const void *, size_t); 75char *tohex(const void *, size_t);
72void xextendf(char **s, const char *sep, const char *fmt, ...) 76void xextendf(char **s, const char *sep, const char *fmt, ...)
73 __attribute__((__format__ (printf, 3, 4))) __attribute__((__nonnull__ (3))); 77 __attribute__((__format__ (printf, 3, 4))) __attribute__((__nonnull__ (3)));
diff --git a/moduli b/moduli
index 10e85440f..85b70a13d 100644
--- a/moduli
+++ b/moduli
@@ -1,415 +1,454 @@
1# $OpenBSD: moduli,v 1.26 2020/02/20 05:41:50 dtucker Exp $ 1# $OpenBSD: moduli,v 1.27 2020/06/03 08:23:16 dtucker Exp $
2# Time Type Tests Tries Size Generator Modulus 2# Time Type Tests Tries Size Generator Modulus
320191022074127 2 6 100 2047 5 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C0FFE0C2D7 320200227022907 2 6 100 2047 2 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43A5D2A1AB
420191022074138 2 6 100 2047 2 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C0FFEE1D33 420200227023015 2 6 100 2047 2 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43A5E70AEB
520191022074152 2 6 100 2047 5 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C1000302CF 520200227023031 2 6 100 2047 2 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43A5FCC5F3
620191022074200 2 6 100 2047 2 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C10009CAA3 620200227023127 2 6 100 2047 5 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43A6503737
720191022074209 2 6 100 2047 5 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C1000E102F 720200227023144 2 6 100 2047 2 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43A66A2FBB
820191022074218 2 6 100 2047 2 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C10017AEC3 820200227023150 2 6 100 2047 2 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43A66D7443
920191022074224 2 6 100 2047 5 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C1001AC4BF 920200227023222 2 6 100 2047 5 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43A69A79BF
1020191022074243 2 6 100 2047 5 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C10036E7A7 1020200227023252 2 6 100 2047 5 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43A6CDB577
1120191022074322 2 6 100 2047 5 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C100727D9F 1120200227023257 2 6 100 2047 5 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43A6CE48A7
1220191022074342 2 6 100 2047 2 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C10091E09B 1220200227023317 2 6 100 2047 2 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43A6E457D3
1320191022074428 2 6 100 2047 2 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C100DB96B3 1320200227023359 2 6 100 2047 2 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43A70D7E23
1420191022074435 2 6 100 2047 2 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C100E315C3 1420200227023546 2 6 100 2047 5 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43A76B9A27
1520191022074440 2 6 100 2047 5 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C100E4BB67 1520200227023624 2 6 100 2047 2 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43A7957D9B
1620191022074450 2 6 100 2047 5 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C100EFF477 1620200227023645 2 6 100 2047 2 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43A7A54E7B
1720191022074526 2 6 100 2047 2 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C10125A5DB 1720200227023732 2 6 100 2047 2 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43A7AA8E03
1820191022074629 2 6 100 2047 2 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C1019192BB 1820200227024118 2 6 100 2047 2 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43A83E307B
1920191022074654 2 6 100 2047 2 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C101BD818B 1920200227024150 2 6 100 2047 2 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43A8735923
2020191022074721 2 6 100 2047 5 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C101E63DAF 2020200227024216 2 6 100 2047 2 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43A890B0C3
2120191022074911 2 6 100 2047 5 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C102A7DFE7 2120200227024317 2 6 100 2047 5 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43A8ECA377
2220191022074915 2 6 100 2047 5 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C102A7EDF7 2220200227024323 2 6 100 2047 2 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43A8F09443
2320191022074926 2 6 100 2047 2 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C102B62DA3 2320200227024339 2 6 100 2047 2 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43A9083FE3
2420191022075007 2 6 100 2047 2 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C102F7B693 2420200227024354 2 6 100 2047 2 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43A91CBC2B
2520191022075045 2 6 100 2047 5 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C1033B1D1F 2520200227024401 2 6 100 2047 5 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43A92295AF
2620191022075211 2 6 100 2047 2 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C103CDEA43 2620200227024451 2 6 100 2047 5 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43A96B524F
2720191022075252 2 6 100 2047 2 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C10417630B 2720200227024519 2 6 100 2047 5 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43A9893C5F
2820191022075337 2 6 100 2047 5 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C10462BA5F 2820200227024616 2 6 100 2047 2 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43A9DF0DE3
2920191022075408 2 6 100 2047 2 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C104906FA3 2920200227024648 2 6 100 2047 5 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43AA1356E7
3020191022075418 2 6 100 2047 2 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C1049C8563 3020200227024719 2 6 100 2047 5 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43AA391F8F
3120191022075526 2 6 100 2047 2 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C10516447B 3120200227024740 2 6 100 2047 2 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43AA5A232B
3220191022075538 2 6 100 2047 2 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C105263DC3 3220200227024759 2 6 100 2047 5 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43AA76C92F
3320191022075545 2 6 100 2047 2 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C1052B9CB3 3320200227024841 2 6 100 2047 2 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43AAB2E483
3420191022075648 2 6 100 2047 2 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C105985083 3420200227024942 2 6 100 2047 2 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43AB0D731B
3520191022075711 2 6 100 2047 5 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C105B6F457 3520200227024953 2 6 100 2047 5 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43AB1A9FE7
3620191022075721 2 6 100 2047 2 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C105C3BB0B 3620200227025000 2 6 100 2047 5 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43AB22AF6F
3720191022075832 2 6 100 2047 2 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C1064323B3 3720200227025133 2 6 100 2047 5 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43ABA90D27
3820191022075846 2 6 100 2047 5 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C106578B1F 3820200227025147 2 6 100 2047 2 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43ABBC77EB
3920191022075941 2 6 100 2047 5 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C106B58ADF 3920200227025251 2 6 100 2047 5 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43AC1EA27F
4020191022075955 2 6 100 2047 2 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C106CA5743 4020200227025455 2 6 100 2047 5 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43ACE67607
4120191022080041 2 6 100 2047 5 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C10715FF37 4120200227025504 2 6 100 2047 5 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43ACEC2507
4220191022080105 2 6 100 2047 2 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C1073A7C3B 4220200227025617 2 6 100 2047 5 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43AD55383F
4320191022080147 2 6 100 2047 5 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C10782FEF7 4320200227025658 2 6 100 2047 2 E5137884F699D3C3A5C899C39CE0DF08A0DECD4DCC6DAD746BDB407C8320AC77CA92EFCDE8EE708B23789C26A9DF03A9C1383CB3B0F8CE764F223899197124958E6C82CFE52CDA5F9DFDF1B89AF0F006F175049BA9055D8A9B3A6603018F2B00AD4524A7F699A5210047C116087FB2C186194F4DC78C95568B9A95CD29B4BD6BC8D71FF5D520E238693B41481C66EEB53CE30995CEF4835138A6A998EF39C879B3E3939FBC6CA7D1BCFCE7BDE8A9AA5CB7E00B7CD7FA83B754275B231FD808BB11A52E493BBC7CF063C19220D47448FDD6F72A7CC5799B3FFEC10D75C6240B378CAB489C2D3AB7E66D6921F0A4441A1CC0F7269EAAF775E8B2F24A43AD9D09CB
4420191022080206 2 6 100 2047 2 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C1079A53A3 4420200227025748 2 6 100 2047 5 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD988C6223F
4520191022080212 2 6 100 2047 2 E854C2A5759DFE93314B4F76AA4E7A249192AD0B0C70B1E62F3E0B4A37D181C7D1A233312886ED675788CBBC2B384D16C0CA8E5DED996C54F68568F21D6A2333E189848A5271AC0CA6F3DAAAE469F98E1B5223CB4253653FA82242C4D29AD65E878EA91522C51CF98774952FDD9453406B4AB50A7CDFA97BB4650F601DEC496C5839F98CD774BC0F9B57581633771865F175F3D72EFAB15D377CAB2EFBD812D6F13FAD3181323BDBD95BF44703FF38225883FDF4A536DA17F8C3441459AF90528DDA015E85A978C0ABB4708407B9394C8DFB4B654348131E7EA91FCF853C44D055ADEEAE40486AF9E1724D55CA27F97F7563A82EA86B661ED02383C1079CA49B 4520200227025916 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD989456A23
4620191022080437 2 6 100 2047 2 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC6254F1CC3 4620200227025954 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98982F93B
4720191022080445 2 6 100 2047 5 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC6255528FF 4720200227030134 2 6 100 2047 5 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98A1A5BD7
4820191022080450 2 6 100 2047 5 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC625566D5F 4820200227030145 2 6 100 2047 5 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98A276D4F
4920191022080507 2 6 100 2047 5 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC6256E3B7F 4920200227030156 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98A35BBCB
5020191022080516 2 6 100 2047 5 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC62573826F 5020200227030205 2 6 100 2047 5 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98A3A766F
5120191022080529 2 6 100 2047 5 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC6258313D7 5120200227030254 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98A8957DB
5220191022080539 2 6 100 2047 5 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC6258FAE9F 5220200227030322 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98AA57A4B
5320191022080552 2 6 100 2047 2 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC625A1898B 5320200227030336 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98AB5D4FB
5420191022080620 2 6 100 2047 2 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC625CCD3BB 5420200227030430 2 6 100 2047 5 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98B0921AF
5520191022080644 2 6 100 2047 5 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC625F373DF 5520200227030443 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98B1ADA93
5620191022080653 2 6 100 2047 5 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC625FE7A37 5620200227030556 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98B8D5E93
5720191022080713 2 6 100 2047 5 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC62618F277 5720200227030619 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98BA3DE33
5820191022080742 2 6 100 2047 2 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC6264B5263 5820200227030707 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98BF5B1FB
5920191022080848 2 6 100 2047 2 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC626BEAA8B 5920200227030728 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98C0DCC3B
6020191022080900 2 6 100 2047 5 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC626CD618F 6020200227030738 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98C19C5C3
6120191022080911 2 6 100 2047 2 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC626D33B5B 6120200227030750 2 6 100 2047 5 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98C2994E7
6220191022080939 2 6 100 2047 5 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC62703D917 6220200227030837 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98C6D2993
6320191022081024 2 6 100 2047 2 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC6273B779B 6320200227030928 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98CB6E833
6420191022081034 2 6 100 2047 2 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC627427EAB 6420200227031020 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98CFA7F73
6520191022081413 2 6 100 2047 5 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC62802E907 6520200227031051 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98D315F23
6620191022081751 2 6 100 2047 5 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC628B7905F 6620200227031130 2 6 100 2047 5 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98D61499F
6720191022081834 2 6 100 2047 2 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC628DBDDF3 6720200227031151 2 6 100 2047 5 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98D7FD90F
6820191022081843 2 6 100 2047 2 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC628DD29D3 6820200227031214 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98D94476B
6920191022081901 2 6 100 2047 5 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC628E650F7 6920200227031250 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98DD00E53
7020191022081950 2 6 100 2047 5 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC6290B1487 7020200227031339 2 6 100 2047 5 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98E1E199F
7120191022082140 2 6 100 2047 5 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC62959CDF7 7120200227031416 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98E4B1F93
7220191022082225 2 6 100 2047 5 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC6297568D7 7220200227031635 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98F2240D3
7320191022082400 2 6 100 2047 2 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC629B7AC1B 7320200227031653 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98F3EADE3
7420191022082607 2 6 100 2047 2 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC62A2EF923 7420200227031817 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98FB2594B
7520191022082624 2 6 100 2047 5 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC62A3A2537 7520200227031826 2 6 100 2047 5 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98FB9CA6F
7620191022082651 2 6 100 2047 5 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC62A50145F 7620200227031845 2 6 100 2047 5 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD98FD75E3F
7720191022082739 2 6 100 2047 2 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC62A77164B 7720200227031937 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD99022227B
7820191022082909 2 6 100 2047 5 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC62AD303A7 7820200227031944 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD990262A33
7920191022082923 2 6 100 2047 2 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC62AD5CF33 7920200227031950 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD9902A81E3
8020191022083101 2 6 100 2047 5 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC62B343BEF 8020200227031955 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD9902AEB73
8120191022083132 2 6 100 2047 5 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC62B47F117 8120200227032012 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD990348E1B
8220191022083152 2 6 100 2047 2 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC62B53A7EB 8220200227032023 2 6 100 2047 5 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD9903B6057
8320191022083332 2 6 100 2047 5 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC62B9ED527 8320200227032120 2 6 100 2047 2 C3A05E8BC687376881415BEB6C1506DA767E191DB4C5F4C587A839B341C2271B95F1B52E48C5CFF818CECB2E9BFBD3DB4B282B0D334A4992CF173E7A66B94D8B55F15CB610D5287917131C7CF4D966572EA2E0F1D6A89DFB54FB8B73B9B504D095446B8BA1C2EF49C8BC60D0074E3A25D1EC67FF95FD26D0A60CE0D692E32CB7326A8E5F698179DDE616D758DCB3F9F100623B23A3CF1699914515F5F97476AD124229CE5745A94417339C5D15F406A7D1A6D7BAB235E50D4A998DBD52B72347DB4870BD4D7CD1D5BE6E1D8E54381298791146FFACA089A066C9304067CA0CB8CF493C89EFAEA9836553F05187BA74DE1D7862392B43A94D439B3FD9908EA19B
8420191022083541 2 6 100 2047 2 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC62BFDF373 8420200227032956 2 6 100 3071 5 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA31DFAF3F
8520191022083653 2 6 100 2047 2 C66D2C1883042B443CFE0A10A9DE4F2120CB375E93A50CEF11ADD1B8F8ED9923BBE9E231DDC9F241621E6FC0DC320B783086E419F0D746394CECDE3E7AE09E87956DB1ED4E517A9661F6361EA745ECB5841BB8B7A12AA7ECE0CB262D6462AE527E1D4562DB853E712CAAC8971C17A3D4D3A98187A3E78A0FFBF46C94A4EAA09CD4E81973862E8DE4EC5A64ED78C4524300ED4727A365FFE41F5EF11325038F788DE6ECC6B93D77B6435F333AED77FFC5EE20D166E9766BCEFF7A0399601CAD4E1D746C59A5C0775375F76F2CC92F7222854A179902F3F324AC56996CC6AAA3612051EB7AF7EFB3F199FFD5A0661B6B8ECFB8E71C256DF5275B932FC62C3DC8A3 8520200227033345 2 6 100 3071 5 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA3252345F
8620191022092407 2 6 100 3071 5 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA50A338107 8620200227033438 2 6 100 3071 5 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA32676B4F
8720191022094427 2 6 100 3071 2 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA50B5A745B 8720200227033631 2 6 100 3071 2 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA32A2AF93
8820191022095026 2 6 100 3071 2 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA50BB26CFB 8820200227033648 2 6 100 3071 2 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA32A57513
8920191022095757 2 6 100 3071 5 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA50C22C577 8920200227033939 2 6 100 3071 2 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA32FDB38B
9020191022100015 2 6 100 3071 5 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA50C3FB8DF 9020200227034338 2 6 100 3071 2 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA337FBEBB
9120191022101519 2 6 100 3071 2 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA50D2350DB 9120200227034832 2 6 100 3071 5 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA341DDB0F
9220191022102519 2 6 100 3071 5 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA50DB8BE5F 9220200227035633 2 6 100 3071 2 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA3531B9A3
9320191022103601 2 6 100 3071 2 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA50E50FDAB 9320200227035941 2 6 100 3071 2 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA359F1EBB
9420191022105902 2 6 100 3071 2 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA50FDC58C3 9420200227040026 2 6 100 3071 5 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA35B2A26F
9520191022110723 2 6 100 3071 2 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA510777B23 9520200227040140 2 6 100 3071 2 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA35D7858B
9620191022111301 2 6 100 3071 5 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA510E968FF 9620200227040536 2 6 100 3071 2 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA36567783
9720191022111931 2 6 100 3071 5 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA51168241F 9720200227041037 2 6 100 3071 5 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA36F6CA8F
9820191022112616 2 6 100 3071 5 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA511E89D1F 9820200227041504 2 6 100 3071 5 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA3785E44F
9920191022115052 2 6 100 3071 5 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA513DB748F 9920200227041915 2 6 100 3071 5 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA3808D25F
10020191022121302 2 6 100 3071 2 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA515D683FB 10020200227042019 2 6 100 3071 5 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA3824C37F
10120191022121526 2 6 100 3071 2 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA5160BAA4B 10120200227042213 2 6 100 3071 2 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA385DC613
10220191022121542 2 6 100 3071 2 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA5160BED3B 10220200227042334 2 6 100 3071 2 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA38849CEB
10320191022121601 2 6 100 3071 2 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA5160E3E63 10320200227043140 2 6 100 3071 2 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA39923EB3
10420191022121811 2 6 100 3071 2 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA5164A2E73 10420200227043516 2 6 100 3071 2 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA3A0635DB
10520191022122332 2 6 100 3071 2 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA517055113 10520200227044359 2 6 100 3071 5 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA3B392D4F
10620191022122412 2 6 100 3071 2 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA517133383 10620200227045601 2 6 100 3071 5 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA3CCCDC47
10720191022122637 2 6 100 3071 2 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA517638283 10720200227045738 2 6 100 3071 2 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA3CFCA5F3
10820191022122836 2 6 100 3071 5 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA5179FD6A7 10820200227045900 2 6 100 3071 5 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA3D24B39F
10920191022123100 2 6 100 3071 2 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA517EAE913 10920200227050201 2 6 100 3071 2 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA3D83C633
11020191022123327 2 6 100 3071 5 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA5182B9D27 11020200227050551 2 6 100 3071 2 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA3DFE5163
11120191022123424 2 6 100 3071 2 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA518407A6B 11120200227051236 2 6 100 3071 5 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA3ED9C2F7
11220191022123511 2 6 100 3071 2 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA5184FB45B 11220200227051737 2 6 100 3071 2 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA3F7F3323
11320191022123600 2 6 100 3071 5 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA51863E15F 11320200227051844 2 6 100 3071 5 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA3FA0D7E7
11420191022123622 2 6 100 3071 5 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA518664AB7 11420200227052045 2 6 100 3071 2 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA3FDE75DB
11520191022124625 2 6 100 3071 2 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA519AC1C6B 11520200227052157 2 6 100 3071 2 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA3FFFCD0B
11620191022124824 2 6 100 3071 5 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA519E8D89F 11620200227052559 2 6 100 3071 5 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA407E7607
11720191022125143 2 6 100 3071 2 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA51A5644B3 11720200227052656 2 6 100 3071 2 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA40963EDB
11820191022125456 2 6 100 3071 2 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA51AC223CB 11820200227053254 2 6 100 3071 2 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA415E3B2B
11920191022130231 2 6 100 3071 2 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA51BC05D9B 11920200227053802 2 6 100 3071 2 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA4208CBCB
12020191022130435 2 6 100 3071 2 D00135D249B408C9C43A9853424ACA3EDF29C91A8760DB5CE2C29A213031753FCBF3A8892770E231C072CA20C6EE29FAD67E50456D8E08CEADB2741F25A802DB85BD3A1F2DDEA57736D8E19AFDE970D9C2345E6A0B734D296DA2773A565F509DF0C637A2611C59D93E22F88D1600FD6798D6251F8F6F6AD12654A7DF7DBD559F4BCF140BBCA454F23F75DDF40531DE17AE102D98E69CF4A027E5614C2ADB4E724F41EF72C6C54F5132379E53787F916D1164FF74EE411A513515F4BE5DC64712B0E786A690520BA4ACC7B4F95CDCF1D39F5D41D8725FA194AD1CDA0604F67FA4C30B342FF8334DF973090113EF54EC82BB7184356A5D076CCEE598FEEE728A9C6DAE101CF412CCCF320F430CF1754E10D24F876B11DF347DF662E58EAF1642D7D4ABDE5F097EF9C8EF567D33D11AA7F7C8DCC6E2BAA2702CF21832F33215A8B4D8CF5026FB71C4892B7D57F692EAB9463FE4BA79DCE00442BBD41F0E539BFDF58151B295B4B52C43EE071E0DB45EFBCF7C2402C2719283B2188A7BA51BFF7E23 12020200227054020 2 6 100 3071 2 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA424BC4CB
12120191022130821 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EDF6A052B 12120200227054242 2 6 100 3071 2 DCBD1F34999D3EC980A7AEBD1943B18AFB4904E85DB641E8660A4AE3671C152EBB36BED44E5DA6D647F6232C29EE3FF3C20DFDB18D72B705E57F9B23636AF36E395D68651A0D223C816BF904E29134F49667D205B5EB03F613C24B65E386CB8EEE384AF41BDCF4373C885780C3AC2131584DF97F62A50C7E9169A52DC71B8D9F80FBFBEEC935C01D0375AD8BCA0E5C84A041D0BF80230D3AC15E09C2629326E59F70FAD8606BDFB3901284844D4C00155C48301F4E91384454852D47D2D0D992123E42130E6F1F45E429A4C52AFF03522B5C68307B4B1082E7868D8241D143A156C2E40F45A5E34C3D2397A91FF195C49DBABB490900238B6F5801B876EE1EC64D8E20F95C1F409F82D70C7C24DB5EEBACD6D56F0486E49DB009B859F2E757679D5499295783E1080C1369B373C481EA3295C9B8D46F8D10F29C50774959490DBD068D1A81BC118606BF8E58050B7F0D88929678D6A47FDAFE506D91FE5F61D4B2EC286CCF1AD616A875819C1BEE6536D24DAEB7DBAC87C2A7A771EA42946B7B
12220191022131106 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EDFBF6B4B 12220200227054918 2 6 100 3071 2 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E46617A143
12320191022131309 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EDFFDD323 12320200227055927 2 6 100 3071 2 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E46766DBEB
12420191022131339 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EE008716B 12420200227060242 2 6 100 3071 2 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E467D1E903
12520191022131426 2 6 100 3071 5 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EE01A5ECF 12520200227060411 2 6 100 3071 5 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E467F9B8CF
12620191022131921 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EE0BF992B 12620200227060700 2 6 100 3071 2 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E468561F7B
12720191022132230 2 6 100 3071 5 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EE127F08F 12720200227060843 2 6 100 3071 5 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E46889B29F
12820191022132941 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EE226E25B 12820200227061342 2 6 100 3071 5 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E469324A4F
12920191022133745 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EE33AB123 12920200227061525 2 6 100 3071 2 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E46967398B
13020191022134534 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EE44106F3 13020200227061630 2 6 100 3071 2 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E469871133
13120191022134625 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EE455482B 13120200227061736 2 6 100 3071 2 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E469A5C023
13220191022134720 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EE46CCF9B 13220200227061919 2 6 100 3071 2 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E469DFD25B
13320191022134822 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EE489D84B 13320200227062156 2 6 100 3071 2 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E46A4225DB
13420191022135012 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EE4C1DAE3 13420200227062610 2 6 100 3071 5 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E46AE7835F
13520191022135216 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EE5043D3B 13520200227062733 2 6 100 3071 2 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E46B158F5B
13620191022135757 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EE57878BB 13620200227063025 2 6 100 3071 2 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E46B8351EB
13720191022140734 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EE6BA655B 13720200227063206 2 6 100 3071 2 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E46BBA58CB
13820191022142332 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EE8EAF59B 13820200227063226 2 6 100 3071 2 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E46BBEE61B
13920191022142420 2 6 100 3071 5 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EE8FD9DD7 13920200227063414 2 6 100 3071 2 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E46BFF08A3
14020191022142754 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EE9733DBB 14020200227063436 2 6 100 3071 2 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E46C048EDB
14120191022142817 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EE975F4B3 14120200227063458 2 6 100 3071 2 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E46C0B9BA3
14220191022142942 2 6 100 3071 5 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EE9A37157 14220200227064340 2 6 100 3071 5 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E46D585367
14320191022144132 2 6 100 3071 5 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EEB21454F 14320200227064522 2 6 100 3071 2 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E46D8D449B
14420191022144147 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EEB22B7DB 14420200227064747 2 6 100 3071 2 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E46DD850B3
14520191022144244 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EEB38090B 14520200227064951 2 6 100 3071 5 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E46E17A897
14620191022144542 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EEB95B34B 14620200227065115 2 6 100 3071 5 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E46E41058F
14720191022145051 2 6 100 3071 5 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EEC40A7FF 14720200227070122 2 6 100 3071 5 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E46F9C7E5F
14820191022145134 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EEC502BF3 14820200227070147 2 6 100 3071 5 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E46FA4963F
14920191022145406 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EECA2580B 14920200227070247 2 6 100 3071 5 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E46FC0F617
15020191022145505 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EECBDBF73 15020200227070844 2 6 100 3071 2 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E470861EE3
15120191022150136 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EED9F7463 15120200227071233 2 6 100 3071 2 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E471071DF3
15220191022150745 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EEE758BDB 15220200227072256 2 6 100 3071 2 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E4726F3A13
15320191022151026 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EEECBE16B 15320200227072700 2 6 100 3071 2 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E472F54A5B
15420191022151204 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EEEFDA69B 15420200227073459 2 6 100 3071 5 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E47401DC37
15520191022151244 2 6 100 3071 5 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EEF0D0497 15520200227073831 2 6 100 3071 5 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E474725CAF
15620191022151301 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EEF0FF43B 15620200227074056 2 6 100 3071 5 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E474BE84D7
15720191022151431 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EEF3CEEB3 15720200227074215 2 6 100 3071 5 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E474E1A47F
15820191022151535 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EEF5CB1A3 15820200227074642 2 6 100 3071 2 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E47575BDFB
15920191022152032 2 6 100 3071 5 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EF00699A7 15920200227074700 2 6 100 3071 2 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E47579CADB
16020191022152057 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EF00EFCAB 16020200227075116 2 6 100 3071 5 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E4760314A7
16120191022152637 2 6 100 3071 2 DF2C9C2AE196431BA2F72808B4B3BEE51B068BC569BB83E2E500DF23BB7A3034053999EC562CC1DD8064F2F026E557D069B42670BD4AEFB0ABD18C6BEF70FA0CDC33A59CA1B4E92576A87A81140834C7F8F6BB3BD3C0B1ABBC39E3F85348B097157EAB5115CDCE8A1274D3E95A1A77A0FF34C11ECBCC54C0B95F2A37FFDD00ECD37C74137358475F72FD37B6580DB272E469D382B7A22FBE9859E8C5CC42CCFE2E2E0EF51F90697E0CE7459FE037B8870CBE7C636160F98E6B3FD98EBADC5749E1DFFE5118C757886D668C4355018A78E76593A4268D5783507A31A12625DDE4DB30DF12233756F3690681E3E91BDB2BB4D36A6B1E77F23C7EC39B57582203E4FC4AFC2AAB33D10BC4A1EE6687A6524B9A0BA6ED3347764E880FBB6B645EF091E42567813FA31A97B39F185BFB303CEC2EAE412913351C926B3F14A5EAE1CEA771F333374DA7CF83D16C3048367B05432BEDC88DF66F92D8942ACED0E83E804B8CFE8A75BD9AB504D09B286EC7FB175A2A6DA848CD7AB3503877077EF0D0F343 16120200227075407 2 6 100 3071 2 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E4765B8EFB
16220191022162825 2 6 100 4095 2 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D813960B5FB 16220200227075829 2 6 100 3071 5 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E476EF083F
16320191022170230 2 6 100 4095 2 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D813B823183 16320200227075857 2 6 100 3071 2 EAF378AA0E2C586E9556B81261F829EE5A8F5F5E6E7A2FC92544555E006535C9EDABC5553D5FE43E8DC0886AC3788355B7B7B8FB8EE5220404D022955DBB3C1CFEB9E3163F80DE6DBECA51E2F2AB680799E4227F29894FA0343483021CF475957D82EBAB1F9E270F681A28DF7E37DDA5398B1DE5E0613048B7C52C349BEF4F11A7455D2322589F593160B2AEF33286DE2C267E6C17FC027253BE1CB1254231F8AB2B1232D37E8E4374D00BAF10FB961F88CD80406AC44EBCC29DEB857BE1F400EB532FC49B575379E56593CE3B609D6A19FAF9751A9BB30CFF6C0B2892612BC313F5966741E913B97BF060B8320734BC5030A9A33110E15967D826BAAC7CB3A2E3A0B818FEF3410BF0D5230D1BC7EC86798DBCA14544AC5D956CB0B08888EACCD57D1E50C48D6511E9FF562F177E03ED08219169FDD999FA75595D67081EEC8192AF3855CADEA45B0122F042D03E0599834190F5C5A5E0B2C414A65AB21B91D32DBFDF02C247D6F085C6AC55114A62D1EC6BA06964FE5283226B37E476FA748B
16420191022173749 2 6 100 4095 5 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D813DBE76FF 16420200227082813 2 6 100 4095 2 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB741DABA73
16520191022182715 2 6 100 4095 2 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D8140DADF3B 16520200227085254 2 6 100 4095 5 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB7435962FF
16620191022183421 2 6 100 4095 2 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D814147138B 16620200227085753 2 6 100 4095 5 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB743A213E7
16720191022184621 2 6 100 4095 2 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D8142020493 16720200227090042 2 6 100 4095 2 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB743C75A03
16820191022185705 2 6 100 4095 5 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D8142A5D767 16820200227090234 2 6 100 4095 2 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB743DE5FFB
16920191022190031 2 6 100 4095 5 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D8142D4B05F 16920200227090848 2 6 100 4095 2 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB7443ADF5B
17020191022190457 2 6 100 4095 5 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D81431290D7 17020200227093007 2 6 100 4095 2 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB7458D5F63
17120191022190552 2 6 100 4095 5 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D814318C56F 17120200227094856 2 6 100 4095 5 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB746B8906F
17220191022191638 2 6 100 4095 2 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D8143BDC2DB 17220200227101124 2 6 100 4095 2 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB7480F5003
17320191022191758 2 6 100 4095 5 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D8143CAE497 17320200227101730 2 6 100 4095 2 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB7486988BB
17420191022192300 2 6 100 4095 5 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D8144142F3F 17420200227103113 2 6 100 4095 2 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB74937A0CB
17520191022195622 2 6 100 4095 2 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D814632A81B 17520200227104420 2 6 100 4095 2 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB74A04F623
17620191022195854 2 6 100 4095 2 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D8146547CD3 17620200227104854 2 6 100 4095 5 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB74A45CB4F
17720191022200200 2 6 100 4095 5 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D81467EFE3F 17720200227110836 2 6 100 4095 2 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB74B74FEEB
17820191022205134 2 6 100 4095 2 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D81499F9BF3 17820200227111613 2 6 100 4095 5 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB74BE3FB7F
17920191022211317 2 6 100 4095 5 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D814AF7C2DF 17920200227112749 2 6 100 4095 5 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB74C93FE2F
18020191022212155 2 6 100 4095 5 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D814B7B777F 18020200227114309 2 6 100 4095 5 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB74D83C6DF
18120191022213552 2 6 100 4095 5 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D814C560507 18120200227115500 2 6 100 4095 2 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB74E39954B
18220191022215648 2 6 100 4095 2 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D814DA0CEEB 18220200227115811 2 6 100 4095 2 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB74E610523
18320191022215902 2 6 100 4095 2 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D814DBD146B 18320200227115926 2 6 100 4095 2 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB74E6BF7B3
18420191022221214 2 6 100 4095 5 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D814E8802CF 18420200227121313 2 6 100 4095 2 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB74F3A3303
18520191022222728 2 6 100 4095 2 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D814F6F35AB 18520200227121624 2 6 100 4095 2 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB74F621F43
18620191022224558 2 6 100 4095 2 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D8150919C63 18620200227121855 2 6 100 4095 2 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB74F826A0B
18720191022224953 2 6 100 4095 5 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D8150C9F1CF 18720200227123033 2 6 100 4095 2 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB7502D388B
18820191022225735 2 6 100 4095 2 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D81513C4A13 18820200227130625 2 6 100 4095 2 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB7525AE2F3
18920191022234711 2 6 100 4095 2 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D81544BEA1B 18920200227135640 2 6 100 4095 5 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB755543337
19020191023000745 2 6 100 4095 2 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D81558FF6DB 19020200227140747 2 6 100 4095 2 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB755FCE54B
19120191023002021 2 6 100 4095 2 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D81564FD2C3 19120200227141645 2 6 100 4095 5 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB756869BEF
19220191023002706 2 6 100 4095 5 CC199B2E429DD1809E193696BF0F2AB45FFC1E077B916F4E9E453876787A644C71CB859FC28B47CEA27D037E3B1F36EE8F5ACFB5D7315177F67A65CBCCB359E658120697DAFB3695C560A2693A7F1D7B22A1F8DF14987A2615D3E2E2C99232DDCF03F12248975CF039EE2DB522CEBC0391B6AA2CC7E45866DDC19D62E6A835C8347F6A447E6A6266DDFAD3197405E66C932E4A1213186F67F843E1962FD311F97062775E1FE9D0DE2525187275D01694AD66E670A40BA284BEE0FB7C64D1A79C2A18786E819FCF996631115EC212F37584F7203E6F0EE60C3963BF148A288D68B2800AF662CBBCDF8235A8DC206968ED54E3EB7C4D233C98804AE2A70DC47E995535F98C0DEBDBFDAFA8E532C6EB998925A0EEA652957973DC7643B1B5C66FF2D22C3205E96D67D1A67D2EBB9AAEC446A29EB0687550F78C18A398422EC07954B9A730FEDBAA0AD5ED90BB892C80A77AE5D27DA0DA0D3EC3075C10C86948F0B3D3DC2393673B226A3F6364DFF3D027B38BA51481461C1BF5F3C3FFBBEEADC882B5D0F4C5F59D977AB6E00A25066D8BF473481A1EA441A896D46C829DB1A489CB09FD9E1B1D09B4F1B854041583FAD18D6D303487DE1DC89D87F599920FA8EEDD4A3B64A520C3EC3AB670E93C89D0D43BC858FD991A78DDEBA72A5998DAD5AAE0123FF9E0F2E344C42E5581FFAAC36E54644B1AC1C021A7D6E9096D8156B28D27 19220200227142156 2 6 100 4095 5 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB756C91ECF
19320191023011355 2 6 100 4095 5 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC1460883F 19320200227143711 2 6 100 4095 5 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB75795756F
19420191023012442 2 6 100 4095 2 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC1509A3E3 19420200227144742 2 6 100 4095 5 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB75832B00F
19520191023014214 2 6 100 4095 5 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC1620E157 19520200227150218 2 6 100 4095 2 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB7590B9D1B
19620191023015245 2 6 100 4095 2 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC16C48533 19620200227150317 2 6 100 4095 2 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB75911AF63
19720191023020841 2 6 100 4095 2 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC17C54673 19720200227153455 2 6 100 4095 5 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB75AFB3177
19820191023021754 2 6 100 4095 2 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC1857058B 19820200227154347 2 6 100 4095 2 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB75B7E69BB
19920191023021829 2 6 100 4095 2 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC1857094B 19920200227154742 2 6 100 4095 5 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB75BB2636F
20020191023022432 2 6 100 4095 5 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC18B12DFF 20020200227155533 2 6 100 4095 5 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB75C283F5F
20120191023030433 2 6 100 4095 5 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC1B390A47 20120200227155629 2 6 100 4095 2 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB75C2FB09B
20220191023031027 2 6 100 4095 5 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC1B90EEA7 20220200227161922 2 6 100 4095 2 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB75D8A8C4B
20320191023031756 2 6 100 4095 2 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC1C00CBAB 20320200227163034 2 6 100 4095 5 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB75E3342C7
20420191023032601 2 6 100 4095 2 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC1C810F3B 20420200227163725 2 6 100 4095 5 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB75E9424E7
20520191023041220 2 6 100 4095 2 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC1F6D731B 20520200227165111 2 6 100 4095 2 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB75F623DC3
20620191023044241 2 6 100 4095 2 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC2154D00B 20620200227170513 2 6 100 4095 2 DDFF38E32E0309D5459129AFA6C2F640C7125B85084C79BDD7042DA6E39D4A0DA4A671588016428ECAEC0F6BCC1A95E4B2BE518B7766CD0AC4674949D48B088492394DD9283C09D71CB4F4306E4CD27390575EBF2934E1C97AF880146F0D090DAB3AE1B679CF30AA52D307A8C64382C93F11AF73CAC171741A1C898CD79A680697D1A17A3D63F8C92A9C088E9E490D753D3A4811A8CAABEC2D80C62D66F56660995BC6D82BCCE18C4C6287B848F239C40467BB7EB3B7EB5489A7417D9DE8825FA86D16602AEF9BD3A523DB96B071C2BED3239B5C69AD772A39B18543F517F8BF49E6B5AE875A37E117010E8CA59947571DDC329FFD137998EC151B367525D0647001C4DADB2B95FBA9657A5619A0445E627EC6F71B4A3239E01ED76D85CBCAFFE92283E9408F770D9B8267DF5031C74C9F16CF43EB10881369DA46E692ACB2F94E9136FDA7FF58F54FFAD5749F79E5521D4358A0984AEC1B49C678FA6D6379905ABE4D245EBE854A09282945B4B62EDBDDF30954FBB9E40D751BBCD82ABE4BDC98274CB158F977802ED5E7F267A3F1EE0E6259215AD75798A6088D9AD6ACF4DF5DAA8474D1C8166AE244176D5AA2A7B2697C7C059DF78B07ACC2D47083F5058885E29FD9352243A5643C8237FBEF77F77AEEE32EC6455B4DB32A30ED02409FCBEF0C1C988876B0CBC85C89FA062824E1D35512E8C7731843CA7F6EB7602FCE73
20720191023050540 2 6 100 4095 5 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC22C34F7F 20720200227171514 2 6 100 4095 2 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB921518EE99203
20820191023053137 2 6 100 4095 2 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC24636123 20820200227180811 2 6 100 4095 2 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB92151924BA233
20920191023054409 2 6 100 4095 2 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC25224B73 20920200227184341 2 6 100 4095 5 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB921519490B137
21020191023055524 2 6 100 4095 2 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC25D1FFDB 21020200227184640 2 6 100 4095 2 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB9215194B6E91B
21120191023060757 2 6 100 4095 2 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC2694C58B 21120200227185707 2 6 100 4095 2 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB9215195546D0B
21220191023061045 2 6 100 4095 2 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC26B834E3 21220200227192438 2 6 100 4095 2 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB9215196FF1A63
21320191023061921 2 6 100 4095 2 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC2738F1C3 21320200227192937 2 6 100 4095 5 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB9215197470C5F
21420191023063046 2 6 100 4095 2 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC27F1807B 21420200227193545 2 6 100 4095 2 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB9215197A3CACB
21520191023070045 2 6 100 4095 2 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC29CDC52B 21520200227193904 2 6 100 4095 5 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB9215197CFA597
21620191023071942 2 6 100 4095 2 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC2AFB0F2B 21620200227201541 2 6 100 4095 5 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB921519A1D5807
21720191023074553 2 6 100 4095 2 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC2C984AAB 21720200227201830 2 6 100 4095 2 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB921519A3EDD33
21820191023074939 2 6 100 4095 2 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC2CCC9613 21820200227202555 2 6 100 4095 2 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB921519AAFD1D3
21920191023075554 2 6 100 4095 5 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC2D28BCCF 21920200227202936 2 6 100 4095 2 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB921519AE21FCB
22020191023075639 2 6 100 4095 2 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC2D2BA71B 22020200227203051 2 6 100 4095 2 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB921519AEDB593
22120191023080618 2 6 100 4095 5 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC2DBACC87 22120200227203917 2 6 100 4095 2 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB921519B6FE6A3
22220191023083736 2 6 100 4095 2 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC2FAEE4A3 22220200227205155 2 6 100 4095 2 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB921519C3628EB
22320191023084930 2 6 100 4095 5 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC30617C97 22320200227210720 2 6 100 4095 2 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB921519D1EC08B
22420191023085843 2 6 100 4095 2 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC30EE1283 22420200227211425 2 6 100 4095 5 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB921519D892927
22520191023090057 2 6 100 4095 5 E742CC22AC8196AB705E8DB89387F5DBFB15A97C6B3E188CBD4C792BC874928A0148F33791BBFB4E82989EC1F4C5C4FBF002A329190728BFC02AAFD8218102045AF53F8650CAD3E6B98544A1567576B26AD72F6CEBC0F7CF15EB5A62D4678A0E4A0AE868F759BAA31EB27083AAE879248068FAD7FEDD7673689E4C22010278DF2EB37E9FAF353C5A66F0B5916A9812AC91B581B0428D5C9A8D4CEAEAE5B9D11BA3692EBDC9D86C56B0F44CC0771ED405915ED4253A19F58913CB84758666F7D533E2C52E07B06788EE3AA292C9EF6A6183411892166710781DD188F88BBEECE87F6F1CFBADC954D7061B9F0F5F2C6A7754498D868AE526C8F440D1BFAF8F70059A96760EECB594F9518DDCAC1478FAF387D0703A4A57D1A66701076FA15F4E7E9BC6B0407DA00FA1112B6BE13867669FB21F8D8241C11252ECC5F15816FBC447BC0DE3089629EC03B4F14B6D8C12EA1884379BED5C4B39BA1E3D07BC6C4B5295D4629B5E2503C4775B944D5F2617C4D95527E79EC7EA2CF7E116A1FF95EEFF00A79ABAC3D35524D7C64B8D4199381BFC9DEB3BFE19E0AEEE9B2B864FA74F8C478EE5B6693DD7B6F1E87066EEE9CC0E51F9999E0EC914D96BF86958F0ABFDB6EEA5BD347F6A91C6F4FCC4785E924C76979D0309DABA023B44E4AEA5439696F501D58ACE247D49865FAB169422CAA151DB57A5C4EFF392E56467702ECC31091E2F 22520200227211637 2 6 100 4095 2 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB921519DA3F85B
22620191023150040 2 6 100 6143 2 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E44442FE9DE33 22620200227212024 2 6 100 4095 5 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB921519DD7AC4F
22720191023185353 2 6 100 6143 2 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E444434DA83FB 22720200227212617 2 6 100 4095 2 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB921519E2E0AD3
22820191023202543 2 6 100 6143 2 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E444436C35ABB 22820200227213638 2 6 100 4095 2 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB921519ECA5D23
22920191023212301 2 6 100 6143 5 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E444437F75207 22920200227213802 2 6 100 4095 2 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB921519ED8B3EB
23020191024004920 2 6 100 6143 5 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E44443C4BC217 23020200227215450 2 6 100 4095 2 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB921519FDD53D3
23120191024005456 2 6 100 6143 2 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E44443C62147B 23120200227221218 2 6 100 4095 5 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB92151A0ECC74F
23220191024013830 2 6 100 6143 5 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E44443D4436C7 23220200227221341 2 6 100 4095 2 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB92151A0FA2D4B
23320191024020328 2 6 100 6143 2 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E44443DC27DCB 23320200227222437 2 6 100 4095 2 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB92151A19ED9DB
23420191024022030 2 6 100 6143 2 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E44443E12DF8B 23420200227223018 2 6 100 4095 5 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB92151A1F0CA5F
23520191024041749 2 6 100 6143 2 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E4444401CCD8B 23520200227223552 2 6 100 4095 5 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB92151A2441737
23620191024071132 2 6 100 6143 5 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E444442526417 23620200227224041 2 6 100 4095 2 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB92151A2876443
23720191024071851 2 6 100 6143 2 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E4444426F0F73 23720200227225049 2 6 100 4095 5 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB92151A31D69A7
23820191024093118 2 6 100 6143 2 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E444445307603 23820200227225259 2 6 100 4095 5 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB92151A337A56F
23920191024095518 2 6 100 6143 2 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E444445A39BD3 23920200227225746 2 6 100 4095 5 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB92151A37D3827
24020191024150723 2 6 100 6143 5 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E44444BF198DF 24020200227230135 2 6 100 4095 5 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB92151A3AF483F
24120191024180500 2 6 100 6143 2 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E44444F817E93 24120200227230918 2 6 100 4095 2 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB92151A41FC5AB
24220191024182834 2 6 100 6143 5 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E44444FF6FAA7 24220200227232340 2 6 100 4095 5 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB92151A4FCC2DF
24320191024190019 2 6 100 6143 5 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E444450947417 24320200227232424 2 6 100 4095 5 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB92151A4FEF907
24420191024190629 2 6 100 6143 2 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E444450ACC83B 24420200228001546 2 6 100 4095 5 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB92151A82A356F
24520191024234818 2 6 100 6143 2 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E44445664815B 24520200228002300 2 6 100 4095 5 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB92151A8959297
24620191025002527 2 6 100 6143 5 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E4444571ED7D7 24620200228010138 2 6 100 4095 2 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB92151AAEFD82B
24720191025090114 2 6 100 6143 2 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E44446188A3EB 24720200228010636 2 6 100 4095 5 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB92151AB3B04D7
24820191025105729 2 6 100 6143 2 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E444463CF6B53 24820200228012037 2 6 100 4095 5 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB92151AC0DBACF
24920191025125212 2 6 100 6143 2 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E44446611F15B 24920200228022145 2 6 100 4095 5 C7D5773A9200CD53CB4C9244931BB61A711BA1EA3735C53C933074E733E2DAFBBC1F737A508EA82790EF95F7989A889A8FFBC707E9A88090ED5FBA0F485638CBAC547DE653E9D80D09E8795B68C70570547E49D611E08F9D47AEFC22AE8D81D8863CAC593896D4B126CA806247C2954360BDAB96247050BE8C3D7E39C3C2D5B0C74811B0AC00CB338A3F48F7A799F86C563DE5EDAF8BE8A6220106899315714214FBDC466B240833E37029585311F49D8837BCC48A07CA56B505A9D42F14363C3950AB9F768307C2B627FA8DE1263663C251706BFA2F23C5B85CEBC3AFA399FC791D20F1B94C5DFD3E78665FE6846C8E213136E8CA5A24930DAE9EFEBD54616BB3EA08E5FB9346098F42F1593A5D5F1E3B73FE184F5CD674BE7F0C46171E0F83268B3C231C9B552449FA882EAA67EFA52399A3867DFD17248CF52450523777260F4FFE155AE5838A4F883EA27DE00AECE89B984F185A795C34DD71F4F424F919D7F32D48F2FBC9FBE41E631E6443397AA5E75B6AAC98619A9241A8D162DCBFD8EB1056E8ED62A655A2D50FAA162EF86DA4DEA51ECB168193F1C34C558335D27EC393C6AA1B789A23BBC08781011B2FCB2A02A7C33632BB33D1D5FB72E5C9FE9BEDEA1FC4079638D7FD6FFD965CF01ADB026D4638CE0A0D20E47BA0D9AD72ED5136A562AE955374E2A80809076AD250D7E8F59854A820BA342FB92151AE028CF7
25020191025133454 2 6 100 6143 2 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E444466DDD74B 25020200228024919 2 6 100 6143 2 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3C1F349A3
25120191025164443 2 6 100 6143 2 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E44446A87280B 25120200228034540 2 6 100 6143 2 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3C283A14B
25220191025173652 2 6 100 6143 5 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E44446B808D0F 25220200228094553 2 6 100 6143 2 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3C9D8E343
25320191025182518 2 6 100 6143 5 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E44446C72A18F 25320200228122045 2 6 100 6143 2 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3CD2640CB
25420191025210336 2 6 100 6143 2 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E44446F8C312B 25420200304105045 2 6 100 6143 5 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3D032E31F
25520191025210946 2 6 100 6143 2 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E44446FA296A3 25520200304111455 2 6 100 6143 2 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3D0B6997B
25620191025213641 2 6 100 6143 2 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E4444701DD76B 25620200304114010 2 6 100 6143 5 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3D140C2DF
25720191025214012 2 6 100 6143 2 F67B301557C55AD46F6DAA869BA8D47C6F0427967EA2FAA689023BE705A7BE78E0F15EF3CE6E1987046EB157869E4C7E9B8956C77298C890B27625010664B31A3C2D4108DF8C107452C5325FCF42D35352C5266216132537F79E9616490BB1DAA074F6FE115C99BF54BA7F1376DE63D03548B97DA359494AE445FF444A315672671FF890B4042CA45A76D1DCEA9F1B7805A6A041A0C7B034818030D63D48873A210A7F7BBDA29E2E659CC81FFDFA2C5DB73579A55DC72C97D81490D81E432222566C75B7951EFDFB69FE1411F6A5D3184D9506847EA5C4FDA3EB48A02ED763C1943A0CA01BC097DA347A1E7C0B2D2856E101EEC5718B7374148D9C31AEA79593C404A0D6F623A38C893B7D2A838DBF65DFCD08C4EE41F168928339CC53DD56D80606F865EB4A188F69AA6B4B7E8D66F87B76F75C420DD5CF015A46F6EDED8F173FCBF541AFC74615A2D088C366966F504B185AE363A5A61E327CDE1C95DEA36A4B371D92D757555FFDC51438254C94B4F0BC14D7F5C7B4214F704BDC4900E398A8EAC4A5AD3EDA128CEE6F7F480E79F4090AC08195B58EF86DAFA09B498BD8BCEE3D4E24A947DA115B1971725EE052502826583E92B86333D938A30D95C4C2DFBB29EB9092C282C86D2FA3D738BAE93B1A2A3A9A86E4693C5887577E5B6770928111BB4E4F58F9CA1845FEC6F92337C38483E6DBEA1C05986D7350D1C4CB9C5C5C4FF9B261C8F8B4A543071118A58B5AC46EBE92808B17C740B7EEF556F5258F576E50A3F2890BFBE4F29DE83A1984453D3E1CCCDB9E5C90846FC222682F51E1F3C12F51127A9B42F9F7B90C5DECC63F2C53DA5162B14BFB3ECC1D872D035EE58A3927766CCF3BF9A87B03B1E2FB87FE265B77B41FBD397B12BEAA86424D14440B5896E47A6867D054BDAC00C2DB7AB2BF882F07C7B6AC98CC9937E5ADA6AC48C65D5929E614CD71E72EA57EF5DC6B5BF464629A6A3DB4739AA760C059846C971E6C1AD7260622B450EBF395D2E4D0A554DCF3683A3AD6870838CE795435971B6D9380091F17470348F56E4E8E8EB660E60CB4F20BF89DB8B71E44447026470B 25720200304121904 2 6 100 6143 2 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3D2192573
25820191026005042 2 6 100 6143 2 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E05623363 25820200304123148 2 6 100 6143 2 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3D25B4313
25920191026075212 2 6 100 6143 5 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E0E59DF2F 25920200304123330 2 6 100 6143 5 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3D25B8FE7
26020191026134748 2 6 100 6143 2 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E15C2570B 26020200304132134 2 6 100 6143 2 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3D363A65B
26120191026141044 2 6 100 6143 5 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E1634BA8F 26120200304153236 2 6 100 6143 2 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3D651690B
26220191026152621 2 6 100 6143 5 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E17BF036F 26220200304170756 2 6 100 6143 2 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3D8694EF3
26320191026153744 2 6 100 6143 5 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E17F17297 26320200304175528 2 6 100 6143 5 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3D96C51EF
26420191026161846 2 6 100 6143 2 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E18BFBD0B 26420200304175824 2 6 100 6143 5 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3D972E9E7
26520191026183157 2 6 100 6143 2 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E1B69DDFB 26520200304192109 2 6 100 6143 2 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3DB488D03
26620191026183823 2 6 100 6143 2 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E1B80AE83 26620200305083948 2 6 100 6143 5 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3E1E947A7
26720191026184938 2 6 100 6143 2 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E1BAFB703 26720200305094127 2 6 100 6143 5 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3E337E7CF
26820191026215453 2 6 100 6143 2 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E1F57BDAB 26820200305112549 2 6 100 6143 5 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3E5787ED7
26920191027005434 2 6 100 6143 5 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E23020867 26920200305114326 2 6 100 6143 2 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3E5CC07BB
27020191027042709 2 6 100 6143 2 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E27606193 27020200305125429 2 6 100 6143 2 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3E74D719B
27120191027062047 2 6 100 6143 5 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E29A86A4F 27120200305133907 2 6 100 6143 2 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3E837E803
27220191027071632 2 6 100 6143 2 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E2AC3EFB3 27220200305143048 2 6 100 6143 2 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3E9457303
27320191027092825 2 6 100 6143 2 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E2D67AD13 27320200305145210 2 6 100 6143 5 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3E9AE72AF
27420191027104355 2 6 100 6143 5 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E2EE2E4EF 27420200305151101 2 6 100 6143 2 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3EA0B73AB
27520191027105052 2 6 100 6143 5 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E2EFD8C0F 27520200305173752 2 6 100 6143 2 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3ED2976C3
27620191027112952 2 6 100 6143 5 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E2FC1013F 27620200305182017 2 6 100 6143 5 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3EE08294F
27720191027134854 2 6 100 6143 2 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E327D6FDB 27720200305183227 2 6 100 6143 2 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3EE448B23
27820191027141251 2 6 100 6143 5 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E32EE5767 27820200305205936 2 6 100 6143 2 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3F16DF2CB
27920191027160720 2 6 100 6143 2 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E352B49DB 27920200305230320 2 6 100 6143 2 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3F412E2BB
28020191027164412 2 6 100 6143 2 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E35E01D13 28020200306003322 2 6 100 6143 2 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3F5F45EB3
28120191027165524 2 6 100 6143 2 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E36100063 28120200306005357 2 6 100 6143 5 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3F65E4A6F
28220191027184917 2 6 100 6143 5 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E382743F7 28220200306052421 2 6 100 6143 2 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3FC141813
28320191027205847 2 6 100 6143 2 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E3A93CA6B 28320200306071740 2 6 100 6143 5 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B3FE6DC957
28420191027210626 2 6 100 6143 5 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E3AAFB96F 28420200306093244 2 6 100 6143 2 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B4014328CB
28520191027211813 2 6 100 6143 2 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E3AE1DE63 28520200306114315 2 6 100 6143 5 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B403F2AAAF
28620191027213244 2 6 100 6143 5 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E3B21B0FF 28620200306115622 2 6 100 6143 5 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B404300D27
28720191027213714 2 6 100 6143 5 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E3B2E39F7 28720200306115809 2 6 100 6143 5 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B40430C46F
28820191027221420 2 6 100 6143 5 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E3BD9058F 28820200306123631 2 6 100 6143 2 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B404FB7883
28920191028002356 2 6 100 6143 2 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E3E45B4B3 28920200306155841 2 6 100 6143 2 F7E8D9659B6A380E77600433F564EB23739AF15BF41262D170EC8A14567AE58A0465E39314F019B721FE6F113293EF987DCB177ADD8B7C2E547D393B4873E903C4616BA56468A20ABBA70DCDE1E0B5AA01164D612A1996ECA5BF3E7EFF9D94D54066B56057AE148281B5CC663E6D2979FC8B0C1EE9885F58E944E3A28906BBF202A7DB476CA39AD7FF03D3471379305B798A43EE4DBADB53E5994519C2A799D6C52F1FEDD29C8316DA7190A1277702C04BF5DE331D013DD89C24BE50DEDFA9C5E017E873271FB2E270BD563B6F88391EF560307AE8AFEF8290E60FB57ADF3DE8B9062EA0DAC5CC7EE8900EB2F98023B8655CC5646BDF37C43B64EBEC8918E2BABDA6360C74CBBD6E6986B1E506544F7EEBBB275AF18E5A03E704EE4C5459248A23571F724E1DB11F801F2110A813E14DD524358B4F8B0029164C1640D58D6EDC820CA8A8D79C76106BC3CE8345423E640F2E945C24DF557E1203988C085CB62982AC65F567127289B1CD56961305143E5386BCC75454B3C4BB0870E522E38F8C008418897E25F47ED03CF7B10E40EB7CB0153CF6D22CFCD80734FF85266E63FFD3F09B64195C075B50D65F1E0CC73CE5369A6B0E7D4A05F5F4408EBADDB2C21F76A8FF8E800A828AB23089414A6F5DB04F38FD22EA3A4F77F31C35C55D22B38B76DF5C05E6886B8D88C7A014B2A23D4663978363A75C17B97F51BE8C6A55AA6432BE8FBD80220A99DBD897AC1A545690308C5FBED26D5A074CA38D03C5CE904C86DE6BC2B64B4B7E21EB0244FF37EEBB5873296B440B5059816A0E2BA9A7663B84C3ACB607909F4108249F9949FCBFF8FB242012ECFD26C931FB9BE3C93A524C623E41EBF29976B8594688A73CDC36F53B3FC3AB8EA1DEC8A8226DB05D2D90FA523EC62FF03BA659F5D1EB6D6250ECD3E70E06D3E3BD4CCDB78D31BE96F9B8AC679C7341F9E40A3B38727FEC13077393D30C5BE613262C1CCE0C85517CA32D56B4B41CB122DDB39DDFCE5292B2B887554D24616CD1E225D2A79BB6E6FCEB83E231A7DDF680E6A1E3C3E201AB45DA7261D3359434778459F643FA67B4091B35AB
29020191028005652 2 6 100 6143 2 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E3ED864BB 29020200306171429 2 6 100 6143 5 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526BA783157
29120191028014800 2 6 100 6143 2 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E3FC45A63 29120200306192708 2 6 100 6143 2 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526BD730693
29220191028021443 2 6 100 6143 2 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E40396033 29220200306193640 2 6 100 6143 2 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526BDA39813
29320191028041626 2 6 100 6143 2 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E42827263 29320200306200518 2 6 100 6143 5 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526BE4254B7
29420191028054443 2 6 100 6143 5 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E44349037 29420200306224443 2 6 100 6143 2 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526C1D59903
29520191028102149 2 6 100 6143 5 CA8BE2F0F45FB0E6A14758704CB3E994D1CC39121A04E6441CD99BB5147478C39229902EF283CD0F2D7E51EA756E65DF0A2457307EADDDC7715A527708C8EE041DE44AFE8BBFED0C5C7130EF8B89E817469B9768C6C9016C6AF5CD9E6F8563A1837747B61D25872F44D8482C5986C5322ADC7CC68FC4EF025E2CEBB933E78CCBD70E4D223DA4F5F6683F2B7802088333A51F0CEDBA0D15D3B31637778A0F86BE61FDD1392F4CEA58DECFA99D5087F31B753180FBE456959CF7615FCE40B34D0C188B1011C15882B3F62AA4BA89B240B03F285AB0E8AF85C1AA68A127C567E9784B04CB2553AE64CD42BD90F234A86A6D75A2E4EE81343128C786F878C21F60BFDEC0620311448953945CA88637C98E475CF3195404FE19208D6629CCBD307B1B79222A9BCAD27953104E4AF38259A6C2136F82A3A29D339AADECCC09C02ABC0D42A3203CFE7894A1D3CDB5E9D5A7612845279E73D7CC6C7D4D54C2C0AE19C3D1E20354765954DCE9CF70F3CA106B3DEBA6BC882C2575297AA4B98C8E42D8FBD80DDE92F4BF375DD9238AE28337624BCFC76ACE419713B1F7F3CA35D4F9A5565FBC921890A7D652C91AE7E8DA2AD289CB6616BB0F7D3DB181DAA2833F329B38C8E85BA87E19C734C0B77855D89913FF6C527F758FFF3CF33BE405C5C64B1E57E0F4F7EF042B06D871F1AFA181E51ED505622E6FD466705756DE48C81BE86748E337F6A2032C35A88A364A258F39830998AACFF3FA1ADF5960D62FC3D8AFFEE1D7D812F0049EC558DCA9644ED0A7A8BFAB58C2238346F357F6D8649105FBD1C62EB6D3E59E6B3086AEE1BD4C950535303FCE17EB74B764F6D77DDCEF05BF931228DE728001136B56960482A757E3CE14B920BAC72B5C5280EE99BFD689A2439778482A2333979F82987B8C1CA01D894C22CB4321D80A09C164D24DDEA39021F2A6E465138862ECECC2451B83A9478C5728D5FBBDCE0233792B5A27BC7E3E723D12AF6D4A5F6561179D0B6EDD3225F3A80CA5B265672647AA0E4EFBC9DB202632E18B23D57B86AD545668A9B09791FEAF168EC99BAD63ACF8D29CFB4C3E48BF4367 29520200307001909 2 6 100 6143 2 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526C3EFBF1B
29620191028204729 2 6 100 7679 5 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077C56962C57 29620200307015658 2 6 100 6143 5 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526C6174D0F
29720191029074748 2 6 100 7679 5 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077C5E6F0DD7 29720200307031316 2 6 100 6143 2 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526C7C7F63B
29820191029104921 2 6 100 7679 2 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077C601D891B 29820200307045138 2 6 100 6143 2 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526C9FD8D93
29920191029115340 2 6 100 7679 2 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077C607A9FFB 29920200307095446 2 6 100 6143 2 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526D0AC7613
30020191029123325 2 6 100 7679 2 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077C60BE442B 30020200307141219 2 6 100 6143 2 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526D6467463
30120191029222629 2 6 100 7679 2 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077C677977AB 30120200307141549 2 6 100 6143 5 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526D65211FF
30220191030071819 2 6 100 7679 5 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077C6D9F6A8F 30220200307150658 2 6 100 6143 2 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526D7636293
30320191030072920 2 6 100 7679 2 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077C6DB5BB43 30320200307152317 2 6 100 6143 2 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526D7B5C68B
30420191030132209 2 6 100 7679 5 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077C71C9F707 30420200307160123 2 6 100 6143 2 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526D8814873
30520191031002135 2 6 100 7679 5 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077C794F4DFF 30520200307163910 2 6 100 6143 2 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526D9511B93
30620191031064758 2 6 100 7679 5 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077C7DA1F51F 30620200307211457 2 6 100 6143 5 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526DF2AC807
30720191031135153 2 6 100 7679 2 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077C8253C3EB 30720200307221749 2 6 100 6143 5 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526E0727157
30820191031201815 2 6 100 7679 5 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077C869AF937 30820200308011553 2 6 100 6143 5 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526E440D17F
30920191101055219 2 6 100 7679 5 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077C8B9A2CE7 30920200308035011 2 6 100 6143 5 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526E79AC177
31020191101065855 2 6 100 7679 2 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077C8BFA04D3 31020200308050733 2 6 100 6143 5 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526E93970AF
31120191101102927 2 6 100 7679 5 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077C8D496B7F 31120200308080136 2 6 100 6143 2 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526ECED5C7B
31220191101162017 2 6 100 7679 5 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077C90C40057 31220200308102232 2 6 100 6143 2 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526EFDD20EB
31320191102073643 2 6 100 7679 5 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077C993C9B5F 31320200308103627 2 6 100 6143 2 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526F01E61C3
31420191103030038 2 6 100 7679 2 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077CA2EF80F3 31420200308124828 2 6 100 6143 5 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526F2DFA4EF
31520191103040704 2 6 100 7679 2 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077CA394AF43 31520200308152719 2 6 100 6143 5 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526F6336937
31620191103144920 2 6 100 7679 5 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077CAA0B72CF 31620200308160131 2 6 100 6143 2 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526F6E350AB
31720191104025539 2 6 100 7679 5 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077CB128D89F 31720200308164518 2 6 100 6143 5 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526F7C6DB3F
31820191104104258 2 6 100 7679 2 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077CB5D65BBB 31820200308175233 2 6 100 6143 2 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526F910C19B
31920191104110623 2 6 100 7679 2 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077CB609F2DB 31920200308195051 2 6 100 6143 5 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526FB70712F
32020191104113147 2 6 100 7679 5 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077CB6451277 32020200308200253 2 6 100 6143 5 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526FBA523E7
32120191104123416 2 6 100 7679 2 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077CB6E19D8B 32120200308202652 2 6 100 6143 2 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526FC156CA3
32220191104181953 2 6 100 7679 2 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077CBA5B05EB 32220200308203457 2 6 100 6143 2 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526FC390FEB
32320191104182450 2 6 100 7679 2 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077CBA5E4023 32320200308204237 2 6 100 6143 2 F3D69BF99011E14ADF3A48E2FE265E067E9E02590D657BD9B87EF896253C2D3E138DD0B1290D92C9E3897C64E6B5D68CC524F18F073D39A1DC53562764B08A71A10564F53CE21A7428EE3E9801773D4E427909A240AE149342F596C2EF87414DBC486DF52C9F4015FD6B6192B77E91590E85BEDD079D9A5C273ED2544352BF913F1824D15B7CE331B5895E7DABB1E932FE9416CCC087E911E0952AE243F1F2FD43C9FF8B294330ED47B38A400A89144A87E461EC6B561654D6D3B5036A412358D781C6AE935901E71C7051FCA3F4BB0049272AC9F1B43847ED0CCA1F8A4670D2378F1AE1338B00D107ED004FB86168512172360F2D40B8F6BFB9E3721A74F637C916AA434DA842009BF9ABE9CE7942A0394042E338C8E61A032440292472D2B3AF3CC5396C84F14DAC115400D3D2FE72E29DD6FC98968523167E853550F8AF4684E70FF48431950DA69958CB9D3D0A03821249739EB909A2E78EB80F651C0553598DD4345ED9F21436D7A49DFA774F15817980CFD72EEE4620BA713D6BF81A953BABE83F5E292A099F07749ECFF6E2258D48F239DD1D0951DE9C3AE22B00098A510FF5230C8CFFFC8B9BE76F1904A05649FD0766D94038ED4AB901433FEEA667D196B7E0242620C6895725DA782234CDA8D1BD49FA586BEB793D2CBB6D3DC8B8FC18992393CA84923FD17774C82EE67D46050910A8D3B823EB253B9A73DBF388DC91DA2A6F14E92D7DF58E2F7AE3D6DAEF74ACEF7B39F068D4E895E6D0020E84AC0095C0991D11F09E02DC024C22A41809898662B58DE47649736CA74F4AA0A2F2B8E09C3B154D1904B82337881030DD9699BD397BE9CD4DC152BD097F3078B69F47465C4B787232227E4F7966E021FBB3F974182022BC35C415BE677C96B08E1A7DD1C3810EF28AD6975730167365DD8335993F96529F36DE245736358E9F9360EB53494247E382496380A006F077F6A1B42F72ED63B7B22CA0D10A410194A2D714C974142E86DF6639BC37714564983322EF900F0E0CA785907DECF7C9557056E09DC242E10D69C3EB604BF96DC2BBE1F69203EF664EA68CD23526FC547E5B
32420191104230444 2 6 100 7679 5 F606CDE6712F7C0B69FF0872BAB21EBEAEA36BE53D9E03097D8FCE89594F90ECE8E7F1D6CF9D78821617B32D0D7EE46D8BE6EAB108638001AF1F99329DE3588362EA7677FF962ABC2E4B8CFEAB07C8C88774BE6DD9DD6178CFF6A93A51287903937C9E62F060DA0615DCCB8AFE87A19B185B5B85CC3D6821FAEB3D760AF97903A46B12294F2CDEACF50EC055D68FF2DF84EC8355C0D27565AA1CA5F8517E9ACCAFE804EEF55C63B1EAE4484F821A0B92B9E68EB8A894BBB168286BAD5CE14CC2554424585B15DD70D6CE9F63DAED7F902A818B0B1BC303BF059DF20A5D382610F06676243CA0D30C544F5DE34DC983EB51219B268BC0502423BFA9C03338790B480C61230CE1558D500061057F75DCA5E8509DA30A3BBD93CA0E3D88C8CE0B78FDD9E2BFF8F3CDBF7822859E95F9B0FB1F9AC9A89BD44BDFF8012595DF79639BB49A82410F9EC687B50C5456BEA8B477F7BE5027EBD2F3FE3CEA491DF200B7667EBFF889580E47E89DCC13B841BF958FE7575D8DA4BE8D4BF9EE9908A3C8A3F110E477BA188FE1AFDF611D2E0C8D733DABEE52AECC818530C6C92EE28E0CEEEAF2A984C89F7574B5BDE62FB29C4A232642B21BF5ACAF8D6385CFF2CD4B97C48CF5080229EA4EFCAA046787630A134726A7F89BC0AF4DBD09B9BDAC79CDFD8307D39188A59F9C7BB89B45DBFCF6B3AF44A7F3F2A770DB517F7999E4EBFE0FF6F63C91BA8444B666F2300101F91ADA39012DAA4E1E96C87F1F55CC4D663FC455F57E226C8A1A53720BE73B71ABC6DE64ED339A67F883648CC507DE479CE1ACED66FFFE06829861F40E681B333A1FC00EBFB64512ADB25593BFEF23494D70A70478454DEB92ECC86485288F3FF5DE146AA289C864AA55643F278A3E20DF06CC818AA4EBEE29347131087436C57F82693375B776C1EF5D30E637684DBD17EFE4BBBBF7C14DA4FE4BFC86150553D52792D08C2A5EE35916CCBB3C0718BDD3F631B2458DB029FE32644C190492F7167E9B776793FCA8FDAF35084087FADEBA654ECDC24EECADE28B0420A1152CEEAF14628EF69D516E6074D022AE1E3B9B5260C61978E03CFFD8B61087EDBD2A09C35AD250E3265D72D8B12B4F33F490B417118CDC531349C1EA65CE5FC69B712D4228BC39141C7D4871135157CFDA899ECA2AF93FD11DAC3C5F7E77A9FA6B51092FA5F19A2A087EF03F6D2BE7F669F8E1BE72884AA6581CD90CE74141C5B827B3EB04D1F157549B9807F1214A95D5F07FBD3E47A8413EE740071F456B3780CE2E4F48CC2E499A9B4CCBB4B3D363D1FD73AC4A32F83E673AA460A9CF140994664AF6029B0113F522D45CDBFB23EFA647077CBD2DEB3F 32420200309092747 2 6 100 7679 2 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB469CBC603
32520191105091836 2 6 100 7679 2 E67A1BA3549A22E8E5008979650D6C7742558513C6C407C4B9CC87E394E8BF9E5DE7248841813BC72DE6BB56EA086A49C69031D2521204BC8EAA0D85B4F2016A4423BF24CCC2A94B7385325A11ADD338ABEDF6B7C444870597F9B05411942D235EBA9CA762F7F2912C1540063C167FE87E0B38B1A4EEC9FA5096102F114577F8D335448B6D6DB022890A33E378EC2D70BE921782CFA0477575E3D867696F5367011BE83025E30AC6173A33A425A9830BC9BD2BC66F561A8906137F68F4F215EA7D228145E4BD5314FDC950CC9CA61523723A9079E728368A6A96193AE3488D48ED7AD61D5B3EA5E4EB6F599963B6B556C0A1D5F174EF0A99F422E665703A6A4FFC588C73DA3D07C287CD9AC5F1065FFB3FE20CCFDEDDC9BA9A39431A2FFA1F94E8B7A3EBD6FBF64BDF9A9C20577AEA1436F08DEBFBD4FB34769DAB061F7B5661E0CB2E5159FF553D7A1E25C4550725EDE6661B633D564BE574FE007177D8C2A54541780D171EB4D2C30768099B2B8F4E81DC8E9A1DCE9BCEE9E23FE7A6854C9DDA08844559A6622257C856BDD221A29A298F840EABECB4D38013FF3403C634C26FA057BB9201D96E0A7D0C07492D7455A213C44978144BAA88804F5DACD544F8F3213F31B552C7BFB9561E63E8E9CDAA1DC427DCB7358C6ADC03B433413C605C34355DFCB2A32788D1D52041957C4C9B5BA9443DC8B6D1E4F0980C4E81607EAADB26D4352BD5823872AA7496A85242A6FD50FEE7DDA4F920ED3A42FAA475936999A5CE55B96F45637AE551335237E71C9C4D8884ACCFF1A48D02999BAF6D38B42BCA344087BF1A43479C10D76E86071D2DF1D68C2E785B5C1B327EC5B112989AA5F605CC3435AC904760EF369D29BFF2C2B754ACFA892A0647588AC306B5CF44A37EDF22E063B42726EF05EF1B2DF80BE136844F0C7CDFD57FF68E66CEFF27D92C0434F292242B086E2CED408973644E9CDFF0C22462400236FD87E03AE69DBBAD4AE3E2213A8888325A16CC3A83A092D1DFB22CFD7AA5C071016862FEAE4735221C4F5F062B6D82DAA38611B0EB0E2C220F2817C50D4B886C0B408D0A1CB00A0E9F4F3CAA9A1414DFB422DFF4309CE6EA70E0AECDD2AA7ABEF84FC207C8DAAC4B5C95DBD46B954FDBE7F0B270FFBD704E7B542BFB87B231F0805AE6D5253C462C0A43B8E7AF7030BA31768E68744E51EBAE8271242834A9CF88506421B918510AD3710395D58A032D176C45FC935DA0510E88F807B7D7E2129980275B0786859E10E849B5C1DC2EFE247398362F2E868162E7BDF241B3749ACDB2BCB2705026F0A40F6E2A91348DFF8CE4FE28FDAA47AC4A5E45C42FC9A4676A0D8E0D0129FB 32520200309132310 2 6 100 7679 5 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB46CBEF1B7
32620191105100933 2 6 100 7679 5 E67A1BA3549A22E8E5008979650D6C7742558513C6C407C4B9CC87E394E8BF9E5DE7248841813BC72DE6BB56EA086A49C69031D2521204BC8EAA0D85B4F2016A4423BF24CCC2A94B7385325A11ADD338ABEDF6B7C444870597F9B05411942D235EBA9CA762F7F2912C1540063C167FE87E0B38B1A4EEC9FA5096102F114577F8D335448B6D6DB022890A33E378EC2D70BE921782CFA0477575E3D867696F5367011BE83025E30AC6173A33A425A9830BC9BD2BC66F561A8906137F68F4F215EA7D228145E4BD5314FDC950CC9CA61523723A9079E728368A6A96193AE3488D48ED7AD61D5B3EA5E4EB6F599963B6B556C0A1D5F174EF0A99F422E665703A6A4FFC588C73DA3D07C287CD9AC5F1065FFB3FE20CCFDEDDC9BA9A39431A2FFA1F94E8B7A3EBD6FBF64BDF9A9C20577AEA1436F08DEBFBD4FB34769DAB061F7B5661E0CB2E5159FF553D7A1E25C4550725EDE6661B633D564BE574FE007177D8C2A54541780D171EB4D2C30768099B2B8F4E81DC8E9A1DCE9BCEE9E23FE7A6854C9DDA08844559A6622257C856BDD221A29A298F840EABECB4D38013FF3403C634C26FA057BB9201D96E0A7D0C07492D7455A213C44978144BAA88804F5DACD544F8F3213F31B552C7BFB9561E63E8E9CDAA1DC427DCB7358C6ADC03B433413C605C34355DFCB2A32788D1D52041957C4C9B5BA9443DC8B6D1E4F0980C4E81607EAADB26D4352BD5823872AA7496A85242A6FD50FEE7DDA4F920ED3A42FAA475936999A5CE55B96F45637AE551335237E71C9C4D8884ACCFF1A48D02999BAF6D38B42BCA344087BF1A43479C10D76E86071D2DF1D68C2E785B5C1B327EC5B112989AA5F605CC3435AC904760EF369D29BFF2C2B754ACFA892A0647588AC306B5CF44A37EDF22E063B42726EF05EF1B2DF80BE136844F0C7CDFD57FF68E66CEFF27D92C0434F292242B086E2CED408973644E9CDFF0C22462400236FD87E03AE69DBBAD4AE3E2213A8888325A16CC3A83A092D1DFB22CFD7AA5C071016862FEAE4735221C4F5F062B6D82DAA38611B0EB0E2C220F2817C50D4B886C0B408D0A1CB00A0E9F4F3CAA9A1414DFB422DFF4309CE6EA70E0AECDD2AA7ABEF84FC207C8DAAC4B5C95DBD46B954FDBE7F0B270FFBD704E7B542BFB87B231F0805AE6D5253C462C0A43B8E7AF7030BA31768E68744E51EBAE8271242834A9CF88506421B918510AD3710395D58A032D176C45FC935DA0510E88F807B7D7E2129980275B0786859E10E849B5C1DC2EFE247398362F2E868162E7BDF241B3749ACDB2BCB2705026F0A40F6E2A91348DFF8CE4FE28FDAA47AC4A5E45C42FC9A4676A0D8E0D92A647 32620200309170440 2 6 100 7679 5 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB46F794A2F
32720191105234826 2 6 100 7679 2 E67A1BA3549A22E8E5008979650D6C7742558513C6C407C4B9CC87E394E8BF9E5DE7248841813BC72DE6BB56EA086A49C69031D2521204BC8EAA0D85B4F2016A4423BF24CCC2A94B7385325A11ADD338ABEDF6B7C444870597F9B05411942D235EBA9CA762F7F2912C1540063C167FE87E0B38B1A4EEC9FA5096102F114577F8D335448B6D6DB022890A33E378EC2D70BE921782CFA0477575E3D867696F5367011BE83025E30AC6173A33A425A9830BC9BD2BC66F561A8906137F68F4F215EA7D228145E4BD5314FDC950CC9CA61523723A9079E728368A6A96193AE3488D48ED7AD61D5B3EA5E4EB6F599963B6B556C0A1D5F174EF0A99F422E665703A6A4FFC588C73DA3D07C287CD9AC5F1065FFB3FE20CCFDEDDC9BA9A39431A2FFA1F94E8B7A3EBD6FBF64BDF9A9C20577AEA1436F08DEBFBD4FB34769DAB061F7B5661E0CB2E5159FF553D7A1E25C4550725EDE6661B633D564BE574FE007177D8C2A54541780D171EB4D2C30768099B2B8F4E81DC8E9A1DCE9BCEE9E23FE7A6854C9DDA08844559A6622257C856BDD221A29A298F840EABECB4D38013FF3403C634C26FA057BB9201D96E0A7D0C07492D7455A213C44978144BAA88804F5DACD544F8F3213F31B552C7BFB9561E63E8E9CDAA1DC427DCB7358C6ADC03B433413C605C34355DFCB2A32788D1D52041957C4C9B5BA9443DC8B6D1E4F0980C4E81607EAADB26D4352BD5823872AA7496A85242A6FD50FEE7DDA4F920ED3A42FAA475936999A5CE55B96F45637AE551335237E71C9C4D8884ACCFF1A48D02999BAF6D38B42BCA344087BF1A43479C10D76E86071D2DF1D68C2E785B5C1B327EC5B112989AA5F605CC3435AC904760EF369D29BFF2C2B754ACFA892A0647588AC306B5CF44A37EDF22E063B42726EF05EF1B2DF80BE136844F0C7CDFD57FF68E66CEFF27D92C0434F292242B086E2CED408973644E9CDFF0C22462400236FD87E03AE69DBBAD4AE3E2213A8888325A16CC3A83A092D1DFB22CFD7AA5C071016862FEAE4735221C4F5F062B6D82DAA38611B0EB0E2C220F2817C50D4B886C0B408D0A1CB00A0E9F4F3CAA9A1414DFB422DFF4309CE6EA70E0AECDD2AA7ABEF84FC207C8DAAC4B5C95DBD46B954FDBE7F0B270FFBD704E7B542BFB87B231F0805AE6D5253C462C0A43B8E7AF7030BA31768E68744E51EBAE8271242834A9CF88506421B918510AD3710395D58A032D176C45FC935DA0510E88F807B7D7E2129980275B0786859E10E849B5C1DC2EFE247398362F2E868162E7BDF241B3749ACDB2BCB2705026F0A40F6E2A91348DFF8CE4FE28FDAA47AC4A5E45C42FC9A4676A0D8E171AE8D3 32720200309175340 2 6 100 7679 2 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB47010DC3B
32820191106052238 2 6 100 7679 2 E67A1BA3549A22E8E5008979650D6C7742558513C6C407C4B9CC87E394E8BF9E5DE7248841813BC72DE6BB56EA086A49C69031D2521204BC8EAA0D85B4F2016A4423BF24CCC2A94B7385325A11ADD338ABEDF6B7C444870597F9B05411942D235EBA9CA762F7F2912C1540063C167FE87E0B38B1A4EEC9FA5096102F114577F8D335448B6D6DB022890A33E378EC2D70BE921782CFA0477575E3D867696F5367011BE83025E30AC6173A33A425A9830BC9BD2BC66F561A8906137F68F4F215EA7D228145E4BD5314FDC950CC9CA61523723A9079E728368A6A96193AE3488D48ED7AD61D5B3EA5E4EB6F599963B6B556C0A1D5F174EF0A99F422E665703A6A4FFC588C73DA3D07C287CD9AC5F1065FFB3FE20CCFDEDDC9BA9A39431A2FFA1F94E8B7A3EBD6FBF64BDF9A9C20577AEA1436F08DEBFBD4FB34769DAB061F7B5661E0CB2E5159FF553D7A1E25C4550725EDE6661B633D564BE574FE007177D8C2A54541780D171EB4D2C30768099B2B8F4E81DC8E9A1DCE9BCEE9E23FE7A6854C9DDA08844559A6622257C856BDD221A29A298F840EABECB4D38013FF3403C634C26FA057BB9201D96E0A7D0C07492D7455A213C44978144BAA88804F5DACD544F8F3213F31B552C7BFB9561E63E8E9CDAA1DC427DCB7358C6ADC03B433413C605C34355DFCB2A32788D1D52041957C4C9B5BA9443DC8B6D1E4F0980C4E81607EAADB26D4352BD5823872AA7496A85242A6FD50FEE7DDA4F920ED3A42FAA475936999A5CE55B96F45637AE551335237E71C9C4D8884ACCFF1A48D02999BAF6D38B42BCA344087BF1A43479C10D76E86071D2DF1D68C2E785B5C1B327EC5B112989AA5F605CC3435AC904760EF369D29BFF2C2B754ACFA892A0647588AC306B5CF44A37EDF22E063B42726EF05EF1B2DF80BE136844F0C7CDFD57FF68E66CEFF27D92C0434F292242B086E2CED408973644E9CDFF0C22462400236FD87E03AE69DBBAD4AE3E2213A8888325A16CC3A83A092D1DFB22CFD7AA5C071016862FEAE4735221C4F5F062B6D82DAA38611B0EB0E2C220F2817C50D4B886C0B408D0A1CB00A0E9F4F3CAA9A1414DFB422DFF4309CE6EA70E0AECDD2AA7ABEF84FC207C8DAAC4B5C95DBD46B954FDBE7F0B270FFBD704E7B542BFB87B231F0805AE6D5253C462C0A43B8E7AF7030BA31768E68744E51EBAE8271242834A9CF88506421B918510AD3710395D58A032D176C45FC935DA0510E88F807B7D7E2129980275B0786859E10E849B5C1DC2EFE247398362F2E868162E7BDF241B3749ACDB2BCB2705026F0A40F6E2A91348DFF8CE4FE28FDAA47AC4A5E45C42FC9A4676A0D8E1AEC5E43 32820200309202152 2 6 100 7679 5 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB471DCF32F
32920191106071634 2 6 100 7679 2 E67A1BA3549A22E8E5008979650D6C7742558513C6C407C4B9CC87E394E8BF9E5DE7248841813BC72DE6BB56EA086A49C69031D2521204BC8EAA0D85B4F2016A4423BF24CCC2A94B7385325A11ADD338ABEDF6B7C444870597F9B05411942D235EBA9CA762F7F2912C1540063C167FE87E0B38B1A4EEC9FA5096102F114577F8D335448B6D6DB022890A33E378EC2D70BE921782CFA0477575E3D867696F5367011BE83025E30AC6173A33A425A9830BC9BD2BC66F561A8906137F68F4F215EA7D228145E4BD5314FDC950CC9CA61523723A9079E728368A6A96193AE3488D48ED7AD61D5B3EA5E4EB6F599963B6B556C0A1D5F174EF0A99F422E665703A6A4FFC588C73DA3D07C287CD9AC5F1065FFB3FE20CCFDEDDC9BA9A39431A2FFA1F94E8B7A3EBD6FBF64BDF9A9C20577AEA1436F08DEBFBD4FB34769DAB061F7B5661E0CB2E5159FF553D7A1E25C4550725EDE6661B633D564BE574FE007177D8C2A54541780D171EB4D2C30768099B2B8F4E81DC8E9A1DCE9BCEE9E23FE7A6854C9DDA08844559A6622257C856BDD221A29A298F840EABECB4D38013FF3403C634C26FA057BB9201D96E0A7D0C07492D7455A213C44978144BAA88804F5DACD544F8F3213F31B552C7BFB9561E63E8E9CDAA1DC427DCB7358C6ADC03B433413C605C34355DFCB2A32788D1D52041957C4C9B5BA9443DC8B6D1E4F0980C4E81607EAADB26D4352BD5823872AA7496A85242A6FD50FEE7DDA4F920ED3A42FAA475936999A5CE55B96F45637AE551335237E71C9C4D8884ACCFF1A48D02999BAF6D38B42BCA344087BF1A43479C10D76E86071D2DF1D68C2E785B5C1B327EC5B112989AA5F605CC3435AC904760EF369D29BFF2C2B754ACFA892A0647588AC306B5CF44A37EDF22E063B42726EF05EF1B2DF80BE136844F0C7CDFD57FF68E66CEFF27D92C0434F292242B086E2CED408973644E9CDFF0C22462400236FD87E03AE69DBBAD4AE3E2213A8888325A16CC3A83A092D1DFB22CFD7AA5C071016862FEAE4735221C4F5F062B6D82DAA38611B0EB0E2C220F2817C50D4B886C0B408D0A1CB00A0E9F4F3CAA9A1414DFB422DFF4309CE6EA70E0AECDD2AA7ABEF84FC207C8DAAC4B5C95DBD46B954FDBE7F0B270FFBD704E7B542BFB87B231F0805AE6D5253C462C0A43B8E7AF7030BA31768E68744E51EBAE8271242834A9CF88506421B918510AD3710395D58A032D176C45FC935DA0510E88F807B7D7E2129980275B0786859E10E849B5C1DC2EFE247398362F2E868162E7BDF241B3749ACDB2BCB2705026F0A40F6E2A91348DFF8CE4FE28FDAA47AC4A5E45C42FC9A4676A0D8E1C312BF3 32920200309224536 2 6 100 7679 2 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB473A874CB
33020191106092936 2 6 100 7679 2 E67A1BA3549A22E8E5008979650D6C7742558513C6C407C4B9CC87E394E8BF9E5DE7248841813BC72DE6BB56EA086A49C69031D2521204BC8EAA0D85B4F2016A4423BF24CCC2A94B7385325A11ADD338ABEDF6B7C444870597F9B05411942D235EBA9CA762F7F2912C1540063C167FE87E0B38B1A4EEC9FA5096102F114577F8D335448B6D6DB022890A33E378EC2D70BE921782CFA0477575E3D867696F5367011BE83025E30AC6173A33A425A9830BC9BD2BC66F561A8906137F68F4F215EA7D228145E4BD5314FDC950CC9CA61523723A9079E728368A6A96193AE3488D48ED7AD61D5B3EA5E4EB6F599963B6B556C0A1D5F174EF0A99F422E665703A6A4FFC588C73DA3D07C287CD9AC5F1065FFB3FE20CCFDEDDC9BA9A39431A2FFA1F94E8B7A3EBD6FBF64BDF9A9C20577AEA1436F08DEBFBD4FB34769DAB061F7B5661E0CB2E5159FF553D7A1E25C4550725EDE6661B633D564BE574FE007177D8C2A54541780D171EB4D2C30768099B2B8F4E81DC8E9A1DCE9BCEE9E23FE7A6854C9DDA08844559A6622257C856BDD221A29A298F840EABECB4D38013FF3403C634C26FA057BB9201D96E0A7D0C07492D7455A213C44978144BAA88804F5DACD544F8F3213F31B552C7BFB9561E63E8E9CDAA1DC427DCB7358C6ADC03B433413C605C34355DFCB2A32788D1D52041957C4C9B5BA9443DC8B6D1E4F0980C4E81607EAADB26D4352BD5823872AA7496A85242A6FD50FEE7DDA4F920ED3A42FAA475936999A5CE55B96F45637AE551335237E71C9C4D8884ACCFF1A48D02999BAF6D38B42BCA344087BF1A43479C10D76E86071D2DF1D68C2E785B5C1B327EC5B112989AA5F605CC3435AC904760EF369D29BFF2C2B754ACFA892A0647588AC306B5CF44A37EDF22E063B42726EF05EF1B2DF80BE136844F0C7CDFD57FF68E66CEFF27D92C0434F292242B086E2CED408973644E9CDFF0C22462400236FD87E03AE69DBBAD4AE3E2213A8888325A16CC3A83A092D1DFB22CFD7AA5C071016862FEAE4735221C4F5F062B6D82DAA38611B0EB0E2C220F2817C50D4B886C0B408D0A1CB00A0E9F4F3CAA9A1414DFB422DFF4309CE6EA70E0AECDD2AA7ABEF84FC207C8DAAC4B5C95DBD46B954FDBE7F0B270FFBD704E7B542BFB87B231F0805AE6D5253C462C0A43B8E7AF7030BA31768E68744E51EBAE8271242834A9CF88506421B918510AD3710395D58A032D176C45FC935DA0510E88F807B7D7E2129980275B0786859E10E849B5C1DC2EFE247398362F2E868162E7BDF241B3749ACDB2BCB2705026F0A40F6E2A91348DFF8CE4FE28FDAA47AC4A5E45C42FC9A4676A0D8E1DAE275B 33020200310025444 2 6 100 7679 2 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB476C22A9B
33120191106120421 2 6 100 7679 2 E67A1BA3549A22E8E5008979650D6C7742558513C6C407C4B9CC87E394E8BF9E5DE7248841813BC72DE6BB56EA086A49C69031D2521204BC8EAA0D85B4F2016A4423BF24CCC2A94B7385325A11ADD338ABEDF6B7C444870597F9B05411942D235EBA9CA762F7F2912C1540063C167FE87E0B38B1A4EEC9FA5096102F114577F8D335448B6D6DB022890A33E378EC2D70BE921782CFA0477575E3D867696F5367011BE83025E30AC6173A33A425A9830BC9BD2BC66F561A8906137F68F4F215EA7D228145E4BD5314FDC950CC9CA61523723A9079E728368A6A96193AE3488D48ED7AD61D5B3EA5E4EB6F599963B6B556C0A1D5F174EF0A99F422E665703A6A4FFC588C73DA3D07C287CD9AC5F1065FFB3FE20CCFDEDDC9BA9A39431A2FFA1F94E8B7A3EBD6FBF64BDF9A9C20577AEA1436F08DEBFBD4FB34769DAB061F7B5661E0CB2E5159FF553D7A1E25C4550725EDE6661B633D564BE574FE007177D8C2A54541780D171EB4D2C30768099B2B8F4E81DC8E9A1DCE9BCEE9E23FE7A6854C9DDA08844559A6622257C856BDD221A29A298F840EABECB4D38013FF3403C634C26FA057BB9201D96E0A7D0C07492D7455A213C44978144BAA88804F5DACD544F8F3213F31B552C7BFB9561E63E8E9CDAA1DC427DCB7358C6ADC03B433413C605C34355DFCB2A32788D1D52041957C4C9B5BA9443DC8B6D1E4F0980C4E81607EAADB26D4352BD5823872AA7496A85242A6FD50FEE7DDA4F920ED3A42FAA475936999A5CE55B96F45637AE551335237E71C9C4D8884ACCFF1A48D02999BAF6D38B42BCA344087BF1A43479C10D76E86071D2DF1D68C2E785B5C1B327EC5B112989AA5F605CC3435AC904760EF369D29BFF2C2B754ACFA892A0647588AC306B5CF44A37EDF22E063B42726EF05EF1B2DF80BE136844F0C7CDFD57FF68E66CEFF27D92C0434F292242B086E2CED408973644E9CDFF0C22462400236FD87E03AE69DBBAD4AE3E2213A8888325A16CC3A83A092D1DFB22CFD7AA5C071016862FEAE4735221C4F5F062B6D82DAA38611B0EB0E2C220F2817C50D4B886C0B408D0A1CB00A0E9F4F3CAA9A1414DFB422DFF4309CE6EA70E0AECDD2AA7ABEF84FC207C8DAAC4B5C95DBD46B954FDBE7F0B270FFBD704E7B542BFB87B231F0805AE6D5253C462C0A43B8E7AF7030BA31768E68744E51EBAE8271242834A9CF88506421B918510AD3710395D58A032D176C45FC935DA0510E88F807B7D7E2129980275B0786859E10E849B5C1DC2EFE247398362F2E868162E7BDF241B3749ACDB2BCB2705026F0A40F6E2A91348DFF8CE4FE28FDAA47AC4A5E45C42FC9A4676A0D8E1F6DBD13 33120200310062019 2 6 100 7679 5 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB479486FC7
33220191106122445 2 6 100 7679 2 E67A1BA3549A22E8E5008979650D6C7742558513C6C407C4B9CC87E394E8BF9E5DE7248841813BC72DE6BB56EA086A49C69031D2521204BC8EAA0D85B4F2016A4423BF24CCC2A94B7385325A11ADD338ABEDF6B7C444870597F9B05411942D235EBA9CA762F7F2912C1540063C167FE87E0B38B1A4EEC9FA5096102F114577F8D335448B6D6DB022890A33E378EC2D70BE921782CFA0477575E3D867696F5367011BE83025E30AC6173A33A425A9830BC9BD2BC66F561A8906137F68F4F215EA7D228145E4BD5314FDC950CC9CA61523723A9079E728368A6A96193AE3488D48ED7AD61D5B3EA5E4EB6F599963B6B556C0A1D5F174EF0A99F422E665703A6A4FFC588C73DA3D07C287CD9AC5F1065FFB3FE20CCFDEDDC9BA9A39431A2FFA1F94E8B7A3EBD6FBF64BDF9A9C20577AEA1436F08DEBFBD4FB34769DAB061F7B5661E0CB2E5159FF553D7A1E25C4550725EDE6661B633D564BE574FE007177D8C2A54541780D171EB4D2C30768099B2B8F4E81DC8E9A1DCE9BCEE9E23FE7A6854C9DDA08844559A6622257C856BDD221A29A298F840EABECB4D38013FF3403C634C26FA057BB9201D96E0A7D0C07492D7455A213C44978144BAA88804F5DACD544F8F3213F31B552C7BFB9561E63E8E9CDAA1DC427DCB7358C6ADC03B433413C605C34355DFCB2A32788D1D52041957C4C9B5BA9443DC8B6D1E4F0980C4E81607EAADB26D4352BD5823872AA7496A85242A6FD50FEE7DDA4F920ED3A42FAA475936999A5CE55B96F45637AE551335237E71C9C4D8884ACCFF1A48D02999BAF6D38B42BCA344087BF1A43479C10D76E86071D2DF1D68C2E785B5C1B327EC5B112989AA5F605CC3435AC904760EF369D29BFF2C2B754ACFA892A0647588AC306B5CF44A37EDF22E063B42726EF05EF1B2DF80BE136844F0C7CDFD57FF68E66CEFF27D92C0434F292242B086E2CED408973644E9CDFF0C22462400236FD87E03AE69DBBAD4AE3E2213A8888325A16CC3A83A092D1DFB22CFD7AA5C071016862FEAE4735221C4F5F062B6D82DAA38611B0EB0E2C220F2817C50D4B886C0B408D0A1CB00A0E9F4F3CAA9A1414DFB422DFF4309CE6EA70E0AECDD2AA7ABEF84FC207C8DAAC4B5C95DBD46B954FDBE7F0B270FFBD704E7B542BFB87B231F0805AE6D5253C462C0A43B8E7AF7030BA31768E68744E51EBAE8271242834A9CF88506421B918510AD3710395D58A032D176C45FC935DA0510E88F807B7D7E2129980275B0786859E10E849B5C1DC2EFE247398362F2E868162E7BDF241B3749ACDB2BCB2705026F0A40F6E2A91348DFF8CE4FE28FDAA47AC4A5E45C42FC9A4676A0D8E1FA1E1AB 33220200310082852 2 6 100 7679 2 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB47AD3C293
33320191107014126 2 6 100 7679 5 E67A1BA3549A22E8E5008979650D6C7742558513C6C407C4B9CC87E394E8BF9E5DE7248841813BC72DE6BB56EA086A49C69031D2521204BC8EAA0D85B4F2016A4423BF24CCC2A94B7385325A11ADD338ABEDF6B7C444870597F9B05411942D235EBA9CA762F7F2912C1540063C167FE87E0B38B1A4EEC9FA5096102F114577F8D335448B6D6DB022890A33E378EC2D70BE921782CFA0477575E3D867696F5367011BE83025E30AC6173A33A425A9830BC9BD2BC66F561A8906137F68F4F215EA7D228145E4BD5314FDC950CC9CA61523723A9079E728368A6A96193AE3488D48ED7AD61D5B3EA5E4EB6F599963B6B556C0A1D5F174EF0A99F422E665703A6A4FFC588C73DA3D07C287CD9AC5F1065FFB3FE20CCFDEDDC9BA9A39431A2FFA1F94E8B7A3EBD6FBF64BDF9A9C20577AEA1436F08DEBFBD4FB34769DAB061F7B5661E0CB2E5159FF553D7A1E25C4550725EDE6661B633D564BE574FE007177D8C2A54541780D171EB4D2C30768099B2B8F4E81DC8E9A1DCE9BCEE9E23FE7A6854C9DDA08844559A6622257C856BDD221A29A298F840EABECB4D38013FF3403C634C26FA057BB9201D96E0A7D0C07492D7455A213C44978144BAA88804F5DACD544F8F3213F31B552C7BFB9561E63E8E9CDAA1DC427DCB7358C6ADC03B433413C605C34355DFCB2A32788D1D52041957C4C9B5BA9443DC8B6D1E4F0980C4E81607EAADB26D4352BD5823872AA7496A85242A6FD50FEE7DDA4F920ED3A42FAA475936999A5CE55B96F45637AE551335237E71C9C4D8884ACCFF1A48D02999BAF6D38B42BCA344087BF1A43479C10D76E86071D2DF1D68C2E785B5C1B327EC5B112989AA5F605CC3435AC904760EF369D29BFF2C2B754ACFA892A0647588AC306B5CF44A37EDF22E063B42726EF05EF1B2DF80BE136844F0C7CDFD57FF68E66CEFF27D92C0434F292242B086E2CED408973644E9CDFF0C22462400236FD87E03AE69DBBAD4AE3E2213A8888325A16CC3A83A092D1DFB22CFD7AA5C071016862FEAE4735221C4F5F062B6D82DAA38611B0EB0E2C220F2817C50D4B886C0B408D0A1CB00A0E9F4F3CAA9A1414DFB422DFF4309CE6EA70E0AECDD2AA7ABEF84FC207C8DAAC4B5C95DBD46B954FDBE7F0B270FFBD704E7B542BFB87B231F0805AE6D5253C462C0A43B8E7AF7030BA31768E68744E51EBAE8271242834A9CF88506421B918510AD3710395D58A032D176C45FC935DA0510E88F807B7D7E2129980275B0786859E10E849B5C1DC2EFE247398362F2E868162E7BDF241B3749ACDB2BCB2705026F0A40F6E2A91348DFF8CE4FE28FDAA47AC4A5E45C42FC9A4676A0D8E28AC4177 33320200310111216 2 6 100 7679 2 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB47CD0BD7B
33420191107144145 2 6 100 7679 5 E67A1BA3549A22E8E5008979650D6C7742558513C6C407C4B9CC87E394E8BF9E5DE7248841813BC72DE6BB56EA086A49C69031D2521204BC8EAA0D85B4F2016A4423BF24CCC2A94B7385325A11ADD338ABEDF6B7C444870597F9B05411942D235EBA9CA762F7F2912C1540063C167FE87E0B38B1A4EEC9FA5096102F114577F8D335448B6D6DB022890A33E378EC2D70BE921782CFA0477575E3D867696F5367011BE83025E30AC6173A33A425A9830BC9BD2BC66F561A8906137F68F4F215EA7D228145E4BD5314FDC950CC9CA61523723A9079E728368A6A96193AE3488D48ED7AD61D5B3EA5E4EB6F599963B6B556C0A1D5F174EF0A99F422E665703A6A4FFC588C73DA3D07C287CD9AC5F1065FFB3FE20CCFDEDDC9BA9A39431A2FFA1F94E8B7A3EBD6FBF64BDF9A9C20577AEA1436F08DEBFBD4FB34769DAB061F7B5661E0CB2E5159FF553D7A1E25C4550725EDE6661B633D564BE574FE007177D8C2A54541780D171EB4D2C30768099B2B8F4E81DC8E9A1DCE9BCEE9E23FE7A6854C9DDA08844559A6622257C856BDD221A29A298F840EABECB4D38013FF3403C634C26FA057BB9201D96E0A7D0C07492D7455A213C44978144BAA88804F5DACD544F8F3213F31B552C7BFB9561E63E8E9CDAA1DC427DCB7358C6ADC03B433413C605C34355DFCB2A32788D1D52041957C4C9B5BA9443DC8B6D1E4F0980C4E81607EAADB26D4352BD5823872AA7496A85242A6FD50FEE7DDA4F920ED3A42FAA475936999A5CE55B96F45637AE551335237E71C9C4D8884ACCFF1A48D02999BAF6D38B42BCA344087BF1A43479C10D76E86071D2DF1D68C2E785B5C1B327EC5B112989AA5F605CC3435AC904760EF369D29BFF2C2B754ACFA892A0647588AC306B5CF44A37EDF22E063B42726EF05EF1B2DF80BE136844F0C7CDFD57FF68E66CEFF27D92C0434F292242B086E2CED408973644E9CDFF0C22462400236FD87E03AE69DBBAD4AE3E2213A8888325A16CC3A83A092D1DFB22CFD7AA5C071016862FEAE4735221C4F5F062B6D82DAA38611B0EB0E2C220F2817C50D4B886C0B408D0A1CB00A0E9F4F3CAA9A1414DFB422DFF4309CE6EA70E0AECDD2AA7ABEF84FC207C8DAAC4B5C95DBD46B954FDBE7F0B270FFBD704E7B542BFB87B231F0805AE6D5253C462C0A43B8E7AF7030BA31768E68744E51EBAE8271242834A9CF88506421B918510AD3710395D58A032D176C45FC935DA0510E88F807B7D7E2129980275B0786859E10E849B5C1DC2EFE247398362F2E868162E7BDF241B3749ACDB2BCB2705026F0A40F6E2A91348DFF8CE4FE28FDAA47AC4A5E45C42FC9A4676A0D8E31696647 33420200310180600 2 6 100 7679 2 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB481D17503
33520191107152955 2 6 100 7679 5 E67A1BA3549A22E8E5008979650D6C7742558513C6C407C4B9CC87E394E8BF9E5DE7248841813BC72DE6BB56EA086A49C69031D2521204BC8EAA0D85B4F2016A4423BF24CCC2A94B7385325A11ADD338ABEDF6B7C444870597F9B05411942D235EBA9CA762F7F2912C1540063C167FE87E0B38B1A4EEC9FA5096102F114577F8D335448B6D6DB022890A33E378EC2D70BE921782CFA0477575E3D867696F5367011BE83025E30AC6173A33A425A9830BC9BD2BC66F561A8906137F68F4F215EA7D228145E4BD5314FDC950CC9CA61523723A9079E728368A6A96193AE3488D48ED7AD61D5B3EA5E4EB6F599963B6B556C0A1D5F174EF0A99F422E665703A6A4FFC588C73DA3D07C287CD9AC5F1065FFB3FE20CCFDEDDC9BA9A39431A2FFA1F94E8B7A3EBD6FBF64BDF9A9C20577AEA1436F08DEBFBD4FB34769DAB061F7B5661E0CB2E5159FF553D7A1E25C4550725EDE6661B633D564BE574FE007177D8C2A54541780D171EB4D2C30768099B2B8F4E81DC8E9A1DCE9BCEE9E23FE7A6854C9DDA08844559A6622257C856BDD221A29A298F840EABECB4D38013FF3403C634C26FA057BB9201D96E0A7D0C07492D7455A213C44978144BAA88804F5DACD544F8F3213F31B552C7BFB9561E63E8E9CDAA1DC427DCB7358C6ADC03B433413C605C34355DFCB2A32788D1D52041957C4C9B5BA9443DC8B6D1E4F0980C4E81607EAADB26D4352BD5823872AA7496A85242A6FD50FEE7DDA4F920ED3A42FAA475936999A5CE55B96F45637AE551335237E71C9C4D8884ACCFF1A48D02999BAF6D38B42BCA344087BF1A43479C10D76E86071D2DF1D68C2E785B5C1B327EC5B112989AA5F605CC3435AC904760EF369D29BFF2C2B754ACFA892A0647588AC306B5CF44A37EDF22E063B42726EF05EF1B2DF80BE136844F0C7CDFD57FF68E66CEFF27D92C0434F292242B086E2CED408973644E9CDFF0C22462400236FD87E03AE69DBBAD4AE3E2213A8888325A16CC3A83A092D1DFB22CFD7AA5C071016862FEAE4735221C4F5F062B6D82DAA38611B0EB0E2C220F2817C50D4B886C0B408D0A1CB00A0E9F4F3CAA9A1414DFB422DFF4309CE6EA70E0AECDD2AA7ABEF84FC207C8DAAC4B5C95DBD46B954FDBE7F0B270FFBD704E7B542BFB87B231F0805AE6D5253C462C0A43B8E7AF7030BA31768E68744E51EBAE8271242834A9CF88506421B918510AD3710395D58A032D176C45FC935DA0510E88F807B7D7E2129980275B0786859E10E849B5C1DC2EFE247398362F2E868162E7BDF241B3749ACDB2BCB2705026F0A40F6E2A91348DFF8CE4FE28FDAA47AC4A5E45C42FC9A4676A0D8E31EAE00F 33520200311015151 2 6 100 7679 2 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB486E03C8B
33620191107170414 2 6 100 7679 2 E67A1BA3549A22E8E5008979650D6C7742558513C6C407C4B9CC87E394E8BF9E5DE7248841813BC72DE6BB56EA086A49C69031D2521204BC8EAA0D85B4F2016A4423BF24CCC2A94B7385325A11ADD338ABEDF6B7C444870597F9B05411942D235EBA9CA762F7F2912C1540063C167FE87E0B38B1A4EEC9FA5096102F114577F8D335448B6D6DB022890A33E378EC2D70BE921782CFA0477575E3D867696F5367011BE83025E30AC6173A33A425A9830BC9BD2BC66F561A8906137F68F4F215EA7D228145E4BD5314FDC950CC9CA61523723A9079E728368A6A96193AE3488D48ED7AD61D5B3EA5E4EB6F599963B6B556C0A1D5F174EF0A99F422E665703A6A4FFC588C73DA3D07C287CD9AC5F1065FFB3FE20CCFDEDDC9BA9A39431A2FFA1F94E8B7A3EBD6FBF64BDF9A9C20577AEA1436F08DEBFBD4FB34769DAB061F7B5661E0CB2E5159FF553D7A1E25C4550725EDE6661B633D564BE574FE007177D8C2A54541780D171EB4D2C30768099B2B8F4E81DC8E9A1DCE9BCEE9E23FE7A6854C9DDA08844559A6622257C856BDD221A29A298F840EABECB4D38013FF3403C634C26FA057BB9201D96E0A7D0C07492D7455A213C44978144BAA88804F5DACD544F8F3213F31B552C7BFB9561E63E8E9CDAA1DC427DCB7358C6ADC03B433413C605C34355DFCB2A32788D1D52041957C4C9B5BA9443DC8B6D1E4F0980C4E81607EAADB26D4352BD5823872AA7496A85242A6FD50FEE7DDA4F920ED3A42FAA475936999A5CE55B96F45637AE551335237E71C9C4D8884ACCFF1A48D02999BAF6D38B42BCA344087BF1A43479C10D76E86071D2DF1D68C2E785B5C1B327EC5B112989AA5F605CC3435AC904760EF369D29BFF2C2B754ACFA892A0647588AC306B5CF44A37EDF22E063B42726EF05EF1B2DF80BE136844F0C7CDFD57FF68E66CEFF27D92C0434F292242B086E2CED408973644E9CDFF0C22462400236FD87E03AE69DBBAD4AE3E2213A8888325A16CC3A83A092D1DFB22CFD7AA5C071016862FEAE4735221C4F5F062B6D82DAA38611B0EB0E2C220F2817C50D4B886C0B408D0A1CB00A0E9F4F3CAA9A1414DFB422DFF4309CE6EA70E0AECDD2AA7ABEF84FC207C8DAAC4B5C95DBD46B954FDBE7F0B270FFBD704E7B542BFB87B231F0805AE6D5253C462C0A43B8E7AF7030BA31768E68744E51EBAE8271242834A9CF88506421B918510AD3710395D58A032D176C45FC935DA0510E88F807B7D7E2129980275B0786859E10E849B5C1DC2EFE247398362F2E868162E7BDF241B3749ACDB2BCB2705026F0A40F6E2A91348DFF8CE4FE28FDAA47AC4A5E45C42FC9A4676A0D8E32F54973 33620200311023932 2 6 100 7679 5 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB487717827
33720191107235721 2 6 100 7679 5 E67A1BA3549A22E8E5008979650D6C7742558513C6C407C4B9CC87E394E8BF9E5DE7248841813BC72DE6BB56EA086A49C69031D2521204BC8EAA0D85B4F2016A4423BF24CCC2A94B7385325A11ADD338ABEDF6B7C444870597F9B05411942D235EBA9CA762F7F2912C1540063C167FE87E0B38B1A4EEC9FA5096102F114577F8D335448B6D6DB022890A33E378EC2D70BE921782CFA0477575E3D867696F5367011BE83025E30AC6173A33A425A9830BC9BD2BC66F561A8906137F68F4F215EA7D228145E4BD5314FDC950CC9CA61523723A9079E728368A6A96193AE3488D48ED7AD61D5B3EA5E4EB6F599963B6B556C0A1D5F174EF0A99F422E665703A6A4FFC588C73DA3D07C287CD9AC5F1065FFB3FE20CCFDEDDC9BA9A39431A2FFA1F94E8B7A3EBD6FBF64BDF9A9C20577AEA1436F08DEBFBD4FB34769DAB061F7B5661E0CB2E5159FF553D7A1E25C4550725EDE6661B633D564BE574FE007177D8C2A54541780D171EB4D2C30768099B2B8F4E81DC8E9A1DCE9BCEE9E23FE7A6854C9DDA08844559A6622257C856BDD221A29A298F840EABECB4D38013FF3403C634C26FA057BB9201D96E0A7D0C07492D7455A213C44978144BAA88804F5DACD544F8F3213F31B552C7BFB9561E63E8E9CDAA1DC427DCB7358C6ADC03B433413C605C34355DFCB2A32788D1D52041957C4C9B5BA9443DC8B6D1E4F0980C4E81607EAADB26D4352BD5823872AA7496A85242A6FD50FEE7DDA4F920ED3A42FAA475936999A5CE55B96F45637AE551335237E71C9C4D8884ACCFF1A48D02999BAF6D38B42BCA344087BF1A43479C10D76E86071D2DF1D68C2E785B5C1B327EC5B112989AA5F605CC3435AC904760EF369D29BFF2C2B754ACFA892A0647588AC306B5CF44A37EDF22E063B42726EF05EF1B2DF80BE136844F0C7CDFD57FF68E66CEFF27D92C0434F292242B086E2CED408973644E9CDFF0C22462400236FD87E03AE69DBBAD4AE3E2213A8888325A16CC3A83A092D1DFB22CFD7AA5C071016862FEAE4735221C4F5F062B6D82DAA38611B0EB0E2C220F2817C50D4B886C0B408D0A1CB00A0E9F4F3CAA9A1414DFB422DFF4309CE6EA70E0AECDD2AA7ABEF84FC207C8DAAC4B5C95DBD46B954FDBE7F0B270FFBD704E7B542BFB87B231F0805AE6D5253C462C0A43B8E7AF7030BA31768E68744E51EBAE8271242834A9CF88506421B918510AD3710395D58A032D176C45FC935DA0510E88F807B7D7E2129980275B0786859E10E849B5C1DC2EFE247398362F2E868162E7BDF241B3749ACDB2BCB2705026F0A40F6E2A91348DFF8CE4FE28FDAA47AC4A5E45C42FC9A4676A0D8E37818C57 33720200311110336 2 6 100 7679 2 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB48D9BBC13
33820191108191832 2 6 100 7679 2 E67A1BA3549A22E8E5008979650D6C7742558513C6C407C4B9CC87E394E8BF9E5DE7248841813BC72DE6BB56EA086A49C69031D2521204BC8EAA0D85B4F2016A4423BF24CCC2A94B7385325A11ADD338ABEDF6B7C444870597F9B05411942D235EBA9CA762F7F2912C1540063C167FE87E0B38B1A4EEC9FA5096102F114577F8D335448B6D6DB022890A33E378EC2D70BE921782CFA0477575E3D867696F5367011BE83025E30AC6173A33A425A9830BC9BD2BC66F561A8906137F68F4F215EA7D228145E4BD5314FDC950CC9CA61523723A9079E728368A6A96193AE3488D48ED7AD61D5B3EA5E4EB6F599963B6B556C0A1D5F174EF0A99F422E665703A6A4FFC588C73DA3D07C287CD9AC5F1065FFB3FE20CCFDEDDC9BA9A39431A2FFA1F94E8B7A3EBD6FBF64BDF9A9C20577AEA1436F08DEBFBD4FB34769DAB061F7B5661E0CB2E5159FF553D7A1E25C4550725EDE6661B633D564BE574FE007177D8C2A54541780D171EB4D2C30768099B2B8F4E81DC8E9A1DCE9BCEE9E23FE7A6854C9DDA08844559A6622257C856BDD221A29A298F840EABECB4D38013FF3403C634C26FA057BB9201D96E0A7D0C07492D7455A213C44978144BAA88804F5DACD544F8F3213F31B552C7BFB9561E63E8E9CDAA1DC427DCB7358C6ADC03B433413C605C34355DFCB2A32788D1D52041957C4C9B5BA9443DC8B6D1E4F0980C4E81607EAADB26D4352BD5823872AA7496A85242A6FD50FEE7DDA4F920ED3A42FAA475936999A5CE55B96F45637AE551335237E71C9C4D8884ACCFF1A48D02999BAF6D38B42BCA344087BF1A43479C10D76E86071D2DF1D68C2E785B5C1B327EC5B112989AA5F605CC3435AC904760EF369D29BFF2C2B754ACFA892A0647588AC306B5CF44A37EDF22E063B42726EF05EF1B2DF80BE136844F0C7CDFD57FF68E66CEFF27D92C0434F292242B086E2CED408973644E9CDFF0C22462400236FD87E03AE69DBBAD4AE3E2213A8888325A16CC3A83A092D1DFB22CFD7AA5C071016862FEAE4735221C4F5F062B6D82DAA38611B0EB0E2C220F2817C50D4B886C0B408D0A1CB00A0E9F4F3CAA9A1414DFB422DFF4309CE6EA70E0AECDD2AA7ABEF84FC207C8DAAC4B5C95DBD46B954FDBE7F0B270FFBD704E7B542BFB87B231F0805AE6D5253C462C0A43B8E7AF7030BA31768E68744E51EBAE8271242834A9CF88506421B918510AD3710395D58A032D176C45FC935DA0510E88F807B7D7E2129980275B0786859E10E849B5C1DC2EFE247398362F2E868162E7BDF241B3749ACDB2BCB2705026F0A40F6E2A91348DFF8CE4FE28FDAA47AC4A5E45C42FC9A4676A0D8E4357C06B 33820200311182436 2 6 100 7679 2 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB492FC11BB
33920191108224321 2 6 100 7679 5 E67A1BA3549A22E8E5008979650D6C7742558513C6C407C4B9CC87E394E8BF9E5DE7248841813BC72DE6BB56EA086A49C69031D2521204BC8EAA0D85B4F2016A4423BF24CCC2A94B7385325A11ADD338ABEDF6B7C444870597F9B05411942D235EBA9CA762F7F2912C1540063C167FE87E0B38B1A4EEC9FA5096102F114577F8D335448B6D6DB022890A33E378EC2D70BE921782CFA0477575E3D867696F5367011BE83025E30AC6173A33A425A9830BC9BD2BC66F561A8906137F68F4F215EA7D228145E4BD5314FDC950CC9CA61523723A9079E728368A6A96193AE3488D48ED7AD61D5B3EA5E4EB6F599963B6B556C0A1D5F174EF0A99F422E665703A6A4FFC588C73DA3D07C287CD9AC5F1065FFB3FE20CCFDEDDC9BA9A39431A2FFA1F94E8B7A3EBD6FBF64BDF9A9C20577AEA1436F08DEBFBD4FB34769DAB061F7B5661E0CB2E5159FF553D7A1E25C4550725EDE6661B633D564BE574FE007177D8C2A54541780D171EB4D2C30768099B2B8F4E81DC8E9A1DCE9BCEE9E23FE7A6854C9DDA08844559A6622257C856BDD221A29A298F840EABECB4D38013FF3403C634C26FA057BB9201D96E0A7D0C07492D7455A213C44978144BAA88804F5DACD544F8F3213F31B552C7BFB9561E63E8E9CDAA1DC427DCB7358C6ADC03B433413C605C34355DFCB2A32788D1D52041957C4C9B5BA9443DC8B6D1E4F0980C4E81607EAADB26D4352BD5823872AA7496A85242A6FD50FEE7DDA4F920ED3A42FAA475936999A5CE55B96F45637AE551335237E71C9C4D8884ACCFF1A48D02999BAF6D38B42BCA344087BF1A43479C10D76E86071D2DF1D68C2E785B5C1B327EC5B112989AA5F605CC3435AC904760EF369D29BFF2C2B754ACFA892A0647588AC306B5CF44A37EDF22E063B42726EF05EF1B2DF80BE136844F0C7CDFD57FF68E66CEFF27D92C0434F292242B086E2CED408973644E9CDFF0C22462400236FD87E03AE69DBBAD4AE3E2213A8888325A16CC3A83A092D1DFB22CFD7AA5C071016862FEAE4735221C4F5F062B6D82DAA38611B0EB0E2C220F2817C50D4B886C0B408D0A1CB00A0E9F4F3CAA9A1414DFB422DFF4309CE6EA70E0AECDD2AA7ABEF84FC207C8DAAC4B5C95DBD46B954FDBE7F0B270FFBD704E7B542BFB87B231F0805AE6D5253C462C0A43B8E7AF7030BA31768E68744E51EBAE8271242834A9CF88506421B918510AD3710395D58A032D176C45FC935DA0510E88F807B7D7E2129980275B0786859E10E849B5C1DC2EFE247398362F2E868162E7BDF241B3749ACDB2BCB2705026F0A40F6E2A91348DFF8CE4FE28FDAA47AC4A5E45C42FC9A4676A0D8E458BA9C7 33920200312191341 2 6 100 7679 5 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB4A4A6DB8F
34020191109135352 2 6 100 7679 5 E67A1BA3549A22E8E5008979650D6C7742558513C6C407C4B9CC87E394E8BF9E5DE7248841813BC72DE6BB56EA086A49C69031D2521204BC8EAA0D85B4F2016A4423BF24CCC2A94B7385325A11ADD338ABEDF6B7C444870597F9B05411942D235EBA9CA762F7F2912C1540063C167FE87E0B38B1A4EEC9FA5096102F114577F8D335448B6D6DB022890A33E378EC2D70BE921782CFA0477575E3D867696F5367011BE83025E30AC6173A33A425A9830BC9BD2BC66F561A8906137F68F4F215EA7D228145E4BD5314FDC950CC9CA61523723A9079E728368A6A96193AE3488D48ED7AD61D5B3EA5E4EB6F599963B6B556C0A1D5F174EF0A99F422E665703A6A4FFC588C73DA3D07C287CD9AC5F1065FFB3FE20CCFDEDDC9BA9A39431A2FFA1F94E8B7A3EBD6FBF64BDF9A9C20577AEA1436F08DEBFBD4FB34769DAB061F7B5661E0CB2E5159FF553D7A1E25C4550725EDE6661B633D564BE574FE007177D8C2A54541780D171EB4D2C30768099B2B8F4E81DC8E9A1DCE9BCEE9E23FE7A6854C9DDA08844559A6622257C856BDD221A29A298F840EABECB4D38013FF3403C634C26FA057BB9201D96E0A7D0C07492D7455A213C44978144BAA88804F5DACD544F8F3213F31B552C7BFB9561E63E8E9CDAA1DC427DCB7358C6ADC03B433413C605C34355DFCB2A32788D1D52041957C4C9B5BA9443DC8B6D1E4F0980C4E81607EAADB26D4352BD5823872AA7496A85242A6FD50FEE7DDA4F920ED3A42FAA475936999A5CE55B96F45637AE551335237E71C9C4D8884ACCFF1A48D02999BAF6D38B42BCA344087BF1A43479C10D76E86071D2DF1D68C2E785B5C1B327EC5B112989AA5F605CC3435AC904760EF369D29BFF2C2B754ACFA892A0647588AC306B5CF44A37EDF22E063B42726EF05EF1B2DF80BE136844F0C7CDFD57FF68E66CEFF27D92C0434F292242B086E2CED408973644E9CDFF0C22462400236FD87E03AE69DBBAD4AE3E2213A8888325A16CC3A83A092D1DFB22CFD7AA5C071016862FEAE4735221C4F5F062B6D82DAA38611B0EB0E2C220F2817C50D4B886C0B408D0A1CB00A0E9F4F3CAA9A1414DFB422DFF4309CE6EA70E0AECDD2AA7ABEF84FC207C8DAAC4B5C95DBD46B954FDBE7F0B270FFBD704E7B542BFB87B231F0805AE6D5253C462C0A43B8E7AF7030BA31768E68744E51EBAE8271242834A9CF88506421B918510AD3710395D58A032D176C45FC935DA0510E88F807B7D7E2129980275B0786859E10E849B5C1DC2EFE247398362F2E868162E7BDF241B3749ACDB2BCB2705026F0A40F6E2A91348DFF8CE4FE28FDAA47AC4A5E45C42FC9A4676A0D8E4D13F4BF 34020200312210435 2 6 100 7679 5 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB4A5F07D3F
34120191109143346 2 6 100 7679 2 E67A1BA3549A22E8E5008979650D6C7742558513C6C407C4B9CC87E394E8BF9E5DE7248841813BC72DE6BB56EA086A49C69031D2521204BC8EAA0D85B4F2016A4423BF24CCC2A94B7385325A11ADD338ABEDF6B7C444870597F9B05411942D235EBA9CA762F7F2912C1540063C167FE87E0B38B1A4EEC9FA5096102F114577F8D335448B6D6DB022890A33E378EC2D70BE921782CFA0477575E3D867696F5367011BE83025E30AC6173A33A425A9830BC9BD2BC66F561A8906137F68F4F215EA7D228145E4BD5314FDC950CC9CA61523723A9079E728368A6A96193AE3488D48ED7AD61D5B3EA5E4EB6F599963B6B556C0A1D5F174EF0A99F422E665703A6A4FFC588C73DA3D07C287CD9AC5F1065FFB3FE20CCFDEDDC9BA9A39431A2FFA1F94E8B7A3EBD6FBF64BDF9A9C20577AEA1436F08DEBFBD4FB34769DAB061F7B5661E0CB2E5159FF553D7A1E25C4550725EDE6661B633D564BE574FE007177D8C2A54541780D171EB4D2C30768099B2B8F4E81DC8E9A1DCE9BCEE9E23FE7A6854C9DDA08844559A6622257C856BDD221A29A298F840EABECB4D38013FF3403C634C26FA057BB9201D96E0A7D0C07492D7455A213C44978144BAA88804F5DACD544F8F3213F31B552C7BFB9561E63E8E9CDAA1DC427DCB7358C6ADC03B433413C605C34355DFCB2A32788D1D52041957C4C9B5BA9443DC8B6D1E4F0980C4E81607EAADB26D4352BD5823872AA7496A85242A6FD50FEE7DDA4F920ED3A42FAA475936999A5CE55B96F45637AE551335237E71C9C4D8884ACCFF1A48D02999BAF6D38B42BCA344087BF1A43479C10D76E86071D2DF1D68C2E785B5C1B327EC5B112989AA5F605CC3435AC904760EF369D29BFF2C2B754ACFA892A0647588AC306B5CF44A37EDF22E063B42726EF05EF1B2DF80BE136844F0C7CDFD57FF68E66CEFF27D92C0434F292242B086E2CED408973644E9CDFF0C22462400236FD87E03AE69DBBAD4AE3E2213A8888325A16CC3A83A092D1DFB22CFD7AA5C071016862FEAE4735221C4F5F062B6D82DAA38611B0EB0E2C220F2817C50D4B886C0B408D0A1CB00A0E9F4F3CAA9A1414DFB422DFF4309CE6EA70E0AECDD2AA7ABEF84FC207C8DAAC4B5C95DBD46B954FDBE7F0B270FFBD704E7B542BFB87B231F0805AE6D5253C462C0A43B8E7AF7030BA31768E68744E51EBAE8271242834A9CF88506421B918510AD3710395D58A032D176C45FC935DA0510E88F807B7D7E2129980275B0786859E10E849B5C1DC2EFE247398362F2E868162E7BDF241B3749ACDB2BCB2705026F0A40F6E2A91348DFF8CE4FE28FDAA47AC4A5E45C42FC9A4676A0D8E4D7EBEC3 34120200313061025 2 6 100 7679 2 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB4AA98C3EB
34220191110001842 2 6 100 7679 2 E67A1BA3549A22E8E5008979650D6C7742558513C6C407C4B9CC87E394E8BF9E5DE7248841813BC72DE6BB56EA086A49C69031D2521204BC8EAA0D85B4F2016A4423BF24CCC2A94B7385325A11ADD338ABEDF6B7C444870597F9B05411942D235EBA9CA762F7F2912C1540063C167FE87E0B38B1A4EEC9FA5096102F114577F8D335448B6D6DB022890A33E378EC2D70BE921782CFA0477575E3D867696F5367011BE83025E30AC6173A33A425A9830BC9BD2BC66F561A8906137F68F4F215EA7D228145E4BD5314FDC950CC9CA61523723A9079E728368A6A96193AE3488D48ED7AD61D5B3EA5E4EB6F599963B6B556C0A1D5F174EF0A99F422E665703A6A4FFC588C73DA3D07C287CD9AC5F1065FFB3FE20CCFDEDDC9BA9A39431A2FFA1F94E8B7A3EBD6FBF64BDF9A9C20577AEA1436F08DEBFBD4FB34769DAB061F7B5661E0CB2E5159FF553D7A1E25C4550725EDE6661B633D564BE574FE007177D8C2A54541780D171EB4D2C30768099B2B8F4E81DC8E9A1DCE9BCEE9E23FE7A6854C9DDA08844559A6622257C856BDD221A29A298F840EABECB4D38013FF3403C634C26FA057BB9201D96E0A7D0C07492D7455A213C44978144BAA88804F5DACD544F8F3213F31B552C7BFB9561E63E8E9CDAA1DC427DCB7358C6ADC03B433413C605C34355DFCB2A32788D1D52041957C4C9B5BA9443DC8B6D1E4F0980C4E81607EAADB26D4352BD5823872AA7496A85242A6FD50FEE7DDA4F920ED3A42FAA475936999A5CE55B96F45637AE551335237E71C9C4D8884ACCFF1A48D02999BAF6D38B42BCA344087BF1A43479C10D76E86071D2DF1D68C2E785B5C1B327EC5B112989AA5F605CC3435AC904760EF369D29BFF2C2B754ACFA892A0647588AC306B5CF44A37EDF22E063B42726EF05EF1B2DF80BE136844F0C7CDFD57FF68E66CEFF27D92C0434F292242B086E2CED408973644E9CDFF0C22462400236FD87E03AE69DBBAD4AE3E2213A8888325A16CC3A83A092D1DFB22CFD7AA5C071016862FEAE4735221C4F5F062B6D82DAA38611B0EB0E2C220F2817C50D4B886C0B408D0A1CB00A0E9F4F3CAA9A1414DFB422DFF4309CE6EA70E0AECDD2AA7ABEF84FC207C8DAAC4B5C95DBD46B954FDBE7F0B270FFBD704E7B542BFB87B231F0805AE6D5253C462C0A43B8E7AF7030BA31768E68744E51EBAE8271242834A9CF88506421B918510AD3710395D58A032D176C45FC935DA0510E88F807B7D7E2129980275B0786859E10E849B5C1DC2EFE247398362F2E868162E7BDF241B3749ACDB2BCB2705026F0A40F6E2A91348DFF8CE4FE28FDAA47AC4A5E45C42FC9A4676A0D8E542DA06B 34220200313104943 2 6 100 7679 2 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB4ABB58143
34320191110175307 2 6 100 7679 5 E67A1BA3549A22E8E5008979650D6C7742558513C6C407C4B9CC87E394E8BF9E5DE7248841813BC72DE6BB56EA086A49C69031D2521204BC8EAA0D85B4F2016A4423BF24CCC2A94B7385325A11ADD338ABEDF6B7C444870597F9B05411942D235EBA9CA762F7F2912C1540063C167FE87E0B38B1A4EEC9FA5096102F114577F8D335448B6D6DB022890A33E378EC2D70BE921782CFA0477575E3D867696F5367011BE83025E30AC6173A33A425A9830BC9BD2BC66F561A8906137F68F4F215EA7D228145E4BD5314FDC950CC9CA61523723A9079E728368A6A96193AE3488D48ED7AD61D5B3EA5E4EB6F599963B6B556C0A1D5F174EF0A99F422E665703A6A4FFC588C73DA3D07C287CD9AC5F1065FFB3FE20CCFDEDDC9BA9A39431A2FFA1F94E8B7A3EBD6FBF64BDF9A9C20577AEA1436F08DEBFBD4FB34769DAB061F7B5661E0CB2E5159FF553D7A1E25C4550725EDE6661B633D564BE574FE007177D8C2A54541780D171EB4D2C30768099B2B8F4E81DC8E9A1DCE9BCEE9E23FE7A6854C9DDA08844559A6622257C856BDD221A29A298F840EABECB4D38013FF3403C634C26FA057BB9201D96E0A7D0C07492D7455A213C44978144BAA88804F5DACD544F8F3213F31B552C7BFB9561E63E8E9CDAA1DC427DCB7358C6ADC03B433413C605C34355DFCB2A32788D1D52041957C4C9B5BA9443DC8B6D1E4F0980C4E81607EAADB26D4352BD5823872AA7496A85242A6FD50FEE7DDA4F920ED3A42FAA475936999A5CE55B96F45637AE551335237E71C9C4D8884ACCFF1A48D02999BAF6D38B42BCA344087BF1A43479C10D76E86071D2DF1D68C2E785B5C1B327EC5B112989AA5F605CC3435AC904760EF369D29BFF2C2B754ACFA892A0647588AC306B5CF44A37EDF22E063B42726EF05EF1B2DF80BE136844F0C7CDFD57FF68E66CEFF27D92C0434F292242B086E2CED408973644E9CDFF0C22462400236FD87E03AE69DBBAD4AE3E2213A8888325A16CC3A83A092D1DFB22CFD7AA5C071016862FEAE4735221C4F5F062B6D82DAA38611B0EB0E2C220F2817C50D4B886C0B408D0A1CB00A0E9F4F3CAA9A1414DFB422DFF4309CE6EA70E0AECDD2AA7ABEF84FC207C8DAAC4B5C95DBD46B954FDBE7F0B270FFBD704E7B542BFB87B231F0805AE6D5253C462C0A43B8E7AF7030BA31768E68744E51EBAE8271242834A9CF88506421B918510AD3710395D58A032D176C45FC935DA0510E88F807B7D7E2129980275B0786859E10E849B5C1DC2EFE247398362F2E868162E7BDF241B3749ACDB2BCB2705026F0A40F6E2A91348DFF8CE4FE28FDAA47AC4A5E45C42FC9A4676A0D8E6046F9BF 34320200313131537 2 6 100 7679 2 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB4ACFC1F93
34420191110192342 2 6 100 7679 5 E67A1BA3549A22E8E5008979650D6C7742558513C6C407C4B9CC87E394E8BF9E5DE7248841813BC72DE6BB56EA086A49C69031D2521204BC8EAA0D85B4F2016A4423BF24CCC2A94B7385325A11ADD338ABEDF6B7C444870597F9B05411942D235EBA9CA762F7F2912C1540063C167FE87E0B38B1A4EEC9FA5096102F114577F8D335448B6D6DB022890A33E378EC2D70BE921782CFA0477575E3D867696F5367011BE83025E30AC6173A33A425A9830BC9BD2BC66F561A8906137F68F4F215EA7D228145E4BD5314FDC950CC9CA61523723A9079E728368A6A96193AE3488D48ED7AD61D5B3EA5E4EB6F599963B6B556C0A1D5F174EF0A99F422E665703A6A4FFC588C73DA3D07C287CD9AC5F1065FFB3FE20CCFDEDDC9BA9A39431A2FFA1F94E8B7A3EBD6FBF64BDF9A9C20577AEA1436F08DEBFBD4FB34769DAB061F7B5661E0CB2E5159FF553D7A1E25C4550725EDE6661B633D564BE574FE007177D8C2A54541780D171EB4D2C30768099B2B8F4E81DC8E9A1DCE9BCEE9E23FE7A6854C9DDA08844559A6622257C856BDD221A29A298F840EABECB4D38013FF3403C634C26FA057BB9201D96E0A7D0C07492D7455A213C44978144BAA88804F5DACD544F8F3213F31B552C7BFB9561E63E8E9CDAA1DC427DCB7358C6ADC03B433413C605C34355DFCB2A32788D1D52041957C4C9B5BA9443DC8B6D1E4F0980C4E81607EAADB26D4352BD5823872AA7496A85242A6FD50FEE7DDA4F920ED3A42FAA475936999A5CE55B96F45637AE551335237E71C9C4D8884ACCFF1A48D02999BAF6D38B42BCA344087BF1A43479C10D76E86071D2DF1D68C2E785B5C1B327EC5B112989AA5F605CC3435AC904760EF369D29BFF2C2B754ACFA892A0647588AC306B5CF44A37EDF22E063B42726EF05EF1B2DF80BE136844F0C7CDFD57FF68E66CEFF27D92C0434F292242B086E2CED408973644E9CDFF0C22462400236FD87E03AE69DBBAD4AE3E2213A8888325A16CC3A83A092D1DFB22CFD7AA5C071016862FEAE4735221C4F5F062B6D82DAA38611B0EB0E2C220F2817C50D4B886C0B408D0A1CB00A0E9F4F3CAA9A1414DFB422DFF4309CE6EA70E0AECDD2AA7ABEF84FC207C8DAAC4B5C95DBD46B954FDBE7F0B270FFBD704E7B542BFB87B231F0805AE6D5253C462C0A43B8E7AF7030BA31768E68744E51EBAE8271242834A9CF88506421B918510AD3710395D58A032D176C45FC935DA0510E88F807B7D7E2129980275B0786859E10E849B5C1DC2EFE247398362F2E868162E7BDF241B3749ACDB2BCB2705026F0A40F6E2A91348DFF8CE4FE28FDAA47AC4A5E45C42FC9A4676A0D8E61370307 34420200313162830 2 6 100 7679 2 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB4AEB1D103
34520191110200757 2 6 100 7679 2 E67A1BA3549A22E8E5008979650D6C7742558513C6C407C4B9CC87E394E8BF9E5DE7248841813BC72DE6BB56EA086A49C69031D2521204BC8EAA0D85B4F2016A4423BF24CCC2A94B7385325A11ADD338ABEDF6B7C444870597F9B05411942D235EBA9CA762F7F2912C1540063C167FE87E0B38B1A4EEC9FA5096102F114577F8D335448B6D6DB022890A33E378EC2D70BE921782CFA0477575E3D867696F5367011BE83025E30AC6173A33A425A9830BC9BD2BC66F561A8906137F68F4F215EA7D228145E4BD5314FDC950CC9CA61523723A9079E728368A6A96193AE3488D48ED7AD61D5B3EA5E4EB6F599963B6B556C0A1D5F174EF0A99F422E665703A6A4FFC588C73DA3D07C287CD9AC5F1065FFB3FE20CCFDEDDC9BA9A39431A2FFA1F94E8B7A3EBD6FBF64BDF9A9C20577AEA1436F08DEBFBD4FB34769DAB061F7B5661E0CB2E5159FF553D7A1E25C4550725EDE6661B633D564BE574FE007177D8C2A54541780D171EB4D2C30768099B2B8F4E81DC8E9A1DCE9BCEE9E23FE7A6854C9DDA08844559A6622257C856BDD221A29A298F840EABECB4D38013FF3403C634C26FA057BB9201D96E0A7D0C07492D7455A213C44978144BAA88804F5DACD544F8F3213F31B552C7BFB9561E63E8E9CDAA1DC427DCB7358C6ADC03B433413C605C34355DFCB2A32788D1D52041957C4C9B5BA9443DC8B6D1E4F0980C4E81607EAADB26D4352BD5823872AA7496A85242A6FD50FEE7DDA4F920ED3A42FAA475936999A5CE55B96F45637AE551335237E71C9C4D8884ACCFF1A48D02999BAF6D38B42BCA344087BF1A43479C10D76E86071D2DF1D68C2E785B5C1B327EC5B112989AA5F605CC3435AC904760EF369D29BFF2C2B754ACFA892A0647588AC306B5CF44A37EDF22E063B42726EF05EF1B2DF80BE136844F0C7CDFD57FF68E66CEFF27D92C0434F292242B086E2CED408973644E9CDFF0C22462400236FD87E03AE69DBBAD4AE3E2213A8888325A16CC3A83A092D1DFB22CFD7AA5C071016862FEAE4735221C4F5F062B6D82DAA38611B0EB0E2C220F2817C50D4B886C0B408D0A1CB00A0E9F4F3CAA9A1414DFB422DFF4309CE6EA70E0AECDD2AA7ABEF84FC207C8DAAC4B5C95DBD46B954FDBE7F0B270FFBD704E7B542BFB87B231F0805AE6D5253C462C0A43B8E7AF7030BA31768E68744E51EBAE8271242834A9CF88506421B918510AD3710395D58A032D176C45FC935DA0510E88F807B7D7E2129980275B0786859E10E849B5C1DC2EFE247398362F2E868162E7BDF241B3749ACDB2BCB2705026F0A40F6E2A91348DFF8CE4FE28FDAA47AC4A5E45C42FC9A4676A0D8E61A90673 34520200313193630 2 6 100 7679 5 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB4B0562167
34620191111005215 2 6 100 7679 5 E67A1BA3549A22E8E5008979650D6C7742558513C6C407C4B9CC87E394E8BF9E5DE7248841813BC72DE6BB56EA086A49C69031D2521204BC8EAA0D85B4F2016A4423BF24CCC2A94B7385325A11ADD338ABEDF6B7C444870597F9B05411942D235EBA9CA762F7F2912C1540063C167FE87E0B38B1A4EEC9FA5096102F114577F8D335448B6D6DB022890A33E378EC2D70BE921782CFA0477575E3D867696F5367011BE83025E30AC6173A33A425A9830BC9BD2BC66F561A8906137F68F4F215EA7D228145E4BD5314FDC950CC9CA61523723A9079E728368A6A96193AE3488D48ED7AD61D5B3EA5E4EB6F599963B6B556C0A1D5F174EF0A99F422E665703A6A4FFC588C73DA3D07C287CD9AC5F1065FFB3FE20CCFDEDDC9BA9A39431A2FFA1F94E8B7A3EBD6FBF64BDF9A9C20577AEA1436F08DEBFBD4FB34769DAB061F7B5661E0CB2E5159FF553D7A1E25C4550725EDE6661B633D564BE574FE007177D8C2A54541780D171EB4D2C30768099B2B8F4E81DC8E9A1DCE9BCEE9E23FE7A6854C9DDA08844559A6622257C856BDD221A29A298F840EABECB4D38013FF3403C634C26FA057BB9201D96E0A7D0C07492D7455A213C44978144BAA88804F5DACD544F8F3213F31B552C7BFB9561E63E8E9CDAA1DC427DCB7358C6ADC03B433413C605C34355DFCB2A32788D1D52041957C4C9B5BA9443DC8B6D1E4F0980C4E81607EAADB26D4352BD5823872AA7496A85242A6FD50FEE7DDA4F920ED3A42FAA475936999A5CE55B96F45637AE551335237E71C9C4D8884ACCFF1A48D02999BAF6D38B42BCA344087BF1A43479C10D76E86071D2DF1D68C2E785B5C1B327EC5B112989AA5F605CC3435AC904760EF369D29BFF2C2B754ACFA892A0647588AC306B5CF44A37EDF22E063B42726EF05EF1B2DF80BE136844F0C7CDFD57FF68E66CEFF27D92C0434F292242B086E2CED408973644E9CDFF0C22462400236FD87E03AE69DBBAD4AE3E2213A8888325A16CC3A83A092D1DFB22CFD7AA5C071016862FEAE4735221C4F5F062B6D82DAA38611B0EB0E2C220F2817C50D4B886C0B408D0A1CB00A0E9F4F3CAA9A1414DFB422DFF4309CE6EA70E0AECDD2AA7ABEF84FC207C8DAAC4B5C95DBD46B954FDBE7F0B270FFBD704E7B542BFB87B231F0805AE6D5253C462C0A43B8E7AF7030BA31768E68744E51EBAE8271242834A9CF88506421B918510AD3710395D58A032D176C45FC935DA0510E88F807B7D7E2129980275B0786859E10E849B5C1DC2EFE247398362F2E868162E7BDF241B3749ACDB2BCB2705026F0A40F6E2A91348DFF8CE4FE28FDAA47AC4A5E45C42FC9A4676A0D8E64BD2F0F 34620200313204400 2 6 100 7679 5 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB4B0E7687F
34720191111221634 2 6 100 7679 5 E67A1BA3549A22E8E5008979650D6C7742558513C6C407C4B9CC87E394E8BF9E5DE7248841813BC72DE6BB56EA086A49C69031D2521204BC8EAA0D85B4F2016A4423BF24CCC2A94B7385325A11ADD338ABEDF6B7C444870597F9B05411942D235EBA9CA762F7F2912C1540063C167FE87E0B38B1A4EEC9FA5096102F114577F8D335448B6D6DB022890A33E378EC2D70BE921782CFA0477575E3D867696F5367011BE83025E30AC6173A33A425A9830BC9BD2BC66F561A8906137F68F4F215EA7D228145E4BD5314FDC950CC9CA61523723A9079E728368A6A96193AE3488D48ED7AD61D5B3EA5E4EB6F599963B6B556C0A1D5F174EF0A99F422E665703A6A4FFC588C73DA3D07C287CD9AC5F1065FFB3FE20CCFDEDDC9BA9A39431A2FFA1F94E8B7A3EBD6FBF64BDF9A9C20577AEA1436F08DEBFBD4FB34769DAB061F7B5661E0CB2E5159FF553D7A1E25C4550725EDE6661B633D564BE574FE007177D8C2A54541780D171EB4D2C30768099B2B8F4E81DC8E9A1DCE9BCEE9E23FE7A6854C9DDA08844559A6622257C856BDD221A29A298F840EABECB4D38013FF3403C634C26FA057BB9201D96E0A7D0C07492D7455A213C44978144BAA88804F5DACD544F8F3213F31B552C7BFB9561E63E8E9CDAA1DC427DCB7358C6ADC03B433413C605C34355DFCB2A32788D1D52041957C4C9B5BA9443DC8B6D1E4F0980C4E81607EAADB26D4352BD5823872AA7496A85242A6FD50FEE7DDA4F920ED3A42FAA475936999A5CE55B96F45637AE551335237E71C9C4D8884ACCFF1A48D02999BAF6D38B42BCA344087BF1A43479C10D76E86071D2DF1D68C2E785B5C1B327EC5B112989AA5F605CC3435AC904760EF369D29BFF2C2B754ACFA892A0647588AC306B5CF44A37EDF22E063B42726EF05EF1B2DF80BE136844F0C7CDFD57FF68E66CEFF27D92C0434F292242B086E2CED408973644E9CDFF0C22462400236FD87E03AE69DBBAD4AE3E2213A8888325A16CC3A83A092D1DFB22CFD7AA5C071016862FEAE4735221C4F5F062B6D82DAA38611B0EB0E2C220F2817C50D4B886C0B408D0A1CB00A0E9F4F3CAA9A1414DFB422DFF4309CE6EA70E0AECDD2AA7ABEF84FC207C8DAAC4B5C95DBD46B954FDBE7F0B270FFBD704E7B542BFB87B231F0805AE6D5253C462C0A43B8E7AF7030BA31768E68744E51EBAE8271242834A9CF88506421B918510AD3710395D58A032D176C45FC935DA0510E88F807B7D7E2129980275B0786859E10E849B5C1DC2EFE247398362F2E868162E7BDF241B3749ACDB2BCB2705026F0A40F6E2A91348DFF8CE4FE28FDAA47AC4A5E45C42FC9A4676A0D8E728AB85F 34720200313205856 2 6 100 7679 2 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB4B100B58B
34820191112130746 2 6 100 7679 5 E67A1BA3549A22E8E5008979650D6C7742558513C6C407C4B9CC87E394E8BF9E5DE7248841813BC72DE6BB56EA086A49C69031D2521204BC8EAA0D85B4F2016A4423BF24CCC2A94B7385325A11ADD338ABEDF6B7C444870597F9B05411942D235EBA9CA762F7F2912C1540063C167FE87E0B38B1A4EEC9FA5096102F114577F8D335448B6D6DB022890A33E378EC2D70BE921782CFA0477575E3D867696F5367011BE83025E30AC6173A33A425A9830BC9BD2BC66F561A8906137F68F4F215EA7D228145E4BD5314FDC950CC9CA61523723A9079E728368A6A96193AE3488D48ED7AD61D5B3EA5E4EB6F599963B6B556C0A1D5F174EF0A99F422E665703A6A4FFC588C73DA3D07C287CD9AC5F1065FFB3FE20CCFDEDDC9BA9A39431A2FFA1F94E8B7A3EBD6FBF64BDF9A9C20577AEA1436F08DEBFBD4FB34769DAB061F7B5661E0CB2E5159FF553D7A1E25C4550725EDE6661B633D564BE574FE007177D8C2A54541780D171EB4D2C30768099B2B8F4E81DC8E9A1DCE9BCEE9E23FE7A6854C9DDA08844559A6622257C856BDD221A29A298F840EABECB4D38013FF3403C634C26FA057BB9201D96E0A7D0C07492D7455A213C44978144BAA88804F5DACD544F8F3213F31B552C7BFB9561E63E8E9CDAA1DC427DCB7358C6ADC03B433413C605C34355DFCB2A32788D1D52041957C4C9B5BA9443DC8B6D1E4F0980C4E81607EAADB26D4352BD5823872AA7496A85242A6FD50FEE7DDA4F920ED3A42FAA475936999A5CE55B96F45637AE551335237E71C9C4D8884ACCFF1A48D02999BAF6D38B42BCA344087BF1A43479C10D76E86071D2DF1D68C2E785B5C1B327EC5B112989AA5F605CC3435AC904760EF369D29BFF2C2B754ACFA892A0647588AC306B5CF44A37EDF22E063B42726EF05EF1B2DF80BE136844F0C7CDFD57FF68E66CEFF27D92C0434F292242B086E2CED408973644E9CDFF0C22462400236FD87E03AE69DBBAD4AE3E2213A8888325A16CC3A83A092D1DFB22CFD7AA5C071016862FEAE4735221C4F5F062B6D82DAA38611B0EB0E2C220F2817C50D4B886C0B408D0A1CB00A0E9F4F3CAA9A1414DFB422DFF4309CE6EA70E0AECDD2AA7ABEF84FC207C8DAAC4B5C95DBD46B954FDBE7F0B270FFBD704E7B542BFB87B231F0805AE6D5253C462C0A43B8E7AF7030BA31768E68744E51EBAE8271242834A9CF88506421B918510AD3710395D58A032D176C45FC935DA0510E88F807B7D7E2129980275B0786859E10E849B5C1DC2EFE247398362F2E868162E7BDF241B3749ACDB2BCB2705026F0A40F6E2A91348DFF8CE4FE28FDAA47AC4A5E45C42FC9A4676A0D8E7C1545A7 34820200314035540 2 6 100 7679 5 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB4B4AAAE3F
34920191112235240 2 6 100 8191 5 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C09B051E7 34920200314061326 2 6 100 7679 5 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB4B5BFDBA7
35020191113080333 2 6 100 8191 5 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C0DFA4497 35020200315011135 2 6 100 7679 2 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB4BD31F073
35120191113172045 2 6 100 8191 5 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C12AC18C7 35120200315110837 2 6 100 7679 5 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB4C26F444F
35220191113200551 2 6 100 8191 5 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C144987EF 35220200315161923 2 6 100 7679 2 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB4C4B91073
35320191113222215 2 6 100 8191 5 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C15AC15DF 35320200316051743 2 6 100 7679 2 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB4CAECF90B
35420191114105339 2 6 100 8191 2 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C1D643593 35420200316125128 2 6 100 7679 5 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB4CE2FC1E7
35520191114122810 2 6 100 8191 5 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C1E6B7F8F 35520200316153032 2 6 100 7679 5 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB4CF8D33EF
35620191114130017 2 6 100 8191 5 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C1EBA7C07 35620200316171946 2 6 100 7679 5 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB4D07EA9FF
35720191114145117 2 6 100 8191 2 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C1FE5ED4B 35720200316174220 2 6 100 7679 5 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB4D0A81D8F
35820191114151102 2 6 100 8191 5 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C2010EB4F 35820200316202625 2 6 100 7679 5 F9B9E3DF0669078220C98F6E1775CAE12B5D95EF20D9491DDDFC0DFBA8EE09FD43F58BA934B719A06ECFF9646CA90998726E6FBDC6DB663F3BE44CF10A44B9D2DD7B01682B867206E6A67FE77170050860206AE5980778EA44104698A52D4D57D2AE0B98826DD3E98CB26E3CF0F044546CA7A97505E68983B439E27EE64AAB26D9FAB324CBADE29FBF733AF761D5CBA8E15D906F992080A1A725D65DD85CCDF0B00CCD5D44952C7D46CC514F6D34DD225F26B5CCFB2EB26077A854C19585DD40F4373FE41626532D4753C3617395FDF26FAAE36A6BD0D9009A7F9086AE9B150BD4712B4672ABACF3EC652B972885D8C6C858C93FA42B72E48EFB055E25828CF6FBF609BA25A589B79E0B64DB63F971C6C06103696A359338034A1FB53E0B601FCBDB8CB6BE8DA048C4D9CEA7EA4A458FA64A87B788543854D94977330FEBC9BB09855083ED12C13858DED10C17C19412C7AF9412F4FE952322D80FC9B26842B1FE1859E670FB047390669D81225409853A3E3CCEE979D1120F4F3D833C49A7F8EA673FA68ACB33FFFC3B56A3F277D237F566F5A342C79B3E40EBEBD6E570B1AED4845B353995C7B758CFD4875A799F652122648618AC29D583E04D772FB6739F69D5E4DBFF2BD7B3468729E1ED90C9C523C36912B2EBC69199A5E7D0982867536275332B62C1AD6F07F1825BE66CDC5C99427268B6D1E754A90AF36F49C136E40455866B92FBEF1A298C3A3EFDB6F0F459F5E885D2C0B74C4C7347430AAD7EF86BFA21F8D38CAC911171802D645A73B5249334E26B804F47A012DE0FE1CF4745F33A4A5882DCA984E253E6B16B9A8A15541F65270BFB61A64EFE9BDBBFE4205B1F4FFF5FD75EF15D17F3CBB89651E88866A2AD67D0BD7B21B4495406B0F7A083AB155D37497CC81E4F360F39DF5A26C40662176ACB041805614DD761C619282E2719C29693050058E6FA82FF4237E86A408ADB3DDC5ADC0D770B3E5D1861B669FCEB53D432A5928AB547040CF2044B3164573AE36C52DE160C2F34B0FC18B1C5E53DE1ACF886086064AAE3566D2AC9E00EFED873A201F0D14FC0DFDCF40ED380E12F9CD3D65F944D888D1FFB0F0ADF56CDCBC3036FBA03AB05944D37F24917DF3E18B9EE06B1AFDB385FBBC9425D414849B0FE0BF8D101669341EA388B899ECA0BC7FF46200CC64E0A8480C9B55E71D2A3AAB11FB5D9E2278016E8BCE6901A87B8D993F8AEE78698D6FD13D2E26873F3DA86F0983AB151E921C0A0308ECA824E32FBBF2E8F1BC4E0BEC0013BA6B89BB61F495FAAB142B782BC59FB4B15EBD4DF155A56B07F7E64C4732DB1BF21E03DD68DACABB778E97C74380E7BB4D21FB857
35920191114175356 2 6 100 8191 2 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C21C7632B 35920200317144528 2 6 100 7679 2 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D6917B8A583
36020191115033149 2 6 100 8191 2 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C27E226FB 36020200317172320 2 6 100 7679 2 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D69194AFCCB
36120191115034007 2 6 100 8191 5 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C27EDDB17 36120200317211821 2 6 100 7679 2 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D691BAE756B
36220191115161656 2 6 100 8191 2 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C2FC179BB 36220200318020947 2 6 100 7679 2 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D691E88D40B
36320191115163508 2 6 100 8191 2 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C2FE8BBD3 36320200318132137 2 6 100 7679 2 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D69243D6E83
36420191116013312 2 6 100 8191 2 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C35152223 36420200318164449 2 6 100 7679 5 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D692641EA1F
36520191116104137 2 6 100 8191 2 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C3AB548F3 36520200318165632 2 6 100 7679 2 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D692656A5EB
36620191116131152 2 6 100 8191 5 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C3C3644FF 36620200318233140 2 6 100 7679 5 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D692A61B1F7
36720191116180544 2 6 100 8191 2 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C3F1E201B 36720200319003005 2 6 100 7679 5 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D692AEDB987
36820191116195637 2 6 100 8191 5 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C402E471F 36820200319094041 2 6 100 7679 2 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D69307F8B33
36920191117014351 2 6 100 8191 5 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C42FE585F 36920200319150358 2 6 100 7679 5 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D6933B4B75F
37020191117195700 2 6 100 8191 5 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C4DBF75DF 37020200319173225 2 6 100 7679 5 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D69352DD107
37120191117204232 2 6 100 8191 5 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C4E2912E7 37120200319174751 2 6 100 7679 5 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D69354C2B7F
37220191118131732 2 6 100 8191 2 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C54343CD3 37220200320033350 2 6 100 7679 5 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D6938CB4C9F
37320191118210639 2 6 100 8191 2 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C57F77453 37320200320090847 2 6 100 7679 5 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D693C17966F
37420191119125926 2 6 100 8191 2 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C6021DE6B 37420200321110636 2 6 100 7679 5 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D694B3E8EEF
37520191119132613 2 6 100 8191 5 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C6059AE27 37520200321132757 2 6 100 7679 2 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D694C8DCF73
37620191119133140 2 6 100 8191 5 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C605D833F 37620200322034802 2 6 100 7679 5 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D69549685F7
37720191119133605 2 6 100 8191 2 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C605F151B 37720200322064543 2 6 100 7679 5 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D6956401F07
37820191119174042 2 6 100 8191 2 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C6292A3C3 37820200322080953 2 6 100 7679 2 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D69570A66EB
37920191120093944 2 6 100 8191 2 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C690A0B53 37920200322105224 2 6 100 7679 5 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D69588D739F
38020191120141650 2 6 100 8191 2 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C6B4934D3 38020200322200820 2 6 100 7679 2 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D695D952E9B
38120191120221735 2 6 100 8191 5 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C6F3A553F 38120200322211734 2 6 100 7679 2 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D695E28F8A3
38220191121110820 2 6 100 8191 5 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C75814AB7 38220200323000631 2 6 100 7679 5 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D695F9BBADF
38320191121112452 2 6 100 8191 2 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C759A62B3 38320200323010937 2 6 100 7679 2 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D69601E6443
38420191122050747 2 6 100 8191 2 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C7E3D2D43 38420200323081041 2 6 100 7679 2 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D696401E163
38520191122111758 2 6 100 8191 2 D57E3B56BFA7F8444B8BF4E425C7CDA8AD8013E4403F9987C70B1B973D9478B38CD2759C98B9E195EE06098BAF739F101F8290E0FCD9DB25C5F5502A90F748ADB2AD6F0A40A38FD44F2EB548395B070B31A81216B1A2B7A5EAE6186C57C6BC574D2428BD62871A3AD9B54E6ACF35DA9F56F2291472A90BC400196FA4B033AB8D3A17C3023E5425052B5222A2755B6F7D4CEA80EC6F2BD26B72A76E37C880651AB32EE51B86B90D23B02290996988BF8767292883CCBE693A8FA065D1CE6F8496F8D3DB5661006B0180F9C020278CF96F36D0ED9242A5139FAE3E7008CCDC9F962338A7B8D41873970B4BAA183B633FAA6E5229230100F9BBD0927B4423F9840DC0544D83798B16C114C6929AF89C0797724635194B25BF53107CB65713FB08214AFBDC05AF993C3F9CFE929A92A52D3C97816C667EB79F8F26F619CFD41C1D792C9BFB825E473E510D4633063312625BD91F22E590CFF97CB5DB0AED2784CB15683C5BE6CD73201F42CD7FA28019BB60CFD088B5B2AC3CCE1A96E01167E0C5042AB744C50230CB8935BDCA020BE2A20E00CD04F8BEF55B64B1E8064C149697C1D313872E29E29931ECCF7130EDC842F44A72B2847BD5C2E438E462E28B47E11235E892690391296FABAF2FC029FD508F71719553335248746C578AF4CAE7AF768D51A5AC6E3D996A3DE66A801FAB6B8E80C66138BAB8167518FB1C50A7BEE0D5001E6F01BBCCAB83B0C43FE8103B4FFEC26CA4C820D4AA68FCDE6EECB04E31D87F3D9CC0C195B74E06F1D01CBD7E0F59CAE1FE3AB92E3AF215A752CFFD564D5BDD7853C85E129CCC25B1052A6A669BCF0AF862CB9E44B360E2BB6623DEA2160A76B9679BBA4B62C698DF07D7E042F4DE85A470832B1D7811B4B0EBDE0A8BBEF1F3F57A7CE6E8A8C4E44CF6511602824ABAA41D7F74CC2037C8477549D00A6A69D3F6A93EE6A9B2565FCAA26FFCD7A0097F6F18DE8D80533F8EAE28589EF4381B3AF7E95F183D2FA4B15AEA21BD1965479B0A604508E14DB4CC0D9288F5062D3DA5C33B0295F6A9D9F1AD935AA51C0F7811D19FFACF5514E9BF5D5A545FA318CC5F6BA875BEEDB9E4953BB2285D391E12AC37DD0BC41871CC9D74D546EABC0B20243685633BDA2020419C3DBF7E945D4359DCF4531C7E74C1B0058C6248E4FA9FC87E098A393DB2691EAF0AF4CEA5F6B5AE6175A3EC913A6B2E92BAB9CC9050F765EAD13669CD564345AD9E1BDE7994C792BD01DF349D1D3C72E3FD3EE91CA3372093B6870526BDE5AAEF2B4E0CE260D37CC479EC8162650FE9FA8677DFCCBDB74EE3872F248780F4197D2E56681B04327447DB13AF873CD3988C2B700E1BEB238B644DD53D814537324B83F47E32D891DB4931B4829B53B3195DDBF79780679FAEB0286B451A7DCECC22E949E9A38464F41F17E6AB426337F7ECDA9C8060C9F3 38520200323141348 2 6 100 7679 5 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D6967527EB7
38620191122234859 2 6 100 8191 2 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DAF157FE93 38620200323182024 2 6 100 7679 5 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D69698E2947
38720191123201736 2 6 100 8191 2 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DAFCEA8A33 38720200323183420 2 6 100 7679 2 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D6969A6188B
38820191124005345 2 6 100 8191 2 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DAFF68AA23 38820200323200741 2 6 100 7679 2 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D696A775C93
38920191124051934 2 6 100 8191 2 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB01DD44F3 38920200324000150 2 6 100 7679 5 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D696C9A9E77
39020191124175034 2 6 100 8191 2 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB08BB417B 39020200324021150 2 6 100 7679 2 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D696DC85C1B
39120191124192622 2 6 100 8191 2 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB0982C193 39120200324041431 2 6 100 7679 5 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D696EE23C2F
39220191124193739 2 6 100 8191 5 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB099260CF 39220200324100523 2 6 100 7679 5 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D69721212EF
39320191126025656 2 6 100 8191 2 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB17A0CF23 39320200324110629 2 6 100 7679 2 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D69729D197B
39420191126161223 2 6 100 8191 2 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB1EB9E26B 39420200325070252 2 6 100 7679 5 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D697D6E57F7
39520191126172830 2 6 100 8191 5 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB1F5ED407 39520200325073428 2 6 100 7679 2 D6B6711FEDD0DAB74BE347B82AE33FB203A966E712D108C27D2983732928351D8E0B14DB0377CA10A9D079F1D76AB94AB983A67C01CADC4EEDC12F452A214B690C3823B59D05B8967A9C5FB80A78CA705620E04FD35D7BC8636A0456F5015C75B2ED2AEE4A50ED3224FB8BDEECE5C21DFC8703240AC287E4E218710091A76D19EA96FE36FB67547F45040AB5DF812D5A4391E41147087072901BE7E6618F41C2D5868424B7EC12E122A036FB5E504651DF79A120CF6698D983FD59F0203E225DE8508D72DCAA6D93492FC574B73B589189D127CF23EDFD7B319C2222239641590C6F66D25C3AD092527FBDE254131F5C13A70BC2C382671E4B940C755B617854CD3A50941DC652A8F20647C638E5F0977EA881D4770CC8381AE551A745363183752830BF4650C3741FFA8F0ED13CE0190963AFA40B61B2B9CCBD07C49A22CD6C229D43AB2E02CE5A8D2CCE45C22E237F8679D10D2543BDA0407FE3011B211B331426ACCE3B4D7DC8626B4C7D713479170BA6DC9A34F404D1C6A3EA7C04634CE61A032FC967D212B99E521CA58B7EA0E560095F1E39603C1FED48F8ED21E4D7B2D3D6F9CB34387BAD472097FC3C24203991ADE41EFDADE145D9B36E87DF128176951D3AFA12C586585C230F4DE23973B14B0291FB99A2527B87A705228DC2F0C27E6C6D01FA36E231A076C5D256B2D730424EDA55916FA3DE5E6AC1EAA5EF7FFFCF57C5577195EBBD5C3AA0448BE83BFC6853AAF9B48FA1289B276C931D4E472FF04428D02EADF12733C1E446B2DD0F1B30D1BEB4E5F36F6FF6438E7B5C51093BAED1AD02AF353DE0F447C38C1F7D10D3C6CD56DBB8EF4374E5B296BCFC2B926AC19542649DA903992F0DB5F1F41A839179F753921C9814C07924097BD850BE07A0A6ED5EECA31D391154055012C48C8000CA03790889670C2E4BE1BCE6C854C4FAB1004CC127103E59C4BF55C7A290BD44BF9EE06C18557C07D2A36D8FCDE4E1F17AD73FA570112DB3F881AD1C23D573F3F23CC5245B4D1C289F517720F444A3282BDD4D5E49B98926C13B0C45CA13BE11E55A5B6F104435196EF8E25A3A955C5C15A0A350A276912C143F57C819F45557A04C5A576E2266E0898E8D64BA3B7E539B642C7C13E624BC8AA299F8FC1D72C7E9DD4C5CE50DFFB762A80A3D7EF8BBEE12CDDCA3F9900A948986F64A719D5444E5D595B86F2524B0292282F6EFC2D3DB2E275FDC4D11654C878D1D74CA972B7CF6C57B2A542BE5A8F2576105C95C1376F5EBCA7A7068A60E90AA8C4B19219EC3A518E8CD809F06096ABFF526F31E86DD4127FD4CFBDAF1229CB590CF9D76ECAFB2E6B3CD43995F6EF11D697DAF0383
39620191126180617 2 6 100 8191 2 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB1FAB6403 39620200325172855 2 6 100 8191 2 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF90ED930B3
39720191127080548 2 6 100 8191 5 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB2553EA77 39720200325202118 2 6 100 8191 2 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF91061F97B
39820191127104644 2 6 100 8191 2 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB2687A623 39820200326023237 2 6 100 8191 5 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF9139C9FC7
39920191128121203 2 6 100 8191 2 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB33239063 39920200326024940 2 6 100 8191 2 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF913B79CEB
40020191128204858 2 6 100 8191 2 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB378CE753 40020200328134127 2 6 100 8191 5 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF92E9C709F
40120191128233841 2 6 100 8191 5 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB38F8E4F7 40120200328212714 2 6 100 8191 5 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF932A9BEAF
40220191129040635 2 6 100 8191 2 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB3A6C67AB 40220200329023213 2 6 100 8191 5 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF935A4196F
40320191129112243 2 6 100 8191 2 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB3C63FFFB 40320200329154240 2 6 100 8191 5 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF93D2BEF37
40420191129184106 2 6 100 8191 2 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB3F9FFF83 40420200329201144 2 6 100 8191 5 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF93F51B18F
40520191129203059 2 6 100 8191 2 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB4088D083 40520200330113432 2 6 100 8191 2 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF944EA6E43
40620191129215650 2 6 100 8191 5 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB4136E127 40620200331175854 2 6 100 8191 5 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF94C88CF9F
40720191130171835 2 6 100 8191 2 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB4AD7F26B 40720200401041044 2 6 100 8191 5 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF94F14974F
40820191130173733 2 6 100 8191 2 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB4AF317A3 40820200401113456 2 6 100 8191 2 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF950E7AC23
40920191201235534 2 6 100 8191 2 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB56C3B47B 40920200402184624 2 6 100 8191 2 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF958E471B3
41020191202030655 2 6 100 8191 2 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB58188EDB 41020200402210643 2 6 100 8191 2 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF9598F1B73
41120191202063054 2 6 100 8191 2 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB59B534A3 41120200403191828 2 6 100 8191 2 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF95C0DDE53
41220191203125547 2 6 100 8191 5 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB685D06E7 41220200403200234 2 6 100 8191 5 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF95C32F9F7
41320191203140741 2 6 100 8191 5 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB68EF9D27 41320200404072948 2 6 100 8191 5 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF95EFCC91F
41420191203185147 2 6 100 8191 5 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB6B3D290F 41420200404154328 2 6 100 8191 2 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF9626ACABB
41520191203211916 2 6 100 8191 5 F4ED1ADCB74B5BB2954322A6646A37DE50F1FEB9359C83B8837A73263FE7BE52044678EE53D4CDB16268F07754FC0C29BAB897CC643E127AF81546E061B8A0E9B357E710DFAF666BD09AE898B40EBCA5A9E77A530CC677B5D019AD2D0292733F496B0624F430F99AE1BB8AF400D2A72CEE17CBAD9C3E517D80039E6A7F6588319FF3BE22BA517530486A4F10BAB6281FE724B0B0FB785D9733B7095245355226D4B653D3E4F7AAF16E63E523A1A6F092919882203281A2A348BE3F5B601C7BC1C35057B021E8916C71FCCFF9A694D4952D89BF0502FA7A1F044B9062514B636A10510DCB953F46596D592887FB782FD24C44A2C4CF4137986A219DDD909BB34A05719DDA26B402302BC6127B46DDD2F93B6E1155BC4F994F7FFE58E5FF3A6688FD14AB60A9DC804A88871236097275E7D47F71F8C9CDBA687BA04E9E67147E80C56FC04184D4F8BC3F1B8CDB659D99D6B8DA26B954C0315BE6552F27DBF56480A3DDCD88B9C5AE487A903F3EACCD53CE09C7D96DB5E77B57123B81E684D7E3AF19AAF7FD810DA177481EE4FE6323B4FBFBBFD694AC14BFBFFDE6416ABB497C00FA56C29D440AC8E7B464600BA71E814BD25F25BC79628F61B01E5CDB5313B31CAA4EAC88C5D9BAA91FCB3CA0C2F7AE477C17B63033329967E6C92DE4AA47C5A1D376FF71D8B88DEADAD8E7D6549DB04F92EADF16047909D5A11E4AE819194D4B11B242990AD47A1CD55CDCEA6D58496899713D410899A744B81E3890C745DDC916ED878BCA835A278E4C95198B06203DFC9F01124F2C77A392868360410D7AC4D5A21A615480DF3CB2BDB11F3E1D2A0E81C59912563C52CAF4CB71039B3A949EE582A3F5909A7853B15B523BBB798C70B8D9159A52EBF8A433A8C8CB2CA635CEA770AEC861D8BEB687335AA775ED7CDCDA49A0A8B1EF6900204225C00E830026A37805E57D5629BB4B646A1CF435AC83A10E98CEC0F756B7C4F487FD714AAD76F662155E3D755FAF903B26581A7696420C4A77A07F10957D89551892813A0D20FEDFFE90829581D1F1C39863207AC1F1E01691BFFACFF3273679CA8241D77F74CC193170BA2CC33A9E9571FFF86412F892396EE936F5EB58A0649934B98479C3306988264D5CA4AF726B3BFBB24FF552A8C1AFEE336B83BC3070357721B3453A13E37341D01FDD779DC807BBA07F26D3372C58BF5828F1A48F3E4D7CF83E629256CBD4ED91BA03EB00D666C3957196F5034D3A91F19FB3E06DA1293B4635A88D5CD49AE5DFA8377C717865B72F66407A83EAA4F6A7077CAC4C220FEBB74B2160A98051655D67403C15E54C0227C63F95F806A0BF2C57D7522272A572F1FD5761432DB53A9CB91EFE65A3E33E090C913EB1BCF45CB9518D818DF39EE8FA1BE8B7338902714CD2EF0B918066ED0573CB6E347908A097F48266D921A6DB6C6CE027 41520200404173401 2 6 100 8191 2 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF963319AF3
41620200404190652 2 6 100 8191 5 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF963D80CBF
41720200407114745 2 6 100 8191 2 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF96F20367B
41820200408113553 2 6 100 8191 2 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF973EEF8A3
41920200409193550 2 6 100 8191 2 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF97A04D14B
42020200410193553 2 6 100 8191 5 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF97C78121F
42120200411093549 2 6 100 8191 5 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF97F2C0DC7
42220200412155343 2 6 100 8191 2 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF982A4594B
42320200413220042 2 6 100 8191 2 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF9880132D3
42420200414091654 2 6 100 8191 2 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF98A23F9AB
42520200415173037 2 6 100 8191 2 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF98D4F179B
42620200415204739 2 6 100 8191 5 C9BECFEF229169BA6895957B61D338147FD9E67666267E2963D7A5587F57261CE8805A323015A9DA97865C6720A855FB346A80C284F9E8B8661DE02027ED9D77E29C25FD08E9BA260CF0D99BF2B69B0F054D642F8E29756D282B4523CF8CC058AA3A274F5D0766A30E269DC7AF3902DC139AC98994961A9186B5538B0F741A774918140CFC62D6BED7CB6E9333682F17683EF6EB53C2912F125105BDFAADB8046BD4FDFA60C4CE0CD0800D4247FFF67A72917E18D86BDFD6A4FBF3301E3290F5F5FF138F8EB4AD0C85AD4DEE6D590B44352B8B42C3A207C677CFCA215DE5391C9BFE5667698AB65D6955CA1FE8CE57D8EFC83FF5547E095FCC476FF3BAF6DD5B6D87F1C836CB712B54B115C0D7640F8F72CBDCE86DBCE6D2C04B7306B16E010A6CBE0BA95ABF269071BB1F5F433BC74D0C19889480A6B5C1683904837C36C7BCF69BE7CB96E0CAA07396224D694FB02F922B33D14C384923F946D104475F49D18A77AE5FA44ADA7C6E16D3B3085821C0B6814DCB565FDC44ED1942C9E25224ED96240D1FEF3817B6161BAD9F16B8C80953882C2FB2722515B10ABEBE969D2318AE9EB81CE91352329591D2874E6121205E072A3D5749190FA847D79B72BD3452DE0B5169601DDB6264AE70A1DC46B3637567787A11AA180B20623440C455722F8131FF09B47DC47814A4925B615A635D6DA05106825E764746CE76EDEE66F8782B9F688AA003B003857B5A659EAAE999171A9353DE0633614093E0A81E1346ABCDCB3CE1A40E8E086A2A2FB9B87394E0F6A0319F42C7B5B8BB9CFB0EF9FDFF6034A397E32E76B6F8C01F3DD2BE81FC938AFE7A1E1D763B4715B2D7CFB4DA9C0B4D013DE532F7D35E177542616DCC3F06736A25F60D0D486D5E4A3797C643977321C9908881170A23D22ADC8768E983DDB79594311DAF4D2CC28AC73E579F36297B0B007B86CB20F185C3A97E772B8FEF731D59A57C9A30D80C5E8B5F62715EA82BE29C5ADBB7A50B2A3E1FE26A7E77A9B53AB69E4A3D4552494F4F0A39459FE8AD9AA7AFEF7CB2560F759E735DED296AE22EDFDF5336671030749F5CE10E6C212BFDC97DA25C5BC80CD62BD490752CD84FA6B8A35BFC752A1CF07C9247C47A0D50D1AC3A713DDF9214E35FF74BF84799732CA0F7032F2ABA00E896CB731A26D09A44E870E9E46D452428F03F6C54CAD2A90A7D95F06F042A929DB5D1D3BEE989F292C1409E780F30B5C00D5965E35EC5957BCF172C26A93E337B1702FAD07940E5EDF2155F1F1CB33E363935829A64665AB6B6D7B6147673E02CF53BA128114C1396785C550D9FC3E38A2E15964CF7BE477766A7AA3310BC6729910C049FAF4FD5895AB3199830EAF34A67FD727FCE77F0FD546A70AE65011839B3A617EC1A2BB2F341A75EC989227E3DEB3DC4DC9911B0BC1F43425401B9D3355CF98DF24F47
42720200416120747 2 6 100 8191 5 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B729317AE516267
42820200416164443 2 6 100 8191 2 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B729317B052A5C3
42920200416182037 2 6 100 8191 2 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B729317B0FD1FE3
43020200416203456 2 6 100 8191 2 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B729317B1F40773
43120200419115426 2 6 100 8191 2 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B729317C703EE2B
43220200420182727 2 6 100 8191 5 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B729317CFC2F4E7
43320200421163640 2 6 100 8191 2 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B729317D5F6A563
43420200421165237 2 6 100 8191 5 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B729317D6070547
43520200421230237 2 6 100 8191 2 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B729317D880CCA3
43620200422193836 2 6 100 8191 5 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B729317DE385AC7
43720200423050749 2 6 100 8191 2 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B729317E3208663
43820200424124535 2 6 100 8191 2 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B729317EE2914A3
43920200425200633 2 6 100 8191 2 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B729317FD928D1B
44020200425223722 2 6 100 8191 2 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B729317FEB7212B
44120200426095445 2 6 100 8191 5 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B72931804287AC7
44220200426121541 2 6 100 8191 2 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B7293180542CD23
44320200426142125 2 6 100 8191 2 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B729318063CF9E3
44420200426144436 2 6 100 8191 5 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B7293180663AFAF
44520200426154241 2 6 100 8191 2 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B72931806D328F3
44620200426180855 2 6 100 8191 2 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B72931808041373
44720200426210432 2 6 100 8191 2 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B729318097002B3
44820200427001200 2 6 100 8191 2 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B7293180AEDF073
44920200427034737 2 6 100 8191 5 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B7293180CA6F67F
45020200427122056 2 6 100 8191 5 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B729318110CCF9F
45120200427185846 2 6 100 8191 2 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B729318146CBE53
45220200428235601 2 6 100 8191 5 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B729318232A7227
45320200429061301 2 6 100 8191 2 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B729318265D253B
45420200429125635 2 6 100 8191 5 FDD2FF1B0B2402FB6FD5FBC2AF7553A3418C2535DFBF5CDB078CEA3D7C44A4863229766D19871460787A24C249D14845D5332DC7B153C10DF45AEBDC462929E786B8384FF62EC1CB99A79928B0EDB9845107488A06141112F534054013B3AA4DC1B2FE160ABA2E8670A0FB7B835D57BF99D5E7474161517D4149677B3BA24D68831195F8EF4145CB44B0FBDB37BF1B36A0B6F517F145FCC7C169C41A0E3A8A313E455A377E5D82B82608EEB14A5E7C5F4E9AA8E5315D1C600077B5F2F50022E2AEEE142E09DD25363862BAE1AF0D37B00C0D824B25C2B579524577AABB5C82452BE70C9AE8D65E935E087A70892E00544BAD691FE677C577917CC495D470E5301A9F75F019268DD8A9ED8F89EE35F6DABECE4507627691A666E86B98578FD03A7AC198728F7BA4348ECF3A61BAA4AD99DA46F97EA9773F1B9ACAA71EE30435E7A82F081C9D0B16495E96645626637CB97BDB4E7932763F826029B6FFE6C0537315BF01C1671029397DA737A5CD1F13F3ECB769D8265BE0148B22DD5FECCA1E7763E837C3FAEC235F1CC2910F51BD05A647C39623EEC1514FA6C64C84804E23D63D0BED6A88A1C6D382EBCF04FD8574C92D662BAFB239EE7984E6D252AD85D3B0D94D040B6FCB4B5120A2E43AF54C11C59B3D4BB777B3E49714FBBF0169ABBDC0CF285F6C37E668966CB8BBA5083A5EBCD706CBED60455ED554794B03D5136AC555A272FD180D2B99B60AEC25096F33C70CF7B6E4ED89D781954B7D52DFB8A0CCD2A237D8693EF8B3236540678ACEEDAC2A621B88B1A478BAB068ADB7CC8A037F8723B89E0FDFFAAD73F5D77007FCF04DB358393A7DC6DF42DCB4EBB853B77D27FFD7A616B9354ED0707431776FE294BAE152689DEE19B18902356B801EC7A760C2075998D6C6AF8CA1D59CB1D294CBA7490D5F54E0997202F4F4298AD554E28FF788093407E005600A35BA4B172B1D141D956965ED477C2EE1F808B45DE3517D66E969F17D8F5C0F4CA8F64F3912E9E8E8E11D3939EEC5CD6E6FB8D1090E65531BD570108A73A0268D370C51D41FF38B96475BE85EFF412B573F998D03C4741F3095ABEB13AC750147D76DF8375DFE62DC289496C8B8C9D692D5034AD7D514EBC3CD05B0ED0B7261823CEF3DFEA3D4324F1E1F5AD0172220225EECF3FC23786D75F1143117275CCDC3F5182C6CD7D194F9F943E0E0D4C64353442E9C0D06584A7D641DA03641E474E48CA631BEDB233526F7B889425561B48D5645BBB2E53CFC32A40771B6A12D0A2A6E0034666F2DBE47E30CE1FD5949963D2A779B02B886E186E20A31ECC948E4BF19E3D206760613F9577D9BC1FC02D68D2AB09C1EA756175FDD76A372E87FF4A9E79AAEE681D79697ED27803F8E6A9E41B92A0F6F239CA72F88F8414F758E98A48A1C0BC30FCF49EC2615F831C0E99E1B72931829B70597
diff --git a/moduli.0 b/moduli.0
index d17ae428d..dbbac1830 100644
--- a/moduli.0
+++ b/moduli.0
@@ -71,4 +71,4 @@ STANDARDS
71 the Secure Shell (SSH) Transport Layer Protocol, RFC 4419, March 2006, 71 the Secure Shell (SSH) Transport Layer Protocol, RFC 4419, March 2006,
72 2006. 72 2006.
73 73
74OpenBSD 6.7 September 26, 2012 OpenBSD 6.7 74OpenBSD 6.8 September 26, 2012 OpenBSD 6.8
diff --git a/monitor.c b/monitor.c
index 8002aca86..98362948f 100644
--- a/monitor.c
+++ b/monitor.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: monitor.c,v 1.210 2020/03/13 03:17:07 djm Exp $ */ 1/* $OpenBSD: monitor.c,v 1.214 2020/08/27 01:07:09 djm Exp $ */
2/* 2/*
3 * Copyright 2002 Niels Provos <provos@citi.umich.edu> 3 * Copyright 2002 Niels Provos <provos@citi.umich.edu>
4 * Copyright 2002 Markus Friedl <markus@openbsd.org> 4 * Copyright 2002 Markus Friedl <markus@openbsd.org>
@@ -698,7 +698,7 @@ mm_answer_sign(struct ssh *ssh, int sock, struct sshbuf *m)
698 698
699 if ((key = get_hostkey_by_index(keyid)) != NULL) { 699 if ((key = get_hostkey_by_index(keyid)) != NULL) {
700 if ((r = sshkey_sign(key, &signature, &siglen, p, datlen, alg, 700 if ((r = sshkey_sign(key, &signature, &siglen, p, datlen, alg,
701 options.sk_provider, compat)) != 0) 701 options.sk_provider, NULL, compat)) != 0)
702 fatal("%s: sshkey_sign failed: %s", 702 fatal("%s: sshkey_sign failed: %s",
703 __func__, ssh_err(r)); 703 __func__, ssh_err(r));
704 } else if ((key = get_hostkey_public_by_index(keyid, ssh)) != NULL && 704 } else if ((key = get_hostkey_public_by_index(keyid, ssh)) != NULL &&
@@ -1433,7 +1433,8 @@ mm_answer_keyverify(struct ssh *ssh, int sock, struct sshbuf *m)
1433 const u_char *signature, *data, *blob; 1433 const u_char *signature, *data, *blob;
1434 char *sigalg = NULL, *fp = NULL; 1434 char *sigalg = NULL, *fp = NULL;
1435 size_t signaturelen, datalen, bloblen; 1435 size_t signaturelen, datalen, bloblen;
1436 int r, ret, req_presence = 0, valid_data = 0, encoded_ret; 1436 int r, ret, req_presence = 0, req_verify = 0, valid_data = 0;
1437 int encoded_ret;
1437 struct sshkey_sig_details *sig_details = NULL; 1438 struct sshkey_sig_details *sig_details = NULL;
1438 1439
1439 if ((r = sshbuf_get_string_direct(m, &blob, &bloblen)) != 0 || 1440 if ((r = sshbuf_get_string_direct(m, &blob, &bloblen)) != 0 ||
@@ -1498,6 +1499,18 @@ mm_answer_keyverify(struct ssh *ssh, int sock, struct sshbuf *m)
1498 ssh_remote_port(ssh)); 1499 ssh_remote_port(ssh));
1499 ret = SSH_ERR_SIGNATURE_INVALID; 1500 ret = SSH_ERR_SIGNATURE_INVALID;
1500 } 1501 }
1502 req_verify = (options.pubkey_auth_options &
1503 PUBKEYAUTH_VERIFY_REQUIRED) || key_opts->require_verify;
1504 if (req_verify &&
1505 (sig_details->sk_flags & SSH_SK_USER_VERIFICATION_REQD) == 0) {
1506 error("public key %s %s signature for %s%s from %.128s "
1507 "port %d rejected: user verification requirement "
1508 "not met ", sshkey_type(key), fp,
1509 authctxt->valid ? "" : "invalid user ",
1510 authctxt->user, ssh_remote_ipaddr(ssh),
1511 ssh_remote_port(ssh));
1512 ret = SSH_ERR_SIGNATURE_INVALID;
1513 }
1501 } 1514 }
1502 auth2_record_key(authctxt, ret == 0, key); 1515 auth2_record_key(authctxt, ret == 0, key);
1503 1516
@@ -1614,7 +1627,7 @@ mm_answer_pty(struct ssh *ssh, int sock, struct sshbuf *m)
1614 if (fd0 != 0) 1627 if (fd0 != 0)
1615 error("%s: fd0 %d != 0", __func__, fd0); 1628 error("%s: fd0 %d != 0", __func__, fd0);
1616 1629
1617 /* slave is not needed */ 1630 /* slave side of pty is not needed */
1618 close(s->ttyfd); 1631 close(s->ttyfd);
1619 s->ttyfd = s->ptyfd; 1632 s->ttyfd = s->ptyfd;
1620 /* no need to dup() because nobody closes ptyfd */ 1633 /* no need to dup() because nobody closes ptyfd */
diff --git a/monitor_wrap.c b/monitor_wrap.c
index b49c268d3..d41d3949d 100644
--- a/monitor_wrap.c
+++ b/monitor_wrap.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: monitor_wrap.c,v 1.117 2019/12/15 18:57:30 djm Exp $ */ 1/* $OpenBSD: monitor_wrap.c,v 1.118 2020/08/27 01:06:18 djm Exp $ */
2/* 2/*
3 * Copyright 2002 Niels Provos <provos@citi.umich.edu> 3 * Copyright 2002 Niels Provos <provos@citi.umich.edu>
4 * Copyright 2002 Markus Friedl <markus@openbsd.org> 4 * Copyright 2002 Markus Friedl <markus@openbsd.org>
@@ -216,7 +216,7 @@ mm_choose_dh(int min, int nbits, int max)
216int 216int
217mm_sshkey_sign(struct ssh *ssh, struct sshkey *key, u_char **sigp, size_t *lenp, 217mm_sshkey_sign(struct ssh *ssh, struct sshkey *key, u_char **sigp, size_t *lenp,
218 const u_char *data, size_t datalen, const char *hostkey_alg, 218 const u_char *data, size_t datalen, const char *hostkey_alg,
219 const char *sk_provider, u_int compat) 219 const char *sk_provider, const char *sk_pin, u_int compat)
220{ 220{
221 struct kex *kex = *pmonitor->m_pkex; 221 struct kex *kex = *pmonitor->m_pkex;
222 struct sshbuf *m; 222 struct sshbuf *m;
diff --git a/monitor_wrap.h b/monitor_wrap.h
index 370b08e17..c39e5dd8b 100644
--- a/monitor_wrap.h
+++ b/monitor_wrap.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: monitor_wrap.h,v 1.44 2019/11/25 00:51:37 djm Exp $ */ 1/* $OpenBSD: monitor_wrap.h,v 1.45 2020/08/27 01:06:18 djm Exp $ */
2 2
3/* 3/*
4 * Copyright 2002 Niels Provos <provos@citi.umich.edu> 4 * Copyright 2002 Niels Provos <provos@citi.umich.edu>
@@ -46,7 +46,8 @@ int mm_is_monitor(void);
46DH *mm_choose_dh(int, int, int); 46DH *mm_choose_dh(int, int, int);
47#endif 47#endif
48int mm_sshkey_sign(struct ssh *, struct sshkey *, u_char **, size_t *, 48int mm_sshkey_sign(struct ssh *, struct sshkey *, u_char **, size_t *,
49 const u_char *, size_t, const char *, const char *, u_int compat); 49 const u_char *, size_t, const char *, const char *,
50 const char *, u_int compat);
50void mm_inform_authserv(char *, char *, char *); 51void mm_inform_authserv(char *, char *, char *);
51void mm_inform_authrole(char *); 52void mm_inform_authrole(char *);
52struct passwd *mm_getpwnamallow(struct ssh *, const char *); 53struct passwd *mm_getpwnamallow(struct ssh *, const char *);
diff --git a/msg.c b/msg.c
index 99c25cd25..574a566e3 100644
--- a/msg.c
+++ b/msg.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: msg.c,v 1.18 2020/01/22 04:49:16 djm Exp $ */ 1/* $OpenBSD: msg.c,v 1.19 2020/06/24 15:08:53 markus Exp $ */
2/* 2/*
3 * Copyright (c) 2002 Markus Friedl. All rights reserved. 3 * Copyright (c) 2002 Markus Friedl. All rights reserved.
4 * 4 *
@@ -77,7 +77,7 @@ ssh_msg_recv(int fd, struct sshbuf *m)
77 return (-1); 77 return (-1);
78 } 78 }
79 msg_len = get_u32(buf); 79 msg_len = get_u32(buf);
80 if (msg_len > 256 * 1024) { 80 if (msg_len > sshbuf_max_size(m)) {
81 error("%s: read: bad msg_len %u", __func__, msg_len); 81 error("%s: read: bad msg_len %u", __func__, msg_len);
82 return (-1); 82 return (-1);
83 } 83 }
diff --git a/mux.c b/mux.c
index fb31ad448..376f0d711 100644
--- a/mux.c
+++ b/mux.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: mux.c,v 1.82 2020/04/30 17:12:20 markus Exp $ */ 1/* $OpenBSD: mux.c,v 1.83 2020/07/05 23:59:45 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2002-2008 Damien Miller <djm@openbsd.org> 3 * Copyright (c) 2002-2008 Damien Miller <djm@openbsd.org>
4 * 4 *
@@ -187,7 +187,7 @@ static const struct {
187 { 0, NULL } 187 { 0, NULL }
188}; 188};
189 189
190/* Cleanup callback fired on closure of mux slave _session_ channel */ 190/* Cleanup callback fired on closure of mux client _session_ channel */
191/* ARGSUSED */ 191/* ARGSUSED */
192static void 192static void
193mux_master_session_cleanup_cb(struct ssh *ssh, int cid, void *unused) 193mux_master_session_cleanup_cb(struct ssh *ssh, int cid, void *unused)
@@ -209,7 +209,7 @@ mux_master_session_cleanup_cb(struct ssh *ssh, int cid, void *unused)
209 channel_cancel_cleanup(ssh, c->self); 209 channel_cancel_cleanup(ssh, c->self);
210} 210}
211 211
212/* Cleanup callback fired on closure of mux slave _control_ channel */ 212/* Cleanup callback fired on closure of mux client _control_ channel */
213/* ARGSUSED */ 213/* ARGSUSED */
214static void 214static void
215mux_master_control_cleanup_cb(struct ssh *ssh, int cid, void *unused) 215mux_master_control_cleanup_cb(struct ssh *ssh, int cid, void *unused)
@@ -287,7 +287,7 @@ mux_master_process_hello(struct ssh *ssh, u_int rid,
287 "(expected %u)", __func__, ver, SSHMUX_VER); 287 "(expected %u)", __func__, ver, SSHMUX_VER);
288 return -1; 288 return -1;
289 } 289 }
290 debug2("%s: channel %d slave version %u", __func__, c->self, ver); 290 debug2("%s: channel %d client version %u", __func__, c->self, ver);
291 291
292 /* No extensions are presently defined */ 292 /* No extensions are presently defined */
293 while (sshbuf_len(m) > 0) { 293 while (sshbuf_len(m) > 0) {
@@ -401,7 +401,7 @@ mux_master_process_new_session(struct ssh *ssh, u_int rid,
401 /* Gather fds from client */ 401 /* Gather fds from client */
402 for(i = 0; i < 3; i++) { 402 for(i = 0; i < 3; i++) {
403 if ((new_fd[i] = mm_receive_fd(c->sock)) == -1) { 403 if ((new_fd[i] = mm_receive_fd(c->sock)) == -1) {
404 error("%s: failed to receive fd %d from slave", 404 error("%s: failed to receive fd %d from client",
405 __func__, i); 405 __func__, i);
406 for (j = 0; j < i; j++) 406 for (j = 0; j < i; j++)
407 close(new_fd[j]); 407 close(new_fd[j]);
@@ -994,7 +994,7 @@ mux_master_process_stdio_fwd(struct ssh *ssh, u_int rid,
994 /* Gather fds from client */ 994 /* Gather fds from client */
995 for(i = 0; i < 2; i++) { 995 for(i = 0; i < 2; i++) {
996 if ((new_fd[i] = mm_receive_fd(c->sock)) == -1) { 996 if ((new_fd[i] = mm_receive_fd(c->sock)) == -1) {
997 error("%s: failed to receive fd %d from slave", 997 error("%s: failed to receive fd %d from client",
998 __func__, i); 998 __func__, i);
999 for (j = 0; j < i; j++) 999 for (j = 0; j < i; j++)
1000 close(new_fd[j]); 1000 close(new_fd[j]);
@@ -1154,7 +1154,7 @@ mux_master_process_proxy(struct ssh *ssh, u_int rid,
1154 return 0; 1154 return 0;
1155} 1155}
1156 1156
1157/* Channel callbacks fired on read/write from mux slave fd */ 1157/* Channel callbacks fired on read/write from mux client fd */
1158static int 1158static int
1159mux_master_read_cb(struct ssh *ssh, Channel *c) 1159mux_master_read_cb(struct ssh *ssh, Channel *c)
1160{ 1160{
diff --git a/openbsd-compat/bcrypt_pbkdf.c b/openbsd-compat/bcrypt_pbkdf.c
index 785234563..62728d38f 100644
--- a/openbsd-compat/bcrypt_pbkdf.c
+++ b/openbsd-compat/bcrypt_pbkdf.c
@@ -15,6 +15,8 @@
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */ 16 */
17 17
18/* OPENBSD ORIGINAL: lib/libutil/bcrypt_pbkdf.c */
19
18#include "includes.h" 20#include "includes.h"
19 21
20#ifndef HAVE_BCRYPT_PBKDF 22#ifndef HAVE_BCRYPT_PBKDF
@@ -91,7 +93,7 @@ bcrypt_hash(u_int8_t *sha2pass, u_int8_t *sha2salt, u_int8_t *out)
91 cdata[i] = Blowfish_stream2word(ciphertext, sizeof(ciphertext), 93 cdata[i] = Blowfish_stream2word(ciphertext, sizeof(ciphertext),
92 &j); 94 &j);
93 for (i = 0; i < 64; i++) 95 for (i = 0; i < 64; i++)
94 blf_enc(&state, cdata, sizeof(cdata) / sizeof(uint64_t)); 96 blf_enc(&state, cdata, sizeof(cdata) / (sizeof(uint64_t)));
95 97
96 /* copy out */ 98 /* copy out */
97 for (i = 0; i < BCRYPT_WORDS; i++) { 99 for (i = 0; i < BCRYPT_WORDS; i++) {
diff --git a/openbsd-compat/memmem.c b/openbsd-compat/memmem.c
index 3e5e6b5e6..ac1243eb0 100644
--- a/openbsd-compat/memmem.c
+++ b/openbsd-compat/memmem.c
@@ -1,30 +1,26 @@
1/* $OpenBSD: memmem.c,v 1.4 2015/08/31 02:53:57 guenther Exp $ */ 1/* $OpenBSD: memmem.c,v 1.5 2020/04/16 12:39:28 claudio Exp $ */
2/*- 2
3 * Copyright (c) 2005 Pascal Gloor <pascal.gloor@spale.com> 3/*
4 * Copyright (c) 2005-2020 Rich Felker, et al.
4 * 5 *
5 * Redistribution and use in source and binary forms, with or without 6 * Permission is hereby granted, free of charge, to any person obtaining
6 * modification, are permitted provided that the following conditions 7 * a copy of this software and associated documentation files (the
7 * are met: 8 * "Software"), to deal in the Software without restriction, including
8 * 1. Redistributions of source code must retain the above copyright 9 * without limitation the rights to use, copy, modify, merge, publish,
9 * notice, this list of conditions and the following disclaimer. 10 * distribute, sublicense, and/or sell copies of the Software, and to
10 * 2. Redistributions in binary form must reproduce the above copyright 11 * permit persons to whom the Software is furnished to do so, subject to
11 * notice, this list of conditions and the following disclaimer in the 12 * the following conditions:
12 * documentation and/or other materials provided with the distribution.
13 * 3. The name of the author may not be used to endorse or promote
14 * products derived from this software without specific prior written
15 * permission.
16 * 13 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14 * The above copyright notice and this permission notice shall be
18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 * included in all copies or substantial portions of the Software.
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16 *
20 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 * SUCH DAMAGE.
28 */ 24 */
29 25
30#include "includes.h" 26#include "includes.h"
@@ -32,38 +28,164 @@
32#ifndef HAVE_MEMMEM 28#ifndef HAVE_MEMMEM
33 29
34#include <string.h> 30#include <string.h>
31#ifdef HAVE_STDINT_H
32#include <stdint.h>
33#endif
34
35static char *
36twobyte_memmem(const unsigned char *h, size_t k, const unsigned char *n)
37{
38 uint16_t nw = n[0]<<8 | n[1], hw = h[0]<<8 | h[1];
39 for (h+=2, k-=2; k; k--, hw = hw<<8 | *h++)
40 if (hw == nw) return (char *)h-2;
41 return hw == nw ? (char *)h-2 : 0;
42}
43
44static char *
45threebyte_memmem(const unsigned char *h, size_t k, const unsigned char *n)
46{
47 uint32_t nw = n[0]<<24 | n[1]<<16 | n[2]<<8;
48 uint32_t hw = h[0]<<24 | h[1]<<16 | h[2]<<8;
49 for (h+=3, k-=3; k; k--, hw = (hw|*h++)<<8)
50 if (hw == nw) return (char *)h-3;
51 return hw == nw ? (char *)h-3 : 0;
52}
53
54static char *
55fourbyte_memmem(const unsigned char *h, size_t k, const unsigned char *n)
56{
57 uint32_t nw = n[0]<<24 | n[1]<<16 | n[2]<<8 | n[3];
58 uint32_t hw = h[0]<<24 | h[1]<<16 | h[2]<<8 | h[3];
59 for (h+=4, k-=4; k; k--, hw = hw<<8 | *h++)
60 if (hw == nw) return (char *)h-4;
61 return hw == nw ? (char *)h-4 : 0;
62}
63
64#define MAX(a,b) ((a)>(b)?(a):(b))
65#define MIN(a,b) ((a)<(b)?(a):(b))
66
67#define BITOP(a,b,op) \
68 ((a)[(size_t)(b)/(8*sizeof *(a))] op (size_t)1<<((size_t)(b)%(8*sizeof *(a))))
35 69
36/* 70/*
37 * Find the first occurrence of the byte string s in byte string l. 71 * Maxime Crochemore and Dominique Perrin, Two-way string-matching,
72 * Journal of the ACM, 38(3):651-675, July 1991.
38 */ 73 */
39 74static char *
40void * 75twoway_memmem(const unsigned char *h, const unsigned char *z,
41memmem(const void *l, size_t l_len, const void *s, size_t s_len) 76 const unsigned char *n, size_t l)
42{ 77{
43 const char *cur, *last; 78 size_t i, ip, jp, k, p, ms, p0, mem, mem0;
44 const char *cl = l; 79 size_t byteset[32 / sizeof(size_t)] = { 0 };
45 const char *cs = s; 80 size_t shift[256];
81
82 /* Computing length of needle and fill shift table */
83 for (i=0; i<l; i++)
84 BITOP(byteset, n[i], |=), shift[n[i]] = i+1;
85
86 /* Compute maximal suffix */
87 ip = -1; jp = 0; k = p = 1;
88 while (jp+k<l) {
89 if (n[ip+k] == n[jp+k]) {
90 if (k == p) {
91 jp += p;
92 k = 1;
93 } else k++;
94 } else if (n[ip+k] > n[jp+k]) {
95 jp += k;
96 k = 1;
97 p = jp - ip;
98 } else {
99 ip = jp++;
100 k = p = 1;
101 }
102 }
103 ms = ip;
104 p0 = p;
105
106 /* And with the opposite comparison */
107 ip = -1; jp = 0; k = p = 1;
108 while (jp+k<l) {
109 if (n[ip+k] == n[jp+k]) {
110 if (k == p) {
111 jp += p;
112 k = 1;
113 } else k++;
114 } else if (n[ip+k] < n[jp+k]) {
115 jp += k;
116 k = 1;
117 p = jp - ip;
118 } else {
119 ip = jp++;
120 k = p = 1;
121 }
122 }
123 if (ip+1 > ms+1) ms = ip;
124 else p = p0;
46 125
47 /* a zero length needle should just return the haystack */ 126 /* Periodic needle? */
48 if (s_len == 0) 127 if (memcmp(n, n+p, ms+1)) {
49 return (void *)cl; 128 mem0 = 0;
129 p = MAX(ms, l-ms-1) + 1;
130 } else mem0 = l-p;
131 mem = 0;
50 132
51 /* "s" must be smaller or equal to "l" */ 133 /* Search loop */
52 if (l_len < s_len) 134 for (;;) {
53 return NULL; 135 /* If remainder of haystack is shorter than needle, done */
136 if (z-h < l) return 0;
137
138 /* Check last byte first; advance by shift on mismatch */
139 if (BITOP(byteset, h[l-1], &)) {
140 k = l-shift[h[l-1]];
141 if (k) {
142 if (k < mem) k = mem;
143 h += k;
144 mem = 0;
145 continue;
146 }
147 } else {
148 h += l;
149 mem = 0;
150 continue;
151 }
152
153 /* Compare right half */
154 for (k=MAX(ms+1,mem); k<l && n[k] == h[k]; k++);
155 if (k < l) {
156 h += k-ms;
157 mem = 0;
158 continue;
159 }
160 /* Compare left half */
161 for (k=ms+1; k>mem && n[k-1] == h[k-1]; k--);
162 if (k <= mem) return (char *)h;
163 h += p;
164 mem = mem0;
165 }
166}
167
168void *
169memmem(const void *h0, size_t k, const void *n0, size_t l)
170{
171 const unsigned char *h = h0, *n = n0;
54 172
55 /* special case where s_len == 1 */ 173 /* Return immediately on empty needle */
56 if (s_len == 1) 174 if (!l) return (void *)h;
57 return memchr(l, *cs, l_len);
58 175
59 /* the last position where its possible to find "s" in "l" */ 176 /* Return immediately when needle is longer than haystack */
60 last = cl + l_len - s_len; 177 if (k<l) return 0;
61 178
62 for (cur = cl; cur <= last; cur++) 179 /* Use faster algorithms for short needles */
63 if (cur[0] == cs[0] && memcmp(cur, cs, s_len) == 0) 180 h = memchr(h0, *n, k);
64 return (void *)cur; 181 if (!h || l==1) return (void *)h;
182 k -= h - (const unsigned char *)h0;
183 if (k<l) return 0;
184 if (l==2) return twobyte_memmem(h, k, n);
185 if (l==3) return threebyte_memmem(h, k, n);
186 if (l==4) return fourbyte_memmem(h, k, n);
65 187
66 return NULL; 188 return twoway_memmem(h, h+k, n, l);
67} 189}
68DEF_WEAK(memmem); 190DEF_WEAK(memmem);
69#endif /* HAVE_MEMMEM */ 191#endif /* HAVE_MEMMEM */
diff --git a/openbsd-compat/port-net.c b/openbsd-compat/port-net.c
index 617bffceb..d7d8c6fa1 100644
--- a/openbsd-compat/port-net.c
+++ b/openbsd-compat/port-net.c
@@ -209,8 +209,11 @@ sys_tun_open(int tun, int mode, char **ifname)
209{ 209{
210 struct ifreq ifr; 210 struct ifreq ifr;
211 char name[100]; 211 char name[100];
212 int fd = -1, sock, flag; 212 int fd = -1, sock;
213 const char *tunbase = "tun"; 213 const char *tunbase = "tun";
214#if defined(TUNSIFHEAD) && !defined(SSH_TUN_PREPEND_AF)
215 int flag;
216#endif
214 217
215 if (ifname != NULL) 218 if (ifname != NULL)
216 *ifname = NULL; 219 *ifname = NULL;
@@ -247,8 +250,8 @@ sys_tun_open(int tun, int mode, char **ifname)
247 } 250 }
248 251
249 /* Turn on tunnel headers */ 252 /* Turn on tunnel headers */
250 flag = 1;
251#if defined(TUNSIFHEAD) && !defined(SSH_TUN_PREPEND_AF) 253#if defined(TUNSIFHEAD) && !defined(SSH_TUN_PREPEND_AF)
254 flag = 1;
252 if (mode != SSH_TUNMODE_ETHERNET && 255 if (mode != SSH_TUNMODE_ETHERNET &&
253 ioctl(fd, TUNSIFHEAD, &flag) == -1) { 256 ioctl(fd, TUNSIFHEAD, &flag) == -1) {
254 debug("%s: ioctl(%d, TUNSIFHEAD, 1): %s", __func__, fd, 257 debug("%s: ioctl(%d, TUNSIFHEAD, 1): %s", __func__, fd,
diff --git a/openbsd-compat/sys-queue.h b/openbsd-compat/sys-queue.h
index 5108f394c..816c15cd4 100644
--- a/openbsd-compat/sys-queue.h
+++ b/openbsd-compat/sys-queue.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: queue.h,v 1.36 2012/04/11 13:29:14 naddy Exp $ */ 1/* $OpenBSD: queue.h,v 1.45 2018/07/12 14:22:54 sashan Exp $ */
2/* $NetBSD: queue.h,v 1.11 1996/05/16 05:17:14 mycroft Exp $ */ 2/* $NetBSD: queue.h,v 1.11 1996/05/16 05:17:14 mycroft Exp $ */
3 3
4/* 4/*
@@ -41,94 +41,97 @@
41 * Require for OS/X and other platforms that have old/broken/incomplete 41 * Require for OS/X and other platforms that have old/broken/incomplete
42 * <sys/queue.h>. 42 * <sys/queue.h>.
43 */ 43 */
44#undef SLIST_HEAD 44#undef CIRCLEQ_EMPTY
45#undef SLIST_HEAD_INITIALIZER 45#undef CIRCLEQ_END
46#undef SLIST_ENTRY 46#undef CIRCLEQ_ENTRY
47#undef SLIST_FOREACH_PREVPTR 47#undef CIRCLEQ_FIRST
48#undef SLIST_FOREACH_SAFE 48#undef CIRCLEQ_FOREACH
49#undef SLIST_FIRST 49#undef CIRCLEQ_FOREACH_REVERSE
50#undef SLIST_END 50#undef CIRCLEQ_HEAD
51#undef SLIST_EMPTY 51#undef CIRCLEQ_HEAD_INITIALIZER
52#undef SLIST_NEXT 52#undef CIRCLEQ_INIT
53#undef SLIST_FOREACH 53#undef CIRCLEQ_INSERT_AFTER
54#undef SLIST_INIT 54#undef CIRCLEQ_INSERT_BEFORE
55#undef SLIST_INSERT_AFTER 55#undef CIRCLEQ_INSERT_HEAD
56#undef SLIST_INSERT_HEAD 56#undef CIRCLEQ_INSERT_TAIL
57#undef SLIST_REMOVE_HEAD 57#undef CIRCLEQ_LAST
58#undef SLIST_REMOVE_AFTER 58#undef CIRCLEQ_NEXT
59#undef SLIST_REMOVE 59#undef CIRCLEQ_PREV
60#undef SLIST_REMOVE_NEXT 60#undef CIRCLEQ_REMOVE
61#undef LIST_HEAD 61#undef CIRCLEQ_REPLACE
62#undef LIST_HEAD_INITIALIZER 62#undef LIST_EMPTY
63#undef LIST_END
63#undef LIST_ENTRY 64#undef LIST_ENTRY
64#undef LIST_FIRST 65#undef LIST_FIRST
65#undef LIST_END
66#undef LIST_EMPTY
67#undef LIST_NEXT
68#undef LIST_FOREACH 66#undef LIST_FOREACH
69#undef LIST_FOREACH_SAFE 67#undef LIST_FOREACH_SAFE
68#undef LIST_HEAD
69#undef LIST_HEAD_INITIALIZER
70#undef LIST_INIT 70#undef LIST_INIT
71#undef LIST_INSERT_AFTER 71#undef LIST_INSERT_AFTER
72#undef LIST_INSERT_BEFORE 72#undef LIST_INSERT_BEFORE
73#undef LIST_INSERT_HEAD 73#undef LIST_INSERT_HEAD
74#undef LIST_NEXT
74#undef LIST_REMOVE 75#undef LIST_REMOVE
75#undef LIST_REPLACE 76#undef LIST_REPLACE
76#undef SIMPLEQ_HEAD 77#undef SIMPLEQ_CONCAT
77#undef SIMPLEQ_HEAD_INITIALIZER 78#undef SIMPLEQ_EMPTY
79#undef SIMPLEQ_END
78#undef SIMPLEQ_ENTRY 80#undef SIMPLEQ_ENTRY
79#undef SIMPLEQ_FIRST 81#undef SIMPLEQ_FIRST
80#undef SIMPLEQ_END
81#undef SIMPLEQ_EMPTY
82#undef SIMPLEQ_NEXT
83#undef SIMPLEQ_FOREACH 82#undef SIMPLEQ_FOREACH
84#undef SIMPLEQ_FOREACH_SAFE 83#undef SIMPLEQ_FOREACH_SAFE
84#undef SIMPLEQ_HEAD
85#undef SIMPLEQ_HEAD_INITIALIZER
85#undef SIMPLEQ_INIT 86#undef SIMPLEQ_INIT
87#undef SIMPLEQ_INSERT_AFTER
86#undef SIMPLEQ_INSERT_HEAD 88#undef SIMPLEQ_INSERT_HEAD
87#undef SIMPLEQ_INSERT_TAIL 89#undef SIMPLEQ_INSERT_TAIL
88#undef SIMPLEQ_INSERT_AFTER 90#undef SIMPLEQ_NEXT
91#undef SIMPLEQ_REMOVE_AFTER
89#undef SIMPLEQ_REMOVE_HEAD 92#undef SIMPLEQ_REMOVE_HEAD
90#undef TAILQ_HEAD 93#undef SLIST_EMPTY
91#undef TAILQ_HEAD_INITIALIZER 94#undef SLIST_END
95#undef SLIST_ENTRY
96#undef SLIST_FIRST
97#undef SLIST_FOREACH
98#undef SLIST_FOREACH_PREVPTR
99#undef SLIST_FOREACH_SAFE
100#undef SLIST_HEAD
101#undef SLIST_HEAD_INITIALIZER
102#undef SLIST_INIT
103#undef SLIST_INSERT_AFTER
104#undef SLIST_INSERT_HEAD
105#undef SLIST_NEXT
106#undef SLIST_REMOVE
107#undef SLIST_REMOVE_AFTER
108#undef SLIST_REMOVE_HEAD
109#undef SLIST_REMOVE_NEXT
110#undef TAILQ_CONCAT
111#undef TAILQ_EMPTY
112#undef TAILQ_END
92#undef TAILQ_ENTRY 113#undef TAILQ_ENTRY
93#undef TAILQ_FIRST 114#undef TAILQ_FIRST
94#undef TAILQ_END
95#undef TAILQ_NEXT
96#undef TAILQ_LAST
97#undef TAILQ_PREV
98#undef TAILQ_EMPTY
99#undef TAILQ_FOREACH 115#undef TAILQ_FOREACH
100#undef TAILQ_FOREACH_REVERSE 116#undef TAILQ_FOREACH_REVERSE
101#undef TAILQ_FOREACH_SAFE
102#undef TAILQ_FOREACH_REVERSE_SAFE 117#undef TAILQ_FOREACH_REVERSE_SAFE
118#undef TAILQ_FOREACH_SAFE
119#undef TAILQ_HEAD
120#undef TAILQ_HEAD_INITIALIZER
103#undef TAILQ_INIT 121#undef TAILQ_INIT
104#undef TAILQ_INSERT_HEAD
105#undef TAILQ_INSERT_TAIL
106#undef TAILQ_INSERT_AFTER 122#undef TAILQ_INSERT_AFTER
107#undef TAILQ_INSERT_BEFORE 123#undef TAILQ_INSERT_BEFORE
124#undef TAILQ_INSERT_HEAD
125#undef TAILQ_INSERT_TAIL
126#undef TAILQ_LAST
127#undef TAILQ_NEXT
128#undef TAILQ_PREV
108#undef TAILQ_REMOVE 129#undef TAILQ_REMOVE
109#undef TAILQ_REPLACE 130#undef TAILQ_REPLACE
110#undef CIRCLEQ_HEAD
111#undef CIRCLEQ_HEAD_INITIALIZER
112#undef CIRCLEQ_ENTRY
113#undef CIRCLEQ_FIRST
114#undef CIRCLEQ_LAST
115#undef CIRCLEQ_END
116#undef CIRCLEQ_NEXT
117#undef CIRCLEQ_PREV
118#undef CIRCLEQ_EMPTY
119#undef CIRCLEQ_FOREACH
120#undef CIRCLEQ_FOREACH_REVERSE
121#undef CIRCLEQ_INIT
122#undef CIRCLEQ_INSERT_AFTER
123#undef CIRCLEQ_INSERT_BEFORE
124#undef CIRCLEQ_INSERT_HEAD
125#undef CIRCLEQ_INSERT_TAIL
126#undef CIRCLEQ_REMOVE
127#undef CIRCLEQ_REPLACE
128 131
129/* 132/*
130 * This file defines five types of data structures: singly-linked lists, 133 * This file defines five types of data structures: singly-linked lists,
131 * lists, simple queues, tail queues, and circular queues. 134 * lists, simple queues, tail queues and XOR simple queues.
132 * 135 *
133 * 136 *
134 * A singly-linked list is headed by a single forward pointer. The elements 137 * A singly-linked list is headed by a single forward pointer. The elements
@@ -148,7 +151,7 @@
148 * or after an existing element or at the head of the list. A list 151 * or after an existing element or at the head of the list. A list
149 * may only be traversed in the forward direction. 152 * may only be traversed in the forward direction.
150 * 153 *
151 * A simple queue is headed by a pair of pointers, one the head of the 154 * A simple queue is headed by a pair of pointers, one to the head of the
152 * list and the other to the tail of the list. The elements are singly 155 * list and the other to the tail of the list. The elements are singly
153 * linked to save space, so elements can only be removed from the 156 * linked to save space, so elements can only be removed from the
154 * head of the list. New elements can be added to the list before or after 157 * head of the list. New elements can be added to the list before or after
@@ -162,19 +165,17 @@
162 * after an existing element, at the head of the list, or at the end of 165 * after an existing element, at the head of the list, or at the end of
163 * the list. A tail queue may be traversed in either direction. 166 * the list. A tail queue may be traversed in either direction.
164 * 167 *
165 * A circle queue is headed by a pair of pointers, one to the head of the 168 * An XOR simple queue is used in the same way as a regular simple queue.
166 * list and the other to the tail of the list. The elements are doubly 169 * The difference is that the head structure also includes a "cookie" that
167 * linked so that an arbitrary element can be removed without a need to 170 * is XOR'd with the queue pointer (first, last or next) to generate the
168 * traverse the list. New elements can be added to the list before or after 171 * real pointer value.
169 * an existing element, at the head of the list, or at the end of the list.
170 * A circle queue may be traversed in either direction, but has a more
171 * complex end of list detection.
172 * 172 *
173 * For details on the use of these macros, see the queue(3) manual page. 173 * For details on the use of these macros, see the queue(3) manual page.
174 */ 174 */
175 175
176#if defined(QUEUE_MACRO_DEBUG) || (defined(_KERNEL) && defined(DIAGNOSTIC)) 176#if defined(QUEUE_MACRO_DEBUG) || (defined(_KERNEL) && defined(DIAGNOSTIC))
177#define _Q_INVALIDATE(a) (a) = ((void *)-1) 177#define _Q_INVALID ((void *)-1)
178#define _Q_INVALIDATE(a) (a) = _Q_INVALID
178#else 179#else
179#define _Q_INVALIDATE(a) 180#define _Q_INVALIDATE(a)
180#endif 181#endif
@@ -186,15 +187,15 @@
186struct name { \ 187struct name { \
187 struct type *slh_first; /* first element */ \ 188 struct type *slh_first; /* first element */ \
188} 189}
189 190
190#define SLIST_HEAD_INITIALIZER(head) \ 191#define SLIST_HEAD_INITIALIZER(head) \
191 { NULL } 192 { NULL }
192 193
193#define SLIST_ENTRY(type) \ 194#define SLIST_ENTRY(type) \
194struct { \ 195struct { \
195 struct type *sle_next; /* next element */ \ 196 struct type *sle_next; /* next element */ \
196} 197}
197 198
198/* 199/*
199 * Singly-linked List access methods. 200 * Singly-linked List access methods.
200 */ 201 */
@@ -248,8 +249,8 @@ struct { \
248 curelm = curelm->field.sle_next; \ 249 curelm = curelm->field.sle_next; \
249 curelm->field.sle_next = \ 250 curelm->field.sle_next = \
250 curelm->field.sle_next->field.sle_next; \ 251 curelm->field.sle_next->field.sle_next; \
251 _Q_INVALIDATE((elm)->field.sle_next); \
252 } \ 252 } \
253 _Q_INVALIDATE((elm)->field.sle_next); \
253} while (0) 254} while (0)
254 255
255/* 256/*
@@ -270,7 +271,7 @@ struct { \
270} 271}
271 272
272/* 273/*
273 * List access methods 274 * List access methods.
274 */ 275 */
275#define LIST_FIRST(head) ((head)->lh_first) 276#define LIST_FIRST(head) ((head)->lh_first)
276#define LIST_END(head) NULL 277#define LIST_END(head) NULL
@@ -407,6 +408,94 @@ struct { \
407 (head)->sqh_last = &(elm)->field.sqe_next; \ 408 (head)->sqh_last = &(elm)->field.sqe_next; \
408} while (0) 409} while (0)
409 410
411#define SIMPLEQ_CONCAT(head1, head2) do { \
412 if (!SIMPLEQ_EMPTY((head2))) { \
413 *(head1)->sqh_last = (head2)->sqh_first; \
414 (head1)->sqh_last = (head2)->sqh_last; \
415 SIMPLEQ_INIT((head2)); \
416 } \
417} while (0)
418
419/*
420 * XOR Simple queue definitions.
421 */
422#define XSIMPLEQ_HEAD(name, type) \
423struct name { \
424 struct type *sqx_first; /* first element */ \
425 struct type **sqx_last; /* addr of last next element */ \
426 unsigned long sqx_cookie; \
427}
428
429#define XSIMPLEQ_ENTRY(type) \
430struct { \
431 struct type *sqx_next; /* next element */ \
432}
433
434/*
435 * XOR Simple queue access methods.
436 */
437#define XSIMPLEQ_XOR(head, ptr) ((__typeof(ptr))((head)->sqx_cookie ^ \
438 (unsigned long)(ptr)))
439#define XSIMPLEQ_FIRST(head) XSIMPLEQ_XOR(head, ((head)->sqx_first))
440#define XSIMPLEQ_END(head) NULL
441#define XSIMPLEQ_EMPTY(head) (XSIMPLEQ_FIRST(head) == XSIMPLEQ_END(head))
442#define XSIMPLEQ_NEXT(head, elm, field) XSIMPLEQ_XOR(head, ((elm)->field.sqx_next))
443
444
445#define XSIMPLEQ_FOREACH(var, head, field) \
446 for ((var) = XSIMPLEQ_FIRST(head); \
447 (var) != XSIMPLEQ_END(head); \
448 (var) = XSIMPLEQ_NEXT(head, var, field))
449
450#define XSIMPLEQ_FOREACH_SAFE(var, head, field, tvar) \
451 for ((var) = XSIMPLEQ_FIRST(head); \
452 (var) && ((tvar) = XSIMPLEQ_NEXT(head, var, field), 1); \
453 (var) = (tvar))
454
455/*
456 * XOR Simple queue functions.
457 */
458#define XSIMPLEQ_INIT(head) do { \
459 arc4random_buf(&(head)->sqx_cookie, sizeof((head)->sqx_cookie)); \
460 (head)->sqx_first = XSIMPLEQ_XOR(head, NULL); \
461 (head)->sqx_last = XSIMPLEQ_XOR(head, &(head)->sqx_first); \
462} while (0)
463
464#define XSIMPLEQ_INSERT_HEAD(head, elm, field) do { \
465 if (((elm)->field.sqx_next = (head)->sqx_first) == \
466 XSIMPLEQ_XOR(head, NULL)) \
467 (head)->sqx_last = XSIMPLEQ_XOR(head, &(elm)->field.sqx_next); \
468 (head)->sqx_first = XSIMPLEQ_XOR(head, (elm)); \
469} while (0)
470
471#define XSIMPLEQ_INSERT_TAIL(head, elm, field) do { \
472 (elm)->field.sqx_next = XSIMPLEQ_XOR(head, NULL); \
473 *(XSIMPLEQ_XOR(head, (head)->sqx_last)) = XSIMPLEQ_XOR(head, (elm)); \
474 (head)->sqx_last = XSIMPLEQ_XOR(head, &(elm)->field.sqx_next); \
475} while (0)
476
477#define XSIMPLEQ_INSERT_AFTER(head, listelm, elm, field) do { \
478 if (((elm)->field.sqx_next = (listelm)->field.sqx_next) == \
479 XSIMPLEQ_XOR(head, NULL)) \
480 (head)->sqx_last = XSIMPLEQ_XOR(head, &(elm)->field.sqx_next); \
481 (listelm)->field.sqx_next = XSIMPLEQ_XOR(head, (elm)); \
482} while (0)
483
484#define XSIMPLEQ_REMOVE_HEAD(head, field) do { \
485 if (((head)->sqx_first = XSIMPLEQ_XOR(head, \
486 (head)->sqx_first)->field.sqx_next) == XSIMPLEQ_XOR(head, NULL)) \
487 (head)->sqx_last = XSIMPLEQ_XOR(head, &(head)->sqx_first); \
488} while (0)
489
490#define XSIMPLEQ_REMOVE_AFTER(head, elm, field) do { \
491 if (((elm)->field.sqx_next = XSIMPLEQ_XOR(head, \
492 (elm)->field.sqx_next)->field.sqx_next) \
493 == XSIMPLEQ_XOR(head, NULL)) \
494 (head)->sqx_last = \
495 XSIMPLEQ_XOR(head, &(elm)->field.sqx_next); \
496} while (0)
497
498
410/* 499/*
411 * Tail queue definitions. 500 * Tail queue definitions.
412 */ 501 */
@@ -425,8 +514,8 @@ struct { \
425 struct type **tqe_prev; /* address of previous next element */ \ 514 struct type **tqe_prev; /* address of previous next element */ \
426} 515}
427 516
428/* 517/*
429 * tail queue access methods 518 * Tail queue access methods.
430 */ 519 */
431#define TAILQ_FIRST(head) ((head)->tqh_first) 520#define TAILQ_FIRST(head) ((head)->tqh_first)
432#define TAILQ_END(head) NULL 521#define TAILQ_END(head) NULL
@@ -527,133 +616,13 @@ struct { \
527 _Q_INVALIDATE((elm)->field.tqe_next); \ 616 _Q_INVALIDATE((elm)->field.tqe_next); \
528} while (0) 617} while (0)
529 618
530/* 619#define TAILQ_CONCAT(head1, head2, field) do { \
531 * Circular queue definitions. 620 if (!TAILQ_EMPTY(head2)) { \
532 */ 621 *(head1)->tqh_last = (head2)->tqh_first; \
533#define CIRCLEQ_HEAD(name, type) \ 622 (head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \
534struct name { \ 623 (head1)->tqh_last = (head2)->tqh_last; \
535 struct type *cqh_first; /* first element */ \ 624 TAILQ_INIT((head2)); \
536 struct type *cqh_last; /* last element */ \ 625 } \
537}
538
539#define CIRCLEQ_HEAD_INITIALIZER(head) \
540 { CIRCLEQ_END(&head), CIRCLEQ_END(&head) }
541
542#define CIRCLEQ_ENTRY(type) \
543struct { \
544 struct type *cqe_next; /* next element */ \
545 struct type *cqe_prev; /* previous element */ \
546}
547
548/*
549 * Circular queue access methods
550 */
551#define CIRCLEQ_FIRST(head) ((head)->cqh_first)
552#define CIRCLEQ_LAST(head) ((head)->cqh_last)
553#define CIRCLEQ_END(head) ((void *)(head))
554#define CIRCLEQ_NEXT(elm, field) ((elm)->field.cqe_next)
555#define CIRCLEQ_PREV(elm, field) ((elm)->field.cqe_prev)
556#define CIRCLEQ_EMPTY(head) \
557 (CIRCLEQ_FIRST(head) == CIRCLEQ_END(head))
558
559#define CIRCLEQ_FOREACH(var, head, field) \
560 for((var) = CIRCLEQ_FIRST(head); \
561 (var) != CIRCLEQ_END(head); \
562 (var) = CIRCLEQ_NEXT(var, field))
563
564#define CIRCLEQ_FOREACH_SAFE(var, head, field, tvar) \
565 for ((var) = CIRCLEQ_FIRST(head); \
566 (var) != CIRCLEQ_END(head) && \
567 ((tvar) = CIRCLEQ_NEXT(var, field), 1); \
568 (var) = (tvar))
569
570#define CIRCLEQ_FOREACH_REVERSE(var, head, field) \
571 for((var) = CIRCLEQ_LAST(head); \
572 (var) != CIRCLEQ_END(head); \
573 (var) = CIRCLEQ_PREV(var, field))
574
575#define CIRCLEQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \
576 for ((var) = CIRCLEQ_LAST(head, headname); \
577 (var) != CIRCLEQ_END(head) && \
578 ((tvar) = CIRCLEQ_PREV(var, headname, field), 1); \
579 (var) = (tvar))
580
581/*
582 * Circular queue functions.
583 */
584#define CIRCLEQ_INIT(head) do { \
585 (head)->cqh_first = CIRCLEQ_END(head); \
586 (head)->cqh_last = CIRCLEQ_END(head); \
587} while (0)
588
589#define CIRCLEQ_INSERT_AFTER(head, listelm, elm, field) do { \
590 (elm)->field.cqe_next = (listelm)->field.cqe_next; \
591 (elm)->field.cqe_prev = (listelm); \
592 if ((listelm)->field.cqe_next == CIRCLEQ_END(head)) \
593 (head)->cqh_last = (elm); \
594 else \
595 (listelm)->field.cqe_next->field.cqe_prev = (elm); \
596 (listelm)->field.cqe_next = (elm); \
597} while (0)
598
599#define CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field) do { \
600 (elm)->field.cqe_next = (listelm); \
601 (elm)->field.cqe_prev = (listelm)->field.cqe_prev; \
602 if ((listelm)->field.cqe_prev == CIRCLEQ_END(head)) \
603 (head)->cqh_first = (elm); \
604 else \
605 (listelm)->field.cqe_prev->field.cqe_next = (elm); \
606 (listelm)->field.cqe_prev = (elm); \
607} while (0)
608
609#define CIRCLEQ_INSERT_HEAD(head, elm, field) do { \
610 (elm)->field.cqe_next = (head)->cqh_first; \
611 (elm)->field.cqe_prev = CIRCLEQ_END(head); \
612 if ((head)->cqh_last == CIRCLEQ_END(head)) \
613 (head)->cqh_last = (elm); \
614 else \
615 (head)->cqh_first->field.cqe_prev = (elm); \
616 (head)->cqh_first = (elm); \
617} while (0)
618
619#define CIRCLEQ_INSERT_TAIL(head, elm, field) do { \
620 (elm)->field.cqe_next = CIRCLEQ_END(head); \
621 (elm)->field.cqe_prev = (head)->cqh_last; \
622 if ((head)->cqh_first == CIRCLEQ_END(head)) \
623 (head)->cqh_first = (elm); \
624 else \
625 (head)->cqh_last->field.cqe_next = (elm); \
626 (head)->cqh_last = (elm); \
627} while (0)
628
629#define CIRCLEQ_REMOVE(head, elm, field) do { \
630 if ((elm)->field.cqe_next == CIRCLEQ_END(head)) \
631 (head)->cqh_last = (elm)->field.cqe_prev; \
632 else \
633 (elm)->field.cqe_next->field.cqe_prev = \
634 (elm)->field.cqe_prev; \
635 if ((elm)->field.cqe_prev == CIRCLEQ_END(head)) \
636 (head)->cqh_first = (elm)->field.cqe_next; \
637 else \
638 (elm)->field.cqe_prev->field.cqe_next = \
639 (elm)->field.cqe_next; \
640 _Q_INVALIDATE((elm)->field.cqe_prev); \
641 _Q_INVALIDATE((elm)->field.cqe_next); \
642} while (0)
643
644#define CIRCLEQ_REPLACE(head, elm, elm2, field) do { \
645 if (((elm2)->field.cqe_next = (elm)->field.cqe_next) == \
646 CIRCLEQ_END(head)) \
647 (head).cqh_last = (elm2); \
648 else \
649 (elm2)->field.cqe_next->field.cqe_prev = (elm2); \
650 if (((elm2)->field.cqe_prev = (elm)->field.cqe_prev) == \
651 CIRCLEQ_END(head)) \
652 (head).cqh_first = (elm2); \
653 else \
654 (elm2)->field.cqe_prev->field.cqe_next = (elm2); \
655 _Q_INVALIDATE((elm)->field.cqe_prev); \
656 _Q_INVALIDATE((elm)->field.cqe_next); \
657} while (0) 626} while (0)
658 627
659#endif /* !_FAKE_QUEUE_H_ */ 628#endif /* !_SYS_QUEUE_H_ */
diff --git a/packet.c b/packet.c
index e7abb3416..00e3180cb 100644
--- a/packet.c
+++ b/packet.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: packet.c,v 1.291 2020/03/06 18:20:44 markus Exp $ */ 1/* $OpenBSD: packet.c,v 1.296 2020/07/05 23:59:45 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -282,7 +282,8 @@ ssh_packet_set_input_hook(struct ssh *ssh, ssh_packet_hook_fn *hook, void *ctx)
282int 282int
283ssh_packet_is_rekeying(struct ssh *ssh) 283ssh_packet_is_rekeying(struct ssh *ssh)
284{ 284{
285 return ssh->state->rekeying || ssh->kex->done == 0; 285 return ssh->state->rekeying ||
286 (ssh->kex != NULL && ssh->kex->done == 0);
286} 287}
287 288
288/* 289/*
@@ -345,6 +346,8 @@ ssh_packet_set_mux(struct ssh *ssh)
345{ 346{
346 ssh->state->mux = 1; 347 ssh->state->mux = 1;
347 ssh->state->rekeying = 0; 348 ssh->state->rekeying = 0;
349 kex_free(ssh->kex);
350 ssh->kex = NULL;
348} 351}
349 352
350int 353int
@@ -651,6 +654,8 @@ ssh_packet_close_internal(struct ssh *ssh, int do_close)
651 ssh->remote_ipaddr = NULL; 654 ssh->remote_ipaddr = NULL;
652 free(ssh->state); 655 free(ssh->state);
653 ssh->state = NULL; 656 ssh->state = NULL;
657 kex_free(ssh->kex);
658 ssh->kex = NULL;
654 } 659 }
655} 660}
656 661
@@ -2445,7 +2450,7 @@ ssh_packet_set_state(struct ssh *ssh, struct sshbuf *m)
2445 (r = sshbuf_get_u64(m, &state->p_read.bytes)) != 0) 2450 (r = sshbuf_get_u64(m, &state->p_read.bytes)) != 0)
2446 return r; 2451 return r;
2447 /* 2452 /*
2448 * We set the time here so that in post-auth privsep slave we 2453 * We set the time here so that in post-auth privsep child we
2449 * count from the completion of the authentication. 2454 * count from the completion of the authentication.
2450 */ 2455 */
2451 state->rekey_time = monotime(); 2456 state->rekey_time = monotime();
diff --git a/readconf.c b/readconf.c
index 9a646dcaa..c60df5602 100644
--- a/readconf.c
+++ b/readconf.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: readconf.c,v 1.329 2020/04/24 03:33:21 dtucker Exp $ */ 1/* $OpenBSD: readconf.c,v 1.335 2020/08/27 02:11:09 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -683,7 +683,7 @@ match_cfg_line(Options *options, char **condition, struct passwd *pw,
683 if (r == (negate ? 1 : 0)) 683 if (r == (negate ? 1 : 0))
684 this_result = result = 0; 684 this_result = result = 0;
685 } else if (strcasecmp(attrib, "exec") == 0) { 685 } else if (strcasecmp(attrib, "exec") == 0) {
686 char *conn_hash_hex; 686 char *conn_hash_hex, *keyalias;
687 687
688 if (gethostname(thishost, sizeof(thishost)) == -1) 688 if (gethostname(thishost, sizeof(thishost)) == -1)
689 fatal("gethostname: %s", strerror(errno)); 689 fatal("gethostname: %s", strerror(errno));
@@ -694,12 +694,15 @@ match_cfg_line(Options *options, char **condition, struct passwd *pw,
694 (unsigned long long)pw->pw_uid); 694 (unsigned long long)pw->pw_uid);
695 conn_hash_hex = ssh_connection_hash(thishost, host, 695 conn_hash_hex = ssh_connection_hash(thishost, host,
696 portstr, ruser); 696 portstr, ruser);
697 keyalias = options->host_key_alias ?
698 options->host_key_alias : host;
697 699
698 cmd = percent_expand(arg, 700 cmd = percent_expand(arg,
699 "C", conn_hash_hex, 701 "C", conn_hash_hex,
700 "L", shorthost, 702 "L", shorthost,
701 "d", pw->pw_dir, 703 "d", pw->pw_dir,
702 "h", host, 704 "h", host,
705 "k", keyalias,
703 "l", thishost, 706 "l", thishost,
704 "n", original_host, 707 "n", original_host,
705 "p", portstr, 708 "p", portstr,
@@ -754,7 +757,7 @@ match_cfg_line(Options *options, char **condition, struct passwd *pw,
754static void 757static void
755rm_env(Options *options, const char *arg, const char *filename, int linenum) 758rm_env(Options *options, const char *arg, const char *filename, int linenum)
756{ 759{
757 int i, j; 760 int i, j, onum_send_env = options->num_send_env;
758 char *cp; 761 char *cp;
759 762
760 /* Remove an environment variable */ 763 /* Remove an environment variable */
@@ -777,6 +780,11 @@ rm_env(Options *options, const char *arg, const char *filename, int linenum)
777 options->num_send_env--; 780 options->num_send_env--;
778 /* NB. don't increment i */ 781 /* NB. don't increment i */
779 } 782 }
783 if (onum_send_env != options->num_send_env) {
784 options->send_env = xrecallocarray(options->send_env,
785 onum_send_env, options->num_send_env,
786 sizeof(*options->send_env));
787 }
780} 788}
781 789
782/* 790/*
@@ -888,6 +896,21 @@ static const struct multistate multistate_compression[] = {
888 { NULL, -1 } 896 { NULL, -1 }
889}; 897};
890 898
899static int
900parse_multistate_value(const char *arg, const char *filename, int linenum,
901 const struct multistate *multistate_ptr)
902{
903 int i;
904
905 if (!arg || *arg == '\0')
906 fatal("%s line %d: missing argument.", filename, linenum);
907 for (i = 0; multistate_ptr[i].key != NULL; i++) {
908 if (strcasecmp(arg, multistate_ptr[i].key) == 0)
909 return multistate_ptr[i].value;
910 }
911 return -1;
912}
913
891/* 914/*
892 * Processes a single option line as used in the configuration files. This 915 * Processes a single option line as used in the configuration files. This
893 * only sets those values that have not already been set. 916 * only sets those values that have not already been set.
@@ -1011,19 +1034,11 @@ parse_time:
1011 multistate_ptr = multistate_flag; 1034 multistate_ptr = multistate_flag;
1012 parse_multistate: 1035 parse_multistate:
1013 arg = strdelim(&s); 1036 arg = strdelim(&s);
1014 if (!arg || *arg == '\0') 1037 if ((value = parse_multistate_value(arg, filename, linenum,
1015 fatal("%s line %d: missing argument.", 1038 multistate_ptr)) == -1) {
1016 filename, linenum);
1017 value = -1;
1018 for (i = 0; multistate_ptr[i].key != NULL; i++) {
1019 if (strcasecmp(arg, multistate_ptr[i].key) == 0) {
1020 value = multistate_ptr[i].value;
1021 break;
1022 }
1023 }
1024 if (value == -1)
1025 fatal("%s line %d: unsupported option \"%s\".", 1039 fatal("%s line %d: unsupported option \"%s\".",
1026 filename, linenum, arg); 1040 filename, linenum, arg);
1041 }
1027 if (*activep && *intptr == -1) 1042 if (*activep && *intptr == -1)
1028 *intptr = value; 1043 *intptr = value;
1029 break; 1044 break;
@@ -1845,9 +1860,30 @@ parse_keytypes:
1845 goto parse_keytypes; 1860 goto parse_keytypes;
1846 1861
1847 case oAddKeysToAgent: 1862 case oAddKeysToAgent:
1848 intptr = &options->add_keys_to_agent; 1863 arg = strdelim(&s);
1849 multistate_ptr = multistate_yesnoaskconfirm; 1864 arg2 = strdelim(&s);
1850 goto parse_multistate; 1865 value = parse_multistate_value(arg, filename, linenum,
1866 multistate_yesnoaskconfirm);
1867 value2 = 0; /* unlimited lifespan by default */
1868 if (value == 3 && arg2 != NULL) {
1869 /* allow "AddKeysToAgent confirm 5m" */
1870 if ((value2 = convtime(arg2)) == -1 || value2 > INT_MAX)
1871 fatal("%s line %d: invalid time value.",
1872 filename, linenum);
1873 } else if (value == -1 && arg2 == NULL) {
1874 if ((value2 = convtime(arg)) == -1 || value2 > INT_MAX)
1875 fatal("%s line %d: unsupported option",
1876 filename, linenum);
1877 value = 1; /* yes */
1878 } else if (value == -1 || arg2 != NULL) {
1879 fatal("%s line %d: unsupported option",
1880 filename, linenum);
1881 }
1882 if (*activep && options->add_keys_to_agent == -1) {
1883 options->add_keys_to_agent = value;
1884 options->add_keys_to_agent_lifespan = value2;
1885 }
1886 break;
1851 1887
1852 case oIdentityAgent: 1888 case oIdentityAgent:
1853 charptr = &options->identity_agent; 1889 charptr = &options->identity_agent;
@@ -1857,7 +1893,12 @@ parse_keytypes:
1857 filename, linenum); 1893 filename, linenum);
1858 parse_agent_path: 1894 parse_agent_path:
1859 /* Extra validation if the string represents an env var. */ 1895 /* Extra validation if the string represents an env var. */
1860 if (arg[0] == '$' && !valid_env_name(arg + 1)) { 1896 if ((arg2 = dollar_expand(&r, arg)) == NULL || r)
1897 fatal("%.200s line %d: Invalid environment expansion "
1898 "%s.", filename, linenum, arg);
1899 free(arg2);
1900 /* check for legacy environment format */
1901 if (arg[0] == '$' && arg[1] != '{' && !valid_env_name(arg + 1)) {
1861 fatal("%.200s line %d: Invalid environment name %s.", 1902 fatal("%.200s line %d: Invalid environment name %s.",
1862 filename, linenum, arg); 1903 filename, linenum, arg);
1863 } 1904 }
@@ -2061,6 +2102,7 @@ initialize_options(Options * options)
2061 options->permit_local_command = -1; 2102 options->permit_local_command = -1;
2062 options->remote_command = NULL; 2103 options->remote_command = NULL;
2063 options->add_keys_to_agent = -1; 2104 options->add_keys_to_agent = -1;
2105 options->add_keys_to_agent_lifespan = -1;
2064 options->identity_agent = NULL; 2106 options->identity_agent = NULL;
2065 options->visual_host_key = -1; 2107 options->visual_host_key = -1;
2066 options->ip_qos_interactive = -1; 2108 options->ip_qos_interactive = -1;
@@ -2178,8 +2220,10 @@ fill_default_options(Options * options)
2178 if (options->number_of_password_prompts == -1) 2220 if (options->number_of_password_prompts == -1)
2179 options->number_of_password_prompts = 3; 2221 options->number_of_password_prompts = 3;
2180 /* options->hostkeyalgorithms, default set in myproposals.h */ 2222 /* options->hostkeyalgorithms, default set in myproposals.h */
2181 if (options->add_keys_to_agent == -1) 2223 if (options->add_keys_to_agent == -1) {
2182 options->add_keys_to_agent = 0; 2224 options->add_keys_to_agent = 0;
2225 options->add_keys_to_agent_lifespan = 0;
2226 }
2183 if (options->num_identity_files == 0) { 2227 if (options->num_identity_files == 0) {
2184 add_identity_file(options, "~/", _PATH_SSH_CLIENT_ID_RSA, 0); 2228 add_identity_file(options, "~/", _PATH_SSH_CLIENT_ID_RSA, 0);
2185 add_identity_file(options, "~/", _PATH_SSH_CLIENT_ID_DSA, 0); 2229 add_identity_file(options, "~/", _PATH_SSH_CLIENT_ID_DSA, 0);
@@ -2284,11 +2328,11 @@ fill_default_options(Options * options)
2284 all_key = sshkey_alg_list(0, 0, 1, ','); 2328 all_key = sshkey_alg_list(0, 0, 1, ',');
2285 all_sig = sshkey_alg_list(0, 1, 1, ','); 2329 all_sig = sshkey_alg_list(0, 1, 1, ',');
2286 /* remove unsupported algos from default lists */ 2330 /* remove unsupported algos from default lists */
2287 def_cipher = match_filter_whitelist(KEX_CLIENT_ENCRYPT, all_cipher); 2331 def_cipher = match_filter_allowlist(KEX_CLIENT_ENCRYPT, all_cipher);
2288 def_mac = match_filter_whitelist(KEX_CLIENT_MAC, all_mac); 2332 def_mac = match_filter_allowlist(KEX_CLIENT_MAC, all_mac);
2289 def_kex = match_filter_whitelist(KEX_CLIENT_KEX, all_kex); 2333 def_kex = match_filter_allowlist(KEX_CLIENT_KEX, all_kex);
2290 def_key = match_filter_whitelist(KEX_DEFAULT_PK_ALG, all_key); 2334 def_key = match_filter_allowlist(KEX_DEFAULT_PK_ALG, all_key);
2291 def_sig = match_filter_whitelist(SSH_ALLOWED_CA_SIGALGS, all_sig); 2335 def_sig = match_filter_allowlist(SSH_ALLOWED_CA_SIGALGS, all_sig);
2292#define ASSEMBLE(what, defaults, all) \ 2336#define ASSEMBLE(what, defaults, all) \
2293 do { \ 2337 do { \
2294 if ((r = kex_assemble_names(&options->what, \ 2338 if ((r = kex_assemble_names(&options->what, \
@@ -2423,12 +2467,19 @@ parse_forward(struct Forward *fwd, const char *fwdspec, int dynamicfwd, int remo
2423{ 2467{
2424 struct fwdarg fwdargs[4]; 2468 struct fwdarg fwdargs[4];
2425 char *p, *cp; 2469 char *p, *cp;
2426 int i; 2470 int i, err;
2427 2471
2428 memset(fwd, 0, sizeof(*fwd)); 2472 memset(fwd, 0, sizeof(*fwd));
2429 memset(fwdargs, 0, sizeof(fwdargs)); 2473 memset(fwdargs, 0, sizeof(fwdargs));
2430 2474
2431 cp = p = xstrdup(fwdspec); 2475 /*
2476 * We expand environment variables before checking if we think they're
2477 * paths so that if ${VAR} expands to a fully qualified path it is
2478 * treated as a path.
2479 */
2480 cp = p = dollar_expand(&err, fwdspec);
2481 if (p == NULL || err)
2482 return 0;
2432 2483
2433 /* skip leading spaces */ 2484 /* skip leading spaces */
2434 while (isspace((u_char)*cp)) 2485 while (isspace((u_char)*cp))
@@ -2781,7 +2832,6 @@ dump_client_config(Options *o, const char *host)
2781 dump_cfg_int(oPort, o->port); 2832 dump_cfg_int(oPort, o->port);
2782 2833
2783 /* Flag options */ 2834 /* Flag options */
2784 dump_cfg_fmtint(oAddKeysToAgent, o->add_keys_to_agent);
2785 dump_cfg_fmtint(oAddressFamily, o->address_family); 2835 dump_cfg_fmtint(oAddressFamily, o->address_family);
2786 dump_cfg_fmtint(oBatchMode, o->batch_mode); 2836 dump_cfg_fmtint(oBatchMode, o->batch_mode);
2787 dump_cfg_fmtint(oCanonicalizeFallbackLocal, o->canonicalize_fallback_local); 2837 dump_cfg_fmtint(oCanonicalizeFallbackLocal, o->canonicalize_fallback_local);
@@ -2876,6 +2926,15 @@ dump_client_config(Options *o, const char *host)
2876 2926
2877 /* Special cases */ 2927 /* Special cases */
2878 2928
2929 /* AddKeysToAgent */
2930 if (o->add_keys_to_agent_lifespan <= 0)
2931 dump_cfg_fmtint(oAddKeysToAgent, o->add_keys_to_agent);
2932 else {
2933 printf("addkeystoagent%s %d\n",
2934 o->add_keys_to_agent == 3 ? " confirm" : "",
2935 o->add_keys_to_agent_lifespan);
2936 }
2937
2879 /* oForwardAgent */ 2938 /* oForwardAgent */
2880 if (o->forward_agent_sock_path == NULL) 2939 if (o->forward_agent_sock_path == NULL)
2881 dump_cfg_fmtint(oForwardAgent, o->forward_agent); 2940 dump_cfg_fmtint(oForwardAgent, o->forward_agent);
diff --git a/readconf.h b/readconf.h
index c405b837f..3803eeddf 100644
--- a/readconf.h
+++ b/readconf.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: readconf.h,v 1.133 2020/04/03 02:27:12 dtucker Exp $ */ 1/* $OpenBSD: readconf.h,v 1.134 2020/08/11 09:49:57 djm Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -103,6 +103,7 @@ typedef struct {
103 struct sshkey *certificates[SSH_MAX_CERTIFICATE_FILES]; 103 struct sshkey *certificates[SSH_MAX_CERTIFICATE_FILES];
104 104
105 int add_keys_to_agent; 105 int add_keys_to_agent;
106 int add_keys_to_agent_lifespan;
106 char *identity_agent; /* Optional path to ssh-agent socket */ 107 char *identity_agent; /* Optional path to ssh-agent socket */
107 108
108 /* Local TCP/IP forward requests. */ 109 /* Local TCP/IP forward requests. */
diff --git a/readpass.c b/readpass.c
index 974d67f0b..122d2a87c 100644
--- a/readpass.c
+++ b/readpass.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: readpass.c,v 1.61 2020/01/23 07:10:22 dtucker Exp $ */ 1/* $OpenBSD: readpass.c,v 1.63 2020/08/11 09:45:54 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2001 Markus Friedl. All rights reserved. 3 * Copyright (c) 2001 Markus Friedl. All rights reserved.
4 * 4 *
@@ -123,11 +123,26 @@ char *
123read_passphrase(const char *prompt, int flags) 123read_passphrase(const char *prompt, int flags)
124{ 124{
125 char cr = '\r', *askpass = NULL, *ret, buf[1024]; 125 char cr = '\r', *askpass = NULL, *ret, buf[1024];
126 int rppflags, use_askpass = 0, ttyfd; 126 int rppflags, ttyfd, use_askpass = 0, allow_askpass = 0;
127 const char *askpass_hint = NULL; 127 const char *askpass_hint = NULL;
128 const char *s;
129
130 if ((s = getenv("DISPLAY")) != NULL)
131 allow_askpass = *s != '\0';
132 if ((s = getenv(SSH_ASKPASS_REQUIRE_ENV)) != NULL) {
133 if (strcasecmp(s, "force") == 0) {
134 use_askpass = 1;
135 allow_askpass = 1;
136 } else if (strcasecmp(s, "prefer") == 0)
137 use_askpass = allow_askpass;
138 else if (strcasecmp(s, "never") == 0)
139 allow_askpass = 0;
140 }
128 141
129 rppflags = (flags & RP_ECHO) ? RPP_ECHO_ON : RPP_ECHO_OFF; 142 rppflags = (flags & RP_ECHO) ? RPP_ECHO_ON : RPP_ECHO_OFF;
130 if (flags & RP_USE_ASKPASS) 143 if (use_askpass)
144 debug("%s: requested to askpass", __func__);
145 else if (flags & RP_USE_ASKPASS)
131 use_askpass = 1; 146 use_askpass = 1;
132 else if (flags & RP_ALLOW_STDIN) { 147 else if (flags & RP_ALLOW_STDIN) {
133 if (!isatty(STDIN_FILENO)) { 148 if (!isatty(STDIN_FILENO)) {
@@ -153,10 +168,10 @@ read_passphrase(const char *prompt, int flags)
153 } 168 }
154 } 169 }
155 170
156 if ((flags & RP_USE_ASKPASS) && getenv("DISPLAY") == NULL) 171 if ((flags & RP_USE_ASKPASS) && !allow_askpass)
157 return (flags & RP_ALLOW_EOF) ? NULL : xstrdup(""); 172 return (flags & RP_ALLOW_EOF) ? NULL : xstrdup("");
158 173
159 if (use_askpass && getenv("DISPLAY")) { 174 if (use_askpass && allow_askpass) {
160 if (getenv(SSH_ASKPASS_ENV)) 175 if (getenv(SSH_ASKPASS_ENV))
161 askpass = getenv(SSH_ASKPASS_ENV); 176 askpass = getenv(SSH_ASKPASS_ENV);
162 else 177 else
@@ -220,8 +235,8 @@ notify_start(int force_askpass, const char *fmt, ...)
220 int devnull; 235 int devnull;
221 pid_t pid; 236 pid_t pid;
222 void (*osigchld)(int); 237 void (*osigchld)(int);
223 const char *askpass; 238 const char *askpass, *s;
224 struct notifier_ctx *ret; 239 struct notifier_ctx *ret = NULL;
225 240
226 va_start(args, fmt); 241 va_start(args, fmt);
227 xvasprintf(&prompt, fmt, args); 242 xvasprintf(&prompt, fmt, args);
@@ -233,15 +248,19 @@ notify_start(int force_askpass, const char *fmt, ...)
233 (void)write(STDERR_FILENO, "\r", 1); 248 (void)write(STDERR_FILENO, "\r", 1);
234 (void)write(STDERR_FILENO, prompt, strlen(prompt)); 249 (void)write(STDERR_FILENO, prompt, strlen(prompt));
235 (void)write(STDERR_FILENO, "\r\n", 2); 250 (void)write(STDERR_FILENO, "\r\n", 2);
236 free(prompt); 251 goto out;
237 return NULL;
238 } 252 }
239 if ((askpass = getenv("SSH_ASKPASS")) == NULL) 253 if ((askpass = getenv("SSH_ASKPASS")) == NULL)
240 askpass = _PATH_SSH_ASKPASS_DEFAULT; 254 askpass = _PATH_SSH_ASKPASS_DEFAULT;
241 if (getenv("DISPLAY") == NULL || *askpass == '\0') { 255 if (*askpass == '\0') {
242 debug3("%s: cannot notify", __func__); 256 debug3("%s: cannot notify: no askpass", __func__);
243 free(prompt); 257 goto out;
244 return NULL; 258 }
259 if (getenv("DISPLAY") == NULL &&
260 ((s = getenv(SSH_ASKPASS_REQUIRE_ENV)) == NULL ||
261 strcmp(s, "force") != 0)) {
262 debug3("%s: cannot notify: no display", __func__);
263 goto out;
245 } 264 }
246 osigchld = ssh_signal(SIGCHLD, SIG_DFL); 265 osigchld = ssh_signal(SIGCHLD, SIG_DFL);
247 if ((pid = fork()) == -1) { 266 if ((pid = fork()) == -1) {
@@ -269,6 +288,7 @@ notify_start(int force_askpass, const char *fmt, ...)
269 } 288 }
270 ret->pid = pid; 289 ret->pid = pid;
271 ret->osigchld = osigchld; 290 ret->osigchld = osigchld;
291 out:
272 free(prompt); 292 free(prompt);
273 return ret; 293 return ret;
274} 294}
diff --git a/regress/Makefile b/regress/Makefile
index 53a50ffca..f50d189bb 100644
--- a/regress/Makefile
+++ b/regress/Makefile
@@ -1,4 +1,4 @@
1# $OpenBSD: Makefile,v 1.108 2020/04/20 04:44:47 djm Exp $ 1# $OpenBSD: Makefile,v 1.109 2020/06/19 05:07:09 dtucker Exp $
2 2
3tests: prep file-tests t-exec unit 3tests: prep file-tests t-exec unit
4 4
@@ -41,6 +41,7 @@ LTESTS= connect \
41 agent-getpeereid \ 41 agent-getpeereid \
42 agent-timeout \ 42 agent-timeout \
43 agent-ptrace \ 43 agent-ptrace \
44 agent-subprocess \
44 keyscan \ 45 keyscan \
45 keygen-change \ 46 keygen-change \
46 keygen-convert \ 47 keygen-convert \
@@ -250,6 +251,8 @@ unit:
250 $$V ${.OBJDIR}/unittests/sshbuf/test_sshbuf ; \ 251 $$V ${.OBJDIR}/unittests/sshbuf/test_sshbuf ; \
251 $$V ${.OBJDIR}/unittests/sshkey/test_sshkey \ 252 $$V ${.OBJDIR}/unittests/sshkey/test_sshkey \
252 -d ${.CURDIR}/unittests/sshkey/testdata ; \ 253 -d ${.CURDIR}/unittests/sshkey/testdata ; \
254 $$V ${.OBJDIR}/unittests/sshsig/test_sshsig \
255 -d ${.CURDIR}/unittests/sshsig/testdata ; \
253 $$V ${.OBJDIR}/unittests/bitmap/test_bitmap ; \ 256 $$V ${.OBJDIR}/unittests/bitmap/test_bitmap ; \
254 $$V ${.OBJDIR}/unittests/conversion/test_conversion ; \ 257 $$V ${.OBJDIR}/unittests/conversion/test_conversion ; \
255 $$V ${.OBJDIR}/unittests/kex/test_kex ; \ 258 $$V ${.OBJDIR}/unittests/kex/test_kex ; \
diff --git a/regress/addrmatch.sh b/regress/addrmatch.sh
index e7d29c3f3..26e0c9910 100644
--- a/regress/addrmatch.sh
+++ b/regress/addrmatch.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: addrmatch.sh,v 1.5 2020/03/13 03:18:45 djm Exp $ 1# $OpenBSD: addrmatch.sh,v 1.6 2020/08/28 03:17:13 dtucker Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="address match" 4tid="address match"
@@ -52,5 +52,17 @@ run_trial user ::5 somehost ::1 1234 match3 "IP6 localaddress"
52run_trial user ::5 somehost ::2 5678 match4 "IP6 localport" 52run_trial user ::5 somehost ::2 5678 match4 "IP6 localport"
53fi 53fi
54 54
55#
56# Check that we catch invalid address/mask in Match Address/Localaddress
57#
58for i in 10.0.1.0/8 10.0.0.1/24 2000:aa:bb:01::/56; do
59 for a in address localaddress; do
60 verbose "test invalid Match $a $i"
61 echo "Match $a $i" > $OBJ/sshd_proxy
62 ${SUDO} ${SSHD} -f $OBJ/sshd_proxy -t >/dev/null 2>&1 && \
63 fail "accepted invalid match $a $i"
64 done
65done
66
55cp $OBJ/sshd_proxy_bak $OBJ/sshd_proxy 67cp $OBJ/sshd_proxy_bak $OBJ/sshd_proxy
56rm $OBJ/sshd_proxy_bak 68rm $OBJ/sshd_proxy_bak
diff --git a/regress/agent-subprocess.sh b/regress/agent-subprocess.sh
new file mode 100644
index 000000000..2f36d70cc
--- /dev/null
+++ b/regress/agent-subprocess.sh
@@ -0,0 +1,22 @@
1# $OpenBSD: agent-subprocess.sh,v 1.1 2020/06/19 05:07:09 dtucker Exp $
2# Placed in the Public Domain.
3
4tid="agent subprocess"
5
6trace "ensure agent exits when run as subprocess"
7${SSHAGENT} sh -c "echo \$SSH_AGENT_PID >$OBJ/pidfile; sleep 1"
8
9pid=`cat $OBJ/pidfile`
10
11# Currently ssh-agent polls every 10s so we need to wait at least that long.
12n=12
13while kill -0 $pid >/dev/null 2>&1 && test "$n" -gt "0"; do
14 n=$(($n - 1))
15 sleep 1
16done
17
18if test "$n" -eq "0"; then
19 fail "agent still running"
20fi
21
22rm -f $OBJ/pidfile
diff --git a/regress/agent.sh b/regress/agent.sh
index 39403653c..a3ad1385f 100644
--- a/regress/agent.sh
+++ b/regress/agent.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: agent.sh,v 1.17 2019/12/21 02:33:07 djm Exp $ 1# $OpenBSD: agent.sh,v 1.19 2020/07/15 04:55:47 dtucker Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="simple agent test" 4tid="simple agent test"
@@ -45,17 +45,20 @@ for t in ${SSH_KEYTYPES}; do
45 # add to authorized keys 45 # add to authorized keys
46 cat $OBJ/$t-agent.pub >> $OBJ/authorized_keys_$USER 46 cat $OBJ/$t-agent.pub >> $OBJ/authorized_keys_$USER
47 # add private key to agent 47 # add private key to agent
48 ${SSHADD} $OBJ/$t-agent #> /dev/null 2>&1 48 ${SSHADD} $OBJ/$t-agent > /dev/null 2>&1
49 if [ $? -ne 0 ]; then 49 if [ $? -ne 0 ]; then
50 fail "ssh-add failed exit code $?" 50 fail "ssh-add failed exit code $?"
51 fi 51 fi
52 # add private key to second agent 52 # add private key to second agent
53 SSH_AUTH_SOCK=$FW_SSH_AUTH_SOCK ${SSHADD} $OBJ/$t-agent #> /dev/null 2>&1 53 SSH_AUTH_SOCK=$FW_SSH_AUTH_SOCK ${SSHADD} $OBJ/$t-agent > /dev/null 2>&1
54 if [ $? -ne 0 ]; then 54 if [ $? -ne 0 ]; then
55 fail "ssh-add failed exit code $?" 55 fail "ssh-add failed exit code $?"
56 fi 56 fi
57 # Remove private key to ensure that we aren't accidentally using it. 57 # Move private key to ensure that we aren't accidentally using it.
58 rm -f $OBJ/$t-agent 58 # Keep the corresponding public keys/certs around for later use.
59 mv -f $OBJ/$t-agent $OBJ/$t-agent-private
60 cp -f $OBJ/$t-agent.pub $OBJ/$t-agent-private.pub
61 cp -f $OBJ/$t-agent-cert.pub $OBJ/$t-agent-private-cert.pub
59done 62done
60 63
61# Remove explicit identity directives from ssh_proxy 64# Remove explicit identity directives from ssh_proxy
@@ -152,12 +155,72 @@ for t in ${SSH_KEYTYPES}; do
152 fi 155 fi
153done 156done
154 157
158## Deletion tests.
159
155trace "delete all agent keys" 160trace "delete all agent keys"
156${SSHADD} -D > /dev/null 2>&1 161${SSHADD} -D > /dev/null 2>&1
157r=$? 162r=$?
158if [ $r -ne 0 ]; then 163if [ $r -ne 0 ]; then
159 fail "ssh-add -D failed: exit code $r" 164 fail "ssh-add -D failed: exit code $r"
160fi 165fi
166# make sure they're gone
167${SSHADD} -l > /dev/null 2>&1
168r=$?
169if [ $r -ne 1 ]; then
170 fail "ssh-add -l returned unexpected exit code: $r"
171fi
172trace "readd keys"
173# re-add keys/certs to agent
174for t in ${SSH_KEYTYPES}; do
175 ${SSHADD} $OBJ/$t-agent-private >/dev/null 2>&1 || \
176 fail "ssh-add failed exit code $?"
177done
178# make sure they are there
179${SSHADD} -l > /dev/null 2>&1
180r=$?
181if [ $r -ne 0 ]; then
182 fail "ssh-add -l failed: exit code $r"
183fi
184
185check_key_absent() {
186 ${SSHADD} -L | grep "^$1 " >/dev/null
187 if [ $? -eq 0 ]; then
188 fail "$1 key unexpectedly present"
189 fi
190}
191check_key_present() {
192 ${SSHADD} -L | grep "^$1 " >/dev/null
193 if [ $? -ne 0 ]; then
194 fail "$1 key missing from agent"
195 fi
196}
197
198# delete the ed25519 key
199trace "delete single key by file"
200${SSHADD} -qdk $OBJ/ssh-ed25519-agent || fail "ssh-add -d ed25519 failed"
201check_key_absent ssh-ed25519
202check_key_present ssh-ed25519-cert-v01@openssh.com
203# Put key/cert back.
204${SSHADD} $OBJ/ssh-ed25519-agent-private >/dev/null 2>&1 || \
205 fail "ssh-add failed exit code $?"
206check_key_present ssh-ed25519
207# Delete both key and certificate.
208trace "delete key/cert by file"
209${SSHADD} -qd $OBJ/ssh-ed25519-agent || fail "ssh-add -d ed25519 failed"
210check_key_absent ssh-ed25519
211check_key_absent ssh-ed25519-cert-v01@openssh.com
212# Put key/cert back.
213${SSHADD} $OBJ/ssh-ed25519-agent-private >/dev/null 2>&1 || \
214 fail "ssh-add failed exit code $?"
215check_key_present ssh-ed25519
216# Delete certificate via stdin
217${SSHADD} -qd - < $OBJ/ssh-ed25519-agent-cert.pub || fail "ssh-add -d - failed"
218check_key_present ssh-ed25519
219check_key_absent ssh-ed25519-cert-v01@openssh.com
220# Delete key via stdin
221${SSHADD} -qd - < $OBJ/ssh-ed25519-agent.pub || fail "ssh-add -d - failed"
222check_key_absent ssh-ed25519
223check_key_absent ssh-ed25519-cert-v01@openssh.com
161 224
162trace "kill agent" 225trace "kill agent"
163${SSHAGENT} -k > /dev/null 226${SSHAGENT} -k > /dev/null
diff --git a/regress/misc/sk-dummy/sk-dummy.c b/regress/misc/sk-dummy/sk-dummy.c
index f3acb2fb7..bf1feec15 100644
--- a/regress/misc/sk-dummy/sk-dummy.c
+++ b/regress/misc/sk-dummy/sk-dummy.c
@@ -47,7 +47,7 @@
47 } while (0) 47 } while (0)
48#endif 48#endif
49 49
50#if SSH_SK_VERSION_MAJOR != 0x00050000 50#if SSH_SK_VERSION_MAJOR != 0x00070000
51# error SK API has changed, sk-dummy.c needs an update 51# error SK API has changed, sk-dummy.c needs an update
52#endif 52#endif
53 53
diff --git a/regress/multiplex.sh b/regress/multiplex.sh
index 817ddbfa8..4744fa3d9 100644
--- a/regress/multiplex.sh
+++ b/regress/multiplex.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: multiplex.sh,v 1.32 2020/01/25 02:57:53 dtucker Exp $ 1# $OpenBSD: multiplex.sh,v 1.33 2020/06/24 15:16:23 markus Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4make_tmpdir 4make_tmpdir
@@ -97,22 +97,24 @@ kill $netcat_pid 2>/dev/null
97rm -f ${COPY} $OBJ/unix-[123].fwd 97rm -f ${COPY} $OBJ/unix-[123].fwd
98 98
99for s in 0 1 4 5 44; do 99for s in 0 1 4 5 44; do
100 trace "exit status $s over multiplexed connection" 100 for mode in "" "-Oproxy"; do
101 verbose "test $tid: status $s" 101 trace "exit status $s over multiplexed connection ($mode)"
102 ${SSH} -F $OBJ/ssh_config -S $CTL otherhost exit $s 102 verbose "test $tid: status $s ($mode)"
103 ${SSH} -F $OBJ/ssh_config -S $CTL $mode otherhost exit $s
103 r=$? 104 r=$?
104 if [ $r -ne $s ]; then 105 if [ $r -ne $s ]; then
105 fail "exit code mismatch: $r != $s" 106 fail "exit code mismatch: $r != $s"
106 fi 107 fi
107 108
108 # same with early close of stdout/err 109 # same with early close of stdout/err
109 trace "exit status $s with early close over multiplexed connection" 110 trace "exit status $s with early close over multiplexed connection ($mode)"
110 ${SSH} -F $OBJ/ssh_config -S $CTL -n otherhost \ 111 ${SSH} -F $OBJ/ssh_config -S $CTL -n $mode otherhost \
111 exec sh -c \'"sleep 2; exec > /dev/null 2>&1; sleep 3; exit $s"\' 112 exec sh -c \'"sleep 2; exec > /dev/null 2>&1; sleep 3; exit $s"\'
112 r=$? 113 r=$?
113 if [ $r -ne $s ]; then 114 if [ $r -ne $s ]; then
114 fail "exit code (with sleep) mismatch: $r != $s" 115 fail "exit code (with sleep) mismatch: $r != $s"
115 fi 116 fi
117 done
116done 118done
117 119
118verbose "test $tid: cmd check" 120verbose "test $tid: cmd check"
diff --git a/regress/netcat.c b/regress/netcat.c
index fe94dd908..d583176f1 100644
--- a/regress/netcat.c
+++ b/regress/netcat.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: netcat.c,v 1.126 2014/10/30 16:08:31 tedu Exp $ */ 1/* $OpenBSD: netcat.c,v 1.131 2015/09/03 23:06:28 sobrado Exp $ */
2/* 2/*
3 * Copyright (c) 2001 Eric Jackson <ericj@monkey.org> 3 * Copyright (c) 2001 Eric Jackson <ericj@monkey.org>
4 * 4 *
@@ -44,14 +44,15 @@
44#include <netinet/ip.h> 44#include <netinet/ip.h>
45 45
46#include <errno.h> 46#include <errno.h>
47#include <fcntl.h>
48#include <limits.h>
47#include <netdb.h> 49#include <netdb.h>
50#include <signal.h>
48#include <stdarg.h> 51#include <stdarg.h>
49#include <stdio.h> 52#include <stdio.h>
50#include <stdlib.h> 53#include <stdlib.h>
51#include <string.h> 54#include <string.h>
52#include <unistd.h> 55#include <unistd.h>
53#include <fcntl.h>
54#include <limits.h>
55#include "atomicio.h" 56#include "atomicio.h"
56 57
57#ifdef HAVE_POLL_H 58#ifdef HAVE_POLL_H
@@ -133,7 +134,7 @@ int udptest(int);
133int unix_bind(char *); 134int unix_bind(char *);
134int unix_connect(char *); 135int unix_connect(char *);
135int unix_listen(char *); 136int unix_listen(char *);
136void set_common_sockopts(int); 137void set_common_sockopts(int, int);
137int map_tos(char *, int *); 138int map_tos(char *, int *);
138void report_connect(const struct sockaddr *, socklen_t); 139void report_connect(const struct sockaddr *, socklen_t);
139void usage(int); 140void usage(int);
@@ -162,6 +163,8 @@ main(int argc, char *argv[])
162 uport = NULL; 163 uport = NULL;
163 sv = NULL; 164 sv = NULL;
164 165
166 signal(SIGPIPE, SIG_IGN);
167
165 while ((ch = getopt(argc, argv, 168 while ((ch = getopt(argc, argv,
166 "46DdFhI:i:klNnO:P:p:rSs:tT:UuV:vw:X:x:z")) != -1) { 169 "46DdFhI:i:klNnO:P:p:rSs:tT:UuV:vw:X:x:z")) != -1) {
167 switch (ch) { 170 switch (ch) {
@@ -648,7 +651,7 @@ remote_connect(const char *host, const char *port, struct addrinfo hints)
648 freeaddrinfo(ares); 651 freeaddrinfo(ares);
649 } 652 }
650 653
651 set_common_sockopts(s); 654 set_common_sockopts(s, res0->ai_family);
652 655
653 if (timeout_connect(s, res0->ai_addr, res0->ai_addrlen) == 0) 656 if (timeout_connect(s, res0->ai_addr, res0->ai_addrlen) == 0)
654 break; 657 break;
@@ -748,7 +751,7 @@ local_listen(char *host, char *port, struct addrinfo hints)
748 if (ret == -1) 751 if (ret == -1)
749 err(1, "setsockopt SO_REUSEADDR"); 752 err(1, "setsockopt SO_REUSEADDR");
750#endif 753#endif
751 set_common_sockopts(s); 754 set_common_sockopts(s, res0->ai_family);
752 755
753 if (bind(s, (struct sockaddr *)res0->ai_addr, 756 if (bind(s, (struct sockaddr *)res0->ai_addr,
754 res0->ai_addrlen) == 0) 757 res0->ai_addrlen) == 0)
@@ -1034,17 +1037,17 @@ fdpass(int nfd)
1034 1037
1035 bzero(&pfd, sizeof(pfd)); 1038 bzero(&pfd, sizeof(pfd));
1036 pfd.fd = STDOUT_FILENO; 1039 pfd.fd = STDOUT_FILENO;
1040 pfd.events = POLLOUT;
1037 for (;;) { 1041 for (;;) {
1038 r = sendmsg(STDOUT_FILENO, &msg, 0); 1042 r = sendmsg(STDOUT_FILENO, &msg, 0);
1039 if (r == -1) { 1043 if (r == -1) {
1040 if (errno == EAGAIN || errno == EINTR) { 1044 if (errno == EAGAIN || errno == EINTR) {
1041 pfd.events = POLLOUT;
1042 if (poll(&pfd, 1, -1) == -1) 1045 if (poll(&pfd, 1, -1) == -1)
1043 err(1, "poll"); 1046 err(1, "poll");
1044 continue; 1047 continue;
1045 } 1048 }
1046 err(1, "sendmsg"); 1049 err(1, "sendmsg");
1047 } else if (r == -1) 1050 } else if (r != 1)
1048 errx(1, "sendmsg: unexpected return value %zd", r); 1051 errx(1, "sendmsg: unexpected return value %zd", r);
1049 else 1052 else
1050 break; 1053 break;
@@ -1168,7 +1171,7 @@ udptest(int s)
1168} 1171}
1169 1172
1170void 1173void
1171set_common_sockopts(int s) 1174set_common_sockopts(int s, int af)
1172{ 1175{
1173 int x = 1; 1176 int x = 1;
1174 1177
@@ -1184,10 +1187,19 @@ set_common_sockopts(int s)
1184 &x, sizeof(x)) == -1) 1187 &x, sizeof(x)) == -1)
1185 err(1, "setsockopt"); 1188 err(1, "setsockopt");
1186 } 1189 }
1187#ifdef IP_TOS 1190#if defined(IP_TOS) && defined(IPV6_TCLASS)
1188 if (Tflag != -1) { 1191 if (Tflag != -1) {
1189 if (setsockopt(s, IPPROTO_IP, IP_TOS, 1192 int proto, option;
1190 &Tflag, sizeof(Tflag)) == -1) 1193
1194 if (af == AF_INET6) {
1195 proto = IPPROTO_IPV6;
1196 option = IPV6_TCLASS;
1197 } else {
1198 proto = IPPROTO_IP;
1199 option = IP_TOS;
1200 }
1201
1202 if (setsockopt(s, proto, option, &Tflag, sizeof(Tflag)) == -1)
1191 err(1, "set IP ToS"); 1203 err(1, "set IP ToS");
1192 } 1204 }
1193#endif 1205#endif
@@ -1321,7 +1333,7 @@ usage(int ret)
1321{ 1333{
1322 fprintf(stderr, 1334 fprintf(stderr,
1323 "usage: nc [-46DdFhklNnrStUuvz] [-I length] [-i interval] [-O length]\n" 1335 "usage: nc [-46DdFhklNnrStUuvz] [-I length] [-i interval] [-O length]\n"
1324 "\t [-P proxy_username] [-p source_port] [-s source] [-T ToS]\n" 1336 "\t [-P proxy_username] [-p source_port] [-s source] [-T toskeyword]\n"
1325 "\t [-V rtable] [-w timeout] [-X proxy_protocol]\n" 1337 "\t [-V rtable] [-w timeout] [-X proxy_protocol]\n"
1326 "\t [-x proxy_address[:port]] [destination] [port]\n"); 1338 "\t [-x proxy_address[:port]] [destination] [port]\n");
1327 if (ret) 1339 if (ret)
diff --git a/regress/percent.sh b/regress/percent.sh
index 2e891f693..28781117e 100644
--- a/regress/percent.sh
+++ b/regress/percent.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: percent.sh,v 1.6 2020/04/10 00:54:03 dtucker Exp $ 1# $OpenBSD: percent.sh,v 1.9 2020/07/17 07:10:24 dtucker Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="percent expansions" 4tid="percent expansions"
@@ -25,12 +25,21 @@ trial()
25 25
26 trace "test $opt=$arg $expect" 26 trace "test $opt=$arg $expect"
27 rm -f $OBJ/actual 27 rm -f $OBJ/actual
28 got=""
28 case "$opt" in 29 case "$opt" in
29 localcommand) 30 localcommand)
30 ${SSH} -F $OBJ/ssh_proxy -o $opt="echo '$arg' >$OBJ/actual" \ 31 ${SSH} -F $OBJ/ssh_proxy -o $opt="echo '$arg' >$OBJ/actual" \
31 somehost true 32 somehost true
32 got=`cat $OBJ/actual` 33 got=`cat $OBJ/actual`
33 ;; 34 ;;
35 userknownhostsfile)
36 # Move the userknownhosts file to what the expansion says,
37 # make sure ssh works then put it back.
38 mv "$OBJ/known_hosts" "$OBJ/$expect"
39 ${SSH} -F $OBJ/ssh_proxy -o $opt="$OBJ/$arg" somehost true && \
40 got="$expect"
41 mv "$OBJ/$expect" "$OBJ/known_hosts"
42 ;;
34 matchexec) 43 matchexec)
35 (cat $OBJ/ssh_proxy && \ 44 (cat $OBJ/ssh_proxy && \
36 echo "Match Exec \"echo '$arg' >$OBJ/actual\"") \ 45 echo "Match Exec \"echo '$arg' >$OBJ/actual\"") \
@@ -55,13 +64,18 @@ trial()
55} 64}
56 65
57for i in matchexec localcommand remotecommand controlpath identityagent \ 66for i in matchexec localcommand remotecommand controlpath identityagent \
58 forwardagent localforward remoteforward; do 67 forwardagent localforward remoteforward userknownhostsfile; do
59 verbose $tid $i 68 verbose $tid $i percent
60 if [ "$i" = "localcommand" ]; then 69 case "$i" in
61 REMUSER=$USER 70 localcommand|userknownhostsfile)
71 # Any test that's going to actually make a connection needs
72 # to use the real username.
73 REMUSER=$USER ;;
74 *)
75 REMUSER=remuser ;;
76 esac
77 if [ "$i" = "$localcommand" ]; then
62 trial $i '%T' NONE 78 trial $i '%T' NONE
63 else
64 REMUSER=remuser
65 fi 79 fi
66 # Matches implementation in readconf.c:ssh_connection_hash() 80 # Matches implementation in readconf.c:ssh_connection_hash()
67 HASH=`printf "${HOSTNAME}127.0.0.1${PORT}$REMUSER" | 81 HASH=`printf "${HOSTNAME}127.0.0.1${PORT}$REMUSER" |
@@ -70,19 +84,36 @@ for i in matchexec localcommand remotecommand controlpath identityagent \
70 trial $i '%C' $HASH 84 trial $i '%C' $HASH
71 trial $i '%i' $USERID 85 trial $i '%i' $USERID
72 trial $i '%h' 127.0.0.1 86 trial $i '%h' 127.0.0.1
73 trial $i '%d' $HOME
74 trial $i '%L' $HOST 87 trial $i '%L' $HOST
75 trial $i '%l' $HOSTNAME 88 trial $i '%l' $HOSTNAME
76 trial $i '%n' somehost 89 trial $i '%n' somehost
90 trial $i '%k' localhost-with-alias
77 trial $i '%p' $PORT 91 trial $i '%p' $PORT
78 trial $i '%r' $REMUSER 92 trial $i '%r' $REMUSER
79 trial $i '%u' $USER 93 trial $i '%u' $USER
80 trial $i '%%/%C/%i/%h/%d/%L/%l/%n/%p/%r/%u' \ 94 # We can't specify a full path outside the regress dir, so skip tests
81 "%/$HASH/$USERID/127.0.0.1/$HOME/$HOST/$HOSTNAME/somehost/$PORT/$REMUSER/$USER" 95 # containing %d for UserKnownHostsFile
96 if [ "$i" != "userknownhostsfile" ]; then
97 trial $i '%d' $HOME
98 trial $i '%%/%C/%i/%h/%d/%L/%l/%n/%p/%r/%u' \
99 "%/$HASH/$USERID/127.0.0.1/$HOME/$HOST/$HOSTNAME/somehost/$PORT/$REMUSER/$USER"
100 fi
82done 101done
83 102
103# Subset of above since we don't expand shell-style variables on anything that
104# runs a command because the shell will expand those.
105for i in controlpath identityagent forwardagent localforward remoteforward \
106 userknownhostsfile; do
107 verbose $tid $i dollar
108 FOO=bar
109 export FOO
110 trial $i '${FOO}' $FOO
111done
112
113
84# A subset of options support tilde expansion 114# A subset of options support tilde expansion
85for i in controlpath identityagent forwardagent; do 115for i in controlpath identityagent forwardagent; do
116 verbose $tid $i tilde
86 trial $i '~' $HOME/ 117 trial $i '~' $HOME/
87 trial $i '~/.ssh' $HOME/.ssh 118 trial $i '~/.ssh' $HOME/.ssh
88done 119done
diff --git a/regress/servcfginclude.sh b/regress/servcfginclude.sh
index b25c8faa8..b6a9a248f 100644
--- a/regress/servcfginclude.sh
+++ b/regress/servcfginclude.sh
@@ -146,9 +146,43 @@ Include
146_EOF 146_EOF
147 147
148trace "disallow invalid with no argument" 148trace "disallow invalid with no argument"
149${SUDO} ${REAL_SSHD} -f $OBJ/sshd_config.i.x \ 149${SUDO} ${REAL_SSHD} -f $OBJ/sshd_config.i.x -T \
150 -C "host=x,user=test,addr=127.0.0.1" 2>/dev/null && \ 150 -C "host=x,user=test,addr=127.0.0.1" 2>/dev/null && \
151 fail "sshd allowed Include with no argument" 151 fail "sshd allowed Include with no argument"
152 152
153# Ensure the Include before any Match block works as expected (bug #3122)
154cat > $OBJ/sshd_config.i << _EOF
155Banner /xx
156HostKey $OBJ/host.ssh-ed25519
157Include $OBJ/sshd_config.i.2
158Match host a
159 Banner /aaaa
160_EOF
161cat > $OBJ/sshd_config.i.2 << _EOF
162Match host a
163 Banner /aa
164_EOF
165
166trace "Include before match blocks"
167trial a /aa "included file before match blocks is properly evaluated"
168
169# Port in included file is correctly interpretted (bug #3169)
170cat > $OBJ/sshd_config.i << _EOF
171Include $OBJ/sshd_config.i.2
172Port 7722
173_EOF
174cat > $OBJ/sshd_config.i.2 << _EOF
175HostKey $OBJ/host.ssh-ed25519
176_EOF
177
178trace "Port after included files"
179${SUDO} ${REAL_SSHD} -f $OBJ/sshd_config.i -T \
180 -C "host=x,user=test,addr=127.0.0.1" > $OBJ/sshd_config.out || \
181 fail "failed to parse Port after included files"
182_port=`grep -i '^port ' $OBJ/sshd_config.out | awk '{print $2}'`
183if test "x7722" != "x$_port" ; then
184 fail "The Port in included file was intertepretted wrongly. Expected 7722, got $_port"
185fi
186
153# cleanup 187# cleanup
154rm -f $OBJ/sshd_config.i $OBJ/sshd_config.i.* $OBJ/sshd_config.out 188rm -f $OBJ/sshd_config.i $OBJ/sshd_config.i.* $OBJ/sshd_config.out
diff --git a/regress/unittests/Makefile b/regress/unittests/Makefile
index 4e56e1104..4d26b7477 100644
--- a/regress/unittests/Makefile
+++ b/regress/unittests/Makefile
@@ -1,7 +1,7 @@
1# $OpenBSD: Makefile,v 1.11 2019/04/28 22:53:26 dtucker Exp $ 1# $OpenBSD: Makefile,v 1.12 2020/06/19 04:34:21 djm Exp $
2 2
3REGRESS_FAIL_EARLY?= yes 3REGRESS_FAIL_EARLY?= yes
4SUBDIR= test_helper sshbuf sshkey bitmap kex hostkeys utf8 match conversion 4SUBDIR= test_helper sshbuf sshkey bitmap kex hostkeys utf8 match conversion
5SUBDIR+=authopt misc 5SUBDIR+=authopt misc sshsig
6 6
7.include <bsd.subdir.mk> 7.include <bsd.subdir.mk>
diff --git a/regress/unittests/match/tests.c b/regress/unittests/match/tests.c
index 3d9af55f2..4fefaf4f3 100644
--- a/regress/unittests/match/tests.c
+++ b/regress/unittests/match/tests.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tests.c,v 1.5 2018/07/04 13:51:45 djm Exp $ */ 1/* $OpenBSD: tests.c,v 1.7 2020/07/15 06:43:16 dtucker Exp $ */
2/* 2/*
3 * Regress test for matching functions 3 * Regress test for matching functions
4 * 4 *
@@ -105,7 +105,7 @@ tests(void)
105 105
106#define CHECK_FILTER(string,filter,expected) \ 106#define CHECK_FILTER(string,filter,expected) \
107 do { \ 107 do { \
108 char *result = match_filter_blacklist((string), (filter)); \ 108 char *result = match_filter_denylist((string), (filter)); \
109 ASSERT_STRING_EQ(result, expected); \ 109 ASSERT_STRING_EQ(result, expected); \
110 free(result); \ 110 free(result); \
111 } while (0) 111 } while (0)
diff --git a/regress/unittests/misc/tests.c b/regress/unittests/misc/tests.c
index ed775ebbd..0bd0c84f9 100644
--- a/regress/unittests/misc/tests.c
+++ b/regress/unittests/misc/tests.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tests.c,v 1.1 2019/04/28 22:53:26 dtucker Exp $ */ 1/* $OpenBSD: tests.c,v 1.3 2020/05/29 04:32:26 dtucker Exp $ */
2/* 2/*
3 * Regress test for misc helper functions. 3 * Regress test for misc helper functions.
4 * 4 *
@@ -14,13 +14,14 @@
14 14
15#include "test_helper.h" 15#include "test_helper.h"
16 16
17#include "log.h"
17#include "misc.h" 18#include "misc.h"
18 19
19void 20void
20tests(void) 21tests(void)
21{ 22{
22 int port; 23 int port, parseerr;
23 char *user, *host, *path; 24 char *user, *host, *path, *ret;
24 25
25 TEST_START("misc_parse_user_host_path"); 26 TEST_START("misc_parse_user_host_path");
26 ASSERT_INT_EQ(parse_user_host_path("someuser@some.host:some/path", 27 ASSERT_INT_EQ(parse_user_host_path("someuser@some.host:some/path",
@@ -76,4 +77,85 @@ tests(void)
76 ASSERT_STRING_EQ(path, "some/path"); 77 ASSERT_STRING_EQ(path, "some/path");
77 free(user); free(host); free(path); 78 free(user); free(host); free(path);
78 TEST_DONE(); 79 TEST_DONE();
80
81 TEST_START("misc_convtime");
82 ASSERT_LONG_EQ(convtime("1"), 1);
83 ASSERT_LONG_EQ(convtime("2s"), 2);
84 ASSERT_LONG_EQ(convtime("3m"), 180);
85 ASSERT_LONG_EQ(convtime("1m30"), 90);
86 ASSERT_LONG_EQ(convtime("1m30s"), 90);
87 ASSERT_LONG_EQ(convtime("1h1s"), 3601);
88 ASSERT_LONG_EQ(convtime("1h30m"), 90 * 60);
89 ASSERT_LONG_EQ(convtime("1d"), 24 * 60 * 60);
90 ASSERT_LONG_EQ(convtime("1w"), 7 * 24 * 60 * 60);
91 ASSERT_LONG_EQ(convtime("1w2d3h4m5"), 788645);
92 ASSERT_LONG_EQ(convtime("1w2d3h4m5s"), 788645);
93 /* any negative number or error returns -1 */
94 ASSERT_LONG_EQ(convtime("-1"), -1);
95 ASSERT_LONG_EQ(convtime(""), -1);
96 ASSERT_LONG_EQ(convtime("trout"), -1);
97 ASSERT_LONG_EQ(convtime("-77"), -1);
98 TEST_DONE();
99
100 TEST_START("dollar_expand");
101 if (setenv("FOO", "bar", 1) != 0)
102 abort();
103 if (setenv("BAR", "baz", 1) != 0)
104 abort();
105 if (unsetenv("BAZ") != 0)
106 abort();
107#define ASSERT_DOLLAR_EQ(x, y) do { \
108 char *str = dollar_expand(NULL, (x)); \
109 ASSERT_STRING_EQ(str, (y)); \
110 free(str); \
111} while(0)
112 ASSERT_DOLLAR_EQ("${FOO}", "bar");
113 ASSERT_DOLLAR_EQ(" ${FOO}", " bar");
114 ASSERT_DOLLAR_EQ("${FOO} ", "bar ");
115 ASSERT_DOLLAR_EQ(" ${FOO} ", " bar ");
116 ASSERT_DOLLAR_EQ("${FOO}${BAR}", "barbaz");
117 ASSERT_DOLLAR_EQ(" ${FOO} ${BAR}", " bar baz");
118 ASSERT_DOLLAR_EQ("${FOO}${BAR} ", "barbaz ");
119 ASSERT_DOLLAR_EQ(" ${FOO} ${BAR} ", " bar baz ");
120 ASSERT_DOLLAR_EQ("$", "$");
121 ASSERT_DOLLAR_EQ(" $", " $");
122 ASSERT_DOLLAR_EQ("$ ", "$ ");
123
124 /* suppress error messages for error handing tests */
125 log_init("test_misc", SYSLOG_LEVEL_QUIET, SYSLOG_FACILITY_AUTH, 1);
126 /* error checking, non existent variable */
127 ret = dollar_expand(&parseerr, "a${BAZ}");
128 ASSERT_PTR_EQ(ret, NULL); ASSERT_INT_EQ(parseerr, 0);
129 ret = dollar_expand(&parseerr, "${BAZ}b");
130 ASSERT_PTR_EQ(ret, NULL); ASSERT_INT_EQ(parseerr, 0);
131 ret = dollar_expand(&parseerr, "a${BAZ}b");
132 ASSERT_PTR_EQ(ret, NULL); ASSERT_INT_EQ(parseerr, 0);
133 /* invalid format */
134 ret = dollar_expand(&parseerr, "${");
135 ASSERT_PTR_EQ(ret, NULL); ASSERT_INT_EQ(parseerr, 1);
136 ret = dollar_expand(&parseerr, "${F");
137 ASSERT_PTR_EQ(ret, NULL); ASSERT_INT_EQ(parseerr, 1);
138 ret = dollar_expand(&parseerr, "${FO");
139 ASSERT_PTR_EQ(ret, NULL); ASSERT_INT_EQ(parseerr, 1);
140 /* empty variable name */
141 ret = dollar_expand(&parseerr, "${}");
142 ASSERT_PTR_EQ(ret, NULL); ASSERT_INT_EQ(parseerr, 1);
143 /* restore loglevel to default */
144 log_init("test_misc", SYSLOG_LEVEL_INFO, SYSLOG_FACILITY_AUTH, 1);
145 TEST_DONE();
146
147 TEST_START("percent_expand");
148 ASSERT_STRING_EQ(percent_expand("%%", "%h", "foo", NULL), "%");
149 ASSERT_STRING_EQ(percent_expand("%h", "h", "foo", NULL), "foo");
150 ASSERT_STRING_EQ(percent_expand("%h ", "h", "foo", NULL), "foo ");
151 ASSERT_STRING_EQ(percent_expand(" %h", "h", "foo", NULL), " foo");
152 ASSERT_STRING_EQ(percent_expand(" %h ", "h", "foo", NULL), " foo ");
153 ASSERT_STRING_EQ(percent_expand(" %a%b ", "a", "foo", "b", "bar", NULL),
154 " foobar ");
155 TEST_DONE();
156
157 TEST_START("percent_dollar_expand");
158 ASSERT_STRING_EQ(percent_dollar_expand("%h${FOO}", "h", "foo", NULL),
159 "foobar");
160 TEST_DONE();
79} 161}
diff --git a/regress/unittests/sshkey/mktestdata.sh b/regress/unittests/sshkey/mktestdata.sh
index 8efe6dd03..fcd78e990 100755
--- a/regress/unittests/sshkey/mktestdata.sh
+++ b/regress/unittests/sshkey/mktestdata.sh
@@ -1,5 +1,5 @@
1#!/bin/sh 1#!/bin/sh
2# $OpenBSD: mktestdata.sh,v 1.10 2020/05/01 04:03:14 djm Exp $ 2# $OpenBSD: mktestdata.sh,v 1.11 2020/06/19 03:48:49 djm Exp $
3 3
4PW=mekmitasdigoat 4PW=mekmitasdigoat
5 5
@@ -70,6 +70,15 @@ set -ex
70 70
71cd testdata 71cd testdata
72 72
73if [ -f ../../../misc/sk-dummy/sk-dummy.so ] ; then
74 SK_DUMMY=../../../misc/sk-dummy/sk-dummy.so
75elif [ -f ../../../misc/sk-dummy/obj/sk-dummy.so ] ; then
76 SK_DUMMY=../../../misc/sk-dummy/obj/sk-dummy.so
77else
78 echo "Can't find sk-dummy.so" 1>&2
79 exit 1
80fi
81
73rm -f rsa_1 dsa_1 ecdsa_1 ed25519_1 82rm -f rsa_1 dsa_1 ecdsa_1 ed25519_1
74rm -f rsa_2 dsa_2 ecdsa_2 ed25519_2 83rm -f rsa_2 dsa_2 ecdsa_2 ed25519_2
75rm -f rsa_n dsa_n ecdsa_n # new-format keys 84rm -f rsa_n dsa_n ecdsa_n # new-format keys
@@ -81,11 +90,20 @@ ssh-keygen -t rsa -b 1024 -C "RSA test key #1" -N "" -f rsa_1 -m PEM
81ssh-keygen -t dsa -b 1024 -C "DSA test key #1" -N "" -f dsa_1 -m PEM 90ssh-keygen -t dsa -b 1024 -C "DSA test key #1" -N "" -f dsa_1 -m PEM
82ssh-keygen -t ecdsa -b 256 -C "ECDSA test key #1" -N "" -f ecdsa_1 -m PEM 91ssh-keygen -t ecdsa -b 256 -C "ECDSA test key #1" -N "" -f ecdsa_1 -m PEM
83ssh-keygen -t ed25519 -C "ED25519 test key #1" -N "" -f ed25519_1 92ssh-keygen -t ed25519 -C "ED25519 test key #1" -N "" -f ed25519_1
93ssh-keygen -w "$SK_DUMMY" -t ecdsa-sk -C "ECDSA-SK test key #1" \
94 -N "" -f ecdsa_sk1
95ssh-keygen -w "$SK_DUMMY" -t ed25519-sk -C "ED25519-SK test key #1" \
96 -N "" -f ed25519_sk1
97
84 98
85ssh-keygen -t rsa -b 2048 -C "RSA test key #2" -N "" -f rsa_2 -m PEM 99ssh-keygen -t rsa -b 2048 -C "RSA test key #2" -N "" -f rsa_2 -m PEM
86ssh-keygen -t dsa -b 1024 -C "DSA test key #2" -N "" -f dsa_2 -m PEM 100ssh-keygen -t dsa -b 1024 -C "DSA test key #2" -N "" -f dsa_2 -m PEM
87ssh-keygen -t ecdsa -b 521 -C "ECDSA test key #2" -N "" -f ecdsa_2 -m PEM 101ssh-keygen -t ecdsa -b 521 -C "ECDSA test key #2" -N "" -f ecdsa_2 -m PEM
88ssh-keygen -t ed25519 -C "ED25519 test key #1" -N "" -f ed25519_2 102ssh-keygen -t ed25519 -C "ED25519 test key #2" -N "" -f ed25519_2
103ssh-keygen -w "$SK_DUMMY" -t ecdsa-sk -C "ECDSA-SK test key #2" \
104 -N "" -f ecdsa_sk2
105ssh-keygen -w "$SK_DUMMY" -t ed25519-sk -C "ED25519-SK test key #2" \
106 -N "" -f ed25519_sk2
89 107
90cp rsa_1 rsa_n 108cp rsa_1 rsa_n
91cp dsa_1 dsa_n 109cp dsa_1 dsa_n
@@ -99,6 +117,8 @@ cp rsa_1 rsa_1_pw
99cp dsa_1 dsa_1_pw 117cp dsa_1 dsa_1_pw
100cp ecdsa_1 ecdsa_1_pw 118cp ecdsa_1 ecdsa_1_pw
101cp ed25519_1 ed25519_1_pw 119cp ed25519_1 ed25519_1_pw
120cp ecdsa_sk1 ecdsa_sk1_pw
121cp ed25519_sk1 ed25519_sk1_pw
102cp rsa_1 rsa_n_pw 122cp rsa_1 rsa_n_pw
103cp dsa_1 dsa_n_pw 123cp dsa_1 dsa_n_pw
104cp ecdsa_1 ecdsa_n_pw 124cp ecdsa_1 ecdsa_n_pw
@@ -107,6 +127,8 @@ ssh-keygen -pf rsa_1_pw -m PEM -N "$PW"
107ssh-keygen -pf dsa_1_pw -m PEM -N "$PW" 127ssh-keygen -pf dsa_1_pw -m PEM -N "$PW"
108ssh-keygen -pf ecdsa_1_pw -m PEM -N "$PW" 128ssh-keygen -pf ecdsa_1_pw -m PEM -N "$PW"
109ssh-keygen -pf ed25519_1_pw -N "$PW" 129ssh-keygen -pf ed25519_1_pw -N "$PW"
130ssh-keygen -pf ecdsa_sk1_pw -m PEM -N "$PW"
131ssh-keygen -pf ed25519_sk1_pw -N "$PW"
110ssh-keygen -pf rsa_n_pw -N "$PW" 132ssh-keygen -pf rsa_n_pw -N "$PW"
111ssh-keygen -pf dsa_n_pw -N "$PW" 133ssh-keygen -pf dsa_n_pw -N "$PW"
112ssh-keygen -pf ecdsa_n_pw -N "$PW" 134ssh-keygen -pf ecdsa_n_pw -N "$PW"
@@ -117,7 +139,7 @@ dsa_params dsa_1 dsa_1.param
117dsa_params dsa_1 dsa_1.param 139dsa_params dsa_1 dsa_1.param
118ecdsa_params ecdsa_1 ecdsa_1.param 140ecdsa_params ecdsa_1 ecdsa_1.param
119ecdsa_params ecdsa_2 ecdsa_2.param 141ecdsa_params ecdsa_2 ecdsa_2.param
120# XXX ed25519 params 142# XXX ed25519, *sk params
121 143
122ssh-keygen -s rsa_2 -I hugo -n user1,user2 \ 144ssh-keygen -s rsa_2 -I hugo -n user1,user2 \
123 -Oforce-command=/bin/ls -Ono-port-forwarding -Osource-address=10.0.0.0/8 \ 145 -Oforce-command=/bin/ls -Ono-port-forwarding -Osource-address=10.0.0.0/8 \
@@ -131,6 +153,13 @@ ssh-keygen -s rsa_2 -I hugo -n user1,user2 \
131ssh-keygen -s rsa_2 -I hugo -n user1,user2 \ 153ssh-keygen -s rsa_2 -I hugo -n user1,user2 \
132 -Oforce-command=/bin/ls -Ono-port-forwarding -Osource-address=10.0.0.0/8 \ 154 -Oforce-command=/bin/ls -Ono-port-forwarding -Osource-address=10.0.0.0/8 \
133 -V 19990101:20110101 -z 4 ed25519_1.pub 155 -V 19990101:20110101 -z 4 ed25519_1.pub
156ssh-keygen -s rsa_2 -I hugo -n user1,user2 \
157 -Oforce-command=/bin/ls -Ono-port-forwarding -Osource-address=10.0.0.0/8 \
158 -V 19990101:20110101 -z 4 ecdsa_sk1.pub
159ssh-keygen -s rsa_2 -I hugo -n user1,user2 \
160 -Oforce-command=/bin/ls -Ono-port-forwarding -Osource-address=10.0.0.0/8 \
161 -V 19990101:20110101 -z 4 ed25519_sk1.pub
162
134 163
135# Make a few RSA variant signature too. 164# Make a few RSA variant signature too.
136cp rsa_1 rsa_1_sha1 165cp rsa_1 rsa_1_sha1
@@ -152,30 +181,42 @@ ssh-keygen -s ecdsa_1 -I julius -n host1,host2 -h \
152 -V 19990101:20110101 -z 7 ecdsa_1.pub 181 -V 19990101:20110101 -z 7 ecdsa_1.pub
153ssh-keygen -s ed25519_1 -I julius -n host1,host2 -h \ 182ssh-keygen -s ed25519_1 -I julius -n host1,host2 -h \
154 -V 19990101:20110101 -z 8 ed25519_1.pub 183 -V 19990101:20110101 -z 8 ed25519_1.pub
184ssh-keygen -s ecdsa_1 -I julius -n host1,host2 -h \
185 -V 19990101:20110101 -z 7 ecdsa_sk1.pub
186ssh-keygen -s ed25519_1 -I julius -n host1,host2 -h \
187 -V 19990101:20110101 -z 8 ed25519_sk1.pub
155 188
156ssh-keygen -lf rsa_1 | awk '{print $2}' > rsa_1.fp 189ssh-keygen -lf rsa_1 | awk '{print $2}' > rsa_1.fp
157ssh-keygen -lf dsa_1 | awk '{print $2}' > dsa_1.fp 190ssh-keygen -lf dsa_1 | awk '{print $2}' > dsa_1.fp
158ssh-keygen -lf ecdsa_1 | awk '{print $2}' > ecdsa_1.fp 191ssh-keygen -lf ecdsa_1 | awk '{print $2}' > ecdsa_1.fp
159ssh-keygen -lf ed25519_1 | awk '{print $2}' > ed25519_1.fp 192ssh-keygen -lf ed25519_1 | awk '{print $2}' > ed25519_1.fp
193ssh-keygen -lf ecdsa_sk1 | awk '{print $2}' > ecdsa_sk1.fp
194ssh-keygen -lf ed25519_sk1 | awk '{print $2}' > ed25519_sk1.fp
160ssh-keygen -lf rsa_2 | awk '{print $2}' > rsa_2.fp 195ssh-keygen -lf rsa_2 | awk '{print $2}' > rsa_2.fp
161ssh-keygen -lf dsa_2 | awk '{print $2}' > dsa_2.fp 196ssh-keygen -lf dsa_2 | awk '{print $2}' > dsa_2.fp
162ssh-keygen -lf ecdsa_2 | awk '{print $2}' > ecdsa_2.fp 197ssh-keygen -lf ecdsa_2 | awk '{print $2}' > ecdsa_2.fp
163ssh-keygen -lf ed25519_2 | awk '{print $2}' > ed25519_2.fp 198ssh-keygen -lf ed25519_2 | awk '{print $2}' > ed25519_2.fp
199ssh-keygen -lf ecdsa_sk2 | awk '{print $2}' > ecdsa_sk2.fp
200ssh-keygen -lf ed25519_sk2 | awk '{print $2}' > ed25519_sk2.fp
164 201
202ssh-keygen -lf rsa_1-cert.pub | awk '{print $2}' > rsa_1-cert.fp
165ssh-keygen -lf dsa_1-cert.pub | awk '{print $2}' > dsa_1-cert.fp 203ssh-keygen -lf dsa_1-cert.pub | awk '{print $2}' > dsa_1-cert.fp
166ssh-keygen -lf ecdsa_1-cert.pub | awk '{print $2}' > ecdsa_1-cert.fp 204ssh-keygen -lf ecdsa_1-cert.pub | awk '{print $2}' > ecdsa_1-cert.fp
167ssh-keygen -lf ed25519_1-cert.pub | awk '{print $2}' > ed25519_1-cert.fp 205ssh-keygen -lf ed25519_1-cert.pub | awk '{print $2}' > ed25519_1-cert.fp
168ssh-keygen -lf rsa_1-cert.pub | awk '{print $2}' > rsa_1-cert.fp 206ssh-keygen -lf ecdsa_sk1-cert.pub | awk '{print $2}' > ecdsa_sk1-cert.fp
207ssh-keygen -lf ed25519_sk1-cert.pub | awk '{print $2}' > ed25519_sk1-cert.fp
169 208
170ssh-keygen -Bf rsa_1 | awk '{print $2}' > rsa_1.fp.bb 209ssh-keygen -Bf rsa_1 | awk '{print $2}' > rsa_1.fp.bb
171ssh-keygen -Bf dsa_1 | awk '{print $2}' > dsa_1.fp.bb 210ssh-keygen -Bf dsa_1 | awk '{print $2}' > dsa_1.fp.bb
172ssh-keygen -Bf ecdsa_1 | awk '{print $2}' > ecdsa_1.fp.bb 211ssh-keygen -Bf ecdsa_1 | awk '{print $2}' > ecdsa_1.fp.bb
173ssh-keygen -Bf ed25519_1 | awk '{print $2}' > ed25519_1.fp.bb 212ssh-keygen -Bf ed25519_1 | awk '{print $2}' > ed25519_1.fp.bb
213ssh-keygen -Bf ecdsa_sk1 | awk '{print $2}' > ecdsa_sk1.fp.bb
214ssh-keygen -Bf ed25519_sk1 | awk '{print $2}' > ed25519_sk1.fp.bb
174ssh-keygen -Bf rsa_2 | awk '{print $2}' > rsa_2.fp.bb 215ssh-keygen -Bf rsa_2 | awk '{print $2}' > rsa_2.fp.bb
175ssh-keygen -Bf dsa_2 | awk '{print $2}' > dsa_2.fp.bb 216ssh-keygen -Bf dsa_2 | awk '{print $2}' > dsa_2.fp.bb
176ssh-keygen -Bf ecdsa_2 | awk '{print $2}' > ecdsa_2.fp.bb 217ssh-keygen -Bf ecdsa_2 | awk '{print $2}' > ecdsa_2.fp.bb
177ssh-keygen -Bf ed25519_2 | awk '{print $2}' > ed25519_2.fp.bb 218ssh-keygen -Bf ed25519_2 | awk '{print $2}' > ed25519_2.fp.bb
178 219ssh-keygen -Bf ecdsa_sk2 | awk '{print $2}' > ecdsa_sk2.fp.bb
179# XXX Extend ssh-keygen to do detached signatures (better to test/fuzz against) 220ssh-keygen -Bf ed25519_sk2 | awk '{print $2}' > ed25519_sk2.fp.bb
180 221
181echo "$PW" > pw 222echo "$PW" > pw
diff --git a/regress/unittests/sshkey/test_file.c b/regress/unittests/sshkey/test_file.c
index 55627bc12..7d767336e 100644
--- a/regress/unittests/sshkey/test_file.c
+++ b/regress/unittests/sshkey/test_file.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: test_file.c,v 1.8 2018/09/13 09:03:20 djm Exp $ */ 1/* $OpenBSD: test_file.c,v 1.9 2020/06/19 03:48:49 djm Exp $ */
2/* 2/*
3 * Regress test for sshkey.h key management API 3 * Regress test for sshkey.h key management API
4 * 4 *
@@ -422,6 +422,137 @@ sshkey_file_tests(void)
422 422
423 sshkey_free(k1); 423 sshkey_free(k1);
424 424
425#if defined(WITH_OPENSSL) && defined(OPENSSL_HAS_ECC)
426 TEST_START("parse ECDSA-SK from private");
427 buf = load_file("ecdsa_sk1");
428 ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, "", &k1, NULL), 0);
429 sshbuf_free(buf);
430 ASSERT_PTR_NE(k1, NULL);
431 ASSERT_INT_EQ(k1->type, KEY_ECDSA_SK);
432 TEST_DONE();
433
434 TEST_START("parse ECDSA-SK from private w/ passphrase");
435 buf = load_file("ecdsa_sk1_pw");
436 ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf,
437 (const char *)sshbuf_ptr(pw), &k2, NULL), 0);
438 sshbuf_free(buf);
439 ASSERT_PTR_NE(k2, NULL);
440 ASSERT_INT_EQ(sshkey_equal(k1, k2), 1);
441 sshkey_free(k2);
442 TEST_DONE();
443
444 TEST_START("load ECDSA-SK from public");
445 ASSERT_INT_EQ(sshkey_load_public(test_data_file("ecdsa_sk1.pub"), &k2,
446 NULL), 0);
447 ASSERT_PTR_NE(k2, NULL);
448 ASSERT_INT_EQ(sshkey_equal(k1, k2), 1);
449 sshkey_free(k2);
450 TEST_DONE();
451
452 TEST_START("load ECDSA-SK cert");
453 ASSERT_INT_EQ(sshkey_load_cert(test_data_file("ecdsa_sk1"), &k2), 0);
454 ASSERT_PTR_NE(k2, NULL);
455 ASSERT_INT_EQ(k2->type, KEY_ECDSA_SK_CERT);
456 ASSERT_INT_EQ(sshkey_equal(k1, k2), 0);
457 ASSERT_INT_EQ(sshkey_equal_public(k1, k2), 1);
458 TEST_DONE();
459
460 TEST_START("ECDSA-SK key hex fingerprint");
461 buf = load_text_file("ecdsa_sk1.fp");
462 cp = sshkey_fingerprint(k1, SSH_DIGEST_SHA256, SSH_FP_BASE64);
463 ASSERT_PTR_NE(cp, NULL);
464 ASSERT_STRING_EQ(cp, (const char *)sshbuf_ptr(buf));
465 sshbuf_free(buf);
466 free(cp);
467 TEST_DONE();
468
469 TEST_START("ECDSA-SK cert hex fingerprint");
470 buf = load_text_file("ecdsa_sk1-cert.fp");
471 cp = sshkey_fingerprint(k2, SSH_DIGEST_SHA256, SSH_FP_BASE64);
472 ASSERT_PTR_NE(cp, NULL);
473 ASSERT_STRING_EQ(cp, (const char *)sshbuf_ptr(buf));
474 sshbuf_free(buf);
475 free(cp);
476 sshkey_free(k2);
477 TEST_DONE();
478
479 TEST_START("ECDSA-SK key bubblebabble fingerprint");
480 buf = load_text_file("ecdsa_sk1.fp.bb");
481 cp = sshkey_fingerprint(k1, SSH_DIGEST_SHA1, SSH_FP_BUBBLEBABBLE);
482 ASSERT_PTR_NE(cp, NULL);
483 ASSERT_STRING_EQ(cp, (const char *)sshbuf_ptr(buf));
484 sshbuf_free(buf);
485 free(cp);
486 TEST_DONE();
487
488 sshkey_free(k1);
489#endif
490
491 TEST_START("parse Ed25519-SK from private");
492 buf = load_file("ed25519_sk1");
493 ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf, "", &k1, NULL), 0);
494 sshbuf_free(buf);
495 ASSERT_PTR_NE(k1, NULL);
496 ASSERT_INT_EQ(k1->type, KEY_ED25519_SK);
497 /* XXX check key contents */
498 TEST_DONE();
499
500 TEST_START("parse Ed25519-SK from private w/ passphrase");
501 buf = load_file("ed25519_sk1_pw");
502 ASSERT_INT_EQ(sshkey_parse_private_fileblob(buf,
503 (const char *)sshbuf_ptr(pw), &k2, NULL), 0);
504 sshbuf_free(buf);
505 ASSERT_PTR_NE(k2, NULL);
506 ASSERT_INT_EQ(sshkey_equal(k1, k2), 1);
507 sshkey_free(k2);
508 TEST_DONE();
509
510 TEST_START("load Ed25519-SK from public");
511 ASSERT_INT_EQ(sshkey_load_public(test_data_file("ed25519_sk1.pub"),
512 &k2, NULL), 0);
513 ASSERT_PTR_NE(k2, NULL);
514 ASSERT_INT_EQ(sshkey_equal(k1, k2), 1);
515 sshkey_free(k2);
516 TEST_DONE();
517
518 TEST_START("load Ed25519-SK cert");
519 ASSERT_INT_EQ(sshkey_load_cert(test_data_file("ed25519_sk1"), &k2), 0);
520 ASSERT_PTR_NE(k2, NULL);
521 ASSERT_INT_EQ(k2->type, KEY_ED25519_SK_CERT);
522 ASSERT_INT_EQ(sshkey_equal(k1, k2), 0);
523 ASSERT_INT_EQ(sshkey_equal_public(k1, k2), 1);
524 TEST_DONE();
525
526 TEST_START("Ed25519-SK key hex fingerprint");
527 buf = load_text_file("ed25519_sk1.fp");
528 cp = sshkey_fingerprint(k1, SSH_DIGEST_SHA256, SSH_FP_BASE64);
529 ASSERT_PTR_NE(cp, NULL);
530 ASSERT_STRING_EQ(cp, (const char *)sshbuf_ptr(buf));
531 sshbuf_free(buf);
532 free(cp);
533 TEST_DONE();
534
535 TEST_START("Ed25519-SK cert hex fingerprint");
536 buf = load_text_file("ed25519_sk1-cert.fp");
537 cp = sshkey_fingerprint(k2, SSH_DIGEST_SHA256, SSH_FP_BASE64);
538 ASSERT_PTR_NE(cp, NULL);
539 ASSERT_STRING_EQ(cp, (const char *)sshbuf_ptr(buf));
540 sshbuf_free(buf);
541 free(cp);
542 sshkey_free(k2);
543 TEST_DONE();
544
545 TEST_START("Ed25519-SK key bubblebabble fingerprint");
546 buf = load_text_file("ed25519_sk1.fp.bb");
547 cp = sshkey_fingerprint(k1, SSH_DIGEST_SHA1, SSH_FP_BUBBLEBABBLE);
548 ASSERT_PTR_NE(cp, NULL);
549 ASSERT_STRING_EQ(cp, (const char *)sshbuf_ptr(buf));
550 sshbuf_free(buf);
551 free(cp);
552 TEST_DONE();
553
554 sshkey_free(k1);
555
425 sshbuf_free(pw); 556 sshbuf_free(pw);
426 557
427} 558}
diff --git a/regress/unittests/sshkey/test_fuzz.c b/regress/unittests/sshkey/test_fuzz.c
index 359811893..f111446a9 100644
--- a/regress/unittests/sshkey/test_fuzz.c
+++ b/regress/unittests/sshkey/test_fuzz.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: test_fuzz.c,v 1.11 2019/11/25 10:32:35 djm Exp $ */ 1/* $OpenBSD: test_fuzz.c,v 1.12 2020/08/27 03:55:22 djm Exp $ */
2/* 2/*
3 * Fuzz tests for key parsing 3 * Fuzz tests for key parsing
4 * 4 *
@@ -88,7 +88,7 @@ sig_fuzz(struct sshkey *k, const char *sig_alg)
88 fuzzers |= FUZZ_2_BIT_FLIP; 88 fuzzers |= FUZZ_2_BIT_FLIP;
89 89
90 ASSERT_INT_EQ(sshkey_sign(k, &sig, &l, c, sizeof(c), 90 ASSERT_INT_EQ(sshkey_sign(k, &sig, &l, c, sizeof(c),
91 sig_alg, NULL, 0), 0); 91 sig_alg, NULL, NULL, 0), 0);
92 ASSERT_SIZE_T_GT(l, 0); 92 ASSERT_SIZE_T_GT(l, 0);
93 fuzz = fuzz_begin(fuzzers, sig, l); 93 fuzz = fuzz_begin(fuzzers, sig, l);
94 ASSERT_INT_EQ(sshkey_verify(k, sig, l, c, sizeof(c), NULL, 0, NULL), 0); 94 ASSERT_INT_EQ(sshkey_verify(k, sig, l, c, sizeof(c), NULL, 0, NULL), 0);
diff --git a/regress/unittests/sshkey/test_sshkey.c b/regress/unittests/sshkey/test_sshkey.c
index 025bb9815..7dc20cc85 100644
--- a/regress/unittests/sshkey/test_sshkey.c
+++ b/regress/unittests/sshkey/test_sshkey.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: test_sshkey.c,v 1.20 2019/11/25 10:32:35 djm Exp $ */ 1/* $OpenBSD: test_sshkey.c,v 1.21 2020/08/27 03:55:22 djm Exp $ */
2/* 2/*
3 * Regress test for sshkey.h key management API 3 * Regress test for sshkey.h key management API
4 * 4 *
@@ -101,7 +101,7 @@ build_cert(struct sshbuf *b, struct sshkey *k, const char *type,
101 ASSERT_INT_EQ(sshbuf_put_string(b, NULL, 0), 0); /* reserved */ 101 ASSERT_INT_EQ(sshbuf_put_string(b, NULL, 0), 0); /* reserved */
102 ASSERT_INT_EQ(sshbuf_put_stringb(b, ca_buf), 0); /* signature key */ 102 ASSERT_INT_EQ(sshbuf_put_stringb(b, ca_buf), 0); /* signature key */
103 ASSERT_INT_EQ(sshkey_sign(sign_key, &sigblob, &siglen, 103 ASSERT_INT_EQ(sshkey_sign(sign_key, &sigblob, &siglen,
104 sshbuf_ptr(b), sshbuf_len(b), sig_alg, NULL, 0), 0); 104 sshbuf_ptr(b), sshbuf_len(b), sig_alg, NULL, NULL, 0), 0);
105 ASSERT_INT_EQ(sshbuf_put_string(b, sigblob, siglen), 0); /* signature */ 105 ASSERT_INT_EQ(sshbuf_put_string(b, sigblob, siglen), 0); /* signature */
106 106
107 free(sigblob); 107 free(sigblob);
@@ -120,7 +120,8 @@ signature_test(struct sshkey *k, struct sshkey *bad, const char *sig_alg,
120 size_t len; 120 size_t len;
121 u_char *sig; 121 u_char *sig;
122 122
123 ASSERT_INT_EQ(sshkey_sign(k, &sig, &len, d, l, sig_alg, NULL, 0), 0); 123 ASSERT_INT_EQ(sshkey_sign(k, &sig, &len, d, l, sig_alg,
124 NULL, NULL, 0), 0);
124 ASSERT_SIZE_T_GT(len, 8); 125 ASSERT_SIZE_T_GT(len, 8);
125 ASSERT_PTR_NE(sig, NULL); 126 ASSERT_PTR_NE(sig, NULL);
126 ASSERT_INT_EQ(sshkey_verify(k, sig, len, d, l, NULL, 0, NULL), 0); 127 ASSERT_INT_EQ(sshkey_verify(k, sig, len, d, l, NULL, 0, NULL), 0);
@@ -437,7 +438,7 @@ sshkey_tests(void)
437 put_opt(k1->cert->extensions, "permit-X11-forwarding", NULL); 438 put_opt(k1->cert->extensions, "permit-X11-forwarding", NULL);
438 put_opt(k1->cert->extensions, "permit-agent-forwarding", NULL); 439 put_opt(k1->cert->extensions, "permit-agent-forwarding", NULL);
439 ASSERT_INT_EQ(sshkey_from_private(k2, &k1->cert->signature_key), 0); 440 ASSERT_INT_EQ(sshkey_from_private(k2, &k1->cert->signature_key), 0);
440 ASSERT_INT_EQ(sshkey_certify(k1, k2, NULL, NULL), 0); 441 ASSERT_INT_EQ(sshkey_certify(k1, k2, NULL, NULL, NULL), 0);
441 b = sshbuf_new(); 442 b = sshbuf_new();
442 ASSERT_PTR_NE(b, NULL); 443 ASSERT_PTR_NE(b, NULL);
443 ASSERT_INT_EQ(sshkey_putb(k1, b), 0); 444 ASSERT_INT_EQ(sshkey_putb(k1, b), 0);
diff --git a/regress/unittests/sshkey/testdata/ecdsa_sk1 b/regress/unittests/sshkey/testdata/ecdsa_sk1
new file mode 100644
index 000000000..b51fb73d6
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/ecdsa_sk1
@@ -0,0 +1,13 @@
1-----BEGIN OPENSSH PRIVATE KEY-----
2b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAfwAAACJzay1lY2
3RzYS1zaGEyLW5pc3RwMjU2QG9wZW5zc2guY29tAAAACG5pc3RwMjU2AAAAQQRnVT5Cji1D
4Ge2+q2X0vATh6LYnODV+DJrshJorr5GnipW29RfuaDXs0WB6XBej9dOLazVRDjQrtV19Qg
5O6cfkFAAAABHNzaDoAAAGQuPdnP7j3Zz8AAAAic2stZWNkc2Etc2hhMi1uaXN0cDI1NkBv
6cGVuc3NoLmNvbQAAAAhuaXN0cDI1NgAAAEEEZ1U+Qo4tQxntvqtl9LwE4ei2Jzg1fgya7I
7SaK6+Rp4qVtvUX7mg17NFgelwXo/XTi2s1UQ40K7VdfUIDunH5BQAAAARzc2g6AQAAAOMt
8LS0tLUJFR0lOIEVDIFBSSVZBVEUgS0VZLS0tLS0KTUhjQ0FRRUVJRURmVFB4YzA0alN5Zk
9Z5NlhoV1pTVlpzcnU5ZFlaSVpTOWhjeVFhcDlVT29Bb0dDQ3FHU000OQpBd0VIb1VRRFFn
10QUVaMVUrUW80dFF4bnR2cXRsOUx3RTRlaTJKemcxZmd5YTdJU2FLNitScDRxVnR2VVg3bW
11cxCjdORmdlbHdYby9YVGkyczFVUTQwSzdWZGZVSUR1bkg1QlE9PQotLS0tLUVORCBFQyBQ
12UklWQVRFIEtFWS0tLS0tCgAAAAAAAAAURUNEU0EtU0sgdGVzdCBrZXkgIzEBAgMEBQ==
13-----END OPENSSH PRIVATE KEY-----
diff --git a/regress/unittests/sshkey/testdata/ecdsa_sk1-cert.fp b/regress/unittests/sshkey/testdata/ecdsa_sk1-cert.fp
new file mode 100644
index 000000000..d1921451d
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/ecdsa_sk1-cert.fp
@@ -0,0 +1 @@
SHA256:Go7HO0CVPYG+BSDSk9ZUJBKGSrtBExp6obTa9iqzIUo
diff --git a/regress/unittests/sshkey/testdata/ecdsa_sk1-cert.pub b/regress/unittests/sshkey/testdata/ecdsa_sk1-cert.pub
new file mode 100644
index 000000000..9586c61a7
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/ecdsa_sk1-cert.pub
@@ -0,0 +1 @@
sk-ecdsa-sha2-nistp256-cert-v01@openssh.com AAAAK3NrLWVjZHNhLXNoYTItbmlzdHAyNTYtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgE012YoSBE9hEC2FRzblcSx784JNo2A4g611A7I75YMMAAAAIbmlzdHAyNTYAAABBBGdVPkKOLUMZ7b6rZfS8BOHotic4NX4MmuyEmiuvkaeKlbb1F+5oNezRYHpcF6P104trNVEONCu1XX1CA7px+QUAAAAEc3NoOgAAAAAAAAAHAAAAAgAAAAZqdWxpdXMAAAASAAAABWhvc3QxAAAABWhvc3QyAAAAADaLg2AAAAAATR3h4AAAAAAAAAAAAAAAAAAAAGgAAAATZWNkc2Etc2hhMi1uaXN0cDI1NgAAAAhuaXN0cDI1NgAAAEEEAlTtPiWUHubBeCys4Xp0QF91dYARpkyqtCnzg10HRS+ZDgkMrSUvPPG+Ge8iqtnB951MBxDq9FqDFIkhQBYXDAAAAGQAAAATZWNkc2Etc2hhMi1uaXN0cDI1NgAAAEkAAAAhALY+eXRJjVGnMk38Sm5S+H5CloNq757ypsoxt+WYoadtAAAAIA42/mAhUfLij1GY7wl+OFrI+icB/t4tGiEUZmhx6Foo ECDSA-SK test key #1
diff --git a/regress/unittests/sshkey/testdata/ecdsa_sk1.fp b/regress/unittests/sshkey/testdata/ecdsa_sk1.fp
new file mode 100644
index 000000000..d1921451d
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/ecdsa_sk1.fp
@@ -0,0 +1 @@
SHA256:Go7HO0CVPYG+BSDSk9ZUJBKGSrtBExp6obTa9iqzIUo
diff --git a/regress/unittests/sshkey/testdata/ecdsa_sk1.fp.bb b/regress/unittests/sshkey/testdata/ecdsa_sk1.fp.bb
new file mode 100644
index 000000000..cb9f4dd0d
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/ecdsa_sk1.fp.bb
@@ -0,0 +1 @@
xovem-sacac-dageg-vovoc-symyz-bozal-cibiv-cyvat-vylyn-romib-hoxax
diff --git a/regress/unittests/sshkey/testdata/ecdsa_sk1.pub b/regress/unittests/sshkey/testdata/ecdsa_sk1.pub
new file mode 100644
index 000000000..c3b21e02b
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/ecdsa_sk1.pub
@@ -0,0 +1 @@
sk-ecdsa-sha2-nistp256@openssh.com AAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZAb3BlbnNzaC5jb20AAAAIbmlzdHAyNTYAAABBBGdVPkKOLUMZ7b6rZfS8BOHotic4NX4MmuyEmiuvkaeKlbb1F+5oNezRYHpcF6P104trNVEONCu1XX1CA7px+QUAAAAEc3NoOg== ECDSA-SK test key #1
diff --git a/regress/unittests/sshkey/testdata/ecdsa_sk1_pw b/regress/unittests/sshkey/testdata/ecdsa_sk1_pw
new file mode 100644
index 000000000..4fa23a738
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/ecdsa_sk1_pw
@@ -0,0 +1,14 @@
1-----BEGIN OPENSSH PRIVATE KEY-----
2b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABB6vcJVx2
3cPc7yYRROup8VnAAAAEAAAAAEAAAB/AAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZAb3Bl
4bnNzaC5jb20AAAAIbmlzdHAyNTYAAABBBGdVPkKOLUMZ7b6rZfS8BOHotic4NX4MmuyEmi
5uvkaeKlbb1F+5oNezRYHpcF6P104trNVEONCu1XX1CA7px+QUAAAAEc3NoOgAAAZBrvCxe
6xFz0bvzXwaPhrUHBeNCoZy/wNKDx0kxlxUPuA+lgOvy5l3lT3yxxd0qj5PQB+NTcuz8AAE
71f7aSWQNZSifox3COsBGoHV9C8i+glcxiBKheAZD+EBnRGjG8kbcaLhuYDW/I39qNe8lHW
8YSDjmvsT55Hy0IAtVRAXizDoXKNdFPTZisC67WyOSJ3ED7Fy4bfT4ApbvhoFTwjikZBEhy
9LOad1sbJa4eT19TsskYfQdnJf8sjAmCMOZY4ZV0FiNW5XZOp8nIal1oyULPfzTAm6oaeFN
100ImCSU3U8h4wUQ8q/3XvBWtTKycZaoou0AwPoP0QN95Ywte7FHezNPb/n8KD7k0S6h9XAX
11UcBeCe5NHyov/0ZzA2p737hzm3w+MXGOboTQMu8WFXeGh4m7QH2o8ZJdgBhM5JF17uii+Q
12ppGoPWHf33MXwB3wxWmKZ0ua0f9AVLkQ2DfFszUoBJE/kcHRd4kj4Q4FWXeMBN0GoH8gdE
13gRWIlxn2/FAOce/BFPzzdP87H0jwz7SdcuVO1L
14-----END OPENSSH PRIVATE KEY-----
diff --git a/regress/unittests/sshkey/testdata/ecdsa_sk2 b/regress/unittests/sshkey/testdata/ecdsa_sk2
new file mode 100644
index 000000000..19db5a3f5
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/ecdsa_sk2
@@ -0,0 +1,13 @@
1-----BEGIN OPENSSH PRIVATE KEY-----
2b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAfwAAACJzay1lY2
3RzYS1zaGEyLW5pc3RwMjU2QG9wZW5zc2guY29tAAAACG5pc3RwMjU2AAAAQQSTl+SR6rTg
4lOZmcQkCtJ3Pd+lWinezo/gHk4oZdZcTQsmEYs766BlWGuB2Bz3qQRLa6cXsP+4K9kAjAJ
57zdoFUAAAABHNzaDoAAAGQ1qllJtapZSYAAAAic2stZWNkc2Etc2hhMi1uaXN0cDI1NkBv
6cGVuc3NoLmNvbQAAAAhuaXN0cDI1NgAAAEEEk5fkkeq04JTmZnEJArSdz3fpVop3s6P4B5
7OKGXWXE0LJhGLO+ugZVhrgdgc96kES2unF7D/uCvZAIwCe83aBVAAAAARzc2g6AQAAAOMt
8LS0tLUJFR0lOIEVDIFBSSVZBVEUgS0VZLS0tLS0KTUhjQ0FRRUVJSkxwVkxnSTVvdkRlOW
9VMWmZodCs5WWlMaitnam0rTXhHTXg5NndiRWw0Wm9Bb0dDQ3FHU000OQpBd0VIb1VRRFFn
10QUVrNWZra2VxMDRKVG1abkVKQXJTZHozZnBWb3AzczZQNEI1T0tHWFdYRTBMSmhHTE8rdW
11daClZocmdkZ2M5NmtFUzJ1bkY3RC91Q3ZaQUl3Q2U4M2FCVkE9PQotLS0tLUVORCBFQyBQ
12UklWQVRFIEtFWS0tLS0tCgAAAAAAAAAURUNEU0EtU0sgdGVzdCBrZXkgIzIBAgMEBQ==
13-----END OPENSSH PRIVATE KEY-----
diff --git a/regress/unittests/sshkey/testdata/ecdsa_sk2.fp b/regress/unittests/sshkey/testdata/ecdsa_sk2.fp
new file mode 100644
index 000000000..1bc99ea0d
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/ecdsa_sk2.fp
@@ -0,0 +1 @@
SHA256:pz8VkgtRY3r50F4zSuzRlmq9c6vPTpJXLKKOgkyUcKE
diff --git a/regress/unittests/sshkey/testdata/ecdsa_sk2.fp.bb b/regress/unittests/sshkey/testdata/ecdsa_sk2.fp.bb
new file mode 100644
index 000000000..bfee7658a
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/ecdsa_sk2.fp.bb
@@ -0,0 +1 @@
xobel-gavur-gorym-pedop-rarob-bunek-gucer-lofeg-syhaf-fylur-zoxix
diff --git a/regress/unittests/sshkey/testdata/ecdsa_sk2.pub b/regress/unittests/sshkey/testdata/ecdsa_sk2.pub
new file mode 100644
index 000000000..2629d9509
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/ecdsa_sk2.pub
@@ -0,0 +1 @@
sk-ecdsa-sha2-nistp256@openssh.com AAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZAb3BlbnNzaC5jb20AAAAIbmlzdHAyNTYAAABBBJOX5JHqtOCU5mZxCQK0nc936VaKd7Oj+AeTihl1lxNCyYRizvroGVYa4HYHPepBEtrpxew/7gr2QCMAnvN2gVQAAAAEc3NoOg== ECDSA-SK test key #2
diff --git a/regress/unittests/sshkey/testdata/ed25519_sk1 b/regress/unittests/sshkey/testdata/ed25519_sk1
new file mode 100644
index 000000000..4196d9c6a
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/ed25519_sk1
@@ -0,0 +1,8 @@
1-----BEGIN OPENSSH PRIVATE KEY-----
2b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAASgAAABpzay1zc2
3gtZWQyNTUxOUBvcGVuc3NoLmNvbQAAACAhaP5OS1PPOt7uumAvXlDtte9EHbqIT1EZEJ2y
42v3XMwAAAARzc2g6AAAAuBocY6UaHGOlAAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY2
59tAAAAICFo/k5LU8863u66YC9eUO2170QduohPURkQnbLa/dczAAAABHNzaDoBAAAAQJYq
6lGHhFoA25/q8X/rdTqDAb7dhqs4ehhd/w8x99CwiIWj+TktTzzre7rpgL15Q7bXvRB26iE
79RGRCdstr91zMAAAAAAAAAFkVEMjU1MTktU0sgdGVzdCBrZXkgIzEBAgM=
8-----END OPENSSH PRIVATE KEY-----
diff --git a/regress/unittests/sshkey/testdata/ed25519_sk1-cert.fp b/regress/unittests/sshkey/testdata/ed25519_sk1-cert.fp
new file mode 100644
index 000000000..a6bb1a99c
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/ed25519_sk1-cert.fp
@@ -0,0 +1 @@
SHA256:6WZVJ44bqhAWLVP4Ns0TDkoSQSsZo/h2K+mEvOaNFbw
diff --git a/regress/unittests/sshkey/testdata/ed25519_sk1-cert.pub b/regress/unittests/sshkey/testdata/ed25519_sk1-cert.pub
new file mode 100644
index 000000000..3c72c268d
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/ed25519_sk1-cert.pub
@@ -0,0 +1 @@
sk-ssh-ed25519-cert-v01@openssh.com AAAAI3NrLXNzaC1lZDI1NTE5LWNlcnQtdjAxQG9wZW5zc2guY29tAAAAIJr7CuMntQKvHoUshx374fJLFEkyxKsEOBA1H6hk5scoAAAAICFo/k5LU8863u66YC9eUO2170QduohPURkQnbLa/dczAAAABHNzaDoAAAAAAAAACAAAAAIAAAAGanVsaXVzAAAAEgAAAAVob3N0MQAAAAVob3N0MgAAAAA2i4NgAAAAAE0d4eAAAAAAAAAAAAAAAAAAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIOo/0xneV3iM2qWEo5RUwvUYa2bjff292T5vvuXRomGQAAAAUwAAAAtzc2gtZWQyNTUxOQAAAECgsRGLDh1SI3m66MRp9D2iLP4wabQ0OrDgGidk7LsVn2XZHV5jBZN1RtNfe6PBMeVzfRtGUzOg18sO7H7uU+EC ED25519-SK test key #1
diff --git a/regress/unittests/sshkey/testdata/ed25519_sk1.fp b/regress/unittests/sshkey/testdata/ed25519_sk1.fp
new file mode 100644
index 000000000..a6bb1a99c
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/ed25519_sk1.fp
@@ -0,0 +1 @@
SHA256:6WZVJ44bqhAWLVP4Ns0TDkoSQSsZo/h2K+mEvOaNFbw
diff --git a/regress/unittests/sshkey/testdata/ed25519_sk1.fp.bb b/regress/unittests/sshkey/testdata/ed25519_sk1.fp.bb
new file mode 100644
index 000000000..1bfe20a48
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/ed25519_sk1.fp.bb
@@ -0,0 +1 @@
xucac-vusip-tydoz-dudad-nerif-raran-tezun-cogyd-pamoh-bahef-ruxix
diff --git a/regress/unittests/sshkey/testdata/ed25519_sk1.pub b/regress/unittests/sshkey/testdata/ed25519_sk1.pub
new file mode 100644
index 000000000..60fe00c39
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/ed25519_sk1.pub
@@ -0,0 +1 @@
sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAICFo/k5LU8863u66YC9eUO2170QduohPURkQnbLa/dczAAAABHNzaDo= ED25519-SK test key #1
diff --git a/regress/unittests/sshkey/testdata/ed25519_sk1_pw b/regress/unittests/sshkey/testdata/ed25519_sk1_pw
new file mode 100644
index 000000000..1c29ff07f
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/ed25519_sk1_pw
@@ -0,0 +1,9 @@
1-----BEGIN OPENSSH PRIVATE KEY-----
2b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABDr5R9Yf/
3ucEh0Ns6c34tcIAAAAEAAAAAEAAABKAAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29t
4AAAAICFo/k5LU8863u66YC9eUO2170QduohPURkQnbLa/dczAAAABHNzaDoAAADA2T6owx
5OSgKz4DvLnS3UJ/renbuew5mbkIWB1/y8xd3y5Usm08iUCAlKxep9dVRQvmyoTrc/7rHOM
6DkokNw+WgKambnlYT/9QfqViZ9iCBtbdmhLM6ksUCgQefvquRyXoJxlWstjXUll6Ru+ZbT
7H//Ss8C1bYtAiXR68OQ+rhDrvQxA9P8J1sGIlkuV3h8YXddSpyBW2Sn0LTHHBXYZo86cXZ
8G4Lnc8aGYm65eqdHgkfRmht3eS8DTdzEBfBNH5Ml
9-----END OPENSSH PRIVATE KEY-----
diff --git a/regress/unittests/sshkey/testdata/ed25519_sk2 b/regress/unittests/sshkey/testdata/ed25519_sk2
new file mode 100644
index 000000000..b9b748966
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/ed25519_sk2
@@ -0,0 +1,8 @@
1-----BEGIN OPENSSH PRIVATE KEY-----
2b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAASgAAABpzay1zc2
3gtZWQyNTUxOUBvcGVuc3NoLmNvbQAAACAV8fu1Sc31QLK2R/zGPdN3ve5xuFvDc7mEAWxb
4aI+YcwAAAARzc2g6AAAAuJCMX5uQjF+bAAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY2
59tAAAAIBXx+7VJzfVAsrZH/MY903e97nG4W8NzuYQBbFtoj5hzAAAABHNzaDoBAAAAQObE
6PajcKI1W30EKOhBb6u+Fgx464kf7EjnqDSg4l7gAFfH7tUnN9UCytkf8xj3Td73ucbhbw3
7O5hAFsW2iPmHMAAAAAAAAAFkVEMjU1MTktU0sgdGVzdCBrZXkgIzIBAgM=
8-----END OPENSSH PRIVATE KEY-----
diff --git a/regress/unittests/sshkey/testdata/ed25519_sk2.fp b/regress/unittests/sshkey/testdata/ed25519_sk2.fp
new file mode 100644
index 000000000..1c4369a00
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/ed25519_sk2.fp
@@ -0,0 +1 @@
SHA256:b9BVPS5vuU4yu/FgweojLLg6zbfmBBoWLUgibdxxsoo
diff --git a/regress/unittests/sshkey/testdata/ed25519_sk2.fp.bb b/regress/unittests/sshkey/testdata/ed25519_sk2.fp.bb
new file mode 100644
index 000000000..f5fd9efd8
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/ed25519_sk2.fp.bb
@@ -0,0 +1 @@
xemac-tizim-dihep-supar-zupib-cukak-pasis-febeg-dyguv-hutec-dyxox
diff --git a/regress/unittests/sshkey/testdata/ed25519_sk2.pub b/regress/unittests/sshkey/testdata/ed25519_sk2.pub
new file mode 100644
index 000000000..c7ed9f524
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/ed25519_sk2.pub
@@ -0,0 +1 @@
sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIBXx+7VJzfVAsrZH/MY903e97nG4W8NzuYQBbFtoj5hzAAAABHNzaDo= ED25519-SK test key #2
diff --git a/regress/unittests/sshsig/Makefile b/regress/unittests/sshsig/Makefile
new file mode 100644
index 000000000..4b607df45
--- /dev/null
+++ b/regress/unittests/sshsig/Makefile
@@ -0,0 +1,25 @@
1# $OpenBSD: Makefile,v 1.1 2020/06/19 04:32:09 djm Exp $
2
3PROG=test_sshsig
4SRCS=tests.c
5
6# From usr.bin/ssh
7SRCS+=sshbuf-getput-basic.c sshbuf-getput-crypto.c sshbuf-misc.c sshbuf.c
8SRCS+=sshbuf-io.c atomicio.c sshkey.c authfile.c cipher.c log.c ssh-rsa.c
9SRCS+=ssh-dss.c ssh-ecdsa.c ssh-ed25519.c mac.c umac.c umac128.c hmac.c misc.c
10SRCS+=ssherr.c uidswap.c cleanup.c xmalloc.c match.c krl.c fatal.c
11SRCS+=addrmatch.c bitmap.c sshsig.c
12SRCS+=ed25519.c hash.c ge25519.c fe25519.c sc25519.c verify.c
13SRCS+=cipher-chachapoly.c chacha.c poly1305.c ssh-ecdsa-sk.c ssh-sk.c
14SRCS+=ssh-ed25519-sk.c sk-usbhid.c
15
16SRCS+=digest-openssl.c
17#SRCS+=digest-libc.c
18SRCS+=utf8.c
19
20REGRESS_TARGETS=run-regress-${PROG}
21
22run-regress-${PROG}: ${PROG}
23 env ${TEST_ENV} ./${PROG} ${UNITTEST_ARGS} -d ${.CURDIR}/testdata
24
25.include <bsd.regress.mk>
diff --git a/regress/unittests/sshsig/mktestdata.sh b/regress/unittests/sshsig/mktestdata.sh
new file mode 100755
index 000000000..d2300f9c6
--- /dev/null
+++ b/regress/unittests/sshsig/mktestdata.sh
@@ -0,0 +1,42 @@
1#!/bin/sh
2# $OpenBSD: mktestdata.sh,v 1.1 2020/06/19 04:32:09 djm Exp $
3
4NAMESPACE=unittest
5
6set -ex
7
8cd testdata
9
10if [ -f ../../../misc/sk-dummy/sk-dummy.so ] ; then
11 SK_DUMMY=../../../misc/sk-dummy/sk-dummy.so
12elif [ -f ../../../misc/sk-dummy/obj/sk-dummy.so ] ; then
13 SK_DUMMY=../../../misc/sk-dummy/obj/sk-dummy.so
14else
15 echo "Can't find sk-dummy.so" 1>&2
16 exit 1
17fi
18
19rm -f signed-data namespace
20rm -f rsa dsa ecdsa ed25519 ecdsa_sk ed25519_sk
21rm -f rsa.sig dsa.sig ecdsa.sig ed25519.sig ecdsa_sk.sig ed25519_sk.sig
22
23printf "This is a test, this is only a test" > signed-data
24printf "$NAMESPACE" > namespace
25
26ssh-keygen -t rsa -C "RSA test" -N "" -f rsa -m PEM
27ssh-keygen -t dsa -C "DSA test" -N "" -f dsa -m PEM
28ssh-keygen -t ecdsa -C "ECDSA test" -N "" -f ecdsa -m PEM
29ssh-keygen -t ed25519 -C "ED25519 test key" -N "" -f ed25519
30ssh-keygen -w "$SK_DUMMY" -t ecdsa-sk -C "ECDSA-SK test key" \
31 -N "" -f ecdsa_sk
32ssh-keygen -w "$SK_DUMMY" -t ed25519-sk -C "ED25519-SK test key" \
33 -N "" -f ed25519_sk
34
35ssh-keygen -Y sign -f rsa -n $NAMESPACE - < signed-data > rsa.sig
36ssh-keygen -Y sign -f dsa -n $NAMESPACE - < signed-data > dsa.sig
37ssh-keygen -Y sign -f ecdsa -n $NAMESPACE - < signed-data > ecdsa.sig
38ssh-keygen -Y sign -f ed25519 -n $NAMESPACE - < signed-data > ed25519.sig
39ssh-keygen -w "$SK_DUMMY" \
40 -Y sign -f ecdsa_sk -n $NAMESPACE - < signed-data > ecdsa_sk.sig
41ssh-keygen -w "$SK_DUMMY" \
42 -Y sign -f ed25519_sk -n $NAMESPACE - < signed-data > ed25519_sk.sig
diff --git a/regress/unittests/sshsig/testdata/dsa b/regress/unittests/sshsig/testdata/dsa
new file mode 100644
index 000000000..7c0063efc
--- /dev/null
+++ b/regress/unittests/sshsig/testdata/dsa
@@ -0,0 +1,12 @@
1-----BEGIN DSA PRIVATE KEY-----
2MIIBuwIBAAKBgQCXpndQdz2mQVnk+lYOF3nxDT+h6SiJmUvBFhnFWBv8tG4pTOkb
3EwGufLEzGpzjTj+3bjVau7LFt37AFrqs4Num272BWNsYNIjOlGPgq7Xjv32FN00x
4JYh1DoRs1cGGnvohlsWEamGGhTHD1a9ipctPEBV+NrxtZMrl+pO/ZZg8vQIVAKJB
5P3iNYSpSuW74+q4WxLCuK8O3AoGAQldE+BIuxlvoG1IFiWesx0CU+H2KO0SEZc9A
6SX/qjOabh0Fb78ofTlEf9gWHFfat8SvSJQIOPMVlb76Lio8AAMT8Eaa/qQKKYmQL
7dNq4MLhhjxx5KLGt6J2JyFPExCv+qnHYHD59ngtLwKyqGjpSC8LPLktdXn8W/Aad
8Ly1K7+MCgYBsMHBczhSeUh8w7i20CVg4OlNTmfJRVU2tO6OpMxZ/quitRm3hLKSN
9u4xRkvHJwi4LhQtv1SXvLI5gs5P3gCG8tsIAiyCqLinHha63iBdJpqhnV/x/j7dB
10yJr3xJbnmLdWLkkCtNk1Ir1/CuEz+ufAyLGdKWksEAu1UUlb501BkwIVAILIa3Rg
110h7J9lQpHJphvF3K0M1T
12-----END DSA PRIVATE KEY-----
diff --git a/regress/unittests/sshsig/testdata/dsa.pub b/regress/unittests/sshsig/testdata/dsa.pub
new file mode 100644
index 000000000..e77aa7ef4
--- /dev/null
+++ b/regress/unittests/sshsig/testdata/dsa.pub
@@ -0,0 +1 @@
ssh-dss AAAAB3NzaC1kc3MAAACBAJemd1B3PaZBWeT6Vg4XefENP6HpKImZS8EWGcVYG/y0bilM6RsTAa58sTManONOP7duNVq7ssW3fsAWuqzg26bbvYFY2xg0iM6UY+CrteO/fYU3TTEliHUOhGzVwYae+iGWxYRqYYaFMcPVr2Kly08QFX42vG1kyuX6k79lmDy9AAAAFQCiQT94jWEqUrlu+PquFsSwrivDtwAAAIBCV0T4Ei7GW+gbUgWJZ6zHQJT4fYo7RIRlz0BJf+qM5puHQVvvyh9OUR/2BYcV9q3xK9IlAg48xWVvvouKjwAAxPwRpr+pAopiZAt02rgwuGGPHHkosa3onYnIU8TEK/6qcdgcPn2eC0vArKoaOlILws8uS11efxb8Bp0vLUrv4wAAAIBsMHBczhSeUh8w7i20CVg4OlNTmfJRVU2tO6OpMxZ/quitRm3hLKSNu4xRkvHJwi4LhQtv1SXvLI5gs5P3gCG8tsIAiyCqLinHha63iBdJpqhnV/x/j7dByJr3xJbnmLdWLkkCtNk1Ir1/CuEz+ufAyLGdKWksEAu1UUlb501Bkw== DSA test
diff --git a/regress/unittests/sshsig/testdata/dsa.sig b/regress/unittests/sshsig/testdata/dsa.sig
new file mode 100644
index 000000000..0b14ad6b8
--- /dev/null
+++ b/regress/unittests/sshsig/testdata/dsa.sig
@@ -0,0 +1,13 @@
1-----BEGIN SSH SIGNATURE-----
2U1NIU0lHAAAAAQAAAbEAAAAHc3NoLWRzcwAAAIEAl6Z3UHc9pkFZ5PpWDhd58Q0/oekoiZ
3lLwRYZxVgb/LRuKUzpGxMBrnyxMxqc404/t241Wruyxbd+wBa6rODbptu9gVjbGDSIzpRj
44Ku14799hTdNMSWIdQ6EbNXBhp76IZbFhGphhoUxw9WvYqXLTxAVfja8bWTK5fqTv2WYPL
50AAAAVAKJBP3iNYSpSuW74+q4WxLCuK8O3AAAAgEJXRPgSLsZb6BtSBYlnrMdAlPh9ijtE
6hGXPQEl/6ozmm4dBW+/KH05RH/YFhxX2rfEr0iUCDjzFZW++i4qPAADE/BGmv6kCimJkC3
7TauDC4YY8ceSixreidichTxMQr/qpx2Bw+fZ4LS8Csqho6UgvCzy5LXV5/FvwGnS8tSu/j
8AAAAgGwwcFzOFJ5SHzDuLbQJWDg6U1OZ8lFVTa07o6kzFn+q6K1GbeEspI27jFGS8cnCLg
9uFC2/VJe8sjmCzk/eAIby2wgCLIKouKceFrreIF0mmqGdX/H+Pt0HImvfElueYt1YuSQK0
102TUivX8K4TP658DIsZ0paSwQC7VRSVvnTUGTAAAACHVuaXR0ZXN0AAAAAAAAAAZzaGE1MT
11IAAAA3AAAAB3NzaC1kc3MAAAAodi5lr0pqBpO76OY4N1CtfR85BCgZ95qfVjP/e9lToj0q
12lwjSJJXUjw==
13-----END SSH SIGNATURE-----
diff --git a/regress/unittests/sshsig/testdata/ecdsa b/regress/unittests/sshsig/testdata/ecdsa
new file mode 100644
index 000000000..55fb440e0
--- /dev/null
+++ b/regress/unittests/sshsig/testdata/ecdsa
@@ -0,0 +1,5 @@
1-----BEGIN EC PRIVATE KEY-----
2MHcCAQEEIFg0ZCSEB5LNeLsXYL25g3kqEWsqh52DR+yNOjyQJqyZoAoGCCqGSM49
3AwEHoUQDQgAE3sud88FV0N8FPspZSV7LWqj6uPPLRZiSsenNuEYAteWPyDgrZsWb
4LzXBuUJucepaCNuW/QWgHBRbrjWj3ERm3A==
5-----END EC PRIVATE KEY-----
diff --git a/regress/unittests/sshsig/testdata/ecdsa.pub b/regress/unittests/sshsig/testdata/ecdsa.pub
new file mode 100644
index 000000000..14ec6cf12
--- /dev/null
+++ b/regress/unittests/sshsig/testdata/ecdsa.pub
@@ -0,0 +1 @@
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBN7LnfPBVdDfBT7KWUley1qo+rjzy0WYkrHpzbhGALXlj8g4K2bFmy81wblCbnHqWgjblv0FoBwUW641o9xEZtw= ECDSA test
diff --git a/regress/unittests/sshsig/testdata/ecdsa.sig b/regress/unittests/sshsig/testdata/ecdsa.sig
new file mode 100644
index 000000000..79781570c
--- /dev/null
+++ b/regress/unittests/sshsig/testdata/ecdsa.sig
@@ -0,0 +1,7 @@
1-----BEGIN SSH SIGNATURE-----
2U1NIU0lHAAAAAQAAAGgAAAATZWNkc2Etc2hhMi1uaXN0cDI1NgAAAAhuaXN0cDI1NgAAAE
3EE3sud88FV0N8FPspZSV7LWqj6uPPLRZiSsenNuEYAteWPyDgrZsWbLzXBuUJucepaCNuW
4/QWgHBRbrjWj3ERm3AAAAAh1bml0dGVzdAAAAAAAAAAGc2hhNTEyAAAAZQAAABNlY2RzYS
51zaGEyLW5pc3RwMjU2AAAASgAAACEAycVNsTlE+XEZYyYiDxWZlliruf/pPMhEEMR/XLdQ
6a4MAAAAhALQt+5gES7L3uKGptHB6UZQMuZ2WyI0C6FJs4v6AtMIU
7-----END SSH SIGNATURE-----
diff --git a/regress/unittests/sshsig/testdata/ecdsa_sk b/regress/unittests/sshsig/testdata/ecdsa_sk
new file mode 100644
index 000000000..62ae44cb0
--- /dev/null
+++ b/regress/unittests/sshsig/testdata/ecdsa_sk
@@ -0,0 +1,13 @@
1-----BEGIN OPENSSH PRIVATE KEY-----
2b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAfwAAACJzay1lY2
3RzYS1zaGEyLW5pc3RwMjU2QG9wZW5zc2guY29tAAAACG5pc3RwMjU2AAAAQQSg1WuY0XE+
4VexOsrJsFYuxyVoe6eQ/oXmyz2pEHKZw9moyWehv+Fs7oZWFp3JVmOtybKQ6dvfUZYauQE
5/Ov4PAAAAABHNzaDoAAAGI6iV41+oleNcAAAAic2stZWNkc2Etc2hhMi1uaXN0cDI1NkBv
6cGVuc3NoLmNvbQAAAAhuaXN0cDI1NgAAAEEEoNVrmNFxPlXsTrKybBWLsclaHunkP6F5ss
79qRBymcPZqMlnob/hbO6GVhadyVZjrcmykOnb31GWGrkBPzr+DwAAAAARzc2g6AQAAAOMt
8LS0tLUJFR0lOIEVDIFBSSVZBVEUgS0VZLS0tLS0KTUhjQ0FRRUVJQm9oeW54M2tpTFVEeS
9t5UjU3WXBXSU5KektnU1p6WnV2VTljYXFla3JGcW9Bb0dDQ3FHU000OQpBd0VIb1VRRFFn
10QUVvTlZybU5GeFBsWHNUckt5YkJXTHNjbGFIdW5rUDZGNXNzOXFSQnltY1BacU1sbm9iL2
11hiCk82R1ZoYWR5VlpqcmNteWtPbmIzMUdXR3JrQlB6citEd0E9PQotLS0tLUVORCBFQyBQ
12UklWQVRFIEtFWS0tLS0tCgAAAAAAAAARRUNEU0EtU0sgdGVzdCBrZXk=
13-----END OPENSSH PRIVATE KEY-----
diff --git a/regress/unittests/sshsig/testdata/ecdsa_sk.pub b/regress/unittests/sshsig/testdata/ecdsa_sk.pub
new file mode 100644
index 000000000..385ebf15b
--- /dev/null
+++ b/regress/unittests/sshsig/testdata/ecdsa_sk.pub
@@ -0,0 +1 @@
sk-ecdsa-sha2-nistp256@openssh.com AAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZAb3BlbnNzaC5jb20AAAAIbmlzdHAyNTYAAABBBKDVa5jRcT5V7E6ysmwVi7HJWh7p5D+hebLPakQcpnD2ajJZ6G/4WzuhlYWnclWY63JspDp299Rlhq5AT86/g8AAAAAEc3NoOg== ECDSA-SK test key
diff --git a/regress/unittests/sshsig/testdata/ecdsa_sk.sig b/regress/unittests/sshsig/testdata/ecdsa_sk.sig
new file mode 100644
index 000000000..86de36063
--- /dev/null
+++ b/regress/unittests/sshsig/testdata/ecdsa_sk.sig
@@ -0,0 +1,8 @@
1-----BEGIN SSH SIGNATURE-----
2U1NIU0lHAAAAAQAAAH8AAAAic2stZWNkc2Etc2hhMi1uaXN0cDI1NkBvcGVuc3NoLmNvbQ
3AAAAhuaXN0cDI1NgAAAEEEoNVrmNFxPlXsTrKybBWLsclaHunkP6F5ss9qRBymcPZqMlno
4b/hbO6GVhadyVZjrcmykOnb31GWGrkBPzr+DwAAAAARzc2g6AAAACHVuaXR0ZXN0AAAAAA
5AAAAZzaGE1MTIAAAB3AAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZAb3BlbnNzaC5jb20A
6AABIAAAAIHohGwyy8iKT3zwd1TYA9V/Ioo7h/3zCJUtyq/Qigt/HAAAAIGzidTwq7D/kFa
77Xjcp/KkdbIs4MfQpfAW/0OciajlpzARI0Vng=
8-----END SSH SIGNATURE-----
diff --git a/regress/unittests/sshsig/testdata/ecdsa_sk_webauthn.pub b/regress/unittests/sshsig/testdata/ecdsa_sk_webauthn.pub
new file mode 100644
index 000000000..1597302ce
--- /dev/null
+++ b/regress/unittests/sshsig/testdata/ecdsa_sk_webauthn.pub
@@ -0,0 +1 @@
sk-ecdsa-sha2-nistp256@openssh.com AAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZAb3BlbnNzaC5jb20AAAAIbmlzdHAyNTYAAABBBBRGwDjs4HhJFcn4tJ5Gr72KcmRmCS1OirETxaXvnsNApgoOLF1a/7rxldfSMHm73eT1nhHe97W8qicPPEAKDJQAAAALbWluZHJvdC5vcmc=
diff --git a/regress/unittests/sshsig/testdata/ecdsa_sk_webauthn.sig b/regress/unittests/sshsig/testdata/ecdsa_sk_webauthn.sig
new file mode 100644
index 000000000..4bdd8edc6
--- /dev/null
+++ b/regress/unittests/sshsig/testdata/ecdsa_sk_webauthn.sig
@@ -0,0 +1,13 @@
1-----BEGIN SSH SIGNATURE-----
2U1NIU0lHAAAAAQAAAIYAAAAic2stZWNkc2Etc2hhMi1uaXN0cDI1NkBvcGVuc3NoLmNvbQ
3AAAAhuaXN0cDI1NgAAAEEEFEbAOOzgeEkVyfi0nkavvYpyZGYJLU6KsRPFpe+ew0CmCg4s
4XVr/uvGV19Iwebvd5PWeEd73tbyqJw88QAoMlAAAAAttaW5kcm90Lm9yZwAAAAh1bml0dG
5VzdAAAAAAAAAAGc2hhNTEyAAABhwAAACt3ZWJhdXRobi1zay1lY2RzYS1zaGEyLW5pc3Rw
6MjU2QG9wZW5zc2guY29tAAAASQAAACBj2oMT9tb5wRXe6mdmf4/lgAO8wrgr95ouozwNg4
7itnQAAACEAtU9g5wz3HchUiLfLD6plr9T4TiJ32lVCrATSjpiy0SMBAAADHwAAABdodHRw
8czovL3d3dy5taW5kcm90Lm9yZwAAAON7InR5cGUiOiJ3ZWJhdXRobi5nZXQiLCJjaGFsbG
9VuZ2UiOiJVMU5JVTBsSEFBQUFDSFZ1YVhSMFpYTjBBQUFBQUFBQUFBWnphR0UxTVRJQUFB
10QkFMTHU4WmdjU3h0Nk1zRlV6dWlaZ0c2R3dNZEo5ZDd4ZUU3WW9SSXcwZzlpSEpfd3NGRD
11cxbzRXbHllenZGV0VqYnFRMHFDN0Z3R3Bqa2pVUVAtTmQ2dyIsIm9yaWdpbiI6Imh0dHBz
12Oi8vd3d3Lm1pbmRyb3Qub3JnIiwiY3Jvc3NPcmlnaW4iOmZhbHNlfQAAAAA=
13-----END SSH SIGNATURE-----
diff --git a/regress/unittests/sshsig/testdata/ed25519 b/regress/unittests/sshsig/testdata/ed25519
new file mode 100644
index 000000000..b44a63d3e
--- /dev/null
+++ b/regress/unittests/sshsig/testdata/ed25519
@@ -0,0 +1,7 @@
1-----BEGIN OPENSSH PRIVATE KEY-----
2b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
3QyNTUxOQAAACCJYs0iDdw0Fe/FTzY1b78I4H/j+R6mz2AmLtwTjHYwBAAAAJjpGas/6Rmr
4PwAAAAtzc2gtZWQyNTUxOQAAACCJYs0iDdw0Fe/FTzY1b78I4H/j+R6mz2AmLtwTjHYwBA
5AAAEDpSKRA1QKW6kYiQftGRWh+H0fNekzYLG6c3bzseoCpEolizSIN3DQV78VPNjVvvwjg
6f+P5HqbPYCYu3BOMdjAEAAAAEEVEMjU1MTkgdGVzdCBrZXkBAgMEBQ==
7-----END OPENSSH PRIVATE KEY-----
diff --git a/regress/unittests/sshsig/testdata/ed25519.pub b/regress/unittests/sshsig/testdata/ed25519.pub
new file mode 100644
index 000000000..b078e4516
--- /dev/null
+++ b/regress/unittests/sshsig/testdata/ed25519.pub
@@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIlizSIN3DQV78VPNjVvvwjgf+P5HqbPYCYu3BOMdjAE ED25519 test key
diff --git a/regress/unittests/sshsig/testdata/ed25519.sig b/regress/unittests/sshsig/testdata/ed25519.sig
new file mode 100644
index 000000000..8e8ff2a8a
--- /dev/null
+++ b/regress/unittests/sshsig/testdata/ed25519.sig
@@ -0,0 +1,6 @@
1-----BEGIN SSH SIGNATURE-----
2U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgiWLNIg3cNBXvxU82NW+/COB/4/
3keps9gJi7cE4x2MAQAAAAIdW5pdHRlc3QAAAAAAAAABnNoYTUxMgAAAFMAAAALc3NoLWVk
4MjU1MTkAAABAihQsbUzuNEFflk5Tw1+H9aLS7tZQk0RG8KW1DtOmDYYnWe3D3UKiG3fcJa
5DNg4vBWp1j1gLRiBMOF+gwYNegDg==
6-----END SSH SIGNATURE-----
diff --git a/regress/unittests/sshsig/testdata/ed25519_sk b/regress/unittests/sshsig/testdata/ed25519_sk
new file mode 100644
index 000000000..3a434ecb9
--- /dev/null
+++ b/regress/unittests/sshsig/testdata/ed25519_sk
@@ -0,0 +1,8 @@
1-----BEGIN OPENSSH PRIVATE KEY-----
2b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAASgAAABpzay1zc2
3gtZWQyNTUxOUBvcGVuc3NoLmNvbQAAACCbGg2F0GK7nOm4pQmAyCuGEjnhvs5q0TtjPbdN
4//+yxwAAAARzc2g6AAAAuBw56jAcOeowAAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY2
59tAAAAIJsaDYXQYruc6bilCYDIK4YSOeG+zmrRO2M9t03//7LHAAAABHNzaDoBAAAAQFXc
66dCwWewIk1EBofAouGZApW8+s0XekXenxtb78+x0mxoNhdBiu5zpuKUJgMgrhhI54b7Oat
7E7Yz23Tf//sscAAAAAAAAAE0VEMjU1MTktU0sgdGVzdCBrZXkBAgMEBQY=
8-----END OPENSSH PRIVATE KEY-----
diff --git a/regress/unittests/sshsig/testdata/ed25519_sk.pub b/regress/unittests/sshsig/testdata/ed25519_sk.pub
new file mode 100644
index 000000000..71051ec3b
--- /dev/null
+++ b/regress/unittests/sshsig/testdata/ed25519_sk.pub
@@ -0,0 +1 @@
sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIJsaDYXQYruc6bilCYDIK4YSOeG+zmrRO2M9t03//7LHAAAABHNzaDo= ED25519-SK test key
diff --git a/regress/unittests/sshsig/testdata/ed25519_sk.sig b/regress/unittests/sshsig/testdata/ed25519_sk.sig
new file mode 100644
index 000000000..49b6818da
--- /dev/null
+++ b/regress/unittests/sshsig/testdata/ed25519_sk.sig
@@ -0,0 +1,7 @@
1-----BEGIN SSH SIGNATURE-----
2U1NIU0lHAAAAAQAAAEoAAAAac2stc3NoLWVkMjU1MTlAb3BlbnNzaC5jb20AAAAgmxoNhd
3Biu5zpuKUJgMgrhhI54b7OatE7Yz23Tf//sscAAAAEc3NoOgAAAAh1bml0dGVzdAAAAAAA
4AAAGc2hhNTEyAAAAZwAAABpzay1zc2gtZWQyNTUxOUBvcGVuc3NoLmNvbQAAAEAi+7eTjW
5/+LQ2M+sCD+KFtH1n7VFFJon/SZFsxODyV8cWTlFKj617Ys1Ur5TV6uaEXQhck8rBA2oQI
6HTPANLIPARI0Vng=
7-----END SSH SIGNATURE-----
diff --git a/regress/unittests/sshsig/testdata/namespace b/regress/unittests/sshsig/testdata/namespace
new file mode 100644
index 000000000..1570cd548
--- /dev/null
+++ b/regress/unittests/sshsig/testdata/namespace
@@ -0,0 +1 @@
unittest \ No newline at end of file
diff --git a/regress/unittests/sshsig/testdata/rsa b/regress/unittests/sshsig/testdata/rsa
new file mode 100644
index 000000000..228fad797
--- /dev/null
+++ b/regress/unittests/sshsig/testdata/rsa
@@ -0,0 +1,39 @@
1-----BEGIN RSA PRIVATE KEY-----
2MIIG4wIBAAKCAYEA386lmjRHtJpyj87BrS+ssMmtvc/1SPN0gXTPs9jZ1hYAq98P
3ca3/RYVM4HaSu6COztQJ2ZnZD3Te/XeBnIU2mfuvQEl+DiwisGeNglVyRCi7787f
4PFFfcxzZfDa7EB2qY8S3oaSGZK8QqzuGwmGAImjlQXz6J+HCd/eD/58GoCSSirIE
5CFWCAt+uNrOC/EmgAzsbfcfaIbbVzA40tlgU3hO2J42kddz8CisDTtDKQABFcOaQ
6ZycSfn7HDP+WgXLXXBUI9wVM1Tif1f+9MX08xIsvCvGzo7yLgbbTFLSGr5SkA+tO
7rYuoA7V8fge0id/3pnVtG1Ui3I7vejeAwf0HZqtFeBEnOwkIJFmZeMtFeOVf+4ki
84h1rDqAvSscNvMtLp6OXpbAATATAuEWEkIQBl1rngnEe0iC9iU9itKMW6qJ4FtIb
94ACH1EoU1x8vqrFecg2hvqfk5CZBJIbV28JFuGjac3OxBZ17Fqb8ljomUir1GrET
102z66NMgb5TjDD7BVAgMBAAECggGACfjDGCPMLhfTkuS7bGP7ZcUWoKZrX1y5jCsQ
11NgsraYaBcSb3ITGHdimCS139G68DreN0rOVV7oJejRyOAdNNo367SDn+C9ObmBCF
12FZGJDdBiz0SAXceiYRaf+hDWNNmdheR16hXShxnlvDtivbZqZx4VWN2gp7Y/W+kD
13UJhdSzVV8igMVfK5YDdnI7jL1UHSh1JS3z/QUEA9NmJLpvQ1uc9XBlwhP78g27Me
146pwS5tccQPOE65OqF0i+xa19nzbmnC940Y34yZeI/UE+PYaO2+asapvOfu/sboBH
15Yb5BuWXVEkSeRWI23SpuZbmfNTtVgiRoRqOvqM4G88LkhYjZ6xpDggxQwJiShiiD
16oWCucs0v3pX8H8/LbGs8l50SGI5nzUqAdZ7/QQucU/GuDiQtampntkLEDgf9KIw/
17SDrtCw1E9fnCWj4Z71IYfepY9bVY6QUEcfTdnDcYSY1Z5tVpzeMHVLeo0lbNVZv9
182qmPnjjP/IvWbjjwu/PHpUWkUs0BAoHBAPx4YwPXWYgWnesMKXkjAHyO5KA4EyBr
19+rcEmOZkZDibC8PKYzIK2ztptuthahVovW20R/QJhJkO5teGZMeGPFq+floCeC5P
20la9CEYGYcTrzgSe1QM9IGMr1vGI1KIWck7VkJ0bkKoY40uIJSVZxnyG9pEpcwYSp
21tnOqA/f5YZUFctWvXUz46OfiLKstXLrcrGIU7YRmLv2rW9twnpJYTzE98g3KpVJ2
22TI1pyvrDTdGeAQUTGCAjpviY6XR5d020vQKBwQDi76wsGLQ3XLI+OAE95Ljo0Mcl
23+KdJPVVQPq/VcjKgZQndFloflMRrmgNHme9gmsHOrf8DLZvEDbtT+gbmWslMFZQ9
24om1kR404gfuGmfIYdBdOwWjuBLsZs3pfqDB4Xa3NkxljwOMYTp035n0r2UMFaSy3
25gvpW7fsdPOGAJsqNhSw/JNHcokHeBm7VbV0aD7tSyIghmARb5c98fmrSPbiEo8mP
26ITIZlgbfZCq2KuXY4q16R3QvlpuSwitVobLR/3kCgcEAueH5JM7dQHFGe9RMhL/c
27j9i1Q7GFg4183lsoKBkqIPMmylSsjB+qIihHYS4r6O9g6PCfOXH4iqiKFY0BjlWr
28AjTW2naO/aniz1KZiQ0v8PNv2Eh/Gx4+AtDCjpwM5bLOnfLLaEp9dK1JttqXgGnP
29fAwgdg+s+3votWgr29tkmU+VqPagfxeUg4Xm1XFkoL/wu5Yk+iIx3trXms1kMuOK
30CvtMyBK3fetTmZqWs+Iv3XGz1oSkcqVNPiN3XyY/TJsRAoG/Q17jvjOXTNg4EkCO
31HdHJE1Tnyl4HS7bpnOj/Sl6cqQFV7Ey2dKm1pjwSvS714bgP0UvWaRshIxLwif2w
32DrLlD7FYUPPnhd24Dw6HnW4WcSwFv1uryv2cjgS6T6ueuB0Xe/AvmW2p/Y1ZHz9N
336baWLwUKQXCg4S3FXui0CVd6yoi+mgBUTSveYguG29WbziDde7YMs+xtXtravhrJ
34m6C3Jql5LQSt2uqvH6KdC3ewxLKGzcZot7f+d5MtSj6216ECgcEA9PGmWeUkhVuW
35Xz2c9iBeHwCtmDso7gVwxNnHqdqirB4f1nDCGbrJS7hz5Ss7/wfzekP2W5if2P6U
36JPUdfykAQgALNn1twAtj1a+UAp31ZWu8JK/Qzt4hLJPBxzMo7MenJq189JmYmDnm
376D5d9vDLCW15gCZua89GZa8K8V50lYyeHBOHAyzNTfNlnMBkHyP645+nqpuEWzIT
383mCe2OAbl60o8VvvVUlAQyQ/ObLq37HHEoDu0U/YAnP157cxpa84
39-----END RSA PRIVATE KEY-----
diff --git a/regress/unittests/sshsig/testdata/rsa.pub b/regress/unittests/sshsig/testdata/rsa.pub
new file mode 100644
index 000000000..30142ac0a
--- /dev/null
+++ b/regress/unittests/sshsig/testdata/rsa.pub
@@ -0,0 +1 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDfzqWaNEe0mnKPzsGtL6ywya29z/VI83SBdM+z2NnWFgCr3w9xrf9FhUzgdpK7oI7O1AnZmdkPdN79d4GchTaZ+69ASX4OLCKwZ42CVXJEKLvvzt88UV9zHNl8NrsQHapjxLehpIZkrxCrO4bCYYAiaOVBfPon4cJ394P/nwagJJKKsgQIVYIC3642s4L8SaADOxt9x9ohttXMDjS2WBTeE7YnjaR13PwKKwNO0MpAAEVw5pBnJxJ+fscM/5aBctdcFQj3BUzVOJ/V/70xfTzEiy8K8bOjvIuBttMUtIavlKQD606ti6gDtXx+B7SJ3/emdW0bVSLcju96N4DB/Qdmq0V4ESc7CQgkWZl4y0V45V/7iSLiHWsOoC9Kxw28y0uno5elsABMBMC4RYSQhAGXWueCcR7SIL2JT2K0oxbqongW0hvgAIfUShTXHy+qsV5yDaG+p+TkJkEkhtXbwkW4aNpzc7EFnXsWpvyWOiZSKvUasRPbPro0yBvlOMMPsFU= RSA test
diff --git a/regress/unittests/sshsig/testdata/rsa.sig b/regress/unittests/sshsig/testdata/rsa.sig
new file mode 100644
index 000000000..15a032e01
--- /dev/null
+++ b/regress/unittests/sshsig/testdata/rsa.sig
@@ -0,0 +1,19 @@
1-----BEGIN SSH SIGNATURE-----
2U1NIU0lHAAAAAQAAAZcAAAAHc3NoLXJzYQAAAAMBAAEAAAGBAN/OpZo0R7Saco/Owa0vrL
3DJrb3P9UjzdIF0z7PY2dYWAKvfD3Gt/0WFTOB2krugjs7UCdmZ2Q903v13gZyFNpn7r0BJ
4fg4sIrBnjYJVckQou+/O3zxRX3Mc2Xw2uxAdqmPEt6GkhmSvEKs7hsJhgCJo5UF8+ifhwn
5f3g/+fBqAkkoqyBAhVggLfrjazgvxJoAM7G33H2iG21cwONLZYFN4TtieNpHXc/AorA07Q
6ykAARXDmkGcnEn5+xwz/loFy11wVCPcFTNU4n9X/vTF9PMSLLwrxs6O8i4G20xS0hq+UpA
7PrTq2LqAO1fH4HtInf96Z1bRtVItyO73o3gMH9B2arRXgRJzsJCCRZmXjLRXjlX/uJIuId
8aw6gL0rHDbzLS6ejl6WwAEwEwLhFhJCEAZda54JxHtIgvYlPYrSjFuqieBbSG+AAh9RKFN
9cfL6qxXnINob6n5OQmQSSG1dvCRbho2nNzsQWdexam/JY6JlIq9RqxE9s+ujTIG+U4ww+w
10VQAAAAh1bml0dGVzdAAAAAAAAAAGc2hhNTEyAAABlAAAAAxyc2Etc2hhMi01MTIAAAGACi
11nEpBrQxZi0yOrrT6h98JFfZh0XXioih4fzmvtoV0yOReWClS+otGgXoJyZHcbaKNOjDwSM
12rIkUoX6OUJmtHYP0HRELnKw35m33LdBPXpFGS4tRS7NeSpvc04KtjT6jYXY9FjWy5hcn17
13Sxc/3DnJqLgJBur8acY7FeIzpWmKixPd/dGkEjdWoD9gO6szLczGuQgrOdYmSRL4yKadTJ
14lVjz5OSeKSYYGQy33US2XQassRRNYf4e9byTA3DKvHa/OcTt7lFerea0kZdDpAboqffz7T
15Yaw/hFskAYLIEdTW3aoXBGHSOvu8AkDOtb7qwuxGSQ27pjkDLDNsp1ceCFaCaQ6X83RZuK
16ACv9JUBI5KaSf81e0bs0KezJKkhB9czeZ6dk96qISbgayEBnvhYgXvUDKtHn7HzNlCJKfK
175ABhNxfGG2CD+NKqcrndwFgS1sQO3hbA84zPQb26ShBovT8ytHBmW1F8ZK4O9Bz61Q6EZK
18vs/u6xP6LUean/so5daa
19-----END SSH SIGNATURE-----
diff --git a/regress/unittests/sshsig/testdata/signed-data b/regress/unittests/sshsig/testdata/signed-data
new file mode 100644
index 000000000..7df4bedd1
--- /dev/null
+++ b/regress/unittests/sshsig/testdata/signed-data
@@ -0,0 +1 @@
This is a test, this is only a test \ No newline at end of file
diff --git a/regress/unittests/sshsig/tests.c b/regress/unittests/sshsig/tests.c
new file mode 100644
index 000000000..bf59d58d1
--- /dev/null
+++ b/regress/unittests/sshsig/tests.c
@@ -0,0 +1,139 @@
1/* $OpenBSD: tests.c,v 1.2 2020/06/22 06:00:06 djm Exp $ */
2/*
3 * Regress test for sshbuf.h buffer API
4 *
5 * Placed in the public domain
6 */
7
8#include "includes.h"
9
10#include <sys/types.h>
11#include <sys/param.h>
12#include <sys/stat.h>
13#include <fcntl.h>
14#include <stdio.h>
15#ifdef HAVE_STDINT_H
16#include <stdint.h>
17#endif
18#include <stdlib.h>
19#include <string.h>
20#include <unistd.h>
21
22#include <openssl/evp.h>
23#include <openssl/crypto.h>
24
25#include "ssherr.h"
26#include "authfile.h"
27#include "sshkey.h"
28#include "sshbuf.h"
29#include "sshsig.h"
30#include "log.h"
31
32#include "../test_helper/test_helper.h"
33
34static struct sshbuf *
35load_file(const char *name)
36{
37 struct sshbuf *ret = NULL;
38
39 ASSERT_INT_EQ(sshbuf_load_file(test_data_file(name), &ret), 0);
40 ASSERT_PTR_NE(ret, NULL);
41 return ret;
42}
43
44static struct sshkey *
45load_key(const char *name)
46{
47 struct sshkey *ret = NULL;
48 ASSERT_INT_EQ(sshkey_load_public(test_data_file(name), &ret, NULL), 0);
49 ASSERT_PTR_NE(ret, NULL);
50 return ret;
51}
52
53static void
54check_sig(const char *keyname, const char *signame, const struct sshbuf *msg,
55 const char *namespace)
56{
57 struct sshkey *k, *sign_key;
58 struct sshbuf *sig, *rawsig;
59 struct sshkey_sig_details *sig_details;
60
61 k = load_key(keyname);
62 sig = load_file(signame);
63 sign_key = NULL;
64 sig_details = NULL;
65 rawsig = NULL;
66 ASSERT_INT_EQ(sshsig_dearmor(sig, &rawsig), 0);
67 ASSERT_INT_EQ(sshsig_verifyb(rawsig, msg, namespace,
68 &sign_key, &sig_details), 0);
69 ASSERT_INT_EQ(sshkey_equal(k, sign_key), 1);
70 sshkey_free(k);
71 sshkey_free(sign_key);
72 sshkey_sig_details_free(sig_details);
73 sshbuf_free(sig);
74 sshbuf_free(rawsig);
75}
76
77void
78tests(void)
79{
80 struct sshbuf *msg;
81 char *namespace;
82
83#if 0
84 log_init("test_sshsig", SYSLOG_LEVEL_DEBUG3, SYSLOG_FACILITY_AUTH, 1);
85#endif
86
87#ifdef WITH_OPENSSL
88 OpenSSL_add_all_algorithms();
89 ERR_load_CRYPTO_strings();
90#endif
91
92 TEST_START("load data");
93 msg = load_file("namespace");
94 namespace = sshbuf_dup_string(msg);
95 ASSERT_PTR_NE(namespace, NULL);
96 sshbuf_free(msg);
97 msg = load_file("signed-data");
98 TEST_DONE();
99
100#ifdef WITH_OPENSSL
101 TEST_START("check RSA signature");
102 check_sig("rsa.pub", "rsa.sig", msg, namespace);
103 TEST_DONE();
104
105 TEST_START("check DSA signature");
106 check_sig("dsa.pub", "dsa.sig", msg, namespace);
107 TEST_DONE();
108
109#ifdef OPENSSL_HAS_ECC
110 TEST_START("check ECDSA signature");
111 check_sig("ecdsa.pub", "ecdsa.sig", msg, namespace);
112 TEST_DONE();
113#endif
114#endif
115
116 TEST_START("check ED25519 signature");
117 check_sig("ed25519.pub", "ed25519.sig", msg, namespace);
118 TEST_DONE();
119
120#if defined(WITH_OPENSSL) && defined(OPENSSL_HAS_ECC)
121 TEST_START("check ECDSA-SK signature");
122 check_sig("ecdsa_sk.pub", "ecdsa_sk.sig", msg, namespace);
123 TEST_DONE();
124#endif
125
126 TEST_START("check ED25519-SK signature");
127 check_sig("ed25519_sk.pub", "ed25519_sk.sig", msg, namespace);
128 TEST_DONE();
129
130#if defined(WITH_OPENSSL) && defined(OPENSSL_HAS_ECC)
131 TEST_START("check ECDSA-SK webauthn signature");
132 check_sig("ecdsa_sk_webauthn.pub", "ecdsa_sk_webauthn.sig",
133 msg, namespace);
134 TEST_DONE();
135#endif
136
137 sshbuf_free(msg);
138 free(namespace);
139}
diff --git a/regress/unittests/sshsig/webauthn.html b/regress/unittests/sshsig/webauthn.html
new file mode 100644
index 000000000..953041e61
--- /dev/null
+++ b/regress/unittests/sshsig/webauthn.html
@@ -0,0 +1,692 @@
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
4<title>webauthn test</title>
5</head>
6<body onload="init()">
7<h1>webauthn test</h1>
8<p>
9This is a demo/test page for generating FIDO keys and signatures in SSH
10formats. The page initially displays a form to generate a FIDO key and
11convert it to a SSH public key.
12</p>
13<p>
14Once a key has been generated, an additional form will be displayed to
15allow signing of data using the just-generated key. The data may be signed
16as either a raw SSH signature or wrapped in a sshsig message (the latter is
17easier to test using command-line tools.
18</p>
19<p>
20Lots of debugging is printed along the way.
21</p>
22<h2>Enroll</h2>
23<span id="error" style="color: #800; font-weight: bold; font-size: 150%;"></span>
24<form id="enrollform">
25<table>
26<tr>
27<td><b>Username:</b></td>
28<td><input id="username" type="text" size="20" name="user" value="test" /></td>
29</tr>
30<tr><td></td><td><input id="assertsubmit" type="submit" value="submit" /></td></tr>
31</table>
32</form>
33<span id="enrollresult" style="visibility: hidden;">
34<h2>clientData</h2>
35<pre id="enrollresultjson" style="color: #008; font-family: monospace;"></pre>
36<h2>attestationObject raw</h2>
37<pre id="enrollresultraw" style="color: #008; font-family: monospace;"></pre>
38<h2>attestationObject</h2>
39<pre id="enrollresultattestobj" style="color: #008; font-family: monospace;"></pre>
40<h2>authData raw</h2>
41<pre id="enrollresultauthdataraw" style="color: #008; font-family: monospace;"></pre>
42<h2>authData</h2>
43<pre id="enrollresultauthdata" style="color: #008; font-family: monospace;"></pre>
44<h2>SSH pubkey blob</h2>
45<pre id="enrollresultpkblob" style="color: #008; font-family: monospace;"></pre>
46<h2>SSH pubkey string</h2>
47<pre id="enrollresultpk" style="color: #008; font-family: monospace;"></pre>
48</span>
49<span id="assertsection" style="visibility: hidden;">
50<h2>Assert</h2>
51<form id="assertform">
52<span id="asserterror" style="color: #800; font-weight: bold;"></span>
53<table>
54<tr>
55<td><b>Data to sign:</b></td>
56<td><input id="message" type="text" size="20" name="message" value="test" /></td>
57</tr>
58<tr>
59<td><input id="message_sshsig" type="checkbox" checked /> use sshsig format</td>
60</tr>
61<tr>
62<td><b>Signature namespace:</b></td>
63<td><input id="message_namespace" type="text" size="20" name="namespace" value="test" /></td>
64</tr>
65<tr><td></td><td><input type="submit" value="submit" /></td></tr>
66</table>
67</form>
68</span>
69<span id="assertresult" style="visibility: hidden;">
70<h2>clientData</h2>
71<pre id="assertresultjson" style="color: #008; font-family: monospace;"></pre>
72<h2>signature raw</h2>
73<pre id="assertresultsigraw" style="color: #008; font-family: monospace;"></pre>
74<h2>authenticatorData raw</h2>
75<pre id="assertresultauthdataraw" style="color: #008; font-family: monospace;"></pre>
76<h2>authenticatorData</h2>
77<pre id="assertresultauthdata" style="color: #008; font-family: monospace;"></pre>
78<h2>signature in SSH format</h2>
79<pre id="assertresultsshsigraw" style="color: #008; font-family: monospace;"></pre>
80<h2>signature in SSH format (base64 encoded)</h2>
81<pre id="assertresultsshsigb64" style="color: #008; font-family: monospace;"></pre>
82</span>
83</body>
84<script>
85// ------------------------------------------------------------------
86// a crappy CBOR decoder - 20200401 djm@openbsd.org
87
88var CBORDecode = function(buffer) {
89 this.buf = buffer
90 this.v = new DataView(buffer)
91 this.offset = 0
92}
93
94CBORDecode.prototype.empty = function() {
95 return this.offset >= this.buf.byteLength
96}
97
98CBORDecode.prototype.getU8 = function() {
99 let r = this.v.getUint8(this.offset)
100 this.offset += 1
101 return r
102}
103
104CBORDecode.prototype.getU16 = function() {
105 let r = this.v.getUint16(this.offset)
106 this.offset += 2
107 return r
108}
109
110CBORDecode.prototype.getU32 = function() {
111 let r = this.v.getUint32(this.offset)
112 this.offset += 4
113 return r
114}
115
116CBORDecode.prototype.getU64 = function() {
117 let r = this.v.getUint64(this.offset)
118 this.offset += 8
119 return r
120}
121
122CBORDecode.prototype.getCBORTypeLen = function() {
123 let tl, t, l
124 tl = this.getU8()
125 t = (tl & 0xe0) >> 5
126 l = tl & 0x1f
127 return [t, this.decodeInteger(l)]
128}
129
130CBORDecode.prototype.decodeInteger = function(len) {
131 switch (len) {
132 case 0x18: return this.getU8()
133 case 0x19: return this.getU16()
134 case 0x20: return this.getU32()
135 case 0x21: return this.getU64()
136 default:
137 if (len <= 23) {
138 return len
139 }
140 throw new Error("Unsupported int type 0x" + len.toString(16))
141 }
142}
143
144CBORDecode.prototype.decodeNegint = function(len) {
145 let r = -(this.decodeInteger(len) + 1)
146 return r
147}
148
149CBORDecode.prototype.decodeByteString = function(len) {
150 let r = this.buf.slice(this.offset, this.offset + len)
151 this.offset += len
152 return r
153}
154
155CBORDecode.prototype.decodeTextString = function(len) {
156 let u8dec = new TextDecoder('utf-8')
157 r = u8dec.decode(this.decodeByteString(len))
158 return r
159}
160
161CBORDecode.prototype.decodeArray = function(len, level) {
162 let r = []
163 for (let i = 0; i < len; i++) {
164 let v = this.decodeInternal(level)
165 r.push(v)
166 // console.log("decodeArray level " + level.toString() + " index " + i.toString() + " value " + JSON.stringify(v))
167 }
168 return r
169}
170
171CBORDecode.prototype.decodeMap = function(len, level) {
172 let r = {}
173 for (let i = 0; i < len; i++) {
174 let k = this.decodeInternal(level)
175 let v = this.decodeInternal(level)
176 r[k] = v
177 // console.log("decodeMap level " + level.toString() + " key " + k.toString() + " value " + JSON.stringify(v))
178 // XXX check string keys, duplicates
179 }
180 return r
181}
182
183CBORDecode.prototype.decodePrimitive = function(t) {
184 switch (t) {
185 case 20: return false
186 case 21: return true
187 case 22: return null
188 case 23: return undefined
189 default:
190 throw new Error("Unsupported primitive 0x" + t.toString(2))
191 }
192}
193
194CBORDecode.prototype.decodeInternal = function(level) {
195 if (level > 256) {
196 throw new Error("CBOR nesting too deep")
197 }
198 let t, l, r
199 [t, l] = this.getCBORTypeLen()
200 // console.log("decode level " + level.toString() + " type " + t.toString() + " len " + l.toString())
201 switch (t) {
202 case 0:
203 r = this.decodeInteger(l)
204 break
205 case 1:
206 r = this.decodeNegint(l)
207 break
208 case 2:
209 r = this.decodeByteString(l)
210 break
211 case 3:
212 r = this.decodeTextString(l)
213 break
214 case 4:
215 r = this.decodeArray(l, level + 1)
216 break
217 case 5:
218 r = this.decodeMap(l, level + 1)
219 break
220 case 6:
221 console.log("XXX ignored semantic tag " + this.decodeInteger(l).toString())
222 break;
223 case 7:
224 r = this.decodePrimitive(l)
225 break
226 default:
227 throw new Error("Unsupported type 0x" + t.toString(2) + " len " + l.toString())
228 }
229 // console.log("decode level " + level.toString() + " value " + JSON.stringify(r))
230 return r
231}
232
233CBORDecode.prototype.decode = function() {
234 return this.decodeInternal(0)
235}
236
237// ------------------------------------------------------------------
238// a crappy SSH message packer - 20200401 djm@openbsd.org
239
240var SSHMSG = function() {
241 this.r = []
242}
243
244SSHMSG.prototype.serialise = function() {
245 let len = 0
246 for (buf of this.r) {
247 len += buf.length
248 }
249 let r = new ArrayBuffer(len)
250 let v = new Uint8Array(r)
251 let offset = 0
252 for (buf of this.r) {
253 v.set(buf, offset)
254 offset += buf.length
255 }
256 if (offset != r.byteLength) {
257 throw new Error("djm can't count")
258 }
259 return r
260}
261
262SSHMSG.prototype.serialiseBase64 = function(v) {
263 let b = this.serialise()
264 return btoa(String.fromCharCode(...new Uint8Array(b)));
265}
266
267SSHMSG.prototype.putU8 = function(v) {
268 this.r.push(new Uint8Array([v]))
269}
270
271SSHMSG.prototype.putU32 = function(v) {
272 this.r.push(new Uint8Array([
273 (v >> 24) & 0xff,
274 (v >> 16) & 0xff,
275 (v >> 8) & 0xff,
276 (v & 0xff)
277 ]))
278}
279
280SSHMSG.prototype.put = function(v) {
281 this.r.push(new Uint8Array(v))
282}
283
284SSHMSG.prototype.putString = function(v) {
285 let enc = new TextEncoder();
286 let venc = enc.encode(v)
287 this.putU32(venc.length)
288 this.put(venc)
289}
290
291SSHMSG.prototype.putSSHMSG = function(v) {
292 let msg = v.serialise()
293 this.putU32(msg.byteLength)
294 this.put(msg)
295}
296
297SSHMSG.prototype.putBytes = function(v) {
298 this.putU32(v.byteLength)
299 this.put(v)
300}
301
302SSHMSG.prototype.putECPoint = function(x, y) {
303 let x8 = new Uint8Array(x)
304 let y8 = new Uint8Array(y)
305 this.putU32(1 + x8.length + y8.length)
306 this.putU8(0x04) // Uncompressed point format.
307 this.put(x8)
308 this.put(y8)
309}
310
311// ------------------------------------------------------------------
312// webauthn to SSH glue - djm@openbsd.org 20200408
313
314function error(msg, ...args) {
315 document.getElementById("error").innerText = msg
316 console.log(msg)
317 for (const arg of args) {
318 console.dir(arg)
319 }
320}
321function hexdump(buf) {
322 const hex = Array.from(new Uint8Array(buf)).map(
323 b => b.toString(16).padStart(2, "0"))
324 const fmt = new Array()
325 for (let i = 0; i < hex.length; i++) {
326 if ((i % 16) == 0) {
327 // Prepend length every 16 bytes.
328 fmt.push(i.toString(16).padStart(4, "0"))
329 fmt.push(" ")
330 }
331 fmt.push(hex[i])
332 fmt.push(" ")
333 if ((i % 16) == 15) {
334 fmt.push("\n")
335 }
336 }
337 return fmt.join("")
338}
339function enrollform_submit(event) {
340 event.preventDefault();
341 console.log("submitted")
342 username = event.target.elements.username.value
343 if (username === "") {
344 error("no username specified")
345 return false
346 }
347 enrollStart(username)
348}
349function enrollStart(username) {
350 let challenge = new Uint8Array(32)
351 window.crypto.getRandomValues(challenge)
352 let userid = new Uint8Array(8)
353 window.crypto.getRandomValues(userid)
354
355 console.log("challenge:" + btoa(challenge))
356 console.log("userid:" + btoa(userid))
357
358 let pkopts = {
359 challenge: challenge,
360 rp: {
361 name: "mindrot.org",
362 id: "mindrot.org",
363 },
364 user: {
365 id: userid,
366 name: username,
367 displayName: username,
368 },
369 authenticatorSelection: {
370 authenticatorAttachment: "cross-platform",
371 userVerification: "discouraged",
372 },
373 pubKeyCredParams: [{alg: -7, type: "public-key"}], // ES256
374 timeout: 30 * 1000,
375 };
376 console.dir(pkopts)
377 window.enrollOpts = pkopts
378 let credpromise = navigator.credentials.create({ publicKey: pkopts });
379 credpromise.then(enrollSuccess, enrollFailure)
380}
381function enrollFailure(result) {
382 error("Enroll failed", result)
383}
384function enrollSuccess(result) {
385 console.log("Enroll succeeded")
386 console.dir(result)
387 window.enrollResult = result
388 document.getElementById("enrollresult").style.visibility = "visible"
389
390 // Show the clientData
391 let u8dec = new TextDecoder('utf-8')
392 clientData = u8dec.decode(result.response.clientDataJSON)
393 document.getElementById("enrollresultjson").innerText = clientData
394
395 // Decode and show the attestationObject
396 document.getElementById("enrollresultraw").innerText = hexdump(result.response.attestationObject)
397 let aod = new CBORDecode(result.response.attestationObject)
398 let attestationObject = aod.decode()
399 console.log("attestationObject")
400 console.dir(attestationObject)
401 document.getElementById("enrollresultattestobj").innerText = JSON.stringify(attestationObject)
402
403 // Decode and show the authData
404 document.getElementById("enrollresultauthdataraw").innerText = hexdump(attestationObject.authData)
405 let authData = decodeAuthenticatorData(attestationObject.authData, true)
406 console.log("authData")
407 console.dir(authData)
408 window.enrollAuthData = authData
409 document.getElementById("enrollresultauthdata").innerText = JSON.stringify(authData)
410
411 // Reformat the pubkey as a SSH key for easy verification
412 window.rawKey = reformatPubkey(authData.attestedCredentialData.credentialPublicKey, window.enrollOpts.rp.id)
413 console.log("SSH pubkey blob")
414 console.dir(window.rawKey)
415 document.getElementById("enrollresultpkblob").innerText = hexdump(window.rawKey)
416 let pk64 = btoa(String.fromCharCode(...new Uint8Array(window.rawKey)));
417 let pk = "sk-ecdsa-sha2-nistp256@openssh.com " + pk64
418 document.getElementById("enrollresultpk").innerText = pk
419
420 // Success: show the assertion form.
421 document.getElementById("assertsection").style.visibility = "visible"
422}
423
424function decodeAuthenticatorData(authData, expectCred) {
425 let r = new Object()
426 let v = new DataView(authData)
427
428 r.rpIdHash = authData.slice(0, 32)
429 r.flags = v.getUint8(32)
430 r.signCount = v.getUint32(33)
431
432 // Decode attestedCredentialData if present.
433 let offset = 37
434 let acd = new Object()
435 if (expectCred) {
436 acd.aaguid = authData.slice(offset, offset+16)
437 offset += 16
438 let credentialIdLength = v.getUint16(offset)
439 offset += 2
440 acd.credentialIdLength = credentialIdLength
441 acd.credentialId = authData.slice(offset, offset+credentialIdLength)
442 offset += credentialIdLength
443 r.attestedCredentialData = acd
444 }
445 console.log("XXXXX " + offset.toString())
446 let pubkeyrest = authData.slice(offset, authData.byteLength)
447 let pkdecode = new CBORDecode(pubkeyrest)
448 if (expectCred) {
449 // XXX unsafe: doesn't mandate COSE canonical format.
450 acd.credentialPublicKey = pkdecode.decode()
451 }
452 if (!pkdecode.empty()) {
453 // Decode extensions if present.
454 r.extensions = pkdecode.decode()
455 }
456 return r
457}
458
459function reformatPubkey(pk, rpid) {
460 // pk is in COSE format. We only care about a tiny subset.
461 if (pk[1] != 2) {
462 console.dir(pk)
463 throw new Error("pubkey is not EC")
464 }
465 if (pk[-1] != 1) {
466 throw new Error("pubkey is not in P256")
467 }
468 if (pk[3] != -7) {
469 throw new Error("pubkey is not ES256")
470 }
471 if (pk[-2].byteLength != 32 || pk[-3].byteLength != 32) {
472 throw new Error("pubkey EC coords have bad length")
473 }
474 let msg = new SSHMSG()
475 msg.putString("sk-ecdsa-sha2-nistp256@openssh.com") // Key type
476 msg.putString("nistp256") // Key curve
477 msg.putECPoint(pk[-2], pk[-3]) // EC key
478 msg.putString(rpid) // RP ID
479 return msg.serialise()
480}
481
482async function assertform_submit(event) {
483 event.preventDefault();
484 console.log("submitted")
485 message = event.target.elements.message.value
486 if (message === "") {
487 error("no message specified")
488 return false
489 }
490 let enc = new TextEncoder()
491 let encmsg = enc.encode(message)
492 window.assertSignRaw = !event.target.elements.message_sshsig.checked
493 console.log("using sshsig ", !window.assertSignRaw)
494 if (window.assertSignRaw) {
495 assertStart(encmsg)
496 return
497 }
498 // Format a sshsig-style message.
499 window.sigHashAlg = "sha512"
500 let msghash = await crypto.subtle.digest("SHA-512", encmsg);
501 console.log("raw message hash")
502 console.dir(msghash)
503 window.sigNamespace = event.target.elements.message_namespace.value
504 let sigbuf = new SSHMSG()
505 sigbuf.put(enc.encode("SSHSIG"))
506 sigbuf.putString(window.sigNamespace)
507 sigbuf.putU32(0) // Reserved string
508 sigbuf.putString(window.sigHashAlg)
509 sigbuf.putBytes(msghash)
510 let msg = sigbuf.serialise()
511 console.log("sigbuf")
512 console.dir(msg)
513 assertStart(msg)
514}
515
516function assertStart(message) {
517 let assertReqOpts = {
518 challenge: message,
519 rpId: "mindrot.org",
520 allowCredentials: [{
521 type: 'public-key',
522 id: window.enrollResult.rawId,
523 }],
524 userVerification: "discouraged",
525 timeout: (30 * 1000),
526 }
527 console.log("assertReqOpts")
528 console.dir(assertReqOpts)
529 window.assertReqOpts = assertReqOpts
530 let assertpromise = navigator.credentials.get({
531 publicKey: assertReqOpts
532 });
533 assertpromise.then(assertSuccess, assertFailure)
534}
535function assertFailure(result) {
536 error("Assertion failed", result)
537}
538function linewrap(s) {
539 const linelen = 70
540 let ret = ""
541 for (let i = 0; i < s.length; i += linelen) {
542 end = i + linelen
543 if (end > s.length) {
544 end = s.length
545 }
546 if (i > 0) {
547 ret += "\n"
548 }
549 ret += s.slice(i, end)
550 }
551 return ret + "\n"
552}
553function assertSuccess(result) {
554 console.log("Assertion succeeded")
555 console.dir(result)
556 window.assertResult = result
557 document.getElementById("assertresult").style.visibility = "visible"
558
559 // show the clientData.
560 let u8dec = new TextDecoder('utf-8')
561 clientData = u8dec.decode(result.response.clientDataJSON)
562 document.getElementById("assertresultjson").innerText = clientData
563
564 // show the signature.
565 document.getElementById("assertresultsigraw").innerText = hexdump(result.response.signature)
566
567 // decode and show the authData.
568 document.getElementById("assertresultauthdataraw").innerText = hexdump(result.response.authenticatorData)
569 authData = decodeAuthenticatorData(result.response.authenticatorData, false)
570 document.getElementById("assertresultauthdata").innerText = JSON.stringify(authData)
571
572 // Parse and reformat the signature to an SSH style signature.
573 let sshsig = reformatSignature(result.response.signature, clientData, authData)
574 document.getElementById("assertresultsshsigraw").innerText = hexdump(sshsig)
575 let sig64 = btoa(String.fromCharCode(...new Uint8Array(sshsig)));
576 if (window.assertSignRaw) {
577 document.getElementById("assertresultsshsigb64").innerText = sig64
578 } else {
579 document.getElementById("assertresultsshsigb64").innerText =
580 "-----BEGIN SSH SIGNATURE-----\n" + linewrap(sig64) +
581 "-----END SSH SIGNATURE-----\n";
582 }
583}
584
585function reformatSignature(sig, clientData, authData) {
586 if (sig.byteLength < 2) {
587 throw new Error("signature is too short")
588 }
589 let offset = 0
590 let v = new DataView(sig)
591 // Expect an ASN.1 SEQUENCE that exactly spans the signature.
592 if (v.getUint8(offset) != 0x30) {
593 throw new Error("signature not an ASN.1 sequence")
594 }
595 offset++
596 let seqlen = v.getUint8(offset)
597 offset++
598 if ((seqlen & 0x80) != 0 || seqlen != sig.byteLength - offset) {
599 throw new Error("signature has unexpected length " + seqlen.toString() + " vs expected " + (sig.byteLength - offset).toString())
600 }
601
602 // Parse 'r' INTEGER value.
603 if (v.getUint8(offset) != 0x02) {
604 throw new Error("signature r not an ASN.1 integer")
605 }
606 offset++
607 let rlen = v.getUint8(offset)
608 offset++
609 if ((rlen & 0x80) != 0 || rlen > sig.byteLength - offset) {
610 throw new Error("signature r has unexpected length " + rlen.toString() + " vs buffer " + (sig.byteLength - offset).toString())
611 }
612 let r = sig.slice(offset, offset + rlen)
613 offset += rlen
614 console.log("sig_r")
615 console.dir(r)
616
617 // Parse 's' INTEGER value.
618 if (v.getUint8(offset) != 0x02) {
619 throw new Error("signature r not an ASN.1 integer")
620 }
621 offset++
622 let slen = v.getUint8(offset)
623 offset++
624 if ((slen & 0x80) != 0 || slen > sig.byteLength - offset) {
625 throw new Error("signature s has unexpected length " + slen.toString() + " vs buffer " + (sig.byteLength - offset).toString())
626 }
627 let s = sig.slice(offset, offset + slen)
628 console.log("sig_s")
629 console.dir(s)
630 offset += slen
631
632 if (offset != sig.byteLength) {
633 throw new Error("unexpected final offset during signature parsing " + offset.toString() + " expected " + sig.byteLength.toString())
634 }
635
636 // Reformat as an SSH signature.
637 let clientDataParsed = JSON.parse(clientData)
638 let innersig = new SSHMSG()
639 innersig.putBytes(r)
640 innersig.putBytes(s)
641
642 let rawsshsig = new SSHMSG()
643 rawsshsig.putString("webauthn-sk-ecdsa-sha2-nistp256@openssh.com")
644 rawsshsig.putSSHMSG(innersig)
645 rawsshsig.putU8(authData.flags)
646 rawsshsig.putU32(authData.signCount)
647 rawsshsig.putString(clientDataParsed.origin)
648 rawsshsig.putString(clientData)
649 if (authData.extensions == undefined) {
650 rawsshsig.putU32(0)
651 } else {
652 rawsshsig.putBytes(authData.extensions)
653 }
654
655 if (window.assertSignRaw) {
656 return rawsshsig.serialise()
657 }
658 // Format as SSHSIG.
659 let enc = new TextEncoder()
660 let sshsig = new SSHMSG()
661 sshsig.put(enc.encode("SSHSIG"))
662 sshsig.putU32(0x01) // Signature version.
663 sshsig.putBytes(window.rawKey)
664 sshsig.putString(window.sigNamespace)
665 sshsig.putU32(0) // Reserved string
666 sshsig.putString(window.sigHashAlg)
667 sshsig.putBytes(rawsshsig.serialise())
668 return sshsig.serialise()
669}
670
671function toggleNamespaceVisibility() {
672 const assertsigtype = document.getElementById('message_sshsig');
673 const assertsignamespace = document.getElementById('message_namespace');
674 assertsignamespace.disabled = !assertsigtype.checked;
675}
676
677function init() {
678 if (document.location.protocol != "https:") {
679 error("This page must be loaded via https")
680 const assertsubmit = document.getElementById('assertsubmit')
681 assertsubmit.disabled = true
682 }
683 const enrollform = document.getElementById('enrollform');
684 enrollform.addEventListener('submit', enrollform_submit);
685 const assertform = document.getElementById('assertform');
686 assertform.addEventListener('submit', assertform_submit);
687 const assertsigtype = document.getElementById('message_sshsig');
688 assertsigtype.onclick = toggleNamespaceVisibility;
689}
690</script>
691
692</html>
diff --git a/scp.0 b/scp.0
index 03e6c65e7..826457f6a 100644
--- a/scp.0
+++ b/scp.0
@@ -4,7 +4,7 @@ NAME
4 scp M-bM-^@M-^S OpenSSH secure file copy 4 scp M-bM-^@M-^S OpenSSH secure file copy
5 5
6SYNOPSIS 6SYNOPSIS
7 scp [-346BCpqrTv] [-c cipher] [-F ssh_config] [-i identity_file] 7 scp [-346ABCpqrTv] [-c cipher] [-F ssh_config] [-i identity_file]
8 [-J destination] [-l limit] [-o ssh_option] [-P port] [-S program] 8 [-J destination] [-l limit] [-o ssh_option] [-P port] [-S program]
9 source ... target 9 source ... target
10 10
@@ -35,6 +35,9 @@ DESCRIPTION
35 35
36 -6 Forces scp to use IPv6 addresses only. 36 -6 Forces scp to use IPv6 addresses only.
37 37
38 -A Allows forwarding of ssh-agent(1) to the remote system. The
39 default is not to forward an authentication agent.
40
38 -B Selects batch mode (prevents asking for passwords or 41 -B Selects batch mode (prevents asking for passwords or
39 passphrases). 42 passphrases).
40 43
@@ -180,4 +183,4 @@ AUTHORS
180 Timo Rinne <tri@iki.fi> 183 Timo Rinne <tri@iki.fi>
181 Tatu Ylonen <ylo@cs.hut.fi> 184 Tatu Ylonen <ylo@cs.hut.fi>
182 185
183OpenBSD 6.7 April 30, 2020 OpenBSD 6.7 186OpenBSD 6.8 August 3, 2020 OpenBSD 6.8
diff --git a/scp.1 b/scp.1
index d5f65af4e..feb839e9c 100644
--- a/scp.1
+++ b/scp.1
@@ -8,9 +8,9 @@
8.\" 8.\"
9.\" Created: Sun May 7 00:14:37 1995 ylo 9.\" Created: Sun May 7 00:14:37 1995 ylo
10.\" 10.\"
11.\" $OpenBSD: scp.1,v 1.89 2020/04/30 18:28:37 jmc Exp $ 11.\" $OpenBSD: scp.1,v 1.90 2020/08/03 02:43:41 djm Exp $
12.\" 12.\"
13.Dd $Mdocdate: April 30 2020 $ 13.Dd $Mdocdate: August 3 2020 $
14.Dt SCP 1 14.Dt SCP 1
15.Os 15.Os
16.Sh NAME 16.Sh NAME
@@ -18,7 +18,7 @@
18.Nd OpenSSH secure file copy 18.Nd OpenSSH secure file copy
19.Sh SYNOPSIS 19.Sh SYNOPSIS
20.Nm scp 20.Nm scp
21.Op Fl 346BCpqrTv 21.Op Fl 346ABCpqrTv
22.Op Fl c Ar cipher 22.Op Fl c Ar cipher
23.Op Fl F Ar ssh_config 23.Op Fl F Ar ssh_config
24.Op Fl i Ar identity_file 24.Op Fl i Ar identity_file
@@ -86,6 +86,11 @@ to use IPv4 addresses only.
86Forces 86Forces
87.Nm 87.Nm
88to use IPv6 addresses only. 88to use IPv6 addresses only.
89.It Fl A
90Allows forwarding of
91.Xr ssh-agent 1
92to the remote system.
93The default is not to forward an authentication agent.
89.It Fl B 94.It Fl B
90Selects batch mode (prevents asking for passwords or passphrases). 95Selects batch mode (prevents asking for passwords or passphrases).
91.It Fl C 96.It Fl C
diff --git a/scp.c b/scp.c
index 66b4af8e8..2d1b8e9b9 100644
--- a/scp.c
+++ b/scp.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: scp.c,v 1.210 2020/05/06 20:57:38 djm Exp $ */ 1/* $OpenBSD: scp.c,v 1.212 2020/08/03 02:43:41 djm Exp $ */
2/* 2/*
3 * scp - secure remote copy. This is basically patched BSD rcp which 3 * scp - secure remote copy. This is basically patched BSD rcp which
4 * uses ssh to do the data transfer (instead of using rcmd). 4 * uses ssh to do the data transfer (instead of using rcmd).
@@ -381,8 +381,11 @@ typedef struct {
381BUF *allocbuf(BUF *, int, int); 381BUF *allocbuf(BUF *, int, int);
382void lostconn(int); 382void lostconn(int);
383int okname(char *); 383int okname(char *);
384void run_err(const char *,...); 384void run_err(const char *,...)
385int note_err(const char *,...); 385 __attribute__((__format__ (printf, 1, 2)))
386 __attribute__((__nonnull__ (1)));
387int note_err(const char *,...)
388 __attribute__((__format__ (printf, 1, 2)));
386void verifydir(char *); 389void verifydir(char *);
387 390
388struct passwd *pwd; 391struct passwd *pwd;
@@ -430,7 +433,6 @@ main(int argc, char **argv)
430 args.list = remote_remote_args.list = NULL; 433 args.list = remote_remote_args.list = NULL;
431 addargs(&args, "%s", ssh_program); 434 addargs(&args, "%s", ssh_program);
432 addargs(&args, "-x"); 435 addargs(&args, "-x");
433 addargs(&args, "-oForwardAgent=no");
434 addargs(&args, "-oPermitLocalCommand=no"); 436 addargs(&args, "-oPermitLocalCommand=no");
435 addargs(&args, "-oClearAllForwardings=yes"); 437 addargs(&args, "-oClearAllForwardings=yes");
436 addargs(&args, "-oRemoteCommand=none"); 438 addargs(&args, "-oRemoteCommand=none");
@@ -438,7 +440,7 @@ main(int argc, char **argv)
438 440
439 fflag = Tflag = tflag = 0; 441 fflag = Tflag = tflag = 0;
440 while ((ch = getopt(argc, argv, 442 while ((ch = getopt(argc, argv,
441 "dfl:prtTvBCc:i:P:q12346S:o:F:J:")) != -1) { 443 "12346ABCTdfpqrtvF:J:P:S:c:i:l:o:")) != -1) {
442 switch (ch) { 444 switch (ch) {
443 /* User-visible flags. */ 445 /* User-visible flags. */
444 case '1': 446 case '1':
@@ -447,6 +449,7 @@ main(int argc, char **argv)
447 case '2': 449 case '2':
448 /* Ignored */ 450 /* Ignored */
449 break; 451 break;
452 case 'A':
450 case '4': 453 case '4':
451 case '6': 454 case '6':
452 case 'C': 455 case 'C':
@@ -528,6 +531,9 @@ main(int argc, char **argv)
528 argc -= optind; 531 argc -= optind;
529 argv += optind; 532 argv += optind;
530 533
534 /* Do this last because we want the user to be able to override it */
535 addargs(&args, "-oForwardAgent=no");
536
531 if ((pwd = getpwuid(userid = getuid())) == NULL) 537 if ((pwd = getpwuid(userid = getuid())) == NULL)
532 fatal("unknown user %u", (u_int) userid); 538 fatal("unknown user %u", (u_int) userid);
533 539
@@ -1528,7 +1534,7 @@ bad: run_err("%s: %s", np, strerror(errno));
1528 } 1534 }
1529 } 1535 }
1530 if (close(ofd) == -1) 1536 if (close(ofd) == -1)
1531 note_err(np, "%s: close: %s", np, strerror(errno)); 1537 note_err("%s: close: %s", np, strerror(errno));
1532 (void) response(); 1538 (void) response();
1533 if (showprogress) 1539 if (showprogress)
1534 stop_progress_meter(); 1540 stop_progress_meter();
@@ -1598,7 +1604,7 @@ void
1598usage(void) 1604usage(void)
1599{ 1605{
1600 (void) fprintf(stderr, 1606 (void) fprintf(stderr,
1601 "usage: scp [-346BCpqrTv] [-c cipher] [-F ssh_config] [-i identity_file]\n" 1607 "usage: scp [-346ABCpqrTv] [-c cipher] [-F ssh_config] [-i identity_file]\n"
1602 " [-J destination] [-l limit] [-o ssh_option] [-P port]\n" 1608 " [-J destination] [-l limit] [-o ssh_option] [-P port]\n"
1603 " [-S program] source ... target\n"); 1609 " [-S program] source ... target\n");
1604 exit(1); 1610 exit(1);
diff --git a/servconf.c b/servconf.c
index 5f3336365..98afcfcec 100644
--- a/servconf.c
+++ b/servconf.c
@@ -1,5 +1,5 @@
1 1
2/* $OpenBSD: servconf.c,v 1.364 2020/05/27 21:59:11 djm Exp $ */ 2/* $OpenBSD: servconf.c,v 1.369 2020/08/28 03:15:52 dtucker Exp $ */
3/* 3/*
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
5 * All rights reserved 5 * All rights reserved
@@ -15,6 +15,7 @@
15 15
16#include <sys/types.h> 16#include <sys/types.h>
17#include <sys/socket.h> 17#include <sys/socket.h>
18#include <sys/stat.h>
18#ifdef __OpenBSD__ 19#ifdef __OpenBSD__
19#include <sys/sysctl.h> 20#include <sys/sysctl.h>
20#endif 21#endif
@@ -144,7 +145,7 @@ initialize_server_options(ServerOptions *options)
144 options->challenge_response_authentication = -1; 145 options->challenge_response_authentication = -1;
145 options->permit_empty_passwd = -1; 146 options->permit_empty_passwd = -1;
146 options->permit_user_env = -1; 147 options->permit_user_env = -1;
147 options->permit_user_env_whitelist = NULL; 148 options->permit_user_env_allowlist = NULL;
148 options->compression = -1; 149 options->compression = -1;
149 options->rekey_limit = -1; 150 options->rekey_limit = -1;
150 options->rekey_interval = -1; 151 options->rekey_interval = -1;
@@ -217,11 +218,11 @@ assemble_algorithms(ServerOptions *o)
217 all_key = sshkey_alg_list(0, 0, 1, ','); 218 all_key = sshkey_alg_list(0, 0, 1, ',');
218 all_sig = sshkey_alg_list(0, 1, 1, ','); 219 all_sig = sshkey_alg_list(0, 1, 1, ',');
219 /* remove unsupported algos from default lists */ 220 /* remove unsupported algos from default lists */
220 def_cipher = match_filter_whitelist(KEX_SERVER_ENCRYPT, all_cipher); 221 def_cipher = match_filter_allowlist(KEX_SERVER_ENCRYPT, all_cipher);
221 def_mac = match_filter_whitelist(KEX_SERVER_MAC, all_mac); 222 def_mac = match_filter_allowlist(KEX_SERVER_MAC, all_mac);
222 def_kex = match_filter_whitelist(KEX_SERVER_KEX, all_kex); 223 def_kex = match_filter_allowlist(KEX_SERVER_KEX, all_kex);
223 def_key = match_filter_whitelist(KEX_DEFAULT_PK_ALG, all_key); 224 def_key = match_filter_allowlist(KEX_DEFAULT_PK_ALG, all_key);
224 def_sig = match_filter_whitelist(SSH_ALLOWED_CA_SIGALGS, all_sig); 225 def_sig = match_filter_allowlist(SSH_ALLOWED_CA_SIGALGS, all_sig);
225#define ASSEMBLE(what, defaults, all) \ 226#define ASSEMBLE(what, defaults, all) \
226 do { \ 227 do { \
227 if ((r = kex_assemble_names(&o->what, defaults, all)) != 0) \ 228 if ((r = kex_assemble_names(&o->what, defaults, all)) != 0) \
@@ -402,7 +403,7 @@ fill_default_server_options(ServerOptions *options)
402 options->permit_empty_passwd = 0; 403 options->permit_empty_passwd = 0;
403 if (options->permit_user_env == -1) { 404 if (options->permit_user_env == -1) {
404 options->permit_user_env = 0; 405 options->permit_user_env = 0;
405 options->permit_user_env_whitelist = NULL; 406 options->permit_user_env_allowlist = NULL;
406 } 407 }
407 if (options->compression == -1) 408 if (options->compression == -1)
408#ifdef WITH_ZLIB 409#ifdef WITH_ZLIB
@@ -509,15 +510,6 @@ fill_default_server_options(ServerOptions *options)
509 options->auth_methods[0] = NULL; 510 options->auth_methods[0] = NULL;
510 options->num_auth_methods = 0; 511 options->num_auth_methods = 0;
511 } 512 }
512
513#ifndef HAVE_MMAP
514 if (use_privsep && options->compression == 1) {
515 error("This platform does not support both privilege "
516 "separation and compression");
517 error("Compression disabled");
518 options->compression = 0;
519 }
520#endif
521} 513}
522 514
523/* Keyword tokens. */ 515/* Keyword tokens. */
@@ -567,6 +559,7 @@ typedef enum {
567#define SSHCFG_MATCH 0x02 /* allowed inside a Match section */ 559#define SSHCFG_MATCH 0x02 /* allowed inside a Match section */
568#define SSHCFG_ALL (SSHCFG_GLOBAL|SSHCFG_MATCH) 560#define SSHCFG_ALL (SSHCFG_GLOBAL|SSHCFG_MATCH)
569#define SSHCFG_NEVERMATCH 0x04 /* Match never matches; internal only */ 561#define SSHCFG_NEVERMATCH 0x04 /* Match never matches; internal only */
562#define SSHCFG_MATCH_ONLY 0x08 /* Match only in conditional blocks; internal only */
570 563
571/* Textual representation of the tokens. */ 564/* Textual representation of the tokens. */
572static struct { 565static struct {
@@ -1146,6 +1139,9 @@ match_cfg_line(char **condition, int line, struct connection_info *ci)
1146 "%.100s' at line %d", ci->host, arg, line); 1139 "%.100s' at line %d", ci->host, arg, line);
1147 } else if (strcasecmp(attrib, "address") == 0) { 1140 } else if (strcasecmp(attrib, "address") == 0) {
1148 if (ci == NULL || (ci->test && ci->address == NULL)) { 1141 if (ci == NULL || (ci->test && ci->address == NULL)) {
1142 if (addr_match_list(NULL, arg) != 0)
1143 fatal("Invalid Match address argument "
1144 "'%s' at line %d", arg, line);
1149 result = 0; 1145 result = 0;
1150 continue; 1146 continue;
1151 } 1147 }
@@ -1165,6 +1161,10 @@ match_cfg_line(char **condition, int line, struct connection_info *ci)
1165 } 1161 }
1166 } else if (strcasecmp(attrib, "localaddress") == 0){ 1162 } else if (strcasecmp(attrib, "localaddress") == 0){
1167 if (ci == NULL || (ci->test && ci->laddress == NULL)) { 1163 if (ci == NULL || (ci->test && ci->laddress == NULL)) {
1164 if (addr_match_list(NULL, arg) != 0)
1165 fatal("Invalid Match localaddress "
1166 "argument '%s' at line %d", arg,
1167 line);
1168 result = 0; 1168 result = 0;
1169 continue; 1169 continue;
1170 } 1170 }
@@ -1288,7 +1288,7 @@ static const struct multistate multistate_tcpfwd[] = {
1288static int 1288static int
1289process_server_config_line_depth(ServerOptions *options, char *line, 1289process_server_config_line_depth(ServerOptions *options, char *line,
1290 const char *filename, int linenum, int *activep, 1290 const char *filename, int linenum, int *activep,
1291 struct connection_info *connectinfo, int inc_flags, int depth, 1291 struct connection_info *connectinfo, int *inc_flags, int depth,
1292 struct include_list *includes) 1292 struct include_list *includes)
1293{ 1293{
1294 char ch, *cp, ***chararrayptr, **charptr, *arg, *arg2, *p; 1294 char ch, *cp, ***chararrayptr, **charptr, *arg, *arg2, *p;
@@ -1554,6 +1554,8 @@ process_server_config_line_depth(ServerOptions *options, char *line,
1554 continue; 1554 continue;
1555 if (strcasecmp(arg, "touch-required") == 0) 1555 if (strcasecmp(arg, "touch-required") == 0)
1556 value |= PUBKEYAUTH_TOUCH_REQUIRED; 1556 value |= PUBKEYAUTH_TOUCH_REQUIRED;
1557 else if (strcasecmp(arg, "verify-required") == 0)
1558 value |= PUBKEYAUTH_VERIFY_REQUIRED;
1557 else { 1559 else {
1558 fatal("%s line %d: unsupported " 1560 fatal("%s line %d: unsupported "
1559 "PubkeyAuthOptions option %s", 1561 "PubkeyAuthOptions option %s",
@@ -1677,7 +1679,7 @@ process_server_config_line_depth(ServerOptions *options, char *line,
1677 1679
1678 case sPermitUserEnvironment: 1680 case sPermitUserEnvironment:
1679 intptr = &options->permit_user_env; 1681 intptr = &options->permit_user_env;
1680 charptr = &options->permit_user_env_whitelist; 1682 charptr = &options->permit_user_env_allowlist;
1681 arg = strdelim(&cp); 1683 arg = strdelim(&cp);
1682 if (!arg || *arg == '\0') 1684 if (!arg || *arg == '\0')
1683 fatal("%s line %d: missing argument.", 1685 fatal("%s line %d: missing argument.",
@@ -2051,7 +2053,9 @@ process_server_config_line_depth(ServerOptions *options, char *line,
2051 parse_server_config_depth(options, 2053 parse_server_config_depth(options,
2052 item->filename, item->contents, 2054 item->filename, item->contents,
2053 includes, connectinfo, 2055 includes, connectinfo,
2054 (oactive ? 0 : SSHCFG_NEVERMATCH), 2056 (*inc_flags & SSHCFG_MATCH_ONLY
2057 ? SSHCFG_MATCH_ONLY : (oactive
2058 ? 0 : SSHCFG_NEVERMATCH)),
2055 activep, depth + 1); 2059 activep, depth + 1);
2056 } 2060 }
2057 found = 1; 2061 found = 1;
@@ -2099,7 +2103,9 @@ process_server_config_line_depth(ServerOptions *options, char *line,
2099 parse_server_config_depth(options, 2103 parse_server_config_depth(options,
2100 item->filename, item->contents, 2104 item->filename, item->contents,
2101 includes, connectinfo, 2105 includes, connectinfo,
2102 (oactive ? 0 : SSHCFG_NEVERMATCH), 2106 (*inc_flags & SSHCFG_MATCH_ONLY
2107 ? SSHCFG_MATCH_ONLY : (oactive
2108 ? 0 : SSHCFG_NEVERMATCH)),
2103 activep, depth + 1); 2109 activep, depth + 1);
2104 *activep = oactive; 2110 *activep = oactive;
2105 TAILQ_INSERT_TAIL(includes, item, entry); 2111 TAILQ_INSERT_TAIL(includes, item, entry);
@@ -2117,11 +2123,14 @@ process_server_config_line_depth(ServerOptions *options, char *line,
2117 if (cmdline) 2123 if (cmdline)
2118 fatal("Match directive not supported as a command-line " 2124 fatal("Match directive not supported as a command-line "
2119 "option"); 2125 "option");
2120 value = match_cfg_line(&cp, linenum, connectinfo); 2126 value = match_cfg_line(&cp, linenum,
2127 (*inc_flags & SSHCFG_NEVERMATCH ? NULL : connectinfo));
2121 if (value < 0) 2128 if (value < 0)
2122 fatal("%s line %d: Bad Match condition", filename, 2129 fatal("%s line %d: Bad Match condition", filename,
2123 linenum); 2130 linenum);
2124 *activep = (inc_flags & SSHCFG_NEVERMATCH) ? 0 : value; 2131 *activep = (*inc_flags & SSHCFG_NEVERMATCH) ? 0 : value;
2132 /* The MATCH_ONLY is applicable only until the first match block */
2133 *inc_flags &= ~SSHCFG_MATCH_ONLY;
2125 break; 2134 break;
2126 2135
2127 case sPermitListen: 2136 case sPermitListen:
@@ -2428,8 +2437,10 @@ process_server_config_line(ServerOptions *options, char *line,
2428 const char *filename, int linenum, int *activep, 2437 const char *filename, int linenum, int *activep,
2429 struct connection_info *connectinfo, struct include_list *includes) 2438 struct connection_info *connectinfo, struct include_list *includes)
2430{ 2439{
2440 int inc_flags = 0;
2441
2431 return process_server_config_line_depth(options, line, filename, 2442 return process_server_config_line_depth(options, line, filename,
2432 linenum, activep, connectinfo, 0, 0, includes); 2443 linenum, activep, connectinfo, &inc_flags, 0, includes);
2433} 2444}
2434 2445
2435 2446
@@ -2438,6 +2449,7 @@ process_server_config_line(ServerOptions *options, char *line,
2438void 2449void
2439load_server_config(const char *filename, struct sshbuf *conf) 2450load_server_config(const char *filename, struct sshbuf *conf)
2440{ 2451{
2452 struct stat st;
2441 char *line = NULL, *cp; 2453 char *line = NULL, *cp;
2442 size_t linesize = 0; 2454 size_t linesize = 0;
2443 FILE *f; 2455 FILE *f;
@@ -2449,6 +2461,10 @@ load_server_config(const char *filename, struct sshbuf *conf)
2449 exit(1); 2461 exit(1);
2450 } 2462 }
2451 sshbuf_reset(conf); 2463 sshbuf_reset(conf);
2464 /* grow buffer, so realloc is avoided for large config files */
2465 if (fstat(fileno(f), &st) == 0 && st.st_size > 0 &&
2466 (r = sshbuf_allocate(conf, st.st_size)) != 0)
2467 fatal("%s: allocate failed: %s", __func__, ssh_err(r));
2452 while (getline(&line, &linesize, f) != -1) { 2468 while (getline(&line, &linesize, f) != -1) {
2453 lineno++; 2469 lineno++;
2454 /* 2470 /*
@@ -2634,14 +2650,15 @@ parse_server_config_depth(ServerOptions *options, const char *filename,
2634 if (depth < 0 || depth > SERVCONF_MAX_DEPTH) 2650 if (depth < 0 || depth > SERVCONF_MAX_DEPTH)
2635 fatal("Too many recursive configuration includes"); 2651 fatal("Too many recursive configuration includes");
2636 2652
2637 debug2("%s: config %s len %zu", __func__, filename, sshbuf_len(conf)); 2653 debug2("%s: config %s len %zu%s", __func__, filename, sshbuf_len(conf),
2654 (flags & SSHCFG_NEVERMATCH ? " [checking syntax only]" : ""));
2638 2655
2639 if ((obuf = cbuf = sshbuf_dup_string(conf)) == NULL) 2656 if ((obuf = cbuf = sshbuf_dup_string(conf)) == NULL)
2640 fatal("%s: sshbuf_dup_string failed", __func__); 2657 fatal("%s: sshbuf_dup_string failed", __func__);
2641 linenum = 1; 2658 linenum = 1;
2642 while ((cp = strsep(&cbuf, "\n")) != NULL) { 2659 while ((cp = strsep(&cbuf, "\n")) != NULL) {
2643 if (process_server_config_line_depth(options, cp, 2660 if (process_server_config_line_depth(options, cp,
2644 filename, linenum++, activep, connectinfo, flags, 2661 filename, linenum++, activep, connectinfo, &flags,
2645 depth, includes) != 0) 2662 depth, includes) != 0)
2646 bad_options++; 2663 bad_options++;
2647 } 2664 }
@@ -2658,7 +2675,7 @@ parse_server_config(ServerOptions *options, const char *filename,
2658{ 2675{
2659 int active = connectinfo ? 0 : 1; 2676 int active = connectinfo ? 0 : 1;
2660 parse_server_config_depth(options, filename, conf, includes, 2677 parse_server_config_depth(options, filename, conf, includes,
2661 connectinfo, 0, &active, 0); 2678 connectinfo, (connectinfo ? SSHCFG_MATCH_ONLY : 0), &active, 0);
2662 process_queued_listen_addrs(options); 2679 process_queued_listen_addrs(options);
2663} 2680}
2664 2681
@@ -2965,11 +2982,11 @@ dump_config(ServerOptions *o)
2965 } 2982 }
2966 printf("\n"); 2983 printf("\n");
2967 2984
2968 if (o->permit_user_env_whitelist == NULL) { 2985 if (o->permit_user_env_allowlist == NULL) {
2969 dump_cfg_fmtint(sPermitUserEnvironment, o->permit_user_env); 2986 dump_cfg_fmtint(sPermitUserEnvironment, o->permit_user_env);
2970 } else { 2987 } else {
2971 printf("permituserenvironment %s\n", 2988 printf("permituserenvironment %s\n",
2972 o->permit_user_env_whitelist); 2989 o->permit_user_env_allowlist);
2973 } 2990 }
2974 2991
2975 printf("pubkeyauthoptions"); 2992 printf("pubkeyauthoptions");
@@ -2977,5 +2994,7 @@ dump_config(ServerOptions *o)
2977 printf(" none"); 2994 printf(" none");
2978 if (o->pubkey_auth_options & PUBKEYAUTH_TOUCH_REQUIRED) 2995 if (o->pubkey_auth_options & PUBKEYAUTH_TOUCH_REQUIRED)
2979 printf(" touch-required"); 2996 printf(" touch-required");
2997 if (o->pubkey_auth_options & PUBKEYAUTH_VERIFY_REQUIRED)
2998 printf(" verify-required");
2980 printf("\n"); 2999 printf("\n");
2981} 3000}
diff --git a/servconf.h b/servconf.h
index 5a2b60512..4afdf24d0 100644
--- a/servconf.h
+++ b/servconf.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: servconf.h,v 1.144 2020/04/17 03:30:05 djm Exp $ */ 1/* $OpenBSD: servconf.h,v 1.146 2020/08/27 01:07:10 djm Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -50,7 +50,8 @@
50#define INTERNAL_SFTP_NAME "internal-sftp" 50#define INTERNAL_SFTP_NAME "internal-sftp"
51 51
52/* PubkeyAuthOptions flags */ 52/* PubkeyAuthOptions flags */
53#define PUBKEYAUTH_TOUCH_REQUIRED 1 53#define PUBKEYAUTH_TOUCH_REQUIRED (1)
54#define PUBKEYAUTH_VERIFY_REQUIRED (1<<1)
54 55
55struct ssh; 56struct ssh;
56struct fwd_perm_list; 57struct fwd_perm_list;
@@ -149,7 +150,7 @@ typedef struct {
149 int permit_empty_passwd; /* If false, do not permit empty 150 int permit_empty_passwd; /* If false, do not permit empty
150 * passwords. */ 151 * passwords. */
151 int permit_user_env; /* If true, read ~/.ssh/environment */ 152 int permit_user_env; /* If true, read ~/.ssh/environment */
152 char *permit_user_env_whitelist; /* pattern-list whitelist */ 153 char *permit_user_env_allowlist; /* pattern-list of allowed env names */
153 int compression; /* If true, compression is allowed */ 154 int compression; /* If true, compression is allowed */
154 int allow_tcp_forwarding; /* One of FORWARD_* */ 155 int allow_tcp_forwarding; /* One of FORWARD_* */
155 int allow_streamlocal_forwarding; /* One of FORWARD_* */ 156 int allow_streamlocal_forwarding; /* One of FORWARD_* */
@@ -255,7 +256,7 @@ TAILQ_HEAD(include_list, include_item);
255/* 256/*
256 * These are string config options that must be copied between the 257 * These are string config options that must be copied between the
257 * Match sub-config and the main config, and must be sent from the 258 * Match sub-config and the main config, and must be sent from the
258 * privsep slave to the privsep master. We use a macro to ensure all 259 * privsep child to the privsep master. We use a macro to ensure all
259 * the options are copied and the copies are done in the correct order. 260 * the options are copied and the copies are done in the correct order.
260 * 261 *
261 * NB. an option must appear in servconf.c:copy_set_server_options() or 262 * NB. an option must appear in servconf.c:copy_set_server_options() or
@@ -274,7 +275,7 @@ TAILQ_HEAD(include_list, include_item);
274 M_CP_STROPT(pubkey_key_types); \ 275 M_CP_STROPT(pubkey_key_types); \
275 M_CP_STROPT(ca_sign_algorithms); \ 276 M_CP_STROPT(ca_sign_algorithms); \
276 M_CP_STROPT(routing_domain); \ 277 M_CP_STROPT(routing_domain); \
277 M_CP_STROPT(permit_user_env_whitelist); \ 278 M_CP_STROPT(permit_user_env_allowlist); \
278 M_CP_STRARRAYOPT(authorized_keys_files, num_authkeys_files); \ 279 M_CP_STRARRAYOPT(authorized_keys_files, num_authkeys_files); \
279 M_CP_STRARRAYOPT(allow_users, num_allow_users); \ 280 M_CP_STRARRAYOPT(allow_users, num_allow_users); \
280 M_CP_STRARRAYOPT(deny_users, num_deny_users); \ 281 M_CP_STRARRAYOPT(deny_users, num_deny_users); \
diff --git a/serverloop.c b/serverloop.c
index 340b19a5a..48d936d2e 100644
--- a/serverloop.c
+++ b/serverloop.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: serverloop.c,v 1.222 2020/01/30 07:21:38 djm Exp $ */ 1/* $OpenBSD: serverloop.c,v 1.223 2020/07/03 06:29:57 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -253,6 +253,8 @@ wait_until_can_do_something(struct ssh *ssh,
253 max_time_ms = keepalive_ms; 253 max_time_ms = keepalive_ms;
254 client_alive_scheduled = 1; 254 client_alive_scheduled = 1;
255 } 255 }
256 if (last_client_time == 0)
257 last_client_time = monotime();
256 } 258 }
257 259
258#if 0 260#if 0
diff --git a/session.c b/session.c
index 837a8bacf..b1796a803 100644
--- a/session.c
+++ b/session.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: session.c,v 1.319 2020/03/13 03:17:07 djm Exp $ */ 1/* $OpenBSD: session.c,v 1.324 2020/07/07 02:47:21 deraadt Exp $ */
2/* 2/*
3 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 3 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
4 * All rights reserved 4 * All rights reserved
@@ -843,12 +843,12 @@ check_quietlogin(Session *s, const char *command)
843 * into the environment. If the file does not exist, this does nothing. 843 * into the environment. If the file does not exist, this does nothing.
844 * Otherwise, it must consist of empty lines, comments (line starts with '#') 844 * Otherwise, it must consist of empty lines, comments (line starts with '#')
845 * and assignments of the form name=value. No other forms are allowed. 845 * and assignments of the form name=value. No other forms are allowed.
846 * If whitelist is not NULL, then it is interpreted as a pattern list and 846 * If allowlist is not NULL, then it is interpreted as a pattern list and
847 * only variable names that match it will be accepted. 847 * only variable names that match it will be accepted.
848 */ 848 */
849static void 849static void
850read_environment_file(char ***env, u_int *envsize, 850read_environment_file(char ***env, u_int *envsize,
851 const char *filename, const char *whitelist) 851 const char *filename, const char *allowlist)
852{ 852{
853 FILE *f; 853 FILE *f;
854 char *line = NULL, *cp, *value; 854 char *line = NULL, *cp, *value;
@@ -881,8 +881,8 @@ read_environment_file(char ***env, u_int *envsize,
881 */ 881 */
882 *value = '\0'; 882 *value = '\0';
883 value++; 883 value++;
884 if (whitelist != NULL && 884 if (allowlist != NULL &&
885 match_pattern_list(cp, whitelist, 0) != 1) 885 match_pattern_list(cp, allowlist, 0) != 1)
886 continue; 886 continue;
887 child_set_env(env, envsize, cp, value); 887 child_set_env(env, envsize, cp, value);
888 } 888 }
@@ -924,7 +924,7 @@ read_etc_default_login(char ***env, u_int *envsize, uid_t uid)
924 * interested in. 924 * interested in.
925 */ 925 */
926 read_environment_file(&tmpenv, &tmpenvsize, "/etc/default/login", 926 read_environment_file(&tmpenv, &tmpenvsize, "/etc/default/login",
927 options.permit_user_env_whitelist); 927 options.permit_user_env_allowlist);
928 928
929 if (tmpenv == NULL) 929 if (tmpenv == NULL)
930 return; 930 return;
@@ -1091,7 +1091,7 @@ do_setup_env(struct ssh *ssh, Session *s, const char *shell)
1091 if ((cp = getenv("AUTHSTATE")) != NULL) 1091 if ((cp = getenv("AUTHSTATE")) != NULL)
1092 child_set_env(&env, &envsize, "AUTHSTATE", cp); 1092 child_set_env(&env, &envsize, "AUTHSTATE", cp);
1093 read_environment_file(&env, &envsize, "/etc/environment", 1093 read_environment_file(&env, &envsize, "/etc/environment",
1094 options.permit_user_env_whitelist); 1094 options.permit_user_env_allowlist);
1095 } 1095 }
1096#endif 1096#endif
1097#ifdef KRB5 1097#ifdef KRB5
@@ -1111,10 +1111,10 @@ do_setup_env(struct ssh *ssh, Session *s, const char *shell)
1111 cp = strchr(ocp, '='); 1111 cp = strchr(ocp, '=');
1112 if (*cp == '=') { 1112 if (*cp == '=') {
1113 *cp = '\0'; 1113 *cp = '\0';
1114 /* Apply PermitUserEnvironment whitelist */ 1114 /* Apply PermitUserEnvironment allowlist */
1115 if (options.permit_user_env_whitelist == NULL || 1115 if (options.permit_user_env_allowlist == NULL ||
1116 match_pattern_list(ocp, 1116 match_pattern_list(ocp,
1117 options.permit_user_env_whitelist, 0) == 1) 1117 options.permit_user_env_allowlist, 0) == 1)
1118 child_set_env(&env, &envsize, 1118 child_set_env(&env, &envsize,
1119 ocp, cp + 1); 1119 ocp, cp + 1);
1120 } 1120 }
@@ -1127,7 +1127,7 @@ do_setup_env(struct ssh *ssh, Session *s, const char *shell)
1127 snprintf(buf, sizeof buf, "%.200s/.ssh/environment", 1127 snprintf(buf, sizeof buf, "%.200s/.ssh/environment",
1128 pw->pw_dir); 1128 pw->pw_dir);
1129 read_environment_file(&env, &envsize, buf, 1129 read_environment_file(&env, &envsize, buf,
1130 options.permit_user_env_whitelist); 1130 options.permit_user_env_allowlist);
1131 } 1131 }
1132 1132
1133#ifdef USE_PAM 1133#ifdef USE_PAM
@@ -1206,19 +1206,21 @@ static void
1206do_rc_files(struct ssh *ssh, Session *s, const char *shell) 1206do_rc_files(struct ssh *ssh, Session *s, const char *shell)
1207{ 1207{
1208 FILE *f = NULL; 1208 FILE *f = NULL;
1209 char cmd[1024]; 1209 char *cmd = NULL, *user_rc = NULL;
1210 int do_xauth; 1210 int do_xauth;
1211 struct stat st; 1211 struct stat st;
1212 1212
1213 do_xauth = 1213 do_xauth =
1214 s->display != NULL && s->auth_proto != NULL && s->auth_data != NULL; 1214 s->display != NULL && s->auth_proto != NULL && s->auth_data != NULL;
1215 xasprintf(&user_rc, "%s/%s", s->pw->pw_dir, _PATH_SSH_USER_RC);
1215 1216
1216 /* ignore _PATH_SSH_USER_RC for subsystems and admin forced commands */ 1217 /* ignore _PATH_SSH_USER_RC for subsystems and admin forced commands */
1217 if (!s->is_subsystem && options.adm_forced_command == NULL && 1218 if (!s->is_subsystem && options.adm_forced_command == NULL &&
1218 auth_opts->permit_user_rc && options.permit_user_rc && 1219 auth_opts->permit_user_rc && options.permit_user_rc &&
1219 stat(_PATH_SSH_USER_RC, &st) >= 0) { 1220 stat(user_rc, &st) >= 0) {
1220 snprintf(cmd, sizeof cmd, "%s -c '%s %s'", 1221 if (xasprintf(&cmd, "%s -c '%s %s'", shell, _PATH_BSHELL,
1221 shell, _PATH_BSHELL, _PATH_SSH_USER_RC); 1222 user_rc) == -1)
1223 fatal("%s: xasprintf: %s", __func__, strerror(errno));
1222 if (debug_flag) 1224 if (debug_flag)
1223 fprintf(stderr, "Running %s\n", cmd); 1225 fprintf(stderr, "Running %s\n", cmd);
1224 f = popen(cmd, "w"); 1226 f = popen(cmd, "w");
@@ -1229,7 +1231,7 @@ do_rc_files(struct ssh *ssh, Session *s, const char *shell)
1229 pclose(f); 1231 pclose(f);
1230 } else 1232 } else
1231 fprintf(stderr, "Could not run %s\n", 1233 fprintf(stderr, "Could not run %s\n",
1232 _PATH_SSH_USER_RC); 1234 user_rc);
1233 } else if (stat(_PATH_SSH_SYSTEM_RC, &st) >= 0) { 1235 } else if (stat(_PATH_SSH_SYSTEM_RC, &st) >= 0) {
1234 if (debug_flag) 1236 if (debug_flag)
1235 fprintf(stderr, "Running %s %s\n", _PATH_BSHELL, 1237 fprintf(stderr, "Running %s %s\n", _PATH_BSHELL,
@@ -1254,8 +1256,8 @@ do_rc_files(struct ssh *ssh, Session *s, const char *shell)
1254 options.xauth_location, s->auth_display, 1256 options.xauth_location, s->auth_display,
1255 s->auth_proto, s->auth_data); 1257 s->auth_proto, s->auth_data);
1256 } 1258 }
1257 snprintf(cmd, sizeof cmd, "%s -q -", 1259 if (xasprintf(&cmd, "%s -q -", options.xauth_location) == -1)
1258 options.xauth_location); 1260 fatal("%s: xasprintf: %s", __func__, strerror(errno));
1259 f = popen(cmd, "w"); 1261 f = popen(cmd, "w");
1260 if (f) { 1262 if (f) {
1261 fprintf(f, "remove %s\n", 1263 fprintf(f, "remove %s\n",
@@ -1269,6 +1271,8 @@ do_rc_files(struct ssh *ssh, Session *s, const char *shell)
1269 cmd); 1271 cmd);
1270 } 1272 }
1271 } 1273 }
1274 free(cmd);
1275 free(user_rc);
1272} 1276}
1273 1277
1274static void 1278static void
@@ -1497,6 +1501,9 @@ child_close_fds(struct ssh *ssh)
1497 */ 1501 */
1498 endpwent(); 1502 endpwent();
1499 1503
1504 /* Stop directing logs to a high-numbered fd before we close it */
1505 log_redirect_stderr_to(NULL);
1506
1500 /* 1507 /*
1501 * Close any extra open file descriptors so that we don't have them 1508 * Close any extra open file descriptors so that we don't have them
1502 * hanging around in clients. Note that we want to do this after 1509 * hanging around in clients. Note that we want to do this after
diff --git a/sftp-client.c b/sftp-client.c
index 72f7fff7a..b8e131be6 100644
--- a/sftp-client.c
+++ b/sftp-client.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sftp-client.c,v 1.135 2019/10/04 04:31:59 djm Exp $ */ 1/* $OpenBSD: sftp-client.c,v 1.136 2020/05/15 03:57:33 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org> 3 * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
4 * 4 *
@@ -1415,7 +1415,7 @@ do_download(struct sftp_conn *conn, const char *remote_path,
1415 (unsigned long long)offset, 1415 (unsigned long long)offset,
1416 num_req); 1416 num_req);
1417 max_req = 1; 1417 max_req = 1;
1418 } else if (max_req <= conn->num_requests) { 1418 } else if (max_req < conn->num_requests) {
1419 ++max_req; 1419 ++max_req;
1420 } 1420 }
1421 } 1421 }
diff --git a/sftp-server.0 b/sftp-server.0
index 4c5fbbb72..36c5f846f 100644
--- a/sftp-server.0
+++ b/sftp-server.0
@@ -5,8 +5,7 @@ NAME
5 5
6SYNOPSIS 6SYNOPSIS
7 sftp-server [-ehR] [-d start_directory] [-f log_facility] [-l log_level] 7 sftp-server [-ehR] [-d start_directory] [-f log_facility] [-l log_level]
8 [-P blacklisted_requests] [-p whitelisted_requests] 8 [-P denied_requests] [-p allowed_requests] [-u umask]
9 [-u umask]
10 sftp-server -Q protocol_feature 9 sftp-server -Q protocol_feature
11 10
12DESCRIPTION 11DESCRIPTION
@@ -48,17 +47,19 @@ DESCRIPTION
48 DEBUG1 are equivalent. DEBUG2 and DEBUG3 each specify higher 47 DEBUG1 are equivalent. DEBUG2 and DEBUG3 each specify higher
49 levels of debugging output. The default is ERROR. 48 levels of debugging output. The default is ERROR.
50 49
51 -P blacklisted_requests 50 -P denied_requests
52 Specify a comma-separated list of SFTP protocol requests that are 51 Specify a comma-separated list of SFTP protocol requests that are
53 banned by the server. sftp-server will reply to any blacklisted 52 banned by the server. sftp-server will reply to any denied
54 request with a failure. The -Q flag can be used to determine the 53 request with a failure. The -Q flag can be used to determine the
55 supported request types. If both a blacklist and a whitelist are 54 supported request types. If both denied and allowed lists are
56 specified, then the blacklist is applied before the whitelist. 55 specified, then the denied list is applied before the allowed
56 list.
57 57
58 -p whitelisted_requests 58 -p allowed_requests
59 Specify a comma-separated list of SFTP protocol requests that are 59 Specify a comma-separated list of SFTP protocol requests that are
60 permitted by the server. All request types that are not on the 60 permitted by the server. All request types that are not on the
61 whitelist will be logged and replied to with a failure message. 61 allowed list will be logged and replied to with a failure
62 message.
62 63
63 Care must be taken when using this feature to ensure that 64 Care must be taken when using this feature to ensure that
64 requests made implicitly by SFTP clients are permitted. 65 requests made implicitly by SFTP clients are permitted.
@@ -66,7 +67,8 @@ DESCRIPTION
66 -Q protocol_feature 67 -Q protocol_feature
67 Query protocol features supported by sftp-server. At present the 68 Query protocol features supported by sftp-server. At present the
68 only feature that may be queried is M-bM-^@M-^\requestsM-bM-^@M-^], which may be used 69 only feature that may be queried is M-bM-^@M-^\requestsM-bM-^@M-^], which may be used
69 for black or whitelisting (flags -P and -p respectively). 70 to deny or allow specific requests (flags -P and -p
71 respectively).
70 72
71 -R Places this instance of sftp-server into a read-only mode. 73 -R Places this instance of sftp-server into a read-only mode.
72 Attempts to open files for writing, as well as other operations 74 Attempts to open files for writing, as well as other operations
@@ -93,4 +95,4 @@ HISTORY
93AUTHORS 95AUTHORS
94 Markus Friedl <markus@openbsd.org> 96 Markus Friedl <markus@openbsd.org>
95 97
96OpenBSD 6.7 November 30, 2019 OpenBSD 6.7 98OpenBSD 6.8 June 22, 2020 OpenBSD 6.8
diff --git a/sftp-server.8 b/sftp-server.8
index 4a55dab26..f057da3b8 100644
--- a/sftp-server.8
+++ b/sftp-server.8
@@ -1,4 +1,4 @@
1.\" $OpenBSD: sftp-server.8,v 1.28 2019/11/30 07:07:59 jmc Exp $ 1.\" $OpenBSD: sftp-server.8,v 1.30 2020/06/22 06:36:40 jmc Exp $
2.\" 2.\"
3.\" Copyright (c) 2000 Markus Friedl. All rights reserved. 3.\" Copyright (c) 2000 Markus Friedl. All rights reserved.
4.\" 4.\"
@@ -22,7 +22,7 @@
22.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 22.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24.\" 24.\"
25.Dd $Mdocdate: November 30 2019 $ 25.Dd $Mdocdate: June 22 2020 $
26.Dt SFTP-SERVER 8 26.Dt SFTP-SERVER 8
27.Os 27.Os
28.Sh NAME 28.Sh NAME
@@ -35,8 +35,8 @@
35.Op Fl d Ar start_directory 35.Op Fl d Ar start_directory
36.Op Fl f Ar log_facility 36.Op Fl f Ar log_facility
37.Op Fl l Ar log_level 37.Op Fl l Ar log_level
38.Op Fl P Ar blacklisted_requests 38.Op Fl P Ar denied_requests
39.Op Fl p Ar whitelisted_requests 39.Op Fl p Ar allowed_requests
40.Op Fl u Ar umask 40.Op Fl u Ar umask
41.Ek 41.Ek
42.Nm 42.Nm
@@ -99,20 +99,20 @@ performs on behalf of the client.
99DEBUG and DEBUG1 are equivalent. 99DEBUG and DEBUG1 are equivalent.
100DEBUG2 and DEBUG3 each specify higher levels of debugging output. 100DEBUG2 and DEBUG3 each specify higher levels of debugging output.
101The default is ERROR. 101The default is ERROR.
102.It Fl P Ar blacklisted_requests 102.It Fl P Ar denied_requests
103Specify a comma-separated list of SFTP protocol requests that are banned by 103Specify a comma-separated list of SFTP protocol requests that are banned by
104the server. 104the server.
105.Nm 105.Nm
106will reply to any blacklisted request with a failure. 106will reply to any denied request with a failure.
107The 107The
108.Fl Q 108.Fl Q
109flag can be used to determine the supported request types. 109flag can be used to determine the supported request types.
110If both a blacklist and a whitelist are specified, then the blacklist is 110If both denied and allowed lists are specified, then the denied list is
111applied before the whitelist. 111applied before the allowed list.
112.It Fl p Ar whitelisted_requests 112.It Fl p Ar allowed_requests
113Specify a comma-separated list of SFTP protocol requests that are permitted 113Specify a comma-separated list of SFTP protocol requests that are permitted
114by the server. 114by the server.
115All request types that are not on the whitelist will be logged and replied 115All request types that are not on the allowed list will be logged and replied
116to with a failure message. 116to with a failure message.
117.Pp 117.Pp
118Care must be taken when using this feature to ensure that requests made 118Care must be taken when using this feature to ensure that requests made
@@ -122,7 +122,7 @@ Query protocol features supported by
122.Nm . 122.Nm .
123At present the only feature that may be queried is 123At present the only feature that may be queried is
124.Dq requests , 124.Dq requests ,
125which may be used for black or whitelisting (flags 125which may be used to deny or allow specific requests (flags
126.Fl P 126.Fl P
127and 127and
128.Fl p 128.Fl p
diff --git a/sftp-server.c b/sftp-server.c
index 359204fa7..55386fa9a 100644
--- a/sftp-server.c
+++ b/sftp-server.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sftp-server.c,v 1.117 2019/07/05 04:55:40 djm Exp $ */ 1/* $OpenBSD: sftp-server.c,v 1.119 2020/07/17 03:51:32 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000-2004 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000-2004 Markus Friedl. All rights reserved.
4 * 4 *
@@ -74,7 +74,7 @@ static int init_done;
74static int readonly; 74static int readonly;
75 75
76/* Requests that are allowed/denied */ 76/* Requests that are allowed/denied */
77static char *request_whitelist, *request_blacklist; 77static char *request_allowlist, *request_denylist;
78 78
79/* portable attributes, etc. */ 79/* portable attributes, etc. */
80typedef struct Stat Stat; 80typedef struct Stat Stat;
@@ -164,20 +164,20 @@ request_permitted(const struct sftp_handler *h)
164 verbose("Refusing %s request in read-only mode", h->name); 164 verbose("Refusing %s request in read-only mode", h->name);
165 return 0; 165 return 0;
166 } 166 }
167 if (request_blacklist != NULL && 167 if (request_denylist != NULL &&
168 ((result = match_list(h->name, request_blacklist, NULL))) != NULL) { 168 ((result = match_list(h->name, request_denylist, NULL))) != NULL) {
169 free(result); 169 free(result);
170 verbose("Refusing blacklisted %s request", h->name); 170 verbose("Refusing denylisted %s request", h->name);
171 return 0; 171 return 0;
172 } 172 }
173 if (request_whitelist != NULL && 173 if (request_allowlist != NULL &&
174 ((result = match_list(h->name, request_whitelist, NULL))) != NULL) { 174 ((result = match_list(h->name, request_allowlist, NULL))) != NULL) {
175 free(result); 175 free(result);
176 debug2("Permitting whitelisted %s request", h->name); 176 debug2("Permitting allowlisted %s request", h->name);
177 return 1; 177 return 1;
178 } 178 }
179 if (request_whitelist != NULL) { 179 if (request_allowlist != NULL) {
180 verbose("Refusing non-whitelisted %s request", h->name); 180 verbose("Refusing non-allowlisted %s request", h->name);
181 return 0; 181 return 0;
182 } 182 }
183 return 1; 183 return 1;
@@ -799,18 +799,19 @@ process_write(u_int32_t id)
799 if (!(handle_to_flags(handle) & O_APPEND) && 799 if (!(handle_to_flags(handle) & O_APPEND) &&
800 lseek(fd, off, SEEK_SET) == -1) { 800 lseek(fd, off, SEEK_SET) == -1) {
801 status = errno_to_portable(errno); 801 status = errno_to_portable(errno);
802 error("process_write: seek failed"); 802 error("%s: seek failed", __func__);
803 } else { 803 } else {
804/* XXX ATOMICIO ? */ 804/* XXX ATOMICIO ? */
805 ret = write(fd, data, len); 805 ret = write(fd, data, len);
806 if (ret == -1) { 806 if (ret == -1) {
807 error("process_write: write failed"); 807 error("%s: write: %s", __func__,
808 strerror(errno));
808 status = errno_to_portable(errno); 809 status = errno_to_portable(errno);
809 } else if ((size_t)ret == len) { 810 } else if ((size_t)ret == len) {
810 status = SSH2_FX_OK; 811 status = SSH2_FX_OK;
811 handle_update_write(handle, ret); 812 handle_update_write(handle, ret);
812 } else { 813 } else {
813 debug2("nothing at all written"); 814 debug2("%s: nothing at all written", __func__);
814 status = SSH2_FX_FAILURE; 815 status = SSH2_FX_FAILURE;
815 } 816 }
816 } 817 }
@@ -1556,8 +1557,8 @@ sftp_server_usage(void)
1556 1557
1557 fprintf(stderr, 1558 fprintf(stderr,
1558 "usage: %s [-ehR] [-d start_directory] [-f log_facility] " 1559 "usage: %s [-ehR] [-d start_directory] [-f log_facility] "
1559 "[-l log_level]\n\t[-P blacklisted_requests] " 1560 "[-l log_level]\n\t[-P denied_requests] "
1560 "[-p whitelisted_requests] [-u umask]\n" 1561 "[-p allowed_requests] [-u umask]\n"
1561 " %s -Q protocol_feature\n", 1562 " %s -Q protocol_feature\n",
1562 __progname, __progname); 1563 __progname, __progname);
1563 exit(1); 1564 exit(1);
@@ -1627,14 +1628,14 @@ sftp_server_main(int argc, char **argv, struct passwd *user_pw)
1627 free(cp); 1628 free(cp);
1628 break; 1629 break;
1629 case 'p': 1630 case 'p':
1630 if (request_whitelist != NULL) 1631 if (request_allowlist != NULL)
1631 fatal("Permitted requests already set"); 1632 fatal("Permitted requests already set");
1632 request_whitelist = xstrdup(optarg); 1633 request_allowlist = xstrdup(optarg);
1633 break; 1634 break;
1634 case 'P': 1635 case 'P':
1635 if (request_blacklist != NULL) 1636 if (request_denylist != NULL)
1636 fatal("Refused requests already set"); 1637 fatal("Refused requests already set");
1637 request_blacklist = xstrdup(optarg); 1638 request_denylist = xstrdup(optarg);
1638 break; 1639 break;
1639 case 'u': 1640 case 'u':
1640 errno = 0; 1641 errno = 0;
diff --git a/sftp.0 b/sftp.0
index 2823313cb..99288ebcf 100644
--- a/sftp.0
+++ b/sftp.0
@@ -4,7 +4,7 @@ NAME
4 sftp M-bM-^@M-^S OpenSSH secure file transfer 4 sftp M-bM-^@M-^S OpenSSH secure file transfer
5 5
6SYNOPSIS 6SYNOPSIS
7 sftp [-46aCfNpqrv] [-B buffer_size] [-b batchfile] [-c cipher] 7 sftp [-46AaCfNpqrv] [-B buffer_size] [-b batchfile] [-c cipher]
8 [-D sftp_server_path] [-F ssh_config] [-i identity_file] 8 [-D sftp_server_path] [-F ssh_config] [-i identity_file]
9 [-J destination] [-l limit] [-o ssh_option] [-P port] 9 [-J destination] [-l limit] [-o ssh_option] [-P port]
10 [-R num_requests] [-S program] [-s subsystem | sftp_server] 10 [-R num_requests] [-S program] [-s subsystem | sftp_server]
@@ -38,6 +38,9 @@ DESCRIPTION
38 38
39 -6 Forces sftp to use IPv6 addresses only. 39 -6 Forces sftp to use IPv6 addresses only.
40 40
41 -A Allows forwarding of ssh-agent(1) to the remote system. The
42 default is not to forward an authentication agent.
43
41 -a Attempt to continue interrupted transfers rather than overwriting 44 -a Attempt to continue interrupted transfers rather than overwriting
42 existing partial or complete copies of files. If the partial 45 existing partial or complete copies of files. If the partial
43 contents differ from those being transferred, then the resultant 46 contents differ from those being transferred, then the resultant
@@ -396,4 +399,4 @@ SEE ALSO
396 T. Ylonen and S. Lehtinen, SSH File Transfer Protocol, draft-ietf-secsh- 399 T. Ylonen and S. Lehtinen, SSH File Transfer Protocol, draft-ietf-secsh-
397 filexfer-00.txt, January 2001, work in progress material. 400 filexfer-00.txt, January 2001, work in progress material.
398 401
399OpenBSD 6.7 April 23, 2020 OpenBSD 6.7 402OpenBSD 6.8 August 3, 2020 OpenBSD 6.8
diff --git a/sftp.1 b/sftp.1
index a305b37d1..1cfa5ec22 100644
--- a/sftp.1
+++ b/sftp.1
@@ -1,4 +1,4 @@
1.\" $OpenBSD: sftp.1,v 1.131 2020/04/23 21:28:09 jmc Exp $ 1.\" $OpenBSD: sftp.1,v 1.132 2020/08/03 02:43:41 djm Exp $
2.\" 2.\"
3.\" Copyright (c) 2001 Damien Miller. All rights reserved. 3.\" Copyright (c) 2001 Damien Miller. All rights reserved.
4.\" 4.\"
@@ -22,7 +22,7 @@
22.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 22.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24.\" 24.\"
25.Dd $Mdocdate: April 23 2020 $ 25.Dd $Mdocdate: August 3 2020 $
26.Dt SFTP 1 26.Dt SFTP 1
27.Os 27.Os
28.Sh NAME 28.Sh NAME
@@ -30,7 +30,7 @@
30.Nd OpenSSH secure file transfer 30.Nd OpenSSH secure file transfer
31.Sh SYNOPSIS 31.Sh SYNOPSIS
32.Nm sftp 32.Nm sftp
33.Op Fl 46aCfNpqrv 33.Op Fl 46AaCfNpqrv
34.Op Fl B Ar buffer_size 34.Op Fl B Ar buffer_size
35.Op Fl b Ar batchfile 35.Op Fl b Ar batchfile
36.Op Fl c Ar cipher 36.Op Fl c Ar cipher
@@ -104,6 +104,11 @@ to use IPv4 addresses only.
104Forces 104Forces
105.Nm 105.Nm
106to use IPv6 addresses only. 106to use IPv6 addresses only.
107.It Fl A
108Allows forwarding of
109.Xr ssh-agent 1
110to the remote system.
111The default is not to forward an authentication agent.
107.It Fl a 112.It Fl a
108Attempt to continue interrupted transfers rather than overwriting 113Attempt to continue interrupted transfers rather than overwriting
109existing partial or complete copies of files. 114existing partial or complete copies of files.
diff --git a/sftp.c b/sftp.c
index 2799e4a10..c88c86118 100644
--- a/sftp.c
+++ b/sftp.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sftp.c,v 1.200 2020/04/03 05:53:52 jmc Exp $ */ 1/* $OpenBSD: sftp.c,v 1.201 2020/08/03 02:43:41 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org> 3 * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
4 * 4 *
@@ -2363,7 +2363,7 @@ usage(void)
2363 extern char *__progname; 2363 extern char *__progname;
2364 2364
2365 fprintf(stderr, 2365 fprintf(stderr,
2366 "usage: %s [-46aCfNpqrv] [-B buffer_size] [-b batchfile] [-c cipher]\n" 2366 "usage: %s [-46AaCfNpqrv] [-B buffer_size] [-b batchfile] [-c cipher]\n"
2367 " [-D sftp_server_path] [-F ssh_config] [-i identity_file]\n" 2367 " [-D sftp_server_path] [-F ssh_config] [-i identity_file]\n"
2368 " [-J destination] [-l limit] [-o ssh_option] [-P port]\n" 2368 " [-J destination] [-l limit] [-o ssh_option] [-P port]\n"
2369 " [-R num_requests] [-S program] [-s subsystem | sftp_server]\n" 2369 " [-R num_requests] [-S program] [-s subsystem | sftp_server]\n"
@@ -2401,7 +2401,6 @@ main(int argc, char **argv)
2401 args.list = NULL; 2401 args.list = NULL;
2402 addargs(&args, "%s", ssh_program); 2402 addargs(&args, "%s", ssh_program);
2403 addargs(&args, "-oForwardX11 no"); 2403 addargs(&args, "-oForwardX11 no");
2404 addargs(&args, "-oForwardAgent no");
2405 addargs(&args, "-oPermitLocalCommand no"); 2404 addargs(&args, "-oPermitLocalCommand no");
2406 addargs(&args, "-oClearAllForwardings yes"); 2405 addargs(&args, "-oClearAllForwardings yes");
2407 2406
@@ -2409,9 +2408,10 @@ main(int argc, char **argv)
2409 infile = stdin; 2408 infile = stdin;
2410 2409
2411 while ((ch = getopt(argc, argv, 2410 while ((ch = getopt(argc, argv,
2412 "1246afhNpqrvCc:D:i:l:o:s:S:b:B:F:J:P:R:")) != -1) { 2411 "1246AafhNpqrvCc:D:i:l:o:s:S:b:B:F:J:P:R:")) != -1) {
2413 switch (ch) { 2412 switch (ch) {
2414 /* Passed through to ssh(1) */ 2413 /* Passed through to ssh(1) */
2414 case 'A':
2415 case '4': 2415 case '4':
2416 case '6': 2416 case '6':
2417 case 'C': 2417 case 'C':
@@ -2511,6 +2511,9 @@ main(int argc, char **argv)
2511 } 2511 }
2512 } 2512 }
2513 2513
2514 /* Do this last because we want the user to be able to override it */
2515 addargs(&args, "-oForwardAgent no");
2516
2514 if (!isatty(STDERR_FILENO)) 2517 if (!isatty(STDERR_FILENO))
2515 showprogress = 0; 2518 showprogress = 0;
2516 2519
diff --git a/sk-api.h b/sk-api.h
index 1ecaa3537..df17ca540 100644
--- a/sk-api.h
+++ b/sk-api.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: sk-api.h,v 1.9 2020/04/28 04:02:29 djm Exp $ */ 1/* $OpenBSD: sk-api.h,v 1.11 2020/09/09 03:08:01 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2019 Google LLC 3 * Copyright (c) 2019 Google LLC
4 * 4 *
@@ -47,6 +47,8 @@ struct sk_enroll_response {
47 size_t signature_len; 47 size_t signature_len;
48 uint8_t *attestation_cert; 48 uint8_t *attestation_cert;
49 size_t attestation_cert_len; 49 size_t attestation_cert_len;
50 uint8_t *authdata;
51 size_t authdata_len;
50}; 52};
51 53
52struct sk_sign_response { 54struct sk_sign_response {
@@ -63,6 +65,7 @@ struct sk_resident_key {
63 size_t slot; 65 size_t slot;
64 char *application; 66 char *application;
65 struct sk_enroll_response key; 67 struct sk_enroll_response key;
68 uint8_t flags;
66}; 69};
67 70
68struct sk_option { 71struct sk_option {
@@ -71,7 +74,7 @@ struct sk_option {
71 uint8_t required; 74 uint8_t required;
72}; 75};
73 76
74#define SSH_SK_VERSION_MAJOR 0x00050000 /* current API version */ 77#define SSH_SK_VERSION_MAJOR 0x00070000 /* current API version */
75#define SSH_SK_VERSION_MAJOR_MASK 0xffff0000 78#define SSH_SK_VERSION_MAJOR_MASK 0xffff0000
76 79
77/* Return the version of the middleware API */ 80/* Return the version of the middleware API */
diff --git a/sk-usbhid.c b/sk-usbhid.c
index 25250824d..007c59644 100644
--- a/sk-usbhid.c
+++ b/sk-usbhid.c
@@ -1,5 +1,7 @@
1/* $OpenBSD: sk-usbhid.c,v 1.26 2020/09/09 03:08:01 djm Exp $ */
1/* 2/*
2 * Copyright (c) 2019 Markus Friedl 3 * Copyright (c) 2019 Markus Friedl
4 * Copyright (c) 2020 Pedro Martelletto
3 * 5 *
4 * Permission to use, copy, modify, and distribute this software for any 6 * Permission to use, copy, modify, and distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above 7 * purpose with or without fee is hereby granted, provided that the above
@@ -40,9 +42,33 @@
40#include <fido.h> 42#include <fido.h>
41#include <fido/credman.h> 43#include <fido/credman.h>
42 44
45/* backwards compat for libfido2 */
46#ifndef HAVE_FIDO_CRED_PROT
47#define fido_cred_prot(x) (0)
48#endif
49#ifndef HAVE_FIDO_CRED_SET_PROT
50#define fido_cred_set_prot(x, y) (FIDO_ERR_UNSUPPORTED_OPTION)
51#endif
52#ifndef HAVE_FIDO_DEV_SUPPORTS_CRED_PROT
53#define fido_dev_supports_cred_prot(x) (0)
54#endif
55#ifndef HAVE_FIDO_DEV_GET_TOUCH_BEGIN
56#define fido_dev_get_touch_begin(x) (FIDO_ERR_UNSUPPORTED_OPTION)
57#endif
58#ifndef HAVE_FIDO_DEV_GET_TOUCH_STATUS
59#define fido_dev_get_touch_status(x, y, z) (FIDO_ERR_UNSUPPORTED_OPTION)
60#endif
61#ifndef FIDO_CRED_PROT_UV_REQUIRED
62#define FIDO_CRED_PROT_UV_REQUIRED 0
63#endif
64#ifndef FIDO_CRED_PROT_UV_OPTIONAL_WITH_ID
65#define FIDO_CRED_PROT_UV_OPTIONAL_WITH_ID 0
66#endif
67
43#ifndef SK_STANDALONE 68#ifndef SK_STANDALONE
44# include "log.h" 69# include "log.h"
45# include "xmalloc.h" 70# include "xmalloc.h"
71# include "misc.h"
46/* 72/*
47 * If building as part of OpenSSH, then rename exported functions. 73 * If building as part of OpenSSH, then rename exported functions.
48 * This must be done before including sk-api.h. 74 * This must be done before including sk-api.h.
@@ -57,7 +83,16 @@
57 83
58/* #define SK_DEBUG 1 */ 84/* #define SK_DEBUG 1 */
59 85
60#define MAX_FIDO_DEVICES 256 86#ifdef SK_DEBUG
87#define SSH_FIDO_INIT_ARG FIDO_DEBUG
88#else
89#define SSH_FIDO_INIT_ARG 0
90#endif
91
92#define MAX_FIDO_DEVICES 8
93#define FIDO_POLL_MS 50
94#define SELECT_MS 15000
95#define POLL_SLEEP_NS 200000000
61 96
62/* Compatibility with OpenSSH 1.0.x */ 97/* Compatibility with OpenSSH 1.0.x */
63#if (OPENSSL_VERSION_NUMBER < 0x10100000L) 98#if (OPENSSL_VERSION_NUMBER < 0x10100000L)
@@ -68,6 +103,11 @@
68 } while (0) 103 } while (0)
69#endif 104#endif
70 105
106struct sk_usbhid {
107 fido_dev_t *dev;
108 char *path;
109};
110
71/* Return the version of the middleware API */ 111/* Return the version of the middleware API */
72uint32_t sk_api_version(void); 112uint32_t sk_api_version(void);
73 113
@@ -121,53 +161,185 @@ sk_api_version(void)
121 return SSH_SK_VERSION_MAJOR; 161 return SSH_SK_VERSION_MAJOR;
122} 162}
123 163
124/* Select the first identified FIDO device attached to the system */ 164static struct sk_usbhid *
125static char * 165sk_open(const char *path)
126pick_first_device(void)
127{ 166{
128 char *ret = NULL; 167 struct sk_usbhid *sk;
129 fido_dev_info_t *devlist = NULL;
130 size_t olen = 0;
131 int r; 168 int r;
132 const fido_dev_info_t *di;
133 169
134 if ((devlist = fido_dev_info_new(1)) == NULL) { 170 if (path == NULL) {
135 skdebug(__func__, "fido_dev_info_new failed"); 171 skdebug(__func__, "path == NULL");
136 goto out; 172 return NULL;
137 } 173 }
138 if ((r = fido_dev_info_manifest(devlist, 1, &olen)) != FIDO_OK) { 174 if ((sk = calloc(1, sizeof(*sk))) == NULL) {
139 skdebug(__func__, "fido_dev_info_manifest failed: %s", 175 skdebug(__func__, "calloc sk failed");
176 return NULL;
177 }
178 if ((sk->path = strdup(path)) == NULL) {
179 skdebug(__func__, "strdup path failed");
180 free(sk);
181 return NULL;
182 }
183 if ((sk->dev = fido_dev_new()) == NULL) {
184 skdebug(__func__, "fido_dev_new failed");
185 free(sk->path);
186 free(sk);
187 return NULL;
188 }
189 if ((r = fido_dev_open(sk->dev, sk->path)) != FIDO_OK) {
190 skdebug(__func__, "fido_dev_open %s failed: %s", sk->path,
140 fido_strerr(r)); 191 fido_strerr(r));
141 goto out; 192 fido_dev_free(&sk->dev);
193 free(sk->path);
194 free(sk);
195 return NULL;
142 } 196 }
143 if (olen != 1) { 197 return sk;
144 skdebug(__func__, "fido_dev_info_manifest bad len %zu", olen); 198}
145 goto out; 199
200static void
201sk_close(struct sk_usbhid *sk)
202{
203 if (sk == NULL)
204 return;
205 fido_dev_cancel(sk->dev); /* cancel any pending operation */
206 fido_dev_close(sk->dev);
207 fido_dev_free(&sk->dev);
208 free(sk->path);
209 free(sk);
210}
211
212static struct sk_usbhid **
213sk_openv(const fido_dev_info_t *devlist, size_t ndevs, size_t *nopen)
214{
215 const fido_dev_info_t *di;
216 struct sk_usbhid **skv;
217 size_t i;
218
219 *nopen = 0;
220 if ((skv = calloc(ndevs, sizeof(*skv))) == NULL) {
221 skdebug(__func__, "calloc skv failed");
222 return NULL;
146 } 223 }
147 di = fido_dev_info_ptr(devlist, 0); 224 for (i = 0; i < ndevs; i++) {
148 if ((ret = strdup(fido_dev_info_path(di))) == NULL) { 225 if ((di = fido_dev_info_ptr(devlist, i)) == NULL)
149 skdebug(__func__, "fido_dev_info_path failed"); 226 skdebug(__func__, "fido_dev_info_ptr failed");
150 goto out; 227 else if ((skv[*nopen] = sk_open(fido_dev_info_path(di))) == NULL)
228 skdebug(__func__, "sk_open failed");
229 else
230 (*nopen)++;
151 } 231 }
152 out: 232 if (*nopen == 0) {
153 fido_dev_info_free(&devlist, 1); 233 for (i = 0; i < ndevs; i++)
154 return ret; 234 sk_close(skv[i]);
235 free(skv);
236 skv = NULL;
237 }
238
239 return skv;
240}
241
242static void
243sk_closev(struct sk_usbhid **skv, size_t nsk)
244{
245 size_t i;
246
247 for (i = 0; i < nsk; i++)
248 sk_close(skv[i]);
249 free(skv);
155} 250}
156 251
157/* Check if the specified key handle exists on a given device. */
158static int 252static int
159try_device(fido_dev_t *dev, const uint8_t *message, size_t message_len, 253sk_touch_begin(struct sk_usbhid **skv, size_t nsk)
160 const char *application, const uint8_t *key_handle, size_t key_handle_len) 254{
255 size_t i, ok = 0;
256 int r;
257
258 for (i = 0; i < nsk; i++)
259 if ((r = fido_dev_get_touch_begin(skv[i]->dev)) != FIDO_OK)
260 skdebug(__func__, "fido_dev_get_touch_begin %s failed:"
261 " %s", skv[i]->path, fido_strerr(r));
262 else
263 ok++;
264
265 return ok ? 0 : -1;
266}
267
268static int
269sk_touch_poll(struct sk_usbhid **skv, size_t nsk, int *touch, size_t *idx)
270{
271 struct timespec ts_pause;
272 size_t npoll, i;
273 int r;
274
275 ts_pause.tv_sec = 0;
276 ts_pause.tv_nsec = POLL_SLEEP_NS;
277 nanosleep(&ts_pause, NULL);
278 npoll = nsk;
279 for (i = 0; i < nsk; i++) {
280 if (skv[i] == NULL)
281 continue; /* device discarded */
282 skdebug(__func__, "polling %s", skv[i]->path);
283 if ((r = fido_dev_get_touch_status(skv[i]->dev, touch,
284 FIDO_POLL_MS)) != FIDO_OK) {
285 skdebug(__func__, "fido_dev_get_touch_status %s: %s",
286 skv[i]->path, fido_strerr(r));
287 sk_close(skv[i]); /* discard device */
288 skv[i] = NULL;
289 if (--npoll == 0) {
290 skdebug(__func__, "no device left to poll");
291 return -1;
292 }
293 } else if (*touch) {
294 *idx = i;
295 return 0;
296 }
297 }
298 *touch = 0;
299 return 0;
300}
301
302/* Calculate SHA256(m) */
303static int
304sha256_mem(const void *m, size_t mlen, u_char *d, size_t dlen)
305{
306#ifdef WITH_OPENSSL
307 u_int mdlen;
308#endif
309
310 if (dlen != 32)
311 return -1;
312#ifdef WITH_OPENSSL
313 mdlen = dlen;
314 if (!EVP_Digest(m, mlen, d, &mdlen, EVP_sha256(), NULL))
315 return -1;
316#else
317 SHA256Data(m, mlen, d);
318#endif
319 return 0;
320}
321
322/* Check if the specified key handle exists on a given sk. */
323static int
324sk_try(const struct sk_usbhid *sk, const char *application,
325 const uint8_t *key_handle, size_t key_handle_len)
161{ 326{
162 fido_assert_t *assert = NULL; 327 fido_assert_t *assert = NULL;
328 /* generate an invalid signature on FIDO2 tokens */
329 const char *data = "";
330 uint8_t message[32];
163 int r = FIDO_ERR_INTERNAL; 331 int r = FIDO_ERR_INTERNAL;
164 332
333 if (sha256_mem(data, strlen(data), message, sizeof(message)) != 0) {
334 skdebug(__func__, "hash message failed");
335 goto out;
336 }
165 if ((assert = fido_assert_new()) == NULL) { 337 if ((assert = fido_assert_new()) == NULL) {
166 skdebug(__func__, "fido_assert_new failed"); 338 skdebug(__func__, "fido_assert_new failed");
167 goto out; 339 goto out;
168 } 340 }
169 if ((r = fido_assert_set_clientdata_hash(assert, message, 341 if ((r = fido_assert_set_clientdata_hash(assert, message,
170 message_len)) != FIDO_OK) { 342 sizeof(message))) != FIDO_OK) {
171 skdebug(__func__, "fido_assert_set_clientdata_hash: %s", 343 skdebug(__func__, "fido_assert_set_clientdata_hash: %s",
172 fido_strerr(r)); 344 fido_strerr(r));
173 goto out; 345 goto out;
@@ -185,7 +357,7 @@ try_device(fido_dev_t *dev, const uint8_t *message, size_t message_len,
185 skdebug(__func__, "fido_assert_up: %s", fido_strerr(r)); 357 skdebug(__func__, "fido_assert_up: %s", fido_strerr(r));
186 goto out; 358 goto out;
187 } 359 }
188 r = fido_dev_get_assert(dev, assert, NULL); 360 r = fido_dev_get_assert(sk->dev, assert, NULL);
189 skdebug(__func__, "fido_dev_get_assert: %s", fido_strerr(r)); 361 skdebug(__func__, "fido_dev_get_assert: %s", fido_strerr(r));
190 if (r == FIDO_ERR_USER_PRESENCE_REQUIRED) { 362 if (r == FIDO_ERR_USER_PRESENCE_REQUIRED) {
191 /* U2F tokens may return this */ 363 /* U2F tokens may return this */
@@ -197,76 +369,122 @@ try_device(fido_dev_t *dev, const uint8_t *message, size_t message_len,
197 return r != FIDO_OK ? -1 : 0; 369 return r != FIDO_OK ? -1 : 0;
198} 370}
199 371
200/* Iterate over configured devices looking for a specific key handle */ 372static struct sk_usbhid *
201static fido_dev_t * 373sk_select_by_cred(const fido_dev_info_t *devlist, size_t ndevs,
202find_device(const char *path, const uint8_t *message, size_t message_len,
203 const char *application, const uint8_t *key_handle, size_t key_handle_len) 374 const char *application, const uint8_t *key_handle, size_t key_handle_len)
204{ 375{
205 fido_dev_info_t *devlist = NULL; 376 struct sk_usbhid **skv, *sk;
206 fido_dev_t *dev = NULL; 377 size_t skvcnt, i;
207 size_t devlist_len = 0, i;
208 int r;
209 378
210 if (path != NULL) { 379 if ((skv = sk_openv(devlist, ndevs, &skvcnt)) == NULL) {
211 if ((dev = fido_dev_new()) == NULL) { 380 skdebug(__func__, "sk_openv failed");
212 skdebug(__func__, "fido_dev_new failed"); 381 return NULL;
213 return NULL; 382 }
214 } 383 if (skvcnt == 1) {
215 if ((r = fido_dev_open(dev, path)) != FIDO_OK) { 384 sk = skv[0];
216 skdebug(__func__, "fido_dev_open failed"); 385 skv[0] = NULL;
217 fido_dev_free(&dev); 386 goto out;
218 return NULL; 387 }
388 sk = NULL;
389 for (i = 0; i < skvcnt; i++) {
390 if (sk_try(skv[i], application, key_handle,
391 key_handle_len) == 0) {
392 sk = skv[i];
393 skv[i] = NULL;
394 skdebug(__func__, "found key in %s", sk->path);
395 break;
219 } 396 }
220 return dev;
221 } 397 }
398 out:
399 sk_closev(skv, skvcnt);
400 return sk;
401}
222 402
223 if ((devlist = fido_dev_info_new(MAX_FIDO_DEVICES)) == NULL) { 403static struct sk_usbhid *
224 skdebug(__func__, "fido_dev_info_new failed"); 404sk_select_by_touch(const fido_dev_info_t *devlist, size_t ndevs)
405{
406 struct sk_usbhid **skv, *sk;
407 struct timeval tv_start, tv_now, tv_delta;
408 size_t skvcnt, idx;
409 int touch, ms_remain;
410
411 if ((skv = sk_openv(devlist, ndevs, &skvcnt)) == NULL) {
412 skdebug(__func__, "sk_openv failed");
413 return NULL;
414 }
415 sk = NULL;
416 if (skvcnt < 2) {
417 if (skvcnt == 1) {
418 /* single candidate */
419 sk = skv[0];
420 skv[0] = NULL;
421 }
225 goto out; 422 goto out;
226 } 423 }
227 if ((r = fido_dev_info_manifest(devlist, MAX_FIDO_DEVICES, 424#ifndef HAVE_FIDO_DEV_GET_TOUCH_STATUS
228 &devlist_len)) != FIDO_OK) { 425 skdebug(__func__, "libfido2 version does not support a feature needed for multiple tokens. Please upgrade to >=1.5.0");
229 skdebug(__func__, "fido_dev_info_manifest: %s", fido_strerr(r)); 426 goto out;
427#endif
428
429 if (sk_touch_begin(skv, skvcnt) == -1) {
430 skdebug(__func__, "sk_touch_begin failed");
230 goto out; 431 goto out;
231 } 432 }
232 433 monotime_tv(&tv_start);
233 skdebug(__func__, "found %zu device(s)", devlist_len); 434 do {
234 435 if (sk_touch_poll(skv, skvcnt, &touch, &idx) == -1) {
235 for (i = 0; i < devlist_len; i++) { 436 skdebug(__func__, "sk_touch_poll failed");
236 const fido_dev_info_t *di = fido_dev_info_ptr(devlist, i); 437 goto out;
237
238 if (di == NULL) {
239 skdebug(__func__, "fido_dev_info_ptr %zu failed", i);
240 continue;
241 }
242 if ((path = fido_dev_info_path(di)) == NULL) {
243 skdebug(__func__, "fido_dev_info_path %zu failed", i);
244 continue;
245 }
246 skdebug(__func__, "trying device %zu: %s", i, path);
247 if ((dev = fido_dev_new()) == NULL) {
248 skdebug(__func__, "fido_dev_new failed");
249 continue;
250 }
251 if ((r = fido_dev_open(dev, path)) != FIDO_OK) {
252 skdebug(__func__, "fido_dev_open failed");
253 fido_dev_free(&dev);
254 continue;
255 } 438 }
256 if (try_device(dev, message, message_len, application, 439 if (touch) {
257 key_handle, key_handle_len) == 0) { 440 sk = skv[idx];
258 skdebug(__func__, "found key"); 441 skv[idx] = NULL;
259 break; 442 goto out;
260 } 443 }
261 fido_dev_close(dev); 444 monotime_tv(&tv_now);
262 fido_dev_free(&dev); 445 timersub(&tv_now, &tv_start, &tv_delta);
263 } 446 ms_remain = SELECT_MS - tv_delta.tv_sec * 1000 -
447 tv_delta.tv_usec / 1000;
448 } while (ms_remain >= FIDO_POLL_MS);
449 skdebug(__func__, "timeout");
450out:
451 sk_closev(skv, skvcnt);
452 return sk;
453}
264 454
265 out: 455static struct sk_usbhid *
266 if (devlist != NULL) 456sk_probe(const char *application, const uint8_t *key_handle,
267 fido_dev_info_free(&devlist, MAX_FIDO_DEVICES); 457 size_t key_handle_len)
458{
459 struct sk_usbhid *sk;
460 fido_dev_info_t *devlist;
461 size_t ndevs;
462 int r;
268 463
269 return dev; 464 if ((devlist = fido_dev_info_new(MAX_FIDO_DEVICES)) == NULL) {
465 skdebug(__func__, "fido_dev_info_new failed");
466 return NULL;
467 }
468 if ((r = fido_dev_info_manifest(devlist, MAX_FIDO_DEVICES,
469 &ndevs)) != FIDO_OK) {
470 skdebug(__func__, "fido_dev_info_manifest failed: %s",
471 fido_strerr(r));
472 fido_dev_info_free(&devlist, MAX_FIDO_DEVICES);
473 return NULL;
474 }
475 skdebug(__func__, "%zu device(s) detected", ndevs);
476 if (ndevs == 0) {
477 sk = NULL;
478 } else if (application != NULL && key_handle != NULL) {
479 skdebug(__func__, "selecting sk by cred");
480 sk = sk_select_by_cred(devlist, ndevs, application, key_handle,
481 key_handle_len);
482 } else {
483 skdebug(__func__, "selecting sk by touch");
484 sk = sk_select_by_touch(devlist, ndevs);
485 }
486 fido_dev_info_free(&devlist, MAX_FIDO_DEVICES);
487 return sk;
270} 488}
271 489
272#ifdef WITH_OPENSSL 490#ifdef WITH_OPENSSL
@@ -449,29 +667,29 @@ sk_enroll(uint32_t alg, const uint8_t *challenge, size_t challenge_len,
449 struct sk_option **options, struct sk_enroll_response **enroll_response) 667 struct sk_option **options, struct sk_enroll_response **enroll_response)
450{ 668{
451 fido_cred_t *cred = NULL; 669 fido_cred_t *cred = NULL;
452 fido_dev_t *dev = NULL;
453 const uint8_t *ptr; 670 const uint8_t *ptr;
454 uint8_t user_id[32]; 671 uint8_t user_id[32];
672 struct sk_usbhid *sk = NULL;
455 struct sk_enroll_response *response = NULL; 673 struct sk_enroll_response *response = NULL;
456 size_t len; 674 size_t len;
675 int credprot;
457 int cose_alg; 676 int cose_alg;
458 int ret = SSH_SK_ERR_GENERAL; 677 int ret = SSH_SK_ERR_GENERAL;
459 int r; 678 int r;
460 char *device = NULL; 679 char *device = NULL;
461 680
462#ifdef SK_DEBUG 681 fido_init(SSH_FIDO_INIT_ARG);
463 fido_init(FIDO_DEBUG); 682
464#endif
465 if (enroll_response == NULL) { 683 if (enroll_response == NULL) {
466 skdebug(__func__, "enroll_response == NULL"); 684 skdebug(__func__, "enroll_response == NULL");
467 goto out; 685 goto out;
468 } 686 }
687 *enroll_response = NULL;
469 memset(user_id, 0, sizeof(user_id)); 688 memset(user_id, 0, sizeof(user_id));
470 if (check_enroll_options(options, &device, 689 if (check_enroll_options(options, &device, user_id,
471 user_id, sizeof(user_id)) != 0) 690 sizeof(user_id)) != 0)
472 goto out; /* error already logged */ 691 goto out; /* error already logged */
473 692
474 *enroll_response = NULL;
475 switch(alg) { 693 switch(alg) {
476#ifdef WITH_OPENSSL 694#ifdef WITH_OPENSSL
477 case SSH_SK_ECDSA: 695 case SSH_SK_ECDSA:
@@ -485,12 +703,15 @@ sk_enroll(uint32_t alg, const uint8_t *challenge, size_t challenge_len,
485 skdebug(__func__, "unsupported key type %d", alg); 703 skdebug(__func__, "unsupported key type %d", alg);
486 goto out; 704 goto out;
487 } 705 }
488 if (device == NULL && (device = pick_first_device()) == NULL) { 706 if (device != NULL)
489 ret = SSH_SK_ERR_DEVICE_NOT_FOUND; 707 sk = sk_open(device);
490 skdebug(__func__, "pick_first_device failed"); 708 else
709 sk = sk_probe(NULL, NULL, 0);
710 if (sk == NULL) {
711 skdebug(__func__, "failed to find sk");
491 goto out; 712 goto out;
492 } 713 }
493 skdebug(__func__, "using device %s", device); 714 skdebug(__func__, "using device %s", sk->path);
494 if ((cred = fido_cred_new()) == NULL) { 715 if ((cred = fido_cred_new()) == NULL) {
495 skdebug(__func__, "fido_cred_new failed"); 716 skdebug(__func__, "fido_cred_new failed");
496 goto out; 717 goto out;
@@ -519,15 +740,34 @@ sk_enroll(uint32_t alg, const uint8_t *challenge, size_t challenge_len,
519 skdebug(__func__, "fido_cred_set_rp: %s", fido_strerr(r)); 740 skdebug(__func__, "fido_cred_set_rp: %s", fido_strerr(r));
520 goto out; 741 goto out;
521 } 742 }
522 if ((dev = fido_dev_new()) == NULL) { 743 if ((flags & (SSH_SK_RESIDENT_KEY|SSH_SK_USER_VERIFICATION_REQD)) != 0) {
523 skdebug(__func__, "fido_dev_new failed"); 744#if !defined(HAVE_FIDO_DEV_SUPPORTS_CRED_PROT) || \
524 goto out; 745 !defined(HAVE_FIDO_CRED_SET_PROT)
525 } 746 skdebug(__func__, "libfido2 version does not support a feature required for this operation. Please upgrade to >=1.5.0");
526 if ((r = fido_dev_open(dev, device)) != FIDO_OK) { 747 ret = SSH_SK_ERR_UNSUPPORTED;
527 skdebug(__func__, "fido_dev_open: %s", fido_strerr(r));
528 goto out; 748 goto out;
749 credprot = 0; (void)credprot; /* avoid warning */
750#endif
751 if (!fido_dev_supports_cred_prot(sk->dev)) {
752 skdebug(__func__, "%s does not support credprot, "
753 "refusing to create unprotected "
754 "resident/verify-required key", sk->path);
755 ret = SSH_SK_ERR_UNSUPPORTED;
756 goto out;
757 }
758 if ((flags & SSH_SK_USER_VERIFICATION_REQD))
759 credprot = FIDO_CRED_PROT_UV_REQUIRED;
760 else
761 credprot = FIDO_CRED_PROT_UV_OPTIONAL_WITH_ID;
762
763 if ((r = fido_cred_set_prot(cred, credprot)) != FIDO_OK) {
764 skdebug(__func__, "fido_cred_set_prot: %s",
765 fido_strerr(r));
766 ret = fidoerr_to_skerr(r);
767 goto out;
768 }
529 } 769 }
530 if ((r = fido_dev_make_cred(dev, cred, pin)) != FIDO_OK) { 770 if ((r = fido_dev_make_cred(sk->dev, cred, pin)) != FIDO_OK) {
531 skdebug(__func__, "fido_dev_make_cred: %s", fido_strerr(r)); 771 skdebug(__func__, "fido_dev_make_cred: %s", fido_strerr(r));
532 ret = fidoerr_to_skerr(r); 772 ret = fidoerr_to_skerr(r);
533 goto out; 773 goto out;
@@ -582,6 +822,16 @@ sk_enroll(uint32_t alg, const uint8_t *challenge, size_t challenge_len,
582 memcpy(response->attestation_cert, ptr, len); 822 memcpy(response->attestation_cert, ptr, len);
583 response->attestation_cert_len = len; 823 response->attestation_cert_len = len;
584 } 824 }
825 if ((ptr = fido_cred_authdata_ptr(cred)) != NULL) {
826 len = fido_cred_authdata_len(cred);
827 debug3("%s: authdata len=%zu", __func__, len);
828 if ((response->authdata = calloc(1, len)) == NULL) {
829 skdebug(__func__, "calloc authdata failed");
830 goto out;
831 }
832 memcpy(response->authdata, ptr, len);
833 response->authdata_len = len;
834 }
585 *enroll_response = response; 835 *enroll_response = response;
586 response = NULL; 836 response = NULL;
587 ret = 0; 837 ret = 0;
@@ -592,15 +842,11 @@ sk_enroll(uint32_t alg, const uint8_t *challenge, size_t challenge_len,
592 free(response->key_handle); 842 free(response->key_handle);
593 free(response->signature); 843 free(response->signature);
594 free(response->attestation_cert); 844 free(response->attestation_cert);
845 free(response->authdata);
595 free(response); 846 free(response);
596 } 847 }
597 if (dev != NULL) { 848 sk_close(sk);
598 fido_dev_close(dev); 849 fido_cred_free(&cred);
599 fido_dev_free(&dev);
600 }
601 if (cred != NULL) {
602 fido_cred_free(&cred);
603 }
604 return ret; 850 return ret;
605} 851}
606 852
@@ -714,26 +960,6 @@ check_sign_load_resident_options(struct sk_option **options, char **devicep)
714 return 0; 960 return 0;
715} 961}
716 962
717/* Calculate SHA256(m) */
718static int
719sha256_mem(const void *m, size_t mlen, u_char *d, size_t dlen)
720{
721#ifdef WITH_OPENSSL
722 u_int mdlen;
723#endif
724
725 if (dlen != 32)
726 return -1;
727#ifdef WITH_OPENSSL
728 mdlen = dlen;
729 if (!EVP_Digest(m, mlen, d, &mdlen, EVP_sha256(), NULL))
730 return -1;
731#else
732 SHA256Data(m, mlen, d);
733#endif
734 return 0;
735}
736
737int 963int
738sk_sign(uint32_t alg, const uint8_t *data, size_t datalen, 964sk_sign(uint32_t alg, const uint8_t *data, size_t datalen,
739 const char *application, 965 const char *application,
@@ -743,15 +969,13 @@ sk_sign(uint32_t alg, const uint8_t *data, size_t datalen,
743{ 969{
744 fido_assert_t *assert = NULL; 970 fido_assert_t *assert = NULL;
745 char *device = NULL; 971 char *device = NULL;
746 fido_dev_t *dev = NULL; 972 struct sk_usbhid *sk = NULL;
747 struct sk_sign_response *response = NULL; 973 struct sk_sign_response *response = NULL;
748 uint8_t message[32]; 974 uint8_t message[32];
749 int ret = SSH_SK_ERR_GENERAL; 975 int ret = SSH_SK_ERR_GENERAL;
750 int r; 976 int r;
751 977
752#ifdef SK_DEBUG 978 fido_init(SSH_FIDO_INIT_ARG);
753 fido_init(FIDO_DEBUG);
754#endif
755 979
756 if (sign_response == NULL) { 980 if (sign_response == NULL) {
757 skdebug(__func__, "sign_response == NULL"); 981 skdebug(__func__, "sign_response == NULL");
@@ -765,9 +989,14 @@ sk_sign(uint32_t alg, const uint8_t *data, size_t datalen,
765 skdebug(__func__, "hash message failed"); 989 skdebug(__func__, "hash message failed");
766 goto out; 990 goto out;
767 } 991 }
768 if ((dev = find_device(device, message, sizeof(message), 992 if (device != NULL)
769 application, key_handle, key_handle_len)) == NULL) { 993 sk = sk_open(device);
770 skdebug(__func__, "couldn't find device for key handle"); 994 else if (pin != NULL || (flags & SSH_SK_USER_VERIFICATION_REQD))
995 sk = sk_probe(NULL, NULL, 0);
996 else
997 sk = sk_probe(application, key_handle, key_handle_len);
998 if (sk == NULL) {
999 skdebug(__func__, "failed to find sk");
771 goto out; 1000 goto out;
772 } 1001 }
773 if ((assert = fido_assert_new()) == NULL) { 1002 if ((assert = fido_assert_new()) == NULL) {
@@ -795,8 +1024,15 @@ sk_sign(uint32_t alg, const uint8_t *data, size_t datalen,
795 skdebug(__func__, "fido_assert_set_up: %s", fido_strerr(r)); 1024 skdebug(__func__, "fido_assert_set_up: %s", fido_strerr(r));
796 goto out; 1025 goto out;
797 } 1026 }
798 if ((r = fido_dev_get_assert(dev, assert, NULL)) != FIDO_OK) { 1027 if (pin == NULL && (flags & SSH_SK_USER_VERIFICATION_REQD) &&
1028 (r = fido_assert_set_uv(assert, FIDO_OPT_TRUE)) != FIDO_OK) {
1029 skdebug(__func__, "fido_assert_set_uv: %s", fido_strerr(r));
1030 ret = FIDO_ERR_PIN_REQUIRED;
1031 goto out;
1032 }
1033 if ((r = fido_dev_get_assert(sk->dev, assert, pin)) != FIDO_OK) {
799 skdebug(__func__, "fido_dev_get_assert: %s", fido_strerr(r)); 1034 skdebug(__func__, "fido_dev_get_assert: %s", fido_strerr(r));
1035 ret = fidoerr_to_skerr(r);
800 goto out; 1036 goto out;
801 } 1037 }
802 if ((response = calloc(1, sizeof(*response))) == NULL) { 1038 if ((response = calloc(1, sizeof(*response))) == NULL) {
@@ -820,22 +1056,16 @@ sk_sign(uint32_t alg, const uint8_t *data, size_t datalen,
820 free(response->sig_s); 1056 free(response->sig_s);
821 free(response); 1057 free(response);
822 } 1058 }
823 if (dev != NULL) { 1059 sk_close(sk);
824 fido_dev_close(dev); 1060 fido_assert_free(&assert);
825 fido_dev_free(&dev);
826 }
827 if (assert != NULL) {
828 fido_assert_free(&assert);
829 }
830 return ret; 1061 return ret;
831} 1062}
832 1063
833static int 1064static int
834read_rks(const char *devpath, const char *pin, 1065read_rks(struct sk_usbhid *sk, const char *pin,
835 struct sk_resident_key ***rksp, size_t *nrksp) 1066 struct sk_resident_key ***rksp, size_t *nrksp)
836{ 1067{
837 int ret = SSH_SK_ERR_GENERAL, r = -1; 1068 int ret = SSH_SK_ERR_GENERAL, r = -1;
838 fido_dev_t *dev = NULL;
839 fido_credman_metadata_t *metadata = NULL; 1069 fido_credman_metadata_t *metadata = NULL;
840 fido_credman_rp_t *rp = NULL; 1070 fido_credman_rp_t *rp = NULL;
841 fido_credman_rk_t *rk = NULL; 1071 fido_credman_rk_t *rk = NULL;
@@ -843,30 +1073,25 @@ read_rks(const char *devpath, const char *pin,
843 const fido_cred_t *cred; 1073 const fido_cred_t *cred;
844 struct sk_resident_key *srk = NULL, **tmp; 1074 struct sk_resident_key *srk = NULL, **tmp;
845 1075
846 if ((dev = fido_dev_new()) == NULL) { 1076 if (pin == NULL) {
847 skdebug(__func__, "fido_dev_new failed"); 1077 skdebug(__func__, "no PIN specified");
848 return ret; 1078 ret = SSH_SK_ERR_PIN_REQUIRED;
849 } 1079 goto out;
850 if ((r = fido_dev_open(dev, devpath)) != FIDO_OK) {
851 skdebug(__func__, "fido_dev_open %s failed: %s",
852 devpath, fido_strerr(r));
853 fido_dev_free(&dev);
854 return ret;
855 } 1080 }
856 if ((metadata = fido_credman_metadata_new()) == NULL) { 1081 if ((metadata = fido_credman_metadata_new()) == NULL) {
857 skdebug(__func__, "alloc failed"); 1082 skdebug(__func__, "alloc failed");
858 goto out; 1083 goto out;
859 } 1084 }
860 1085
861 if ((r = fido_credman_get_dev_metadata(dev, metadata, pin)) != 0) { 1086 if ((r = fido_credman_get_dev_metadata(sk->dev, metadata, pin)) != 0) {
862 if (r == FIDO_ERR_INVALID_COMMAND) { 1087 if (r == FIDO_ERR_INVALID_COMMAND) {
863 skdebug(__func__, "device %s does not support " 1088 skdebug(__func__, "device %s does not support "
864 "resident keys", devpath); 1089 "resident keys", sk->path);
865 ret = 0; 1090 ret = 0;
866 goto out; 1091 goto out;
867 } 1092 }
868 skdebug(__func__, "get metadata for %s failed: %s", 1093 skdebug(__func__, "get metadata for %s failed: %s",
869 devpath, fido_strerr(r)); 1094 sk->path, fido_strerr(r));
870 ret = fidoerr_to_skerr(r); 1095 ret = fidoerr_to_skerr(r);
871 goto out; 1096 goto out;
872 } 1097 }
@@ -877,14 +1102,14 @@ read_rks(const char *devpath, const char *pin,
877 skdebug(__func__, "alloc rp failed"); 1102 skdebug(__func__, "alloc rp failed");
878 goto out; 1103 goto out;
879 } 1104 }
880 if ((r = fido_credman_get_dev_rp(dev, rp, pin)) != 0) { 1105 if ((r = fido_credman_get_dev_rp(sk->dev, rp, pin)) != 0) {
881 skdebug(__func__, "get RPs for %s failed: %s", 1106 skdebug(__func__, "get RPs for %s failed: %s",
882 devpath, fido_strerr(r)); 1107 sk->path, fido_strerr(r));
883 goto out; 1108 goto out;
884 } 1109 }
885 nrp = fido_credman_rp_count(rp); 1110 nrp = fido_credman_rp_count(rp);
886 skdebug(__func__, "Device %s has resident keys for %zu RPs", 1111 skdebug(__func__, "Device %s has resident keys for %zu RPs",
887 devpath, nrp); 1112 sk->path, nrp);
888 1113
889 /* Iterate over RP IDs that have resident keys */ 1114 /* Iterate over RP IDs that have resident keys */
890 for (i = 0; i < nrp; i++) { 1115 for (i = 0; i < nrp; i++) {
@@ -901,10 +1126,10 @@ read_rks(const char *devpath, const char *pin,
901 skdebug(__func__, "alloc rk failed"); 1126 skdebug(__func__, "alloc rk failed");
902 goto out; 1127 goto out;
903 } 1128 }
904 if ((r = fido_credman_get_dev_rk(dev, fido_credman_rp_id(rp, i), 1129 if ((r = fido_credman_get_dev_rk(sk->dev,
905 rk, pin)) != 0) { 1130 fido_credman_rp_id(rp, i), rk, pin)) != 0) {
906 skdebug(__func__, "get RKs for %s slot %zu failed: %s", 1131 skdebug(__func__, "get RKs for %s slot %zu failed: %s",
907 devpath, i, fido_strerr(r)); 1132 sk->path, i, fido_strerr(r));
908 goto out; 1133 goto out;
909 } 1134 }
910 nrk = fido_credman_rk_count(rk); 1135 nrk = fido_credman_rk_count(rk);
@@ -918,8 +1143,9 @@ read_rks(const char *devpath, const char *pin,
918 continue; 1143 continue;
919 } 1144 }
920 skdebug(__func__, "Device %s RP \"%s\" slot %zu: " 1145 skdebug(__func__, "Device %s RP \"%s\" slot %zu: "
921 "type %d", devpath, fido_credman_rp_id(rp, i), j, 1146 "type %d flags 0x%02x prot 0x%02x", sk->path,
922 fido_cred_type(cred)); 1147 fido_credman_rp_id(rp, i), j, fido_cred_type(cred),
1148 fido_cred_flags(cred), fido_cred_prot(cred));
923 1149
924 /* build response entry */ 1150 /* build response entry */
925 if ((srk = calloc(1, sizeof(*srk))) == NULL || 1151 if ((srk = calloc(1, sizeof(*srk))) == NULL ||
@@ -932,8 +1158,7 @@ read_rks(const char *devpath, const char *pin,
932 } 1158 }
933 1159
934 srk->key.key_handle_len = fido_cred_id_len(cred); 1160 srk->key.key_handle_len = fido_cred_id_len(cred);
935 memcpy(srk->key.key_handle, 1161 memcpy(srk->key.key_handle, fido_cred_id_ptr(cred),
936 fido_cred_id_ptr(cred),
937 srk->key.key_handle_len); 1162 srk->key.key_handle_len);
938 1163
939 switch (fido_cred_type(cred)) { 1164 switch (fido_cred_type(cred)) {
@@ -949,6 +1174,9 @@ read_rks(const char *devpath, const char *pin,
949 goto out; /* XXX free rk and continue */ 1174 goto out; /* XXX free rk and continue */
950 } 1175 }
951 1176
1177 if (fido_cred_prot(cred) == FIDO_CRED_PROT_UV_REQUIRED)
1178 srk->flags |= SSH_SK_USER_VERIFICATION_REQD;
1179
952 if ((r = pack_public_key(srk->alg, cred, 1180 if ((r = pack_public_key(srk->alg, cred,
953 &srk->key)) != 0) { 1181 &srk->key)) != 0) {
954 skdebug(__func__, "pack public key failed"); 1182 skdebug(__func__, "pack public key failed");
@@ -976,8 +1204,6 @@ read_rks(const char *devpath, const char *pin,
976 } 1204 }
977 fido_credman_rp_free(&rp); 1205 fido_credman_rp_free(&rp);
978 fido_credman_rk_free(&rk); 1206 fido_credman_rk_free(&rk);
979 fido_dev_close(dev);
980 fido_dev_free(&dev);
981 fido_credman_metadata_free(&metadata); 1207 fido_credman_metadata_free(&metadata);
982 return ret; 1208 return ret;
983} 1209}
@@ -987,50 +1213,31 @@ sk_load_resident_keys(const char *pin, struct sk_option **options,
987 struct sk_resident_key ***rksp, size_t *nrksp) 1213 struct sk_resident_key ***rksp, size_t *nrksp)
988{ 1214{
989 int ret = SSH_SK_ERR_GENERAL, r = -1; 1215 int ret = SSH_SK_ERR_GENERAL, r = -1;
990 fido_dev_info_t *devlist = NULL; 1216 size_t i, nrks = 0;
991 size_t i, ndev = 0, nrks = 0;
992 const fido_dev_info_t *di;
993 struct sk_resident_key **rks = NULL; 1217 struct sk_resident_key **rks = NULL;
1218 struct sk_usbhid *sk = NULL;
994 char *device = NULL; 1219 char *device = NULL;
1220
995 *rksp = NULL; 1221 *rksp = NULL;
996 *nrksp = 0; 1222 *nrksp = 0;
997 1223
1224 fido_init(SSH_FIDO_INIT_ARG);
1225
998 if (check_sign_load_resident_options(options, &device) != 0) 1226 if (check_sign_load_resident_options(options, &device) != 0)
999 goto out; /* error already logged */ 1227 goto out; /* error already logged */
1000 if (device != NULL) { 1228 if (device != NULL)
1001 skdebug(__func__, "trying %s", device); 1229 sk = sk_open(device);
1002 if ((r = read_rks(device, pin, &rks, &nrks)) != 0) { 1230 else
1003 skdebug(__func__, "read_rks failed for %s", device); 1231 sk = sk_probe(NULL, NULL, 0);
1004 ret = r; 1232 if (sk == NULL) {
1005 goto out; 1233 skdebug(__func__, "failed to find sk");
1006 } 1234 goto out;
1007 } else { 1235 }
1008 /* Try all devices */ 1236 skdebug(__func__, "trying %s", sk->path);
1009 if ((devlist = fido_dev_info_new(MAX_FIDO_DEVICES)) == NULL) { 1237 if ((r = read_rks(sk, pin, &rks, &nrks)) != 0) {
1010 skdebug(__func__, "fido_dev_info_new failed"); 1238 skdebug(__func__, "read_rks failed for %s", sk->path);
1011 goto out; 1239 ret = r;
1012 } 1240 goto out;
1013 if ((r = fido_dev_info_manifest(devlist,
1014 MAX_FIDO_DEVICES, &ndev)) != FIDO_OK) {
1015 skdebug(__func__, "fido_dev_info_manifest failed: %s",
1016 fido_strerr(r));
1017 goto out;
1018 }
1019 for (i = 0; i < ndev; i++) {
1020 if ((di = fido_dev_info_ptr(devlist, i)) == NULL) {
1021 skdebug(__func__, "no dev info at %zu", i);
1022 continue;
1023 }
1024 skdebug(__func__, "trying %s", fido_dev_info_path(di));
1025 if ((r = read_rks(fido_dev_info_path(di), pin,
1026 &rks, &nrks)) != 0) {
1027 skdebug(__func__, "read_rks failed for %s",
1028 fido_dev_info_path(di));
1029 /* remember last error */
1030 ret = r;
1031 continue;
1032 }
1033 }
1034 } 1241 }
1035 /* success, unless we have no keys but a specific error */ 1242 /* success, unless we have no keys but a specific error */
1036 if (nrks > 0 || ret == SSH_SK_ERR_GENERAL) 1243 if (nrks > 0 || ret == SSH_SK_ERR_GENERAL)
@@ -1040,7 +1247,7 @@ sk_load_resident_keys(const char *pin, struct sk_option **options,
1040 rks = NULL; 1247 rks = NULL;
1041 nrks = 0; 1248 nrks = 0;
1042 out: 1249 out:
1043 free(device); 1250 sk_close(sk);
1044 for (i = 0; i < nrks; i++) { 1251 for (i = 0; i < nrks; i++) {
1045 free(rks[i]->application); 1252 free(rks[i]->application);
1046 freezero(rks[i]->key.public_key, rks[i]->key.public_key_len); 1253 freezero(rks[i]->key.public_key, rks[i]->key.public_key_len);
@@ -1048,7 +1255,6 @@ sk_load_resident_keys(const char *pin, struct sk_option **options,
1048 freezero(rks[i], sizeof(*rks[i])); 1255 freezero(rks[i], sizeof(*rks[i]));
1049 } 1256 }
1050 free(rks); 1257 free(rks);
1051 fido_dev_info_free(&devlist, MAX_FIDO_DEVICES);
1052 return ret; 1258 return ret;
1053} 1259}
1054 1260
diff --git a/ssh-add.0 b/ssh-add.0
index 698f1b891..d73af0f43 100644
--- a/ssh-add.0
+++ b/ssh-add.0
@@ -43,7 +43,9 @@ DESCRIPTION
43 removed. Otherwise, the argument list will be interpreted as a 43 removed. Otherwise, the argument list will be interpreted as a
44 list of paths to public key files to specify keys and 44 list of paths to public key files to specify keys and
45 certificates to be removed from the agent. If no public key is 45 certificates to be removed from the agent. If no public key is
46 found at a given path, ssh-add will append .pub and retry. 46 found at a given path, ssh-add will append .pub and retry. If
47 the argument list consists of M-bM-^@M-^\-M-bM-^@M-^] then ssh-add will read public
48 keys to be removed from standard input.
47 49
48 -E fingerprint_hash 50 -E fingerprint_hash
49 Specifies the hash algorithm used when displaying key 51 Specifies the hash algorithm used when displaying key
@@ -93,16 +95,22 @@ DESCRIPTION
93 -x Lock the agent with a password. 95 -x Lock the agent with a password.
94 96
95ENVIRONMENT 97ENVIRONMENT
96 DISPLAY and SSH_ASKPASS 98 DISPLAY, SSH_ASKPASS and SSH_ASKPASS_REQUIRE
97 If ssh-add needs a passphrase, it will read the passphrase from 99 If ssh-add needs a passphrase, it will read the passphrase from
98 the current terminal if it was run from a terminal. If ssh-add 100 the current terminal if it was run from a terminal. If ssh-add
99 does not have a terminal associated with it but DISPLAY and 101 does not have a terminal associated with it but DISPLAY and
100 SSH_ASKPASS are set, it will execute the program specified by 102 SSH_ASKPASS are set, it will execute the program specified by
101 SSH_ASKPASS (by default M-bM-^@M-^\ssh-askpassM-bM-^@M-^]) and open an X11 window to 103 SSH_ASKPASS (by default M-bM-^@M-^\ssh-askpassM-bM-^@M-^]) and open an X11 window to
102 read the passphrase. This is particularly useful when calling 104 read the passphrase. This is particularly useful when calling
103 ssh-add from a .xsession or related script. (Note that on some 105 ssh-add from a .xsession or related script.
104 machines it may be necessary to redirect the input from /dev/null 106
105 to make this work.) 107 SSH_ASKPASS_REQUIRE allows further control over the use of an
108 askpass program. If this variable is set to M-bM-^@M-^\neverM-bM-^@M-^] then ssh-add
109 will never attempt to use one. If it is set to M-bM-^@M-^\preferM-bM-^@M-^], then
110 ssh-add will prefer to use the askpass program instead of the TTY
111 when requesting passwords. Finally, if the variable is set to
112 M-bM-^@M-^\forceM-bM-^@M-^], then the askpass program will be used for all passphrase
113 input regardless of whether DISPLAY is set.
106 114
107 SSH_AUTH_SOCK 115 SSH_AUTH_SOCK
108 Identifies the path of a UNIX-domain socket used to communicate 116 Identifies the path of a UNIX-domain socket used to communicate
@@ -141,4 +149,4 @@ AUTHORS
141 created OpenSSH. Markus Friedl contributed the support for SSH protocol 149 created OpenSSH. Markus Friedl contributed the support for SSH protocol
142 versions 1.5 and 2.0. 150 versions 1.5 and 2.0.
143 151
144OpenBSD 6.7 February 7, 2020 OpenBSD 6.7 152OpenBSD 6.8 July 14, 2020 OpenBSD 6.8
diff --git a/ssh-add.1 b/ssh-add.1
index 58d42138e..2786df514 100644
--- a/ssh-add.1
+++ b/ssh-add.1
@@ -1,4 +1,4 @@
1.\" $OpenBSD: ssh-add.1,v 1.79 2020/02/07 03:57:31 djm Exp $ 1.\" $OpenBSD: ssh-add.1,v 1.81 2020/07/14 23:57:01 djm Exp $
2.\" 2.\"
3.\" Author: Tatu Ylonen <ylo@cs.hut.fi> 3.\" Author: Tatu Ylonen <ylo@cs.hut.fi>
4.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -35,7 +35,7 @@
35.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 35.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
36.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 36.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37.\" 37.\"
38.Dd $Mdocdate: February 7 2020 $ 38.Dd $Mdocdate: July 14 2020 $
39.Dt SSH-ADD 1 39.Dt SSH-ADD 1
40.Os 40.Os
41.Sh NAME 41.Sh NAME
@@ -113,6 +113,11 @@ If no public key is found at a given path,
113will append 113will append
114.Pa .pub 114.Pa .pub
115and retry. 115and retry.
116If the argument list consists of
117.Dq -
118then
119.Nm
120will read public keys to be removed from standard input.
116.It Fl E Ar fingerprint_hash 121.It Fl E Ar fingerprint_hash
117Specifies the hash algorithm used when displaying key fingerprints. 122Specifies the hash algorithm used when displaying key fingerprints.
118Valid options are: 123Valid options are:
@@ -169,7 +174,7 @@ Lock the agent with a password.
169.El 174.El
170.Sh ENVIRONMENT 175.Sh ENVIRONMENT
171.Bl -tag -width Ds 176.Bl -tag -width Ds
172.It Ev "DISPLAY" and "SSH_ASKPASS" 177.It Ev "DISPLAY", "SSH_ASKPASS" and "SSH_ASKPASS_REQUIRE"
173If 178If
174.Nm 179.Nm
175needs a passphrase, it will read the passphrase from the current 180needs a passphrase, it will read the passphrase from the current
@@ -190,10 +195,26 @@ This is particularly useful when calling
190from a 195from a
191.Pa .xsession 196.Pa .xsession
192or related script. 197or related script.
193(Note that on some machines it 198.Pp
194may be necessary to redirect the input from 199.Ev SSH_ASKPASS_REQUIRE
195.Pa /dev/null 200allows further control over the use of an askpass program.
196to make this work.) 201If this variable is set to
202.Dq never
203then
204.Nm
205will never attempt to use one.
206If it is set to
207.Dq prefer ,
208then
209.Nm
210will prefer to use the askpass program instead of the TTY when requesting
211passwords.
212Finally, if the variable is set to
213.Dq force ,
214then the askpass program will be used for all passphrase input regardless
215of whether
216.Ev DISPLAY
217is set.
197.It Ev SSH_AUTH_SOCK 218.It Ev SSH_AUTH_SOCK
198Identifies the path of a 219Identifies the path of a
199.Ux Ns -domain 220.Ux Ns -domain
diff --git a/ssh-add.c b/ssh-add.c
index a40198ab5..936dc2128 100644
--- a/ssh-add.c
+++ b/ssh-add.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-add.c,v 1.155 2020/03/16 02:17:02 dtucker Exp $ */ 1/* $OpenBSD: ssh-add.c,v 1.157 2020/08/31 04:33:17 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -67,6 +67,7 @@
67#include "ssherr.h" 67#include "ssherr.h"
68#include "digest.h" 68#include "digest.h"
69#include "ssh-sk.h" 69#include "ssh-sk.h"
70#include "sk-api.h"
70 71
71/* argv0 */ 72/* argv0 */
72extern char *__progname; 73extern char *__progname;
@@ -111,25 +112,69 @@ clear_pass(void)
111} 112}
112 113
113static int 114static int
115delete_one(int agent_fd, const struct sshkey *key, const char *comment,
116 const char *path, int qflag)
117{
118 int r;
119
120 if ((r = ssh_remove_identity(agent_fd, key)) != 0) {
121 fprintf(stderr, "Could not remove identity \"%s\": %s\n",
122 path, ssh_err(r));
123 return r;
124 }
125 if (!qflag) {
126 fprintf(stderr, "Identity removed: %s %s (%s)\n", path,
127 sshkey_type(key), comment);
128 }
129 return 0;
130}
131
132static int
133delete_stdin(int agent_fd, int qflag)
134{
135 char *line = NULL, *cp;
136 size_t linesize = 0;
137 struct sshkey *key = NULL;
138 int lnum = 0, r, ret = -1;
139
140 while (getline(&line, &linesize, stdin) != -1) {
141 lnum++;
142 sshkey_free(key);
143 key = NULL;
144 line[strcspn(line, "\n")] = '\0';
145 cp = line + strspn(line, " \t");
146 if (*cp == '#' || *cp == '\0')
147 continue;
148 if ((key = sshkey_new(KEY_UNSPEC)) == NULL)
149 fatal("%s: sshkey_new", __func__);
150 if ((r = sshkey_read(key, &cp)) != 0) {
151 error("(stdin):%d: invalid key: %s", lnum, ssh_err(r));
152 continue;
153 }
154 if (delete_one(agent_fd, key, cp, "(stdin)", qflag) == 0)
155 ret = 0;
156 }
157 sshkey_free(key);
158 free(line);
159 return ret;
160}
161
162static int
114delete_file(int agent_fd, const char *filename, int key_only, int qflag) 163delete_file(int agent_fd, const char *filename, int key_only, int qflag)
115{ 164{
116 struct sshkey *public, *cert = NULL; 165 struct sshkey *public, *cert = NULL;
117 char *certpath = NULL, *comment = NULL; 166 char *certpath = NULL, *comment = NULL;
118 int r, ret = -1; 167 int r, ret = -1;
119 168
169 if (strcmp(filename, "-") == 0)
170 return delete_stdin(agent_fd, qflag);
171
120 if ((r = sshkey_load_public(filename, &public, &comment)) != 0) { 172 if ((r = sshkey_load_public(filename, &public, &comment)) != 0) {
121 printf("Bad key file %s: %s\n", filename, ssh_err(r)); 173 printf("Bad key file %s: %s\n", filename, ssh_err(r));
122 return -1; 174 return -1;
123 } 175 }
124 if ((r = ssh_remove_identity(agent_fd, public)) == 0) { 176 if (delete_one(agent_fd, public, comment, filename, qflag) == 0)
125 if (!qflag) {
126 fprintf(stderr, "Identity removed: %s (%s)\n",
127 filename, comment);
128 }
129 ret = 0; 177 ret = 0;
130 } else
131 fprintf(stderr, "Could not remove identity \"%s\": %s\n",
132 filename, ssh_err(r));
133 178
134 if (key_only) 179 if (key_only)
135 goto out; 180 goto out;
@@ -149,15 +194,8 @@ delete_file(int agent_fd, const char *filename, int key_only, int qflag)
149 fatal("Certificate %s does not match private key %s", 194 fatal("Certificate %s does not match private key %s",
150 certpath, filename); 195 certpath, filename);
151 196
152 if ((r = ssh_remove_identity(agent_fd, cert)) == 0) { 197 if (delete_one(agent_fd, cert, comment, certpath, qflag) == 0)
153 if (!qflag) {
154 fprintf(stderr, "Identity removed: %s (%s)\n",
155 certpath, comment);
156 }
157 ret = 0; 198 ret = 0;
158 } else
159 fprintf(stderr, "Could not remove identity \"%s\": %s\n",
160 certpath, ssh_err(r));
161 199
162 out: 200 out:
163 sshkey_free(cert); 201 sshkey_free(cert);
@@ -311,12 +349,20 @@ add_file(int agent_fd, const char *filename, int key_only, int qflag,
311 ssh_free_identitylist(idlist); 349 ssh_free_identitylist(idlist);
312 } 350 }
313 351
314 if (!sshkey_is_sk(private)) 352 if (sshkey_is_sk(private)) {
315 skprovider = NULL; /* Don't send constraint for other keys */ 353 if (skprovider == NULL) {
316 else if (skprovider == NULL) { 354 fprintf(stderr, "Cannot load FIDO key %s "
317 fprintf(stderr, "Cannot load authenticator-hosted key %s " 355 "without provider\n", filename);
318 "without provider\n", filename); 356 goto out;
319 goto out; 357 }
358 if ((private->sk_flags & SSH_SK_USER_VERIFICATION_REQD) != 0) {
359 fprintf(stderr, "FIDO verify-required key %s is not "
360 "currently supported by ssh-agent\n", filename);
361 goto out;
362 }
363 } else {
364 /* Don't send provider constraint for other keys */
365 skprovider = NULL;
320 } 366 }
321 367
322 if ((r = ssh_add_identity_constrained(agent_fd, private, comment, 368 if ((r = ssh_add_identity_constrained(agent_fd, private, comment,
diff --git a/ssh-agent.0 b/ssh-agent.0
index df4f0cc6c..71dddc27c 100644
--- a/ssh-agent.0
+++ b/ssh-agent.0
@@ -5,7 +5,9 @@ NAME
5 5
6SYNOPSIS 6SYNOPSIS
7 ssh-agent [-c | -s] [-Dd] [-a bind_address] [-E fingerprint_hash] 7 ssh-agent [-c | -s] [-Dd] [-a bind_address] [-E fingerprint_hash]
8 [-P provider_whitelist] [-t life] [command [arg ...]] 8 [-P allowed_providers] [-t life]
9 ssh-agent [-a bind_address] [-E fingerprint_hash] [-P allowed_providers]
10 [-t life] command [arg ...]
9 ssh-agent [-c | -s] -k 11 ssh-agent [-c | -s] -k
10 12
11DESCRIPTION 13DESCRIPTION
@@ -37,13 +39,13 @@ DESCRIPTION
37 -k Kill the current agent (given by the SSH_AGENT_PID environment 39 -k Kill the current agent (given by the SSH_AGENT_PID environment
38 variable). 40 variable).
39 41
40 -P provider_whitelist 42 -P allowed_providers
41 Specify a pattern-list of acceptable paths for PKCS#11 and FIDO 43 Specify a pattern-list of acceptable paths for PKCS#11 provider
42 authenticator shared libraries that may be used with the -S or -s 44 and FIDO authenticator middleware shared libraries that may be
43 options to ssh-add(1). Libraries that do not match the whitelist 45 used with the -S or -s options to ssh-add(1). Libraries that do
44 will be refused. See PATTERNS in ssh_config(5) for a description 46 not match the pattern list will be refused. See PATTERNS in
45 of pattern-list syntax. The default whitelist is 47 ssh_config(5) for a description of pattern-list syntax. The
46 M-bM-^@M-^\/usr/lib/*,/usr/local/lib/*M-bM-^@M-^]. 48 default list is M-bM-^@M-^\/usr/lib/*,/usr/local/lib/*M-bM-^@M-^].
47 49
48 -s Generate Bourne shell commands on stdout. This is the default if 50 -s Generate Bourne shell commands on stdout. This is the default if
49 SHELL does not look like it's a csh style of shell. 51 SHELL does not look like it's a csh style of shell.
@@ -114,4 +116,4 @@ AUTHORS
114 created OpenSSH. Markus Friedl contributed the support for SSH protocol 116 created OpenSSH. Markus Friedl contributed the support for SSH protocol
115 versions 1.5 and 2.0. 117 versions 1.5 and 2.0.
116 118
117OpenBSD 6.7 December 21, 2019 OpenBSD 6.7 119OpenBSD 6.8 June 22, 2020 OpenBSD 6.8
diff --git a/ssh-agent.1 b/ssh-agent.1
index 99e4f6d2e..272da79b3 100644
--- a/ssh-agent.1
+++ b/ssh-agent.1
@@ -1,4 +1,4 @@
1.\" $OpenBSD: ssh-agent.1,v 1.70 2019/12/21 20:22:34 naddy Exp $ 1.\" $OpenBSD: ssh-agent.1,v 1.72 2020/06/22 05:52:05 djm Exp $
2.\" 2.\"
3.\" Author: Tatu Ylonen <ylo@cs.hut.fi> 3.\" Author: Tatu Ylonen <ylo@cs.hut.fi>
4.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -34,7 +34,7 @@
34.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 34.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
35.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 35.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36.\" 36.\"
37.Dd $Mdocdate: December 21 2019 $ 37.Dd $Mdocdate: June 22 2020 $
38.Dt SSH-AGENT 1 38.Dt SSH-AGENT 1
39.Os 39.Os
40.Sh NAME 40.Sh NAME
@@ -46,9 +46,14 @@
46.Op Fl \&Dd 46.Op Fl \&Dd
47.Op Fl a Ar bind_address 47.Op Fl a Ar bind_address
48.Op Fl E Ar fingerprint_hash 48.Op Fl E Ar fingerprint_hash
49.Op Fl P Ar provider_whitelist 49.Op Fl P Ar allowed_providers
50.Op Fl t Ar life 50.Op Fl t Ar life
51.Op Ar command Op Ar arg ... 51.Nm ssh-agent
52.Op Fl a Ar bind_address
53.Op Fl E Ar fingerprint_hash
54.Op Fl P Ar allowed_providers
55.Op Fl t Ar life
56.Ar command Op Ar arg ...
52.Nm ssh-agent 57.Nm ssh-agent
53.Op Fl c | s 58.Op Fl c | s
54.Fl k 59.Fl k
@@ -97,19 +102,19 @@ The default is
97Kill the current agent (given by the 102Kill the current agent (given by the
98.Ev SSH_AGENT_PID 103.Ev SSH_AGENT_PID
99environment variable). 104environment variable).
100.It Fl P Ar provider_whitelist 105.It Fl P Ar allowed_providers
101Specify a pattern-list of acceptable paths for PKCS#11 and FIDO authenticator 106Specify a pattern-list of acceptable paths for PKCS#11 provider and FIDO
102shared libraries that may be used with the 107authenticator middleware shared libraries that may be used with the
103.Fl S 108.Fl S
104or 109or
105.Fl s 110.Fl s
106options to 111options to
107.Xr ssh-add 1 . 112.Xr ssh-add 1 .
108Libraries that do not match the whitelist will be refused. 113Libraries that do not match the pattern list will be refused.
109See PATTERNS in 114See PATTERNS in
110.Xr ssh_config 5 115.Xr ssh_config 5
111for a description of pattern-list syntax. 116for a description of pattern-list syntax.
112The default whitelist is 117The default list is
113.Dq /usr/lib/*,/usr/local/lib/* . 118.Dq /usr/lib/*,/usr/local/lib/* .
114.It Fl s 119.It Fl s
115Generate Bourne shell commands on 120Generate Bourne shell commands on
diff --git a/ssh-agent.c b/ssh-agent.c
index e081413b8..e1fd1f3f6 100644
--- a/ssh-agent.c
+++ b/ssh-agent.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-agent.c,v 1.257 2020/03/06 18:28:27 markus Exp $ */ 1/* $OpenBSD: ssh-agent.c,v 1.264 2020/09/18 08:16:38 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -77,6 +77,7 @@
77 77
78#include "xmalloc.h" 78#include "xmalloc.h"
79#include "ssh.h" 79#include "ssh.h"
80#include "ssh2.h"
80#include "sshbuf.h" 81#include "sshbuf.h"
81#include "sshkey.h" 82#include "sshkey.h"
82#include "authfd.h" 83#include "authfd.h"
@@ -92,8 +93,8 @@
92#include "ssh-pkcs11.h" 93#include "ssh-pkcs11.h"
93#include "sk-api.h" 94#include "sk-api.h"
94 95
95#ifndef DEFAULT_PROVIDER_WHITELIST 96#ifndef DEFAULT_ALLOWED_PROVIDERS
96# define DEFAULT_PROVIDER_WHITELIST "/usr/lib*/*,/usr/local/lib*/*" 97# define DEFAULT_ALLOWED_PROVIDERS "/usr/lib*/*,/usr/local/lib*/*"
97#endif 98#endif
98 99
99/* Maximum accepted message length */ 100/* Maximum accepted message length */
@@ -149,8 +150,8 @@ pid_t cleanup_pid = 0;
149char socket_name[PATH_MAX]; 150char socket_name[PATH_MAX];
150char socket_dir[PATH_MAX]; 151char socket_dir[PATH_MAX];
151 152
152/* PKCS#11/Security key path whitelist */ 153/* Pattern-list of allowed PKCS#11/Security key paths */
153static char *provider_whitelist; 154static char *allowed_providers;
154 155
155/* locking */ 156/* locking */
156#define LOCK_SIZE 32 157#define LOCK_SIZE 32
@@ -167,6 +168,9 @@ static long lifetime = 0;
167 168
168static int fingerprint_hash = SSH_FP_HASH_DEFAULT; 169static int fingerprint_hash = SSH_FP_HASH_DEFAULT;
169 170
171/* Refuse signing of non-SSH messages for web-origin FIDO keys */
172static int restrict_websafe = 1;
173
170static void 174static void
171close_socket(SocketEntry *e) 175close_socket(SocketEntry *e)
172{ 176{
@@ -282,6 +286,80 @@ agent_decode_alg(struct sshkey *key, u_int flags)
282 return NULL; 286 return NULL;
283} 287}
284 288
289/*
290 * This function inspects a message to be signed by a FIDO key that has a
291 * web-like application string (i.e. one that does not begin with "ssh:".
292 * It checks that the message is one of those expected for SSH operations
293 * (pubkey userauth, sshsig, CA key signing) to exclude signing challenges
294 * for the web.
295 */
296static int
297check_websafe_message_contents(struct sshkey *key,
298 const u_char *msg, size_t len)
299{
300 int matched = 0;
301 struct sshbuf *b;
302 u_char m, n;
303 char *cp1 = NULL, *cp2 = NULL;
304 int r;
305 struct sshkey *mkey = NULL;
306
307 if ((b = sshbuf_from(msg, len)) == NULL)
308 fatal("%s: sshbuf_new", __func__);
309
310 /* SSH userauth request */
311 if ((r = sshbuf_get_string_direct(b, NULL, NULL)) == 0 && /* sess_id */
312 (r = sshbuf_get_u8(b, &m)) == 0 && /* SSH2_MSG_USERAUTH_REQUEST */
313 (r = sshbuf_get_cstring(b, NULL, NULL)) == 0 && /* server user */
314 (r = sshbuf_get_cstring(b, &cp1, NULL)) == 0 && /* service */
315 (r = sshbuf_get_cstring(b, &cp2, NULL)) == 0 && /* method */
316 (r = sshbuf_get_u8(b, &n)) == 0 && /* sig-follows */
317 (r = sshbuf_get_cstring(b, NULL, NULL)) == 0 && /* alg */
318 (r = sshkey_froms(b, &mkey)) == 0 && /* key */
319 sshbuf_len(b) == 0) {
320 debug("%s: parsed userauth", __func__);
321 if (m == SSH2_MSG_USERAUTH_REQUEST && n == 1 &&
322 strcmp(cp1, "ssh-connection") == 0 &&
323 strcmp(cp2, "publickey") == 0 &&
324 sshkey_equal(key, mkey)) {
325 debug("%s: well formed userauth", __func__);
326 matched = 1;
327 }
328 }
329 free(cp1);
330 free(cp2);
331 sshkey_free(mkey);
332 sshbuf_free(b);
333 if (matched)
334 return 1;
335
336 if ((b = sshbuf_from(msg, len)) == NULL)
337 fatal("%s: sshbuf_new", __func__);
338 cp1 = cp2 = NULL;
339 mkey = NULL;
340
341 /* SSHSIG */
342 if ((r = sshbuf_cmp(b, 0, "SSHSIG", 6)) == 0 &&
343 (r = sshbuf_consume(b, 6)) == 0 &&
344 (r = sshbuf_get_cstring(b, NULL, NULL)) == 0 && /* namespace */
345 (r = sshbuf_get_string_direct(b, NULL, NULL)) == 0 && /* reserved */
346 (r = sshbuf_get_cstring(b, NULL, NULL)) == 0 && /* hashalg */
347 (r = sshbuf_get_string_direct(b, NULL, NULL)) == 0 && /* H(msg) */
348 sshbuf_len(b) == 0) {
349 debug("%s: parsed sshsig", __func__);
350 matched = 1;
351 }
352
353 sshbuf_free(b);
354 if (matched)
355 return 1;
356
357 /* XXX CA signature operation */
358
359 error("web-origin key attempting to sign non-SSH message");
360 return 0;
361}
362
285/* ssh2 only */ 363/* ssh2 only */
286static void 364static void
287process_sign_request2(SocketEntry *e) 365process_sign_request2(SocketEntry *e)
@@ -314,18 +392,25 @@ process_sign_request2(SocketEntry *e)
314 verbose("%s: user refused key", __func__); 392 verbose("%s: user refused key", __func__);
315 goto send; 393 goto send;
316 } 394 }
317 if (sshkey_is_sk(id->key) && 395 if (sshkey_is_sk(id->key)) {
318 (id->key->sk_flags & SSH_SK_USER_PRESENCE_REQD)) { 396 if (strncmp(id->key->sk_application, "ssh:", 4) != 0 &&
319 if ((fp = sshkey_fingerprint(key, SSH_FP_HASH_DEFAULT, 397 !check_websafe_message_contents(key, data, dlen)) {
320 SSH_FP_DEFAULT)) == NULL) 398 /* error already logged */
321 fatal("%s: fingerprint failed", __func__); 399 goto send;
322 notifier = notify_start(0, 400 }
323 "Confirm user presence for key %s %s", 401 if ((id->key->sk_flags & SSH_SK_USER_PRESENCE_REQD)) {
324 sshkey_type(id->key), fp); 402 if ((fp = sshkey_fingerprint(key, SSH_FP_HASH_DEFAULT,
403 SSH_FP_DEFAULT)) == NULL)
404 fatal("%s: fingerprint failed", __func__);
405 notifier = notify_start(0,
406 "Confirm user presence for key %s %s",
407 sshkey_type(id->key), fp);
408 }
325 } 409 }
410 /* XXX support PIN required FIDO keys */
326 if ((r = sshkey_sign(id->key, &signature, &slen, 411 if ((r = sshkey_sign(id->key, &signature, &slen,
327 data, dlen, agent_decode_alg(key, flags), 412 data, dlen, agent_decode_alg(key, flags),
328 id->sk_provider, compat)) != 0) { 413 id->sk_provider, NULL, compat)) != 0) {
329 error("%s: sshkey_sign: %s", __func__, ssh_err(r)); 414 error("%s: sshkey_sign: %s", __func__, ssh_err(r));
330 goto send; 415 goto send;
331 } 416 }
@@ -528,9 +613,9 @@ process_add_identity(SocketEntry *e)
528 free(sk_provider); 613 free(sk_provider);
529 sk_provider = xstrdup(canonical_provider); 614 sk_provider = xstrdup(canonical_provider);
530 if (match_pattern_list(sk_provider, 615 if (match_pattern_list(sk_provider,
531 provider_whitelist, 0) != 1) { 616 allowed_providers, 0) != 1) {
532 error("Refusing add key: " 617 error("Refusing add key: "
533 "provider %s not whitelisted", sk_provider); 618 "provider %s not allowed", sk_provider);
534 free(sk_provider); 619 free(sk_provider);
535 goto send; 620 goto send;
536 } 621 }
@@ -685,9 +770,9 @@ process_add_smartcard_key(SocketEntry *e)
685 provider, strerror(errno)); 770 provider, strerror(errno));
686 goto send; 771 goto send;
687 } 772 }
688 if (match_pattern_list(canonical_provider, provider_whitelist, 0) != 1) { 773 if (match_pattern_list(canonical_provider, allowed_providers, 0) != 1) {
689 verbose("refusing PKCS#11 add of \"%.100s\": " 774 verbose("refusing PKCS#11 add of \"%.100s\": "
690 "provider not whitelisted", canonical_provider); 775 "provider not allowed", canonical_provider);
691 goto send; 776 goto send;
692 } 777 }
693 debug("%s: add %.100s", __func__, canonical_provider); 778 debug("%s: add %.100s", __func__, canonical_provider);
@@ -767,8 +852,10 @@ send:
767} 852}
768#endif /* ENABLE_PKCS11 */ 853#endif /* ENABLE_PKCS11 */
769 854
770/* dispatch incoming messages */ 855/*
771 856 * dispatch incoming message.
857 * returns 1 on success, 0 for incomplete messages or -1 on error.
858 */
772static int 859static int
773process_message(u_int socknum) 860process_message(u_int socknum)
774{ 861{
@@ -822,7 +909,7 @@ process_message(u_int socknum)
822 /* send a fail message for all other request types */ 909 /* send a fail message for all other request types */
823 send_status(e, 0); 910 send_status(e, 0);
824 } 911 }
825 return 0; 912 return 1;
826 } 913 }
827 914
828 switch (type) { 915 switch (type) {
@@ -866,7 +953,7 @@ process_message(u_int socknum)
866 send_status(e, 0); 953 send_status(e, 0);
867 break; 954 break;
868 } 955 }
869 return 0; 956 return 1;
870} 957}
871 958
872static void 959static void
@@ -957,7 +1044,12 @@ handle_conn_read(u_int socknum)
957 if ((r = sshbuf_put(sockets[socknum].input, buf, len)) != 0) 1044 if ((r = sshbuf_put(sockets[socknum].input, buf, len)) != 0)
958 fatal("%s: buffer error: %s", __func__, ssh_err(r)); 1045 fatal("%s: buffer error: %s", __func__, ssh_err(r));
959 explicit_bzero(buf, sizeof(buf)); 1046 explicit_bzero(buf, sizeof(buf));
960 process_message(socknum); 1047 for (;;) {
1048 if ((r = process_message(socknum)) == -1)
1049 return -1;
1050 else if (r == 0)
1051 break;
1052 }
961 return 0; 1053 return 0;
962} 1054}
963 1055
@@ -1170,7 +1262,9 @@ usage(void)
1170{ 1262{
1171 fprintf(stderr, 1263 fprintf(stderr,
1172 "usage: ssh-agent [-c | -s] [-Dd] [-a bind_address] [-E fingerprint_hash]\n" 1264 "usage: ssh-agent [-c | -s] [-Dd] [-a bind_address] [-E fingerprint_hash]\n"
1173 " [-P provider_whitelist] [-t life] [command [arg ...]]\n" 1265 " [-P allowed_providers] [-t life]\n"
1266 " ssh-agent [-a bind_address] [-E fingerprint_hash] [-P allowed_providers]\n"
1267 " [-t life] command [arg ...]\n"
1174 " ssh-agent [-c | -s] -k\n"); 1268 " ssh-agent [-c | -s] -k\n");
1175 exit(1); 1269 exit(1);
1176} 1270}
@@ -1212,7 +1306,7 @@ main(int ac, char **av)
1212 __progname = ssh_get_progname(av[0]); 1306 __progname = ssh_get_progname(av[0]);
1213 seed_rng(); 1307 seed_rng();
1214 1308
1215 while ((ch = getopt(ac, av, "cDdksE:a:P:t:")) != -1) { 1309 while ((ch = getopt(ac, av, "cDdksE:a:O:P:t:")) != -1) {
1216 switch (ch) { 1310 switch (ch) {
1217 case 'E': 1311 case 'E':
1218 fingerprint_hash = ssh_digest_alg_by_name(optarg); 1312 fingerprint_hash = ssh_digest_alg_by_name(optarg);
@@ -1227,10 +1321,16 @@ main(int ac, char **av)
1227 case 'k': 1321 case 'k':
1228 k_flag++; 1322 k_flag++;
1229 break; 1323 break;
1324 case 'O':
1325 if (strcmp(optarg, "no-restrict-websafe") == 0)
1326 restrict_websafe = 0;
1327 else
1328 fatal("Unknown -O option");
1329 break;
1230 case 'P': 1330 case 'P':
1231 if (provider_whitelist != NULL) 1331 if (allowed_providers != NULL)
1232 fatal("-P option already specified"); 1332 fatal("-P option already specified");
1233 provider_whitelist = xstrdup(optarg); 1333 allowed_providers = xstrdup(optarg);
1234 break; 1334 break;
1235 case 's': 1335 case 's':
1236 if (c_flag) 1336 if (c_flag)
@@ -1266,8 +1366,8 @@ main(int ac, char **av)
1266 if (ac > 0 && (c_flag || k_flag || s_flag || d_flag || D_flag)) 1366 if (ac > 0 && (c_flag || k_flag || s_flag || d_flag || D_flag))
1267 usage(); 1367 usage();
1268 1368
1269 if (provider_whitelist == NULL) 1369 if (allowed_providers == NULL)
1270 provider_whitelist = xstrdup(DEFAULT_PROVIDER_WHITELIST); 1370 allowed_providers = xstrdup(DEFAULT_ALLOWED_PROVIDERS);
1271 1371
1272 if (ac == 0 && !c_flag && !s_flag) { 1372 if (ac == 0 && !c_flag && !s_flag) {
1273 shell = getenv("SHELL"); 1373 shell = getenv("SHELL");
diff --git a/ssh-ecdsa-sk.c b/ssh-ecdsa-sk.c
index 981d60d74..c6927ecb2 100644
--- a/ssh-ecdsa-sk.c
+++ b/ssh-ecdsa-sk.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-ecdsa-sk.c,v 1.5 2019/11/26 03:04:27 djm Exp $ */ 1/* $OpenBSD: ssh-ecdsa-sk.c,v 1.8 2020/06/22 23:44:27 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * Copyright (c) 2010 Damien Miller. All rights reserved. 4 * Copyright (c) 2010 Damien Miller. All rights reserved.
@@ -49,6 +49,94 @@
49#define SSHKEY_INTERNAL 49#define SSHKEY_INTERNAL
50#include "sshkey.h" 50#include "sshkey.h"
51 51
52#ifndef OPENSSL_HAS_ECC
53/* ARGSUSED */
54int
55ssh_ecdsa_sk_verify(const struct sshkey *key,
56 const u_char *signature, size_t signaturelen,
57 const u_char *data, size_t datalen, u_int compat,
58 struct sshkey_sig_details **detailsp)
59{
60 return SSH_ERR_FEATURE_UNSUPPORTED;
61}
62#else /* OPENSSL_HAS_ECC */
63
64/*
65 * Check FIDO/W3C webauthn signatures clientData field against the expected
66 * format and prepare a hash of it for use in signature verification.
67 *
68 * webauthn signatures do not sign the hash of the message directly, but
69 * instead sign a JSON-like "clientData" wrapper structure that contains the
70 * message hash along with a other information.
71 *
72 * Fortunately this structure has a fixed format so it is possible to verify
73 * that the hash of the signed message is present within the clientData
74 * structure without needing to implement any JSON parsing.
75 */
76static int
77webauthn_check_prepare_hash(const u_char *data, size_t datalen,
78 const char *origin, const struct sshbuf *wrapper,
79 uint8_t flags, const struct sshbuf *extensions,
80 u_char *msghash, size_t msghashlen)
81{
82 int r = SSH_ERR_INTERNAL_ERROR;
83 struct sshbuf *chall = NULL, *m = NULL;
84
85 if ((m = sshbuf_new()) == NULL ||
86 (chall = sshbuf_from(data, datalen)) == NULL) {
87 r = SSH_ERR_ALLOC_FAIL;
88 goto out;
89 }
90 /*
91 * Ensure origin contains no quote character and that the flags are
92 * consistent with what we received
93 */
94 if (strchr(origin, '\"') != NULL ||
95 (flags & 0x40) != 0 /* AD */ ||
96 ((flags & 0x80) == 0 /* ED */) != (sshbuf_len(extensions) == 0)) {
97 r = SSH_ERR_INVALID_FORMAT;
98 goto out;
99 }
100
101 /*
102 * Prepare the preamble to clientData that we expect, poking the
103 * challenge and origin into their canonical positions in the
104 * structure. The crossOrigin flag and any additional extension
105 * fields present are ignored.
106 */
107#define WEBAUTHN_0 "{\"type\":\"webauthn.get\",\"challenge\":\""
108#define WEBAUTHN_1 "\",\"origin\":\""
109#define WEBAUTHN_2 "\""
110 if ((r = sshbuf_put(m, WEBAUTHN_0, sizeof(WEBAUTHN_0) - 1)) != 0 ||
111 (r = sshbuf_dtourlb64(chall, m, 0)) != 0 ||
112 (r = sshbuf_put(m, WEBAUTHN_1, sizeof(WEBAUTHN_1) - 1)) != 0 ||
113 (r = sshbuf_put(m, origin, strlen(origin))) != 0 ||
114 (r = sshbuf_put(m, WEBAUTHN_2, sizeof(WEBAUTHN_2) - 1)) != 0)
115 goto out;
116#ifdef DEBUG_SK
117 fprintf(stderr, "%s: received origin: %s\n", __func__, origin);
118 fprintf(stderr, "%s: received clientData:\n", __func__);
119 sshbuf_dump(wrapper, stderr);
120 fprintf(stderr, "%s: expected clientData premable:\n", __func__);
121 sshbuf_dump(m, stderr);
122#endif
123 /* Check that the supplied clientData has the preamble we expect */
124 if ((r = sshbuf_cmp(wrapper, 0, sshbuf_ptr(m), sshbuf_len(m))) != 0)
125 goto out;
126
127 /* Prepare hash of clientData */
128 if ((r = ssh_digest_buffer(SSH_DIGEST_SHA256, wrapper,
129 msghash, msghashlen)) != 0)
130 goto out;
131
132 /* success */
133 r = 0;
134 out:
135 sshbuf_free(chall);
136 sshbuf_free(m);
137 return r;
138}
139
52/* ARGSUSED */ 140/* ARGSUSED */
53int 141int
54ssh_ecdsa_sk_verify(const struct sshkey *key, 142ssh_ecdsa_sk_verify(const struct sshkey *key,
@@ -56,15 +144,15 @@ ssh_ecdsa_sk_verify(const struct sshkey *key,
56 const u_char *data, size_t datalen, u_int compat, 144 const u_char *data, size_t datalen, u_int compat,
57 struct sshkey_sig_details **detailsp) 145 struct sshkey_sig_details **detailsp)
58{ 146{
59#ifdef OPENSSL_HAS_ECC
60 ECDSA_SIG *sig = NULL; 147 ECDSA_SIG *sig = NULL;
61 BIGNUM *sig_r = NULL, *sig_s = NULL; 148 BIGNUM *sig_r = NULL, *sig_s = NULL;
62 u_char sig_flags; 149 u_char sig_flags;
63 u_char msghash[32], apphash[32], sighash[32]; 150 u_char msghash[32], apphash[32], sighash[32];
64 u_int sig_counter; 151 u_int sig_counter;
65 int ret = SSH_ERR_INTERNAL_ERROR; 152 int is_webauthn = 0, ret = SSH_ERR_INTERNAL_ERROR;
66 struct sshbuf *b = NULL, *sigbuf = NULL, *original_signed = NULL; 153 struct sshbuf *b = NULL, *sigbuf = NULL, *original_signed = NULL;
67 char *ktype = NULL; 154 struct sshbuf *webauthn_wrapper = NULL, *webauthn_exts = NULL;
155 char *ktype = NULL, *webauthn_origin = NULL;
68 struct sshkey_sig_details *details = NULL; 156 struct sshkey_sig_details *details = NULL;
69#ifdef DEBUG_SK 157#ifdef DEBUG_SK
70 char *tmp = NULL; 158 char *tmp = NULL;
@@ -83,16 +171,33 @@ ssh_ecdsa_sk_verify(const struct sshkey *key,
83 /* fetch signature */ 171 /* fetch signature */
84 if ((b = sshbuf_from(signature, signaturelen)) == NULL) 172 if ((b = sshbuf_from(signature, signaturelen)) == NULL)
85 return SSH_ERR_ALLOC_FAIL; 173 return SSH_ERR_ALLOC_FAIL;
86 if (sshbuf_get_cstring(b, &ktype, NULL) != 0 || 174 if ((details = calloc(1, sizeof(*details))) == NULL) {
87 sshbuf_froms(b, &sigbuf) != 0 || 175 ret = SSH_ERR_ALLOC_FAIL;
176 goto out;
177 }
178 if (sshbuf_get_cstring(b, &ktype, NULL) != 0) {
179 ret = SSH_ERR_INVALID_FORMAT;
180 goto out;
181 }
182 if (strcmp(ktype, "webauthn-sk-ecdsa-sha2-nistp256@openssh.com") == 0)
183 is_webauthn = 1;
184 else if (strcmp(ktype, "sk-ecdsa-sha2-nistp256@openssh.com") != 0) {
185 ret = SSH_ERR_INVALID_FORMAT;
186 goto out;
187 }
188 if (sshbuf_froms(b, &sigbuf) != 0 ||
88 sshbuf_get_u8(b, &sig_flags) != 0 || 189 sshbuf_get_u8(b, &sig_flags) != 0 ||
89 sshbuf_get_u32(b, &sig_counter) != 0) { 190 sshbuf_get_u32(b, &sig_counter) != 0) {
90 ret = SSH_ERR_INVALID_FORMAT; 191 ret = SSH_ERR_INVALID_FORMAT;
91 goto out; 192 goto out;
92 } 193 }
93 if (strcmp(sshkey_ssh_name_plain(key), ktype) != 0) { 194 if (is_webauthn) {
94 ret = SSH_ERR_KEY_TYPE_MISMATCH; 195 if (sshbuf_get_cstring(b, &webauthn_origin, NULL) != 0 ||
95 goto out; 196 sshbuf_froms(b, &webauthn_wrapper) != 0 ||
197 sshbuf_froms(b, &webauthn_exts) != 0) {
198 ret = SSH_ERR_INVALID_FORMAT;
199 goto out;
200 }
96 } 201 }
97 if (sshbuf_len(b) != 0) { 202 if (sshbuf_len(b) != 0) {
98 ret = SSH_ERR_UNEXPECTED_TRAILING_DATA; 203 ret = SSH_ERR_UNEXPECTED_TRAILING_DATA;
@@ -105,14 +210,11 @@ ssh_ecdsa_sk_verify(const struct sshkey *key,
105 ret = SSH_ERR_INVALID_FORMAT; 210 ret = SSH_ERR_INVALID_FORMAT;
106 goto out; 211 goto out;
107 } 212 }
108 if ((sig = ECDSA_SIG_new()) == NULL) { 213 if (sshbuf_len(sigbuf) != 0) {
109 ret = SSH_ERR_ALLOC_FAIL; 214 ret = SSH_ERR_UNEXPECTED_TRAILING_DATA;
110 goto out;
111 }
112 if (!ECDSA_SIG_set0(sig, sig_r, sig_s)) {
113 ret = SSH_ERR_LIBCRYPTO_ERROR;
114 goto out; 215 goto out;
115 } 216 }
217
116#ifdef DEBUG_SK 218#ifdef DEBUG_SK
117 fprintf(stderr, "%s: data: (len %zu)\n", __func__, datalen); 219 fprintf(stderr, "%s: data: (len %zu)\n", __func__, datalen);
118 /* sshbuf_dump_data(data, datalen, stderr); */ 220 /* sshbuf_dump_data(data, datalen, stderr); */
@@ -122,20 +224,34 @@ ssh_ecdsa_sk_verify(const struct sshkey *key,
122 free(tmp); 224 free(tmp);
123 fprintf(stderr, "%s: sig_flags = 0x%02x, sig_counter = %u\n", 225 fprintf(stderr, "%s: sig_flags = 0x%02x, sig_counter = %u\n",
124 __func__, sig_flags, sig_counter); 226 __func__, sig_flags, sig_counter);
227 if (is_webauthn) {
228 fprintf(stderr, "%s: webauthn origin: %s\n", __func__,
229 webauthn_origin);
230 fprintf(stderr, "%s: webauthn_wrapper:\n", __func__);
231 sshbuf_dump(webauthn_wrapper, stderr);
232 }
125#endif 233#endif
126 sig_r = sig_s = NULL; /* transferred */ 234 if ((sig = ECDSA_SIG_new()) == NULL) {
127 235 ret = SSH_ERR_ALLOC_FAIL;
128 if (sshbuf_len(sigbuf) != 0) {
129 ret = SSH_ERR_UNEXPECTED_TRAILING_DATA;
130 goto out; 236 goto out;
131 } 237 }
238 if (!ECDSA_SIG_set0(sig, sig_r, sig_s)) {
239 ret = SSH_ERR_LIBCRYPTO_ERROR;
240 goto out;
241 }
242 sig_r = sig_s = NULL; /* transferred */
132 243
133 /* Reconstruct data that was supposedly signed */ 244 /* Reconstruct data that was supposedly signed */
134 if ((original_signed = sshbuf_new()) == NULL) { 245 if ((original_signed = sshbuf_new()) == NULL) {
135 ret = SSH_ERR_ALLOC_FAIL; 246 ret = SSH_ERR_ALLOC_FAIL;
136 goto out; 247 goto out;
137 } 248 }
138 if ((ret = ssh_digest_memory(SSH_DIGEST_SHA256, data, datalen, 249 if (is_webauthn) {
250 if ((ret = webauthn_check_prepare_hash(data, datalen,
251 webauthn_origin, webauthn_wrapper, sig_flags, webauthn_exts,
252 msghash, sizeof(msghash))) != 0)
253 goto out;
254 } else if ((ret = ssh_digest_memory(SSH_DIGEST_SHA256, data, datalen,
139 msghash, sizeof(msghash))) != 0) 255 msghash, sizeof(msghash))) != 0)
140 goto out; 256 goto out;
141 /* Application value is hashed before signature */ 257 /* Application value is hashed before signature */
@@ -152,16 +268,13 @@ ssh_ecdsa_sk_verify(const struct sshkey *key,
152 apphash, sizeof(apphash))) != 0 || 268 apphash, sizeof(apphash))) != 0 ||
153 (ret = sshbuf_put_u8(original_signed, sig_flags)) != 0 || 269 (ret = sshbuf_put_u8(original_signed, sig_flags)) != 0 ||
154 (ret = sshbuf_put_u32(original_signed, sig_counter)) != 0 || 270 (ret = sshbuf_put_u32(original_signed, sig_counter)) != 0 ||
271 (ret = sshbuf_putb(original_signed, webauthn_exts)) != 0 ||
155 (ret = sshbuf_put(original_signed, msghash, sizeof(msghash))) != 0) 272 (ret = sshbuf_put(original_signed, msghash, sizeof(msghash))) != 0)
156 goto out; 273 goto out;
157 /* Signature is over H(original_signed) */ 274 /* Signature is over H(original_signed) */
158 if ((ret = ssh_digest_buffer(SSH_DIGEST_SHA256, original_signed, 275 if ((ret = ssh_digest_buffer(SSH_DIGEST_SHA256, original_signed,
159 sighash, sizeof(sighash))) != 0) 276 sighash, sizeof(sighash))) != 0)
160 goto out; 277 goto out;
161 if ((details = calloc(1, sizeof(*details))) == NULL) {
162 ret = SSH_ERR_ALLOC_FAIL;
163 goto out;
164 }
165 details->sk_counter = sig_counter; 278 details->sk_counter = sig_counter;
166 details->sk_flags = sig_flags; 279 details->sk_flags = sig_flags;
167#ifdef DEBUG_SK 280#ifdef DEBUG_SK
@@ -195,6 +308,9 @@ ssh_ecdsa_sk_verify(const struct sshkey *key,
195 explicit_bzero(sighash, sizeof(msghash)); 308 explicit_bzero(sighash, sizeof(msghash));
196 explicit_bzero(apphash, sizeof(apphash)); 309 explicit_bzero(apphash, sizeof(apphash));
197 sshkey_sig_details_free(details); 310 sshkey_sig_details_free(details);
311 sshbuf_free(webauthn_wrapper);
312 sshbuf_free(webauthn_exts);
313 free(webauthn_origin);
198 sshbuf_free(original_signed); 314 sshbuf_free(original_signed);
199 sshbuf_free(sigbuf); 315 sshbuf_free(sigbuf);
200 sshbuf_free(b); 316 sshbuf_free(b);
@@ -203,7 +319,6 @@ ssh_ecdsa_sk_verify(const struct sshkey *key,
203 BN_clear_free(sig_s); 319 BN_clear_free(sig_s);
204 free(ktype); 320 free(ktype);
205 return ret; 321 return ret;
206#else
207 return SSH_ERR_INTERNAL_ERROR;
208#endif
209} 322}
323
324#endif /* OPENSSL_HAS_ECC */
diff --git a/ssh-keygen.0 b/ssh-keygen.0
index c388cdf7a..111eb9e08 100644
--- a/ssh-keygen.0
+++ b/ssh-keygen.0
@@ -4,21 +4,22 @@ NAME
4 ssh-keygen M-bM-^@M-^S OpenSSH authentication key utility 4 ssh-keygen M-bM-^@M-^S OpenSSH authentication key utility
5 5
6SYNOPSIS 6SYNOPSIS
7 ssh-keygen [-q] [-b bits] [-C comment] [-f output_keyfile] [-m format] 7 ssh-keygen [-q] [-a rounds] [-b bits] [-C comment] [-f output_keyfile]
8 [-m format] [-N new_passphrase] [-O option]
8 [-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa] 9 [-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa]
9 [-N new_passphrase] [-O option] [-w provider] 10 [-w provider]
10 ssh-keygen -p [-f keyfile] [-m format] [-N new_passphrase] 11 ssh-keygen -p [-a rounds] [-f keyfile] [-m format] [-N new_passphrase]
11 [-P old_passphrase] 12 [-P old_passphrase]
12 ssh-keygen -i [-f input_keyfile] [-m key_format] 13 ssh-keygen -i [-f input_keyfile] [-m key_format]
13 ssh-keygen -e [-f input_keyfile] [-m key_format] 14 ssh-keygen -e [-f input_keyfile] [-m key_format]
14 ssh-keygen -y [-f input_keyfile] 15 ssh-keygen -y [-f input_keyfile]
15 ssh-keygen -c [-C comment] [-f keyfile] [-P passphrase] 16 ssh-keygen -c [-a rounds] [-C comment] [-f keyfile] [-P passphrase]
16 ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile] 17 ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]
17 ssh-keygen -B [-f input_keyfile] 18 ssh-keygen -B [-f input_keyfile]
18 ssh-keygen -D pkcs11 19 ssh-keygen -D pkcs11
19 ssh-keygen -F hostname [-lv] [-f known_hosts_file] 20 ssh-keygen -F hostname [-lv] [-f known_hosts_file]
20 ssh-keygen -H [-f known_hosts_file] 21 ssh-keygen -H [-f known_hosts_file]
21 ssh-keygen -K [-w provider] 22 ssh-keygen -K [-a rounds] [-w provider]
22 ssh-keygen -R hostname [-f known_hosts_file] 23 ssh-keygen -R hostname [-f known_hosts_file]
23 ssh-keygen -r hostname [-g] [-f input_keyfile] 24 ssh-keygen -r hostname [-g] [-f input_keyfile]
24 ssh-keygen -M generate [-O option] output_file 25 ssh-keygen -M generate [-O option] output_file
@@ -27,7 +28,7 @@ SYNOPSIS
27 [-n principals] [-O option] [-V validity_interval] 28 [-n principals] [-O option] [-V validity_interval]
28 [-z serial_number] file ... 29 [-z serial_number] file ...
29 ssh-keygen -L [-f input_keyfile] 30 ssh-keygen -L [-f input_keyfile]
30 ssh-keygen -A [-f prefix_path] 31 ssh-keygen -A [-a rounds] [-f prefix_path]
31 ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number] 32 ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number]
32 file ... 33 file ...
33 ssh-keygen -Q [-l] -f krl_file file ... 34 ssh-keygen -Q [-l] -f krl_file file ...
@@ -87,8 +88,8 @@ DESCRIPTION
87 new keys, and existing new-format keys may be converted using this option 88 new keys, and existing new-format keys may be converted using this option
88 in conjunction with the -p (change passphrase) flag. 89 in conjunction with the -p (change passphrase) flag.
89 90
90 After a key is generated, instructions below detail where the keys should 91 After a key is generated, ssh-keygen will ask where the keys should be
91 be placed to be activated. 92 placed to be activated.
92 93
93 The options are as follows: 94 The options are as follows:
94 95
@@ -104,7 +105,8 @@ DESCRIPTION
104 When saving a private key, this option specifies the number of 105 When saving a private key, this option specifies the number of
105 KDF (key derivation function) rounds used. Higher numbers result 106 KDF (key derivation function) rounds used. Higher numbers result
106 in slower passphrase verification and increased resistance to 107 in slower passphrase verification and increased resistance to
107 brute-force password cracking (should the keys be stolen). 108 brute-force password cracking (should the keys be stolen). The
109 default is 16 rounds.
108 110
109 -B Show the bubblebabble digest of specified private or public key 111 -B Show the bubblebabble digest of specified private or public key
110 file. 112 file.
@@ -182,7 +184,9 @@ DESCRIPTION
182 184
183 -K Download resident keys from a FIDO authenticator. Public and 185 -K Download resident keys from a FIDO authenticator. Public and
184 private key files will be written to the current directory for 186 private key files will be written to the current directory for
185 each downloaded key. 187 each downloaded key. If multiple FIDO authenticators are
188 attached, keys will be downloaded from the first touched
189 authenticator.
186 190
187 -k Generate a KRL file. In this mode, ssh-keygen will generate a 191 -k Generate a KRL file. In this mode, ssh-keygen will generate a
188 KRL file at the location specified via the -f flag that revokes 192 KRL file at the location specified via the -f flag that revokes
@@ -285,10 +289,18 @@ DESCRIPTION
285 username may be useful when generating multiple resident 289 username may be useful when generating multiple resident
286 keys for the same application name. 290 keys for the same application name.
287 291
292 verify-required
293 Indicate that this private key should require user
294 verification for each signature. Not all FIDO tokens
295 support this option. Currently PIN authentication is the
296 only supported verification method, but other methods may
297 be supported in the future.
298
288 write-attestation=path 299 write-attestation=path
289 May be used at key generation time to record the 300 May be used at key generation time to record the
290 attestation certificate returned from FIDO tokens during 301 attestation data returned from FIDO tokens during key
291 key generation. By default this information is 302 generation. Please note that this information is
303 potentially sensitive. By default, this information is
292 discarded. 304 discarded.
293 305
294 The -O option may be specified multiple times. 306 The -O option may be specified multiple times.
@@ -606,7 +618,7 @@ CERTIFICATES
606 Allows X11 forwarding. 618 Allows X11 forwarding.
607 619
608 no-touch-required 620 no-touch-required
609 Do not require signatures made using this key require 621 Do not require signatures made using this key include
610 demonstration of user presence (e.g. by having the user touch the 622 demonstration of user presence (e.g. by having the user touch the
611 authenticator). This option only makes sense for the FIDO 623 authenticator). This option only makes sense for the FIDO
612 authenticator algorithms ecdsa-sk and ed25519-sk. 624 authenticator algorithms ecdsa-sk and ed25519-sk.
@@ -616,6 +628,13 @@ CERTIFICATES
616 considered valid. The address_list is a comma-separated list of 628 considered valid. The address_list is a comma-separated list of
617 one or more address/netmask pairs in CIDR format. 629 one or more address/netmask pairs in CIDR format.
618 630
631 verify-required
632 Require signatures made using this key indicate that the user was
633 first verified. This option only makes sense for the FIDO
634 authenticator algorithms ecdsa-sk and ed25519-sk. Currently PIN
635 authentication is the only supported verification method, but
636 other methods may be supported in the future.
637
619 At present, no standard options are valid for host keys. 638 At present, no standard options are valid for host keys.
620 639
621 Finally, certificates may be defined with a validity lifetime. The -V 640 Finally, certificates may be defined with a validity lifetime. The -V
@@ -787,4 +806,4 @@ AUTHORS
787 created OpenSSH. Markus Friedl contributed the support for SSH protocol 806 created OpenSSH. Markus Friedl contributed the support for SSH protocol
788 versions 1.5 and 2.0. 807 versions 1.5 and 2.0.
789 808
790OpenBSD 6.7 April 3, 2020 OpenBSD 6.7 809OpenBSD 6.8 September 9, 2020 OpenBSD 6.8
diff --git a/ssh-keygen.1 b/ssh-keygen.1
index 45866f931..836174fb6 100644
--- a/ssh-keygen.1
+++ b/ssh-keygen.1
@@ -1,4 +1,4 @@
1.\" $OpenBSD: ssh-keygen.1,v 1.203 2020/04/03 02:26:56 djm Exp $ 1.\" $OpenBSD: ssh-keygen.1,v 1.209 2020/09/09 03:08:01 djm Exp $
2.\" 2.\"
3.\" Author: Tatu Ylonen <ylo@cs.hut.fi> 3.\" Author: Tatu Ylonen <ylo@cs.hut.fi>
4.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -35,7 +35,7 @@
35.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 35.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
36.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 36.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37.\" 37.\"
38.Dd $Mdocdate: April 3 2020 $ 38.Dd $Mdocdate: September 9 2020 $
39.Dt SSH-KEYGEN 1 39.Dt SSH-KEYGEN 1
40.Os 40.Os
41.Sh NAME 41.Sh NAME
@@ -44,16 +44,18 @@
44.Sh SYNOPSIS 44.Sh SYNOPSIS
45.Nm ssh-keygen 45.Nm ssh-keygen
46.Op Fl q 46.Op Fl q
47.Op Fl a Ar rounds
47.Op Fl b Ar bits 48.Op Fl b Ar bits
48.Op Fl C Ar comment 49.Op Fl C Ar comment
49.Op Fl f Ar output_keyfile 50.Op Fl f Ar output_keyfile
50.Op Fl m Ar format 51.Op Fl m Ar format
51.Op Fl t Cm dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa
52.Op Fl N Ar new_passphrase 52.Op Fl N Ar new_passphrase
53.Op Fl O Ar option 53.Op Fl O Ar option
54.Op Fl t Cm dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa
54.Op Fl w Ar provider 55.Op Fl w Ar provider
55.Nm ssh-keygen 56.Nm ssh-keygen
56.Fl p 57.Fl p
58.Op Fl a Ar rounds
57.Op Fl f Ar keyfile 59.Op Fl f Ar keyfile
58.Op Fl m Ar format 60.Op Fl m Ar format
59.Op Fl N Ar new_passphrase 61.Op Fl N Ar new_passphrase
@@ -71,6 +73,7 @@
71.Op Fl f Ar input_keyfile 73.Op Fl f Ar input_keyfile
72.Nm ssh-keygen 74.Nm ssh-keygen
73.Fl c 75.Fl c
76.Op Fl a Ar rounds
74.Op Fl C Ar comment 77.Op Fl C Ar comment
75.Op Fl f Ar keyfile 78.Op Fl f Ar keyfile
76.Op Fl P Ar passphrase 79.Op Fl P Ar passphrase
@@ -93,6 +96,7 @@
93.Op Fl f Ar known_hosts_file 96.Op Fl f Ar known_hosts_file
94.Nm ssh-keygen 97.Nm ssh-keygen
95.Fl K 98.Fl K
99.Op Fl a Ar rounds
96.Op Fl w Ar provider 100.Op Fl w Ar provider
97.Nm ssh-keygen 101.Nm ssh-keygen
98.Fl R Ar hostname 102.Fl R Ar hostname
@@ -125,6 +129,7 @@
125.Op Fl f Ar input_keyfile 129.Op Fl f Ar input_keyfile
126.Nm ssh-keygen 130.Nm ssh-keygen
127.Fl A 131.Fl A
132.Op Fl a Ar rounds
128.Op Fl f Ar prefix_path 133.Op Fl f Ar prefix_path
129.Nm ssh-keygen 134.Nm ssh-keygen
130.Fl k 135.Fl k
@@ -246,7 +251,9 @@ keys may be converted using this option in conjunction with the
246.Fl p 251.Fl p
247(change passphrase) flag. 252(change passphrase) flag.
248.Pp 253.Pp
249After a key is generated, instructions below detail where the keys 254After a key is generated,
255.Nm
256will ask where the keys
250should be placed to be activated. 257should be placed to be activated.
251.Pp 258.Pp
252The options are as follows: 259The options are as follows:
@@ -266,6 +273,7 @@ When saving a private key, this option specifies the number of KDF
266(key derivation function) rounds used. 273(key derivation function) rounds used.
267Higher numbers result in slower passphrase verification and increased 274Higher numbers result in slower passphrase verification and increased
268resistance to brute-force password cracking (should the keys be stolen). 275resistance to brute-force password cracking (should the keys be stolen).
276The default is 16 rounds.
269.It Fl B 277.It Fl B
270Show the bubblebabble digest of specified private or public key file. 278Show the bubblebabble digest of specified private or public key file.
271.It Fl b Ar bits 279.It Fl b Ar bits
@@ -370,6 +378,8 @@ The default import format is
370Download resident keys from a FIDO authenticator. 378Download resident keys from a FIDO authenticator.
371Public and private key files will be written to the current directory for 379Public and private key files will be written to the current directory for
372each downloaded key. 380each downloaded key.
381If multiple FIDO authenticators are attached, keys will be downloaded from
382the first touched authenticator.
373.It Fl k 383.It Fl k
374Generate a KRL file. 384Generate a KRL file.
375In this mode, 385In this mode,
@@ -499,10 +509,17 @@ A username to be associated with a resident key,
499overriding the empty default username. 509overriding the empty default username.
500Specifying a username may be useful when generating multiple resident keys 510Specifying a username may be useful when generating multiple resident keys
501for the same application name. 511for the same application name.
512.It Cm verify-required
513Indicate that this private key should require user verification for
514each signature.
515Not all FIDO tokens support this option.
516Currently PIN authentication is the only supported verification method,
517but other methods may be supported in the future.
502.It Cm write-attestation Ns = Ns Ar path 518.It Cm write-attestation Ns = Ns Ar path
503May be used at key generation time to record the attestation certificate 519May be used at key generation time to record the attestation data
504returned from FIDO tokens during key generation. 520returned from FIDO tokens during key generation.
505By default this information is discarded. 521Please note that this information is potentially sensitive.
522By default, this information is discarded.
506.El 523.El
507.Pp 524.Pp
508The 525The
@@ -949,7 +966,7 @@ by
949Allows X11 forwarding. 966Allows X11 forwarding.
950.Pp 967.Pp
951.It Ic no-touch-required 968.It Ic no-touch-required
952Do not require signatures made using this key require demonstration 969Do not require signatures made using this key include demonstration
953of user presence (e.g. by having the user touch the authenticator). 970of user presence (e.g. by having the user touch the authenticator).
954This option only makes sense for the FIDO authenticator algorithms 971This option only makes sense for the FIDO authenticator algorithms
955.Cm ecdsa-sk 972.Cm ecdsa-sk
@@ -962,6 +979,16 @@ The
962.Ar address_list 979.Ar address_list
963is a comma-separated list of one or more address/netmask pairs in CIDR 980is a comma-separated list of one or more address/netmask pairs in CIDR
964format. 981format.
982.Pp
983.It Ic verify-required
984Require signatures made using this key indicate that the user was first
985verified.
986This option only makes sense for the FIDO authenticator algorithms
987.Cm ecdsa-sk
988and
989.Cm ed25519-sk .
990Currently PIN authentication is the only supported verification method,
991but other methods may be supported in the future.
965.El 992.El
966.Pp 993.Pp
967At present, no standard options are valid for host keys. 994At present, no standard options are valid for host keys.
diff --git a/ssh-keygen.c b/ssh-keygen.c
index 2c5c75db7..a12b79a56 100644
--- a/ssh-keygen.c
+++ b/ssh-keygen.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-keygen.c,v 1.409.2.1 2020/05/18 19:02:13 benno Exp $ */ 1/* $OpenBSD: ssh-keygen.c,v 1.420 2020/09/09 03:08:01 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1994 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1994 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -133,13 +133,13 @@ static char *certflags_command = NULL;
133static char *certflags_src_addr = NULL; 133static char *certflags_src_addr = NULL;
134 134
135/* Arbitrary extensions specified by user */ 135/* Arbitrary extensions specified by user */
136struct cert_userext { 136struct cert_ext {
137 char *key; 137 char *key;
138 char *val; 138 char *val;
139 int crit; 139 int crit;
140}; 140};
141static struct cert_userext *cert_userext; 141static struct cert_ext *cert_ext;
142static size_t ncert_userext; 142static size_t ncert_ext;
143 143
144/* Conversion to/from various formats */ 144/* Conversion to/from various formats */
145enum { 145enum {
@@ -589,7 +589,7 @@ do_convert_private_ssh2(struct sshbuf *b)
589 589
590 /* try the key */ 590 /* try the key */
591 if (sshkey_sign(key, &sig, &slen, data, sizeof(data), 591 if (sshkey_sign(key, &sig, &slen, data, sizeof(data),
592 NULL, NULL, 0) != 0 || 592 NULL, NULL, NULL, 0) != 0 ||
593 sshkey_verify(key, sig, slen, data, sizeof(data), 593 sshkey_verify(key, sig, slen, data, sizeof(data),
594 NULL, 0, NULL) != 0) { 594 NULL, 0, NULL) != 0) {
595 sshkey_free(key); 595 sshkey_free(key);
@@ -815,10 +815,14 @@ do_print_public(struct passwd *pw)
815 prv = load_identity(identity_file, &comment); 815 prv = load_identity(identity_file, &comment);
816 if ((r = sshkey_write(prv, stdout)) != 0) 816 if ((r = sshkey_write(prv, stdout)) != 0)
817 error("sshkey_write failed: %s", ssh_err(r)); 817 error("sshkey_write failed: %s", ssh_err(r));
818 sshkey_free(prv);
819 if (comment != NULL && *comment != '\0') 818 if (comment != NULL && *comment != '\0')
820 fprintf(stdout, " %s", comment); 819 fprintf(stdout, " %s", comment);
821 fprintf(stdout, "\n"); 820 fprintf(stdout, "\n");
821 if (sshkey_is_sk(prv)) {
822 debug("sk_application: \"%s\", sk_flags 0x%02x",
823 prv->sk_application, prv->sk_flags);
824 }
825 sshkey_free(prv);
822 free(comment); 826 free(comment);
823 exit(0); 827 exit(0);
824} 828}
@@ -1292,6 +1296,7 @@ do_known_hosts(struct passwd *pw, const char *name, int find_host,
1292 int r, fd, oerrno, inplace = 0; 1296 int r, fd, oerrno, inplace = 0;
1293 struct known_hosts_ctx ctx; 1297 struct known_hosts_ctx ctx;
1294 u_int foreach_options; 1298 u_int foreach_options;
1299 struct stat sb;
1295 1300
1296 if (!have_identity) { 1301 if (!have_identity) {
1297 cp = tilde_expand_filename(_PATH_SSH_USER_HOSTFILE, pw->pw_uid); 1302 cp = tilde_expand_filename(_PATH_SSH_USER_HOSTFILE, pw->pw_uid);
@@ -1301,6 +1306,8 @@ do_known_hosts(struct passwd *pw, const char *name, int find_host,
1301 free(cp); 1306 free(cp);
1302 have_identity = 1; 1307 have_identity = 1;
1303 } 1308 }
1309 if (stat(identity_file, &sb) != 0)
1310 fatal("Cannot stat %s: %s", identity_file, strerror(errno));
1304 1311
1305 memset(&ctx, 0, sizeof(ctx)); 1312 memset(&ctx, 0, sizeof(ctx));
1306 ctx.out = stdout; 1313 ctx.out = stdout;
@@ -1327,6 +1334,7 @@ do_known_hosts(struct passwd *pw, const char *name, int find_host,
1327 unlink(tmp); 1334 unlink(tmp);
1328 fatal("fdopen: %s", strerror(oerrno)); 1335 fatal("fdopen: %s", strerror(oerrno));
1329 } 1336 }
1337 fchmod(fd, sb.st_mode & 0644);
1330 inplace = 1; 1338 inplace = 1;
1331 } 1339 }
1332 /* XXX support identity_file == "-" for stdin */ 1340 /* XXX support identity_file == "-" for stdin */
@@ -1597,31 +1605,32 @@ do_change_comment(struct passwd *pw, const char *identity_comment)
1597} 1605}
1598 1606
1599static void 1607static void
1600add_flag_option(struct sshbuf *c, const char *name) 1608cert_ext_add(const char *key, const char *value, int iscrit)
1601{ 1609{
1602 int r; 1610 cert_ext = xreallocarray(cert_ext, ncert_ext + 1, sizeof(*cert_ext));
1603 1611 cert_ext[ncert_ext].key = xstrdup(key);
1604 debug3("%s: %s", __func__, name); 1612 cert_ext[ncert_ext].val = value == NULL ? NULL : xstrdup(value);
1605 if ((r = sshbuf_put_cstring(c, name)) != 0 || 1613 cert_ext[ncert_ext].crit = iscrit;
1606 (r = sshbuf_put_string(c, NULL, 0)) != 0) 1614 ncert_ext++;
1607 fatal("%s: buffer error: %s", __func__, ssh_err(r));
1608} 1615}
1609 1616
1610static void 1617/* qsort(3) comparison function for certificate extensions */
1611add_string_option(struct sshbuf *c, const char *name, const char *value) 1618static int
1619cert_ext_cmp(const void *_a, const void *_b)
1612{ 1620{
1613 struct sshbuf *b; 1621 const struct cert_ext *a = (const struct cert_ext *)_a;
1622 const struct cert_ext *b = (const struct cert_ext *)_b;
1614 int r; 1623 int r;
1615 1624
1616 debug3("%s: %s=%s", __func__, name, value); 1625 if (a->crit != b->crit)
1617 if ((b = sshbuf_new()) == NULL) 1626 return (a->crit < b->crit) ? -1 : 1;
1618 fatal("%s: sshbuf_new failed", __func__); 1627 if ((r = strcmp(a->key, b->key)) != 0)
1619 if ((r = sshbuf_put_cstring(b, value)) != 0 || 1628 return r;
1620 (r = sshbuf_put_cstring(c, name)) != 0 || 1629 if ((a->val == NULL) != (b->val == NULL))
1621 (r = sshbuf_put_stringb(c, b)) != 0) 1630 return (a->val == NULL) ? -1 : 1;
1622 fatal("%s: buffer error: %s", __func__, ssh_err(r)); 1631 if (a->val != NULL && (r = strcmp(a->val, b->val)) != 0)
1623 1632 return r;
1624 sshbuf_free(b); 1633 return 0;
1625} 1634}
1626 1635
1627#define OPTIONS_CRITICAL 1 1636#define OPTIONS_CRITICAL 1
@@ -1629,44 +1638,62 @@ add_string_option(struct sshbuf *c, const char *name, const char *value)
1629static void 1638static void
1630prepare_options_buf(struct sshbuf *c, int which) 1639prepare_options_buf(struct sshbuf *c, int which)
1631{ 1640{
1641 struct sshbuf *b;
1632 size_t i; 1642 size_t i;
1643 int r;
1644 const struct cert_ext *ext;
1633 1645
1646 if ((b = sshbuf_new()) == NULL)
1647 fatal("%s: sshbuf_new failed", __func__);
1634 sshbuf_reset(c); 1648 sshbuf_reset(c);
1635 if ((which & OPTIONS_CRITICAL) != 0 && 1649 for (i = 0; i < ncert_ext; i++) {
1636 certflags_command != NULL) 1650 ext = &cert_ext[i];
1637 add_string_option(c, "force-command", certflags_command); 1651 if ((ext->crit && (which & OPTIONS_EXTENSIONS)) ||
1638 if ((which & OPTIONS_EXTENSIONS) != 0 && 1652 (!ext->crit && (which & OPTIONS_CRITICAL)))
1639 (certflags_flags & CERTOPT_X_FWD) != 0)
1640 add_flag_option(c, "permit-X11-forwarding");
1641 if ((which & OPTIONS_EXTENSIONS) != 0 &&
1642 (certflags_flags & CERTOPT_AGENT_FWD) != 0)
1643 add_flag_option(c, "permit-agent-forwarding");
1644 if ((which & OPTIONS_EXTENSIONS) != 0 &&
1645 (certflags_flags & CERTOPT_PORT_FWD) != 0)
1646 add_flag_option(c, "permit-port-forwarding");
1647 if ((which & OPTIONS_EXTENSIONS) != 0 &&
1648 (certflags_flags & CERTOPT_PTY) != 0)
1649 add_flag_option(c, "permit-pty");
1650 if ((which & OPTIONS_EXTENSIONS) != 0 &&
1651 (certflags_flags & CERTOPT_USER_RC) != 0)
1652 add_flag_option(c, "permit-user-rc");
1653 if ((which & OPTIONS_EXTENSIONS) != 0 &&
1654 (certflags_flags & CERTOPT_NO_REQUIRE_USER_PRESENCE) != 0)
1655 add_flag_option(c, "no-touch-required");
1656 if ((which & OPTIONS_CRITICAL) != 0 &&
1657 certflags_src_addr != NULL)
1658 add_string_option(c, "source-address", certflags_src_addr);
1659 for (i = 0; i < ncert_userext; i++) {
1660 if ((cert_userext[i].crit && (which & OPTIONS_EXTENSIONS)) ||
1661 (!cert_userext[i].crit && (which & OPTIONS_CRITICAL)))
1662 continue; 1653 continue;
1663 if (cert_userext[i].val == NULL) 1654 if (ext->val == NULL) {
1664 add_flag_option(c, cert_userext[i].key); 1655 /* flag option */
1665 else { 1656 debug3("%s: %s", __func__, ext->key);
1666 add_string_option(c, cert_userext[i].key, 1657 if ((r = sshbuf_put_cstring(c, ext->key)) != 0 ||
1667 cert_userext[i].val); 1658 (r = sshbuf_put_string(c, NULL, 0)) != 0)
1659 fatal("%s: buffer: %s", __func__, ssh_err(r));
1660 } else {
1661 /* key/value option */
1662 debug3("%s: %s=%s", __func__, ext->key, ext->val);
1663 sshbuf_reset(b);
1664 if ((r = sshbuf_put_cstring(c, ext->key)) != 0 ||
1665 (r = sshbuf_put_cstring(b, ext->val)) != 0 ||
1666 (r = sshbuf_put_stringb(c, b)) != 0)
1667 fatal("%s: buffer: %s", __func__, ssh_err(r));
1668 } 1668 }
1669 } 1669 }
1670 sshbuf_free(b);
1671}
1672
1673static void
1674finalise_cert_exts(void)
1675{
1676 /* critical options */
1677 if (certflags_command != NULL)
1678 cert_ext_add("force-command", certflags_command, 1);
1679 if (certflags_src_addr != NULL)
1680 cert_ext_add("source-address", certflags_src_addr, 1);
1681 /* extensions */
1682 if ((certflags_flags & CERTOPT_X_FWD) != 0)
1683 cert_ext_add("permit-X11-forwarding", NULL, 0);
1684 if ((certflags_flags & CERTOPT_AGENT_FWD) != 0)
1685 cert_ext_add("permit-agent-forwarding", NULL, 0);
1686 if ((certflags_flags & CERTOPT_PORT_FWD) != 0)
1687 cert_ext_add("permit-port-forwarding", NULL, 0);
1688 if ((certflags_flags & CERTOPT_PTY) != 0)
1689 cert_ext_add("permit-pty", NULL, 0);
1690 if ((certflags_flags & CERTOPT_USER_RC) != 0)
1691 cert_ext_add("permit-user-rc", NULL, 0);
1692 if ((certflags_flags & CERTOPT_NO_REQUIRE_USER_PRESENCE) != 0)
1693 cert_ext_add("no-touch-required", NULL, 0);
1694 /* order lexically by key */
1695 if (ncert_ext > 0)
1696 qsort(cert_ext, ncert_ext, sizeof(*cert_ext), cert_ext_cmp);
1670} 1697}
1671 1698
1672static struct sshkey * 1699static struct sshkey *
@@ -1704,7 +1731,8 @@ load_pkcs11_key(char *path)
1704static int 1731static int
1705agent_signer(struct sshkey *key, u_char **sigp, size_t *lenp, 1732agent_signer(struct sshkey *key, u_char **sigp, size_t *lenp,
1706 const u_char *data, size_t datalen, 1733 const u_char *data, size_t datalen,
1707 const char *alg, const char *provider, u_int compat, void *ctx) 1734 const char *alg, const char *provider, const char *pin,
1735 u_int compat, void *ctx)
1708{ 1736{
1709 int *agent_fdp = (int *)ctx; 1737 int *agent_fdp = (int *)ctx;
1710 1738
@@ -1721,7 +1749,7 @@ do_ca_sign(struct passwd *pw, const char *ca_key_path, int prefer_agent,
1721 u_int n; 1749 u_int n;
1722 struct sshkey *ca, *public; 1750 struct sshkey *ca, *public;
1723 char valid[64], *otmp, *tmp, *cp, *out, *comment; 1751 char valid[64], *otmp, *tmp, *cp, *out, *comment;
1724 char *ca_fp = NULL, **plist = NULL; 1752 char *ca_fp = NULL, **plist = NULL, *pin = NULL;
1725 struct ssh_identitylist *agent_ids; 1753 struct ssh_identitylist *agent_ids;
1726 size_t j; 1754 size_t j;
1727 struct notifier_ctx *notifier = NULL; 1755 struct notifier_ctx *notifier = NULL;
@@ -1762,6 +1790,12 @@ do_ca_sign(struct passwd *pw, const char *ca_key_path, int prefer_agent,
1762 } else { 1790 } else {
1763 /* CA key is assumed to be a private key on the filesystem */ 1791 /* CA key is assumed to be a private key on the filesystem */
1764 ca = load_identity(tmp, NULL); 1792 ca = load_identity(tmp, NULL);
1793 if (sshkey_is_sk(ca) &&
1794 (ca->sk_flags & SSH_SK_USER_VERIFICATION_REQD)) {
1795 if ((pin = read_passphrase("Enter PIN for CA key: ",
1796 RP_ALLOW_STDIN)) == NULL)
1797 fatal("%s: couldn't read PIN", __func__);
1798 }
1765 } 1799 }
1766 free(tmp); 1800 free(tmp);
1767 1801
@@ -1776,6 +1810,7 @@ do_ca_sign(struct passwd *pw, const char *ca_key_path, int prefer_agent,
1776 } 1810 }
1777 ca_fp = sshkey_fingerprint(ca, fingerprint_hash, SSH_FP_DEFAULT); 1811 ca_fp = sshkey_fingerprint(ca, fingerprint_hash, SSH_FP_DEFAULT);
1778 1812
1813 finalise_cert_exts();
1779 for (i = 0; i < argc; i++) { 1814 for (i = 0; i < argc; i++) {
1780 /* Split list of principals */ 1815 /* Split list of principals */
1781 n = 0; 1816 n = 0;
@@ -1820,7 +1855,7 @@ do_ca_sign(struct passwd *pw, const char *ca_key_path, int prefer_agent,
1820 1855
1821 if (agent_fd != -1 && (ca->flags & SSHKEY_FLAG_EXT) != 0) { 1856 if (agent_fd != -1 && (ca->flags & SSHKEY_FLAG_EXT) != 0) {
1822 if ((r = sshkey_certify_custom(public, ca, 1857 if ((r = sshkey_certify_custom(public, ca,
1823 key_type_name, sk_provider, agent_signer, 1858 key_type_name, sk_provider, NULL, agent_signer,
1824 &agent_fd)) != 0) 1859 &agent_fd)) != 0)
1825 fatal("Couldn't certify key %s via agent: %s", 1860 fatal("Couldn't certify key %s via agent: %s",
1826 tmp, ssh_err(r)); 1861 tmp, ssh_err(r));
@@ -1832,7 +1867,7 @@ do_ca_sign(struct passwd *pw, const char *ca_key_path, int prefer_agent,
1832 sshkey_type(ca), ca_fp); 1867 sshkey_type(ca), ca_fp);
1833 } 1868 }
1834 r = sshkey_certify(public, ca, key_type_name, 1869 r = sshkey_certify(public, ca, key_type_name,
1835 sk_provider); 1870 sk_provider, pin);
1836 notify_complete(notifier); 1871 notify_complete(notifier);
1837 if (r != 0) 1872 if (r != 0)
1838 fatal("Couldn't certify key %s: %s", 1873 fatal("Couldn't certify key %s: %s",
@@ -1866,6 +1901,8 @@ do_ca_sign(struct passwd *pw, const char *ca_key_path, int prefer_agent,
1866 if (cert_serial_autoinc) 1901 if (cert_serial_autoinc)
1867 cert_serial++; 1902 cert_serial++;
1868 } 1903 }
1904 if (pin != NULL)
1905 freezero(pin, strlen(pin));
1869 free(ca_fp); 1906 free(ca_fp);
1870#ifdef ENABLE_PKCS11 1907#ifdef ENABLE_PKCS11
1871 pkcs11_terminate(); 1908 pkcs11_terminate();
@@ -1990,13 +2027,8 @@ add_cert_option(char *opt)
1990 val = xstrdup(strchr(opt, ':') + 1); 2027 val = xstrdup(strchr(opt, ':') + 1);
1991 if ((cp = strchr(val, '=')) != NULL) 2028 if ((cp = strchr(val, '=')) != NULL)
1992 *cp++ = '\0'; 2029 *cp++ = '\0';
1993 cert_userext = xreallocarray(cert_userext, ncert_userext + 1, 2030 cert_ext_add(val, cp, iscrit);
1994 sizeof(*cert_userext)); 2031 free(val);
1995 cert_userext[ncert_userext].key = val;
1996 cert_userext[ncert_userext].val = cp == NULL ?
1997 NULL : xstrdup(cp);
1998 cert_userext[ncert_userext].crit = iscrit;
1999 ncert_userext++;
2000 } else 2032 } else
2001 fatal("Unsupported certificate option \"%s\"", opt); 2033 fatal("Unsupported certificate option \"%s\"", opt);
2002} 2034}
@@ -2004,7 +2036,7 @@ add_cert_option(char *opt)
2004static void 2036static void
2005show_options(struct sshbuf *optbuf, int in_critical) 2037show_options(struct sshbuf *optbuf, int in_critical)
2006{ 2038{
2007 char *name, *arg; 2039 char *name, *arg, *hex;
2008 struct sshbuf *options, *option = NULL; 2040 struct sshbuf *options, *option = NULL;
2009 int r; 2041 int r;
2010 2042
@@ -2033,11 +2065,14 @@ show_options(struct sshbuf *optbuf, int in_critical)
2033 __func__, ssh_err(r)); 2065 __func__, ssh_err(r));
2034 printf(" %s\n", arg); 2066 printf(" %s\n", arg);
2035 free(arg); 2067 free(arg);
2036 } else { 2068 } else if (sshbuf_len(option) > 0) {
2037 printf(" UNKNOWN OPTION (len %zu)\n", 2069 hex = sshbuf_dtob16(option);
2038 sshbuf_len(option)); 2070 printf(" UNKNOWN OPTION: %s (len %zu)\n",
2071 hex, sshbuf_len(option));
2039 sshbuf_reset(option); 2072 sshbuf_reset(option);
2040 } 2073 free(hex);
2074 } else
2075 printf(" UNKNOWN FLAG OPTION\n");
2041 free(name); 2076 free(name);
2042 if (sshbuf_len(option) != 0) 2077 if (sshbuf_len(option) != 0)
2043 fatal("Option corrupt: extra data at end"); 2078 fatal("Option corrupt: extra data at end");
@@ -2504,6 +2539,7 @@ sign_one(struct sshkey *signkey, const char *filename, int fd,
2504 struct sshbuf *sigbuf = NULL, *abuf = NULL; 2539 struct sshbuf *sigbuf = NULL, *abuf = NULL;
2505 int r = SSH_ERR_INTERNAL_ERROR, wfd = -1, oerrno; 2540 int r = SSH_ERR_INTERNAL_ERROR, wfd = -1, oerrno;
2506 char *wfile = NULL, *asig = NULL, *fp = NULL; 2541 char *wfile = NULL, *asig = NULL, *fp = NULL;
2542 char *pin = NULL, *prompt = NULL;
2507 2543
2508 if (!quiet) { 2544 if (!quiet) {
2509 if (fd == STDIN_FILENO) 2545 if (fd == STDIN_FILENO)
@@ -2511,17 +2547,25 @@ sign_one(struct sshkey *signkey, const char *filename, int fd,
2511 else 2547 else
2512 fprintf(stderr, "Signing file %s\n", filename); 2548 fprintf(stderr, "Signing file %s\n", filename);
2513 } 2549 }
2514 if (signer == NULL && sshkey_is_sk(signkey) && 2550 if (signer == NULL && sshkey_is_sk(signkey)) {
2515 (signkey->sk_flags & SSH_SK_USER_PRESENCE_REQD)) { 2551 if ((signkey->sk_flags & SSH_SK_USER_VERIFICATION_REQD)) {
2516 if ((fp = sshkey_fingerprint(signkey, fingerprint_hash, 2552 xasprintf(&prompt, "Enter PIN for %s key: ",
2517 SSH_FP_DEFAULT)) == NULL) 2553 sshkey_type(signkey));
2518 fatal("%s: sshkey_fingerprint failed", __func__); 2554 if ((pin = read_passphrase(prompt,
2519 fprintf(stderr, "Confirm user presence for key %s %s\n", 2555 RP_ALLOW_STDIN)) == NULL)
2520 sshkey_type(signkey), fp); 2556 fatal("%s: couldn't read PIN", __func__);
2521 free(fp); 2557 }
2558 if ((signkey->sk_flags & SSH_SK_USER_PRESENCE_REQD)) {
2559 if ((fp = sshkey_fingerprint(signkey, fingerprint_hash,
2560 SSH_FP_DEFAULT)) == NULL)
2561 fatal("%s: fingerprint failed", __func__);
2562 fprintf(stderr, "Confirm user presence for key %s %s\n",
2563 sshkey_type(signkey), fp);
2564 free(fp);
2565 }
2522 } 2566 }
2523 if ((r = sshsig_sign_fd(signkey, NULL, sk_provider, fd, sig_namespace, 2567 if ((r = sshsig_sign_fd(signkey, NULL, sk_provider, pin,
2524 &sigbuf, signer, signer_ctx)) != 0) { 2568 fd, sig_namespace, &sigbuf, signer, signer_ctx)) != 0) {
2525 error("Signing %s failed: %s", filename, ssh_err(r)); 2569 error("Signing %s failed: %s", filename, ssh_err(r));
2526 goto out; 2570 goto out;
2527 } 2571 }
@@ -2569,7 +2613,10 @@ sign_one(struct sshkey *signkey, const char *filename, int fd,
2569 r = 0; 2613 r = 0;
2570 out: 2614 out:
2571 free(wfile); 2615 free(wfile);
2616 free(prompt);
2572 free(asig); 2617 free(asig);
2618 if (pin != NULL)
2619 freezero(pin, strlen(pin));
2573 sshbuf_free(abuf); 2620 sshbuf_free(abuf);
2574 sshbuf_free(sigbuf); 2621 sshbuf_free(sigbuf);
2575 if (wfd != -1) 2622 if (wfd != -1)
@@ -2934,27 +2981,24 @@ do_download_sk(const char *skprovider, const char *device)
2934{ 2981{
2935 struct sshkey **keys; 2982 struct sshkey **keys;
2936 size_t nkeys, i; 2983 size_t nkeys, i;
2937 int r, ok = -1; 2984 int r, ret = -1;
2938 char *fp, *pin = NULL, *pass = NULL, *path, *pubpath; 2985 char *fp, *pin = NULL, *pass = NULL, *path, *pubpath;
2939 const char *ext; 2986 const char *ext;
2940 2987
2941 if (skprovider == NULL) 2988 if (skprovider == NULL)
2942 fatal("Cannot download keys without provider"); 2989 fatal("Cannot download keys without provider");
2943 2990
2944 for (i = 0; i < 2; i++) { 2991 pin = read_passphrase("Enter PIN for authenticator: ", RP_ALLOW_STDIN);
2945 if (i == 1) { 2992 if (!quiet) {
2946 pin = read_passphrase("Enter PIN for authenticator: ", 2993 printf("You may need to touch your authenticator "
2947 RP_ALLOW_STDIN); 2994 "to authorize key download.\n");
2948 } 2995 }
2949 if ((r = sshsk_load_resident(skprovider, device, pin, 2996 if ((r = sshsk_load_resident(skprovider, device, pin,
2950 &keys, &nkeys)) != 0) { 2997 &keys, &nkeys)) != 0) {
2951 if (i == 0 && r == SSH_ERR_KEY_WRONG_PASSPHRASE) 2998 if (pin != NULL)
2952 continue; 2999 freezero(pin, strlen(pin));
2953 if (pin != NULL) 3000 error("Unable to load resident keys: %s", ssh_err(r));
2954 freezero(pin, strlen(pin)); 3001 return -1;
2955 error("Unable to load resident keys: %s", ssh_err(r));
2956 return -1;
2957 }
2958 } 3002 }
2959 if (nkeys == 0) 3003 if (nkeys == 0)
2960 logit("No keys to download"); 3004 logit("No keys to download");
@@ -3018,28 +3062,50 @@ do_download_sk(const char *skprovider, const char *device)
3018 } 3062 }
3019 3063
3020 if (i >= nkeys) 3064 if (i >= nkeys)
3021 ok = 0; /* success */ 3065 ret = 0; /* success */
3022 if (pass != NULL) 3066 if (pass != NULL)
3023 freezero(pass, strlen(pass)); 3067 freezero(pass, strlen(pass));
3024 for (i = 0; i < nkeys; i++) 3068 for (i = 0; i < nkeys; i++)
3025 sshkey_free(keys[i]); 3069 sshkey_free(keys[i]);
3026 free(keys); 3070 free(keys);
3027 return ok ? 0 : -1; 3071 return ret;
3072}
3073
3074static void
3075save_attestation(struct sshbuf *attest, const char *path)
3076{
3077 mode_t omask;
3078 int r;
3079
3080 if (path == NULL)
3081 return; /* nothing to do */
3082 if (attest == NULL || sshbuf_len(attest) == 0)
3083 fatal("Enrollment did not return attestation data");
3084 omask = umask(077);
3085 r = sshbuf_write_file(path, attest);
3086 umask(omask);
3087 if (r != 0)
3088 fatal("Unable to write attestation data \"%s\": %s", path,
3089 ssh_err(r));
3090 if (!quiet)
3091 printf("Your FIDO attestation certificate has been saved in "
3092 "%s\n", path);
3028} 3093}
3029 3094
3030static void 3095static void
3031usage(void) 3096usage(void)
3032{ 3097{
3033 fprintf(stderr, 3098 fprintf(stderr,
3034 "usage: ssh-keygen [-q] [-b bits] [-C comment] [-f output_keyfile] [-m format]\n" 3099 "usage: ssh-keygen [-q] [-a rounds] [-b bits] [-C comment] [-f output_keyfile]\n"
3100 " [-m format] [-N new_passphrase] [-O option]\n"
3035 " [-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa]\n" 3101 " [-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa]\n"
3036 " [-N new_passphrase] [-O option] [-w provider]\n" 3102 " [-w provider]\n"
3037 " ssh-keygen -p [-f keyfile] [-m format] [-N new_passphrase]\n" 3103 " ssh-keygen -p [-a rounds] [-f keyfile] [-m format] [-N new_passphrase]\n"
3038 " [-P old_passphrase]\n" 3104 " [-P old_passphrase]\n"
3039 " ssh-keygen -i [-f input_keyfile] [-m key_format]\n" 3105 " ssh-keygen -i [-f input_keyfile] [-m key_format]\n"
3040 " ssh-keygen -e [-f input_keyfile] [-m key_format]\n" 3106 " ssh-keygen -e [-f input_keyfile] [-m key_format]\n"
3041 " ssh-keygen -y [-f input_keyfile]\n" 3107 " ssh-keygen -y [-f input_keyfile]\n"
3042 " ssh-keygen -c [-C comment] [-f keyfile] [-P passphrase]\n" 3108 " ssh-keygen -c [-a rounds] [-C comment] [-f keyfile] [-P passphrase]\n"
3043 " ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]\n" 3109 " ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]\n"
3044 " ssh-keygen -B [-f input_keyfile]\n"); 3110 " ssh-keygen -B [-f input_keyfile]\n");
3045#ifdef ENABLE_PKCS11 3111#ifdef ENABLE_PKCS11
@@ -3049,7 +3115,7 @@ usage(void)
3049 fprintf(stderr, 3115 fprintf(stderr,
3050 " ssh-keygen -F hostname [-lv] [-f known_hosts_file]\n" 3116 " ssh-keygen -F hostname [-lv] [-f known_hosts_file]\n"
3051 " ssh-keygen -H [-f known_hosts_file]\n" 3117 " ssh-keygen -H [-f known_hosts_file]\n"
3052 " ssh-keygen -K [-w provider]\n" 3118 " ssh-keygen -K [-a rounds] [-w provider]\n"
3053 " ssh-keygen -R hostname [-f known_hosts_file]\n" 3119 " ssh-keygen -R hostname [-f known_hosts_file]\n"
3054 " ssh-keygen -r hostname [-g] [-f input_keyfile]\n" 3120 " ssh-keygen -r hostname [-g] [-f input_keyfile]\n"
3055#ifdef WITH_OPENSSL 3121#ifdef WITH_OPENSSL
@@ -3060,7 +3126,7 @@ usage(void)
3060 " [-n principals] [-O option] [-V validity_interval]\n" 3126 " [-n principals] [-O option] [-V validity_interval]\n"
3061 " [-z serial_number] file ...\n" 3127 " [-z serial_number] file ...\n"
3062 " ssh-keygen -L [-f input_keyfile]\n" 3128 " ssh-keygen -L [-f input_keyfile]\n"
3063 " ssh-keygen -A [-f prefix_path]\n" 3129 " ssh-keygen -A [-a rounds] [-f prefix_path]\n"
3064 " ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number]\n" 3130 " ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number]\n"
3065 " file ...\n" 3131 " file ...\n"
3066 " ssh-keygen -Q [-l] -f krl_file [file ...]\n" 3132 " ssh-keygen -Q [-l] -f krl_file [file ...]\n"
@@ -3078,11 +3144,10 @@ usage(void)
3078int 3144int
3079main(int argc, char **argv) 3145main(int argc, char **argv)
3080{ 3146{
3081 char dotsshdir[PATH_MAX], comment[1024], *passphrase; 3147 char comment[1024], *passphrase;
3082 char *rr_hostname = NULL, *ep, *fp, *ra; 3148 char *rr_hostname = NULL, *ep, *fp, *ra;
3083 struct sshkey *private, *public; 3149 struct sshkey *private, *public;
3084 struct passwd *pw; 3150 struct passwd *pw;
3085 struct stat st;
3086 int r, opt, type; 3151 int r, opt, type;
3087 int change_passphrase = 0, change_comment = 0, show_cert = 0; 3152 int change_passphrase = 0, change_comment = 0, show_cert = 0;
3088 int find_host = 0, delete_host = 0, hash_hosts = 0; 3153 int find_host = 0, delete_host = 0, hash_hosts = 0;
@@ -3093,7 +3158,7 @@ main(int argc, char **argv)
3093 unsigned long long cert_serial = 0; 3158 unsigned long long cert_serial = 0;
3094 char *identity_comment = NULL, *ca_key_path = NULL, **opts = NULL; 3159 char *identity_comment = NULL, *ca_key_path = NULL, **opts = NULL;
3095 char *sk_application = NULL, *sk_device = NULL, *sk_user = NULL; 3160 char *sk_application = NULL, *sk_device = NULL, *sk_user = NULL;
3096 char *sk_attestaion_path = NULL; 3161 char *sk_attestation_path = NULL;
3097 struct sshbuf *challenge = NULL, *attest = NULL; 3162 struct sshbuf *challenge = NULL, *attest = NULL;
3098 size_t i, nopts = 0; 3163 size_t i, nopts = 0;
3099 u_int32_t bits = 0; 3164 u_int32_t bits = 0;
@@ -3532,6 +3597,8 @@ main(int argc, char **argv)
3532 for (i = 0; i < nopts; i++) { 3597 for (i = 0; i < nopts; i++) {
3533 if (strcasecmp(opts[i], "no-touch-required") == 0) { 3598 if (strcasecmp(opts[i], "no-touch-required") == 0) {
3534 sk_flags &= ~SSH_SK_USER_PRESENCE_REQD; 3599 sk_flags &= ~SSH_SK_USER_PRESENCE_REQD;
3600 } else if (strcasecmp(opts[i], "verify-required") == 0) {
3601 sk_flags |= SSH_SK_USER_VERIFICATION_REQD;
3535 } else if (strcasecmp(opts[i], "resident") == 0) { 3602 } else if (strcasecmp(opts[i], "resident") == 0) {
3536 sk_flags |= SSH_SK_RESIDENT_KEY; 3603 sk_flags |= SSH_SK_RESIDENT_KEY;
3537 } else if (strncasecmp(opts[i], "device=", 7) == 0) { 3604 } else if (strncasecmp(opts[i], "device=", 7) == 0) {
@@ -3547,7 +3614,7 @@ main(int argc, char **argv)
3547 } 3614 }
3548 } else if (strncasecmp(opts[i], 3615 } else if (strncasecmp(opts[i],
3549 "write-attestation=", 18) == 0) { 3616 "write-attestation=", 18) == 0) {
3550 sk_attestaion_path = opts[i] + 18; 3617 sk_attestation_path = opts[i] + 18;
3551 } else if (strncasecmp(opts[i], 3618 } else if (strncasecmp(opts[i],
3552 "application=", 12) == 0) { 3619 "application=", 12) == 0) {
3553 sk_application = xstrdup(opts[i] + 12); 3620 sk_application = xstrdup(opts[i] + 12);
@@ -3564,9 +3631,15 @@ main(int argc, char **argv)
3564 printf("You may need to touch your authenticator " 3631 printf("You may need to touch your authenticator "
3565 "to authorize key generation.\n"); 3632 "to authorize key generation.\n");
3566 } 3633 }
3567 passphrase = NULL;
3568 if ((attest = sshbuf_new()) == NULL) 3634 if ((attest = sshbuf_new()) == NULL)
3569 fatal("sshbuf_new failed"); 3635 fatal("sshbuf_new failed");
3636 if ((sk_flags &
3637 (SSH_SK_USER_VERIFICATION_REQD|SSH_SK_RESIDENT_KEY))) {
3638 passphrase = read_passphrase("Enter PIN for "
3639 "authenticator: ", RP_ALLOW_STDIN);
3640 } else {
3641 passphrase = NULL;
3642 }
3570 for (i = 0 ; ; i++) { 3643 for (i = 0 ; ; i++) {
3571 fflush(stdout); 3644 fflush(stdout);
3572 r = sshsk_enroll(type, sk_provider, sk_device, 3645 r = sshsk_enroll(type, sk_provider, sk_device,
@@ -3577,9 +3650,8 @@ main(int argc, char **argv)
3577 break; 3650 break;
3578 if (r != SSH_ERR_KEY_WRONG_PASSPHRASE) 3651 if (r != SSH_ERR_KEY_WRONG_PASSPHRASE)
3579 fatal("Key enrollment failed: %s", ssh_err(r)); 3652 fatal("Key enrollment failed: %s", ssh_err(r));
3580 else if (i > 0) 3653 else if (passphrase != NULL) {
3581 error("PIN incorrect"); 3654 error("PIN incorrect");
3582 if (passphrase != NULL) {
3583 freezero(passphrase, strlen(passphrase)); 3655 freezero(passphrase, strlen(passphrase));
3584 passphrase = NULL; 3656 passphrase = NULL;
3585 } 3657 }
@@ -3587,6 +3659,11 @@ main(int argc, char **argv)
3587 fatal("Too many incorrect PINs"); 3659 fatal("Too many incorrect PINs");
3588 passphrase = read_passphrase("Enter PIN for " 3660 passphrase = read_passphrase("Enter PIN for "
3589 "authenticator: ", RP_ALLOW_STDIN); 3661 "authenticator: ", RP_ALLOW_STDIN);
3662 if (!quiet) {
3663 printf("You may need to touch your "
3664 "authenticator (again) to authorize "
3665 "key generation.\n");
3666 }
3590 } 3667 }
3591 if (passphrase != NULL) { 3668 if (passphrase != NULL) {
3592 freezero(passphrase, strlen(passphrase)); 3669 freezero(passphrase, strlen(passphrase));
@@ -3605,20 +3682,8 @@ main(int argc, char **argv)
3605 ask_filename(pw, "Enter file in which to save the key"); 3682 ask_filename(pw, "Enter file in which to save the key");
3606 3683
3607 /* Create ~/.ssh directory if it doesn't already exist. */ 3684 /* Create ~/.ssh directory if it doesn't already exist. */
3608 snprintf(dotsshdir, sizeof dotsshdir, "%s/%s", 3685 hostfile_create_user_ssh_dir(identity_file, !quiet);
3609 pw->pw_dir, _PATH_SSH_USER_DIR); 3686
3610 if (strstr(identity_file, dotsshdir) != NULL) {
3611 if (stat(dotsshdir, &st) == -1) {
3612 if (errno != ENOENT) {
3613 error("Could not stat %s: %s", dotsshdir,
3614 strerror(errno));
3615 } else if (mkdir(dotsshdir, 0700) == -1) {
3616 error("Could not create directory '%s': %s",
3617 dotsshdir, strerror(errno));
3618 } else if (!quiet)
3619 printf("Created directory '%s'.\n", dotsshdir);
3620 }
3621 }
3622 /* If the file already exists, ask the user to confirm. */ 3687 /* If the file already exists, ask the user to confirm. */
3623 if (!confirm_overwrite(identity_file)) 3688 if (!confirm_overwrite(identity_file))
3624 exit(1); 3689 exit(1);
@@ -3671,20 +3736,9 @@ main(int argc, char **argv)
3671 free(fp); 3736 free(fp);
3672 } 3737 }
3673 3738
3674 if (sk_attestaion_path != NULL) { 3739 if (sk_attestation_path != NULL)
3675 if (attest == NULL || sshbuf_len(attest) == 0) { 3740 save_attestation(attest, sk_attestation_path);
3676 fatal("Enrollment did not return attestation " 3741
3677 "certificate");
3678 }
3679 if ((r = sshbuf_write_file(sk_attestaion_path, attest)) != 0) {
3680 fatal("Unable to write attestation certificate "
3681 "\"%s\": %s", sk_attestaion_path, ssh_err(r));
3682 }
3683 if (!quiet) {
3684 printf("Your FIDO attestation certificate has been "
3685 "saved in %s\n", sk_attestaion_path);
3686 }
3687 }
3688 sshbuf_free(attest); 3742 sshbuf_free(attest);
3689 sshkey_free(public); 3743 sshkey_free(public);
3690 3744
diff --git a/ssh-keyscan.0 b/ssh-keyscan.0
index 3bf9fa3aa..1a5fefcbf 100644
--- a/ssh-keyscan.0
+++ b/ssh-keyscan.0
@@ -93,4 +93,4 @@ AUTHORS
93 Davison <wayned@users.sourceforge.net> added support for protocol version 93 Davison <wayned@users.sourceforge.net> added support for protocol version
94 2. 94 2.
95 95
96OpenBSD 6.7 November 30, 2019 OpenBSD 6.7 96OpenBSD 6.8 November 30, 2019 OpenBSD 6.8
diff --git a/ssh-keyscan.c b/ssh-keyscan.c
index a5e644076..ca190428a 100644
--- a/ssh-keyscan.c
+++ b/ssh-keyscan.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-keyscan.c,v 1.131 2019/12/15 19:47:10 djm Exp $ */ 1/* $OpenBSD: ssh-keyscan.c,v 1.132 2020/08/12 01:23:45 cheloha Exp $ */
2/* 2/*
3 * Copyright 1995, 1996 by David Mazieres <dm@lcs.mit.edu>. 3 * Copyright 1995, 1996 by David Mazieres <dm@lcs.mit.edu>.
4 * 4 *
@@ -584,16 +584,9 @@ conloop(void)
584 monotime_tv(&now); 584 monotime_tv(&now);
585 c = TAILQ_FIRST(&tq); 585 c = TAILQ_FIRST(&tq);
586 586
587 if (c && (c->c_tv.tv_sec > now.tv_sec || 587 if (c && timercmp(&c->c_tv, &now, >))
588 (c->c_tv.tv_sec == now.tv_sec && c->c_tv.tv_usec > now.tv_usec))) { 588 timersub(&c->c_tv, &now, &seltime);
589 seltime = c->c_tv; 589 else
590 seltime.tv_sec -= now.tv_sec;
591 seltime.tv_usec -= now.tv_usec;
592 if (seltime.tv_usec < 0) {
593 seltime.tv_usec += 1000000;
594 seltime.tv_sec--;
595 }
596 } else
597 timerclear(&seltime); 590 timerclear(&seltime);
598 591
599 r = xcalloc(read_wait_nfdset, sizeof(fd_mask)); 592 r = xcalloc(read_wait_nfdset, sizeof(fd_mask));
@@ -616,8 +609,7 @@ conloop(void)
616 free(e); 609 free(e);
617 610
618 c = TAILQ_FIRST(&tq); 611 c = TAILQ_FIRST(&tq);
619 while (c && (c->c_tv.tv_sec < now.tv_sec || 612 while (c && timercmp(&c->c_tv, &now, <)) {
620 (c->c_tv.tv_sec == now.tv_sec && c->c_tv.tv_usec < now.tv_usec))) {
621 int s = c->c_fd; 613 int s = c->c_fd;
622 614
623 c = TAILQ_NEXT(c, c_link); 615 c = TAILQ_NEXT(c, c_link);
diff --git a/ssh-keysign.0 b/ssh-keysign.0
index c2a5dfdb1..b4ec3cc64 100644
--- a/ssh-keysign.0
+++ b/ssh-keysign.0
@@ -49,4 +49,4 @@ HISTORY
49AUTHORS 49AUTHORS
50 Markus Friedl <markus@openbsd.org> 50 Markus Friedl <markus@openbsd.org>
51 51
52OpenBSD 6.7 November 30, 2019 OpenBSD 6.7 52OpenBSD 6.8 November 30, 2019 OpenBSD 6.8
diff --git a/ssh-keysign.c b/ssh-keysign.c
index 3e3ea3e14..7991e0f01 100644
--- a/ssh-keysign.c
+++ b/ssh-keysign.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-keysign.c,v 1.63 2019/11/18 16:10:05 naddy Exp $ */ 1/* $OpenBSD: ssh-keysign.c,v 1.64 2020/08/27 01:06:18 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2002 Markus Friedl. All rights reserved. 3 * Copyright (c) 2002 Markus Friedl. All rights reserved.
4 * 4 *
@@ -278,7 +278,7 @@ main(int argc, char **argv)
278 } 278 }
279 279
280 if ((r = sshkey_sign(keys[i], &signature, &slen, data, dlen, 280 if ((r = sshkey_sign(keys[i], &signature, &slen, data, dlen,
281 NULL, NULL, 0)) != 0) 281 NULL, NULL, NULL, 0)) != 0)
282 fatal("sshkey_sign failed: %s", ssh_err(r)); 282 fatal("sshkey_sign failed: %s", ssh_err(r));
283 free(data); 283 free(data);
284 284
diff --git a/ssh-pkcs11-helper.0 b/ssh-pkcs11-helper.0
index c6698046d..973b551a5 100644
--- a/ssh-pkcs11-helper.0
+++ b/ssh-pkcs11-helper.0
@@ -32,4 +32,4 @@ HISTORY
32AUTHORS 32AUTHORS
33 Markus Friedl <markus@openbsd.org> 33 Markus Friedl <markus@openbsd.org>
34 34
35OpenBSD 6.7 November 30, 2019 OpenBSD 6.7 35OpenBSD 6.8 November 30, 2019 OpenBSD 6.8
diff --git a/ssh-pkcs11.c b/ssh-pkcs11.c
index ec0e91865..f495883d1 100644
--- a/ssh-pkcs11.c
+++ b/ssh-pkcs11.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-pkcs11.c,v 1.49 2020/03/13 04:16:27 djm Exp $ */ 1/* $OpenBSD: ssh-pkcs11.c,v 1.50 2020/05/29 03:14:02 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2010 Markus Friedl. All rights reserved. 3 * Copyright (c) 2010 Markus Friedl. All rights reserved.
4 * Copyright (c) 2014 Pedro Martelletto. All rights reserved. 4 * Copyright (c) 2014 Pedro Martelletto. All rights reserved.
@@ -1859,7 +1859,8 @@ pkcs11_init(int interactive)
1859} 1859}
1860 1860
1861int 1861int
1862pkcs11_add_provider(char *provider_id, char *pin, struct sshkey ***keyp) 1862pkcs11_add_provider(char *provider_id, char *pin, struct sshkey ***keyp,
1863 char ***labelsp)
1863{ 1864{
1864 error("%s: dlopen() not supported", __func__); 1865 error("%s: dlopen() not supported", __func__);
1865 return (-1); 1866 return (-1);
diff --git a/ssh-sk-helper.0 b/ssh-sk-helper.0
index 2766848e3..091f00e74 100644
--- a/ssh-sk-helper.0
+++ b/ssh-sk-helper.0
@@ -31,4 +31,4 @@ HISTORY
31AUTHORS 31AUTHORS
32 Damien Miller <djm@openbsd.org> 32 Damien Miller <djm@openbsd.org>
33 33
34OpenBSD 6.7 December 21, 2019 OpenBSD 6.7 34OpenBSD 6.8 December 21, 2019 OpenBSD 6.8
diff --git a/ssh-sk-helper.c b/ssh-sk-helper.c
index 2f93ad716..8f92f4e23 100644
--- a/ssh-sk-helper.c
+++ b/ssh-sk-helper.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-sk-helper.c,v 1.9 2020/01/25 23:13:09 djm Exp $ */ 1/* $OpenBSD: ssh-sk-helper.c,v 1.10 2020/05/26 01:59:46 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2019 Google LLC 3 * Copyright (c) 2019 Google LLC
4 * 4 *
@@ -93,12 +93,12 @@ process_sign(struct sshbuf *req)
93{ 93{
94 int r = SSH_ERR_INTERNAL_ERROR; 94 int r = SSH_ERR_INTERNAL_ERROR;
95 struct sshbuf *resp, *kbuf; 95 struct sshbuf *resp, *kbuf;
96 struct sshkey *key; 96 struct sshkey *key = NULL;
97 uint32_t compat; 97 uint32_t compat;
98 const u_char *message; 98 const u_char *message;
99 u_char *sig; 99 u_char *sig = NULL;
100 size_t msglen, siglen; 100 size_t msglen, siglen = 0;
101 char *provider, *pin; 101 char *provider = NULL, *pin = NULL;
102 102
103 if ((r = sshbuf_froms(req, &kbuf)) != 0 || 103 if ((r = sshbuf_froms(req, &kbuf)) != 0 ||
104 (r = sshbuf_get_cstring(req, &provider, NULL)) != 0 || 104 (r = sshbuf_get_cstring(req, &provider, NULL)) != 0 ||
@@ -134,8 +134,11 @@ process_sign(struct sshbuf *req)
134 (r = sshbuf_put_string(resp, sig, siglen)) != 0) 134 (r = sshbuf_put_string(resp, sig, siglen)) != 0)
135 fatal("%s: buffer error: %s", __progname, ssh_err(r)); 135 fatal("%s: buffer error: %s", __progname, ssh_err(r));
136 out: 136 out:
137 sshkey_free(key);
137 sshbuf_free(kbuf); 138 sshbuf_free(kbuf);
138 free(provider); 139 free(provider);
140 if (sig != NULL)
141 freezero(sig, siglen);
139 if (pin != NULL) 142 if (pin != NULL)
140 freezero(pin, strlen(pin)); 143 freezero(pin, strlen(pin));
141 return resp; 144 return resp;
diff --git a/ssh-sk.c b/ssh-sk.c
index 1afb205f8..1455df635 100644
--- a/ssh-sk.c
+++ b/ssh-sk.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-sk.c,v 1.30 2020/04/28 04:02:29 djm Exp $ */ 1/* $OpenBSD: ssh-sk.c,v 1.32 2020/09/09 03:08:02 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2019 Google LLC 3 * Copyright (c) 2019 Google LLC
4 * 4 *
@@ -174,6 +174,7 @@ sshsk_free_enroll_response(struct sk_enroll_response *r)
174 freezero(r->public_key, r->public_key_len); 174 freezero(r->public_key, r->public_key_len);
175 freezero(r->signature, r->signature_len); 175 freezero(r->signature, r->signature_len);
176 freezero(r->attestation_cert, r->attestation_cert_len); 176 freezero(r->attestation_cert, r->attestation_cert_len);
177 freezero(r->authdata, r->authdata_len);
177 freezero(r, sizeof(*r)); 178 freezero(r, sizeof(*r));
178} 179}
179 180
@@ -419,6 +420,31 @@ make_options(const char *device, const char *user_id,
419 return ret; 420 return ret;
420} 421}
421 422
423
424static int
425fill_attestation_blob(const struct sk_enroll_response *resp,
426 struct sshbuf *attest)
427{
428 int r;
429
430 if (attest == NULL)
431 return 0; /* nothing to do */
432 if ((r = sshbuf_put_cstring(attest, "ssh-sk-attest-v01")) != 0 ||
433 (r = sshbuf_put_string(attest,
434 resp->attestation_cert, resp->attestation_cert_len)) != 0 ||
435 (r = sshbuf_put_string(attest,
436 resp->signature, resp->signature_len)) != 0 ||
437 (r = sshbuf_put_string(attest,
438 resp->authdata, resp->authdata_len)) != 0 ||
439 (r = sshbuf_put_u32(attest, 0)) != 0 || /* resvd flags */
440 (r = sshbuf_put_string(attest, NULL, 0)) != 0 /* resvd */) {
441 error("%s: buffer error: %s", __func__, ssh_err(r));
442 return r;
443 }
444 /* success */
445 return 0;
446}
447
422int 448int
423sshsk_enroll(int type, const char *provider_path, const char *device, 449sshsk_enroll(int type, const char *provider_path, const char *device,
424 const char *application, const char *userid, uint8_t flags, 450 const char *application, const char *userid, uint8_t flags,
@@ -506,19 +532,9 @@ sshsk_enroll(int type, const char *provider_path, const char *device,
506 goto out; 532 goto out;
507 533
508 /* Optionally fill in the attestation information */ 534 /* Optionally fill in the attestation information */
509 if (attest != NULL) { 535 if ((r = fill_attestation_blob(resp, attest)) != 0)
510 if ((r = sshbuf_put_cstring(attest, 536 goto out;
511 "ssh-sk-attest-v00")) != 0 || 537
512 (r = sshbuf_put_string(attest,
513 resp->attestation_cert, resp->attestation_cert_len)) != 0 ||
514 (r = sshbuf_put_string(attest,
515 resp->signature, resp->signature_len)) != 0 ||
516 (r = sshbuf_put_u32(attest, 0)) != 0 || /* resvd flags */
517 (r = sshbuf_put_string(attest, NULL, 0)) != 0 /* resvd */) {
518 error("%s: buffer error: %s", __func__, ssh_err(r));
519 goto out;
520 }
521 }
522 /* success */ 538 /* success */
523 *keyp = key; 539 *keyp = key;
524 key = NULL; /* transferred */ 540 key = NULL; /* transferred */
@@ -769,8 +785,9 @@ sshsk_load_resident(const char *provider_path, const char *device,
769 default: 785 default:
770 continue; 786 continue;
771 } 787 }
772 /* XXX where to get flags? */
773 flags = SSH_SK_USER_PRESENCE_REQD|SSH_SK_RESIDENT_KEY; 788 flags = SSH_SK_USER_PRESENCE_REQD|SSH_SK_RESIDENT_KEY;
789 if ((rks[i]->flags & SSH_SK_USER_VERIFICATION_REQD))
790 flags |= SSH_SK_USER_VERIFICATION_REQD;
774 if ((r = sshsk_key_from_response(rks[i]->alg, 791 if ((r = sshsk_key_from_response(rks[i]->alg,
775 rks[i]->application, flags, &rks[i]->key, &key)) != 0) 792 rks[i]->application, flags, &rks[i]->key, &key)) != 0)
776 goto out; 793 goto out;
diff --git a/ssh.0 b/ssh.0
index 474bb1e2e..86ae53765 100644
--- a/ssh.0
+++ b/ssh.0
@@ -786,6 +786,16 @@ ENVIRONMENT
786 redirect the input from /dev/null to make this 786 redirect the input from /dev/null to make this
787 work.) 787 work.)
788 788
789 SSH_ASKPASS_REQUIRE Allows further control over the use of an askpass
790 program. If this variable is set to M-bM-^@M-^\neverM-bM-^@M-^] then
791 ssh will never attempt to use one. If it is set to
792 M-bM-^@M-^\preferM-bM-^@M-^], then ssh will prefer to use the askpass
793 program instead of the TTY when requesting
794 passwords. Finally, if the variable is set to
795 M-bM-^@M-^\forceM-bM-^@M-^], then the askpass program will be used for
796 all passphrase input regardless of whether DISPLAY
797 is set.
798
789 SSH_AUTH_SOCK Identifies the path of a UNIX-domain socket used to 799 SSH_AUTH_SOCK Identifies the path of a UNIX-domain socket used to
790 communicate with the agent. 800 communicate with the agent.
791 801
@@ -989,4 +999,4 @@ AUTHORS
989 created OpenSSH. Markus Friedl contributed the support for SSH protocol 999 created OpenSSH. Markus Friedl contributed the support for SSH protocol
990 versions 1.5 and 2.0. 1000 versions 1.5 and 2.0.
991 1001
992OpenBSD 6.7 April 17, 2020 OpenBSD 6.7 1002OpenBSD 6.8 July 15, 2020 OpenBSD 6.8
diff --git a/ssh.1 b/ssh.1
index 035823da3..ad48fc8c8 100644
--- a/ssh.1
+++ b/ssh.1
@@ -33,8 +33,8 @@
33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35.\" 35.\"
36.\" $OpenBSD: ssh.1,v 1.412 2020/04/17 03:34:42 djm Exp $ 36.\" $OpenBSD: ssh.1,v 1.414 2020/07/15 05:40:05 jmc Exp $
37.Dd $Mdocdate: April 17 2020 $ 37.Dd $Mdocdate: July 15 2020 $
38.Dt SSH 1 38.Dt SSH 1
39.Os 39.Os
40.Sh NAME 40.Sh NAME
@@ -1445,6 +1445,25 @@ or related script.
1445may be necessary to redirect the input from 1445may be necessary to redirect the input from
1446.Pa /dev/null 1446.Pa /dev/null
1447to make this work.) 1447to make this work.)
1448.It Ev SSH_ASKPASS_REQUIRE
1449Allows further control over the use of an askpass program.
1450If this variable is set to
1451.Dq never
1452then
1453.Nm
1454will never attempt to use one.
1455If it is set to
1456.Dq prefer ,
1457then
1458.Nm
1459will prefer to use the askpass program instead of the TTY when requesting
1460passwords.
1461Finally, if the variable is set to
1462.Dq force ,
1463then the askpass program will be used for all passphrase input regardless
1464of whether
1465.Ev DISPLAY
1466is set.
1448.It Ev SSH_AUTH_SOCK 1467.It Ev SSH_AUTH_SOCK
1449Identifies the path of a 1468Identifies the path of a
1450.Ux Ns -domain 1469.Ux Ns -domain
diff --git a/ssh.c b/ssh.c
index 7879d4f4d..aa15b8a1f 100644
--- a/ssh.c
+++ b/ssh.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh.c,v 1.527 2020/04/10 00:52:07 dtucker Exp $ */ 1/* $OpenBSD: ssh.c,v 1.536 2020/09/21 07:29:09 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -16,7 +16,7 @@
16 * Copyright (c) 1999 Niels Provos. All rights reserved. 16 * Copyright (c) 1999 Niels Provos. All rights reserved.
17 * Copyright (c) 2000, 2001, 2002, 2003 Markus Friedl. All rights reserved. 17 * Copyright (c) 2000, 2001, 2002, 2003 Markus Friedl. All rights reserved.
18 * 18 *
19 * Modified to work with SSL by Niels Provos <provos@citi.umich.edu> 19 * Modified to work with SSLeay by Niels Provos <provos@citi.umich.edu>
20 * in Canada (German citizen). 20 * in Canada (German citizen).
21 * 21 *
22 * Redistribution and use in source and binary forms, with or without 22 * Redistribution and use in source and binary forms, with or without
@@ -137,11 +137,11 @@ int stdin_null_flag = 0;
137 137
138/* 138/*
139 * Flag indicating that the current process should be backgrounded and 139 * Flag indicating that the current process should be backgrounded and
140 * a new slave launched in the foreground for ControlPersist. 140 * a new mux-client launched in the foreground for ControlPersist.
141 */ 141 */
142int need_controlpersist_detach = 0; 142int need_controlpersist_detach = 0;
143 143
144/* Copies of flags for ControlPersist foreground slave */ 144/* Copies of flags for ControlPersist foreground mux-client */
145int ostdin_null_flag, ono_shell_flag, otty_flag, orequest_tty; 145int ostdin_null_flag, ono_shell_flag, otty_flag, orequest_tty;
146 146
147/* 147/*
@@ -176,6 +176,7 @@ char *forward_agent_sock_path = NULL;
176/* Various strings used to to percent_expand() arguments */ 176/* Various strings used to to percent_expand() arguments */
177static char thishost[NI_MAXHOST], shorthost[NI_MAXHOST], portstr[NI_MAXSERV]; 177static char thishost[NI_MAXHOST], shorthost[NI_MAXHOST], portstr[NI_MAXSERV];
178static char uidstr[32], *host_arg, *conn_hash_hex; 178static char uidstr[32], *host_arg, *conn_hash_hex;
179static const char *keyalias;
179 180
180/* socket address the host resolves to */ 181/* socket address the host resolves to */
181struct sockaddr_storage hostaddr; 182struct sockaddr_storage hostaddr;
@@ -235,6 +236,7 @@ tilde_expand_paths(char **paths, u_int num_paths)
235 "C", conn_hash_hex, \ 236 "C", conn_hash_hex, \
236 "L", shorthost, \ 237 "L", shorthost, \
237 "i", uidstr, \ 238 "i", uidstr, \
239 "k", keyalias, \
238 "l", thishost, \ 240 "l", thishost, \
239 "n", host_arg, \ 241 "n", host_arg, \
240 "p", portstr 242 "p", portstr
@@ -260,6 +262,31 @@ default_client_percent_expand(const char *str, const char *homedir,
260} 262}
261 263
262/* 264/*
265 * Expands the set of percent_expand options used by the majority of keywords
266 * AND perform environment variable substitution.
267 * Caller must free returned string.
268 */
269static char *
270default_client_percent_dollar_expand(const char *str, const char *homedir,
271 const char *remhost, const char *remuser, const char *locuser)
272{
273 char *ret;
274
275 ret = percent_dollar_expand(str,
276 /* values from statics above */
277 DEFAULT_CLIENT_PERCENT_EXPAND_ARGS,
278 /* values from arguments */
279 "d", homedir,
280 "h", remhost,
281 "r", remuser,
282 "u", locuser,
283 (char *)NULL);
284 if (ret == NULL)
285 fatal("invalid environment variable expansion");
286 return ret;
287}
288
289/*
263 * Attempt to resolve a host name / port to a set of addresses and 290 * Attempt to resolve a host name / port to a set of addresses and
264 * optionally return any CNAMEs encountered along the way. 291 * optionally return any CNAMEs encountered along the way.
265 * Returns NULL on failure. 292 * Returns NULL on failure.
@@ -620,7 +647,7 @@ main(int ac, char **av)
620 struct ssh *ssh = NULL; 647 struct ssh *ssh = NULL;
621 int i, r, opt, exit_status, use_syslog, direct, timeout_ms; 648 int i, r, opt, exit_status, use_syslog, direct, timeout_ms;
622 int was_addr, config_test = 0, opt_terminated = 0, want_final_pass = 0; 649 int was_addr, config_test = 0, opt_terminated = 0, want_final_pass = 0;
623 char *p, *cp, *line, *argv0, buf[PATH_MAX], *logfile; 650 char *p, *cp, *line, *argv0, *logfile;
624 char cname[NI_MAXHOST]; 651 char cname[NI_MAXHOST];
625 struct stat st; 652 struct stat st;
626 struct passwd *pw; 653 struct passwd *pw;
@@ -629,6 +656,7 @@ main(int ac, char **av)
629 struct Forward fwd; 656 struct Forward fwd;
630 struct addrinfo *addrs = NULL; 657 struct addrinfo *addrs = NULL;
631 size_t n, len; 658 size_t n, len;
659 u_int j;
632 660
633 /* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */ 661 /* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */
634 sanitise_stdfd(); 662 sanitise_stdfd();
@@ -1230,19 +1258,25 @@ main(int ac, char **av)
1230 /* Fill configuration defaults. */ 1258 /* Fill configuration defaults. */
1231 fill_default_options(&options); 1259 fill_default_options(&options);
1232 1260
1261 if (options.user == NULL)
1262 options.user = xstrdup(pw->pw_name);
1263
1233 /* 1264 /*
1234 * If ProxyJump option specified, then construct a ProxyCommand now. 1265 * If ProxyJump option specified, then construct a ProxyCommand now.
1235 */ 1266 */
1236 if (options.jump_host != NULL) { 1267 if (options.jump_host != NULL) {
1237 char port_s[8]; 1268 char port_s[8];
1238 const char *sshbin = argv0; 1269 const char *jumpuser = options.jump_user, *sshbin = argv0;
1239 int port = options.port, jumpport = options.jump_port; 1270 int port = options.port, jumpport = options.jump_port;
1240 1271
1241 if (port <= 0) 1272 if (port <= 0)
1242 port = default_ssh_port(); 1273 port = default_ssh_port();
1243 if (jumpport <= 0) 1274 if (jumpport <= 0)
1244 jumpport = default_ssh_port(); 1275 jumpport = default_ssh_port();
1245 if (strcmp(options.jump_host, host) == 0 && port == jumpport) 1276 if (jumpuser == NULL)
1277 jumpuser = options.user;
1278 if (strcmp(options.jump_host, host) == 0 && port == jumpport &&
1279 strcmp(options.user, jumpuser) == 0)
1246 fatal("jumphost loop via %s", options.jump_host); 1280 fatal("jumphost loop via %s", options.jump_host);
1247 1281
1248 /* 1282 /*
@@ -1345,9 +1379,6 @@ main(int ac, char **av)
1345 tty_flag = 0; 1379 tty_flag = 0;
1346 } 1380 }
1347 1381
1348 if (options.user == NULL)
1349 options.user = xstrdup(pw->pw_name);
1350
1351 /* Set up strings used to percent_expand() arguments */ 1382 /* Set up strings used to percent_expand() arguments */
1352 if (gethostname(thishost, sizeof(thishost)) == -1) 1383 if (gethostname(thishost, sizeof(thishost)) == -1)
1353 fatal("gethostname: %s", strerror(errno)); 1384 fatal("gethostname: %s", strerror(errno));
@@ -1356,6 +1387,7 @@ main(int ac, char **av)
1356 snprintf(portstr, sizeof(portstr), "%d", options.port); 1387 snprintf(portstr, sizeof(portstr), "%d", options.port);
1357 snprintf(uidstr, sizeof(uidstr), "%llu", 1388 snprintf(uidstr, sizeof(uidstr), "%llu",
1358 (unsigned long long)pw->pw_uid); 1389 (unsigned long long)pw->pw_uid);
1390 keyalias = options.host_key_alias ? options.host_key_alias : host_arg;
1359 1391
1360 conn_hash_hex = ssh_connection_hash(thishost, host, portstr, 1392 conn_hash_hex = ssh_connection_hash(thishost, host, portstr,
1361 options.user); 1393 options.user);
@@ -1380,14 +1412,14 @@ main(int ac, char **av)
1380 if (options.control_path != NULL) { 1412 if (options.control_path != NULL) {
1381 cp = tilde_expand_filename(options.control_path, getuid()); 1413 cp = tilde_expand_filename(options.control_path, getuid());
1382 free(options.control_path); 1414 free(options.control_path);
1383 options.control_path = default_client_percent_expand(cp, 1415 options.control_path = default_client_percent_dollar_expand(cp,
1384 pw->pw_dir, host, options.user, pw->pw_name); 1416 pw->pw_dir, host, options.user, pw->pw_name);
1385 free(cp); 1417 free(cp);
1386 } 1418 }
1387 1419
1388 if (options.identity_agent != NULL) { 1420 if (options.identity_agent != NULL) {
1389 p = tilde_expand_filename(options.identity_agent, getuid()); 1421 p = tilde_expand_filename(options.identity_agent, getuid());
1390 cp = default_client_percent_expand(p, 1422 cp = default_client_percent_dollar_expand(p,
1391 pw->pw_dir, host, options.user, pw->pw_name); 1423 pw->pw_dir, host, options.user, pw->pw_name);
1392 free(p); 1424 free(p);
1393 free(options.identity_agent); 1425 free(options.identity_agent);
@@ -1397,13 +1429,28 @@ main(int ac, char **av)
1397 if (options.forward_agent_sock_path != NULL) { 1429 if (options.forward_agent_sock_path != NULL) {
1398 p = tilde_expand_filename(options.forward_agent_sock_path, 1430 p = tilde_expand_filename(options.forward_agent_sock_path,
1399 getuid()); 1431 getuid());
1400 cp = default_client_percent_expand(p, 1432 cp = default_client_percent_dollar_expand(p,
1401 pw->pw_dir, host, options.user, pw->pw_name); 1433 pw->pw_dir, host, options.user, pw->pw_name);
1402 free(p); 1434 free(p);
1403 free(options.forward_agent_sock_path); 1435 free(options.forward_agent_sock_path);
1404 options.forward_agent_sock_path = cp; 1436 options.forward_agent_sock_path = cp;
1405 } 1437 }
1406 1438
1439 for (j = 0; j < options.num_user_hostfiles; j++) {
1440 if (options.user_hostfiles[j] != NULL) {
1441 cp = tilde_expand_filename(options.user_hostfiles[j],
1442 getuid());
1443 p = default_client_percent_dollar_expand(cp,
1444 pw->pw_dir, host, options.user, pw->pw_name);
1445 if (strcmp(options.user_hostfiles[j], p) != 0)
1446 debug3("expanded UserKnownHostsFile '%s' -> "
1447 "'%s'", options.user_hostfiles[j], p);
1448 free(options.user_hostfiles[j]);
1449 free(cp);
1450 options.user_hostfiles[j] = p;
1451 }
1452 }
1453
1407 for (i = 0; i < options.num_local_forwards; i++) { 1454 for (i = 0; i < options.num_local_forwards; i++) {
1408 if (options.local_forwards[i].listen_path != NULL) { 1455 if (options.local_forwards[i].listen_path != NULL) {
1409 cp = options.local_forwards[i].listen_path; 1456 cp = options.local_forwards[i].listen_path;
@@ -1549,22 +1596,6 @@ main(int ac, char **av)
1549 } 1596 }
1550 } 1597 }
1551 1598
1552 /* Create ~/.ssh * directory if it doesn't already exist. */
1553 if (config == NULL) {
1554 r = snprintf(buf, sizeof buf, "%s%s%s", pw->pw_dir,
1555 strcmp(pw->pw_dir, "/") ? "/" : "", _PATH_SSH_USER_DIR);
1556 if (r > 0 && (size_t)r < sizeof(buf) && stat(buf, &st) == -1) {
1557#ifdef WITH_SELINUX
1558 ssh_selinux_setfscreatecon(buf);
1559#endif
1560 if (mkdir(buf, 0700) < 0)
1561 error("Could not create directory '%.200s'.",
1562 buf);
1563#ifdef WITH_SELINUX
1564 ssh_selinux_setfscreatecon(NULL);
1565#endif
1566 }
1567 }
1568 /* load options.identity_files */ 1599 /* load options.identity_files */
1569 load_public_identity_files(pw); 1600 load_public_identity_files(pw);
1570 1601
@@ -1575,7 +1606,8 @@ main(int ac, char **av)
1575 unsetenv(SSH_AUTHSOCKET_ENV_NAME); 1606 unsetenv(SSH_AUTHSOCKET_ENV_NAME);
1576 } else { 1607 } else {
1577 cp = options.identity_agent; 1608 cp = options.identity_agent;
1578 if (cp[0] == '$') { 1609 /* legacy (limited) format */
1610 if (cp[0] == '$' && cp[1] != '{') {
1579 if (!valid_env_name(cp + 1)) { 1611 if (!valid_env_name(cp + 1)) {
1580 fatal("Invalid IdentityAgent " 1612 fatal("Invalid IdentityAgent "
1581 "environment variable name %s", cp); 1613 "environment variable name %s", cp);
@@ -1683,7 +1715,7 @@ control_persist_detach(void)
1683 /* Child: master process continues mainloop */ 1715 /* Child: master process continues mainloop */
1684 break; 1716 break;
1685 default: 1717 default:
1686 /* Parent: set up mux slave to connect to backgrounded master */ 1718 /* Parent: set up mux client to connect to backgrounded master */
1687 debug2("%s: background process is %ld", __func__, (long)pid); 1719 debug2("%s: background process is %ld", __func__, (long)pid);
1688 stdin_null_flag = ostdin_null_flag; 1720 stdin_null_flag = ostdin_null_flag;
1689 options.request_tty = orequest_tty; 1721 options.request_tty = orequest_tty;
@@ -1715,12 +1747,26 @@ control_persist_detach(void)
1715static void 1747static void
1716fork_postauth(void) 1748fork_postauth(void)
1717{ 1749{
1750 int devnull, keep_stderr;
1751
1718 if (need_controlpersist_detach) 1752 if (need_controlpersist_detach)
1719 control_persist_detach(); 1753 control_persist_detach();
1720 debug("forking to background"); 1754 debug("forking to background");
1721 fork_after_authentication_flag = 0; 1755 fork_after_authentication_flag = 0;
1722 if (daemon(1, 1) == -1) 1756 if (daemon(1, 1) == -1)
1723 fatal("daemon() failed: %.200s", strerror(errno)); 1757 fatal("daemon() failed: %.200s", strerror(errno));
1758 if ((devnull = open(_PATH_DEVNULL, O_WRONLY)) == -1)
1759 error("%s: open %s: %s", __func__,
1760 _PATH_DEVNULL, strerror(errno));
1761 else {
1762 keep_stderr = log_is_on_stderr() && debug_flag;
1763 if (dup2(devnull, STDIN_FILENO) == -1 ||
1764 dup2(devnull, STDOUT_FILENO) == -1 ||
1765 (!keep_stderr && dup2(devnull, STDOUT_FILENO) == -1))
1766 fatal("%s: dup2() stdio failed", __func__);
1767 if (devnull > STDERR_FILENO)
1768 close(devnull);
1769 }
1724} 1770}
1725 1771
1726static void 1772static void
@@ -2062,9 +2108,9 @@ ssh_session2(struct ssh *ssh, struct passwd *pw)
2062 /* 2108 /*
2063 * If we are in control persist mode and have a working mux listen 2109 * If we are in control persist mode and have a working mux listen
2064 * socket, then prepare to background ourselves and have a foreground 2110 * socket, then prepare to background ourselves and have a foreground
2065 * client attach as a control slave. 2111 * client attach as a control client.
2066 * NB. we must save copies of the flags that we override for 2112 * NB. we must save copies of the flags that we override for
2067 * the backgrounding, since we defer attachment of the slave until 2113 * the backgrounding, since we defer attachment of the client until
2068 * after the connection is fully established (in particular, 2114 * after the connection is fully established (in particular,
2069 * async rfwd replies have been received for ExitOnForwardFailure). 2115 * async rfwd replies have been received for ExitOnForwardFailure).
2070 */ 2116 */
@@ -2119,13 +2165,15 @@ ssh_session2(struct ssh *ssh, struct passwd *pw)
2119 * as it may want to write to stdout. 2165 * as it may want to write to stdout.
2120 */ 2166 */
2121 if (!need_controlpersist_detach) { 2167 if (!need_controlpersist_detach) {
2122 if ((devnull = open(_PATH_DEVNULL, O_WRONLY)) == -1) 2168 if ((devnull = open(_PATH_DEVNULL, O_WRONLY)) == -1) {
2123 error("%s: open %s: %s", __func__, 2169 error("%s: open %s: %s", __func__,
2124 _PATH_DEVNULL, strerror(errno)); 2170 _PATH_DEVNULL, strerror(errno));
2125 if (dup2(devnull, STDOUT_FILENO) == -1) 2171 } else {
2126 fatal("%s: dup2() stdout failed", __func__); 2172 if (dup2(devnull, STDOUT_FILENO) == -1)
2127 if (devnull > STDERR_FILENO) 2173 fatal("%s: dup2() stdout failed", __func__);
2128 close(devnull); 2174 if (devnull > STDERR_FILENO)
2175 close(devnull);
2176 }
2129 } 2177 }
2130 2178
2131 /* 2179 /*
@@ -2203,7 +2251,7 @@ load_public_identity_files(struct passwd *pw)
2203 continue; 2251 continue;
2204 } 2252 }
2205 cp = tilde_expand_filename(options.identity_files[i], getuid()); 2253 cp = tilde_expand_filename(options.identity_files[i], getuid());
2206 filename = default_client_percent_expand(cp, 2254 filename = default_client_percent_dollar_expand(cp,
2207 pw->pw_dir, host, options.user, pw->pw_name); 2255 pw->pw_dir, host, options.user, pw->pw_name);
2208 free(cp); 2256 free(cp);
2209 check_load(sshkey_load_public(filename, &public, NULL), 2257 check_load(sshkey_load_public(filename, &public, NULL),
@@ -2253,7 +2301,7 @@ load_public_identity_files(struct passwd *pw)
2253 for (i = 0; i < options.num_certificate_files; i++) { 2301 for (i = 0; i < options.num_certificate_files; i++) {
2254 cp = tilde_expand_filename(options.certificate_files[i], 2302 cp = tilde_expand_filename(options.certificate_files[i],
2255 getuid()); 2303 getuid());
2256 filename = default_client_percent_expand(cp, 2304 filename = default_client_percent_dollar_expand(cp,
2257 pw->pw_dir, host, options.user, pw->pw_name); 2305 pw->pw_dir, host, options.user, pw->pw_name);
2258 free(cp); 2306 free(cp);
2259 2307
diff --git a/ssh.h b/ssh.h
index dda6f617e..8110c0602 100644
--- a/ssh.h
+++ b/ssh.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh.h,v 1.89 2018/12/27 03:25:25 djm Exp $ */ 1/* $OpenBSD: ssh.h,v 1.90 2020/07/14 23:57:01 djm Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -68,6 +68,11 @@
68#define SSH_ASKPASS_ENV "SSH_ASKPASS" 68#define SSH_ASKPASS_ENV "SSH_ASKPASS"
69 69
70/* 70/*
71 * Environment variable to control whether or not askpass is used.
72 */
73#define SSH_ASKPASS_REQUIRE_ENV "SSH_ASKPASS_REQUIRE"
74
75/*
71 * Force host key length and server key length to differ by at least this 76 * Force host key length and server key length to differ by at least this
72 * many bits. This is to make double encryption with rsaref work. 77 * many bits. This is to make double encryption with rsaref work.
73 */ 78 */
diff --git a/ssh_api.c b/ssh_api.c
index e0b195521..129404b20 100644
--- a/ssh_api.c
+++ b/ssh_api.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh_api.c,v 1.19 2019/10/31 21:23:19 djm Exp $ */ 1/* $OpenBSD: ssh_api.c,v 1.21 2020/08/27 01:06:18 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2012 Markus Friedl. All rights reserved. 3 * Copyright (c) 2012 Markus Friedl. All rights reserved.
4 * 4 *
@@ -54,7 +54,7 @@ int _ssh_host_key_sign(struct ssh *, struct sshkey *, struct sshkey *,
54 */ 54 */
55int use_privsep = 0; 55int use_privsep = 0;
56int mm_sshkey_sign(struct sshkey *, u_char **, u_int *, 56int mm_sshkey_sign(struct sshkey *, u_char **, u_int *,
57 const u_char *, u_int, const char *, const char *, u_int); 57 const u_char *, u_int, const char *, const char *, const char *, u_int);
58 58
59#ifdef WITH_OPENSSL 59#ifdef WITH_OPENSSL
60DH *mm_choose_dh(int, int, int); 60DH *mm_choose_dh(int, int, int);
@@ -66,8 +66,8 @@ u_int session_id2_len = 0;
66 66
67int 67int
68mm_sshkey_sign(struct sshkey *key, u_char **sigp, u_int *lenp, 68mm_sshkey_sign(struct sshkey *key, u_char **sigp, u_int *lenp,
69 const u_char *data, u_int datalen, const char *alg, const char *sk_provider, 69 const u_char *data, u_int datalen, const char *alg,
70 u_int compat) 70 const char *sk_provider, const char *sk_pin, u_int compat)
71{ 71{
72 return (-1); 72 return (-1);
73} 73}
@@ -152,7 +152,6 @@ ssh_free(struct ssh *ssh)
152{ 152{
153 struct key_entry *k; 153 struct key_entry *k;
154 154
155 ssh_packet_close(ssh);
156 /* 155 /*
157 * we've only created the public keys variants in case we 156 * we've only created the public keys variants in case we
158 * are a acting as a server. 157 * are a acting as a server.
@@ -167,8 +166,7 @@ ssh_free(struct ssh *ssh)
167 TAILQ_REMOVE(&ssh->private_keys, k, next); 166 TAILQ_REMOVE(&ssh->private_keys, k, next);
168 free(k); 167 free(k);
169 } 168 }
170 if (ssh->kex) 169 ssh_packet_close(ssh);
171 kex_free(ssh->kex);
172 free(ssh); 170 free(ssh);
173} 171}
174 172
@@ -569,5 +567,5 @@ _ssh_host_key_sign(struct ssh *ssh, struct sshkey *privkey,
569 const u_char *data, size_t dlen, const char *alg) 567 const u_char *data, size_t dlen, const char *alg)
570{ 568{
571 return sshkey_sign(privkey, signature, slen, data, dlen, 569 return sshkey_sign(privkey, signature, slen, data, dlen,
572 alg, NULL, ssh->compat); 570 alg, NULL, NULL, ssh->compat);
573} 571}
diff --git a/ssh_config b/ssh_config
index 8a55237b9..09a17cf18 100644
--- a/ssh_config
+++ b/ssh_config
@@ -1,4 +1,4 @@
1# $OpenBSD: ssh_config,v 1.34 2019/02/04 02:39:42 dtucker Exp $ 1# $OpenBSD: ssh_config,v 1.35 2020/07/17 03:43:42 dtucker Exp $
2 2
3# This is the ssh client system-wide configuration file. See 3# This is the ssh client system-wide configuration file. See
4# ssh_config(5) for more information. This file provides defaults for 4# ssh_config(5) for more information. This file provides defaults for
@@ -48,6 +48,7 @@ Host *
48# VisualHostKey no 48# VisualHostKey no
49# ProxyCommand ssh -q -W %h:%p gateway.example.com 49# ProxyCommand ssh -q -W %h:%p gateway.example.com
50# RekeyLimit 1G 1h 50# RekeyLimit 1G 1h
51# UserKnownHostsFile ~/.ssh/known_hosts.d/%k
51 SendEnv LANG LC_* 52 SendEnv LANG LC_*
52 HashKnownHosts yes 53 HashKnownHosts yes
53 GSSAPIAuthentication yes 54 GSSAPIAuthentication yes
diff --git a/ssh_config.0 b/ssh_config.0
index 316b2e1ef..ae98748d2 100644
--- a/ssh_config.0
+++ b/ssh_config.0
@@ -98,8 +98,12 @@ DESCRIPTION
98 details). If this option is set to confirm, each use of the key 98 details). If this option is set to confirm, each use of the key
99 must be confirmed, as if the -c option was specified to 99 must be confirmed, as if the -c option was specified to
100 ssh-add(1). If this option is set to no, no keys are added to 100 ssh-add(1). If this option is set to no, no keys are added to
101 the agent. The argument must be yes, confirm, ask, or no (the 101 the agent. Alternately, this option may be specified as a time
102 default). 102 interval using the format described in the TIME FORMATS section
103 of sshd_config(5) to specify the key's lifetime in ssh-agent(1),
104 after which it will automatically be removed. The argument must
105 be no (the default), yes, confirm (optionally followed by a time
106 interval), ask or a time interval.
103 107
104 AddressFamily 108 AddressFamily
105 Specifies which address family to use when connecting. Valid 109 Specifies which address family to use when connecting. Valid
@@ -186,8 +190,9 @@ DESCRIPTION
186 SecurityKeyProvider. 190 SecurityKeyProvider.
187 191
188 Arguments to CertificateFile may use the tilde syntax to refer to 192 Arguments to CertificateFile may use the tilde syntax to refer to
189 a user's home directory or the tokens described in the TOKENS 193 a user's home directory, the tokens described in the TOKENS
190 section. 194 section and environment variables as described in the ENVIRONMENT
195 VARIABLES section.
191 196
192 It is possible to have multiple certificate files specified in 197 It is possible to have multiple certificate files specified in
193 configuration files; these certificates will be tried in 198 configuration files; these certificates will be tried in
@@ -294,10 +299,11 @@ DESCRIPTION
294 sharing as described in the ControlMaster section above or the 299 sharing as described in the ControlMaster section above or the
295 string none to disable connection sharing. Arguments to 300 string none to disable connection sharing. Arguments to
296 ControlPath may use the tilde syntax to refer to a user's home 301 ControlPath may use the tilde syntax to refer to a user's home
297 directory or the tokens described in the TOKENS section. It is 302 directory, the tokens described in the TOKENS section and
298 recommended that any ControlPath used for opportunistic 303 environment variables as described in the ENVIRONMENT VARIABLES
299 connection sharing include at least %h, %p, and %r (or 304 section. It is recommended that any ControlPath used for
300 alternatively %C) and be placed in a directory that is not 305 opportunistic connection sharing include at least %h, %p, and %r
306 (or alternatively %C) and be placed in a directory that is not
301 writable by other users. This ensures that shared connections 307 writable by other users. This ensures that shared connections
302 are uniquely identified. 308 are uniquely identified.
303 309
@@ -547,8 +553,9 @@ DESCRIPTION
547 location of the socket. 553 location of the socket.
548 554
549 Arguments to IdentityAgent may use the tilde syntax to refer to a 555 Arguments to IdentityAgent may use the tilde syntax to refer to a
550 user's home directory or the tokens described in the TOKENS 556 user's home directory, the tokens described in the TOKENS section
551 section. 557 and environment variables as described in the ENVIRONMENT
558 VARIABLES section.
552 559
553 IdentityFile 560 IdentityFile
554 Specifies a file from which the user's DSA, ECDSA, authenticator- 561 Specifies a file from which the user's DSA, ECDSA, authenticator-
@@ -591,8 +598,9 @@ DESCRIPTION
591 Include the specified configuration file(s). Multiple pathnames 598 Include the specified configuration file(s). Multiple pathnames
592 may be specified and each pathname may contain glob(7) wildcards 599 may be specified and each pathname may contain glob(7) wildcards
593 and, for user configurations, shell-like M-bM-^@M-^X~M-bM-^@M-^Y references to user 600 and, for user configurations, shell-like M-bM-^@M-^X~M-bM-^@M-^Y references to user
594 home directories. Files without absolute paths are assumed to be 601 home directories. Wildcards will be expanded and processed in
595 in ~/.ssh if included in a user configuration file or /etc/ssh if 602 lexical order. Files without absolute paths are assumed to be in
603 ~/.ssh if included in a user configuration file or /etc/ssh if
596 included from the system configuration file. Include directive 604 included from the system configuration file. Include directive
597 may appear inside a Match or Host block to perform conditional 605 may appear inside a Match or Host block to perform conditional
598 inclusion. 606 inclusion.
@@ -673,8 +681,9 @@ DESCRIPTION
673 specific address. The bind_address of localhost indicates that 681 specific address. The bind_address of localhost indicates that
674 the listening port be bound for local use only, while an empty 682 the listening port be bound for local use only, while an empty
675 address or M-bM-^@M-^X*M-bM-^@M-^Y indicates that the port should be available from 683 address or M-bM-^@M-^X*M-bM-^@M-^Y indicates that the port should be available from
676 all interfaces. Unix domain socket paths accept the tokens 684 all interfaces. Unix domain socket paths may use the tokens
677 described in the TOKENS section. 685 described in the TOKENS section and environment variables as
686 described in the ENVIRONMENT VARIABLES section.
678 687
679 LogLevel 688 LogLevel
680 Gives the verbosity level that is used when logging messages from 689 Gives the verbosity level that is used when logging messages from
@@ -861,8 +870,9 @@ DESCRIPTION
861 brackets. Multiple forwardings may be specified, and additional 870 brackets. Multiple forwardings may be specified, and additional
862 forwardings can be given on the command line. Privileged ports 871 forwardings can be given on the command line. Privileged ports
863 can be forwarded only when logging in as root on the remote 872 can be forwarded only when logging in as root on the remote
864 machine. Unix domain socket paths accept the tokens described in 873 machine. Unix domain socket paths may use the tokens described
865 the TOKENS section. 874 in the TOKENS section and environment variables as described in
875 the ENVIRONMENT VARIABLES section.
866 876
867 If the port argument is 0, the listen port will be dynamically 877 If the port argument is 0, the listen port will be dynamically
868 allocated on the server and reported to the client at run time. 878 allocated on the server and reported to the client at run time.
@@ -1053,7 +1063,10 @@ DESCRIPTION
1053 1063
1054 UserKnownHostsFile 1064 UserKnownHostsFile
1055 Specifies one or more files to use for the user host key 1065 Specifies one or more files to use for the user host key
1056 database, separated by whitespace. The default is 1066 database, separated by whitespace. Each filename may use tilde
1067 notation to refer to the user's home directory, the tokens
1068 described in the TOKENS section and environment variables as
1069 described in the ENVIRONMENT VARIABLES section. The default is
1057 ~/.ssh/known_hosts, ~/.ssh/known_hosts2. 1070 ~/.ssh/known_hosts, ~/.ssh/known_hosts2.
1058 1071
1059 VerifyHostKeyDNS 1072 VerifyHostKeyDNS
@@ -1122,6 +1135,8 @@ TOKENS
1122 %d Local user's home directory. 1135 %d Local user's home directory.
1123 %h The remote hostname. 1136 %h The remote hostname.
1124 %i The local user ID. 1137 %i The local user ID.
1138 %k The host key alias if specified, otherwise the orignal remote
1139 hostname given on the command line.
1125 %L The local hostname. 1140 %L The local hostname.
1126 %l The local hostname, including the domain name. 1141 %l The local hostname, including the domain name.
1127 %n The original remote hostname, as given on the command line. 1142 %n The original remote hostname, as given on the command line.
@@ -1132,8 +1147,8 @@ TOKENS
1132 %u The local username. 1147 %u The local username.
1133 1148
1134 CertificateFile, ControlPath, IdentityAgent, IdentityFile, LocalForward, 1149 CertificateFile, ControlPath, IdentityAgent, IdentityFile, LocalForward,
1135 Match exec, RemoteCommand, and RemoteForward accept the tokens %%, %C, 1150 Match exec, RemoteCommand, RemoteForward, and UserKnownHostsFile accept
1136 %d, %h, %i, %L, %l, %n, %p, %r, and %u. 1151 the tokens %%, %C, %d, %h, %i, %L, %l, %n, %p, %r, and %u.
1137 1152
1138 Hostname accepts the tokens %% and %h. 1153 Hostname accepts the tokens %% and %h.
1139 1154
@@ -1141,6 +1156,18 @@ TOKENS
1141 1156
1142 ProxyCommand accepts the tokens %%, %h, %n, %p, and %r. 1157 ProxyCommand accepts the tokens %%, %h, %n, %p, and %r.
1143 1158
1159ENVIRONMENT VARIABLES
1160 Arguments to some keywords can be expanded at runtime from environment
1161 variables on the client by enclosing them in ${}, for example
1162 ${HOME}/.ssh would refer to the user's .ssh directory. If a specified
1163 environment variable does not exist then an error will be returned and
1164 the setting for that keyword will be ignored.
1165
1166 The keywords CertificateFile, ControlPath, IdentityAgent, IdentityFile
1167 and UserKnownHostsFile support environment variables. The keywords
1168 LocalForward and RemoteForward support environment variables only for
1169 Unix domain socket paths.
1170
1144FILES 1171FILES
1145 ~/.ssh/config 1172 ~/.ssh/config
1146 This is the per-user configuration file. The format of this file 1173 This is the per-user configuration file. The format of this file
@@ -1164,4 +1191,4 @@ AUTHORS
1164 created OpenSSH. Markus Friedl contributed the support for SSH protocol 1191 created OpenSSH. Markus Friedl contributed the support for SSH protocol
1165 versions 1.5 and 2.0. 1192 versions 1.5 and 2.0.
1166 1193
1167OpenBSD 6.7 April 11, 2020 OpenBSD 6.7 1194OpenBSD 6.8 August 11, 2020 OpenBSD 6.8
diff --git a/ssh_config.5 b/ssh_config.5
index 2574b1004..080d289a7 100644
--- a/ssh_config.5
+++ b/ssh_config.5
@@ -33,8 +33,8 @@
33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35.\" 35.\"
36.\" $OpenBSD: ssh_config.5,v 1.325 2020/04/11 20:20:09 jmc Exp $ 36.\" $OpenBSD: ssh_config.5,v 1.332 2020/08/11 09:49:57 djm Exp $
37.Dd $Mdocdate: April 11 2020 $ 37.Dd $Mdocdate: August 11 2020 $
38.Dt SSH_CONFIG 5 38.Dt SSH_CONFIG 5
39.Os 39.Os
40.Sh NAME 40.Sh NAME
@@ -268,13 +268,22 @@ option was specified to
268If this option is set to 268If this option is set to
269.Cm no , 269.Cm no ,
270no keys are added to the agent. 270no keys are added to the agent.
271Alternately, this option may be specified as a time interval
272using the format described in the
273.Sx TIME FORMATS
274section of
275.Xr sshd_config 5
276to specify the key's lifetime in
277.Xr ssh-agent 1 ,
278after which it will automatically be removed.
271The argument must be 279The argument must be
272.Cm yes ,
273.Cm confirm ,
274.Cm ask ,
275or
276.Cm no 280.Cm no
277(the default). 281(the default),
282.Cm yes ,
283.Cm confirm
284(optionally followed by a time interval),
285.Cm ask
286or a time interval.
278.It Cm AddressFamily 287.It Cm AddressFamily
279Specifies which address family to use when connecting. 288Specifies which address family to use when connecting.
280Valid arguments are 289Valid arguments are
@@ -416,9 +425,11 @@ or
416.Pp 425.Pp
417Arguments to 426Arguments to
418.Cm CertificateFile 427.Cm CertificateFile
419may use the tilde syntax to refer to a user's home directory 428may use the tilde syntax to refer to a user's home directory,
420or the tokens described in the 429the tokens described in the
421.Sx TOKENS 430.Sx TOKENS
431section and environment variables as described in the
432.Sx ENVIRONMENT VARIABLES
422section. 433section.
423.Pp 434.Pp
424It is possible to have multiple certificate files specified in 435It is possible to have multiple certificate files specified in
@@ -578,9 +589,11 @@ section above or the string
578to disable connection sharing. 589to disable connection sharing.
579Arguments to 590Arguments to
580.Cm ControlPath 591.Cm ControlPath
581may use the tilde syntax to refer to a user's home directory 592may use the tilde syntax to refer to a user's home directory,
582or the tokens described in the 593the tokens described in the
583.Sx TOKENS 594.Sx TOKENS
595section and environment variables as described in the
596.Sx ENVIRONMENT VARIABLES
584section. 597section.
585It is recommended that any 598It is recommended that any
586.Cm ControlPath 599.Cm ControlPath
@@ -1022,9 +1035,11 @@ the location of the socket.
1022.Pp 1035.Pp
1023Arguments to 1036Arguments to
1024.Cm IdentityAgent 1037.Cm IdentityAgent
1025may use the tilde syntax to refer to a user's home directory 1038may use the tilde syntax to refer to a user's home directory,
1026or the tokens described in the 1039the tokens described in the
1027.Sx TOKENS 1040.Sx TOKENS
1041section and environment variables as described in the
1042.Sx ENVIRONMENT VARIABLES
1028section. 1043section.
1029.It Cm IdentityFile 1044.It Cm IdentityFile
1030Specifies a file from which the user's DSA, ECDSA, authenticator-hosted ECDSA, 1045Specifies a file from which the user's DSA, ECDSA, authenticator-hosted ECDSA,
@@ -1092,6 +1107,7 @@ Multiple pathnames may be specified and each pathname may contain
1092wildcards and, for user configurations, shell-like 1107wildcards and, for user configurations, shell-like
1093.Sq ~ 1108.Sq ~
1094references to user home directories. 1109references to user home directories.
1110Wildcards will be expanded and processed in lexical order.
1095Files without absolute paths are assumed to be in 1111Files without absolute paths are assumed to be in
1096.Pa ~/.ssh 1112.Pa ~/.ssh
1097if included in a user configuration file or 1113if included in a user configuration file or
@@ -1238,8 +1254,10 @@ indicates that the listening port be bound for local use only, while an
1238empty address or 1254empty address or
1239.Sq * 1255.Sq *
1240indicates that the port should be available from all interfaces. 1256indicates that the port should be available from all interfaces.
1241Unix domain socket paths accept the tokens described in the 1257Unix domain socket paths may use the tokens described in the
1242.Sx TOKENS 1258.Sx TOKENS
1259section and environment variables as described in the
1260.Sx ENVIRONMENT VARIABLES
1243section. 1261section.
1244.It Cm LogLevel 1262.It Cm LogLevel
1245Gives the verbosity level that is used when logging messages from 1263Gives the verbosity level that is used when logging messages from
@@ -1509,8 +1527,10 @@ Multiple forwardings may be specified, and additional
1509forwardings can be given on the command line. 1527forwardings can be given on the command line.
1510Privileged ports can be forwarded only when 1528Privileged ports can be forwarded only when
1511logging in as root on the remote machine. 1529logging in as root on the remote machine.
1512Unix domain socket paths accept the tokens described in the 1530Unix domain socket paths may use the tokens described in the
1513.Sx TOKENS 1531.Sx TOKENS
1532section and environment variables as described in the
1533.Sx ENVIRONMENT VARIABLES
1514section. 1534section.
1515.Pp 1535.Pp
1516If the 1536If the
@@ -1826,6 +1846,12 @@ having to remember to give the user name on the command line.
1826.It Cm UserKnownHostsFile 1846.It Cm UserKnownHostsFile
1827Specifies one or more files to use for the user 1847Specifies one or more files to use for the user
1828host key database, separated by whitespace. 1848host key database, separated by whitespace.
1849Each filename may use tilde notation to refer to the user's home directory,
1850the tokens described in the
1851.Sx TOKENS
1852section and environment variables as described in the
1853.Sx ENVIRONMENT VARIABLES
1854section.
1829The default is 1855The default is
1830.Pa ~/.ssh/known_hosts , 1856.Pa ~/.ssh/known_hosts ,
1831.Pa ~/.ssh/known_hosts2 . 1857.Pa ~/.ssh/known_hosts2 .
@@ -1932,6 +1958,9 @@ Local user's home directory.
1932The remote hostname. 1958The remote hostname.
1933.It %i 1959.It %i
1934The local user ID. 1960The local user ID.
1961.It %k
1962The host key alias if specified, otherwise the orignal remote hostname given
1963on the command line.
1935.It %L 1964.It %L
1936The local hostname. 1965The local hostname.
1937.It %l 1966.It %l
@@ -1962,8 +1991,9 @@ The local username.
1962.Cm LocalForward , 1991.Cm LocalForward ,
1963.Cm Match exec , 1992.Cm Match exec ,
1964.Cm RemoteCommand , 1993.Cm RemoteCommand ,
1994.Cm RemoteForward ,
1965and 1995and
1966.Cm RemoteForward 1996.Cm UserKnownHostsFile
1967accept the tokens %%, %C, %d, %h, %i, %L, %l, %n, %p, %r, and %u. 1997accept the tokens %%, %C, %d, %h, %i, %L, %l, %n, %p, %r, and %u.
1968.Pp 1998.Pp
1969.Cm Hostname 1999.Cm Hostname
@@ -1974,6 +2004,29 @@ accepts all tokens.
1974.Pp 2004.Pp
1975.Cm ProxyCommand 2005.Cm ProxyCommand
1976accepts the tokens %%, %h, %n, %p, and %r. 2006accepts the tokens %%, %h, %n, %p, and %r.
2007.Sh ENVIRONMENT VARIABLES
2008Arguments to some keywords can be expanded at runtime from environment
2009variables on the client by enclosing them in
2010.Ic ${} ,
2011for example
2012.Ic ${HOME}/.ssh
2013would refer to the user's .ssh directory.
2014If a specified environment variable does not exist then an error will be
2015returned and the setting for that keyword will be ignored.
2016.Pp
2017The keywords
2018.Cm CertificateFile ,
2019.Cm ControlPath ,
2020.Cm IdentityAgent ,
2021.Cm IdentityFile
2022and
2023.Cm UserKnownHostsFile
2024support environment variables.
2025The keywords
2026.Cm LocalForward
2027and
2028.Cm RemoteForward
2029support environment variables only for Unix domain socket paths.
1977.Sh FILES 2030.Sh FILES
1978.Bl -tag -width Ds 2031.Bl -tag -width Ds
1979.It Pa ~/.ssh/config 2032.It Pa ~/.ssh/config
diff --git a/sshbuf-getput-basic.c b/sshbuf-getput-basic.c
index da834d008..9803fb5ed 100644
--- a/sshbuf-getput-basic.c
+++ b/sshbuf-getput-basic.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshbuf-getput-basic.c,v 1.10 2019/12/13 19:09:37 djm Exp $ */ 1/* $OpenBSD: sshbuf-getput-basic.c,v 1.11 2020/06/05 03:25:35 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2011 Damien Miller 3 * Copyright (c) 2011 Damien Miller
4 * 4 *
@@ -338,6 +338,8 @@ sshbuf_put(struct sshbuf *buf, const void *v, size_t len)
338int 338int
339sshbuf_putb(struct sshbuf *buf, const struct sshbuf *v) 339sshbuf_putb(struct sshbuf *buf, const struct sshbuf *v)
340{ 340{
341 if (v == NULL)
342 return 0;
341 return sshbuf_put(buf, sshbuf_ptr(v), sshbuf_len(v)); 343 return sshbuf_put(buf, sshbuf_ptr(v), sshbuf_len(v));
342} 344}
343 345
diff --git a/sshbuf-misc.c b/sshbuf-misc.c
index 9b5aa208c..afaab8d61 100644
--- a/sshbuf-misc.c
+++ b/sshbuf-misc.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshbuf-misc.c,v 1.14 2020/02/26 13:40:09 jsg Exp $ */ 1/* $OpenBSD: sshbuf-misc.c,v 1.16 2020/06/22 05:54:10 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2011 Damien Miller 3 * Copyright (c) 2011 Damien Miller
4 * 4 *
@@ -63,7 +63,7 @@ sshbuf_dump_data(const void *s, size_t len, FILE *f)
63} 63}
64 64
65void 65void
66sshbuf_dump(struct sshbuf *buf, FILE *f) 66sshbuf_dump(const struct sshbuf *buf, FILE *f)
67{ 67{
68 fprintf(f, "buffer %p len = %zu\n", buf, sshbuf_len(buf)); 68 fprintf(f, "buffer %p len = %zu\n", buf, sshbuf_len(buf));
69 sshbuf_dump_data(sshbuf_ptr(buf), sshbuf_len(buf), f); 69 sshbuf_dump_data(sshbuf_ptr(buf), sshbuf_len(buf), f);
@@ -167,6 +167,49 @@ sshbuf_b64tod(struct sshbuf *buf, const char *b64)
167 return 0; 167 return 0;
168} 168}
169 169
170int
171sshbuf_dtourlb64(const struct sshbuf *d, struct sshbuf *b64, int wrap)
172{
173 int r = SSH_ERR_INTERNAL_ERROR;
174 u_char *p;
175 struct sshbuf *b = NULL;
176 size_t i, l;
177
178 if ((b = sshbuf_new()) == NULL)
179 return SSH_ERR_ALLOC_FAIL;
180 /* Encode using regular base64; we'll transform it once done */
181 if ((r = sshbuf_dtob64(d, b, wrap)) != 0)
182 goto out;
183 /* remove padding from end of encoded string*/
184 for (;;) {
185 l = sshbuf_len(b);
186 if (l <= 1 || sshbuf_ptr(b) == NULL) {
187 r = SSH_ERR_INTERNAL_ERROR;
188 goto out;
189 }
190 if (sshbuf_ptr(b)[l - 1] != '=')
191 break;
192 if ((r = sshbuf_consume_end(b, 1)) != 0)
193 goto out;
194 }
195 /* Replace characters with rfc4648 equivalents */
196 l = sshbuf_len(b);
197 if ((p = sshbuf_mutable_ptr(b)) == NULL) {
198 r = SSH_ERR_INTERNAL_ERROR;
199 goto out;
200 }
201 for (i = 0; i < l; i++) {
202 if (p[i] == '+')
203 p[i] = '-';
204 else if (p[i] == '/')
205 p[i] = '_';
206 }
207 r = sshbuf_putb(b64, b);
208 out:
209 sshbuf_free(b);
210 return r;
211}
212
170char * 213char *
171sshbuf_dup_string(struct sshbuf *buf) 214sshbuf_dup_string(struct sshbuf *buf)
172{ 215{
diff --git a/sshbuf.h b/sshbuf.h
index 94392c8be..2ad0e61be 100644
--- a/sshbuf.h
+++ b/sshbuf.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshbuf.h,v 1.21 2020/04/26 09:38:14 dtucker Exp $ */ 1/* $OpenBSD: sshbuf.h,v 1.23 2020/06/22 05:54:10 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2011 Damien Miller 3 * Copyright (c) 2011 Damien Miller
4 * 4 *
@@ -242,7 +242,7 @@ int sshbuf_put_eckey(struct sshbuf *buf, const EC_KEY *v);
242#endif /* WITH_OPENSSL */ 242#endif /* WITH_OPENSSL */
243 243
244/* Dump the contents of the buffer in a human-readable format */ 244/* Dump the contents of the buffer in a human-readable format */
245void sshbuf_dump(struct sshbuf *buf, FILE *f); 245void sshbuf_dump(const struct sshbuf *buf, FILE *f);
246 246
247/* Dump specified memory in a human-readable format */ 247/* Dump specified memory in a human-readable format */
248void sshbuf_dump_data(const void *s, size_t len, FILE *f); 248void sshbuf_dump_data(const void *s, size_t len, FILE *f);
@@ -253,6 +253,8 @@ char *sshbuf_dtob16(struct sshbuf *buf);
253/* Encode the contents of the buffer as base64 */ 253/* Encode the contents of the buffer as base64 */
254char *sshbuf_dtob64_string(const struct sshbuf *buf, int wrap); 254char *sshbuf_dtob64_string(const struct sshbuf *buf, int wrap);
255int sshbuf_dtob64(const struct sshbuf *d, struct sshbuf *b64, int wrap); 255int sshbuf_dtob64(const struct sshbuf *d, struct sshbuf *b64, int wrap);
256/* RFC4648 "base64url" encoding variant */
257int sshbuf_dtourlb64(const struct sshbuf *d, struct sshbuf *b64, int wrap);
256 258
257/* Decode base64 data and append it to the buffer */ 259/* Decode base64 data and append it to the buffer */
258int sshbuf_b64tod(struct sshbuf *buf, const char *b64); 260int sshbuf_b64tod(struct sshbuf *buf, const char *b64);
diff --git a/sshconnect.c b/sshconnect.c
index 1e5b8ea5a..bab3916d8 100644
--- a/sshconnect.c
+++ b/sshconnect.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshconnect.c,v 1.329 2020/03/13 04:01:56 djm Exp $ */ 1/* $OpenBSD: sshconnect.c,v 1.332 2020/09/09 21:57:27 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -89,11 +89,14 @@ expand_proxy_command(const char *proxy_command, const char *user,
89 const char *host, const char *host_arg, int port) 89 const char *host, const char *host_arg, int port)
90{ 90{
91 char *tmp, *ret, strport[NI_MAXSERV]; 91 char *tmp, *ret, strport[NI_MAXSERV];
92 const char *keyalias = options.host_key_alias ?
93 options.host_key_alias : host_arg;
92 94
93 snprintf(strport, sizeof strport, "%d", port); 95 snprintf(strport, sizeof strport, "%d", port);
94 xasprintf(&tmp, "exec %s", proxy_command); 96 xasprintf(&tmp, "exec %s", proxy_command);
95 ret = percent_expand(tmp, 97 ret = percent_expand(tmp,
96 "h", host, 98 "h", host,
99 "k", keyalias,
97 "n", host_arg, 100 "n", host_arg,
98 "p", strport, 101 "p", strport,
99 "r", options.user, 102 "r", options.user,
@@ -594,7 +597,7 @@ confirm(const char *prompt, const char *fingerprint)
594 if (p[0] == '\0' || strcasecmp(p, "no") == 0) 597 if (p[0] == '\0' || strcasecmp(p, "no") == 0)
595 ret = 0; 598 ret = 0;
596 else if (strcasecmp(p, "yes") == 0 || (fingerprint != NULL && 599 else if (strcasecmp(p, "yes") == 0 || (fingerprint != NULL &&
597 strcasecmp(p, fingerprint) == 0)) 600 strcmp(p, fingerprint) == 0))
598 ret = 1; 601 ret = 1;
599 free(cp); 602 free(cp);
600 if (ret != -1) 603 if (ret != -1)
@@ -1437,7 +1440,8 @@ maybe_add_key_to_agent(const char *authfile, struct sshkey *private,
1437 if (sshkey_is_sk(private)) 1440 if (sshkey_is_sk(private))
1438 skprovider = options.sk_provider; 1441 skprovider = options.sk_provider;
1439 if ((r = ssh_add_identity_constrained(auth_sock, private, 1442 if ((r = ssh_add_identity_constrained(auth_sock, private,
1440 comment == NULL ? authfile : comment, 0, 1443 comment == NULL ? authfile : comment,
1444 options.add_keys_to_agent_lifespan,
1441 (options.add_keys_to_agent == 3), 0, skprovider)) == 0) 1445 (options.add_keys_to_agent == 3), 0, skprovider)) == 0)
1442 debug("identity added to agent: %s", authfile); 1446 debug("identity added to agent: %s", authfile);
1443 else 1447 else
diff --git a/sshconnect2.c b/sshconnect2.c
index 79a22e600..c47fc31a6 100644
--- a/sshconnect2.c
+++ b/sshconnect2.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshconnect2.c,v 1.321 2020/04/17 03:38:47 djm Exp $ */ 1/* $OpenBSD: sshconnect2.c,v 1.326 2020/09/18 05:23:03 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * Copyright (c) 2008 Damien Miller. All rights reserved. 4 * Copyright (c) 2008 Damien Miller. All rights reserved.
@@ -100,12 +100,25 @@ verify_host_key_callback(struct sshkey *hostkey, struct ssh *ssh)
100 return 0; 100 return 0;
101} 101}
102 102
103/* Returns the first item from a comma-separated algorithm list */
104static char *
105first_alg(const char *algs)
106{
107 char *ret, *cp;
108
109 ret = xstrdup(algs);
110 if ((cp = strchr(ret, ',')) != NULL)
111 *cp = '\0';
112 return ret;
113}
114
103static char * 115static char *
104order_hostkeyalgs(char *host, struct sockaddr *hostaddr, u_short port) 116order_hostkeyalgs(char *host, struct sockaddr *hostaddr, u_short port)
105{ 117{
106 char *oavail, *avail, *first, *last, *alg, *hostname, *ret; 118 char *oavail = NULL, *avail = NULL, *first = NULL, *last = NULL;
119 char *alg = NULL, *hostname = NULL, *ret = NULL, *best = NULL;
107 size_t maxlen; 120 size_t maxlen;
108 struct hostkeys *hostkeys; 121 struct hostkeys *hostkeys = NULL;
109 int ktype; 122 int ktype;
110 u_int i; 123 u_int i;
111 124
@@ -117,6 +130,26 @@ order_hostkeyalgs(char *host, struct sockaddr *hostaddr, u_short port)
117 for (i = 0; i < options.num_system_hostfiles; i++) 130 for (i = 0; i < options.num_system_hostfiles; i++)
118 load_hostkeys(hostkeys, hostname, options.system_hostfiles[i]); 131 load_hostkeys(hostkeys, hostname, options.system_hostfiles[i]);
119 132
133 /*
134 * If a plain public key exists that matches the type of the best
135 * preference HostkeyAlgorithms, then use the whole list as is.
136 * Note that we ignore whether the best preference algorithm is a
137 * certificate type, as sshconnect.c will downgrade certs to
138 * plain keys if necessary.
139 */
140 best = first_alg(options.hostkeyalgorithms);
141 if (lookup_key_in_hostkeys_by_type(hostkeys,
142 sshkey_type_plain(sshkey_type_from_name(best)), NULL)) {
143 debug3("%s: have matching best-preference key type %s, "
144 "using HostkeyAlgorithms verbatim", __func__, best);
145 ret = xstrdup(options.hostkeyalgorithms);
146 goto out;
147 }
148
149 /*
150 * Otherwise, prefer the host key algorithms that match known keys
151 * while keeping the ordering of HostkeyAlgorithms as much as possible.
152 */
120 oavail = avail = xstrdup(options.hostkeyalgorithms); 153 oavail = avail = xstrdup(options.hostkeyalgorithms);
121 maxlen = strlen(avail) + 1; 154 maxlen = strlen(avail) + 1;
122 first = xmalloc(maxlen); 155 first = xmalloc(maxlen);
@@ -133,11 +166,23 @@ order_hostkeyalgs(char *host, struct sockaddr *hostaddr, u_short port)
133 while ((alg = strsep(&avail, ",")) && *alg != '\0') { 166 while ((alg = strsep(&avail, ",")) && *alg != '\0') {
134 if ((ktype = sshkey_type_from_name(alg)) == KEY_UNSPEC) 167 if ((ktype = sshkey_type_from_name(alg)) == KEY_UNSPEC)
135 fatal("%s: unknown alg %s", __func__, alg); 168 fatal("%s: unknown alg %s", __func__, alg);
169 /*
170 * If we have a @cert-authority marker in known_hosts then
171 * prefer all certificate algorithms.
172 */
173 if (sshkey_type_is_cert(ktype) &&
174 lookup_marker_in_hostkeys(hostkeys, MRK_CA)) {
175 ALG_APPEND(first, alg);
176 continue;
177 }
178 /* If the key appears in known_hosts then prefer it */
136 if (lookup_key_in_hostkeys_by_type(hostkeys, 179 if (lookup_key_in_hostkeys_by_type(hostkeys,
137 sshkey_type_plain(ktype), NULL)) 180 sshkey_type_plain(ktype), NULL)) {
138 ALG_APPEND(first, alg); 181 ALG_APPEND(first, alg);
139 else 182 continue;
140 ALG_APPEND(last, alg); 183 }
184 /* Otherwise, put it last */
185 ALG_APPEND(last, alg);
141 } 186 }
142#undef ALG_APPEND 187#undef ALG_APPEND
143 xasprintf(&ret, "%s%s%s", first, 188 xasprintf(&ret, "%s%s%s", first,
@@ -145,6 +190,8 @@ order_hostkeyalgs(char *host, struct sockaddr *hostaddr, u_short port)
145 if (*first != '\0') 190 if (*first != '\0')
146 debug3("%s: prefer hostkeyalgs: %s", __func__, first); 191 debug3("%s: prefer hostkeyalgs: %s", __func__, first);
147 192
193 out:
194 free(best);
148 free(first); 195 free(first);
149 free(last); 196 free(last);
150 free(hostname); 197 free(hostname);
@@ -1288,7 +1335,8 @@ key_sig_algorithm(struct ssh *ssh, const struct sshkey *key)
1288 while ((cp = strsep(&allowed, ",")) != NULL) { 1335 while ((cp = strsep(&allowed, ",")) != NULL) {
1289 if (sshkey_type_from_name(cp) != key->type) 1336 if (sshkey_type_from_name(cp) != key->type)
1290 continue; 1337 continue;
1291 tmp = match_list(sshkey_sigalg_by_name(cp), ssh->kex->server_sig_algs, NULL); 1338 tmp = match_list(sshkey_sigalg_by_name(cp),
1339 ssh->kex->server_sig_algs, NULL);
1292 if (tmp != NULL) 1340 if (tmp != NULL)
1293 alg = xstrdup(cp); 1341 alg = xstrdup(cp);
1294 free(tmp); 1342 free(tmp);
@@ -1306,7 +1354,7 @@ identity_sign(struct identity *id, u_char **sigp, size_t *lenp,
1306 struct sshkey *sign_key = NULL, *prv = NULL; 1354 struct sshkey *sign_key = NULL, *prv = NULL;
1307 int r = SSH_ERR_INTERNAL_ERROR; 1355 int r = SSH_ERR_INTERNAL_ERROR;
1308 struct notifier_ctx *notifier = NULL; 1356 struct notifier_ctx *notifier = NULL;
1309 char *fp = NULL; 1357 char *fp = NULL, *pin = NULL, *prompt = NULL;
1310 1358
1311 *sigp = NULL; 1359 *sigp = NULL;
1312 *lenp = 0; 1360 *lenp = 0;
@@ -1335,20 +1383,28 @@ identity_sign(struct identity *id, u_char **sigp, size_t *lenp,
1335 goto out; 1383 goto out;
1336 } 1384 }
1337 sign_key = prv; 1385 sign_key = prv;
1338 if (sshkey_is_sk(sign_key) && 1386 if (sshkey_is_sk(sign_key)) {
1339 (sign_key->sk_flags & SSH_SK_USER_PRESENCE_REQD)) { 1387 if ((sign_key->sk_flags &
1340 /* XXX match batch mode should just skip these keys? */ 1388 SSH_SK_USER_VERIFICATION_REQD)) {
1341 if ((fp = sshkey_fingerprint(sign_key, 1389 xasprintf(&prompt, "Enter PIN for %s key %s: ",
1342 options.fingerprint_hash, SSH_FP_DEFAULT)) == NULL) 1390 sshkey_type(sign_key), id->filename);
1343 fatal("%s: sshkey_fingerprint", __func__); 1391 pin = read_passphrase(prompt, 0);
1344 notifier = notify_start(options.batch_mode, 1392 }
1345 "Confirm user presence for key %s %s", 1393 if ((sign_key->sk_flags & SSH_SK_USER_PRESENCE_REQD)) {
1346 sshkey_type(sign_key), fp); 1394 /* XXX should batch mode just skip these? */
1347 free(fp); 1395 if ((fp = sshkey_fingerprint(sign_key,
1396 options.fingerprint_hash,
1397 SSH_FP_DEFAULT)) == NULL)
1398 fatal("%s: fingerprint", __func__);
1399 notifier = notify_start(options.batch_mode,
1400 "Confirm user presence for key %s %s",
1401 sshkey_type(sign_key), fp);
1402 free(fp);
1403 }
1348 } 1404 }
1349 } 1405 }
1350 if ((r = sshkey_sign(sign_key, sigp, lenp, data, datalen, 1406 if ((r = sshkey_sign(sign_key, sigp, lenp, data, datalen,
1351 alg, options.sk_provider, compat)) != 0) { 1407 alg, options.sk_provider, pin, compat)) != 0) {
1352 debug("%s: sshkey_sign: %s", __func__, ssh_err(r)); 1408 debug("%s: sshkey_sign: %s", __func__, ssh_err(r));
1353 goto out; 1409 goto out;
1354 } 1410 }
@@ -1363,6 +1419,9 @@ identity_sign(struct identity *id, u_char **sigp, size_t *lenp,
1363 /* success */ 1419 /* success */
1364 r = 0; 1420 r = 0;
1365 out: 1421 out:
1422 free(prompt);
1423 if (pin != NULL)
1424 freezero(pin, strlen(pin));
1366 notify_complete(notifier); 1425 notify_complete(notifier);
1367 sshkey_free(prv); 1426 sshkey_free(prv);
1368 return r; 1427 return r;
@@ -1802,10 +1861,7 @@ pubkey_prepare(Authctxt *authctxt)
1802 } 1861 }
1803 ssh_free_identitylist(idlist); 1862 ssh_free_identitylist(idlist);
1804 /* append remaining agent keys */ 1863 /* append remaining agent keys */
1805 for (id = TAILQ_FIRST(&agent); id; id = TAILQ_FIRST(&agent)) { 1864 TAILQ_CONCAT(preferred, &agent, next);
1806 TAILQ_REMOVE(&agent, id, next);
1807 TAILQ_INSERT_TAIL(preferred, id, next);
1808 }
1809 authctxt->agent_fd = agent_fd; 1865 authctxt->agent_fd = agent_fd;
1810 } 1866 }
1811 /* Prefer PKCS11 keys that are explicitly listed */ 1867 /* Prefer PKCS11 keys that are explicitly listed */
@@ -1831,10 +1887,7 @@ pubkey_prepare(Authctxt *authctxt)
1831 } 1887 }
1832 } 1888 }
1833 /* append remaining keys from the config file */ 1889 /* append remaining keys from the config file */
1834 for (id = TAILQ_FIRST(&files); id; id = TAILQ_FIRST(&files)) { 1890 TAILQ_CONCAT(preferred, &files, next);
1835 TAILQ_REMOVE(&files, id, next);
1836 TAILQ_INSERT_TAIL(preferred, id, next);
1837 }
1838 /* finally, filter by PubkeyAcceptedKeyTypes */ 1891 /* finally, filter by PubkeyAcceptedKeyTypes */
1839 TAILQ_FOREACH_SAFE(id, preferred, next, id2) { 1892 TAILQ_FOREACH_SAFE(id, preferred, next, id2) {
1840 if (id->key != NULL && !key_type_allowed_by_config(id->key)) { 1893 if (id->key != NULL && !key_type_allowed_by_config(id->key)) {
diff --git a/sshd.0 b/sshd.0
index 5f9aadd66..e32e0082c 100644
--- a/sshd.0
+++ b/sshd.0
@@ -391,6 +391,11 @@ AUTHORIZED_KEYS FILE FORMAT
391 using this key. This option only makes sense for the FIDO 391 using this key. This option only makes sense for the FIDO
392 authenticator algorithms ecdsa-sk and ed25519-sk. 392 authenticator algorithms ecdsa-sk and ed25519-sk.
393 393
394 verify-required
395 Require that signatures made using this key attest that they
396 verified the user, e.g. via a PIN. This option only makes sense
397 for the FIDO authenticator algorithms ecdsa-sk and ed25519-sk.
398
394 restrict 399 restrict
395 Enable all restrictions, i.e. disable port, agent and X11 400 Enable all restrictions, i.e. disable port, agent and X11
396 forwarding, as well as disabling PTY allocation and execution of 401 forwarding, as well as disabling PTY allocation and execution of
@@ -664,4 +669,4 @@ AUTHORS
664 versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support 669 versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support
665 for privilege separation. 670 for privilege separation.
666 671
667OpenBSD 6.7 January 25, 2020 OpenBSD 6.7 672OpenBSD 6.8 August 27, 2020 OpenBSD 6.8
diff --git a/sshd.8 b/sshd.8
index 5ce0ea4fa..7895a6a94 100644
--- a/sshd.8
+++ b/sshd.8
@@ -33,8 +33,8 @@
33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35.\" 35.\"
36.\" $OpenBSD: sshd.8,v 1.312 2020/01/25 06:03:10 djm Exp $ 36.\" $OpenBSD: sshd.8,v 1.313 2020/08/27 01:07:10 djm Exp $
37.Dd $Mdocdate: January 25 2020 $ 37.Dd $Mdocdate: August 27 2020 $
38.Dt SSHD 8 38.Dt SSHD 8
39.Os 39.Os
40.Sh NAME 40.Sh NAME
@@ -631,6 +631,13 @@ This option only makes sense for the FIDO authenticator algorithms
631.Cm ecdsa-sk 631.Cm ecdsa-sk
632and 632and
633.Cm ed25519-sk . 633.Cm ed25519-sk .
634.It Cm verify-required
635Require that signatures made using this key attest that they verified
636the user, e.g. via a PIN.
637This option only makes sense for the FIDO authenticator algorithms
638.Cm ecdsa-sk
639and
640.Cm ed25519-sk .
634.It Cm restrict 641.It Cm restrict
635Enable all restrictions, i.e. disable port, agent and X11 forwarding, 642Enable all restrictions, i.e. disable port, agent and X11 forwarding,
636as well as disabling PTY allocation 643as well as disabling PTY allocation
diff --git a/sshd.c b/sshd.c
index d2d1877d4..fb9b7b7fb 100644
--- a/sshd.c
+++ b/sshd.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshd.c,v 1.552 2020/03/13 04:01:57 djm Exp $ */ 1/* $OpenBSD: sshd.c,v 1.561 2020/08/27 01:06:19 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -840,7 +840,7 @@ notify_hostkeys(struct ssh *ssh)
840 * all connections are dropped for startups > max_startups 840 * all connections are dropped for startups > max_startups
841 */ 841 */
842static int 842static int
843drop_connection(int startups) 843should_drop_connection(int startups)
844{ 844{
845 int p, r; 845 int p, r;
846 846
@@ -857,10 +857,68 @@ drop_connection(int startups)
857 p += options.max_startups_rate; 857 p += options.max_startups_rate;
858 r = arc4random_uniform(100); 858 r = arc4random_uniform(100);
859 859
860 debug("drop_connection: p %d, r %d", p, r); 860 debug("%s: p %d, r %d", __func__, p, r);
861 return (r < p) ? 1 : 0; 861 return (r < p) ? 1 : 0;
862} 862}
863 863
864/*
865 * Check whether connection should be accepted by MaxStartups.
866 * Returns 0 if the connection is accepted. If the connection is refused,
867 * returns 1 and attempts to send notification to client.
868 * Logs when the MaxStartups condition is entered or exited, and periodically
869 * while in that state.
870 */
871static int
872drop_connection(int sock, int startups)
873{
874 char *laddr, *raddr;
875 const char msg[] = "Exceeded MaxStartups\r\n";
876 static time_t last_drop, first_drop;
877 static u_int ndropped;
878 LogLevel drop_level = SYSLOG_LEVEL_VERBOSE;
879 time_t now;
880
881 now = monotime();
882 if (!should_drop_connection(startups)) {
883 if (last_drop != 0 &&
884 startups < options.max_startups_begin - 1) {
885 /* XXX maybe need better hysteresis here */
886 logit("exited MaxStartups throttling after %s, "
887 "%u connections dropped",
888 fmt_timeframe(now - first_drop), ndropped);
889 last_drop = 0;
890 }
891 return 0;
892 }
893
894#define SSHD_MAXSTARTUPS_LOG_INTERVAL (5 * 60)
895 if (last_drop == 0) {
896 error("beginning MaxStartups throttling");
897 drop_level = SYSLOG_LEVEL_INFO;
898 first_drop = now;
899 ndropped = 0;
900 } else if (last_drop + SSHD_MAXSTARTUPS_LOG_INTERVAL < now) {
901 /* Periodic logs */
902 error("in MaxStartups throttling for %s, "
903 "%u connections dropped",
904 fmt_timeframe(now - first_drop), ndropped + 1);
905 drop_level = SYSLOG_LEVEL_INFO;
906 }
907 last_drop = now;
908 ndropped++;
909
910 laddr = get_local_ipaddr(sock);
911 raddr = get_peer_ipaddr(sock);
912 do_log2(drop_level, "drop connection #%d from [%s]:%d on [%s]:%d "
913 "past MaxStartups", startups, raddr, get_peer_port(sock),
914 laddr, get_local_port(sock));
915 free(laddr);
916 free(raddr);
917 /* best-effort notification to client */
918 (void)write(sock, msg, sizeof(msg) - 1);
919 return 1;
920}
921
864static void 922static void
865usage(void) 923usage(void)
866{ 924{
@@ -918,7 +976,7 @@ send_rexec_state(int fd, struct sshbuf *conf)
918 rexec_send_rng_seed(m); 976 rexec_send_rng_seed(m);
919#endif 977#endif
920 if (ssh_msg_send(fd, 0, m) == -1) 978 if (ssh_msg_send(fd, 0, m) == -1)
921 fatal("%s: ssh_msg_send failed", __func__); 979 error("%s: ssh_msg_send failed", __func__);
922 980
923 sshbuf_free(m); 981 sshbuf_free(m);
924 sshbuf_free(inc); 982 sshbuf_free(inc);
@@ -1217,27 +1275,9 @@ server_accept_loop(int *sock_in, int *sock_out, int *newsock, int *config_s)
1217 usleep(100 * 1000); 1275 usleep(100 * 1000);
1218 continue; 1276 continue;
1219 } 1277 }
1220 if (unset_nonblock(*newsock) == -1) { 1278 if (unset_nonblock(*newsock) == -1 ||
1221 close(*newsock); 1279 drop_connection(*newsock, startups) ||
1222 continue; 1280 pipe(startup_p) == -1) {
1223 }
1224 if (drop_connection(startups) == 1) {
1225 char *laddr = get_local_ipaddr(*newsock);
1226 char *raddr = get_peer_ipaddr(*newsock);
1227 char msg[] = "Exceeded MaxStartups\r\n";
1228
1229 verbose("drop connection #%d from [%s]:%d "
1230 "on [%s]:%d past MaxStartups", startups,
1231 raddr, get_peer_port(*newsock),
1232 laddr, get_local_port(*newsock));
1233 free(laddr);
1234 free(raddr);
1235 /* best-effort notification to client */
1236 (void)write(*newsock, msg, strlen(msg));
1237 close(*newsock);
1238 continue;
1239 }
1240 if (pipe(startup_p) == -1) {
1241 close(*newsock); 1281 close(*newsock);
1242 continue; 1282 continue;
1243 } 1283 }
@@ -1339,9 +1379,9 @@ server_accept_loop(int *sock_in, int *sock_out, int *newsock, int *config_s)
1339 close(startup_p[1]); 1379 close(startup_p[1]);
1340 1380
1341 if (rexec_flag) { 1381 if (rexec_flag) {
1382 close(config_s[1]);
1342 send_rexec_state(config_s[0], cfg); 1383 send_rexec_state(config_s[0], cfg);
1343 close(config_s[0]); 1384 close(config_s[0]);
1344 close(config_s[1]);
1345 } 1385 }
1346 close(*newsock); 1386 close(*newsock);
1347 1387
@@ -1697,6 +1737,7 @@ main(int ac, char **av)
1697 if ((cfg = sshbuf_new()) == NULL) 1737 if ((cfg = sshbuf_new()) == NULL)
1698 fatal("%s: sshbuf_new failed", __func__); 1738 fatal("%s: sshbuf_new failed", __func__);
1699 if (rexeced_flag) { 1739 if (rexeced_flag) {
1740 setproctitle("%s", "[rexeced]");
1700 recv_rexec_state(REEXEC_CONFIG_PASS_FD, cfg); 1741 recv_rexec_state(REEXEC_CONFIG_PASS_FD, cfg);
1701 if (!debug_flag) { 1742 if (!debug_flag) {
1702 startup_pipe = dup(REEXEC_STARTUP_PIPE_FD); 1743 startup_pipe = dup(REEXEC_STARTUP_PIPE_FD);
@@ -1820,10 +1861,19 @@ main(int ac, char **av)
1820 &pubkey, NULL)) != 0 && r != SSH_ERR_SYSTEM_ERROR) 1861 &pubkey, NULL)) != 0 && r != SSH_ERR_SYSTEM_ERROR)
1821 do_log2(ll, "Unable to load host key \"%s\": %s", 1862 do_log2(ll, "Unable to load host key \"%s\": %s",
1822 options.host_key_files[i], ssh_err(r)); 1863 options.host_key_files[i], ssh_err(r));
1823 if (pubkey == NULL && key != NULL) 1864 if (pubkey != NULL && key != NULL) {
1865 if (!sshkey_equal(pubkey, key)) {
1866 error("Public key for %s does not match "
1867 "private key", options.host_key_files[i]);
1868 sshkey_free(pubkey);
1869 pubkey = NULL;
1870 }
1871 }
1872 if (pubkey == NULL && key != NULL) {
1824 if ((r = sshkey_from_private(key, &pubkey)) != 0) 1873 if ((r = sshkey_from_private(key, &pubkey)) != 0)
1825 fatal("Could not demote key: \"%s\": %s", 1874 fatal("Could not demote key: \"%s\": %s",
1826 options.host_key_files[i], ssh_err(r)); 1875 options.host_key_files[i], ssh_err(r));
1876 }
1827 sensitive_data.host_keys[i] = key; 1877 sensitive_data.host_keys[i] = key;
1828 sensitive_data.host_pubkeys[i] = pubkey; 1878 sensitive_data.host_pubkeys[i] = pubkey;
1829 1879
@@ -2076,6 +2126,7 @@ main(int ac, char **av)
2076 dup2(config_s[1], REEXEC_CONFIG_PASS_FD); 2126 dup2(config_s[1], REEXEC_CONFIG_PASS_FD);
2077 close(config_s[1]); 2127 close(config_s[1]);
2078 2128
2129 ssh_signal(SIGHUP, SIG_IGN); /* avoid reset to SIG_DFL */
2079 execv(rexec_argv[0], rexec_argv); 2130 execv(rexec_argv[0], rexec_argv);
2080 2131
2081 /* Reexec has failed, fall back and continue */ 2132 /* Reexec has failed, fall back and continue */
@@ -2322,19 +2373,19 @@ sshd_hostkey_sign(struct ssh *ssh, struct sshkey *privkey,
2322 if (use_privsep) { 2373 if (use_privsep) {
2323 if (privkey) { 2374 if (privkey) {
2324 if (mm_sshkey_sign(ssh, privkey, signature, slenp, 2375 if (mm_sshkey_sign(ssh, privkey, signature, slenp,
2325 data, dlen, alg, options.sk_provider, 2376 data, dlen, alg, options.sk_provider, NULL,
2326 ssh->compat) < 0) 2377 ssh->compat) < 0)
2327 fatal("%s: privkey sign failed", __func__); 2378 fatal("%s: privkey sign failed", __func__);
2328 } else { 2379 } else {
2329 if (mm_sshkey_sign(ssh, pubkey, signature, slenp, 2380 if (mm_sshkey_sign(ssh, pubkey, signature, slenp,
2330 data, dlen, alg, options.sk_provider, 2381 data, dlen, alg, options.sk_provider, NULL,
2331 ssh->compat) < 0) 2382 ssh->compat) < 0)
2332 fatal("%s: pubkey sign failed", __func__); 2383 fatal("%s: pubkey sign failed", __func__);
2333 } 2384 }
2334 } else { 2385 } else {
2335 if (privkey) { 2386 if (privkey) {
2336 if (sshkey_sign(privkey, signature, slenp, data, dlen, 2387 if (sshkey_sign(privkey, signature, slenp, data, dlen,
2337 alg, options.sk_provider, ssh->compat) < 0) 2388 alg, options.sk_provider, NULL, ssh->compat) < 0)
2338 fatal("%s: privkey sign failed", __func__); 2389 fatal("%s: privkey sign failed", __func__);
2339 } else { 2390 } else {
2340 if ((r = ssh_agent_sign(auth_sock, pubkey, 2391 if ((r = ssh_agent_sign(auth_sock, pubkey,
@@ -2460,10 +2511,11 @@ do_ssh2_kex(struct ssh *ssh)
2460 2511
2461#ifdef DEBUG_KEXDH 2512#ifdef DEBUG_KEXDH
2462 /* send 1st encrypted/maced/compressed message */ 2513 /* send 1st encrypted/maced/compressed message */
2463 packet_start(SSH2_MSG_IGNORE); 2514 if ((r = sshpkt_start(ssh, SSH2_MSG_IGNORE)) != 0 ||
2464 packet_put_cstring("markus"); 2515 (r = sshpkt_put_cstring(ssh, "markus")) != 0 ||
2465 packet_send(); 2516 (r = sshpkt_send(ssh)) != 0 ||
2466 packet_write_wait(); 2517 (r = ssh_packet_write_wait(ssh)) != 0)
2518 fatal("%s: send test: %s", __func__, ssh_err(r));
2467#endif 2519#endif
2468 debug("KEX done"); 2520 debug("KEX done");
2469} 2521}
diff --git a/sshd_config.0 b/sshd_config.0
index e75ed1b32..8132c3f15 100644
--- a/sshd_config.0
+++ b/sshd_config.0
@@ -497,10 +497,11 @@ DESCRIPTION
497 497
498 Include 498 Include
499 Include the specified configuration file(s). Multiple pathnames 499 Include the specified configuration file(s). Multiple pathnames
500 may be specified and each pathname may contain glob(7) wildcards. 500 may be specified and each pathname may contain glob(7) wildcards
501 Files without absolute paths are assumed to be in /etc/ssh. An 501 that will be expanded and processed in lexical order. Files
502 Include directive may appear inside a Match block to perform 502 without absolute paths are assumed to be in /etc/ssh. An Include
503 conditional inclusion. 503 directive may appear inside a Match block to perform conditional
504 inclusion.
504 505
505 IPQoS Specifies the IPv4 type-of-service or DSCP class for the 506 IPQoS Specifies the IPv4 type-of-service or DSCP class for the
506 connection. Accepted values are af11, af12, af13, af21, af22, 507 connection. Accepted values are af11, af12, af13, af21, af22,
@@ -866,9 +867,10 @@ DESCRIPTION
866 -Q PubkeyAcceptedKeyTypes". 867 -Q PubkeyAcceptedKeyTypes".
867 868
868 PubkeyAuthOptions 869 PubkeyAuthOptions
869 Sets one or more public key authentication options. Two option 870 Sets one or more public key authentication options. The
870 keywords are currently supported: none (the default; indicating 871 supported keywords are: none (the default; indicating no
871 no additional options are enabled) and touch-required. 872 additional options are enabled), touch-required and
873 verify-required.
872 874
873 The touch-required option causes public key authentication using 875 The touch-required option causes public key authentication using
874 a FIDO authenticator algorithm (i.e. ecdsa-sk or ed25519-sk) to 876 a FIDO authenticator algorithm (i.e. ecdsa-sk or ed25519-sk) to
@@ -876,8 +878,13 @@ DESCRIPTION
876 user explicitly confirmed the authentication (usually by touching 878 user explicitly confirmed the authentication (usually by touching
877 the authenticator). By default, sshd(8) requires user presence 879 the authenticator). By default, sshd(8) requires user presence
878 unless overridden with an authorized_keys option. The 880 unless overridden with an authorized_keys option. The
879 touch-required flag disables this override. This option has no 881 touch-required flag disables this override.
880 effect for other, non-authenticator public key types. 882
883 The verify-required option requires a FIDO key signature attest
884 that the user was verified, e.g. via a PIN.
885
886 Neither the touch-required or verify-required options have any
887 effect for other, non-FIDO, public key types.
881 888
882 PubkeyAuthentication 889 PubkeyAuthentication
883 Specifies whether public key authentication is allowed. The 890 Specifies whether public key authentication is allowed. The
@@ -1143,4 +1150,4 @@ AUTHORS
1143 versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support 1150 versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support
1144 for privilege separation. 1151 for privilege separation.
1145 1152
1146OpenBSD 6.7 April 17, 2020 OpenBSD 6.7 1153OpenBSD 6.8 August 27, 2020 OpenBSD 6.8
diff --git a/sshd_config.5 b/sshd_config.5
index 88db4db07..a555e7ec3 100644
--- a/sshd_config.5
+++ b/sshd_config.5
@@ -33,8 +33,8 @@
33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35.\" 35.\"
36.\" $OpenBSD: sshd_config.5,v 1.311 2020/04/17 06:12:41 jmc Exp $ 36.\" $OpenBSD: sshd_config.5,v 1.315 2020/08/27 12:34:00 jmc Exp $
37.Dd $Mdocdate: April 17 2020 $ 37.Dd $Mdocdate: August 27 2020 $
38.Dt SSHD_CONFIG 5 38.Dt SSHD_CONFIG 5
39.Os 39.Os
40.Sh NAME 40.Sh NAME
@@ -880,7 +880,7 @@ The default is
880Include the specified configuration file(s). 880Include the specified configuration file(s).
881Multiple pathnames may be specified and each pathname may contain 881Multiple pathnames may be specified and each pathname may contain
882.Xr glob 7 882.Xr glob 7
883wildcards. 883wildcards that will be expanded and processed in lexical order.
884Files without absolute paths are assumed to be in 884Files without absolute paths are assumed to be in
885.Pa /etc/ssh . 885.Pa /etc/ssh .
886An 886An
@@ -1537,11 +1537,12 @@ The list of available key types may also be obtained using
1537.Qq ssh -Q PubkeyAcceptedKeyTypes . 1537.Qq ssh -Q PubkeyAcceptedKeyTypes .
1538.It Cm PubkeyAuthOptions 1538.It Cm PubkeyAuthOptions
1539Sets one or more public key authentication options. 1539Sets one or more public key authentication options.
1540Two option keywords are currently supported: 1540The supported keywords are:
1541.Cm none 1541.Cm none
1542(the default; indicating no additional options are enabled) 1542(the default; indicating no additional options are enabled),
1543.Cm touch-required
1543and 1544and
1544.Cm touch-required . 1545.Cm verify-required .
1545.Pp 1546.Pp
1546The 1547The
1547.Cm touch-required 1548.Cm touch-required
@@ -1558,7 +1559,17 @@ requires user presence unless overridden with an authorized_keys option.
1558The 1559The
1559.Cm touch-required 1560.Cm touch-required
1560flag disables this override. 1561flag disables this override.
1561This option has no effect for other, non-authenticator public key types. 1562.Pp
1563The
1564.Cm verify-required
1565option requires a FIDO key signature attest that the user was verified,
1566e.g. via a PIN.
1567.Pp
1568Neither the
1569.Cm touch-required
1570or
1571.Cm verify-required
1572options have any effect for other, non-FIDO, public key types.
1562.It Cm PubkeyAuthentication 1573.It Cm PubkeyAuthentication
1563Specifies whether public key authentication is allowed. 1574Specifies whether public key authentication is allowed.
1564The default is 1575The default is
diff --git a/sshkey.c b/sshkey.c
index 1ac32a0ec..b88282e19 100644
--- a/sshkey.c
+++ b/sshkey.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshkey.c,v 1.108 2020/04/11 10:16:11 djm Exp $ */ 1/* $OpenBSD: sshkey.c,v 1.111 2020/08/27 01:06:19 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
4 * Copyright (c) 2008 Alexander von Gernler. All rights reserved. 4 * Copyright (c) 2008 Alexander von Gernler. All rights reserved.
@@ -132,6 +132,8 @@ static const struct keytype keytypes[] = {
132# endif /* OPENSSL_HAS_NISTP521 */ 132# endif /* OPENSSL_HAS_NISTP521 */
133 { "sk-ecdsa-sha2-nistp256@openssh.com", "ECDSA-SK", NULL, 133 { "sk-ecdsa-sha2-nistp256@openssh.com", "ECDSA-SK", NULL,
134 KEY_ECDSA_SK, NID_X9_62_prime256v1, 0, 0 }, 134 KEY_ECDSA_SK, NID_X9_62_prime256v1, 0, 0 },
135 { "webauthn-sk-ecdsa-sha2-nistp256@openssh.com", "ECDSA-SK", NULL,
136 KEY_ECDSA_SK, NID_X9_62_prime256v1, 0, 1 },
135# endif /* OPENSSL_HAS_ECC */ 137# endif /* OPENSSL_HAS_ECC */
136 { "ssh-rsa-cert-v01@openssh.com", "RSA-CERT", NULL, 138 { "ssh-rsa-cert-v01@openssh.com", "RSA-CERT", NULL,
137 KEY_RSA_CERT, 0, 1, 0 }, 139 KEY_RSA_CERT, 0, 1, 0 },
@@ -2726,7 +2728,7 @@ int
2726sshkey_sign(struct sshkey *key, 2728sshkey_sign(struct sshkey *key,
2727 u_char **sigp, size_t *lenp, 2729 u_char **sigp, size_t *lenp,
2728 const u_char *data, size_t datalen, 2730 const u_char *data, size_t datalen,
2729 const char *alg, const char *sk_provider, u_int compat) 2731 const char *alg, const char *sk_provider, const char *sk_pin, u_int compat)
2730{ 2732{
2731 int was_shielded = sshkey_is_shielded(key); 2733 int was_shielded = sshkey_is_shielded(key);
2732 int r2, r = SSH_ERR_INTERNAL_ERROR; 2734 int r2, r = SSH_ERR_INTERNAL_ERROR;
@@ -2765,7 +2767,7 @@ sshkey_sign(struct sshkey *key,
2765 case KEY_ECDSA_SK_CERT: 2767 case KEY_ECDSA_SK_CERT:
2766 case KEY_ECDSA_SK: 2768 case KEY_ECDSA_SK:
2767 r = sshsk_sign(sk_provider, key, sigp, lenp, data, 2769 r = sshsk_sign(sk_provider, key, sigp, lenp, data,
2768 datalen, compat, /* XXX PIN */ NULL); 2770 datalen, compat, sk_pin);
2769 break; 2771 break;
2770#ifdef WITH_XMSS 2772#ifdef WITH_XMSS
2771 case KEY_XMSS: 2773 case KEY_XMSS:
@@ -2887,7 +2889,8 @@ sshkey_drop_cert(struct sshkey *k)
2887/* Sign a certified key, (re-)generating the signed certblob. */ 2889/* Sign a certified key, (re-)generating the signed certblob. */
2888int 2890int
2889sshkey_certify_custom(struct sshkey *k, struct sshkey *ca, const char *alg, 2891sshkey_certify_custom(struct sshkey *k, struct sshkey *ca, const char *alg,
2890 const char *sk_provider, sshkey_certify_signer *signer, void *signer_ctx) 2892 const char *sk_provider, const char *sk_pin,
2893 sshkey_certify_signer *signer, void *signer_ctx)
2891{ 2894{
2892 struct sshbuf *principals = NULL; 2895 struct sshbuf *principals = NULL;
2893 u_char *ca_blob = NULL, *sig_blob = NULL, nonce[32]; 2896 u_char *ca_blob = NULL, *sig_blob = NULL, nonce[32];
@@ -3025,7 +3028,7 @@ sshkey_certify_custom(struct sshkey *k, struct sshkey *ca, const char *alg,
3025 3028
3026 /* Sign the whole mess */ 3029 /* Sign the whole mess */
3027 if ((ret = signer(ca, &sig_blob, &sig_len, sshbuf_ptr(cert), 3030 if ((ret = signer(ca, &sig_blob, &sig_len, sshbuf_ptr(cert),
3028 sshbuf_len(cert), alg, sk_provider, 0, signer_ctx)) != 0) 3031 sshbuf_len(cert), alg, sk_provider, sk_pin, 0, signer_ctx)) != 0)
3029 goto out; 3032 goto out;
3030 /* Check and update signature_type against what was actually used */ 3033 /* Check and update signature_type against what was actually used */
3031 if ((ret = sshkey_get_sigtype(sig_blob, sig_len, &sigtype)) != 0) 3034 if ((ret = sshkey_get_sigtype(sig_blob, sig_len, &sigtype)) != 0)
@@ -3055,19 +3058,20 @@ sshkey_certify_custom(struct sshkey *k, struct sshkey *ca, const char *alg,
3055static int 3058static int
3056default_key_sign(struct sshkey *key, u_char **sigp, size_t *lenp, 3059default_key_sign(struct sshkey *key, u_char **sigp, size_t *lenp,
3057 const u_char *data, size_t datalen, 3060 const u_char *data, size_t datalen,
3058 const char *alg, const char *sk_provider, u_int compat, void *ctx) 3061 const char *alg, const char *sk_provider, const char *sk_pin,
3062 u_int compat, void *ctx)
3059{ 3063{
3060 if (ctx != NULL) 3064 if (ctx != NULL)
3061 return SSH_ERR_INVALID_ARGUMENT; 3065 return SSH_ERR_INVALID_ARGUMENT;
3062 return sshkey_sign(key, sigp, lenp, data, datalen, alg, 3066 return sshkey_sign(key, sigp, lenp, data, datalen, alg,
3063 sk_provider, compat); 3067 sk_provider, sk_pin, compat);
3064} 3068}
3065 3069
3066int 3070int
3067sshkey_certify(struct sshkey *k, struct sshkey *ca, const char *alg, 3071sshkey_certify(struct sshkey *k, struct sshkey *ca, const char *alg,
3068 const char *sk_provider) 3072 const char *sk_provider, const char *sk_pin)
3069{ 3073{
3070 return sshkey_certify_custom(k, ca, alg, sk_provider, 3074 return sshkey_certify_custom(k, ca, alg, sk_provider, sk_pin,
3071 default_key_sign, NULL); 3075 default_key_sign, NULL);
3072} 3076}
3073 3077
@@ -3599,10 +3603,12 @@ sshkey_private_deserialize(struct sshbuf *buf, struct sshkey **kp)
3599 case KEY_XMSS: 3603 case KEY_XMSS:
3600 case KEY_XMSS_CERT: 3604 case KEY_XMSS_CERT:
3601 if ((r = sshbuf_get_cstring(buf, &xmss_name, NULL)) != 0 || 3605 if ((r = sshbuf_get_cstring(buf, &xmss_name, NULL)) != 0 ||
3602 (r = sshkey_xmss_init(k, xmss_name)) != 0 ||
3603 (r = sshbuf_get_string(buf, &xmss_pk, &pklen)) != 0 || 3606 (r = sshbuf_get_string(buf, &xmss_pk, &pklen)) != 0 ||
3604 (r = sshbuf_get_string(buf, &xmss_sk, &sklen)) != 0) 3607 (r = sshbuf_get_string(buf, &xmss_sk, &sklen)) != 0)
3605 goto out; 3608 goto out;
3609 if (type == KEY_XMSS &&
3610 (r = sshkey_xmss_init(k, xmss_name)) != 0)
3611 goto out;
3606 if (pklen != sshkey_xmss_pklen(k) || 3612 if (pklen != sshkey_xmss_pklen(k) ||
3607 sklen != sshkey_xmss_sklen(k)) { 3613 sklen != sshkey_xmss_sklen(k)) {
3608 r = SSH_ERR_INVALID_FORMAT; 3614 r = SSH_ERR_INVALID_FORMAT;
diff --git a/sshkey.h b/sshkey.h
index f586e8967..dc1c10597 100644
--- a/sshkey.h
+++ b/sshkey.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshkey.h,v 1.45 2020/04/08 00:08:46 djm Exp $ */ 1/* $OpenBSD: sshkey.h,v 1.46 2020/08/27 01:06:19 djm Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. 4 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
@@ -201,12 +201,13 @@ size_t sshkey_format_cert_validity(const struct sshkey_cert *,
201int sshkey_check_cert_sigtype(const struct sshkey *, const char *); 201int sshkey_check_cert_sigtype(const struct sshkey *, const char *);
202 202
203int sshkey_certify(struct sshkey *, struct sshkey *, 203int sshkey_certify(struct sshkey *, struct sshkey *,
204 const char *, const char *); 204 const char *, const char *, const char *);
205/* Variant allowing use of a custom signature function (e.g. for ssh-agent) */ 205/* Variant allowing use of a custom signature function (e.g. for ssh-agent) */
206typedef int sshkey_certify_signer(struct sshkey *, u_char **, size_t *, 206typedef int sshkey_certify_signer(struct sshkey *, u_char **, size_t *,
207 const u_char *, size_t, const char *, const char *, u_int, void *); 207 const u_char *, size_t, const char *, const char *, const char *,
208 u_int, void *);
208int sshkey_certify_custom(struct sshkey *, struct sshkey *, const char *, 209int sshkey_certify_custom(struct sshkey *, struct sshkey *, const char *,
209 const char *, sshkey_certify_signer *, void *); 210 const char *, const char *, sshkey_certify_signer *, void *);
210 211
211int sshkey_ecdsa_nid_from_name(const char *); 212int sshkey_ecdsa_nid_from_name(const char *);
212int sshkey_curve_name_to_nid(const char *); 213int sshkey_curve_name_to_nid(const char *);
@@ -235,7 +236,7 @@ int sshkey_plain_to_blob(const struct sshkey *, u_char **, size_t *);
235int sshkey_putb_plain(const struct sshkey *, struct sshbuf *); 236int sshkey_putb_plain(const struct sshkey *, struct sshbuf *);
236 237
237int sshkey_sign(struct sshkey *, u_char **, size_t *, 238int sshkey_sign(struct sshkey *, u_char **, size_t *,
238 const u_char *, size_t, const char *, const char *, u_int); 239 const u_char *, size_t, const char *, const char *, const char *, u_int);
239int sshkey_verify(const struct sshkey *, const u_char *, size_t, 240int sshkey_verify(const struct sshkey *, const u_char *, size_t,
240 const u_char *, size_t, const char *, u_int, struct sshkey_sig_details **); 241 const u_char *, size_t, const char *, u_int, struct sshkey_sig_details **);
241int sshkey_check_sigtype(const u_char *, size_t, const char *); 242int sshkey_check_sigtype(const u_char *, size_t, const char *);
diff --git a/sshsig.c b/sshsig.c
index 15f9cead6..0bd7e5cb7 100644
--- a/sshsig.c
+++ b/sshsig.c
@@ -1,3 +1,4 @@
1/* $OpenBSD: sshsig.c,v 1.17 2020/08/31 00:17:41 djm Exp $ */
1/* 2/*
2 * Copyright (c) 2019 Google LLC 3 * Copyright (c) 2019 Google LLC
3 * 4 *
@@ -151,7 +152,7 @@ done:
151 152
152static int 153static int
153sshsig_wrap_sign(struct sshkey *key, const char *hashalg, 154sshsig_wrap_sign(struct sshkey *key, const char *hashalg,
154 const char *sk_provider, const struct sshbuf *h_message, 155 const char *sk_provider, const char *sk_pin, const struct sshbuf *h_message,
155 const char *sig_namespace, struct sshbuf **out, 156 const char *sig_namespace, struct sshbuf **out,
156 sshsig_signer *signer, void *signer_ctx) 157 sshsig_signer *signer, void *signer_ctx)
157{ 158{
@@ -185,14 +186,14 @@ sshsig_wrap_sign(struct sshkey *key, const char *hashalg,
185 if (signer != NULL) { 186 if (signer != NULL) {
186 if ((r = signer(key, &sig, &slen, 187 if ((r = signer(key, &sig, &slen,
187 sshbuf_ptr(tosign), sshbuf_len(tosign), 188 sshbuf_ptr(tosign), sshbuf_len(tosign),
188 sign_alg, sk_provider, 0, signer_ctx)) != 0) { 189 sign_alg, sk_provider, sk_pin, 0, signer_ctx)) != 0) {
189 error("Couldn't sign message: %s", ssh_err(r)); 190 error("Couldn't sign message: %s", ssh_err(r));
190 goto done; 191 goto done;
191 } 192 }
192 } else { 193 } else {
193 if ((r = sshkey_sign(key, &sig, &slen, 194 if ((r = sshkey_sign(key, &sig, &slen,
194 sshbuf_ptr(tosign), sshbuf_len(tosign), 195 sshbuf_ptr(tosign), sshbuf_len(tosign),
195 sign_alg, sk_provider, 0)) != 0) { 196 sign_alg, sk_provider, sk_pin, 0)) != 0) {
196 error("Couldn't sign message: %s", ssh_err(r)); 197 error("Couldn't sign message: %s", ssh_err(r));
197 goto done; 198 goto done;
198 } 199 }
@@ -430,7 +431,8 @@ hash_buffer(const struct sshbuf *m, const char *hashalg, struct sshbuf **bp)
430} 431}
431 432
432int 433int
433sshsig_signb(struct sshkey *key, const char *hashalg, const char *sk_provider, 434sshsig_signb(struct sshkey *key, const char *hashalg,
435 const char *sk_provider, const char *sk_pin,
434 const struct sshbuf *message, const char *sig_namespace, 436 const struct sshbuf *message, const char *sig_namespace,
435 struct sshbuf **out, sshsig_signer *signer, void *signer_ctx) 437 struct sshbuf **out, sshsig_signer *signer, void *signer_ctx)
436{ 438{
@@ -445,7 +447,7 @@ sshsig_signb(struct sshkey *key, const char *hashalg, const char *sk_provider,
445 error("%s: hash_buffer failed: %s", __func__, ssh_err(r)); 447 error("%s: hash_buffer failed: %s", __func__, ssh_err(r));
446 goto out; 448 goto out;
447 } 449 }
448 if ((r = sshsig_wrap_sign(key, hashalg, sk_provider, b, 450 if ((r = sshsig_wrap_sign(key, hashalg, sk_provider, sk_pin, b,
449 sig_namespace, out, signer, signer_ctx)) != 0) 451 sig_namespace, out, signer, signer_ctx)) != 0)
450 goto out; 452 goto out;
451 /* success */ 453 /* success */
@@ -558,7 +560,8 @@ hash_file(int fd, const char *hashalg, struct sshbuf **bp)
558} 560}
559 561
560int 562int
561sshsig_sign_fd(struct sshkey *key, const char *hashalg, const char *sk_provider, 563sshsig_sign_fd(struct sshkey *key, const char *hashalg,
564 const char *sk_provider, const char *sk_pin,
562 int fd, const char *sig_namespace, struct sshbuf **out, 565 int fd, const char *sig_namespace, struct sshbuf **out,
563 sshsig_signer *signer, void *signer_ctx) 566 sshsig_signer *signer, void *signer_ctx)
564{ 567{
@@ -573,7 +576,7 @@ sshsig_sign_fd(struct sshkey *key, const char *hashalg, const char *sk_provider,
573 error("%s: hash_file failed: %s", __func__, ssh_err(r)); 576 error("%s: hash_file failed: %s", __func__, ssh_err(r));
574 return r; 577 return r;
575 } 578 }
576 if ((r = sshsig_wrap_sign(key, hashalg, sk_provider, b, 579 if ((r = sshsig_wrap_sign(key, hashalg, sk_provider, sk_pin, b,
577 sig_namespace, out, signer, signer_ctx)) != 0) 580 sig_namespace, out, signer, signer_ctx)) != 0)
578 goto out; 581 goto out;
579 /* success */ 582 /* success */
diff --git a/sshsig.h b/sshsig.h
index 63cc1ad1a..67794a971 100644
--- a/sshsig.h
+++ b/sshsig.h
@@ -1,3 +1,4 @@
1/* $OpenBSD: sshsig.h,v 1.9 2020/08/31 00:17:41 djm Exp $ */
1/* 2/*
2 * Copyright (c) 2019 Google LLC 3 * Copyright (c) 2019 Google LLC
3 * 4 *
@@ -23,7 +24,8 @@ struct sshsigopt;
23struct sshkey_sig_details; 24struct sshkey_sig_details;
24 25
25typedef int sshsig_signer(struct sshkey *, u_char **, size_t *, 26typedef int sshsig_signer(struct sshkey *, u_char **, size_t *,
26 const u_char *, size_t, const char *, const char *, u_int, void *); 27 const u_char *, size_t, const char *, const char *, const char *,
28 u_int, void *);
27 29
28/* Buffer-oriented API */ 30/* Buffer-oriented API */
29 31
@@ -33,7 +35,7 @@ typedef int sshsig_signer(struct sshkey *, u_char **, size_t *,
33 * out is populated with the detached signature, or NULL on failure. 35 * out is populated with the detached signature, or NULL on failure.
34 */ 36 */
35int sshsig_signb(struct sshkey *key, const char *hashalg, 37int sshsig_signb(struct sshkey *key, const char *hashalg,
36 const char *sk_provider, const struct sshbuf *message, 38 const char *sk_provider, const char *sk_pin, const struct sshbuf *message,
37 const char *sig_namespace, struct sshbuf **out, 39 const char *sig_namespace, struct sshbuf **out,
38 sshsig_signer *signer, void *signer_ctx); 40 sshsig_signer *signer, void *signer_ctx);
39 41
@@ -54,7 +56,8 @@ int sshsig_verifyb(struct sshbuf *signature,
54 * out is populated with the detached signature, or NULL on failure. 56 * out is populated with the detached signature, or NULL on failure.
55 */ 57 */
56int sshsig_sign_fd(struct sshkey *key, const char *hashalg, 58int sshsig_sign_fd(struct sshkey *key, const char *hashalg,
57 const char *sk_provider, int fd, const char *sig_namespace, 59 const char *sk_provider, const char *sk_pin,
60 int fd, const char *sig_namespace,
58 struct sshbuf **out, sshsig_signer *signer, void *signer_ctx); 61 struct sshbuf **out, sshsig_signer *signer, void *signer_ctx);
59 62
60/* 63/*
diff --git a/version.h b/version.h
index 158eaee70..480cd59e1 100644
--- a/version.h
+++ b/version.h
@@ -1,6 +1,6 @@
1/* $OpenBSD: version.h,v 1.87 2020/05/06 20:58:01 djm Exp $ */ 1/* $OpenBSD: version.h,v 1.88 2020/09/27 07:22:05 djm Exp $ */
2 2
3#define SSH_VERSION "OpenSSH_8.3" 3#define SSH_VERSION "OpenSSH_8.4"
4 4
5#define SSH_PORTABLE "p1" 5#define SSH_PORTABLE "p1"
6#define SSH_RELEASE_MINIMUM SSH_VERSION SSH_PORTABLE 6#define SSH_RELEASE_MINIMUM SSH_VERSION SSH_PORTABLE